diff --git a/.gitignore b/.gitignore index 689f688b23e..a42dac0b0f0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ /.gradle/ /output/ /bin/ +/libs/ .classpath */.factorypath diff --git a/docs/content/Development/General-Topics/Datafixers.md b/docs/content/Development/General-Topics/Datafixers.md new file mode 100644 index 00000000000..2fb406db49c --- /dev/null +++ b/docs/content/Development/General-Topics/Datafixers.md @@ -0,0 +1,47 @@ +--- +title: Datafixers +--- + +# What are datafixers? +Datafixers are Mojang's solution to resolving save data layout changes, such as items being renamed or entities' NBT fields moving.
+> From [Documented DataFixerUpper's overview summary](https://kvverti.github.io/Documented-DataFixerUpper/snapshot/overview-summary.html):
+Data Fixer Upper (or DFU for short) is a library for creating transformations between structures, regardless of the specific schemas or storage formats the structures use. Users of DFU will generally use two sets of types: the serialization types and the data fix types. An overview of the relevant packages is given below, but see the documentation of those packages and types for more details. + +TL;DR: DataFixerUpper is a full typed functional programming language written entirely in Java. It's overengineered, but can accomplish every change Mojang could ever want to do.
+ + +# How to add datafixers + +Register new datafixers in [`GTDataFixers.addFixers`](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTDataFixers.java#L108). Remember to bump [`GTCEu.GT_DATA_VERSION`](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/src/main/java/com/gregtechceu/gtceu/GTCEu.java#L50) +in every PR that changes existing save data and add a schema & fixer for it here. + +For changes that do not change named types or add new (block) entities, use [`SAME_NAMESPACED`](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTDataFixers.java#L71) for the schema. +Register machines (and other block entities) in a schema overriding `Schema#registerBlockEntities`, like [`V2_3` does](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V2_3.java#L21). + +!!! danger + Do **NOT** add new machines to [`V0`](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V0.java)! They should be in new, correctly versioned schemas! + +!!! note "References" + Reference vanilla schemas for more information on them (examples below). Also check how they're used in vanilla's `net.minecraft.util.datafix.DataFixers` class. + `net.minecraft.util.datafix.schemas.V1460`, `net.minecraft.util.datafix.schemas.V1906` + + +## Adding new (block) entity types + +Note how only fields that use other registered (named) types (such as item/fluid stacks) are defined. The same should be done for all types. +If the type doesn't depend on any named types, register it with `schema.register()` like this: +??? example "registerBlockEntities" + ```java + public Map> registerBlockEntities(Schema schema) { + Map> map = super.registerBlockEntities(schema); + // ... + schema.register(map, "gtceu:your_id_here", () -> traitHolder(schema)); // (1) + // ... + return map; + } + ``` + + 1. Do not use `schema.registerSimple()`! All machines must have the trait holder fields. + +!!! tip + When adding new (block) entity types in a schema, always also add a {@link AddNewChoices} fixer of the appropriate type(s). diff --git a/src/generated/resources/assets/gtceu/blockstates/assembly_control_casing.json b/src/generated/resources/assets/gtceu/blockstates/assembly_control_casing.json new file mode 100644 index 00000000000..59b18aa617d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/assembly_control_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/assembly_control_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/assembly_line_casing.json b/src/generated/resources/assets/gtceu/blockstates/assembly_line_casing.json deleted file mode 100644 index be8c32ae2bb..00000000000 --- a/src/generated/resources/assets/gtceu/blockstates/assembly_line_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "gtceu:block/assembly_line_casing" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/assembly_line_unit.json b/src/generated/resources/assets/gtceu/blockstates/assembly_line_unit.json index b42cc22f6eb..e3a00994740 100644 --- a/src/generated/resources/assets/gtceu/blockstates/assembly_line_unit.json +++ b/src/generated/resources/assets/gtceu/blockstates/assembly_line_unit.json @@ -1,10 +1,10 @@ { "variants": { "active=false": { - "model": "gtceu:block/variant/assembly_line" + "model": "gtceu:block/variant/assembly_line_unit" }, "active=true": { - "model": "gtceu:block/variant/assembly_line_active" + "model": "gtceu:block/variant/assembly_line_unit_active" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bricked_bronze_casing.json b/src/generated/resources/assets/gtceu/blockstates/bricked_bronze_casing.json new file mode 100644 index 00000000000..5d2889b51bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bricked_bronze_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/bricked_bronze_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bricked_wrought_iron_casing.json b/src/generated/resources/assets/gtceu/blockstates/bricked_wrought_iron_casing.json new file mode 100644 index 00000000000..4f07fb03275 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bricked_wrought_iron_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/bricked_wrought_iron_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bronze_brick_casing.json b/src/generated/resources/assets/gtceu/blockstates/bronze_brick_casing.json deleted file mode 100644 index 9afbdf2bf08..00000000000 --- a/src/generated/resources/assets/gtceu/blockstates/bronze_brick_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "gtceu:block/bronze_brick_casing" - } - } -} \ 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/bulk_blast_chiller.json similarity index 54% rename from src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json rename to src/generated/resources/assets/gtceu/blockstates/bulk_blast_chiller.json index 5632a501c1c..22fea31a5a7 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json +++ b/src/generated/resources/assets/gtceu/blockstates/bulk_blast_chiller.json @@ -1,150 +1,150 @@ { "variants": { "facing=down,upwards_facing=down": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=down,upwards_facing=east": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 90 }, "facing=down,upwards_facing=north": { - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 90 }, "facing=down,upwards_facing=south": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 90 }, "facing=down,upwards_facing=up": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=down,upwards_facing=west": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 90 }, "facing=east,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 90 }, "facing=east,upwards_facing=east": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=east,upwards_facing=north": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 90 }, "facing=east,upwards_facing=south": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 90 }, "facing=east,upwards_facing=up": { - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 90 }, "facing=east,upwards_facing=west": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=north,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=north,upwards_facing=east": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=north,upwards_facing=north": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=north,upwards_facing=south": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=north,upwards_facing=up": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=north,upwards_facing=west": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=south,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 180 }, "facing=south,upwards_facing=east": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 180 }, "facing=south,upwards_facing=north": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=south,upwards_facing=south": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=south,upwards_facing=up": { - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 180 }, "facing=south,upwards_facing=west": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 180 }, "facing=up,upwards_facing=down": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=up,upwards_facing=east": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 270 }, "facing=up,upwards_facing=north": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 270 }, "facing=up,upwards_facing=south": { - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 270 }, "facing=up,upwards_facing=up": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=up,upwards_facing=west": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "x": 270 }, "facing=west,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 270 }, "facing=west,upwards_facing=east": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" }, "facing=west,upwards_facing=north": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 270 }, "facing=west,upwards_facing=south": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 270 }, "facing=west,upwards_facing=up": { - "model": "gtceu:block/machine/mega_blast_furnace", + "model": "gtceu:block/machine/bulk_blast_chiller", "y": 270 }, "facing=west,upwards_facing=west": { - "model": "gtceu:block/machine/mega_blast_furnace" + "model": "gtceu:block/machine/bulk_blast_chiller" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/oil_heavy.json b/src/generated/resources/assets/gtceu/blockstates/heavy_oil.json similarity index 50% rename from src/generated/resources/assets/gtceu/blockstates/oil_heavy.json rename to src/generated/resources/assets/gtceu/blockstates/heavy_oil.json index 89572bbc661..58eb6297d32 100644 --- a/src/generated/resources/assets/gtceu/blockstates/oil_heavy.json +++ b/src/generated/resources/assets/gtceu/blockstates/heavy_oil.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "gtceu:block/oil_heavy" + "model": "gtceu:block/heavy_oil" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/oil_light.json b/src/generated/resources/assets/gtceu/blockstates/light_oil.json similarity index 50% rename from src/generated/resources/assets/gtceu/blockstates/oil_light.json rename to src/generated/resources/assets/gtceu/blockstates/light_oil.json index 7da636112ee..da76726bc26 100644 --- a/src/generated/resources/assets/gtceu/blockstates/oil_light.json +++ b/src/generated/resources/assets/gtceu/blockstates/light_oil.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "gtceu:block/oil_light" + "model": "gtceu:block/light_oil" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/magnalium_turbine_casing.json b/src/generated/resources/assets/gtceu/blockstates/magnalium_turbine_casing.json new file mode 100644 index 00000000000..fd791e4eba9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/magnalium_turbine_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/magnalium_turbine_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/oil_medium.json b/src/generated/resources/assets/gtceu/blockstates/oil_medium.json deleted file mode 100644 index 810ef09ee0a..00000000000 --- a/src/generated/resources/assets/gtceu/blockstates/oil_medium.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "gtceu:block/oil_medium" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/palladium_substation.json b/src/generated/resources/assets/gtceu/blockstates/palladium_substation.json deleted file mode 100644 index 6f076fc83b3..00000000000 --- a/src/generated/resources/assets/gtceu/blockstates/palladium_substation.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "gtceu:block/palladium_substation" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/palladium_substation_casing.json b/src/generated/resources/assets/gtceu/blockstates/palladium_substation_casing.json new file mode 100644 index 00000000000..a903abcfe32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/palladium_substation_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/palladium_substation_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/raw_oil.json b/src/generated/resources/assets/gtceu/blockstates/raw_oil.json new file mode 100644 index 00000000000..c741baaffdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/raw_oil.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/raw_oil" + } + } +} \ 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/rotary_hearth_furnace.json similarity index 53% rename from src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json rename to src/generated/resources/assets/gtceu/blockstates/rotary_hearth_furnace.json index c756f374a31..0d4df807d3b 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json +++ b/src/generated/resources/assets/gtceu/blockstates/rotary_hearth_furnace.json @@ -1,150 +1,150 @@ { "variants": { "facing=down,upwards_facing=down": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=down,upwards_facing=east": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 90 }, "facing=down,upwards_facing=north": { - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 90 }, "facing=down,upwards_facing=south": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 90 }, "facing=down,upwards_facing=up": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=down,upwards_facing=west": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 90 }, "facing=east,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 90 }, "facing=east,upwards_facing=east": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=east,upwards_facing=north": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 90 }, "facing=east,upwards_facing=south": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 90 }, "facing=east,upwards_facing=up": { - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 90 }, "facing=east,upwards_facing=west": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=north,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=north,upwards_facing=east": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=north,upwards_facing=north": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=north,upwards_facing=south": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=north,upwards_facing=up": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=north,upwards_facing=west": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=south,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 180 }, "facing=south,upwards_facing=east": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 180 }, "facing=south,upwards_facing=north": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=south,upwards_facing=south": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=south,upwards_facing=up": { - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 180 }, "facing=south,upwards_facing=west": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 180 }, "facing=up,upwards_facing=down": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=up,upwards_facing=east": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 270 }, "facing=up,upwards_facing=north": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 270 }, "facing=up,upwards_facing=south": { - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 270 }, "facing=up,upwards_facing=up": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=up,upwards_facing=west": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "x": 270 }, "facing=west,upwards_facing=down": { "gtceu:z": 180, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 270 }, "facing=west,upwards_facing=east": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" }, "facing=west,upwards_facing=north": { "gtceu:z": 90, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 270 }, "facing=west,upwards_facing=south": { "gtceu:z": 270, - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 270 }, "facing=west,upwards_facing=up": { - "model": "gtceu:block/machine/mega_vacuum_freezer", + "model": "gtceu:block/machine/rotary_hearth_furnace", "y": 270 }, "facing=west,upwards_facing=west": { - "model": "gtceu:block/machine/mega_vacuum_freezer" + "model": "gtceu:block/machine/rotary_hearth_furnace" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_brick_casing.json b/src/generated/resources/assets/gtceu/blockstates/steel_brick_casing.json deleted file mode 100644 index 9d6e9cf8bd6..00000000000 --- a/src/generated/resources/assets/gtceu/blockstates/steel_brick_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "gtceu:block/steel_brick_casing" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_turbine_casing.json b/src/generated/resources/assets/gtceu/blockstates/steel_turbine_casing.json deleted file mode 100644 index 31f57e8e8ee..00000000000 --- a/src/generated/resources/assets/gtceu/blockstates/steel_turbine_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "gtceu:block/steel_turbine_casing" - } - } -} \ 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 cf0c8f51081..03eff79ee71 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -134,10 +134,10 @@ "block.gtceu.aluminium_crate": "ǝʇɐɹƆ ɯnıuıɯnןⱯ", "block.gtceu.aluminium_drum": "ɯnɹᗡ ɯnıuıɯnןⱯ", "block.gtceu.antimatter_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɹǝʇʇɐɯıʇuⱯ", + "block.gtceu.assembly_control_casing": "buısɐƆ ןoɹʇuoƆ ʎןqɯǝssⱯ", "block.gtceu.assembly_line": "ǝuıꞀ ʎןqɯǝssⱯ", - "block.gtceu.assembly_line_casing": "buısɐƆ ǝuıꞀ ʎןqɯǝssⱯ", "block.gtceu.assembly_line_grating": "buıʇɐɹ⅁ ǝuıꞀ ʎןqɯǝssⱯ", - "block.gtceu.assembly_line_unit": "buısɐƆ ןoɹʇuoƆ ʎןqɯǝssⱯ", + "block.gtceu.assembly_line_unit": "ʇıu∩ ǝuıꞀ ʎן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ɐᗺ", @@ -153,8 +153,9 @@ "block.gtceu.blue_metal_sheet": "ʇǝǝɥS ןɐʇǝW ǝnןᗺ", "block.gtceu.blue_studs": "spnʇS ǝnןᗺ", "block.gtceu.boss_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ssoᗺ", + "block.gtceu.bricked_bronze_casing": "buısɐƆ ǝzuoɹᗺ pǝʞɔıɹᗺ", + "block.gtceu.bricked_wrought_iron_casing": "buısɐƆ uoɹI ʇɥbnoɹM pǝʞɔıɹᗺ", "block.gtceu.brittle_charcoal": "ןɐoɔɹɐɥƆ ǝןʇʇıɹᗺ", - "block.gtceu.bronze_brick_casing": "buısɐƆ ǝzuoɹᗺ pǝʞɔıɹᗺ", "block.gtceu.bronze_crate": "ǝʇɐɹƆ ǝzuoɹᗺ", "block.gtceu.bronze_drum": "ɯnɹᗡ ǝzuoɹᗺ", "block.gtceu.bronze_firebox_casing": "buısɐƆ xoqǝɹıℲ ǝzuoɹᗺ", @@ -169,8 +170,7 @@ "block.gtceu.brown_large_metal_sheet": "ʇǝǝɥS ןɐʇǝW ǝbɹɐꞀ uʍoɹᗺ", "block.gtceu.brown_metal_sheet": "ʇǝǝɥS ןɐʇǝW uʍoɹᗺ", "block.gtceu.brown_studs": "spnʇS uʍoɹᗺ", - "block.gtceu.casing_coke_bricks": "sʞɔıɹᗺ uǝʌO ǝʞoƆ", - "block.gtceu.casing_grate": "buısɐƆ ǝuıɥɔɐW ǝʇɐɹ⅁", + "block.gtceu.bulk_blast_chiller": "ɹǝןןıɥƆ ʇsɐןᗺ ʞןnᗺ", "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ɔɹɐɥƆ", @@ -348,6 +348,7 @@ "block.gtceu.gregification_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH uoıʇɐɔıɟıbǝɹ⅁", "block.gtceu.heat_vent": "ʇuǝΛ ʇɐǝH", "block.gtceu.heatproof_machine_casing": "buısɐƆ ǝuıɥɔɐW ɹɐʌuI ɟooɹԀ ʇɐǝH", + "block.gtceu.heavy_oil": "ןıO ʎʌɐǝH", "block.gtceu.high_performance_computation_array": ")ⱯƆԀH( ʎɐɹɹⱯ uoıʇɐʇndɯoƆ ǝɔuɐɯɹoɟɹǝԀ ɥbıH", "block.gtceu.high_power_casing": "buısɐƆ ɹǝʍoԀ ɥbıH", "block.gtceu.high_pressure_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ǝɹnssǝɹԀ ɥbıH", @@ -597,6 +598,7 @@ "block.gtceu.light_gray_large_metal_sheet": "ʇǝǝɥS ןɐʇǝW ǝbɹɐꞀ ʎɐɹ⅁ ʇɥbıꞀ", "block.gtceu.light_gray_metal_sheet": "ʇǝǝɥS ןɐʇǝW ʎɐɹ⅁ ʇɥbıꞀ", "block.gtceu.light_gray_studs": "spnʇS ʎɐɹ⅁ ʇɥbıꞀ", + "block.gtceu.light_oil": "ןıO ʇɥbıꞀ", "block.gtceu.lime_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ǝɯıꞀ", "block.gtceu.lime_lamp": "dɯɐꞀ ǝɯıꞀ", "block.gtceu.lime_large_metal_sheet": "ʇǝǝɥS ןɐʇǝW ǝbɹɐꞀ ǝɯıꞀ", @@ -798,6 +800,7 @@ "block.gtceu.magenta_metal_sheet": "ʇǝǝɥS ןɐʇǝW ɐʇuǝbɐW", "block.gtceu.magenta_studs": "spnʇS ɐʇuǝbɐW", "block.gtceu.magic_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɔıbɐW", + "block.gtceu.magnalium_turbine_casing": "buısɐƆ ǝuıqɹn⟘ ɯnıןɐubɐW", "block.gtceu.magnetic_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɔıʇǝubɐW", "block.gtceu.maintenance_hatch": "ɥɔʇɐH ǝɔuɐuǝʇuıɐW", "block.gtceu.marble": "ǝןqɹɐW", @@ -843,8 +846,6 @@ "block.gtceu.me_pattern_buffer_proxy": "ʎxoɹԀ ɹǝɟɟnᗺ uɹǝʇʇɐԀ ƎW", "block.gtceu.me_stocking_input_bus": "snᗺ ʇnduI buıʞɔoʇS ƎW", "block.gtceu.me_stocking_input_hatch": "ɥɔʇɐH ʇnduI buıʞɔoʇS ƎW", - "block.gtceu.mega_blast_furnace": "ǝɔɐuɹnℲ ɥʇɹɐǝH ʎɹɐʇoᴚ", - "block.gtceu.mega_vacuum_freezer": "ɹǝןןıɥƆ ʇsɐןᗺ ʞןnᗺ", "block.gtceu.miner_pipe": "ǝdıԀ ɹǝuıW", "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", @@ -950,9 +951,6 @@ "block.gtceu.normal_optical_pipe.tooltip": "ㄥ§ɐʇɐᗡ ɥɔɹɐǝsǝᴚɟ§ ɹo ㄥ§uoıʇɐʇndɯoƆɟ§ buıʇʇıɯsuɐɹ⟘ㄥ§", "block.gtceu.object_holder": "ɹǝpןoH ʇɔǝظqO", "block.gtceu.oil": "ןıO", - "block.gtceu.oil_heavy": "ןıO ʎʌɐǝH", - "block.gtceu.oil_light": "ןıO ʇɥbıꞀ", - "block.gtceu.oil_medium": "ןıO ʍɐᴚ", "block.gtceu.opv_1024a_laser_source_hatch": "ɥɔʇɐH ǝɔɹnoS ɹǝsɐꞀ ɹ§Ɐǝ§ㄣᄅ0'Ɩ ɹ§ΛdOן§6§", "block.gtceu.opv_1024a_laser_target_hatch": "ɥɔʇɐH ʇǝbɹɐ⟘ ɹǝsɐꞀ ɹ§Ɐǝ§ㄣᄅ0'Ɩ ɹ§ΛdOן§6§", "block.gtceu.opv_16a_energy_converter": "ɹǝʇɹǝʌuoƆ ʎbɹǝuƎ ɹ§Ɐǝ§9Ɩ ɹ§ΛdOן§6§", @@ -1043,7 +1041,7 @@ "block.gtceu.orange_metal_sheet": "ʇǝǝɥS ןɐʇǝW ǝbuɐɹO", "block.gtceu.orange_studs": "spnʇS ǝbuɐɹO", "block.gtceu.overworld_marker": "pןɹoʍɹǝʌO", - "block.gtceu.palladium_substation": "buısɐƆ uoıʇɐʇsqnS ɯnıpɐןןɐԀ", + "block.gtceu.palladium_substation_casing": "buısɐƆ uoıʇɐʇsqnS ɯnıpɐןןɐԀ", "block.gtceu.pattern_buffer.desc.0": "˙sʞɔoןqıʇןnW ɥɔǝ⟘bǝɹ⅁ ɹoɟɟ§ ǝbɐɹoʇs uɹǝʇʇɐd ᄅƎⱯ9§ ʇɔǝɹıp sʍoןןⱯɟ§", "block.gtceu.pattern_buffer.desc.1": "˙ʇǝbpıʍɟ§ ʎɹoʇuǝʌuı pǝɹɐɥs9§ ǝɥʇ uı pǝɹoʇs buıɥʇʎuɐ ǝzıןıʇn uɐɔ suɹǝʇʇɐԀ ᄅƎⱯɟ§", "block.gtceu.pattern_buffer.desc.2": "¡ɹǝɥʇǝboʇ sǝuıɥɔɐɯ ʞuıן oʇɟ§ ʞɔıʇsɐʇɐpq§ ɐ ɥʇıʍɟ§ sǝıxoɹԀ ɹǝɟɟnᗺ uɹǝʇʇɐԀ9§ ʞuıꞀɟ§", @@ -1077,6 +1075,7 @@ "block.gtceu.purple_studs": "spnʇS ǝןdɹnԀ", "block.gtceu.pyrolyse_oven": "uǝʌO ǝsʎןoɹʎԀ", "block.gtceu.radioactive_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ǝʌıʇɔɐoıpɐᴚ", + "block.gtceu.raw_oil": "ןıO ʍɐᴚ", "block.gtceu.reaction_safe_mixing_casing": "buısɐƆ buıxıW ǝɟɐS-uoıʇɔɐǝᴚ", "block.gtceu.red_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ pǝᴚ", "block.gtceu.red_granite": "ǝʇıuɐɹ⅁ pǝᴚ", @@ -1095,6 +1094,7 @@ "block.gtceu.research_station": "uoıʇɐʇS ɥɔɹɐǝsǝᴚ", "block.gtceu.reservoir_hatch": "ɥɔʇɐH ɹıoʌɹǝsǝᴚ", "block.gtceu.robust_machine_casing": "buısɐƆ ǝuıɥɔɐW ןǝǝʇsuǝʇsbun⟘ ʇsnqoᴚ", + "block.gtceu.rotary_hearth_furnace": "ǝɔɐuɹnℲ ɥʇɹɐǝH ʎɹɐʇoᴚ", "block.gtceu.rtm_alloy_coil_block": "ʞɔoןᗺ ןıoƆ ʎoןןⱯ W⟘ᴚ", "block.gtceu.rubber_button": "uoʇʇnᗺ ɹǝqqnᴚ", "block.gtceu.rubber_door": "ɹooᗡ ɹǝqqnᴚ", @@ -1129,7 +1129,7 @@ "block.gtceu.stainless_steel_crate": "ǝʇɐɹƆ ןǝǝʇS ssǝןuıɐʇS", "block.gtceu.stainless_steel_drum": "ɯnɹᗡ ןǝǝʇS ssǝןuıɐʇS", "block.gtceu.stainless_steel_gearbox": "buısɐƆ xoqɹɐǝ⅁ ןǝǝʇS ssǝןuıɐʇS", - "block.gtceu.stainless_steel_turbine_casing": "buısɐƆ ǝuıqɹn⟘ ssǝןuıɐʇS", + "block.gtceu.stainless_steel_turbine_casing": "buısɐƆ ǝuıqɹn⟘ ןǝǝʇS ssǝןuıɐʇS", "block.gtceu.steam_casing_bricked_bronze": "ןןnH ǝzuoɹᗺ pǝʞɔıɹᗺ", "block.gtceu.steam_casing_bricked_bronze.tooltip": "sǝuıɥɔɐW ɯɐǝʇS ʇsɹıɟ ɹnoʎ ɹoℲㄥ§", "block.gtceu.steam_casing_bricked_steel": "ןןnH uoɹI ʇɥbnoɹM pǝʞɔıɹᗺ", @@ -1147,7 +1147,6 @@ "block.gtceu.steam_output_bus": "snᗺ ʇndʇnO ɯɐǝʇS", "block.gtceu.steam_oven": "uǝʌO ɯɐǝʇS", "block.gtceu.steam_solid_boiler.bronze": "ɹǝןıoᗺ pıןoS ɯɐǝʇS ןןɐɯS", - "block.gtceu.steel_brick_casing": "buısɐƆ uoɹI ʇɥbnoɹM pǝʞɔıɹᗺ", "block.gtceu.steel_crate": "ǝʇɐɹƆ ןǝǝʇS", "block.gtceu.steel_drum": "ɯnɹᗡ ןǝǝʇS", "block.gtceu.steel_firebox_casing": "buısɐƆ xoqǝɹıℲ ןǝǝʇS", @@ -1157,7 +1156,6 @@ "block.gtceu.steel_multiblock_tank": "ʞuɐ⟘ ʞɔoןqıʇןnW ןǝǝʇS", "block.gtceu.steel_pipe_casing": "buısɐƆ ǝdıԀ ןǝǝʇS", "block.gtceu.steel_tank_valve": "ǝʌןɐΛ ʞuɐ⟘ ןǝǝʇS", - "block.gtceu.steel_turbine_casing": "buısɐƆ ǝuıqɹn⟘ ɯnıןɐubɐW", "block.gtceu.sterilizing_filter_casing": "buısɐƆ ɹǝʇןıℲ buızıןıɹǝʇS", "block.gtceu.stress_proof_casing": "buısɐƆ ɟooɹԀ ssǝɹʇS", "block.gtceu.stripped_rubber_log": "boꞀ ɹǝqqnᴚ pǝddıɹʇS", @@ -1166,6 +1164,7 @@ "block.gtceu.substation_capacitor.tooltip_empty": "uoıʇɐʇsqnS ɹǝʍoԀ ɹnoʎ uı ǝɔɐds buıןןıɟ ɹoℲㄥ§", "block.gtceu.substation_capacitor.tooltip_filled": "∩Ǝ %dɟ§ :ʎʇıɔɐdɐƆ ʎbɹǝuƎɔ§", "block.gtceu.superconducting_coil": "ʞɔoןᗺ ןıoƆ buıʇɔnpuoɔɹǝdnS", + "block.gtceu.surface_rock": "ʞɔoᴚ ǝɔɐɟɹnS %s", "block.gtceu.tempered_glass": "ssɐן⅁ pǝɹǝdɯǝ⟘", "block.gtceu.test_mui": "ınW ʇsǝ⟘", "block.gtceu.the_end_marker": "puƎ ǝɥ⟘", @@ -1769,7 +1768,6 @@ "block.gtceu.zpm_wiremill": "ɹ§III ןןıɯǝɹıM ǝʇıןƎɔ§", "block.gtceu.zpm_world_accelerator": "ɹ§III ɹoʇɐɹǝןǝɔɔⱯ pןɹoM ǝʇıןƎɔ§", "block.sterilizing_filter_casing.tooltip": "ʇuǝɯuoɹıʌuǝ ㄥ§pǝzıןıɹǝʇSɐ§ ɐ sǝʇɐǝɹƆ", - "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ɐƆ", @@ -1837,6 +1835,7 @@ "config.gtceu.option.direction": "uoıʇɔǝɹıp", "config.gtceu.option.disableManualCompression": "uoıssǝɹdɯoƆןɐnuɐWǝןqɐsıp", "config.gtceu.option.doBedrockOres": "sǝɹOʞɔoɹpǝᗺop", + "config.gtceu.option.doDataFixers": "sɹǝxıℲɐʇɐᗡop", "config.gtceu.option.doSuperflatOres": "sǝɹOʇɐןɟɹǝdnSop", "config.gtceu.option.doesExplosionDamagesTerrain": "uıɐɹɹǝ⟘sǝbɐɯɐᗡuoısoןdxƎsǝop", "config.gtceu.option.drum": "ɯnɹp", @@ -4195,7 +4194,6 @@ "hud.gtceu.armor.hover_mode": "%s :ǝpoW ɹǝʌoH", "hud.gtceu.armor.status.disabled": "ℲℲOɔ§", "hud.gtceu.armor.status.enabled": "NOɐ§", - "item.glass_lens": ")ǝʇıɥM( suǝꞀ ssɐן⅁", "item.gtceu.activity_detector_cover": "ɹoʇɔǝʇǝᗡ ʎʇıʌıʇɔⱯ", "item.gtceu.activity_detector_cover.tooltip": "˙ㄥ§ɹǝʌoƆɟ§ sɐ ǝuoʇspǝᴚ sɐ ㄥ§snʇɐʇS ʎʇıʌıʇɔⱯɟ§ ʇno sǝʌı⅁ㄥ§", "item.gtceu.advanced_activity_detector_cover": "ɹoʇɔǝʇǝᗡ ʎʇıʌıʇɔⱯ pǝɔuɐʌpⱯ", @@ -4447,6 +4445,7 @@ "item.gtceu.gelled_toluene": "ǝuǝnןo⟘ pǝןןǝ⅁", "item.gtceu.gelled_toluene.tooltip": "ǝʌısoןdxƎ ʍɐᴚㄥ§", "item.gtceu.glass_gem": "ןɐʇsʎɹƆ ssɐן⅁", + "item.gtceu.glass_lens": ")ǝʇıɥM( suǝꞀ ssɐן⅁", "item.gtceu.glass_plate": "ǝuɐԀ ssɐן⅁", "item.gtceu.glass_tube": "ǝqn⟘ ssɐן⅁", "item.gtceu.glass_vial": "ןɐıΛ ssɐן⅁ %s", @@ -4718,6 +4717,7 @@ "item.gtceu.naquadah_wafer": "ɹǝɟɐM pǝdop-ɥɐpɐnbɐN", "item.gtceu.naquadah_wafer.tooltip": "ʇınɔɹıƆ ʍɐᴚㄥ§", "item.gtceu.netherite_plated": "%s pǝʇɐןԀ-ǝʇıɹǝɥʇǝN", + "item.gtceu.netherrack_nether_quartz": "ǝɹO zʇɹɐnὉ ɹǝɥʇǝN", "item.gtceu.neuro_processing_unit": "ʇıu∩ buıssǝɔoɹԀ oɹnǝN", "item.gtceu.neuro_processing_unit.tooltip": "∩ԀƆ oɹnǝNㄥ§", "item.gtceu.neutron_reflector": "ɹoʇɔǝןɟǝᴚ uoɹʇnǝN ɯnıpıɹI", @@ -4747,7 +4747,6 @@ "item.gtceu.opv_voltage_coil.tooltip": "ןıoƆ ʎɹɐpuǝbǝꞀ", "item.gtceu.orange_dye_spray_can": ")ǝbuɐɹO( uɐƆ ʎɐɹdS", "item.gtceu.orange_glass_lens": ")ǝbuɐɹO( suǝꞀ ssɐן⅁", - "item.gtceu.palladium_raw_dust": "ɹǝpʍoԀ ɯnıpɐןןɐԀ ʍɐᴚ", "item.gtceu.paper_dust": "pɐɥƆ", "item.gtceu.paracetamol_pill": "ןןıԀ ןoɯɐʇǝɔɐɹɐԀ", "item.gtceu.petri_dish": "ɥsıᗡ ıɹʇǝԀ", @@ -4848,6 +4847,7 @@ "item.gtceu.raw_crystal_chip.tooltip": "ɹossǝɔoɹԀ ןɐʇsʎɹƆ ʍɐᴚㄥ§", "item.gtceu.raw_crystal_chip_parts": "sʇɹɐԀ dıɥƆ ןɐʇsʎɹƆ ʍɐᴚ", "item.gtceu.raw_crystal_chip_parts.tooltip": "sʇɹɐԀ ɹossǝɔoɹԀ ןɐʇsʎɹƆ ʍɐᴚㄥ§", + "item.gtceu.raw_palladium_dust": "ɹǝpʍoԀ ɯnıpɐןןɐԀ ʍɐᴚ", "item.gtceu.red_dye_spray_can": ")pǝᴚ( uɐƆ ʎɐɹdS", "item.gtceu.red_glass_lens": ")pǝᴚ( suǝꞀ ssɐן⅁", "item.gtceu.refined_bentonite_ore": "ǝʇıuoʇuǝᗺ pǝuıɟǝᴚ", @@ -4902,7 +4902,6 @@ "item.gtceu.small_inert_metal_mixture_dust": "ǝɹnʇxıW ןɐʇǝW ʇɹǝuI ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_iridium_metal_residue_dust": "ǝnpısǝᴚ ןɐʇǝW ɯnıpıɹI ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_meat_dust": "ʇɐǝW ǝɔuıW ɟo ǝןıԀ ןןɐɯS", - "item.gtceu.small_palladium_raw_dust": "ɹǝpʍoԀ ɯnıpɐןןɐԀ ʍɐᴚ ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_paper_dust": "pɐɥƆ ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_pipe_casting_mold": ")ǝdıԀ ןןɐɯS( pןoW buıʇsɐƆ", "item.gtceu.small_pipe_extruder_mold": ")ǝdıԀ ןןɐɯS( pןoW ɹǝpnɹʇxƎ", @@ -4913,6 +4912,7 @@ "item.gtceu.small_quartz_sand_dust": "puɐS zʇɹɐnὉ ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_rare_earth_dust": "ɥʇɹɐƎ ǝɹɐᴚ ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_rarest_metal_mixture_dust": "ǝɹnʇxıW ןɐʇǝW ʇsǝɹɐᴚ ɟo ǝןıԀ ןןɐɯS", + "item.gtceu.small_raw_palladium_dust": "ɹǝpʍoԀ ɯnıpɐןןɐԀ ʍɐᴚ ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_rock_salt_dust": "ʇןɐS ʞɔoᴚ ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_salt_dust": "ʇןɐS ɟo ǝןıԀ ןןɐɯS", "item.gtceu.small_sugar_dust": "ɹɐbnS ɟo ǝןıԀ ןןɐɯS", @@ -4977,7 +4977,6 @@ "item.gtceu.tiny_inert_metal_mixture_dust": "ǝɹnʇxıW ןɐʇǝW ʇɹǝuI ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_iridium_metal_residue_dust": "ǝnpısǝᴚ ןɐʇǝW ɯnıpıɹI ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_meat_dust": "ʇɐǝW ǝɔuıW ɟo ǝןıԀ ʎuı⟘", - "item.gtceu.tiny_palladium_raw_dust": "ɹǝpʍoԀ ɯnıpɐןןɐԀ ʍɐᴚ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_paper_dust": "pɐɥƆ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_pipe_casting_mold": ")ǝdıԀ ʎuı⟘( pןoW buıʇsɐƆ", "item.gtceu.tiny_pipe_extruder_mold": ")ǝdıԀ ʎuı⟘( pןoW ɹǝpnɹʇxƎ", @@ -4988,6 +4987,7 @@ "item.gtceu.tiny_quartz_sand_dust": "puɐS zʇɹɐnὉ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_rare_earth_dust": "ɥʇɹɐƎ ǝɹɐᴚ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_rarest_metal_mixture_dust": "ǝɹnʇxıW ןɐʇǝW ʇsǝɹɐᴚ ɟo ǝןıԀ ʎuı⟘", + "item.gtceu.tiny_raw_palladium_dust": "ɹǝpʍoԀ ɯnıpɐןןɐԀ ʍɐᴚ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_rock_salt_dust": "ʇןɐS ʞɔoᴚ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_salt_dust": "ʇןɐS ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_sugar_dust": "ɹɐbnS ɟo ǝןıԀ ʎuı⟘", @@ -5113,8 +5113,9 @@ "item.gtceu.treated_wood_rod": "ʞɔıʇS pooM pǝʇɐǝɹ⟘", "item.gtceu.tungsten_grinding_head": "pɐǝH buıpuıɹ⅁ uǝʇsbun⟘", "item.gtceu.tungsten_steel_fluid_cell": "ןןǝƆ ןǝǝʇsuǝʇsbun⟘ %s", - "item.gtceu.turbine_rotor": "ɹoʇoᴚ ǝuıqɹn⟘ %s", "item.gtceu.turbine_rotor.tooltip": "uoıʇɐʇs ɹǝʍod ɹnoʎ ɹoɟ sɹoʇoᴚ ǝuıqɹn⟘", + "item.gtceu.turbine_rotor.tooltip.efficiency": "%s%%6§ :ʎɔuǝıɔıɟɟƎ ǝuıqɹn⟘", + "item.gtceu.turbine_rotor.tooltip.power": "%s%%6§ :ɹǝʍoԀ ǝuıqɹn⟘", "item.gtceu.uev_conveyor_module": "ǝןnpoW ɹoʎǝʌuoƆ ΛƎ∩", "item.gtceu.uev_electric_motor": "ɹoʇoW ɔıɹʇɔǝןƎ ΛƎ∩", "item.gtceu.uev_electric_piston": "uoʇsıԀ ɔıɹʇɔǝןƎ ΛƎ∩", @@ -5231,7 +5232,6 @@ "item.gtceu.zpm_voltage_coil": "ןıoƆ ǝbɐʇןoΛ ǝןnpoW ʇuıoԀ oɹǝZ", "item.gtceu.zpm_voltage_coil.tooltip": "ןıoƆ ɹǝdnS", "item.invalid.name": "ɯǝʇı pıןɐʌuI", - "item.netherrack_nether_quartz": "ǝɹO zʇɹɐnὉ ɹǝɥʇǝN", "itemGroup.gtceu.decoration": "sʞɔoןᗺ uoıʇɐɹoɔǝᗡ nƎƆɥɔǝ⟘bǝɹ⅁", "itemGroup.gtceu.item": "sɯǝʇI nƎƆɥɔǝ⟘bǝɹ⅁", "itemGroup.gtceu.machine": "sǝuıɥɔɐW nƎƆɥɔǝ⟘bǝɹ⅁", @@ -5481,7 +5481,6 @@ "material.gtceu.goethite": "ǝʇıɥʇǝo⅁", "material.gtceu.gold": "pןo⅁", "material.gtceu.granite": "ǝʇıuɐɹ⅁", - "material.gtceu.granite_red": "pǝᴚ ǝʇıuɐɹ⅁", "material.gtceu.granitic_mineral_sand": "puɐS ןɐɹǝuıW ɔıʇıuɐɹ⅁", "material.gtceu.graphene": "ǝuǝɥdɐɹ⅁", "material.gtceu.graphite": "ǝʇıɥdɐɹ⅁", @@ -5497,6 +5496,7 @@ "material.gtceu.hastelloy_c_276": "9ㄥᄅ-Ɔ ʎoןןǝʇsɐH", "material.gtceu.hastelloy_x": "X ʎoןןǝʇsɐH", "material.gtceu.heavy_fuel": "ןǝnℲ ʎʌɐǝH", + "material.gtceu.heavy_oil": "ןıO ʎʌɐǝH", "material.gtceu.heavy_rare_earth_sludge": "ǝbpnןS ɥʇɹɐƎ ǝɹɐᴚ ʎʌɐǝH", "material.gtceu.helium": "ɯnıןǝH", "material.gtceu.helium_3": "Ɛ ɯnıןǝH", @@ -5557,6 +5557,7 @@ "material.gtceu.light_blue_dye": "ǝʎᗡ ǝnןᗺ ʇɥbıꞀ", "material.gtceu.light_fuel": "ןǝnℲ ʇɥbıꞀ", "material.gtceu.light_gray_dye": "ǝʎᗡ ʎɐɹ⅁ ʇɥbıꞀ", + "material.gtceu.light_oil": "ןıO ʇɥbıꞀ", "material.gtceu.light_rare_earth_sludge": "ǝbpnןS ɥʇɹɐƎ ǝɹɐᴚ ʇɥbıꞀ", "material.gtceu.lightly_hydro_cracked_gas": "sɐ⅁ pǝʞɔɐɹƆ-oɹpʎH ʎןʇɥbıꞀ", "material.gtceu.lightly_hydro_cracked_heavy_fuel": "ןǝnℲ ʎʌɐǝH pǝʞɔɐɹƆ-oɹpʎH ʎןʇɥbıꞀ", @@ -5653,9 +5654,6 @@ "material.gtceu.octane": "ǝuɐʇɔO", "material.gtceu.oganesson": "uossǝuɐbO", "material.gtceu.oil": "ןıO", - "material.gtceu.oil_heavy": "ןıO ʎʌɐǝH", - "material.gtceu.oil_light": "ןıO ʇɥbıꞀ", - "material.gtceu.oil_medium": "ןıO ʍɐᴚ", "material.gtceu.oilsands": "spuɐsןıO", "material.gtceu.olivine": "ǝuıʌıןO", "material.gtceu.opal": "ןɐdO", @@ -5665,7 +5663,6 @@ "material.gtceu.osmium_tetroxide": "ǝpıxoɹʇǝ⟘ ɯnıɯsO", "material.gtceu.oxygen": "uǝbʎxO", "material.gtceu.palladium": "ɯnıpɐןןɐԀ", - "material.gtceu.palladium_raw": "ʍɐᴚ ɯnıpɐןןɐԀ", "material.gtceu.paper": "ɹǝdɐԀ", "material.gtceu.paracetamol": "ןoɯɐʇǝɔɐɹɐԀ", "material.gtceu.pcb_coolant": "ʇuɐןooƆ ᗺƆԀ", @@ -5731,12 +5728,15 @@ "material.gtceu.rarest_metal_mixture": "ǝɹnʇxıW ןɐʇǝW ʇsǝɹɐᴚ", "material.gtceu.raw_gasoline": "ǝuıןosɐ⅁ ʍɐᴚ", "material.gtceu.raw_growth_medium": "ɯnıpǝW ɥʇʍoɹ⅁ ʍɐᴚ", + "material.gtceu.raw_oil": "ןıO ʍɐᴚ", + "material.gtceu.raw_palladium": "ɯnıpɐןןɐԀ ʍɐᴚ", "material.gtceu.raw_rubber": "ɹǝqqnᴚ ʍɐᴚ", "material.gtceu.raw_styrene_butadiene_rubber": "ɹǝqqnᴚ ǝuǝıpɐʇnᗺ ǝuǝɹʎʇS ʍɐᴚ", "material.gtceu.realgar": "ɹɐbןɐǝᴚ", "material.gtceu.red_alloy": "ʎoןןⱯ pǝᴚ", "material.gtceu.red_dye": "ǝʎᗡ pǝᴚ", "material.gtceu.red_garnet": "ʇǝuɹɐ⅁ pǝᴚ", + "material.gtceu.red_granite": "ǝʇıuɐɹ⅁ pǝᴚ", "material.gtceu.red_steel": "ןǝǝʇS pǝᴚ", "material.gtceu.redrock": "ʞɔoɹpǝᴚ", "material.gtceu.redstone": "ǝuoʇspǝᴚ", @@ -6160,6 +6160,7 @@ "tagprefix.tiny_dust": "ʇsnᗡ %s ɟo ǝןıԀ ʎuı⟘", "tagprefix.tuff": "ǝɹO %s ɟɟn⟘", "tagprefix.turbine_blade": "ǝpɐןᗺ ǝuıqɹn⟘ %s", + "tagprefix.turbine_rotor": "ɹoʇoᴚ ǝuıqɹn⟘ %s", "tagprefix.wire_cutter_head": "pɐǝH ɹǝʇʇnƆ ǝɹıM %s", "tagprefix.wire_gt_double": "ǝɹıM %s xᄅ", "tagprefix.wire_gt_hex": "ǝɹıM %s x9Ɩ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index b10a2185cd8..33b30ba11e7 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -134,10 +134,10 @@ "block.gtceu.aluminium_crate": "Aluminium Crate", "block.gtceu.aluminium_drum": "Aluminium Drum", "block.gtceu.antimatter_hazard_sign_block": "Antimatter Hazard Sign Block", + "block.gtceu.assembly_control_casing": "Assembly Control Casing", "block.gtceu.assembly_line": "Assembly Line", - "block.gtceu.assembly_line_casing": "Assembly Line Casing", "block.gtceu.assembly_line_grating": "Assembly Line Grating", - "block.gtceu.assembly_line_unit": "Assembly Control Casing", + "block.gtceu.assembly_line_unit": "Assembly Line Unit", "block.gtceu.atomic_casing": "Atomic Casing", "block.gtceu.auto_maintenance_hatch": "Auto Maintenance Hatch", "block.gtceu.basic_data_access_hatch": "Basic Data Access Hatch", @@ -153,8 +153,9 @@ "block.gtceu.blue_metal_sheet": "Blue Metal Sheet", "block.gtceu.blue_studs": "Blue Studs", "block.gtceu.boss_hazard_sign_block": "Boss Hazard Sign Block", + "block.gtceu.bricked_bronze_casing": "Bricked Bronze Casing", + "block.gtceu.bricked_wrought_iron_casing": "Bricked Wrought Iron Casing", "block.gtceu.brittle_charcoal": "Brittle Charcoal", - "block.gtceu.bronze_brick_casing": "Bricked Bronze Casing", "block.gtceu.bronze_crate": "Bronze Crate", "block.gtceu.bronze_drum": "Bronze Drum", "block.gtceu.bronze_firebox_casing": "Bronze Firebox Casing", @@ -169,8 +170,7 @@ "block.gtceu.brown_large_metal_sheet": "Brown Large Metal Sheet", "block.gtceu.brown_metal_sheet": "Brown Metal Sheet", "block.gtceu.brown_studs": "Brown Studs", - "block.gtceu.casing_coke_bricks": "Coke Oven Bricks", - "block.gtceu.casing_grate": "Grate Machine Casing", + "block.gtceu.bulk_blast_chiller": "Bulk Blast Chiller", "block.gtceu.causality_hazard_sign_block": "Causality Hazard Sign Block", "block.gtceu.central_monitor": "Central Monitor", "block.gtceu.charcoal_pile_igniter": "Charcoal Pile Igniter", @@ -348,6 +348,7 @@ "block.gtceu.gregification_hazard_sign_block": "Gregification Hazard Sign Block", "block.gtceu.heat_vent": "Heat Vent", "block.gtceu.heatproof_machine_casing": "Heat Proof Invar Machine Casing", + "block.gtceu.heavy_oil": "Heavy Oil", "block.gtceu.high_performance_computation_array": "High Performance Computation Array (HPCA)", "block.gtceu.high_power_casing": "High Power Casing", "block.gtceu.high_pressure_hazard_sign_block": "High Pressure Hazard Sign Block", @@ -597,6 +598,7 @@ "block.gtceu.light_gray_large_metal_sheet": "Light Gray Large Metal Sheet", "block.gtceu.light_gray_metal_sheet": "Light Gray Metal Sheet", "block.gtceu.light_gray_studs": "Light Gray Studs", + "block.gtceu.light_oil": "Light Oil", "block.gtceu.lime_borderless_lamp": "Lime Borderless Lamp", "block.gtceu.lime_lamp": "Lime Lamp", "block.gtceu.lime_large_metal_sheet": "Lime Large Metal Sheet", @@ -798,6 +800,7 @@ "block.gtceu.magenta_metal_sheet": "Magenta Metal Sheet", "block.gtceu.magenta_studs": "Magenta Studs", "block.gtceu.magic_hazard_sign_block": "Magic Hazard Sign Block", + "block.gtceu.magnalium_turbine_casing": "Magnalium Turbine Casing", "block.gtceu.magnetic_hazard_sign_block": "Magnetic Hazard Sign Block", "block.gtceu.maintenance_hatch": "Maintenance Hatch", "block.gtceu.marble": "Marble", @@ -843,8 +846,6 @@ "block.gtceu.me_pattern_buffer_proxy": "ME Pattern Buffer Proxy", "block.gtceu.me_stocking_input_bus": "ME Stocking Input Bus", "block.gtceu.me_stocking_input_hatch": "ME Stocking Input Hatch", - "block.gtceu.mega_blast_furnace": "Rotary Hearth Furnace", - "block.gtceu.mega_vacuum_freezer": "Bulk Blast Chiller", "block.gtceu.miner_pipe": "Miner Pipe", "block.gtceu.mob_infestation_hazard_sign_block": "Mob Infestation Hazard Sign Block", "block.gtceu.mob_spawner_hazard_sign_block": "Mob Spawner Hazard Sign Block", @@ -950,9 +951,6 @@ "block.gtceu.normal_optical_pipe.tooltip": "§7Transmitting §fComputation§7 or §fResearch Data§7", "block.gtceu.object_holder": "Object Holder", "block.gtceu.oil": "Oil", - "block.gtceu.oil_heavy": "Heavy Oil", - "block.gtceu.oil_light": "Light Oil", - "block.gtceu.oil_medium": "Raw Oil", "block.gtceu.opv_1024a_laser_source_hatch": "§9§lOpV§r 1,024§eA§r Laser Source Hatch", "block.gtceu.opv_1024a_laser_target_hatch": "§9§lOpV§r 1,024§eA§r Laser Target Hatch", "block.gtceu.opv_16a_energy_converter": "§9§lOpV§r 16§eA§r Energy Converter", @@ -1043,7 +1041,7 @@ "block.gtceu.orange_metal_sheet": "Orange Metal Sheet", "block.gtceu.orange_studs": "Orange Studs", "block.gtceu.overworld_marker": "Overworld", - "block.gtceu.palladium_substation": "Palladium Substation Casing", + "block.gtceu.palladium_substation_casing": "Palladium Substation Casing", "block.gtceu.pattern_buffer.desc.0": "§fAllows direct §6AE2 pattern storage §ffor GregTech Multiblocks.", "block.gtceu.pattern_buffer.desc.1": "§fAE2 Patterns can utilize anything stored in the §6shared inventory §fwidget.", "block.gtceu.pattern_buffer.desc.2": "§fLink §6Pattern Buffer Proxies §fwith a §bdatastick §fto link machines together!", @@ -1077,6 +1075,7 @@ "block.gtceu.purple_studs": "Purple Studs", "block.gtceu.pyrolyse_oven": "Pyrolyse Oven", "block.gtceu.radioactive_hazard_sign_block": "Radioactive Hazard Sign Block", + "block.gtceu.raw_oil": "Raw Oil", "block.gtceu.reaction_safe_mixing_casing": "Reaction-Safe Mixing Casing", "block.gtceu.red_borderless_lamp": "Red Borderless Lamp", "block.gtceu.red_granite": "Red Granite", @@ -1095,6 +1094,7 @@ "block.gtceu.research_station": "Research Station", "block.gtceu.reservoir_hatch": "Reservoir Hatch", "block.gtceu.robust_machine_casing": "Robust Tungstensteel Machine Casing", + "block.gtceu.rotary_hearth_furnace": "Rotary Hearth Furnace", "block.gtceu.rtm_alloy_coil_block": "RTM Alloy Coil Block", "block.gtceu.rubber_button": "Rubber Button", "block.gtceu.rubber_door": "Rubber Door", @@ -1129,7 +1129,7 @@ "block.gtceu.stainless_steel_crate": "Stainless Steel Crate", "block.gtceu.stainless_steel_drum": "Stainless Steel Drum", "block.gtceu.stainless_steel_gearbox": "Stainless Steel Gearbox Casing", - "block.gtceu.stainless_steel_turbine_casing": "Stainless Turbine Casing", + "block.gtceu.stainless_steel_turbine_casing": "Stainless Steel Turbine Casing", "block.gtceu.steam_casing_bricked_bronze": "Bricked Bronze Hull", "block.gtceu.steam_casing_bricked_bronze.tooltip": "§7For your first Steam Machines", "block.gtceu.steam_casing_bricked_steel": "Bricked Wrought Iron Hull", @@ -1147,7 +1147,6 @@ "block.gtceu.steam_output_bus": "Steam Output Bus", "block.gtceu.steam_oven": "Steam Oven", "block.gtceu.steam_solid_boiler.bronze": "Small Steam Solid Boiler", - "block.gtceu.steel_brick_casing": "Bricked Wrought Iron Casing", "block.gtceu.steel_crate": "Steel Crate", "block.gtceu.steel_drum": "Steel Drum", "block.gtceu.steel_firebox_casing": "Steel Firebox Casing", @@ -1157,7 +1156,6 @@ "block.gtceu.steel_multiblock_tank": "Steel Multiblock Tank", "block.gtceu.steel_pipe_casing": "Steel Pipe Casing", "block.gtceu.steel_tank_valve": "Steel Tank Valve", - "block.gtceu.steel_turbine_casing": "Magnalium Turbine Casing", "block.gtceu.sterilizing_filter_casing": "Sterilizing Filter Casing", "block.gtceu.stress_proof_casing": "Stress Proof Casing", "block.gtceu.stripped_rubber_log": "Stripped Rubber Log", @@ -1166,6 +1164,7 @@ "block.gtceu.substation_capacitor.tooltip_empty": "§7For filling space in your Power Substation", "block.gtceu.substation_capacitor.tooltip_filled": "§cEnergy Capacity: §f%d EU", "block.gtceu.superconducting_coil": "Superconducting Coil Block", + "block.gtceu.surface_rock": "%s Surface Rock", "block.gtceu.tempered_glass": "Tempered Glass", "block.gtceu.test_mui": "Test Mui", "block.gtceu.the_end_marker": "The End", @@ -1769,7 +1768,6 @@ "block.gtceu.zpm_wiremill": "§cElite Wiremill III§r", "block.gtceu.zpm_world_accelerator": "§cElite World Accelerator III§r", "block.sterilizing_filter_casing.tooltip": "Creates a §aSterilized§7 environment", - "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", @@ -1837,6 +1835,7 @@ "config.gtceu.option.direction": "direction", "config.gtceu.option.disableManualCompression": "disableManualCompression", "config.gtceu.option.doBedrockOres": "doBedrockOres", + "config.gtceu.option.doDataFixers": "doDataFixers", "config.gtceu.option.doSuperflatOres": "doSuperflatOres", "config.gtceu.option.doesExplosionDamagesTerrain": "doesExplosionDamagesTerrain", "config.gtceu.option.drum": "drum", @@ -4195,7 +4194,6 @@ "hud.gtceu.armor.hover_mode": "Hover Mode: %s", "hud.gtceu.armor.status.disabled": "§cOFF", "hud.gtceu.armor.status.enabled": "§aON", - "item.glass_lens": "Glass Lens (White)", "item.gtceu.activity_detector_cover": "Activity Detector", "item.gtceu.activity_detector_cover.tooltip": "§7Gives out §fActivity Status§7 as Redstone as §fCover§7.", "item.gtceu.advanced_activity_detector_cover": "Advanced Activity Detector", @@ -4447,6 +4445,7 @@ "item.gtceu.gelled_toluene": "Gelled Toluene", "item.gtceu.gelled_toluene.tooltip": "§7Raw Explosive", "item.gtceu.glass_gem": "Glass Crystal", + "item.gtceu.glass_lens": "Glass Lens (White)", "item.gtceu.glass_plate": "Glass Pane", "item.gtceu.glass_tube": "Glass Tube", "item.gtceu.glass_vial": "%s Glass Vial", @@ -4718,6 +4717,7 @@ "item.gtceu.naquadah_wafer": "Naquadah-doped Wafer", "item.gtceu.naquadah_wafer.tooltip": "§7Raw Circuit", "item.gtceu.netherite_plated": "Netherite-Plated %s", + "item.gtceu.netherrack_nether_quartz": "Nether Quartz Ore", "item.gtceu.neuro_processing_unit": "Neuro Processing Unit", "item.gtceu.neuro_processing_unit.tooltip": "§7Neuro CPU", "item.gtceu.neutron_reflector": "Iridium Neutron Reflector", @@ -4747,7 +4747,6 @@ "item.gtceu.opv_voltage_coil.tooltip": "Legendary Coil", "item.gtceu.orange_dye_spray_can": "Spray Can (Orange)", "item.gtceu.orange_glass_lens": "Glass Lens (Orange)", - "item.gtceu.palladium_raw_dust": "Raw Palladium Powder", "item.gtceu.paper_dust": "Chad", "item.gtceu.paracetamol_pill": "Paracetamol Pill", "item.gtceu.petri_dish": "Petri Dish", @@ -4848,6 +4847,7 @@ "item.gtceu.raw_crystal_chip.tooltip": "§7Raw Crystal Processor", "item.gtceu.raw_crystal_chip_parts": "Raw Crystal Chip Parts", "item.gtceu.raw_crystal_chip_parts.tooltip": "§7Raw Crystal Processor Parts", + "item.gtceu.raw_palladium_dust": "Raw Palladium Powder", "item.gtceu.red_dye_spray_can": "Spray Can (Red)", "item.gtceu.red_glass_lens": "Glass Lens (Red)", "item.gtceu.refined_bentonite_ore": "Refined Bentonite", @@ -4902,7 +4902,6 @@ "item.gtceu.small_inert_metal_mixture_dust": "Small Pile of Inert Metal Mixture", "item.gtceu.small_iridium_metal_residue_dust": "Small Pile of Iridium Metal Residue", "item.gtceu.small_meat_dust": "Small Pile of Mince Meat", - "item.gtceu.small_palladium_raw_dust": "Small Pile of Raw Palladium Powder", "item.gtceu.small_paper_dust": "Small Pile of Chad", "item.gtceu.small_pipe_casting_mold": "Casting Mold (Small Pipe)", "item.gtceu.small_pipe_extruder_mold": "Extruder Mold (Small Pipe)", @@ -4913,6 +4912,7 @@ "item.gtceu.small_quartz_sand_dust": "Small Pile of Quartz Sand", "item.gtceu.small_rare_earth_dust": "Small Pile of Rare Earth", "item.gtceu.small_rarest_metal_mixture_dust": "Small Pile of Rarest Metal Mixture", + "item.gtceu.small_raw_palladium_dust": "Small Pile of Raw Palladium Powder", "item.gtceu.small_rock_salt_dust": "Small Pile of Rock Salt", "item.gtceu.small_salt_dust": "Small Pile of Salt", "item.gtceu.small_sugar_dust": "Small Pile of Sugar", @@ -4977,7 +4977,6 @@ "item.gtceu.tiny_inert_metal_mixture_dust": "Tiny Pile of Inert Metal Mixture", "item.gtceu.tiny_iridium_metal_residue_dust": "Tiny Pile of Iridium Metal Residue", "item.gtceu.tiny_meat_dust": "Tiny Pile of Mince Meat", - "item.gtceu.tiny_palladium_raw_dust": "Tiny Pile of Raw Palladium Powder", "item.gtceu.tiny_paper_dust": "Tiny Pile of Chad", "item.gtceu.tiny_pipe_casting_mold": "Casting Mold (Tiny Pipe)", "item.gtceu.tiny_pipe_extruder_mold": "Extruder Mold (Tiny Pipe)", @@ -4988,6 +4987,7 @@ "item.gtceu.tiny_quartz_sand_dust": "Tiny Pile of Quartz Sand", "item.gtceu.tiny_rare_earth_dust": "Tiny Pile of Rare Earth", "item.gtceu.tiny_rarest_metal_mixture_dust": "Tiny Pile of Rarest Metal Mixture", + "item.gtceu.tiny_raw_palladium_dust": "Tiny Pile of Raw Palladium Powder", "item.gtceu.tiny_rock_salt_dust": "Tiny Pile of Rock Salt", "item.gtceu.tiny_salt_dust": "Tiny Pile of Salt", "item.gtceu.tiny_sugar_dust": "Tiny Pile of Sugar", @@ -5113,8 +5113,9 @@ "item.gtceu.treated_wood_rod": "Treated Wood Stick", "item.gtceu.tungsten_grinding_head": "Tungsten Grinding Head", "item.gtceu.tungsten_steel_fluid_cell": "%s Tungstensteel Cell", - "item.gtceu.turbine_rotor": "%s Turbine Rotor", "item.gtceu.turbine_rotor.tooltip": "Turbine Rotors for your power station", + "item.gtceu.turbine_rotor.tooltip.efficiency": "Turbine Efficiency: §9%s%%", + "item.gtceu.turbine_rotor.tooltip.power": "Turbine Power: §9%s%%", "item.gtceu.uev_conveyor_module": "UEV Conveyor Module", "item.gtceu.uev_electric_motor": "UEV Electric Motor", "item.gtceu.uev_electric_piston": "UEV Electric Piston", @@ -5231,7 +5232,6 @@ "item.gtceu.zpm_voltage_coil": "Zero Point Module Voltage Coil", "item.gtceu.zpm_voltage_coil.tooltip": "Super Coil", "item.invalid.name": "Invalid item", - "item.netherrack_nether_quartz": "Nether Quartz Ore", "itemGroup.gtceu.decoration": "GregTechCEu Decoration Blocks", "itemGroup.gtceu.item": "GregTechCEu Items", "itemGroup.gtceu.machine": "GregTechCEu Machines", @@ -5481,7 +5481,6 @@ "material.gtceu.goethite": "Goethite", "material.gtceu.gold": "Gold", "material.gtceu.granite": "Granite", - "material.gtceu.granite_red": "Granite Red", "material.gtceu.granitic_mineral_sand": "Granitic Mineral Sand", "material.gtceu.graphene": "Graphene", "material.gtceu.graphite": "Graphite", @@ -5497,6 +5496,7 @@ "material.gtceu.hastelloy_c_276": "Hastelloy C-276", "material.gtceu.hastelloy_x": "Hastelloy X", "material.gtceu.heavy_fuel": "Heavy Fuel", + "material.gtceu.heavy_oil": "Heavy Oil", "material.gtceu.heavy_rare_earth_sludge": "Heavy Rare Earth Sludge", "material.gtceu.helium": "Helium", "material.gtceu.helium_3": "Helium 3", @@ -5557,6 +5557,7 @@ "material.gtceu.light_blue_dye": "Light Blue Dye", "material.gtceu.light_fuel": "Light Fuel", "material.gtceu.light_gray_dye": "Light Gray Dye", + "material.gtceu.light_oil": "Light Oil", "material.gtceu.light_rare_earth_sludge": "Light Rare Earth Sludge", "material.gtceu.lightly_hydro_cracked_gas": "Lightly Hydro-Cracked Gas", "material.gtceu.lightly_hydro_cracked_heavy_fuel": "Lightly Hydro-Cracked Heavy Fuel", @@ -5653,9 +5654,6 @@ "material.gtceu.octane": "Octane", "material.gtceu.oganesson": "Oganesson", "material.gtceu.oil": "Oil", - "material.gtceu.oil_heavy": "Heavy Oil", - "material.gtceu.oil_light": "Light Oil", - "material.gtceu.oil_medium": "Raw Oil", "material.gtceu.oilsands": "Oilsands", "material.gtceu.olivine": "Olivine", "material.gtceu.opal": "Opal", @@ -5665,7 +5663,6 @@ "material.gtceu.osmium_tetroxide": "Osmium Tetroxide", "material.gtceu.oxygen": "Oxygen", "material.gtceu.palladium": "Palladium", - "material.gtceu.palladium_raw": "Palladium Raw", "material.gtceu.paper": "Paper", "material.gtceu.paracetamol": "Paracetamol", "material.gtceu.pcb_coolant": "PCB Coolant", @@ -5731,12 +5728,15 @@ "material.gtceu.rarest_metal_mixture": "Rarest Metal Mixture", "material.gtceu.raw_gasoline": "Raw Gasoline", "material.gtceu.raw_growth_medium": "Raw Growth Medium", + "material.gtceu.raw_oil": "Raw Oil", + "material.gtceu.raw_palladium": "Raw Palladium", "material.gtceu.raw_rubber": "Raw Rubber", "material.gtceu.raw_styrene_butadiene_rubber": "Raw Styrene Butadiene Rubber", "material.gtceu.realgar": "Realgar", "material.gtceu.red_alloy": "Red Alloy", "material.gtceu.red_dye": "Red Dye", "material.gtceu.red_garnet": "Red Garnet", + "material.gtceu.red_granite": "Red Granite", "material.gtceu.red_steel": "Red Steel", "material.gtceu.redrock": "Redrock", "material.gtceu.redstone": "Redstone", @@ -6160,6 +6160,7 @@ "tagprefix.tiny_dust": "Tiny Pile of %s Dust", "tagprefix.tuff": "Tuff %s Ore", "tagprefix.turbine_blade": "%s Turbine Blade", + "tagprefix.turbine_rotor": "%s Turbine Rotor", "tagprefix.wire_cutter_head": "%s Wire Cutter Head", "tagprefix.wire_gt_double": "2x %s Wire", "tagprefix.wire_gt_hex": "16x %s Wire", diff --git a/src/generated/resources/assets/gtceu/models/block/assembly_line_casing.json b/src/generated/resources/assets/gtceu/models/block/assembly_control_casing.json similarity index 100% rename from src/generated/resources/assets/gtceu/models/block/assembly_line_casing.json rename to src/generated/resources/assets/gtceu/models/block/assembly_control_casing.json diff --git a/src/generated/resources/assets/gtceu/models/block/bronze_brick_casing.json b/src/generated/resources/assets/gtceu/models/block/bricked_bronze_casing.json similarity index 100% rename from src/generated/resources/assets/gtceu/models/block/bronze_brick_casing.json rename to src/generated/resources/assets/gtceu/models/block/bricked_bronze_casing.json diff --git a/src/generated/resources/assets/gtceu/models/block/steel_brick_casing.json b/src/generated/resources/assets/gtceu/models/block/bricked_wrought_iron_casing.json similarity index 100% rename from src/generated/resources/assets/gtceu/models/block/steel_brick_casing.json rename to src/generated/resources/assets/gtceu/models/block/bricked_wrought_iron_casing.json diff --git a/src/generated/resources/assets/gtceu/models/block/heavy_oil.json b/src/generated/resources/assets/gtceu/models/block/heavy_oil.json new file mode 100644 index 00000000000..b74b02b070e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/heavy_oil.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "gtceu:block/fluids/fluid.heavy_oil" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_oil.json b/src/generated/resources/assets/gtceu/models/block/light_oil.json new file mode 100644 index 00000000000..a6ff95ff321 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_oil.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "gtceu:block/fluids/fluid.light_oil" + } +} \ 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/bulk_blast_chiller.json similarity index 68% rename from src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json rename to src/generated/resources/assets/gtceu/models/block/machine/bulk_blast_chiller.json index 656a0a17923..da60f8b292c 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/bulk_blast_chiller.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/block", "loader": "gtceu:machine", - "machine": "gtceu:mega_vacuum_freezer", + "machine": "gtceu:bulk_blast_chiller", "texture_overrides": { "all": "gtceu:block/casings/solid/machine_casing_frost_proof" }, @@ -11,8 +11,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front_emissive" } } }, @@ -21,8 +21,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front_paused_emissive" } } }, @@ -31,8 +31,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front_active_emissive" } } }, @@ -41,8 +41,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/bulk_blast_chiller/overlay_front_active_emissive" } } } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/rotary_hearth_furnace.json similarity index 68% rename from src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json rename to src/generated/resources/assets/gtceu/models/block/machine/rotary_hearth_furnace.json index d3ddd7c645e..9f4793f8984 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/rotary_hearth_furnace.json @@ -1,7 +1,7 @@ { "parent": "minecraft:block/block", "loader": "gtceu:machine", - "machine": "gtceu:mega_blast_furnace", + "machine": "gtceu:rotary_hearth_furnace", "texture_overrides": { "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing" }, @@ -11,8 +11,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front_emissive" } } }, @@ -21,8 +21,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front_paused_emissive" } } }, @@ -31,8 +31,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active_emissive" } } }, @@ -41,8 +41,8 @@ "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" + "overlay_front": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active_emissive" } } } diff --git a/src/generated/resources/assets/gtceu/models/block/steel_turbine_casing.json b/src/generated/resources/assets/gtceu/models/block/magnalium_turbine_casing.json similarity index 100% rename from src/generated/resources/assets/gtceu/models/block/steel_turbine_casing.json rename to src/generated/resources/assets/gtceu/models/block/magnalium_turbine_casing.json diff --git a/src/generated/resources/assets/gtceu/models/block/oil_heavy.json b/src/generated/resources/assets/gtceu/models/block/oil_heavy.json deleted file mode 100644 index 2e6953bb4aa..00000000000 --- a/src/generated/resources/assets/gtceu/models/block/oil_heavy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "gtceu:block/fluids/fluid.oil_heavy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/oil_light.json b/src/generated/resources/assets/gtceu/models/block/oil_light.json deleted file mode 100644 index 0cbd722a2bf..00000000000 --- a/src/generated/resources/assets/gtceu/models/block/oil_light.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "gtceu:block/fluids/fluid.oil_light" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/oil_medium.json b/src/generated/resources/assets/gtceu/models/block/oil_medium.json deleted file mode 100644 index 8f7f4602f74..00000000000 --- a/src/generated/resources/assets/gtceu/models/block/oil_medium.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "gtceu:block/fluids/fluid.oil_medium" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/palladium_substation.json b/src/generated/resources/assets/gtceu/models/block/palladium_substation_casing.json similarity index 100% rename from src/generated/resources/assets/gtceu/models/block/palladium_substation.json rename to src/generated/resources/assets/gtceu/models/block/palladium_substation_casing.json diff --git a/src/generated/resources/assets/gtceu/models/block/raw_oil.json b/src/generated/resources/assets/gtceu/models/block/raw_oil.json new file mode 100644 index 00000000000..7e11b4e6d65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/raw_oil.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "gtceu:block/fluids/fluid.raw_oil" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/assembly_control_casing.json b/src/generated/resources/assets/gtceu/models/item/assembly_control_casing.json new file mode 100644 index 00000000000..b8e80e07670 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/assembly_control_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/assembly_control_casing" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/assembly_line_casing.json b/src/generated/resources/assets/gtceu/models/item/assembly_line_casing.json deleted file mode 100644 index 29adbafa78d..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/assembly_line_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "gtceu:block/assembly_line_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/assembly_line_unit.json b/src/generated/resources/assets/gtceu/models/item/assembly_line_unit.json index 4ded9e6eccc..bc56f43b774 100644 --- a/src/generated/resources/assets/gtceu/models/item/assembly_line_unit.json +++ b/src/generated/resources/assets/gtceu/models/item/assembly_line_unit.json @@ -1,3 +1,3 @@ { - "parent": "gtceu:block/variant/assembly_line" + "parent": "gtceu:block/variant/assembly_line_unit" } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bricked_bronze_casing.json b/src/generated/resources/assets/gtceu/models/item/bricked_bronze_casing.json new file mode 100644 index 00000000000..9afbb815596 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bricked_bronze_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/bricked_bronze_casing" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bricked_wrought_iron_casing.json b/src/generated/resources/assets/gtceu/models/item/bricked_wrought_iron_casing.json new file mode 100644 index 00000000000..123a9722575 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bricked_wrought_iron_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/bricked_wrought_iron_casing" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bronze_brick_casing.json b/src/generated/resources/assets/gtceu/models/item/bronze_brick_casing.json deleted file mode 100644 index 4fe4a810222..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/bronze_brick_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "gtceu:block/bronze_brick_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bulk_blast_chiller.json b/src/generated/resources/assets/gtceu/models/item/bulk_blast_chiller.json new file mode 100644 index 00000000000..33a8becbbd7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bulk_blast_chiller.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/bulk_blast_chiller" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/magnalium_turbine_casing.json b/src/generated/resources/assets/gtceu/models/item/magnalium_turbine_casing.json new file mode 100644 index 00000000000..97ef1b00f2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/magnalium_turbine_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/magnalium_turbine_casing" +} \ 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 deleted file mode 100644 index cf647ab9e10..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "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 deleted file mode 100644 index 82648ab534b..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "gtceu:block/machine/mega_vacuum_freezer" -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/palladium_substation.json b/src/generated/resources/assets/gtceu/models/item/palladium_substation.json deleted file mode 100644 index ce3a0856e3e..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/palladium_substation.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "gtceu:block/palladium_substation" -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/palladium_substation_casing.json b/src/generated/resources/assets/gtceu/models/item/palladium_substation_casing.json new file mode 100644 index 00000000000..2c5a30b1be4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/palladium_substation_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/palladium_substation_casing" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/rotary_hearth_furnace.json b/src/generated/resources/assets/gtceu/models/item/rotary_hearth_furnace.json new file mode 100644 index 00000000000..23f496bba78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/rotary_hearth_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/rotary_hearth_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_brick_casing.json b/src/generated/resources/assets/gtceu/models/item/steel_brick_casing.json deleted file mode 100644 index a65094c0a9e..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/steel_brick_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "gtceu:block/steel_brick_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_turbine_casing.json b/src/generated/resources/assets/gtceu/models/item/steel_turbine_casing.json deleted file mode 100644 index 51a4b66ae8f..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/steel_turbine_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "gtceu:block/steel_turbine_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/turbine_rotor.json b/src/generated/resources/assets/gtceu/models/item/turbine_rotor.json deleted file mode 100644 index 34e4953c68a..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/turbine_rotor.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "gtceu:item/tools/turbine" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_tables/blocks/bronze_brick_casing.json b/src/generated/resources/data/gtceu/loot_tables/blocks/assembly_control_casing.json similarity index 72% rename from src/generated/resources/data/gtceu/loot_tables/blocks/bronze_brick_casing.json rename to src/generated/resources/data/gtceu/loot_tables/blocks/assembly_control_casing.json index a14e14edefd..432d4d7a2ef 100644 --- a/src/generated/resources/data/gtceu/loot_tables/blocks/bronze_brick_casing.json +++ b/src/generated/resources/data/gtceu/loot_tables/blocks/assembly_control_casing.json @@ -11,11 +11,11 @@ "entries": [ { "type": "minecraft:item", - "name": "gtceu:bronze_brick_casing" + "name": "gtceu:assembly_control_casing" } ], "rolls": 1.0 } ], - "random_sequence": "gtceu:blocks/bronze_brick_casing" + "random_sequence": "gtceu:blocks/assembly_control_casing" } \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_tables/blocks/assembly_line_casing.json b/src/generated/resources/data/gtceu/loot_tables/blocks/bricked_bronze_casing.json similarity index 73% rename from src/generated/resources/data/gtceu/loot_tables/blocks/assembly_line_casing.json rename to src/generated/resources/data/gtceu/loot_tables/blocks/bricked_bronze_casing.json index 5c6bf1fb9a4..cd38c5f2a04 100644 --- a/src/generated/resources/data/gtceu/loot_tables/blocks/assembly_line_casing.json +++ b/src/generated/resources/data/gtceu/loot_tables/blocks/bricked_bronze_casing.json @@ -11,11 +11,11 @@ "entries": [ { "type": "minecraft:item", - "name": "gtceu:assembly_line_casing" + "name": "gtceu:bricked_bronze_casing" } ], "rolls": 1.0 } ], - "random_sequence": "gtceu:blocks/assembly_line_casing" + "random_sequence": "gtceu:blocks/bricked_bronze_casing" } \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_tables/blocks/steel_brick_casing.json b/src/generated/resources/data/gtceu/loot_tables/blocks/bricked_wrought_iron_casing.json similarity index 71% rename from src/generated/resources/data/gtceu/loot_tables/blocks/steel_brick_casing.json rename to src/generated/resources/data/gtceu/loot_tables/blocks/bricked_wrought_iron_casing.json index d139fbdada1..e67b63b0db7 100644 --- a/src/generated/resources/data/gtceu/loot_tables/blocks/steel_brick_casing.json +++ b/src/generated/resources/data/gtceu/loot_tables/blocks/bricked_wrought_iron_casing.json @@ -11,11 +11,11 @@ "entries": [ { "type": "minecraft:item", - "name": "gtceu:steel_brick_casing" + "name": "gtceu:bricked_wrought_iron_casing" } ], "rolls": 1.0 } ], - "random_sequence": "gtceu:blocks/steel_brick_casing" + "random_sequence": "gtceu:blocks/bricked_wrought_iron_casing" } \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_tables/blocks/palladium_substation.json b/src/generated/resources/data/gtceu/loot_tables/blocks/magnalium_turbine_casing.json similarity index 72% rename from src/generated/resources/data/gtceu/loot_tables/blocks/palladium_substation.json rename to src/generated/resources/data/gtceu/loot_tables/blocks/magnalium_turbine_casing.json index fd8634a5b55..26718c48089 100644 --- a/src/generated/resources/data/gtceu/loot_tables/blocks/palladium_substation.json +++ b/src/generated/resources/data/gtceu/loot_tables/blocks/magnalium_turbine_casing.json @@ -11,11 +11,11 @@ "entries": [ { "type": "minecraft:item", - "name": "gtceu:palladium_substation" + "name": "gtceu:magnalium_turbine_casing" } ], "rolls": 1.0 } ], - "random_sequence": "gtceu:blocks/palladium_substation" + "random_sequence": "gtceu:blocks/magnalium_turbine_casing" } \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_tables/blocks/palladium_substation_casing.json b/src/generated/resources/data/gtceu/loot_tables/blocks/palladium_substation_casing.json new file mode 100644 index 00000000000..cfbb9502044 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_tables/blocks/palladium_substation_casing.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:palladium_substation_casing" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/palladium_substation_casing" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_tables/blocks/steel_turbine_casing.json b/src/generated/resources/data/gtceu/loot_tables/blocks/steel_turbine_casing.json deleted file mode 100644 index f5778b0a827..00000000000 --- a/src/generated/resources/data/gtceu/loot_tables/blocks/steel_turbine_casing.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "gtceu:steel_turbine_casing" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "gtceu:blocks/steel_turbine_casing" -} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/tags/blocks/mineable/pickaxe_or_wrench.json b/src/generated/resources/data/gtceu/tags/blocks/mineable/pickaxe_or_wrench.json index 4067346e98a..64029895631 100644 --- a/src/generated/resources/data/gtceu/tags/blocks/mineable/pickaxe_or_wrench.json +++ b/src/generated/resources/data/gtceu/tags/blocks/mineable/pickaxe_or_wrench.json @@ -12,7 +12,7 @@ "gtceu:robust_machine_casing", "gtceu:inert_machine_casing", "gtceu:sturdy_machine_casing", - "gtceu:palladium_substation", + "gtceu:palladium_substation_casing", "gtceu:nonconducting_casing", "gtceu:vibration_safe_casing", "gtceu:watertight_casing", @@ -32,14 +32,14 @@ "gtceu:crushing_wheels", "gtceu:heat_vent", "gtceu:assembly_line_grating", - "gtceu:assembly_line_casing", + "gtceu:assembly_control_casing", "gtceu:assembly_line_unit", "gtceu:bronze_gearbox", "gtceu:steel_gearbox", "gtceu:stainless_steel_gearbox", "gtceu:titanium_gearbox", "gtceu:tungstensteel_gearbox", - "gtceu:steel_turbine_casing", + "gtceu:magnalium_turbine_casing", "gtceu:titanium_turbine_casing", "gtceu:stainless_steel_turbine_casing", "gtceu:tungstensteel_turbine_casing", @@ -73,9 +73,9 @@ "gtceu:uv_hermetic_casing", "gtceu:uhv_hermetic_casing", "gtceu:bronze_machine_casing", - "gtceu:bronze_brick_casing", + "gtceu:bricked_bronze_casing", "gtceu:steel_machine_casing", - "gtceu:steel_brick_casing", + "gtceu:bricked_wrought_iron_casing", "gtceu:cupronickel_coil_block", "gtceu:kanthal_coil_block", "gtceu:nichrome_coil_block", diff --git a/src/generated/resources/data/gtceu/worldgen/configured_feature/raw_oil_sprout.json b/src/generated/resources/data/gtceu/worldgen/configured_feature/raw_oil_sprout.json index 9f7c63b09ea..a274658f902 100644 --- a/src/generated/resources/data/gtceu/worldgen/configured_feature/raw_oil_sprout.json +++ b/src/generated/resources/data/gtceu/worldgen/configured_feature/raw_oil_sprout.json @@ -1,7 +1,7 @@ { "type": "gtceu:fluid_sprout", "config": { - "fluid": "gtceu:oil_medium", + "fluid": "gtceu:raw_oil", "size": { "type": "minecraft:uniform", "value": { diff --git a/src/generated/resources/data/minecraft/tags/blocks/replaceable.json b/src/generated/resources/data/minecraft/tags/blocks/replaceable.json index 51b1c7c9f34..be225f678b8 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/replaceable.json +++ b/src/generated/resources/data/minecraft/tags/blocks/replaceable.json @@ -1,9 +1,9 @@ { "values": [ "gtceu:oil", - "gtceu:oil_light", - "gtceu:oil_heavy", - "gtceu:oil_medium", + "gtceu:light_oil", + "gtceu:heavy_oil", + "gtceu:raw_oil", "gtceu:natural_gas" ] } \ 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 c87913eb9e4..da3d6cc880d 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -33,6 +33,22 @@ public class GTCEu { public static final Path GTCEU_FOLDER = getGameDir().resolve("gtceu"); + /** + * Only used for datafixers. Bump subversion whenever a block changes id, save data layout changes, etc.
+ * Main version should be bumped the first time it is bumped after a release, then subversion for each subsequent + * change. + * + *

+ * Versions: + *

+ */ + public static final int GT_DATA_VERSION = 3; + public GTCEu() { GTCEu.init(); GTCEuAPI.instance = 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 9b79c79acf6..5ed5c943610 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 @@ -122,7 +122,7 @@ public static TagPrefix get(String name) { public static final TagPrefix oreRedGranite = oreTagPrefix("red_granite", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Red Granite %s Ore") - .registerOre(() -> GTBlocks.RED_GRANITE.getDefaultState(), () -> GTMaterials.GraniteRed, + .registerOre(() -> GTBlocks.RED_GRANITE.getDefaultState(), () -> GTMaterials.RedGranite, BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_RED).requiresCorrectToolForDrops() .strength(3.0F, 3.0F), GTCEu.id("block/red_granite")); @@ -201,7 +201,7 @@ public static TagPrefix get(String name) { .requiresCorrectToolForDrops().strength(4.5F, 9.0F), ResourceLocation.withDefaultNamespace("block/end_stone"), true, false, true); - public static final TagPrefix rawOre = new TagPrefix(GTCEu.id("raw"), true) + public static final TagPrefix rawOre = new TagPrefix(GTCEu.id("raw")) .idPattern("raw_%s") .defaultTagPath("raw_materials/%s") .unformattedTagPath("raw_materials") @@ -978,8 +978,6 @@ public record BlockProperties(@NotNull Supplier> renderType @Getter @Setter private String idPattern; - @Getter - public final boolean invertedName; protected final List tags = new ArrayList<>(); @Setter @@ -1048,26 +1046,21 @@ public record BlockProperties(@NotNull Supplier> renderType */ @Deprecated(since = "8.0.0") public TagPrefix(String name) { - this(name, false); + this(GTCEu.id(name)); } /** - * @deprecated Use {@link TagPrefix#TagPrefix(ResourceLocation, boolean)} + * @deprecated Use {@link TagPrefix#TagPrefix(ResourceLocation)} */ @Deprecated(since = "8.0.0") public TagPrefix(String name, boolean invertedName) { - this(GTCEu.id(name), invertedName); + this(name); } public TagPrefix(ResourceLocation id) { - this(id, false); - } - - public TagPrefix(ResourceLocation id, boolean invertedName) { this.id = id; this.name = id.getPath(); this.idPattern = "%s_" + getLowerCaseName(); - this.invertedName = invertedName; this.langValue = "%s " + FormattingUtil.toEnglishName(getLowerCaseName()); GTRegistries.TAG_PREFIXES.register(id, this); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/DataFixHelper.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/DataFixHelper.java new file mode 100644 index 00000000000..dd60cb641c9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/DataFixHelper.java @@ -0,0 +1,89 @@ +package com.gregtechceu.gtceu.api.datafixer; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.data.datafixer.GTDataFixers; + +import net.minecraft.SharedConstants; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.util.datafix.DataFixers; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.DataFixUtils; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.*; + +@ApiStatus.Internal +public abstract class DataFixHelper { + + public static final String GT_DATA_VERSION_TAG = "GTCEu_DataVersion"; + public static final Logger LOGGER = LogManager.getLogger("GTCEu/DFU"); + + // region updating + + public static Dynamic updateToCurrentVersion(DSL.TypeReference type, Dynamic dynamic) { + return update(type, dynamic, getGTDataVersion(dynamic), GTCEu.GT_DATA_VERSION); + } + + public static Dynamic update(DSL.TypeReference type, Dynamic dynamic, int version, int newVersion) { + if (GTDataFixers.getDataFixer() == null) { + return dynamic; + } + return GTDataFixers.getDataFixer().update(type, dynamic, version, newVersion); + } + + public static CompoundTag updateToCurrentVersion(DSL.TypeReference dataFixTypes, CompoundTag tag) { + return update(dataFixTypes, tag, getGTDataVersion(tag), GTCEu.GT_DATA_VERSION); + } + + public static CompoundTag update(DSL.TypeReference dataFixTypes, CompoundTag tag, int version, int newVersion) { + return (CompoundTag) update(dataFixTypes, new Dynamic<>(NbtOps.INSTANCE, tag), version, newVersion).getValue(); + } + + // endregion + + // region data version handling + + public static CompoundTag addGTDataVersion(CompoundTag tag) { + if (GTDataFixers.getDataFixer() != null) { + tag.putInt(GT_DATA_VERSION_TAG, GTCEu.GT_DATA_VERSION); + } + + return tag; + } + + @Contract(pure = true) + @Range(from = -1, to = Integer.MAX_VALUE) + public static int getGTDataVersion(Dynamic dynamic) { + return getGTDataVersion(dynamic, -1); + } + + @Contract(pure = true) + @Range(from = -1, to = Integer.MAX_VALUE) + public static int getGTDataVersion(Dynamic dynamic, int defaultValue) { + return dynamic.get(GT_DATA_VERSION_TAG).asInt(defaultValue); + } + + @Contract(pure = true) + @Range(from = -1, to = Integer.MAX_VALUE) + public static int getGTDataVersion(CompoundTag tag) { + return getGTDataVersion(tag, -1); + } + + @Contract(pure = true) + @Range(from = -1, to = Integer.MAX_VALUE) + public static int getGTDataVersion(CompoundTag tag, int defaultValue) { + return tag.contains(GT_DATA_VERSION_TAG, CompoundTag.TAG_ANY_NUMERIC) ? tag.getInt(GT_DATA_VERSION_TAG) : + defaultValue; + } + + // endregion + + public static Schema getLatestVanillaSchema() { + int vanillaDataVersion = SharedConstants.getCurrentVersion().getDataVersion().getVersion(); + return DataFixers.getDataFixer().getSchema(DataFixUtils.makeKey(vanillaDataVersion)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/EmptyDataFixer.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/EmptyDataFixer.java new file mode 100644 index 00000000000..ab3f38955ef --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/EmptyDataFixer.java @@ -0,0 +1,88 @@ +package com.gregtechceu.gtceu.api.datafixer; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.DataFixer; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.Type; +import com.mojang.datafixers.types.templates.TypeTemplate; +import com.mojang.serialization.Dynamic; +import it.unimi.dsi.fastutil.objects.Object2ObjectMaps; +import org.jetbrains.annotations.Range; + +import java.util.Map; +import java.util.function.Supplier; + +class EmptyDataFixer implements DataFixer { + + static final EmptyDataFixer INSTANCE = new EmptyDataFixer(); + + private final Schema schema = new EmptySchema(0); + + private EmptyDataFixer() {} + + @Override + public Dynamic update(DSL.TypeReference type, Dynamic input, int version, int newVersion) { + return input; + } + + @Override + public Schema getSchema(int key) { + return this.schema; + } + + /* + * Copyright 2022 QuiltMC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** + * Represents an empty {@link Schema}, having no parent and containing no type definitions. + */ + static final class EmptySchema extends Schema { + + /** + * Constructs an empty schema. + * + * @param versionKey the data version key + */ + EmptySchema(@Range(from = 0, to = Integer.MAX_VALUE) int versionKey) { + super(versionKey, null); + } + + // all of these methods refer to this.parent without checking if its null + @Override + public void registerTypes(Schema schema, Map> entityTypes, + Map> blockEntityTypes) {} + + @Override + public Map> registerEntities(Schema schema) { + return Map.of(); + } + + @Override + public Map> registerBlockEntities(Schema schema) { + return Map.of(); + } + + // Ensure the schema stays empty. + @Override + public void registerType(boolean recursive, DSL.TypeReference type, Supplier template) { + throw new UnsupportedOperationException(); + } + + @Override + protected Map> buildTypes() { + return Object2ObjectMaps.emptyMap(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/FixedDataFixerBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/FixedDataFixerBuilder.java new file mode 100644 index 00000000000..615a8047b72 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/FixedDataFixerBuilder.java @@ -0,0 +1,113 @@ +package com.gregtechceu.gtceu.api.datafixer; + +import com.google.common.collect.Lists; +import com.mojang.datafixers.*; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.Type; +import it.unimi.dsi.fastutil.ints.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.function.BiFunction; +import java.util.stream.Collectors; + +/// This class is a full copy of {@link DataFixerBuilder} because all of its fields are private and thus needed to be +/// copied here. There was only one method that didn't need to be copied, so extending it is pointless. +public class FixedDataFixerBuilder { + + private static final Logger LOGGER = LoggerFactory.getLogger(FixedDataFixerBuilder.class); + + private final int dataVersion; + private final Int2ObjectSortedMap schemas = new Int2ObjectAVLTreeMap<>(); + private final List globalList = Lists.newArrayList(); + private final IntSortedSet fixerVersions = new IntAVLTreeSet(); + + public FixedDataFixerBuilder(int dataVersion) { + this.dataVersion = dataVersion; + } + + public Schema addSchema(final int version, final BiFunction factory) { + return addSchema(version, 0, factory); + } + + public Schema addSchema(final int version, final int subVersion, + final BiFunction factory) { + final int key = DataFixUtils.makeKey(version, subVersion); + final Schema parent = schemas.isEmpty() ? null : + schemas.get(FixedDataFixerUpper.getLowestSchemaSameVersion(schemas, key - 1)); + final Schema schema = factory.apply(DataFixUtils.makeKey(version, subVersion), parent); + addSchema(schema); + return schema; + } + + public void addSchema(final Schema schema) { + schemas.put(schema.getVersionKey(), schema); + } + + public void addFixer(final DataFix fix) { + final int version = DataFixUtils.getVersion(fix.getVersionKey()); + + if (version > dataVersion) { + LOGGER.warn("Ignored fix registered for version: {} as the DataVersion of the game is: {}", version, + dataVersion); + return; + } + + globalList.add(fix); + fixerVersions.add(fix.getVersionKey()); + } + + public DataFixer buildUnoptimized() { + return build(); + } + + public DataFixer buildOptimized(final Set requiredTypes, final Executor executor) { + final FixedDataFixerUpper fixerUpper = build(); + + final Instant started = Instant.now(); + final List> futures = Lists.newArrayList(); + + final Set requiredTypeNames = requiredTypes.stream().map(DSL.TypeReference::typeName) + .collect(Collectors.toSet()); + + final IntBidirectionalIterator iterator = fixerUpper.fixerVersions().iterator(); + while (iterator.hasNext()) { + final int versionKey = iterator.nextInt(); + final Schema schema = schemas.get(versionKey); + for (final String typeName : schema.types()) { + if (!requiredTypeNames.contains(typeName)) { + continue; + } + final CompletableFuture future = CompletableFuture.runAsync(() -> { + final Type dataType = schema.getType(() -> typeName); + final TypeRewriteRule rule = fixerUpper.getRule(DataFixUtils.getVersion(versionKey), dataVersion); + dataType.rewrite(rule, FixedDataFixerUpper.OPTIMIZATION_RULE); + }, executor).exceptionally(e -> { + LOGGER.error("Unable to build datafixers", e); + Runtime.getRuntime().exit(1); + return null; + }); + futures.add(future); + } + } + + CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)).thenAccept(ignored -> { + LOGGER.info("{} Datafixer optimizations took {} milliseconds", futures.size(), + Duration.between(started, Instant.now()).toMillis()); + }); + + return fixerUpper; + } + + private FixedDataFixerUpper build() { + return new FixedDataFixerUpper(new Int2ObjectAVLTreeMap<>(schemas), new ArrayList<>(globalList), + new IntAVLTreeSet(fixerVersions)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/FixedDataFixerUpper.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/FixedDataFixerUpper.java new file mode 100644 index 00000000000..57e851b75a2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/FixedDataFixerUpper.java @@ -0,0 +1,77 @@ +package com.gregtechceu.gtceu.api.datafixer; + +import com.google.common.collect.Lists; +import com.mojang.datafixers.DataFix; +import com.mojang.datafixers.DataFixUtils; +import com.mojang.datafixers.DataFixerUpper; +import com.mojang.datafixers.TypeRewriteRule; +import com.mojang.datafixers.functions.PointFreeRule; +import com.mojang.datafixers.schemas.Schema; +import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap; +import it.unimi.dsi.fastutil.ints.IntSortedSet; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; +import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; +import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; + +import java.util.List; + +/// Subclass of {@link DataFixerUpper} to backport a fix from a newer version of DFU. +public class FixedDataFixerUpper extends DataFixerUpper { + + protected static final PointFreeRule OPTIMIZATION_RULE = DataFixerUpper.OPTIMIZATION_RULE; + + private final List globalList; + private final Long2ObjectMap rules = Long2ObjectMaps.synchronize(new Long2ObjectOpenHashMap<>()); + + protected FixedDataFixerUpper(Int2ObjectSortedMap schemas, List globalList, + IntSortedSet fixerVersions) { + super(schemas, globalList, fixerVersions); + this.globalList = globalList; + } + + protected static int getLowestSchemaSameVersion(final Int2ObjectSortedMap schemas, final int versionKey) { + return DataFixerUpper.getLowestSchemaSameVersion(schemas, versionKey); + } + + private int getLowestFixSameVersion(final int versionKey) { + if (versionKey < fixerVersions().firstInt()) { + // can have a version before everything else + return fixerVersions().firstInt() - 1; + } + return fixerVersions().subSet(0, versionKey + 1).lastInt(); + } + + /// backport of DFU commit [`b81c76b`](https://github.com/Mojang/DataFixerUpper/commit/b81c76b) + /// (Fix: apply all rules from subversions of target version) + @Override + protected TypeRewriteRule getRule(final int version, final int newVersion) { + if (version >= newVersion) { + return TypeRewriteRule.nop(); + } + + final long key = (long) version << 32 | newVersion; + return rules.computeIfAbsent(key, k -> { + final int expandedVersion = getLowestFixSameVersion(DataFixUtils.makeKey(version)); + + final List rules = Lists.newArrayList(); + for (final DataFix fix : globalList) { + final int expandedFixVersion = fix.getVersionKey(); + final int fixVersion = DataFixUtils.getVersion(expandedFixVersion); + if (expandedFixVersion > expandedVersion && fixVersion <= newVersion) { + final TypeRewriteRule fixRule = fix.getRule(); + if (fixRule == TypeRewriteRule.nop()) { + continue; + } + rules.add(fixRule); + } + } + + return TypeRewriteRule.seq(rules); + }); + } + + @Override + protected IntSortedSet fixerVersions() { + return super.fixerVersions(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/LazyDataFixer.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/LazyDataFixer.java new file mode 100644 index 00000000000..a061df076de --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/LazyDataFixer.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2023 embeddedt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.gregtechceu.gtceu.api.datafixer; + +import com.gregtechceu.gtceu.GTCEu; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.DataFixer; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +/** + * Original from + * ModernFix + */ +public class LazyDataFixer implements DataFixer { + + private @Nullable DataFixer backingDataFixer; + private final Supplier<@Nullable DataFixer> dfuSupplier; + + public LazyDataFixer(Supplier<@Nullable DataFixer> dfuSupplier) { + this.backingDataFixer = null; + this.dfuSupplier = dfuSupplier; + } + + private DataFixer getDataFixer() { + synchronized (this) { + if (this.backingDataFixer == null) { + GTCEu.LOGGER.info("Instantiating GTCEu Data Fixers"); + this.backingDataFixer = this.dfuSupplier.get(); + } + if (this.backingDataFixer == null) { + this.backingDataFixer = EmptyDataFixer.INSTANCE; + } + } + + return this.backingDataFixer; + } + + public Dynamic update(DSL.TypeReference type, Dynamic input, int version, int newVersion) { + return version >= newVersion ? input : this.getDataFixer().update(type, input, version, newVersion); + } + + public Schema getSchema(int key) { + return this.getDataFixer().getSchema(key); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/FluidRenameFix.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/FluidRenameFix.java new file mode 100644 index 00000000000..c0b6a099117 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/FluidRenameFix.java @@ -0,0 +1,46 @@ +package com.gregtechceu.gtceu.api.datafixer.fixes; + +import com.gregtechceu.gtceu.common.data.datafixer.GTReferences; + +import net.minecraft.util.datafix.schemas.NamespacedSchema; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.DataFix; +import com.mojang.datafixers.TypeRewriteRule; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.Type; +import com.mojang.datafixers.util.Pair; + +import java.util.Objects; +import java.util.function.Function; + +public abstract class FluidRenameFix extends DataFix { + + private final String name; + + public FluidRenameFix(Schema outputSchema, String name) { + super(outputSchema, false); + this.name = name; + } + + public TypeRewriteRule makeRule() { + Type> type = DSL.named(GTReferences.FLUID_NAME.typeName(), + NamespacedSchema.namespacedString()); + if (!Objects.equals(this.getInputSchema().getType(GTReferences.FLUID_NAME), type)) { + throw new IllegalStateException("item name type is not what was expected."); + } else { + return this.fixTypeEverywhere(this.name, type, (ops) -> (typeAndId) -> typeAndId.mapSecond(this::fixFluid)); + } + } + + protected abstract String fixFluid(String fluid); + + public static DataFix create(Schema outputSchema, String name, final Function fixer) { + return new FluidRenameFix(outputSchema, name) { + + protected String fixFluid(String fluid) { + return fixer.apply(fluid); + } + }; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/MaterialRenameFix.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/MaterialRenameFix.java new file mode 100644 index 00000000000..975e64e009e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/MaterialRenameFix.java @@ -0,0 +1,45 @@ +package com.gregtechceu.gtceu.api.datafixer.fixes; + +import com.gregtechceu.gtceu.common.data.datafixer.GTReferences; + +import com.mojang.datafixers.DataFix; +import com.mojang.datafixers.TypeRewriteRule; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.Type; +import com.mojang.datafixers.util.Pair; + +import java.util.Objects; +import java.util.function.Function; + +import static com.mojang.datafixers.DSL.*; +import static net.minecraft.util.datafix.schemas.NamespacedSchema.*; + +public abstract class MaterialRenameFix extends DataFix { + + private final String name; + + public MaterialRenameFix(Schema outputSchema, String name) { + super(outputSchema, false); + this.name = name; + } + + public TypeRewriteRule makeRule() { + Type> type = named(GTReferences.MATERIAL_NAME.typeName(), namespacedString()); + if (!Objects.equals(this.getInputSchema().getType(GTReferences.MATERIAL_NAME), type)) { + throw new IllegalStateException("material name type is not what was expected."); + } else { + return this.fixTypeEverywhere(this.name, type, ops -> value -> value.mapSecond(this::fixMaterial)); + } + } + + protected abstract String fixMaterial(String item); + + public static DataFix create(Schema outputSchema, String name, final Function fixer) { + return new MaterialRenameFix(outputSchema, name) { + + protected String fixMaterial(String name) { + return fixer.apply(name); + } + }; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/ToolBehaviorFix.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/ToolBehaviorFix.java new file mode 100644 index 00000000000..cc921b4e96e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/ToolBehaviorFix.java @@ -0,0 +1,31 @@ +package com.gregtechceu.gtceu.api.datafixer.fixes; + +import net.minecraft.util.datafix.fixes.ItemStackTagFix; + +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; + +public abstract class ToolBehaviorFix extends ItemStackTagFix { + + private final String behaviorId; + private final String newBehaviorId; + + public ToolBehaviorFix(Schema outputSchema, String name, String behaviorId) { + this(outputSchema, name, behaviorId, behaviorId); + } + + public ToolBehaviorFix(Schema outputSchema, String name, String behaviorId, String newBehaviorId) { + super(outputSchema, name, itemId -> true); + this.behaviorId = behaviorId; + this.newBehaviorId = newBehaviorId; + } + + @Override + protected final Dynamic fixItemStackTag(Dynamic tag) { + Dynamic behavior = tag.remove(behaviorId); + behavior = fixBehavior(behavior); + return tag.set(newBehaviorId, behavior); + } + + protected abstract Dynamic fixBehavior(Dynamic tag); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/package-info.java new file mode 100644 index 00000000000..cb13d6c5af8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/fixes/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.api.datafixer.fixes; + +import org.jetbrains.annotations.NotNullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/package-info.java new file mode 100644 index 00000000000..66651429d10 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.api.datafixer; + +import org.jetbrains.annotations.NotNullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/api/datafixer/types/ExtraDSL.java b/src/main/java/com/gregtechceu/gtceu/api/datafixer/types/ExtraDSL.java new file mode 100644 index 00000000000..dafc53b4e01 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/datafixer/types/ExtraDSL.java @@ -0,0 +1,447 @@ +package com.gregtechceu.gtceu.api.datafixer.types; + +import com.mojang.datafixers.types.Type; +import com.mojang.datafixers.types.templates.TypeTemplate; +import com.mojang.datafixers.util.Either; +import com.mojang.datafixers.util.Pair; +import com.mojang.datafixers.util.Unit; +import com.mojang.serialization.Dynamic; + +import static com.mojang.datafixers.DSL.*; + +// spotless:off +public interface ExtraDSL { + + static TypeTemplate fields( + final String name1, final TypeTemplate element1, + final String name2, final TypeTemplate element2, + final String name3, final TypeTemplate element3, + final String name4, final TypeTemplate element4, + final String name5, final TypeTemplate element5, + final String name6, final TypeTemplate element6 + ) { + return and( + field(name1, element1), + field(name2, element2), + field(name3, element3), + field(name4, element4), + field(name5, element5), + field(name6, element6) + ); + } + + static Type>> fields(final String name, final Type element) { + return and( + field(name, element), + remainderType() + ); + } + + static Type>>> fields( + final String name1, final Type element1, + final String name2, final Type element2 + ) { + return and( + field(name1, element1), + field(name2, element2), + remainderType() + ); + } + + static Type>>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3 + ) { + return and( + field(name1, element1), + field(name2, element2), + field(name3, element3), + remainderType() + ); + } + + static Type>>>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4 + ) { + return and( + field(name1, element1), + field(name2, element2), + field(name3, element3), + fields( + name4, element4 + ) + ); + } + + static Type>>>>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5 + ) { + return and( + field(name1, element1), + field(name2, element2), + field(name3, element3), + fields( + name4, element4, + name5, element5 + ) + ); + } + + static Type>>>>>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5, + final String name6, final Type element6 + ) { + return and( + field(name1, element1), + field(name2, element2), + field(name3, element3), + fields( + name4, element4, + name5, element5, + name6, element6 + ) + ); + } + + static Type> fields( + final String name, final Type element, + final Type rest + ) { + return and( + field(name, element), + rest + ); + } + + static Type>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final Type rest + ) { + return and( + field(name1, element1), + field(name2, element2), + rest + ); + } + + static Type>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final Type rest + ) { + return and( + field(name1, element1), + field(name2, element2), + field(name3, element3), + rest + ); + } + + static Type>>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final Type rest + ) { + return fields( + name1, element1, + name2, element2, + name3, element3, + fields( + name4, element4, + rest + ) + ); + } + + static Type>>>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5, + final Type rest + ) { + return fields( + name1, element1, + name2, element2, + name3, element3, + fields( + name4, element4, + name5, element5, + rest + ) + ); + } + + static Type>>>>>> fields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5, + final String name6, final Type element6, + final Type rest + ) { + return fields( + name1, element1, + name2, element2, + name3, element3, + fields( + name4, element4, + name5, element5, + name6, element6, + rest + ) + ); + } + + static TypeTemplate optionalFields( + final String name1, final TypeTemplate element1, + final String name2, final TypeTemplate element2, + final String name3, final TypeTemplate element3, + final String name4, final TypeTemplate element4, + final String name5, final TypeTemplate element5, + final String name6, final TypeTemplate element6 + ) { + return allWithRemainder( + optional(field(name1, element1)), + optional(field(name2, element2)), + optional(field(name3, element3)), + optional(field(name4, element4)), + optional(field(name5, element5)), + optional(field(name6, element6)) + ); + } + + static TypeTemplate optionalFields( + final String name1, final TypeTemplate element1, + final String name2, final TypeTemplate element2, + final String name3, final TypeTemplate element3, + final String name4, final TypeTemplate element4, + final String name5, final TypeTemplate element5, + final String name6, final TypeTemplate element6, + final String name7, final TypeTemplate element7 + ) { + return allWithRemainder( + optional(field(name1, element1)), + optional(field(name2, element2)), + optional(field(name3, element3)), + optional(field(name4, element4)), + optional(field(name5, element5)), + optional(field(name6, element6)), + optional(field(name7, element7)) + ); + } + + static TypeTemplate optionalFields( + final String name1, final TypeTemplate element1, + final String name2, final TypeTemplate element2, + final String name3, final TypeTemplate element3, + final String name4, final TypeTemplate element4, + final String name5, final TypeTemplate element5, + final String name6, final TypeTemplate element6, + final TypeTemplate rest + ) { + return and( + optional(field(name1, element1)), + optional(field(name2, element2)), + optional(field(name3, element3)), + optional(field(name4, element4)), + optional(field(name5, element5)), + optional(field(name6, element6)), + rest + ); + } + + static Type, Dynamic>> optionalFields(final String name, final Type element) { + return optionalFields(name, element, remainderType()); + } + + static Type, Pair, Dynamic>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2 + ) { + return optionalFields( + name1, element1, + name2, element2, + remainderType() + ); + } + + static Type, Pair, Pair, Dynamic>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3 + ) { + return optionalFields( + name1, element1, + name2, element2, + name3, element3, + remainderType() + ); + } + + static Type, Pair, Pair, Pair, Dynamic>>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4 + ) { + return optionalFields( + name1, element1, + name2, element2, + name3, element3, + name4, element4, + remainderType() + ); + } + + static Type, Pair, Pair, Pair, Pair, Dynamic>>>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5 + ) { + return optionalFields( + name1, element1, + name2, element2, + name3, element3, + name4, element4, + name5, element5, + remainderType() + ); + } + + static Type, Pair, Pair, Pair, Pair, Pair, Dynamic>>>>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5, + final String name6, final Type element6 + ) { + return optionalFields( + name1, element1, + name2, element2, + name3, element3, + name4, element4, + name5, element5, + name6, element6, + remainderType() + ); + } + + static Type, G>> optionalFields( + final String name, final Type element, + final Type rest + ) { + return and( + optional(field(name, element)), + rest + ); + } + + static Type, Pair, H>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final Type rest + ) { + return and( + optional(field(name1, element1)), + optional(field(name2, element2)), + rest + ); + } + + static Type, Pair, Pair, I>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final Type rest + ) { + return and( + optional(field(name1, element1)), + optional(field(name2, element2)), + optional(field(name3, element3)), + rest + ); + } + + static Type, Pair, Pair, Pair, J>>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final Type rest + ) { + return optionalFields( + name1, element1, + name2, element2, + name3, element3, + optionalFields( + name4, element4, + rest + ) + ); + } + + static Type, Pair, Pair, Pair, Pair, K>>>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5, + final Type rest + ) { + return optionalFields( + name1, element1, + name2, element2, + name3, element3, + optionalFields( + name4, element4, + name5, element5, + rest + ) + ); + } + + static Type, Pair, Pair, Pair, Pair, Pair, L>>>>>>> optionalFields( + final String name1, final Type element1, + final String name2, final Type element2, + final String name3, final Type element3, + final String name4, final Type element4, + final String name5, final Type element5, + final String name6, final Type element6, + final Type rest + ) { + return optionalFields( + name1, element1, + name2, element2, + name3, element3, + optionalFields( + name4, element4, + name5, element5, + name6, element6, + rest + ) + ); + } +} +// spotless:on 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 1cfb65834d6..534df3b3597 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -47,7 +47,6 @@ import com.gregtechceu.gtceu.utils.ExtendedUseOnContext; import com.gregtechceu.gtceu.utils.GTStringUtils; import com.gregtechceu.gtceu.utils.GTUtil; -import com.gregtechceu.gtceu.utils.data.TagCompatibilityFixer; import net.minecraft.ChatFormatting; import net.minecraft.client.resources.model.BakedModel; @@ -142,9 +141,6 @@ public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBloc private final List serverTicks; private final List waitingToAdd; - // If this machine data needs to be migrated from 7.x to 8.x - private boolean isOldMachineData = false; - public MetaMachine(BlockEntityCreationInfo info) { super(info); this.renderState = getDefinition().defaultRenderState(); @@ -158,14 +154,6 @@ public MetaMachine(BlockEntityCreationInfo info) { // ***** Machine Lifecycle ******// ////////////////////////////////////// - @Override - public void load(CompoundTag tag) { - isOldMachineData = !tag.contains("traitHolder"); - if (isOldMachineData) TagCompatibilityFixer.fixTraitTags(this, tag); - - super.load(tag); - } - /** * Called when this machine is loaded.
* On the server side, the entire world may not be loaded when this method is called.
@@ -177,21 +165,6 @@ public void onLoad() { getTraitHolder().machineLoaded(); getAllTraits().forEach(MachineTrait::onMachineLoad); - if (isOldMachineData) { - Direction upwardsGlobal = TagCompatibilityFixer.fixUpwardsFacing(this.getFrontFacing(), - this.getUpwardsFacing()); - if (upwardsGlobal != null && getBlockState().hasProperty(GTBlockStateProperties.UPWARDS_FACING)) { - // force the global upwards direction - var blockState = getBlockState(); - boolean changeGlobal = blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsGlobal; - if (blockState.getBlock() instanceof MetaMachineBlock && changeGlobal) { - getLevel().setBlock(getBlockPos(), - blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsGlobal), - Block.UPDATE_IMMEDIATE); - } - } - } - // update the painted model property if the machine is painted MachineRenderState renderState = getRenderState(); if (renderState.hasProperty(GTMachineModelProperties.IS_PAINTED) && diff --git a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ListTransformer.java b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ListTransformer.java index fe30cbc14e4..dc6c4befe53 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ListTransformer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ListTransformer.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.sync_system.data_transformers.ValueTransformer; import com.gregtechceu.gtceu.api.sync_system.data_transformers.ValueTransformers; -import com.gregtechceu.gtceu.utils.data.TagCompatibilityFixer; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; @@ -52,8 +51,7 @@ public Tag serializeNBT(List value, ValueTransformer.TransformerContext(listTag.size()); for (var t : listTag) { - T val = getElemTransformer(context).deserializeNBT(TagCompatibilityFixer.stripLDLibPayloadWrapper(t), - getInnerElemContext(null, context)); + T val = getElemTransformer(context).deserializeNBT(t, getInnerElemContext(null, context)); if (val != null) current.add(val); } return current; diff --git a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ObjectArrayTransformer.java b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ObjectArrayTransformer.java index dd767bbd9fd..2d1c0b6c25d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ObjectArrayTransformer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/ObjectArrayTransformer.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.sync_system.data_transformers.collections; import com.gregtechceu.gtceu.api.sync_system.data_transformers.ValueTransformer; -import com.gregtechceu.gtceu.utils.data.TagCompatibilityFixer; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; @@ -50,8 +49,7 @@ public Tag serializeNBT(T[] value, ValueTransformer.TransformerContext cont current = Arrays.copyOf(current, listTag.size()); } for (int i = 0; i < listTag.size(); i++) { - T result = elementTransformer.deserializeNBT(TagCompatibilityFixer.stripLDLibPayloadWrapper(listTag.get(i)), - getInnerElemContext(current[i], context)); + T result = elementTransformer.deserializeNBT(listTag.get(i), getInnerElemContext(current[i], context)); if (result == null) return current; current[i] = result; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/SetTransformer.java b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/SetTransformer.java index c3c0b94ecb8..6fbabde4cf4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/SetTransformer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/collections/SetTransformer.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.sync_system.data_transformers.ValueTransformer; import com.gregtechceu.gtceu.api.sync_system.data_transformers.ValueTransformers; -import com.gregtechceu.gtceu.utils.data.TagCompatibilityFixer; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; @@ -53,8 +52,7 @@ public Set deserializeNBT(Tag tag, ValueTransformer.TransformerContext if (current != null) current.clear(); else current = new ObjectOpenHashSet<>(); for (Tag elementTag : listTag) { - T value = getElemTransformer(context).deserializeNBT( - TagCompatibilityFixer.stripLDLibPayloadWrapper(elementTag), getInnerElemContext(null, context)); + T value = getElemTransformer(context).deserializeNBT(elementTag, getInnerElemContext(null, context)); if (value != null) current.add(value); } return current; diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java index c715e1bdcb1..4fc17286f98 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.GTAttributeModifierIds; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.compat.EUToFEProvider; @@ -13,8 +12,6 @@ import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.data.medicalcondition.Symptom; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; import com.gregtechceu.gtceu.api.item.armor.ArmorUtils; import com.gregtechceu.gtceu.api.item.armor.ModularArmorItem; @@ -22,7 +19,6 @@ import com.gregtechceu.gtceu.api.item.module.IModularItem; import com.gregtechceu.gtceu.api.item.module.ModuleContext; import com.gregtechceu.gtceu.api.item.module.TieredAttributeItemModule; -import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; @@ -34,8 +30,6 @@ 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.GTDamageTypes; -import com.gregtechceu.gtceu.common.data.machines.GTAEMachines; import com.gregtechceu.gtceu.common.fluid.potion.BottleItemFluidHandler; import com.gregtechceu.gtceu.common.fluid.potion.PotionItemFluidHandler; import com.gregtechceu.gtceu.common.item.armor.IJetpack; @@ -64,8 +58,6 @@ import com.gregtechceu.gtceu.integration.map.cache.server.ServerCache; import com.gregtechceu.gtceu.utils.TaskHandler; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.DamageTypeTags; @@ -83,9 +75,7 @@ import net.minecraft.world.item.*; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.material.FlowingFluid; import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.event.*; @@ -102,20 +92,11 @@ import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.MissingMappingsEvent; import com.google.common.collect.ImmutableList; import com.mojang.datafixers.util.Either; -import com.tterrag.registrate.util.entry.BlockEntry; -import com.tterrag.registrate.util.entry.ItemEntry; -import java.util.Set; import java.util.function.UnaryOperator; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static com.gregtechceu.gtceu.utils.FormattingUtil.toLowerCaseUnderscore; @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class CommonEventListener { @@ -648,296 +629,4 @@ public static void modifyBreakSpeed(PlayerEvent.BreakSpeed event) { event.setNewSpeed(event.getNewSpeed() + event.getNewSpeed() * miningFatigueModifier); } } - - /** Migrate Legacy GT Molten fluids, strictly blind to addons to allow them to fail loudly. */ - private static final Set LEGACY_MOLTEN_MATERIALS = Set.of( - "bismuth_bronze", - "black_bronze", - "black_steel", - "blue_steel", - "enriched_naquadah_trinium_europium_duranide", - "gallium_arsenide", - "hastelloy_c_276", - "hastelloy_x", - "hsla_steel", - "hsse", - "hssg", - "hsss", - "incoloy_ma_956", - "indium_tin_barium_titanium_cuprate", - "kanthal", - "magnesium_diboride", - "manganese_phosphide", - "maraging_steel_300", - "mercury_barium_calcium_cuprate", - "molybdenum_disilicide", - "naquadah_alloy", - "nichrome", - "niobium_nitride", - "niobium_titanium", - "osmiridium", - "red_steel", - "rhodium_plated_palladium", - "rose_gold", - "rtm_alloy", - "ruridit", - "ruthenium_trinium_americium_neutronate", - "samarium_iron_arsenic_oxide", - "stainless_steel", - "stellite_100", - "sterling_silver", - "tantalum_carbide", - "titanium_carbide", - "titanium_tungsten_carbide", - "tungsten_carbide", - "tungsten_steel", - "ultimet", - "uranium_rhodium_dinaquadide", - "uranium_triplatinum", - "vanadium_gallium", - "vanadium_steel", - "watertight_steel", - "yttrium_barium_cuprate", - "zeron_100"); - - private static void remapLegacyMoltenFluids(MissingMappingsEvent event) { - event.getMappings(Registries.FLUID, GTCEu.MOD_ID).forEach(mapping -> { - String path = mapping.getKey().getPath(); - boolean flowing = path.startsWith("flowing_"); - String materialName = legacyMoltenMaterial(flowing ? path.substring("flowing_".length()) : path); - if (materialName == null) return; - var liquid = GTMaterials.get(materialName).getFluid(FluidStorageKeys.LIQUID); - if (flowing && liquid instanceof FlowingFluid fluid) { - mapping.remap(fluid.getFlowing()); - } else if (!flowing && liquid != null) { - mapping.remap(liquid); - } else { - mapping.warn(); - } - }); - event.getMappings(Registries.ITEM, GTCEu.MOD_ID).forEach(mapping -> { - String path = mapping.getKey().getPath(); - if (!path.endsWith("_bucket")) return; - String materialName = legacyMoltenMaterial(path.substring(0, path.length() - "_bucket".length())); - if (materialName == null) return; - var liquid = GTMaterials.get(materialName).getFluid(FluidStorageKeys.LIQUID); - if (liquid != null && liquid.getBucket() != Items.AIR) { - mapping.remap(liquid.getBucket()); - } else { - mapping.warn(); - } - }); - event.getMappings(ForgeRegistries.Keys.FLUID_TYPES, GTCEu.MOD_ID).forEach(mapping -> { - String materialName = legacyMoltenMaterial(mapping.getKey().getPath()); - if (materialName == null) return; - var liquid = GTMaterials.get(materialName).getFluid(FluidStorageKeys.LIQUID); - if (liquid != null) mapping.remap(liquid.getFluidType()); - else mapping.warn(); - }); - // We never defined placable moltens, no need to handle them! - } - - private static String legacyMoltenMaterial(String path) { - if (!path.startsWith("molten_")) return null; - String materialName = path.substring("molten_".length()); - return LEGACY_MOLTEN_MATERIALS.contains(materialName) ? materialName : null; - } - - @SubscribeEvent - public static void remapIds(MissingMappingsEvent event) { - remapLegacyMoltenFluids(event); - event.getMappings(Registries.BLOCK, GTCEu.MOD_ID).forEach(mapping -> { - if (mapping.getKey().equals(GTCEu.id("tungstensteel_coil_block"))) { - mapping.remap(GTBlocks.COIL_RTMALLOY.get()); - } - if (mapping.getKey().equals(GTCEu.id("steam_miner"))) { - mapping.remap(GTMachines.STEAM_MINER.first().getBlock()); - } - }); - event.getMappings(Registries.ITEM, GTCEu.MOD_ID).forEach(mapping -> { - - if (mapping.getKey().equals(GTCEu.id("nanomuscle_helmet"))) { - mapping.remap(GTItems.NANO_HELMET.get()); - } - - if (mapping.getKey().equals(GTCEu.id("nanomuscle_chestplate"))) { - mapping.remap(GTItems.NANO_CHESTPLATE.get()); - } - - if (mapping.getKey().equals(GTCEu.id("advanced_nanomuscle_chestplate"))) { - mapping.remap(GTItems.NANO_CHESTPLATE.get()); - } - - if (mapping.getKey().equals(GTCEu.id("nanomuscle_leggings"))) { - mapping.remap(GTItems.NANO_LEGGINGS.get()); - } - - if (mapping.getKey().equals(GTCEu.id("nanomuscle_boots"))) { - mapping.remap(GTItems.NANO_BOOTS.get()); - } - - if (mapping.getKey().equals(GTCEu.id("quarktech_helmet"))) { - mapping.remap(GTItems.QUANTUM_HELMET.get()); - - } - - if (mapping.getKey().equals(GTCEu.id("quarktech_chestplate"))) { - mapping.remap(GTItems.QUANTUM_CHESTPLATE.get()); - } - - if (mapping.getKey().equals(GTCEu.id("advanced_quarktech_chestplate"))) { - mapping.remap(GTItems.QUANTUM_CHESTPLATE.get()); - } - - if (mapping.getKey().equals(GTCEu.id("quarktech_leggings"))) { - mapping.remap(GTItems.QUANTUM_LEGGINGS.get()); - } - - if (mapping.getKey().equals(GTCEu.id("quarktech_boots"))) { - mapping.remap(GTItems.QUANTUM_BOOTS.get()); - } - - if (mapping.getKey().equals(GTCEu.id("tungstensteel_coil_block"))) { - mapping.remap(GTBlocks.COIL_RTMALLOY.get().asItem()); - } - if (mapping.getKey().equals(GTCEu.id("steam_miner"))) { - mapping.remap(GTMachines.STEAM_MINER.first().getItem()); - } - if (mapping.getKey().equals(GTCEu.id("tungstensteel_fluid_cell"))) { - mapping.remap(GTItems.FLUID_CELL_LARGE_TUNGSTEN_STEEL.get().asItem()); - } - String path = mapping.getKey().getPath(); - if (path.matches("[lhi]v_.+_wirecutter")) { - String suffix = "_wirecutter"; - String typeString = path.substring(0, 2) + suffix; // [lhi]v_wirecutter -- tooltype name - String matString = path.substring(3, path.length() - suffix.length()); // material name - - GTToolType type = GTToolType.getTypes().get(typeString); - Material material = GTMaterials.get(matString); - if (type == null || material == null) { - mapping.warn(); - return; - } - var tool = GTMaterialItems.TOOL_ITEMS.get(material, type); - if (tool == null) { - mapping.warn(); - return; - } - mapping.remap(tool.asItem()); - } - }); - event.getMappings(Registries.BLOCK_ENTITY_TYPE, GTCEu.MOD_ID).forEach(mapping -> { - if (mapping.getKey().equals(GTCEu.id("steam_miner"))) { - mapping.remap(GTMachines.STEAM_MINER.first().getBlockEntityType()); - } - }); - - event.getMappings(Registries.BLOCK, "gregiceng").forEach(mapping -> { - String path = mapping.getKey().getPath(); - switch (path) { - case "stocking_bus", "adv_stocking_bus" -> mapping - .remap(GTAEMachines.STOCKING_IMPORT_BUS_ME.getBlock()); - case "stocking_hatch", "adv_stocking_hatch" -> mapping - .remap(GTAEMachines.STOCKING_IMPORT_HATCH_ME.getBlock()); - case "crafting_io_buffer" -> mapping.remap(GTAEMachines.ME_PATTERN_BUFFER.getBlock()); - case "crafting_io_slave" -> mapping.remap(GTAEMachines.ME_PATTERN_BUFFER_PROXY.getBlock()); - } - if (path.contains("input_buffer")) { - ResourceLocation newName = GTCEu.id(path.replace("input_buffer", "dual_input_hatch")); - if (mapping.getRegistry().containsKey(newName)) { - mapping.remap(mapping.getRegistry().getValue(newName)); - } else { - mapping.remap(GTMachines.DUAL_IMPORT_HATCH[GTValues.LuV].getBlock()); - } - } else if (path.contains("output_buffer")) { - ResourceLocation newName = GTCEu.id(path.replace("output_buffer", "dual_output_hatch")); - if (mapping.getRegistry().containsKey(newName)) { - mapping.remap(mapping.getRegistry().getValue(newName)); - } else { - mapping.remap(GTMachines.DUAL_EXPORT_HATCH[GTValues.LuV].getBlock()); - } - } - }); - event.getMappings(Registries.BLOCK_ENTITY_TYPE, "gregiceng").forEach(mapping -> { - String path = mapping.getKey().getPath(); - switch (path) { - case "stocking_bus", "adv_stocking_bus" -> mapping - .remap(GTAEMachines.STOCKING_IMPORT_BUS_ME.getBlockEntityType()); - case "stocking_hatch", "adv_stocking_hatch" -> mapping - .remap(GTAEMachines.STOCKING_IMPORT_HATCH_ME.getBlockEntityType()); - case "crafting_io_buffer" -> mapping.remap(GTAEMachines.ME_PATTERN_BUFFER.getBlockEntityType()); - case "crafting_io_slave" -> mapping.remap(GTAEMachines.ME_PATTERN_BUFFER_PROXY.getBlockEntityType()); - } - if (path.contains("input_buffer")) { - ResourceLocation newName = GTCEu.id(path.replace("input_buffer", "dual_input_hatch")); - if (mapping.getRegistry().containsKey(newName)) { - mapping.remap(mapping.getRegistry().getValue(newName)); - } else { - mapping.remap(GTMachines.DUAL_IMPORT_HATCH[GTValues.LuV].getBlockEntityType()); - } - } else if (path.contains("output_buffer")) { - ResourceLocation newName = GTCEu.id(path.replace("output_buffer", "dual_output_hatch")); - if (mapping.getRegistry().containsKey(newName)) { - mapping.remap(mapping.getRegistry().getValue(newName)); - } else { - mapping.remap(GTMachines.DUAL_EXPORT_HATCH[GTValues.LuV].getBlockEntityType()); - } - } - }); - event.getMappings(Registries.ITEM, "gregiceng").forEach(mapping -> { - String path = mapping.getKey().getPath(); - switch (path) { - case "stocking_bus", "adv_stocking_bus" -> mapping.remap(GTAEMachines.STOCKING_IMPORT_BUS_ME.getItem()); - case "stocking_hatch", "adv_stocking_hatch" -> mapping - .remap(GTAEMachines.STOCKING_IMPORT_HATCH_ME.getItem()); - case "crafting_io_buffer" -> mapping.remap(GTAEMachines.ME_PATTERN_BUFFER.getItem()); - case "crafting_io_slave" -> mapping.remap(GTAEMachines.ME_PATTERN_BUFFER_PROXY.getItem()); - } - if (path.contains("input_buffer")) { - ResourceLocation newName = GTCEu.id(path.replace("input_buffer", "dual_input_hatch")); - if (mapping.getRegistry().containsKey(newName)) { - mapping.remap(mapping.getRegistry().getValue(newName)); - } else { - mapping.remap(GTMachines.DUAL_IMPORT_HATCH[GTValues.LuV].getItem()); - } - } else if (path.contains("output_buffer")) { - ResourceLocation newName = GTCEu.id(path.replace("output_buffer", "dual_output_hatch")); - if (mapping.getRegistry().containsKey(newName)) { - mapping.remap(mapping.getRegistry().getValue(newName)); - } else { - mapping.remap(GTMachines.DUAL_EXPORT_HATCH[GTValues.LuV].getItem()); - } - } - }); - - for (TagPrefix prefix : GTRegistries.TAG_PREFIXES) { - 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()); - if (matcher.matches()) { - BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, - GTRegistries.MATERIALS.get(GTCEu.id(matcher.group(1)))); - if (block != null && block.isPresent()) { - mapping.remap(block.get()); - } - } - }); - event.getMappings(Registries.ITEM, GTCEu.MOD_ID).forEach(mapping -> { - Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); - if (matcher.matches()) { - Material material = GTRegistries.MATERIALS.get(GTCEu.id(matcher.group(1))); - if (material == null) return; - BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, material); - if (block != null && block.isPresent()) { - mapping.remap(block.asItem()); - } else { - ItemEntry item = GTMaterialItems.MATERIAL_ITEMS.get(prefix, material); - if (item != null && item.isPresent()) mapping.remap(item.asItem()); - } - } - }); - } - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 0a5d5ee13cf..b65f159f02a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -30,6 +30,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.common.data.*; +import com.gregtechceu.gtceu.common.data.datafixer.GTDataFixers; import com.gregtechceu.gtceu.common.data.loot.*; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.data.materials.AlloyBlastPropertyAddition; @@ -180,6 +181,8 @@ public static void init() { MachineOwner.init(); SpoilableBehavior.init(modBus); + GTDataFixers.init(); + FusionReactorMachine.registerFusionTier(GTValues.LuV, " (MKI)"); FusionReactorMachine.registerFusionTier(GTValues.ZPM, " (MKII)"); FusionReactorMachine.registerFusionTier(GTValues.UV, " (MKIII)"); diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/StoneTypes.java b/src/main/java/com/gregtechceu/gtceu/common/block/StoneTypes.java index 96706d4a420..8ec9e8610bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/StoneTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/StoneTypes.java @@ -22,7 +22,7 @@ public enum StoneTypes implements StringRepresentable { DEEPSLATE("deepslate", MapColor.DEEPSLATE, true, () -> Blocks.DEEPSLATE::defaultBlockState, GTMaterials.Deepslate, false), RED_GRANITE("red_granite", MapColor.COLOR_RED, true, () -> GTBlocks.RED_GRANITE::getDefaultState, - GTMaterials.GraniteRed), + GTMaterials.RedGranite), MARBLE("marble", MapColor.QUARTZ, true, () -> GTBlocks.MARBLE::getDefaultState, GTMaterials.Marble), ANDESITE("andesite", MapColor.STONE, true, () -> Blocks.ANDESITE::defaultBlockState, GTMaterials.Andesite, false), GRANITE("granite", MapColor.DIRT, true, () -> Blocks.GRANITE::defaultBlockState, GTMaterials.Granite, false), diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java index 3f452d3633c..6722bcc1c1b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/SurfaceRockBlock.java @@ -178,11 +178,11 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder - .fluid(GTMaterials.OilHeavy::getFluid) + .fluid(GTMaterials.HeavyOil::getFluid) .weight(15) .yield(100, 200) .depletionAmount(1) @@ -36,7 +36,7 @@ public class GTBedrockFluids { .dimensions(overworld())); public static BedrockFluidDefinition LIGHT_OIL = create(GTCEu.id("light_oil_deposit"), builder -> builder - .fluid(GTMaterials.OilLight::getFluid) + .fluid(GTMaterials.LightOil::getFluid) .weight(25) .yield(175, 300) .depletionAmount(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 75ea4194c00..11e98eae74c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -243,7 +243,7 @@ private static void registerDuctPipeBlock(int index) { GTCEu.id("block/casings/solid/machine_casing_inert_ptfe")); public static final BlockEntry CASING_HSSE_STURDY = createCasingBlock("sturdy_machine_casing", GTCEu.id("block/casings/solid/machine_casing_sturdy_hsse")); - public static final BlockEntry CASING_PALLADIUM_SUBSTATION = createCasingBlock("palladium_substation", + public static final BlockEntry CASING_PALLADIUM_SUBSTATION = createCasingBlock("palladium_substation_casing", GTCEu.id("block/casings/solid/machine_casing_palladium_substation")); public static final BlockEntry CASING_TEMPERED_GLASS = createGlassCasingBlock("tempered_glass", GTCEu.id("block/casings/transparent/tempered_glass"), () -> RenderType::translucent); @@ -277,14 +277,14 @@ private static void registerDuctPipeBlock(int index) { } // Assembly Line - public static final BlockEntry CASING_GRATE = createCasingBlock("assembly_line_grating", + public static final BlockEntry CASING_ASSEMBLY_GRATE = createCasingBlock("assembly_line_grating", GTCEu.id("block/casings/pipe/machine_casing_grate")); - public static final BlockEntry CASING_ASSEMBLY_CONTROL = createCasingBlock("assembly_line_casing", + public static final BlockEntry CASING_ASSEMBLY_CONTROL = createCasingBlock("assembly_control_casing", GTCEu.id("block/casings/mechanic/machine_casing_assembly_control")); 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"); + public static final BlockEntry CASING_ASSEMBLY_UNIT = createActiveCasing("assembly_line_unit", + "block/variant/assembly_line_unit"); // Gear Boxes public static final BlockEntry CASING_BRONZE_GEARBOX = createCasingBlock("bronze_gearbox", @@ -299,7 +299,7 @@ private static void registerDuctPipeBlock(int index) { GTCEu.id("block/casings/gearbox/machine_casing_gearbox_tungstensteel")); // Turbine Casings - public static final BlockEntry CASING_STEEL_TURBINE = createCasingBlock("steel_turbine_casing", + public static final BlockEntry CASING_MAGNALIUM_TURBINE = createCasingBlock("magnalium_turbine_casing", GTCEu.id("block/casings/mechanic/machine_casing_turbine_steel")); public static final BlockEntry CASING_TITANIUM_TURBINE = createCasingBlock("titanium_turbine_casing", GTCEu.id("block/casings/mechanic/machine_casing_turbine_titanium")); @@ -370,9 +370,9 @@ 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("bricked_bronze_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"); + public static final BlockEntry STEEL_BRICKS_HULL = createSteamCasing("bricked_wrought_iron_casing", "bricked_steel"); // Heating Coils public static final BlockEntry COIL_CUPRONICKEL = createCoilBlock(CoilBlock.CoilType.CUPRONICKEL); 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 2b40544a542..b5f1eb80462 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -169,7 +169,7 @@ public static void init() { rock.setIgnored(Marble, GTMemoizer.memoizeBlockSupplier(() -> GTBlocks.MARBLE.get())); rock.setIgnored(Granite, Blocks.GRANITE); rock.setIgnored(Granite, Blocks.POLISHED_GRANITE); - rock.setIgnored(GraniteRed, GTMemoizer.memoizeBlockSupplier(() -> GTBlocks.RED_GRANITE.get())); + rock.setIgnored(RedGranite, GTMemoizer.memoizeBlockSupplier(() -> GTBlocks.RED_GRANITE.get())); rock.setIgnored(Andesite, Blocks.ANDESITE); rock.setIgnored(Andesite, Blocks.POLISHED_ANDESITE); rock.setIgnored(Diorite, Blocks.DIORITE); @@ -744,7 +744,7 @@ private static void excludeAllGemsButNormal(Material material) { public static Material CyclohexanoneOxime; public static Material Caprolactam; public static Material PlatinumSludgeResidue; - public static Material PalladiumRaw; + public static Material RawPalladium; public static Material RarestMetalMixture; public static Material AmmoniumChloride; public static Material AcidicOsmiumSolution; @@ -781,9 +781,9 @@ private static void excludeAllGemsButNormal(Material material) { public static Material ConstructionFoam; public static Material Oil; - public static Material OilHeavy; + public static Material HeavyOil; public static Material RawOil; - public static Material OilLight; + public static Material LightOil; public static Material NaturalGas; public static Material SulfuricHeavyFuel; public static Material HeavyFuel; @@ -923,7 +923,7 @@ private static void excludeAllGemsButNormal(Material material) { public static Material GarnetYellow; public static Material Marble; public static Material Deepslate; - public static Material GraniteRed; + public static Material RedGranite; public static Material Blackstone; public static Material VanadiumMagnetite; public static Material QuartzSand; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTDataFixers.java b/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTDataFixers.java new file mode 100644 index 00000000000..af1a5a99ffd --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTDataFixers.java @@ -0,0 +1,246 @@ +package com.gregtechceu.gtceu.common.data.datafixer; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.datafixer.DataFixHelper; +import com.gregtechceu.gtceu.api.datafixer.FixedDataFixerBuilder; +import com.gregtechceu.gtceu.api.datafixer.LazyDataFixer; +import com.gregtechceu.gtceu.api.datafixer.fixes.FluidRenameFix; +import com.gregtechceu.gtceu.api.datafixer.fixes.MaterialRenameFix; +import com.gregtechceu.gtceu.common.datafixer.fixes.*; +import com.gregtechceu.gtceu.common.datafixer.schemas.*; +import com.gregtechceu.gtceu.config.ConfigHolder; + +import net.minecraft.SharedConstants; +import net.minecraft.util.datafix.fixes.*; +import net.minecraft.util.datafix.schemas.NamespacedSchema; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.DataFixUtils; +import com.mojang.datafixers.DataFixer; +import com.mojang.datafixers.schemas.Schema; +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.function.BiFunction; +import java.util.function.UnaryOperator; +import java.util.regex.Pattern; + +/** + * Register new datafixers in {@link #addFixers(FixedDataFixerBuilder)}. Remember to bump {@link GTCEu#GT_DATA_VERSION} + * in + * every PR that changes existing save data and add a schema & fixer for it here. + * + *

+ * For changes that do not change named types or add new (block) entities, use {@link #SAME_NAMESPACED} for the schema. + * Register machines (and other block entities) in a schema overriding {@link Schema#registerBlockEntities}. + * + *

+ *

DO NOT ADD NEW MACHINES TO {@link V0}!! THEY SHOULD BE IN NEW, CORRECTLY VERSIONED, SCHEMAS!!

+ * Reference vanilla schemas for more information on that, examples linked below. Also check how they're used in + * vanilla's {@link net.minecraft.util.datafix.DataFixers DataFixers}.
+ * {@link net.minecraft.util.datafix.schemas.V1460 V1460}, {@link net.minecraft.util.datafix.schemas.V1906 V1906}
+ * Also, always add a {@link AddNewChoices} fixer of the appropriate type(s) when adding new types to a schema. + * + *

+ * Note how only fields that use other registered (named) types (such as item/fluid stacks) are defined. The same should + * be done for all types.
+ * If the type doesn't depend on any named types, register it with {@link Schema#register} like this: + * + *

{@code
+ * 
+ * public Map> registerBlockEntities(Schema schema) {
+ *     Map> map = super.registerBlockEntities(schema);
+ *     // ...
+ *     schema.register(map, "my_id_here", () -> traitHolder(schema));
+ *     // ...
+ *     return map;
+ * }
+ * }
+ * + * We don't use {@link Schema#registerSimple} because we need to register the trait holder type for all machines. + */ +@SuppressWarnings("SameParameterValue") +public class GTDataFixers { + + private static final BiFunction SAME_NAMESPACED = NamespacedSchema::new; + + @Getter + private static final @Nullable DataFixer dataFixer = createFixer(SharedConstants.DATA_FIX_TYPES_TO_OPTIMIZE); + + public static void init() {} + + private static @Nullable DataFixer createFixer(final Set typesToOptimize) { + if (!ConfigHolder.INSTANCE.compat.doDataFixers) { + return null; + } + + DataFixHelper.LOGGER.info("Registering data fixers"); + + return new LazyDataFixer(() -> { + try { + FixedDataFixerBuilder builder = new FixedDataFixerBuilder(GTCEu.GT_DATA_VERSION); + addFixers(builder); + + if (typesToOptimize.isEmpty()) { + return builder.buildUnoptimized(); + } else { + Executor executor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder() + .setNameFormat("GTCEu Datafixer Bootstrap").setDaemon(true).setPriority(1).build()); + return builder.buildOptimized(typesToOptimize, executor); + } + } catch (Exception ex) { + DataFixHelper.LOGGER.warn( + "Failed to initialize! Either someone stopped DFU from initializing, or this Minecraft instance is broken."); + DataFixHelper.LOGGER.warn("Using no-op implementation."); + DataFixHelper.LOGGER.warn("Full error: ", ex); + + return null; + } + }); + } + + public static void addFixers(FixedDataFixerBuilder builder) { + builder.addSchema(new V0(DataFixUtils.makeKey(0), DataFixHelper.getLatestVanillaSchema())); + + Schema v1 = builder.addSchema(1, V1::new); + builder.addFixer(new AddNewChoices(v1, "Added High Pressure Steam Miner", References.BLOCK_ENTITY)); + createBlockItemRenameFix(builder, v1, "Rename Tungstensteel Coil Block", + createRenamer("gtceu:tungstensteel_coil_block", "gtceu:rtm_alloy_coil_block")); + + builder.addFixer(ItemRenameFix.create(v1, "Rename Advanced Nanomuscle Chestplate", + createRenamer("gtceu:avanced_nanomuscle_chestplate", "gtceu:advanced_nanomuscle_chestplate"))); + + builder.addFixer(ItemRenameFix.create(v1, "Rename Tungstensteel Fluid Cell", + createRenamer("gtceu:tungstensteel_fluid_cell", "gtceu:tungsten_steel_fluid_cell"))); + + createBlockItemEntityRenameFix(builder, v1, "Rename Low Pressure Steam Miner", + createRenamer("gtceu:steam_miner", "gtceu:lp_steam_miner")); + + builder.addFixer(ItemRenameFix.create(v1, "Rename electric wire cutters", + createRenamer(Pattern.compile("([lhi])v_([a-z0-9/._-]+)_wirecutter"), "$1v_$2_wire_cutter"))); + + // for whatever reason forge registers the milk fluid under MC's namespace + builder.addFixer(FluidRenameFix.create(v1, "Remove GT milk fluid", + createRenamer(Map.of("gtceu:milk", "minecraft:milk", "gtceu:flowing_milk", "minecraft:flowing_milk")))); + builder.addFixer(ItemRenameFix.create(v1, "Remove GT milk bucket", + createRenamer("gtceu:milk_bucket", "minecraft:milk_bucket"))); + + // separator + + Schema v2_0 = builder.addSchema(2, SAME_NAMESPACED); + builder.addFixer(new LDLibPayloadWrapperRemovalFix(v2_0)); + builder.addFixer(new AutoOutputTraitFix(v2_0)); + + // separator + + Schema v2_1 = builder.addSchema(2, 1, SAME_NAMESPACED); + builder.addFixer(new UpwardsFacingPropertyFix(v2_1)); + + // separator + + Schema v2_2 = builder.addSchema(2, 2, V2_2::new); + builder.addFixer(new TraitHolderificationFix(v2_2)); + + // separator + + Schema v2_3 = builder.addSchema(2, 3, V2_3::new); + builder.addFixer(new AddNewChoices(v2_3, "Added Welder and Spooler", References.BLOCK_ENTITY)); + builder.addFixer(new ExtruderCastingMoldRemapFix(v2_3)); + // Migrate GT's Molten fluids, ignore addons to allow them to fail loudly + builder.addFixer(BlockRenameFix.create(v2_3, "Remove molten fluid blocks", + createRenamer(RemoveMoltenFluidsFix.REMOVED_BLOCKS))); + builder.addFixer(ItemRenameFix.create(v2_3, "Remove molten fluid buckets", + createRenamer(RemoveMoltenFluidsFix.REMOVED_ITEMS))); + builder.addFixer(FluidRenameFix.create(v2_3, "Remove molten fluids", + createRenamer(RemoveMoltenFluidsFix.REMOVED_FLUIDS))); + // version that doesn't ignore addons: + // createBlockItemFluidRenameFix(builder, v2_3, "Remove molten fluids", + // createRenamer(Pattern.compile("(flowing_)?molten_"), "$1")); + + // separator + + Schema v3_0 = builder.addSchema(3, 0, SAME_NAMESPACED); + // createMaterialRenameFix(builder, v3_0, "Rename uranium to uranium_238", + // createRenamer(Pattern.compile("gtceu:(.*)?uranium"), "gtceu:$1uranium_238")); + // createMaterialRenameFix(builder, v3_0, "Rename uranium_235 to uranium", + // createRenamer(Pattern.compile("gtceu:(.*)uranium_235"), "gtceu:$1uranium")); + createMaterialRenameFix(builder, v3_0, "gtceu:granite_red", "gtceu:red_granite"); + createMaterialRenameFix(builder, v3_0, "gtceu:oil_heavy", "gtceu:heavy_oil"); + createMaterialRenameFix(builder, v3_0, "gtceu:oil_light", "gtceu:light_oil"); + createMaterialRenameFix(builder, v3_0, "gtceu:oil_medium", "gtceu:raw_oil"); + createMaterialRenameFix(builder, v3_0, "gtceu:palladium_raw", "gtceu:raw_palladium"); + + createBlockItemRenameFix(builder, v3_0, "Rename Palladium Substation Casing", + createRenamer("gtceu:palladium_substation", "gtceu:palladium_substation_casing")); + createBlockItemRenameFix(builder, v3_0, "Rename Assembly Control Casing", + createRenamer("gtceu:assembly_line_casing", "gtceu:assembly_control_casing")); + createBlockItemRenameFix(builder, v3_0, "Rename Magnalium Turbine Casing", + createRenamer("gtceu:steel_turbine_casing", "gtceu:magnalium_turbine_casing")); + createBlockItemRenameFix(builder, v3_0, "Rename Bricked Bronze Casing", + createRenamer("gtceu:bronze_brick_casing", "gtceu:bricked_bronze_casing")); + createBlockItemRenameFix(builder, v3_0, "Rename Bricked Wrought Iron Casing", + createRenamer("gtceu:steel_brick_casing", "gtceu:bricked_wrought_iron_casing")); + + // separator + + Schema v3_1 = builder.addSchema(3, 1, V3_1::new); + createBlockItemEntityRenameFix(builder, v3_1, "Rename Rotary Hearth Furnace", + createRenamer("gtceu:mega_blast_furnace", "gtceu:rotary_hearth_furnace")); + createBlockItemEntityRenameFix(builder, v3_1, "Rename Bulk Blast Chiller", + createRenamer("gtceu:mega_vacuum_freezer", "gtceu:bulk_blast_chiller")); + } + + private static void createBlockItemRenameFix(FixedDataFixerBuilder builder, Schema schema, String name, + UnaryOperator renamer) { + builder.addFixer(ItemRenameFix.create(schema, name + " for item", renamer)); + // BlockRenameFix adds the " for block" and " for block_state" parts + builder.addFixer(BlockRenameFix.create(schema, name, renamer)); + } + + private static void createBlockItemFluidRenameFix(FixedDataFixerBuilder builder, Schema schema, String name, + UnaryOperator renamer) { + createBlockItemRenameFix(builder, schema, name, renamer); + builder.addFixer(FluidRenameFix.create(schema, name + " for fluid", renamer)); + } + + /** + * create and add all required fixes to rename a material. + * + * @param builder the DFU builder instance + * @param schema the current version's schema + * @param oldName the material's old name INCLUDING the namespace + * @param newName the material's new name INCLUDING the namespace + */ + private static void createMaterialRenameFix(FixedDataFixerBuilder builder, Schema schema, + String oldName, String newName) { + final UnaryOperator renamer = MaterialRenameHelper.createRenamer(oldName, newName); + final String dataFixName = "Rename " + oldName; + + createBlockItemFluidRenameFix(builder, schema, dataFixName, renamer); + builder.addFixer(MaterialRenameFix.create(schema, dataFixName + " for material", renamer)); + } + + private static void createBlockItemEntityRenameFix(FixedDataFixerBuilder builder, Schema schema, String name, + UnaryOperator renamer) { + createBlockItemRenameFix(builder, schema, name, renamer); + builder.addFixer(BlockEntityRenameFix.create(schema, name + " for block_entity", renamer)); + } + + private static UnaryOperator createRenamer(String oldName, String newName) { + return id -> Objects.equals(NamespacedSchema.ensureNamespaced(id), oldName) ? newName : id; + } + + private static UnaryOperator createRenamer(Map renameMap) { + return id -> renameMap.getOrDefault(NamespacedSchema.ensureNamespaced(id), id); + } + + private static UnaryOperator createRenamer(Pattern check, String replaceWith) { + return id -> check.matcher(NamespacedSchema.ensureNamespaced(id)).replaceAll(replaceWith); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTReferences.java b/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTReferences.java new file mode 100644 index 00000000000..2ed999039f5 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/GTReferences.java @@ -0,0 +1,13 @@ +package com.gregtechceu.gtceu.common.data.datafixer; + +import com.mojang.datafixers.DSL; + +public class GTReferences { + + public static final DSL.TypeReference MATERIAL_NAME = () -> "material_name"; + + public static final DSL.TypeReference FLUID_STACK = () -> "fluid_stack"; + public static final DSL.TypeReference FLUID_NAME = () -> "fluid_name"; + + public static final DSL.TypeReference FORGE_REGISTRY_DATA = () -> "forge_registry_data"; +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/package-info.java b/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/package-info.java new file mode 100644 index 00000000000..d3f47b5873d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/datafixer/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.common.data.datafixer; + +import org.jetbrains.annotations.NotNullByDefault; 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 a330682b59f..272283562a5 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 @@ -336,7 +336,7 @@ public static void init() {} .and(Predicates.abilities(INPUT_ENERGY).setExactLimit(1)) .and(Predicates.autoAbilities(true, false, true))) .where('T', Predicates.blocks(CASING_TEMPERED_GLASS.get())) - .where('G', Predicates.blocks(CASING_GRATE.get())) + .where('G', Predicates.blocks(CASING_ASSEMBLY_GRATE.get())) .where('P', blocks(CASING_TUNGSTENSTEEL_PIPE.get())) .where('A', Predicates.air()) .where('#', Predicates.any()) @@ -399,7 +399,7 @@ public static void init() {} .and(Predicates.autoAbilities(definition.getRecipeTypes())) .and(Predicates.autoAbilities(true, false, true))) .where('G', blocks(CASING_TEMPERED_GLASS.get())) - .where('K', blocks(CASING_GRATE.get())) + .where('K', blocks(CASING_ASSEMBLY_GRATE.get())) .where('A', Predicates.air()) .build()) .workableCasingModel(GTCEu.id("block/casings/gcym/laser_safe_engraving_casing"), @@ -426,7 +426,7 @@ public static void init() {} .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(50) .and(Predicates.autoAbilities(definition.getRecipeTypes())) .and(Predicates.autoAbilities(true, false, true))) - .where('K', blocks(CASING_GRATE.get())) + .where('K', blocks(CASING_ASSEMBLY_GRATE.get())) .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) @@ -802,8 +802,8 @@ public static void init() {} .register(); // spotless:off - public final static MultiblockMachineDefinition MEGA_BLAST_FURNACE = REGISTRATE - .multiblock("mega_blast_furnace", CoilWorkableElectricMultiblockMachine::new) + public final static MultiblockMachineDefinition ROTARY_HEARTH_FURNACE = REGISTRATE + .multiblock("rotary_hearth_furnace", CoilWorkableElectricMultiblockMachine::new) .langValue("Rotary Hearth Furnace") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", @@ -850,7 +850,7 @@ public static void init() {} .build(); }) .workableCasingModel(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), - GTCEu.id("block/multiblock/gcym/mega_blast_furnace")) + GTCEu.id("block/multiblock/gcym/rotary_hearth_furnace")) .additionalDisplay((controller, syncManager) -> { if (!(controller instanceof CoilWorkableElectricMultiblockMachine coilMachine)) return Collections.emptyList(); @@ -871,8 +871,8 @@ public static void init() {} }) .register(); - public final static MultiblockMachineDefinition MEGA_VACUUM_FREEZER = REGISTRATE - .multiblock("mega_vacuum_freezer", WorkableElectricMultiblockMachine::new) + public final static MultiblockMachineDefinition BULK_BLAST_CHILLER = REGISTRATE + .multiblock("bulk_blast_chiller", WorkableElectricMultiblockMachine::new) .langValue("Bulk Blast Chiller") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", @@ -902,7 +902,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), - GTCEu.id("block/multiblock/gcym/mega_vacuum_freezer")) + GTCEu.id("block/multiblock/gcym/bulk_blast_chiller")) .register(); // spotless:on } 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 99c86ec5e12..e5c7f4fe433 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 @@ -432,11 +432,11 @@ public class GTMultiMachines { blocks(CASING_STEEL_SOLID.get()).and(Predicates.abilities(PartAbility.INPUT_ENERGY) .setGlobalMinMax(1, 2))) .where('I', blocks(ITEM_IMPORT_BUS[0].getBlock())) - .where('G', blocks(CASING_GRATE.get())) + .where('G', blocks(CASING_ASSEMBLY_GRATE.get())) .where('A', blocks(CASING_ASSEMBLY_CONTROL.get())) .where('R', blocks(CASING_LAMINATED_GLASS.get())) - .where('T', blocks(CASING_ASSEMBLY_LINE.get())) - .where('D', blocks(CASING_GRATE.get()).and(dataHatchPredicate())) + .where('T', blocks(CASING_ASSEMBLY_UNIT.get())) + .where('D', blocks(CASING_ASSEMBLY_GRATE.get()).and(dataHatchPredicate())) .where('#', Predicates.any()) .build()) .partSorter(AssemblyLineMachine::partSorter) @@ -733,7 +733,7 @@ public class GTMultiMachines { "steam_large_turbine", HV, GTRecipeTypes.STEAM_TURBINE_FUELS, - CASING_STEEL_TURBINE, CASING_STEEL_GEARBOX, + CASING_MAGNALIUM_TURBINE, CASING_STEEL_GEARBOX, GTCEu.id("block/casings/mechanic/machine_casing_turbine_steel"), GTCEu.id("block/multiblock/generator/large_steam_turbine"), false); 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 4ece776f76b..a7036655e2a 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 @@ -198,7 +198,7 @@ public static void register() { .components(SiliconDioxide, 4, Biotite, 1) .buildAndRegister(); - GraniteRed = new Material.Builder(GTCEu.id("granite_red")) + RedGranite = new Material.Builder(GTCEu.id("red_granite")) .dust() .color(0xFF0080).iconSet(ROUGH) .flags(NO_SMASHING) @@ -461,7 +461,7 @@ public static void register() { .components(SiliconDioxide, 2, Gold, 3) .buildAndRegister(); - PalladiumRaw = new Material.Builder(GTCEu.id("palladium_raw")) + RawPalladium = new Material.Builder(GTCEu.id("raw_palladium")) .dust() .color(0x5d4e1a).secondaryColor(0x33352d).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) 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 316d5730007..2e597c19f56 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 @@ -308,22 +308,19 @@ public static void register() { .flags(STICKY, FLAMMABLE) .buildAndRegister(); - OilHeavy = new Material.Builder(GTCEu.id("oil_heavy")) - .langValue("Heavy Oil") + HeavyOil = new Material.Builder(GTCEu.id("heavy_oil")) .liquid(new FluidBuilder().block().customStill()) .color(0x0A0A0A) .flags(STICKY, FLAMMABLE) .buildAndRegister(); - RawOil = new Material.Builder(GTCEu.id("oil_medium")) - .langValue("Raw Oil") + RawOil = new Material.Builder(GTCEu.id("raw_oil")) .liquid(new FluidBuilder().block().customStill()) .color(0x0A0A0A) .flags(STICKY, FLAMMABLE) .buildAndRegister(); - OilLight = new Material.Builder(GTCEu.id("oil_light")) - .langValue("Light Oil") + LightOil = new Material.Builder(GTCEu.id("light_oil")) .liquid(new FluidBuilder().block().customStill()) .color(0x0A0A0A) .flags(STICKY, FLAMMABLE) diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/AutoOutputTraitFix.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/AutoOutputTraitFix.java new file mode 100644 index 00000000000..a0fa36e8239 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/AutoOutputTraitFix.java @@ -0,0 +1,45 @@ +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import net.minecraft.util.datafix.fixes.References; + +import com.mojang.datafixers.*; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; + +import java.util.Map; + +import static com.mojang.datafixers.DSL.*; + +public class AutoOutputTraitFix extends DataFix { + + private static final Map FIELD_RENAMES = Map.of( + "outputFacingItems", "itemOutputDirection", + "outputFacingFluids", "fluidOutputDirection", + "autoOutputItems", "autoOutputItems", + "autoOutputFluids", "autoOutputFluids", + "allowInputFromOutputSideItems", "allowItemInputFromOutputSide", + "allowInputFromOutputSideFluids", "allowFluidInputFromOutputSide"); + + public AutoOutputTraitFix(Schema outputSchema) { + super(outputSchema, false); + } + + @Override + protected TypeRewriteRule makeRule() { + return this.fixTypeEverywhereTyped("AutoOutputTraitFix", this.getInputSchema().getType(References.BLOCK_ENTITY), + typed -> typed.update(remainderFinder(), dynamic -> { + Dynamic traitValue = dynamic.emptyMap(); + for (var entry : FIELD_RENAMES.entrySet()) { + String oldName = entry.getKey(); + String newName = entry.getValue(); + + var oldField = dynamic.get(oldName).result(); + if (oldField.isPresent()) { + traitValue = traitValue.set(newName, oldField.get()); + dynamic = dynamic.remove(oldName); + } + } + return dynamic.set("autoOutput", traitValue); + })); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/ExtruderCastingMoldRemapFix.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/ExtruderCastingMoldRemapFix.java new file mode 100644 index 00000000000..0b3a163ffb9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/ExtruderCastingMoldRemapFix.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import net.minecraft.util.datafix.fixes.ItemRenameFix; + +import com.mojang.datafixers.schemas.Schema; + +import java.util.Set; + +public class ExtruderCastingMoldRemapFix extends ItemRenameFix { + + private static Set REMOVED_MOLDS = Set.of( + "gtceu:rod_extruder_mold", + "gtceu:bolt_extruder_mold", + "gtceu:gear_extruder_mold", + "gtceu:small_gear_extruder_mold", + "gtceu:rotor_extruder_mold" + // "gtceu:rotor_casting_mold" TODO uncomment when this is removed + ); + private static final String REPLACEMENT_ITEM = "gtceu:empty_mold"; + + public ExtruderCastingMoldRemapFix(Schema outputSchema) { + super(outputSchema, "Extruder/Casting Mold Remap Fix"); + } + + @Override + protected String fixItem(String item) { + return REMOVED_MOLDS.contains(item) ? REPLACEMENT_ITEM : item; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/LDLibPayloadWrapperRemovalFix.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/LDLibPayloadWrapperRemovalFix.java new file mode 100644 index 00000000000..1aaed7eab77 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/LDLibPayloadWrapperRemovalFix.java @@ -0,0 +1,59 @@ +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import net.minecraft.util.datafix.fixes.References; + +import com.mojang.datafixers.*; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.Type; +import com.mojang.serialization.Dynamic; + +import java.util.Optional; + +public class LDLibPayloadWrapperRemovalFix extends DataFix { + + public LDLibPayloadWrapperRemovalFix(Schema outputSchema) { + super(outputSchema, true); + } + + @Override + protected TypeRewriteRule makeRule() { + Type blockEntityIn = this.getInputSchema().getType(References.BLOCK_ENTITY); + Type blockEntityOut = this.getOutputSchema().getType(References.BLOCK_ENTITY); + return this.writeFixAndRead("LDLib Payload wrapper removal fix", blockEntityIn, blockEntityOut, + LDLibPayloadWrapperRemovalFix::fix); + } + + private static Dynamic fix(Dynamic dynamic) { + var stream = dynamic.asStreamOpt().result(); + if (stream.isPresent()) { + // if the entry is a list, attempt to apply the fixer to its elements + return dynamic.createList(stream.get().map(LDLibPayloadWrapperRemovalFix::stripLDLibPayloadWrapper)); + } + // otherwise assume it's a map and fix all children too + // updateMapValues does nothing if the value isn't a map, so this is fine. + return dynamic.updateMapValues(entry -> entry.mapSecond(LDLibPayloadWrapperRemovalFix::fix)); + } + + /** + * applied to all list elements. + * + *

+ * Reading the code implies only array-like objects get the `{ "t": type, "p": value }` treatment. + */ + public static Dynamic stripLDLibPayloadWrapper(Dynamic dynamic) { + // only allow entries with *only* the specific keys we expect so we don't accidentally touch other stuff + var asMap = dynamic.asMapOpt().result(); + if (asMap.isEmpty() || asMap.get().count() != 2) { + return dynamic; + } + + Optional> tElement = dynamic.get("t").result(); + Optional> pElement = dynamic.get("p").result(); + // equivalent to `tag.contains("p") && tag.contains("t")` + if (tElement.isPresent() && pElement.isPresent()) { + return LDLibPayloadWrapperRemovalFix.fix(pElement.get()); + } else { + return LDLibPayloadWrapperRemovalFix.fix(dynamic); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/MaterialRenameHelper.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/MaterialRenameHelper.java new file mode 100644 index 00000000000..86c1ddbffa6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/MaterialRenameHelper.java @@ -0,0 +1,152 @@ +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import net.minecraft.util.datafix.schemas.NamespacedSchema; + +import com.google.common.collect.ImmutableMap; + +import java.util.Map; +import java.util.function.UnaryOperator; + +public class MaterialRenameHelper { + + /** + * This class creates a renamer that handles all of a material's (default) forms + * + * @param oldName + * @param newName + * @return + */ + public static UnaryOperator createRenamer(String oldName, String newName) { + // variable names are shoter than usual to make the rename map be as small as possible + // old namespace (including colon) + final String oNs = oldName.substring(0, oldName.indexOf(':') + 1); + // old path + final String oP = oldName.substring(oldName.indexOf(':') + 1); + + // new namespace (including colon) + final String nNs = newName.substring(0, newName.indexOf(':') + 1); + // new path + final String nP = newName.substring(newName.indexOf(':') + 1); + + // if anyone has a better suggestion on how to implement this, feel free to tell. + final Map renameMap = ImmutableMap.builder() // spotless:off + .put(oldName, newName) + .put(oNs + "flowing_" + oP, nNs + "flowing_" + nP) + .put(oNs + "liquid_" + oP, nNs + "liquid_" + nP) + .put(oNs + "flowing_" + "liquid_" + oP, nNs + "flowing_" + "liquid_" + nP) + .put(oldName + "_gas", newName + "_gas") + .put(oNs + "flowing_" + oP + "_gas", nNs + "flowing_" + nP + "_gas") + .put(oldName + "_plasma", newName + "_plasma") + .put(oNs + "flowing_" + oP + "_plasma", nNs + "flowing_" + nP + "_plasma") + .put(oNs + "molten_" + oP, nNs + "molten_" + nP) + .put(oNs + "flowing_" + "molten_" + oP, nNs + "flowing_" + "molten_" + nP) + + .put(oldName + "_bucket", newName + "_bucket") + .put(oNs + "liquid_" + oP + "_bucket", nNs + "liquid_" + nP + "_bucket") + .put(oldName + "_gas" + "_bucket", newName + "_gas" + "_bucket") + .put(oldName + "_plasma" + "_bucket", newName + "_plasma" + "_bucket") + .put(oNs + "molten_" + oP + "_bucket", nNs + "molten_" + nP + "_bucket") + + .put(oldName + "_ore", newName + "_ore") + .put(oNs + "granite_" + oP + "_ore", nNs + "granite_" + nP + "_ore") + .put(oNs + "diorite_" + oP + "_ore", nNs + "diorite_" + nP + "_ore") + .put(oNs + "andesite_" + oP + "_ore", nNs + "andesite_" + nP + "_ore") + .put(oNs + "red_granite_" + oP + "_ore", nNs + "red_granite_" + nP + "_ore") + .put(oNs + "marble_" + oP + "_ore", nNs + "marble_" + nP + "_ore") + .put(oNs + "deepslate_" + oP + "_ore", nNs + "deepslate_" + nP + "_ore") + .put(oNs + "tuff_" + oP + "_ore", nNs + "tuff_" + nP + "_ore") + .put(oNs + "sand_" + oP + "_ore", nNs + "sand_" + nP + "_ore") + .put(oNs + "red_sand_" + oP + "_ore", nNs + "red_sand_" + nP + "_ore") + .put(oNs + "gravel_" + oP + "_ore", nNs + "gravel_" + nP + "_ore") + .put(oNs + "basalt_" + oP + "_ore", nNs + "basalt_" + nP + "_ore") + .put(oNs + "netherrack_" + oP + "_ore", nNs + "netherrack_" + nP + "_ore") + .put(oNs + "blackstone_" + oP + "_ore", nNs + "blackstone_" + nP + "_ore") + .put(oNs + "endstone_" + oP + "_ore", nNs + "endstone_" + nP + "_ore") + .put(oldName + "_indicator", newName + "_indicator") + + .put(oNs + "raw_" + oP, nNs + "raw_" + nP) + .put(oNs + "raw_" + oP + "_block", nNs + "raw_" + nP + "_block") + .put(oNs + "crushed_" + oP + "_ore", nNs + "crushed_" + nP + "_ore") + .put(oNs + "refined_" + oP + "_ore", nNs + "refined_" + nP + "_ore") + .put(oNs + "purified_" + oP + "_ore", nNs + "purified_" + nP + "_ore") + + .put(oldName + "_dust", newName + "_dust") + .put(oNs + "small_" + oP + "_dust", nNs + "small_" + nP + "_dust") + .put(oNs + "tiny_" + oP + "_dust", nNs + "tiny_" + nP + "_dust") + .put(oNs + "impure_" + oP + "_dust", nNs + "impure_" + nP + "_dust") + .put(oNs + "purified_" + oP + "_dust", nNs + "purified_" + nP + "_dust") + + .put(oldName + "_ingot", newName + "_ingot") + .put(oNs + "hot_" + oP + "_ingot", nNs + "hot_" + nP + "_ingot") + .put(oldName + "_nugget", newName + "_nugget") + + .put(oldName + "_gem", newName + "_gem") + .put(oNs + "chipped_" + oP + "_gem", nNs + "chipped_" + nP + "_gem") + .put(oNs + "flawed_" + oP + "_gem", nNs + "flawed_" + nP + "_gem") + .put(oNs + "flawless_" + oP + "_gem", nNs + "flawless_" + nP + "_gem") + .put(oNs + "exquisite_" + oP + "_gem", nNs + "exquisite_" + nP + "_gem") + + .put(oldName + "_plate", newName + "_plate") + .put(oNs + "dense_" + oP + "_plate", nNs + "dense_" + nP + "_plate") + .put(oNs + "double_" + oP + "_plate", nNs + "double_" + nP + "_plate") + + .put(oldName + "_round", newName + "_round") + .put(oldName + "_foil", newName + "_foil") + .put(oldName + "_rod", newName + "_rod") + .put(oNs + "long_" + oP + "_rod", nNs + "long_" + nP + "_rod") + .put(oldName + "_bolt", newName + "_bolt") + .put(oldName + "_screw", newName + "_screw") + .put(oldName + "_ring", newName + "_ring") + .put(oldName + "_spring", newName + "_spring") + .put(oNs + "small_" + oP + "_spring", nNs + "small_" + nP + "_spring") + .put(oldName + "_rotor", newName + "_rotor") + .put(oldName + "_gear", newName + "_gear") + .put(oNs + "small_" + oP + "_gear", nNs + "small_" + nP + "_gear") + .put(oldName + "_lens", newName + "_lens") + + .put(oldName + "_buzz_saw_blade", newName + "_buzz_saw_blade") + .put(oldName + "_screwdriver_tip", newName + "_screwdriver_tip") + .put(oldName + "_drill_head", newName + "_drill_head") + .put(oldName + "_chainsaw_head", newName + "_chainsaw_head") + .put(oldName + "_wrench_tip", newName + "_wrench_tip") + .put(oldName + "_wire_cutter_head", newName + "_wire_cutter_head") + .put(oldName + "_turbine_blade", newName + "_turbine_blade") + .put(oldName + "_turbine_rotor", newName + "_turbine_rotor") + + .put(oldName + "_block", newName + "_block") + .put(oldName + "_frame", newName + "_frame") + + .put(oNs + "fine_" + oP + "_wire", nNs + "fine_" + nP + "_wire") + .put(oldName + "_single_wire", newName + "_single_wire") + .put(oldName + "_double_wire", newName + "_double_wire") + .put(oldName + "_quadruple_wire", newName + "_quadruple_wire") + .put(oldName + "_octal_wire", newName + "_octal_wire") + .put(oldName + "_hex_wire", newName + "_hex_wire") + .put(oldName + "_single_cable", newName + "_single_cable") + .put(oldName + "_double_cable", newName + "_double_cable") + .put(oldName + "_quadruple_cable", newName + "_quadruple_cable") + .put(oldName + "_octal_cable", newName + "_octal_cable") + .put(oldName + "_hex_cable", newName + "_hex_cable") + + .put(oNs + "tiny_" + oP + "_fluid_pipe", nNs + "tiny_" + nP + "_fluid_pipe") + .put(oNs + "small_" + oP + "_fluid_pipe", nNs + "small_" + nP + "_fluid_pipe") + .put(oNs + "normal_" + oP + "_fluid_pipe", nNs + "normal_" + nP + "_fluid_pipe") + .put(oNs + "large_" + oP + "_fluid_pipe", nNs + "large_" + nP + "_fluid_pipe") + .put(oNs + "huge_" + oP + "_fluid_pipe", nNs + "huge_" + nP + "_fluid_pipe") + .put(oNs + "quadruple_" + oP + "_fluid_pipe", nNs + "quadruple_" + nP + "_fluid_pipe") + .put(oNs + "nonuple_" + oP + "_fluid_pipe", nNs + "nonuple_" + nP + "_fluid_pipe") + + .put(oNs + "small_" + oP + "_item_pipe", nNs + "small_" + nP + "_item_pipe") + .put(oNs + "normal_" + oP + "_item_pipe", nNs + "normal_" + nP + "_item_pipe") + .put(oNs + "large_" + oP + "_item_pipe", nNs + "large_" + nP + "_item_pipe") + .put(oNs + "huge_" + oP + "_item_pipe", nNs + "huge_" + nP + "_item_pipe") + .put(oNs + "small_" + "restrictive_" + oP + "_item_pipe", nNs + "small_" + "restrictive_" + nP + "_item_pipe") + .put(oNs + "normal_" + "restrictive_" + oP + "_item_pipe", nNs + "normal_" + "restrictive_" + nP + "_item_pipe") + .put(oNs + "large_" + "restrictive_" + oP + "_item_pipe", nNs + "large_" + "restrictive_" + nP + "_item_pipe") + .put(oNs + "huge_" + "restrictive_" + oP + "_item_pipe", nNs + "huge_" + "restrictive_" + nP + "_item_pipe") + .build(); // spotless:on + + // noinspection DataFlowIssue + return id -> renameMap.getOrDefault(NamespacedSchema.ensureNamespaced(id), id); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/RemoveMoltenFluidsFix.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/RemoveMoltenFluidsFix.java new file mode 100644 index 00000000000..60421f6dbe3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/RemoveMoltenFluidsFix.java @@ -0,0 +1,169 @@ +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import com.google.common.collect.ImmutableMap; + +import java.util.Map; + +public class RemoveMoltenFluidsFix { + + public static final Map REMOVED_BLOCKS = ImmutableMap.builder() + .put("gtceu:molten_bismuth_bronze", "gtceu:bismuth_bronze") + .put("gtceu:molten_black_bronze", "gtceu:black_bronze") + .put("gtceu:molten_black_steel", "gtceu:black_steel") + .put("gtceu:molten_blue_steel", "gtceu:blue_steel") + .put("gtceu:molten_enriched_naquadah_trinium_europium_duranide", + "gtceu:enriched_naquadah_trinium_europium_duranide") + .put("gtceu:molten_gallium_arsenide", "gtceu:gallium_arsenide") + .put("gtceu:molten_hastelloy_c_276", "gtceu:hastelloy_c_276") + .put("gtceu:molten_hastelloy_x", "gtceu:hastelloy_x") + .put("gtceu:molten_hsla_steel", "gtceu:hsla_steel") + .put("gtceu:molten_hsse", "gtceu:hsse") + .put("gtceu:molten_hssg", "gtceu:hssg") + .put("gtceu:molten_hsss", "gtceu:hsss") + .put("gtceu:molten_incoloy_ma_956", "gtceu:incoloy_ma_956") + .put("gtceu:molten_indium_tin_barium_titanium_cuprate", "gtceu:indium_tin_barium_titanium_cuprate") + .put("gtceu:molten_kanthal", "gtceu:kanthal") + .put("gtceu:molten_magnesium_diboride", "gtceu:magnesium_diboride") + .put("gtceu:molten_manganese_phosphide", "gtceu:manganese_phosphide") + .put("gtceu:molten_maraging_steel_300", "gtceu:maraging_steel_300") + .put("gtceu:molten_mercury_barium_calcium_cuprate", "gtceu:mercury_barium_calcium_cuprate") + .put("gtceu:molten_molybdenum_disilicide", "gtceu:molybdenum_disilicide") + .put("gtceu:molten_naquadah_alloy", "gtceu:naquadah_alloy") + .put("gtceu:molten_nichrome", "gtceu:nichrome") + .put("gtceu:molten_niobium_nitride", "gtceu:niobium_nitride") + .put("gtceu:molten_niobium_titanium", "gtceu:niobium_titanium") + .put("gtceu:molten_osmiridium", "gtceu:osmiridium") + .put("gtceu:molten_red_steel", "gtceu:red_steel") + .put("gtceu:molten_rhodium_plated_palladium", "gtceu:rhodium_plated_palladium") + .put("gtceu:molten_rose_gold", "gtceu:rose_gold") + .put("gtceu:molten_rtm_alloy", "gtceu:rtm_alloy") + .put("gtceu:molten_ruridit", "gtceu:ruridit") + .put("gtceu:molten_ruthenium_trinium_americium_neutronate", "gtceu:ruthenium_trinium_americium_neutronate") + .put("gtceu:molten_samarium_iron_arsenic_oxide", "gtceu:samarium_iron_arsenic_oxide") + .put("gtceu:molten_stainless_steel", "gtceu:stainless_steel") + .put("gtceu:molten_stellite_100", "gtceu:stellite_100") + .put("gtceu:molten_sterling_silver", "gtceu:sterling_silver") + .put("gtceu:molten_tantalum_carbide", "gtceu:tantalum_carbide") + .put("gtceu:molten_titanium_carbide", "gtceu:titanium_carbide") + .put("gtceu:molten_titanium_tungsten_carbide", "gtceu:titanium_tungsten_carbide") + .put("gtceu:molten_tungsten_carbide", "gtceu:tungsten_carbide") + .put("gtceu:molten_tungsten_steel", "gtceu:tungsten_steel") + .put("gtceu:molten_ultimet", "gtceu:ultimet") + .put("gtceu:molten_uranium_rhodium_dinaquadide", "gtceu:uranium_rhodium_dinaquadide") + .put("gtceu:molten_uranium_triplatinum", "gtceu:uranium_triplatinum") + .put("gtceu:molten_vanadium_gallium", "gtceu:vanadium_gallium") + .put("gtceu:molten_vanadium_steel", "gtceu:vanadium_steel") + .put("gtceu:molten_watertight_steel", "gtceu:watertight_steel") + .put("gtceu:molten_yttrium_barium_cuprate", "gtceu:yttrium_barium_cuprate") + .put("gtceu:molten_zeron_100", "gtceu:zeron_100") + .build(); + + public static final Map REMOVED_FLUIDS = ImmutableMap.builder() + .putAll(REMOVED_BLOCKS) + .put("gtceu:flowing_molten_bismuth_bronze", "gtceu:flowing_bismuth_bronze") + .put("gtceu:flowing_molten_black_bronze", "gtceu:flowing_black_bronze") + .put("gtceu:flowing_molten_black_steel", "gtceu:flowing_black_steel") + .put("gtceu:flowing_molten_blue_steel", "gtceu:flowing_blue_steel") + .put("gtceu:flowing_molten_enriched_naquadah_trinium_europium_duranide", + "gtceu:flowing_enriched_naquadah_trinium_europium_duranide") + .put("gtceu:flowing_molten_gallium_arsenide", "gtceu:flowing_gallium_arsenide") + .put("gtceu:flowing_molten_hastelloy_c_276", "gtceu:flowing_hastelloy_c_276") + .put("gtceu:flowing_molten_hastelloy_x", "gtceu:flowing_hastelloy_x") + .put("gtceu:flowing_molten_hsla_steel", "gtceu:flowing_hsla_steel") + .put("gtceu:flowing_molten_hsse", "gtceu:flowing_hsse") + .put("gtceu:flowing_molten_hssg", "gtceu:flowing_hssg") + .put("gtceu:flowing_molten_hsss", "gtceu:flowing_hsss") + .put("gtceu:flowing_molten_incoloy_ma_956", "gtceu:flowing_incoloy_ma_956") + .put("gtceu:flowing_molten_indium_tin_barium_titanium_cuprate", + "gtceu:flowing_indium_tin_barium_titanium_cuprate") + .put("gtceu:flowing_molten_kanthal", "gtceu:flowing_kanthal") + .put("gtceu:flowing_molten_magnesium_diboride", "gtceu:flowing_magnesium_diboride") + .put("gtceu:flowing_molten_manganese_phosphide", "gtceu:flowing_manganese_phosphide") + .put("gtceu:flowing_molten_maraging_steel_300", "gtceu:flowing_maraging_steel_300") + .put("gtceu:flowing_molten_mercury_barium_calcium_cuprate", "gtceu:flowing_mercury_barium_calcium_cuprate") + .put("gtceu:flowing_molten_molybdenum_disilicide", "gtceu:flowing_molybdenum_disilicide") + .put("gtceu:flowing_molten_naquadah_alloy", "gtceu:flowing_naquadah_alloy") + .put("gtceu:flowing_molten_nichrome", "gtceu:flowing_nichrome") + .put("gtceu:flowing_molten_niobium_nitride", "gtceu:flowing_niobium_nitride") + .put("gtceu:flowing_molten_niobium_titanium", "gtceu:flowing_niobium_titanium") + .put("gtceu:flowing_molten_osmiridium", "gtceu:flowing_osmiridium") + .put("gtceu:flowing_molten_red_steel", "gtceu:flowing_red_steel") + .put("gtceu:flowing_molten_rhodium_plated_palladium", "gtceu:flowing_rhodium_plated_palladium") + .put("gtceu:flowing_molten_rose_gold", "gtceu:flowing_rose_gold") + .put("gtceu:flowing_molten_rtm_alloy", "gtceu:flowing_rtm_alloy") + .put("gtceu:flowing_molten_ruridit", "gtceu:flowing_ruridit") + .put("gtceu:flowing_molten_ruthenium_trinium_americium_neutronate", + "gtceu:flowing_ruthenium_trinium_americium_neutronate") + .put("gtceu:flowing_molten_samarium_iron_arsenic_oxide", "gtceu:flowing_samarium_iron_arsenic_oxide") + .put("gtceu:flowing_molten_stainless_steel", "gtceu:flowing_stainless_steel") + .put("gtceu:flowing_molten_stellite_100", "gtceu:flowing_stellite_100") + .put("gtceu:flowing_molten_sterling_silver", "gtceu:flowing_sterling_silver") + .put("gtceu:flowing_molten_tantalum_carbide", "gtceu:flowing_tantalum_carbide") + .put("gtceu:flowing_molten_titanium_carbide", "gtceu:flowing_titanium_carbide") + .put("gtceu:flowing_molten_titanium_tungsten_carbide", "gtceu:flowing_titanium_tungsten_carbide") + .put("gtceu:flowing_molten_tungsten_carbide", "gtceu:flowing_tungsten_carbide") + .put("gtceu:flowing_molten_tungsten_steel", "gtceu:flowing_tungsten_steel") + .put("gtceu:flowing_molten_ultimet", "gtceu:flowing_ultimet") + .put("gtceu:flowing_molten_uranium_rhodium_dinaquadide", "gtceu:flowing_uranium_rhodium_dinaquadide") + .put("gtceu:flowing_molten_uranium_triplatinum", "gtceu:flowing_uranium_triplatinum") + .put("gtceu:flowing_molten_vanadium_gallium", "gtceu:flowing_vanadium_gallium") + .put("gtceu:flowing_molten_vanadium_steel", "gtceu:flowing_vanadium_steel") + .put("gtceu:flowing_molten_watertight_steel", "gtceu:flowing_watertight_steel") + .put("gtceu:flowing_molten_yttrium_barium_cuprate", "gtceu:flowing_yttrium_barium_cuprate") + .put("gtceu:flowing_molten_zeron_100", "gtceu:flowing_zeron_100") + .build(); + + public static final Map REMOVED_ITEMS = ImmutableMap.builder() + .put("gtceu:molten_bismuth_bronze_bucket", "gtceu:bismuth_bronze_bucket") + .put("gtceu:molten_black_bronze_bucket", "gtceu:black_bronze_bucket") + .put("gtceu:molten_black_steel_bucket", "gtceu:black_steel_bucket") + .put("gtceu:molten_blue_steel_bucket", "gtceu:blue_steel_bucket") + .put("gtceu:molten_enriched_naquadah_trinium_europium_duranide_bucket", + "gtceu:enriched_naquadah_trinium_europium_duranide_bucket") + .put("gtceu:molten_gallium_arsenide_bucket", "gtceu:gallium_arsenide_bucket") + .put("gtceu:molten_hastelloy_c_276_bucket", "gtceu:hastelloy_c_276_bucket") + .put("gtceu:molten_hastelloy_x_bucket", "gtceu:hastelloy_x_bucket") + .put("gtceu:molten_hsla_steel_bucket", "gtceu:hsla_steel_bucket") + .put("gtceu:molten_hsse_bucket", "gtceu:hsse_bucket") + .put("gtceu:molten_hssg_bucket", "gtceu:hssg_bucket") + .put("gtceu:molten_hsss_bucket", "gtceu:hsss_bucket") + .put("gtceu:molten_incoloy_ma_956_bucket", "gtceu:incoloy_ma_956_bucket") + .put("gtceu:molten_indium_tin_barium_titanium_cuprate_bucket", + "gtceu:indium_tin_barium_titanium_cuprate_bucket") + .put("gtceu:molten_kanthal_bucket", "gtceu:kanthal_bucket") + .put("gtceu:molten_magnesium_diboride_bucket", "gtceu:magnesium_diboride_bucket") + .put("gtceu:molten_manganese_phosphide_bucket", "gtceu:manganese_phosphide_bucket") + .put("gtceu:molten_maraging_steel_300_bucket", "gtceu:maraging_steel_300_bucket") + .put("gtceu:molten_mercury_barium_calcium_cuprate_bucket", "gtceu:mercury_barium_calcium_cuprate_bucket") + .put("gtceu:molten_molybdenum_disilicide_bucket", "gtceu:molybdenum_disilicide_bucket") + .put("gtceu:molten_naquadah_alloy_bucket", "gtceu:naquadah_alloy_bucket") + .put("gtceu:molten_nichrome_bucket", "gtceu:nichrome_bucket") + .put("gtceu:molten_niobium_nitride_bucket", "gtceu:niobium_nitride_bucket") + .put("gtceu:molten_niobium_titanium_bucket", "gtceu:niobium_titanium_bucket") + .put("gtceu:molten_osmiridium_bucket", "gtceu:osmiridium_bucket") + .put("gtceu:molten_red_steel_bucket", "gtceu:red_steel_bucket") + .put("gtceu:molten_rhodium_plated_palladium_bucket", "gtceu:rhodium_plated_palladium_bucket") + .put("gtceu:molten_rose_gold_bucket", "gtceu:rose_gold_bucket") + .put("gtceu:molten_rtm_alloy_bucket", "gtceu:rtm_alloy_bucket") + .put("gtceu:molten_ruridit_bucket", "gtceu:ruridit_bucket") + .put("gtceu:molten_ruthenium_trinium_americium_neutronate_bucket", + "gtceu:ruthenium_trinium_americium_neutronate_bucket") + .put("gtceu:molten_samarium_iron_arsenic_oxide_bucket", "gtceu:samarium_iron_arsenic_oxide_bucket") + .put("gtceu:molten_stainless_steel_bucket", "gtceu:stainless_steel_bucket") + .put("gtceu:molten_stellite_100_bucket", "gtceu:stellite_100_bucket") + .put("gtceu:molten_sterling_silver_bucket", "gtceu:sterling_silver_bucket") + .put("gtceu:molten_tantalum_carbide_bucket", "gtceu:tantalum_carbide_bucket") + .put("gtceu:molten_titanium_carbide_bucket", "gtceu:titanium_carbide_bucket") + .put("gtceu:molten_titanium_tungsten_carbide_bucket", "gtceu:titanium_tungsten_carbide_bucket") + .put("gtceu:molten_tungsten_carbide_bucket", "gtceu:tungsten_carbide_bucket") + .put("gtceu:molten_tungsten_steel_bucket", "gtceu:tungsten_steel_bucket") + .put("gtceu:molten_ultimet_bucket", "gtceu:ultimet_bucket") + .put("gtceu:molten_uranium_rhodium_dinaquadide_bucket", "gtceu:uranium_rhodium_dinaquadide_bucket") + .put("gtceu:molten_uranium_triplatinum_bucket", "gtceu:uranium_triplatinum_bucket") + .put("gtceu:molten_vanadium_gallium_bucket", "gtceu:vanadium_gallium_bucket") + .put("gtceu:molten_vanadium_steel_bucket", "gtceu:vanadium_steel_bucket") + .put("gtceu:molten_watertight_steel_bucket", "gtceu:watertight_steel_bucket") + .put("gtceu:molten_yttrium_barium_cuprate_bucket", "gtceu:yttrium_barium_cuprate_bucket") + .put("gtceu:molten_zeron_100_bucket", "gtceu:zeron_100_bucket") + .build(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/TraitHolderificationFix.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/TraitHolderificationFix.java new file mode 100644 index 00000000000..03546ea28bb --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/TraitHolderificationFix.java @@ -0,0 +1,78 @@ +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import net.minecraft.util.datafix.fixes.References; + +import com.mojang.datafixers.*; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.Type; +import com.mojang.datafixers.util.Either; + +import java.util.function.Function; + +public class TraitHolderificationFix extends DataFix { + + public TraitHolderificationFix(Schema outputSchema) { + super(outputSchema, false); + } + + @Override + protected TypeRewriteRule makeRule() { + Type blockEntityType = this.getOutputSchema().getType(References.BLOCK_ENTITY); + + return this.fixTypeEverywhereTyped("TraitHolderificationFix", blockEntityType, typed -> { + // move the auto output trait first + typed = typed.update(DSL.remainderFinder(), dynamic -> { + final var field = dynamic.get("autoOutput").result(); + if (field.isPresent()) { + dynamic = dynamic.update("traitHolder", val -> val.set("autoOutput", field.get())); + } + return dynamic; + }); + + // then rename the original fields + typed = moveItemHandlerField(typed, "chargerInventory", "batterySlot"); + typed = moveItemHandlerField(typed, "circuitInventory", "circuitSlot"); + + // then copy the renamed fields into the `traitHolder` field + typed = copyFieldToTraitHolder(typed, "batterySlot"); + typed = copyFieldToTraitHolder(typed, "circuitSlot", "circuit"); + typed = copyFieldToTraitHolder(typed, "circuitSlot"); // do circuit slot twice with different names + + return typed; + }); + } + + private static Typed moveItemHandlerField(Typed typed, String oldName, String newName) { + var field = typed.getType().findFieldTypeOpt(oldName); + if (field.isEmpty()) return typed; + + return moveItemHandlerFieldHelper(typed, oldName, newName, field.get()) + .update(DSL.remainderFinder(), dynamic -> dynamic.remove(oldName)); + } + + private static Typed moveItemHandlerFieldHelper(Typed typed, String oldName, String newName, + Type fieldType) { + var oldField = DSL.optional(DSL.field(oldName, fieldType)); + var newField = DSL.optional(DSL.field(newName, DSL.field("storage", fieldType))); + + return typed.update(oldField.finder(), newField, Function.identity()); + } + + private static Typed copyFieldToTraitHolder(Typed typed, String name) { + return copyFieldToTraitHolder(typed, name, name); + } + + private static Typed copyFieldToTraitHolder(Typed typed, String oldName, String newName) { + var field = typed.getType().findFieldTypeOpt(oldName); + if (field.isEmpty()) return typed; + return copyFieldToTraitHolderHelper(typed, oldName, newName, field.get()); + } + + private static Typed copyFieldToTraitHolderHelper(Typed typed, String oldName, String newName, + Type fieldType) { + var type = DSL.optional(DSL.field(oldName, fieldType)); + var type1 = DSL.optional(DSL.field("traitHolder", DSL.optional(DSL.field(newName, fieldType)))); + + return typed.update(type.finder(), type1, field -> Either.left(field)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/UpwardsFacingPropertyFix.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/UpwardsFacingPropertyFix.java new file mode 100644 index 00000000000..84e5a29f395 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/UpwardsFacingPropertyFix.java @@ -0,0 +1,102 @@ +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import net.minecraft.core.Direction; +import net.minecraft.util.datafix.fixes.References; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.DataFix; +import com.mojang.datafixers.TypeRewriteRule; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; +import com.mojang.serialization.OptionalDynamic; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; + +public class UpwardsFacingPropertyFix extends DataFix { + + public UpwardsFacingPropertyFix(Schema outputSchema) { + super(outputSchema, false); + } + + @Override + protected TypeRewriteRule makeRule() { + return this.fixTypeEverywhereTyped("UpwardsFacingPropertyFix", + this.getInputSchema().getType(References.BLOCK_STATE), + typed -> typed.update(DSL.remainderFinder(), UpwardsFacingPropertyFix::upgradeBlockStateTag)); + } + + private static Dynamic fixUpwardsFacingProperty(Direction frontFacing, Dynamic property) { + // we can ignore the remainder from this because it'll always be empty + // (Direction.CODEC only accepts strings and those can't have 'unread'/leftover fields) + Optional upwardsFacingOpt = property.read(Direction.CODEC).result(); + if (upwardsFacingOpt.isEmpty()) { + return property; + } + Direction upwardsFacing = upwardsFacingOpt.get(); + upwardsFacing = fixUpwardsFacing(frontFacing, upwardsFacing); + + return Direction.CODEC.encodeStart(property.getOps(), upwardsFacing) + .resultOrPartial(str -> {}) + .map(value -> new Dynamic<>(property.getOps(), value)) + .orElse(property); + } + + private static Dynamic upgradeBlockStateTag(Dynamic blockState) { + return blockState.update("Properties", properties -> { + OptionalDynamic frontFacingProperty = properties.get("facing"); + Optional frontFacingOpt = frontFacingProperty.read(Direction.CODEC).resultOrPartial(str -> {}); + if (frontFacingOpt.isEmpty()) { + return properties; + } + Direction frontFacing = frontFacingOpt.get(); + + return properties.update("upwards_facing", property -> fixUpwardsFacingProperty(frontFacing, property)); + }); + } + + public static Direction fixUpwardsFacing(Direction frontFacing, @Nullable Direction upwardsFacing) { + if (upwardsFacing == null) { + // needed if previous machine did not have an upwards facing + if (frontFacing.getAxis() == Direction.Axis.Y) { + // if the machine is facing up or down, make its upward face default to NORTH + return Direction.NORTH; + } else { + // in all other cases, default to UP + return Direction.UP; + } + } + + return switch (frontFacing) { + case NORTH -> switch (upwardsFacing) { + case NORTH -> Direction.UP; + case EAST -> Direction.WEST; + case SOUTH -> Direction.DOWN; + case WEST -> Direction.EAST; + default -> Direction.UP; + }; + case EAST -> switch (upwardsFacing) { + case NORTH -> Direction.UP; + case EAST -> Direction.NORTH; + case SOUTH -> Direction.DOWN; + case WEST -> Direction.SOUTH; + default -> Direction.UP; + }; + case SOUTH -> switch (upwardsFacing) { + case NORTH -> Direction.UP; + case EAST -> Direction.EAST; + case SOUTH -> Direction.DOWN; + case WEST -> Direction.WEST; + default -> Direction.UP; + }; + case WEST -> switch (upwardsFacing) { + case NORTH -> Direction.UP; + case EAST -> Direction.SOUTH; + case SOUTH -> Direction.DOWN; + case WEST -> Direction.NORTH; + default -> Direction.UP; + }; + case UP, DOWN -> upwardsFacing; + }; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/package-info.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/package-info.java new file mode 100644 index 00000000000..beb1ec92e54 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/fixes/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.common.datafixer.fixes; + +import org.jetbrains.annotations.NotNullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V0.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V0.java new file mode 100644 index 00000000000..369d836e913 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V0.java @@ -0,0 +1,516 @@ +package com.gregtechceu.gtceu.common.datafixer.schemas; + +import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.common.data.datafixer.GTReferences; +import com.gregtechceu.gtceu.core.mixins.datafixer.V705Accessor; + +import net.minecraft.util.datafix.fixes.References; +import net.minecraft.util.datafix.schemas.NamespacedSchema; +import net.minecraftforge.fml.loading.LoadingModList; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.templates.Hook; +import com.mojang.datafixers.types.templates.TypeTemplate; + +import java.util.Locale; +import java.util.Map; +import java.util.function.Supplier; + +import static com.gregtechceu.gtceu.api.GTValues.*; +import static com.gregtechceu.gtceu.api.datafixer.types.ExtraDSL.*; +import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.*; +import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.ALL_TIERS; +import static com.mojang.datafixers.DSL.*; + +public class V0 extends NamespacedSchema { + + public V0(int versionKey, Schema parent) { + super(versionKey, parent); + } + + // spotless:off + @Override + public void registerTypes(Schema schema, Map> entityTypes, + Map> blockEntityTypes) { + super.registerTypes(schema, entityTypes, blockEntityTypes); + + // add forge registry id map to the level schema + schema.registerType(false, GTReferences.FORGE_REGISTRY_DATA, () -> optionalFields( + "minecraft:block", fields( + "ids", list(fields("K", References.BLOCK_NAME.in(schema), "V", constType(intType()))), + "aliases", list(fields("K", constType(namespacedString()), "V", References.BLOCK_NAME.in(schema))), + "overrides", list(fields("K", References.BLOCK_NAME.in(schema), "V", constType(string()))) + ), + "minecraft:item", fields( + "ids", list(fields("K", References.ITEM_NAME.in(schema), "V", constType(intType()))), + "aliases", list(fields("K", constType(namespacedString()), "V", References.ITEM_NAME.in(schema))), + "overrides", list(fields("K", References.ITEM_NAME.in(schema), "V", constType(string()))) + ), + "minecraft:fluid", fields( + "ids", list(fields("K", GTReferences.FLUID_NAME.in(schema), "V", constType(intType()))), + "aliases", list(fields("K", constType(namespacedString()), "V", GTReferences.FLUID_NAME.in(schema))), + "overrides", list(fields("K", GTReferences.FLUID_NAME.in(schema), "V", constType(string()))) + ), + "minecraft:entity_type", fields( + "ids", list(fields("K", References.ENTITY_NAME.in(schema), "V", constType(intType()))), + "aliases", list(fields("K", constType(namespacedString()), "V", References.ENTITY_NAME.in(schema))), + "overrides", list(fields("K", References.ENTITY_NAME.in(schema), "V", constType(string()))) + ), + "gtceu:material", fields( + "ids", list(fields("K", GTReferences.MATERIAL_NAME.in(schema), "V", constType(intType()))), + "aliases", list(fields("K", constType(namespacedString()), "V", GTReferences.MATERIAL_NAME.in(schema))), + "overrides", list(fields("K", GTReferences.MATERIAL_NAME.in(schema), "V", constType(string()))) + ) + )); + + + schema.registerType(false, GTReferences.MATERIAL_NAME, () -> constType(namespacedString())); + + schema.registerType(true, GTReferences.FLUID_STACK, () -> optionalFields( + "FluidName", GTReferences.FLUID_NAME.in(schema), + "Tag", remainder() + )); + schema.registerType(false, GTReferences.FLUID_NAME, () -> constType(namespacedString())); + + // add part stats NBT field + schema.registerType(true, References.ITEM_STACK, () -> hook( + optionalFields( + "id", References.ITEM_NAME.in(schema), + "tag", optionalFields( + "EntityTag", References.ENTITY_TREE.in(schema), + "BlockEntityTag", References.BLOCK_ENTITY.in(schema), + "CanDestroy", list(References.BLOCK_NAME.in(schema)), + "CanPlaceOn", list(References.BLOCK_NAME.in(schema)), + "Items", list(References.ITEM_STACK.in(schema)), + "GT.PartStats", optionalFields( + "Material", GTReferences.MATERIAL_NAME.in(schema) + ) + ) + ), + V705Accessor.gtceu$getAddNames(), Hook.HookFunction.IDENTITY + )); + } + + @Override + public Map> registerBlockEntities(Schema schema) { + Map> map = super.registerBlockEntities(schema); + + // region steam + final Supplier steamMachine = () -> optionalFields( + "steamTank", notifiableFluidTank(schema) + ); + final Supplier steamBoiler = () -> optionalFields( + "waterTank", notifiableFluidTank(schema), + steamMachine.get() + ); + registerSteamMachine(schema, map, "gtceu:steam_solid_boiler", () -> optionalFields( + "fuelHandler", notifiableItemHandler(schema), + "ashHandler", notifiableItemHandler(schema), + steamBoiler.get() + )); + registerSteamMachine(schema, map, "gtceu:steam_liquid_boiler", () -> optionalFields( + "fuelTank", notifiableFluidTank(schema), + steamBoiler.get() + )); + registerSteamMachine(schema, map, "gtceu:steam_solar_boiler", steamBoiler); + registerSimpleSteamMachine(schema, map, "gtceu:extractor"); + registerSimpleSteamMachine(schema, map, "gtceu:steam_macerator"); + registerSimpleSteamMachine(schema, map, "gtceu:compressor"); + registerSimpleSteamMachine(schema, map, "gtceu:forge_hammer"); + registerSimpleSteamMachine(schema, map, "gtceu:furnace"); + registerSimpleSteamMachine(schema, map, "gtceu:alloy_smelter"); + registerSimpleSteamMachine(schema, map, "gtceu:rock_crusher"); + schema.register(map, "gtceu:steam_miner", () -> optionalFields( + "importItems", notifiableItemHandler(schema), + "exportItems", notifiableItemHandler(schema), + "steamTank", notifiableFluidTank(schema) + )); + // endregion + + // region simple + registerForTiers(schema, map, "gtceu:machine_hull", DSL::remainder, ALL_TIERS); + registerSimpleMachine(schema, map, "gtceu:electric_furnace", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:alloy_smelter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:arc_furnace", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:assembler", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:autoclave", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:bender", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:brewery", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:canner", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:centrifuge", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:chemical_bath", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:chemical_reactor", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:compressor", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:cutter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:distillery", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:electrolyzer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:electromagnetic_separator", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:extractor", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:extruder", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:fermenter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:fluid_heater", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:fluid_solidifier", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:forge_hammer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:forming_press", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:lathe", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:scanner", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:mixer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:ore_washer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:packer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:polarizer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:laser_engraver", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:sifter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:thermal_centrifuge", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:wiremill", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:circuit_assembler", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:macerator", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:gas_collector", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:rock_crusher", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:air_scrubber", LOW_TIERS); + registerSimpleMachine(schema, map, "gtceu:combustion", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:steam_turbine", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:gas_turbine", ELECTRIC_TIERS); + // endregion + + // region electric + final int[] transformerTiers = GTValues.tiersBetween(ULV, GTCEuAPI.isHighTier() ? OpV : UV); + registerForTiers(schema, map, "gtceu:transformer_1a", DSL::remainder, transformerTiers); + registerForTiers(schema, map, "gtceu:transformer_2a", DSL::remainder, transformerTiers); + registerForTiers(schema, map, "gtceu:transformer_4a", DSL::remainder, transformerTiers); + registerForTiers(schema, map, "gtceu:transformer_16a", DSL::remainder, transformerTiers); + + registerForTiers(schema, map, "gtceu:1a_energy_converter", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:4a_energy_converter", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:8a_energy_converter", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:16a_energy_converter", DSL::remainder, ALL_TIERS); + + schema.registerSimple(map, "gtceu:long_distance_item_pipeline_endpoint"); + schema.registerSimple(map, "gtceu:long_distance_fluid_pipeline_endpoint"); + schema.registerSimple(map, "gtceu:long_distance_fluid_pipeline_endpoint"); + + final Supplier batteryBuffer = () -> optionalFields( + "batteryInventory", itemHandler(schema) + ); + registerForTiers(schema, map, "gtceu:battery_buffer_4x", batteryBuffer, ALL_TIERS); + registerForTiers(schema, map, "gtceu:battery_buffer_8x", batteryBuffer, ALL_TIERS); + registerForTiers(schema, map, "gtceu:battery_buffer_16x", batteryBuffer, ALL_TIERS); + registerForTiers(schema, map, "gtceu:charger_4x", batteryBuffer, ALL_TIERS); + + registerForTiers(schema, map, "gtceu:pump", () -> optionalFields( + "cache", notifiableFluidTank(schema) + ), LV, MV, HV, EV); + registerForTiers(schema, map, "gtceu:fisher", () -> optionalFields( + "cache", notifiableItemHandler(schema), + "baitHandler", notifiableItemHandler(schema), + "chargerInventory", itemHandler(schema) + ), LV, MV, HV, EV, IV, LuV); + registerForTiers(schema, map, "gtceu:block_breaker", () -> optionalFields( + "cache", notifiableItemHandler(schema), + "chargerInventory", itemHandler(schema) + ), LV, MV, HV, EV); + registerSimpleMachine(schema, map, "gtceu:miner", LV, MV, HV); + registerForTiers(schema, map, "gtceu:world_accelerator", DSL::remainder, LV, MV, HV, EV, IV, LuV, ZPM, UV); + registerForTiers(schema, map, "gtceu:item_collector", () -> optionalFields( + "output", notifiableItemHandler(schema), + "chargerInventory", itemHandler(schema), + "filterInventory", itemHandler(schema) + ), LV, MV, HV, EV); + // endregion + + // region storage + final Supplier itemStorage = () -> optionalFields( + "inventory", notifiableItemHandler(schema) + ); + registerForTiers(schema, map, "gtceu:buffer", () -> optionalFields( + "tank", notifiableFluidTank(schema), + itemStorage.get() + ), LV, MV, HV); + schema.registerSimple(map, "gtceu:creative_energy"); + schema.registerSimple(map, "gtceu:creative_computation_provider"); + + final Supplier quantumChest = () -> optionalFields( + "lockedFluid", GTReferences.FLUID_STACK.in(schema), + "stored", GTReferences.FLUID_STACK.in(schema) + ); + final Supplier quantumTank = () -> optionalFields( + "lockedItem", itemHandler(schema), + "stored", References.ITEM_STACK.in(schema) + ); + schema.register(map, "gtceu:creative_chest", quantumChest); + schema.register(map, "gtceu:creative_tank", quantumTank); + registerForTiers(schema, map, "gtceu:super_chest", quantumChest, LOW_TIERS); + registerForTiers(schema, map, "gtceu:quantum_chest", quantumChest, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:super_tank", quantumTank, LOW_TIERS); + registerForTiers(schema, map, "gtceu:quantum_tank", quantumTank, HIGH_TIERS); + + schema.register(map, "gtceu:wood_crate", itemStorage); + schema.register(map, "gtceu:bronze_crate", itemStorage); + schema.register(map, "gtceu:steel_crate", itemStorage); + schema.register(map, "gtceu:aluminium_crate", itemStorage); + schema.register(map, "gtceu:stainless_steel_crate", itemStorage); + schema.register(map, "gtceu:titanium_crate", itemStorage); + schema.register(map, "gtceu:tungsten_steel_crate", itemStorage); + + final Supplier drum = () -> optionalFields( + "stored", GTReferences.FLUID_STACK.in(schema) + ); + schema.register(map, "gtceu:wood_drum", drum); + schema.register(map, "gtceu:bronze_drum", drum); + schema.register(map, "gtceu:steel_drum", drum); + schema.register(map, "gtceu:aluminium_drum", drum); + schema.register(map, "gtceu:stainless_steel_drum", drum); + schema.register(map, "gtceu:gold_drum", drum); + schema.register(map, "gtceu:titanium_drum", drum); + schema.register(map, "gtceu:tungsten_steel_drum", drum); + // endregion + + // region part + final Supplier itemBus = () -> optionalFields( + "circuitInventory", notifiableItemHandler(schema), + itemStorage.get() + ); + registerForTiers(schema, map, "gtceu:input_bus", itemBus, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_bus", itemBus, ALL_TIERS); + final Supplier fluidHatch = () -> optionalFields( + "tank", notifiableFluidTank(schema), + "circuitInventory", notifiableItemHandler(schema) + ); + registerForTiers(schema, map, "gtceu:input_hatch", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:input_hatch_4x", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:input_hatch_9x", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_hatch", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_hatch_4x", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_hatch_9x", fluidHatch, ALL_TIERS); + + registerForTiers(schema, map, "gtceu:energy_input_hatch", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_output_hatch", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_input_hatch_4a", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_output_hatch_4a", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_input_hatch_16a", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_output_hatch_16a", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:substation_input_hatch_64a", DSL::remainder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:substation_output_hatch_64a", DSL::remainder, ALL_TIERS); + + registerForTiers(schema, map, "gtceu:muffler_hatch", itemStorage, ELECTRIC_TIERS); + + schema.register(map, "gtceu:steam_input_bus", itemBus); + schema.register(map, "gtceu:steam_output_bus", itemBus); + schema.register(map, "gtceu:steam_input_hatch", fluidHatch); + schema.registerSimple(map, "gtceu:coke_oven_hatch"); + schema.register(map, "gtceu:pump_hatch", fluidHatch); + final Supplier maintenanceHatch = () -> optionalFields( + "itemStackHandler", notifiableItemHandler(schema) + ); + schema.register(map, "gtceu:maintenance_hatch", maintenanceHatch); + schema.register(map, "gtceu:configurable_maintenance_hatch", maintenanceHatch); + schema.register(map, "gtceu:cleaning_maintenance_hatch", maintenanceHatch); + schema.register(map, "gtceu:auto_maintenance_hatch", maintenanceHatch); + + registerForTiers(schema, map, "gtceu:item_passthrough_hatch", itemBus, ELECTRIC_TIERS); + registerForTiers(schema, map, "gtceu:fluid_passthrough_hatch", fluidHatch, ELECTRIC_TIERS); + schema.register(map, "gtceu:reservoir_hatch", fluidHatch); + final Supplier dualHatch = () -> optionalFields( + "tank", notifiableFluidTank(schema), + itemBus.get() + ); + registerForTiers(schema, map, "gtceu:dual_input_hatch", dualHatch, DUAL_HATCH_TIERS); + registerForTiers(schema, map, "gtceu:dual_output_hatch", dualHatch, DUAL_HATCH_TIERS); + + registerForTiers(schema, map, "gtceu:diode", DSL::remainder, ELECTRIC_TIERS); + registerForTiers(schema, map, "gtceu:rotor_holder", () -> optionalFields( + "rotorMaterial", GTReferences.MATERIAL_NAME.in(schema), + itemStorage.get() + ), GTValues.tiersBetween(HV, GTCEuAPI.isHighTier() ? OpV : UV)); + + registerForTiers(schema, map, "gtceu:256a_laser_target_hatch", DSL::remainder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:256a_laser_source_hatch", DSL::remainder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:1024a_laser_target_hatch", DSL::remainder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:1024a_laser_source_hatch", DSL::remainder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:4096a_laser_target_hatch", DSL::remainder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:4096a_laser_source_hatch", DSL::remainder, HIGH_TIERS); + + schema.registerSimple(map, "gtceu:monitor"); + schema.registerSimple(map, "gtceu:advanced_monitor"); + // endregion + + // region multiblock + schema.registerSimple(map, "gtceu:bronze_large_boiler"); + schema.registerSimple(map, "gtceu:steel_large_boiler"); + schema.registerSimple(map, "gtceu:titanium_large_boiler"); + schema.registerSimple(map, "gtceu:tungstensteel_large_boiler"); + + final Supplier primitiveMachine = () -> optionalFields( + "importItems", notifiableItemHandler(schema), + "exportItems", notifiableItemHandler(schema), + "importFluids", notifiableFluidTank(schema), + "exportFluids", notifiableFluidTank(schema) + ); + schema.register(map, "gtceu:coke_oven", primitiveMachine); + schema.register(map, "gtceu:primitive_blast_furnace", primitiveMachine); + + schema.registerSimple(map, "gtceu:electric_blast_furnace"); + schema.registerSimple(map, "gtceu:large_chemical_reactor"); + schema.registerSimple(map, "gtceu:implosion_compressor"); + schema.registerSimple(map, "gtceu:pyrolyse_oven"); + schema.registerSimple(map, "gtceu:multi_smelter"); + schema.registerSimple(map, "gtceu:cracker"); + schema.registerSimple(map, "gtceu:distillation_tower"); + schema.registerSimple(map, "gtceu:vacuum_freezer"); + schema.registerSimple(map, "gtceu:assembly_line"); + schema.registerSimple(map, "gtceu:primitive_pump"); + schema.registerSimple(map, "gtceu:steam_grinder"); + schema.registerSimple(map, "gtceu:steam_oven"); + registerForTiers(schema, map, "gtceu:fusion_reactor", DSL::remainder, LuV, ZPM, UV); + registerForTiers(schema, map, "gtceu:fluid_drilling_rig", DSL::remainder, MV, HV, EV); + registerForTiers(schema, map, "gtceu:large_miner", DSL::remainder, EV, IV, LuV); + schema.registerSimple(map, "gtceu:cleanroom"); + schema.registerSimple(map, "gtceu:large_combustion_engine"); + schema.registerSimple(map, "gtceu:extreme_combustion_engine"); + schema.registerSimple(map, "gtceu:steam_large_turbine"); + schema.registerSimple(map, "gtceu:gas_large_turbine"); + schema.registerSimple(map, "gtceu:plasma_large_turbine"); + schema.registerSimple(map, "gtceu:active_transformer"); + schema.registerSimple(map, "gtceu:power_substation"); + registerForTiers(schema, map, "gtceu:bedrock_ore_miner", DSL::remainder, MV, HV, EV); + schema.registerSimple(map, "gtceu:wooden_tank_valve"); + schema.registerSimple(map, "gtceu:wooden_multiblock_tank"); + schema.registerSimple(map, "gtceu:bronze_tank_valve"); + schema.registerSimple(map, "gtceu:bronze_multiblock_tank"); + schema.registerSimple(map, "gtceu:steel_tank_valve"); + schema.registerSimple(map, "gtceu:steel_multiblock_tank"); + + schema.registerSimple(map, "gtceu:central_monitor"); + + // region GCYM + registerForTiers(schema, map, "gtceu:parallel_hatch", DSL::remainder, IV, LuV, ZPM, UV); + schema.registerSimple(map, "gtceu:large_maceration_tower"); + schema.registerSimple(map, "gtceu:large_chemical_bath"); + schema.registerSimple(map, "gtceu:large_centrifuge"); + schema.registerSimple(map, "gtceu:large_mixer"); + schema.registerSimple(map, "gtceu:large_electrolyzer"); + schema.registerSimple(map, "gtceu:large_electromagnet"); + schema.registerSimple(map, "gtceu:large_packer"); + schema.registerSimple(map, "gtceu:large_assembler"); + schema.registerSimple(map, "gtceu:large_circuit_assembler"); + schema.registerSimple(map, "gtceu:large_arc_smelter"); + schema.registerSimple(map, "gtceu:large_engraving_laser"); + schema.registerSimple(map, "gtceu:large_sifting_funnel"); + schema.registerSimple(map, "gtceu:alloy_blast_smelter"); + schema.registerSimple(map, "gtceu:large_autoclave"); + schema.registerSimple(map, "gtceu:large_material_press"); + schema.registerSimple(map, "gtceu:large_brewer"); + schema.registerSimple(map, "gtceu:large_cutter"); + schema.registerSimple(map, "gtceu:large_extractor"); + schema.registerSimple(map, "gtceu:large_extruder"); + schema.registerSimple(map, "gtceu:large_solidifier"); + schema.registerSimple(map, "gtceu:large_wiremill"); + schema.registerSimple(map, "gtceu:mega_blast_furnace"); + schema.registerSimple(map, "gtceu:mega_vacuum_freezer"); + // endregion + // endregion + + // region research + schema.registerSimple(map, "gtceu:research_station"); + schema.register(map, "gtceu:object_holder", () -> optionalFields( + "heldItems", notifiableItemHandler(schema) + )); + schema.registerSimple(map, "gtceu:data_bank"); + schema.registerSimple(map, "gtceu:network_switch"); + schema.registerSimple(map, "gtceu:high_performance_computation_array"); + schema.registerSimple(map, "gtceu:computation_transmitter_hatch"); + schema.registerSimple(map, "gtceu:computation_receiver_hatch"); + schema.registerSimple(map, "gtceu:data_transmitter_hatch"); + schema.registerSimple(map, "gtceu:data_receiver_hatch"); + final Supplier dataAccessHatch = () -> optionalFields( + "importItems", notifiableItemHandler(schema) + ); + schema.register(map, "gtceu:basic_data_access_hatch", dataAccessHatch); + schema.register(map, "gtceu:data_access_hatch", dataAccessHatch); + schema.register(map, "gtceu:advanced_data_access_hatch", dataAccessHatch); + schema.register(map, "gtceu:creative_data_access_hatch", dataAccessHatch); + schema.registerSimple(map, "gtceu:hpca_empty_component"); + schema.registerSimple(map, "gtceu:hpca_computation_component"); + schema.registerSimple(map, "gtceu:hpca_advanced_computation_component"); + schema.registerSimple(map, "gtceu:hpca_heat_sink_component"); + schema.registerSimple(map, "gtceu:hpca_active_cooler_component"); + schema.registerSimple(map, "gtceu:hpca_bridge_component"); + // endregion + + // region AE2 compat + if (LoadingModList.get().getModFileById(MODID_APPENG) != null) { // only add these if AE2 is loaded + schema.register(map, "gtceu:me_input_bus", itemBus); + schema.register(map, "gtceu:me_stocking_input_bus", itemBus); + schema.register(map, "gtceu:me_output_bus", itemBus); + schema.register(map, "gtceu:me_input_hatch", fluidHatch); + schema.register(map, "gtceu:me_stocking_input_hatch", fluidHatch); + schema.register(map, "gtceu:me_output_hatch", fluidHatch); + schema.register(map, "gtceu:me_pattern_buffer", () -> optionalFields( + "patternInventory", itemHandler(schema), + "shareInventory", notifiableItemHandler(schema), + "shareTank", notifiableFluidTank(schema), + "internalInventory", list( + fields( + "inventory", list(References.ITEM_STACK.in(schema)), + "fluidInventory", list(GTReferences.FLUID_STACK.in(schema)) + ) + ), + itemBus.get() + )); + schema.registerSimple(map, "gtceu:me_pattern_buffer_proxy"); + } + // endregion + + return map; + } + + private static void registerSimpleMachine(Schema schema, Map> map, String name, int... tiers) { + registerForTiers(schema, map, name, () -> optionalFields( + "importItems", notifiableItemHandler(schema), + "exportItems", notifiableItemHandler(schema), + "importFluids", notifiableFluidTank(schema), + "exportFluids", notifiableFluidTank(schema), + "chargerInventory", itemHandler(schema), + "circuitInventory", notifiableItemHandler(schema) + ), tiers); + } + + protected static void registerForTiers(Schema schema, Map> map, + String name, Supplier template, int... tiers) { + String namespace = name.substring(0, name.indexOf(':') + 1); + String path = name.substring(name.indexOf(':') + 1); + for (int tier : tiers) { + schema.register(map, namespace + GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + path, template); + } + } + + protected static void registerSteamMachine(Schema schema, Map> map, + String name, Supplier template) { + String namespace = name.substring(0, name.indexOf(':') + 1); + String path = name.substring(name.indexOf(':') + 1); + schema.register(map, namespace + "lp_" + path, template); + schema.register(map, namespace + "hp_" + path, template); + } + + protected static void registerSimpleSteamMachine(Schema schema, Map> map, String name) { + registerSteamMachine(schema, map, name, () -> optionalFields( + "importItems", notifiableItemHandler(schema), + "exportItems", notifiableItemHandler(schema), + "steamTank", notifiableFluidTank(schema) + )); + } + + protected static TypeTemplate itemHandler(Schema schema) { + return field("Items", list(References.ITEM_STACK.in(schema))); + } + + protected static TypeTemplate notifiableItemHandler(Schema schema) { + return field("storage", itemHandler(schema)); + } + + protected static TypeTemplate notifiableFluidTank(Schema schema) { + return field("storages", list(GTReferences.FLUID_STACK.in(schema))); + } + // spotless:on +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V1.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V1.java new file mode 100644 index 00000000000..fadc05354e7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V1.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.common.datafixer.schemas; + +import net.minecraft.util.datafix.schemas.NamespacedSchema; + +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.templates.TypeTemplate; + +import java.util.Map; +import java.util.function.Supplier; + +import static com.gregtechceu.gtceu.common.datafixer.schemas.V0.*; + +public class V1 extends NamespacedSchema { + + public V1(int versionKey, Schema parent) { + super(versionKey, parent); + } + + @Override + public Map> registerBlockEntities(Schema schema) { + Map> map = super.registerBlockEntities(schema); + + map.remove("gtceu:steam_miner"); + registerSimpleSteamMachine(schema, map, "gtceu:steam_miner"); + + return map; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V2_2.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V2_2.java new file mode 100644 index 00000000000..6711aa719cb --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V2_2.java @@ -0,0 +1,434 @@ +package com.gregtechceu.gtceu.common.datafixer.schemas; + +import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.common.data.datafixer.GTReferences; + +import net.minecraft.util.datafix.fixes.References; +import net.minecraft.util.datafix.schemas.NamespacedSchema; +import net.minecraftforge.fml.loading.LoadingModList; + +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.templates.TypeTemplate; + +import java.util.Map; +import java.util.function.Supplier; + +import static com.gregtechceu.gtceu.api.GTValues.*; +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.datafixer.schemas.V0.*; +import static com.mojang.datafixers.DSL.*; + +public class V2_2 extends NamespacedSchema { + + public V2_2(int versionKey, Schema parent) { + super(versionKey, parent); + } + + // spotless:off + @Override + public Map> registerBlockEntities(Schema schema) { + Map> map = super.registerBlockEntities(schema); + + final Supplier traitHolder = () -> traitHolder(schema); + + // region steam + final Supplier steamMachine = () -> optionalFields( + "steamTank", notifiableFluidTank(schema), + traitHolder(schema) + ); + final Supplier steamBoiler = () -> optionalFields( + "waterTank", notifiableFluidTank(schema), + steamMachine.get() + ); + registerSteamMachine(schema, map, "gtceu:steam_solar_boiler", steamBoiler); + registerSimpleSteamMachine(schema, map, "gtceu:extractor"); + registerSimpleSteamMachine(schema, map, "gtceu:steam_macerator"); + registerSimpleSteamMachine(schema, map, "gtceu:compressor"); + registerSimpleSteamMachine(schema, map, "gtceu:forge_hammer"); + registerSimpleSteamMachine(schema, map, "gtceu:furnace"); + registerSimpleSteamMachine(schema, map, "gtceu:alloy_smelter"); + registerSimpleSteamMachine(schema, map, "gtceu:rock_crusher"); + schema.register(map, "gtceu:steam_miner", () -> optionalFields( + "importItems", notifiableItemHandler(schema), + "exportItems", notifiableItemHandler(schema), + "steamTank", notifiableFluidTank(schema), + traitHolder(schema) + )); + // endregion + + // region simple + registerForTiers(schema, map, "gtceu:machine_hull", traitHolder, ALL_TIERS); + registerSimpleMachine(schema, map, "gtceu:electric_furnace", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:alloy_smelter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:arc_furnace", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:assembler", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:autoclave", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:bender", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:brewery", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:canner", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:centrifuge", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:chemical_bath", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:chemical_reactor", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:compressor", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:cutter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:distillery", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:electrolyzer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:electromagnetic_separator", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:extractor", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:extruder", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:fermenter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:fluid_heater", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:fluid_solidifier", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:forge_hammer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:forming_press", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:lathe", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:scanner", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:mixer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:ore_washer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:packer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:polarizer", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:laser_engraver", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:sifter", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:thermal_centrifuge", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:wiremill", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:circuit_assembler", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:macerator", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:gas_collector", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:rock_crusher", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:air_scrubber", LOW_TIERS); + registerSimpleMachine(schema, map, "gtceu:combustion", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:steam_turbine", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:gas_turbine", ELECTRIC_TIERS); + // endregion + + // region electric + final int[] transformerTiers = GTValues.tiersBetween(ULV, GTCEuAPI.isHighTier() ? OpV : UV); + registerForTiers(schema, map, "gtceu:transformer_1a", traitHolder, transformerTiers); + registerForTiers(schema, map, "gtceu:transformer_2a", traitHolder, transformerTiers); + registerForTiers(schema, map, "gtceu:transformer_4a", traitHolder, transformerTiers); + registerForTiers(schema, map, "gtceu:transformer_16a", traitHolder, transformerTiers); + + registerForTiers(schema, map, "gtceu:1a_energy_converter", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:4a_energy_converter", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:8a_energy_converter", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:16a_energy_converter", traitHolder, ALL_TIERS); + + schema.register(map, "gtceu:long_distance_item_pipeline_endpoint", traitHolder); + schema.register(map, "gtceu:long_distance_fluid_pipeline_endpoint", traitHolder); + schema.register(map, "gtceu:long_distance_fluid_pipeline_endpoint", traitHolder); + + final Supplier batteryBuffer = () -> optionalFields( + "batteryInventory", itemHandler(schema), + traitHolder(schema) + ); + registerForTiers(schema, map, "gtceu:battery_buffer_4x", batteryBuffer, ALL_TIERS); + registerForTiers(schema, map, "gtceu:battery_buffer_8x", batteryBuffer, ALL_TIERS); + registerForTiers(schema, map, "gtceu:battery_buffer_16x", batteryBuffer, ALL_TIERS); + registerForTiers(schema, map, "gtceu:charger_4x", batteryBuffer, ALL_TIERS); + + registerForTiers(schema, map, "gtceu:pump", () -> optionalFields( + "cache", notifiableFluidTank(schema), + traitHolder(schema) + ), LV, MV, HV, EV); + registerForTiers(schema, map, "gtceu:fisher", () -> optionalFields( + "cache", notifiableItemHandler(schema), + "baitHandler", notifiableItemHandler(schema), + "chargerInventory", itemHandler(schema), + traitHolder(schema) + ), LV, MV, HV, EV, IV, LuV); + registerForTiers(schema, map, "gtceu:block_breaker", () -> optionalFields( + "cache", notifiableItemHandler(schema), + "chargerInventory", itemHandler(schema), + traitHolder(schema) + ), LV, MV, HV, EV); + registerSimpleMachine(schema, map, "gtceu:miner", LV, MV, HV); + registerForTiers(schema, map, "gtceu:world_accelerator", traitHolder, LV, MV, HV, EV, IV, LuV, ZPM, UV); + registerForTiers(schema, map, "gtceu:item_collector", () -> optionalFields( + "output", notifiableItemHandler(schema), + "chargerInventory", itemHandler(schema), + "filterInventory", itemHandler(schema), + traitHolder(schema) + ), LV, MV, HV, EV); + // endregion + + // region storage + final Supplier itemStorage = () -> optionalFields( + "inventory", notifiableItemHandler(schema), + traitHolder(schema) + ); + registerForTiers(schema, map, "gtceu:buffer", () -> optionalFields( + "tank", notifiableFluidTank(schema), + itemStorage.get() + ), LV, MV, HV); + schema.register(map, "gtceu:creative_energy", traitHolder); + schema.register(map, "gtceu:creative_computation_provider", traitHolder); + + final Supplier quantumChest = () -> optionalFields( + "lockedFluid", GTReferences.FLUID_STACK.in(schema), + "stored", GTReferences.FLUID_STACK.in(schema), + traitHolder(schema) + ); + final Supplier quantumTank = () -> optionalFields( + "lockedItem", itemHandler(schema), + "stored", References.ITEM_STACK.in(schema), + traitHolder(schema) + ); + schema.register(map, "gtceu:creative_chest", quantumChest); + schema.register(map, "gtceu:creative_tank", quantumTank); + registerForTiers(schema, map, "gtceu:super_chest", quantumChest, LOW_TIERS); + registerForTiers(schema, map, "gtceu:quantum_chest", quantumChest, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:super_tank", quantumTank, LOW_TIERS); + registerForTiers(schema, map, "gtceu:quantum_tank", quantumTank, HIGH_TIERS); + + schema.register(map, "gtceu:wood_crate", itemStorage); + schema.register(map, "gtceu:bronze_crate", itemStorage); + schema.register(map, "gtceu:steel_crate", itemStorage); + schema.register(map, "gtceu:aluminium_crate", itemStorage); + schema.register(map, "gtceu:stainless_steel_crate", itemStorage); + schema.register(map, "gtceu:titanium_crate", itemStorage); + schema.register(map, "gtceu:tungsten_steel_crate", itemStorage); + + final Supplier drum = () -> optionalFields( + "stored", GTReferences.FLUID_STACK.in(schema), + traitHolder(schema) + ); + schema.register(map, "gtceu:wood_drum", drum); + schema.register(map, "gtceu:bronze_drum", drum); + schema.register(map, "gtceu:steel_drum", drum); + schema.register(map, "gtceu:aluminium_drum", drum); + schema.register(map, "gtceu:stainless_steel_drum", drum); + schema.register(map, "gtceu:gold_drum", drum); + schema.register(map, "gtceu:titanium_drum", drum); + schema.register(map, "gtceu:tungsten_steel_drum", drum); + // endregion + + // region part + final Supplier itemBus = () -> optionalFields( + "circuitSlot", notifiableItemHandler(schema), + itemStorage.get() + ); + registerForTiers(schema, map, "gtceu:input_bus", itemBus, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_bus", itemBus, ALL_TIERS); + final Supplier fluidHatch = () -> optionalFields( + "tank", notifiableFluidTank(schema), + "circuitSlot", notifiableItemHandler(schema), + traitHolder(schema) + ); + registerForTiers(schema, map, "gtceu:input_hatch", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:input_hatch_4x", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:input_hatch_9x", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_hatch", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_hatch_4x", fluidHatch, ALL_TIERS); + registerForTiers(schema, map, "gtceu:output_hatch_9x", fluidHatch, ALL_TIERS); + + registerForTiers(schema, map, "gtceu:energy_input_hatch", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_output_hatch", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_input_hatch_4a", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_output_hatch_4a", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_input_hatch_16a", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:energy_output_hatch_16a", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:substation_input_hatch_64a", traitHolder, ALL_TIERS); + registerForTiers(schema, map, "gtceu:substation_output_hatch_64a", traitHolder, ALL_TIERS); + + registerForTiers(schema, map, "gtceu:muffler_hatch", itemStorage, ELECTRIC_TIERS); + + schema.register(map, "gtceu:steam_input_bus", itemBus); + schema.register(map, "gtceu:steam_output_bus", itemBus); + schema.register(map, "gtceu:steam_input_hatch", fluidHatch); + schema.register(map, "gtceu:coke_oven_hatch", traitHolder); + schema.register(map, "gtceu:pump_hatch", fluidHatch); + final Supplier maintenanceHatch = () -> optionalFields( + "itemStackHandler", notifiableItemHandler(schema), + traitHolder(schema) + ); + schema.register(map, "gtceu:maintenance_hatch", maintenanceHatch); + schema.register(map, "gtceu:configurable_maintenance_hatch", maintenanceHatch); + schema.register(map, "gtceu:cleaning_maintenance_hatch", maintenanceHatch); + schema.register(map, "gtceu:auto_maintenance_hatch", maintenanceHatch); + + registerForTiers(schema, map, "gtceu:item_passthrough_hatch", itemBus, ELECTRIC_TIERS); + registerForTiers(schema, map, "gtceu:fluid_passthrough_hatch", fluidHatch, ELECTRIC_TIERS); + schema.register(map, "gtceu:reservoir_hatch", fluidHatch); + final Supplier dualHatch = () -> optionalFields( + "tank", notifiableFluidTank(schema), + itemBus.get() + ); + registerForTiers(schema, map, "gtceu:dual_input_hatch", dualHatch, DUAL_HATCH_TIERS); + registerForTiers(schema, map, "gtceu:dual_output_hatch", dualHatch, DUAL_HATCH_TIERS); + + registerForTiers(schema, map, "gtceu:diode", traitHolder, ELECTRIC_TIERS); + registerForTiers(schema, map, "gtceu:rotor_holder", () -> optionalFields( + "rotorMaterial", GTReferences.MATERIAL_NAME.in(schema), + itemStorage.get() + ), GTValues.tiersBetween(HV, GTCEuAPI.isHighTier() ? OpV : UV)); + + registerForTiers(schema, map, "gtceu:256a_laser_target_hatch", traitHolder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:256a_laser_source_hatch", traitHolder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:1024a_laser_target_hatch", traitHolder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:1024a_laser_source_hatch", traitHolder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:4096a_laser_target_hatch", traitHolder, HIGH_TIERS); + registerForTiers(schema, map, "gtceu:4096a_laser_source_hatch", traitHolder, HIGH_TIERS); + + schema.register(map, "gtceu:monitor", traitHolder); + schema.register(map, "gtceu:advanced_monitor", traitHolder); + // endregion + + // region multiblock + schema.register(map, "gtceu:bronze_large_boiler", traitHolder); + schema.register(map, "gtceu:steel_large_boiler", traitHolder); + schema.register(map, "gtceu:titanium_large_boiler", traitHolder); + schema.register(map, "gtceu:tungstensteel_large_boiler", traitHolder); + + final Supplier primitiveMachine = () -> optionalFields( + "importItems", notifiableItemHandler(schema), + "exportItems", notifiableItemHandler(schema), + "importFluids", notifiableFluidTank(schema), + "exportFluids", notifiableFluidTank(schema), + traitHolder(schema) + ); + schema.register(map, "gtceu:coke_oven", primitiveMachine); + schema.register(map, "gtceu:primitive_blast_furnace", primitiveMachine); + + schema.register(map, "gtceu:electric_blast_furnace", traitHolder); + schema.register(map, "gtceu:large_chemical_reactor", traitHolder); + schema.register(map, "gtceu:implosion_compressor", traitHolder); + schema.register(map, "gtceu:pyrolyse_oven", traitHolder); + schema.register(map, "gtceu:multi_smelter", traitHolder); + schema.register(map, "gtceu:cracker", traitHolder); + schema.register(map, "gtceu:distillation_tower", traitHolder); + schema.register(map, "gtceu:vacuum_freezer", traitHolder); + schema.register(map, "gtceu:assembly_line", traitHolder); + schema.register(map, "gtceu:primitive_pump", traitHolder); + schema.register(map, "gtceu:steam_grinder", traitHolder); + schema.register(map, "gtceu:steam_oven", traitHolder); + registerForTiers(schema, map, "gtceu:fusion_reactor", traitHolder, LuV, ZPM, UV); + registerForTiers(schema, map, "gtceu:fluid_drilling_rig", traitHolder, MV, HV, EV); + registerForTiers(schema, map, "gtceu:large_miner", traitHolder, EV, IV, LuV); + schema.register(map, "gtceu:cleanroom", traitHolder); + schema.register(map, "gtceu:large_combustion_engine", traitHolder); + schema.register(map, "gtceu:extreme_combustion_engine", traitHolder); + schema.register(map, "gtceu:steam_large_turbine", traitHolder); + schema.register(map, "gtceu:gas_large_turbine", traitHolder); + schema.register(map, "gtceu:plasma_large_turbine", traitHolder); + schema.register(map, "gtceu:active_transformer", traitHolder); + schema.register(map, "gtceu:power_substation", traitHolder); + registerForTiers(schema, map, "gtceu:bedrock_ore_miner", traitHolder, MV, HV, EV); + schema.register(map, "gtceu:wooden_tank_valve", traitHolder); + schema.register(map, "gtceu:wooden_multiblock_tank", traitHolder); + schema.register(map, "gtceu:bronze_tank_valve", traitHolder); + schema.register(map, "gtceu:bronze_multiblock_tank", traitHolder); + schema.register(map, "gtceu:steel_tank_valve", traitHolder); + schema.register(map, "gtceu:steel_multiblock_tank", traitHolder); + + schema.register(map, "gtceu:central_monitor", traitHolder); + + // region GCYM + registerForTiers(schema, map, "gtceu:parallel_hatch", traitHolder, IV, LuV, ZPM, UV); + schema.register(map, "gtceu:large_maceration_tower", traitHolder); + schema.register(map, "gtceu:large_chemical_bath", traitHolder); + schema.register(map, "gtceu:large_centrifuge", traitHolder); + schema.register(map, "gtceu:large_mixer", traitHolder); + schema.register(map, "gtceu:large_electrolyzer", traitHolder); + schema.register(map, "gtceu:large_electromagnet", traitHolder); + schema.register(map, "gtceu:large_packer", traitHolder); + schema.register(map, "gtceu:large_assembler", traitHolder); + schema.register(map, "gtceu:large_circuit_assembler", traitHolder); + schema.register(map, "gtceu:large_arc_smelter", traitHolder); + schema.register(map, "gtceu:large_engraving_laser", traitHolder); + schema.register(map, "gtceu:large_sifting_funnel", traitHolder); + schema.register(map, "gtceu:alloy_blast_smelter", traitHolder); + schema.register(map, "gtceu:large_autoclave", traitHolder); + schema.register(map, "gtceu:large_material_press", traitHolder); + schema.register(map, "gtceu:large_brewer", traitHolder); + schema.register(map, "gtceu:large_cutter", traitHolder); + schema.register(map, "gtceu:large_extractor", traitHolder); + schema.register(map, "gtceu:large_extruder", traitHolder); + schema.register(map, "gtceu:large_solidifier", traitHolder); + schema.register(map, "gtceu:large_wiremill", traitHolder); + schema.register(map, "gtceu:mega_blast_furnace", traitHolder); + schema.register(map, "gtceu:mega_vacuum_freezer", traitHolder); + // endregion + // endregion + + // region research + schema.register(map, "gtceu:research_station", traitHolder); + schema.register(map, "gtceu:object_holder", () -> optionalFields( + "heldItems", notifiableItemHandler(schema), + traitHolder(schema) + )); + schema.register(map, "gtceu:data_bank", traitHolder); + schema.register(map, "gtceu:network_switch", traitHolder); + schema.register(map, "gtceu:high_performance_computation_array", traitHolder); + schema.register(map, "gtceu:computation_transmitter_hatch", traitHolder); + schema.register(map, "gtceu:computation_receiver_hatch", traitHolder); + schema.register(map, "gtceu:data_transmitter_hatch", traitHolder); + schema.register(map, "gtceu:data_receiver_hatch", traitHolder); + final Supplier dataAccessHatch = () -> optionalFields( + "importItems", notifiableItemHandler(schema), + traitHolder(schema) + ); + schema.register(map, "gtceu:basic_data_access_hatch", dataAccessHatch); + schema.register(map, "gtceu:data_access_hatch", dataAccessHatch); + schema.register(map, "gtceu:advanced_data_access_hatch", dataAccessHatch); + schema.register(map, "gtceu:creative_data_access_hatch", dataAccessHatch); + schema.register(map, "gtceu:hpca_empty_component", traitHolder); + schema.register(map, "gtceu:hpca_computation_component", traitHolder); + schema.register(map, "gtceu:hpca_advanced_computation_component", traitHolder); + schema.register(map, "gtceu:hpca_heat_sink_component", traitHolder); + schema.register(map, "gtceu:hpca_active_cooler_component", traitHolder); + schema.register(map, "gtceu:hpca_bridge_component", traitHolder); + // endregion + + // region AE2 compat + if (LoadingModList.get().getModFileById(MODID_APPENG) != null) { // only add these if AE2 is loaded + schema.register(map, "gtceu:me_input_bus", itemBus); + schema.register(map, "gtceu:me_stocking_input_bus", itemBus); + schema.register(map, "gtceu:me_output_bus", itemBus); + schema.register(map, "gtceu:me_input_hatch", fluidHatch); + schema.register(map, "gtceu:me_stocking_input_hatch", fluidHatch); + schema.register(map, "gtceu:me_output_hatch", fluidHatch); + schema.register(map, "gtceu:me_pattern_buffer", () -> optionalFields( + "patternInventory", itemHandler(schema), + "shareInventory", notifiableItemHandler(schema), + "shareTank", notifiableFluidTank(schema), + "internalInventory", list( + fields( + "inventory", list(References.ITEM_STACK.in(schema)), + "fluidInventory", list(GTReferences.FLUID_STACK.in(schema)) + ) + ), + itemBus.get() + )); + schema.register(map, "gtceu:me_pattern_buffer_proxy", traitHolder); + } + // endregion + + return map; + } + + protected static void registerSimpleMachine(Schema schema, Map> map, String name, int... tiers) { + registerForTiers(schema, map, name, () -> optionalFields( + "importItems", notifiableItemHandler(schema), + "exportItems", notifiableItemHandler(schema), + "importFluids", notifiableFluidTank(schema), + "exportFluids", notifiableFluidTank(schema), + traitHolder(schema) + ), tiers); + } + + protected static TypeTemplate traitHolder(Schema schema) { + return optionalFields( + "traitHolder", optionalFields( + // TODO I'm not sure if this is all of the item/fluid fields? - add missing ones if not + "batterySlot", notifiableItemHandler(schema), + optional(or( + fields("circuit", notifiableItemHandler(schema)), + fields("circuitSlot", notifiableItemHandler(schema)) + )) + ) + ); + } + // spotless:on +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V2_3.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V2_3.java new file mode 100644 index 00000000000..409e5c89675 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V2_3.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.common.datafixer.schemas; + +import net.minecraft.util.datafix.schemas.NamespacedSchema; + +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.templates.TypeTemplate; + +import java.util.Map; +import java.util.function.Supplier; + +import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.ELECTRIC_TIERS; +import static com.gregtechceu.gtceu.common.datafixer.schemas.V2_2.registerSimpleMachine; + +public class V2_3 extends NamespacedSchema { + + public V2_3(int versionKey, Schema parent) { + super(versionKey, parent); + } + + @Override + public Map> registerBlockEntities(Schema schema) { + Map> map = super.registerBlockEntities(schema); + + registerSimpleMachine(schema, map, "gtceu:welder", ELECTRIC_TIERS); + registerSimpleMachine(schema, map, "gtceu:spooler", ELECTRIC_TIERS); + + return map; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V3_1.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V3_1.java new file mode 100644 index 00000000000..6f2aa64e18f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/V3_1.java @@ -0,0 +1,26 @@ +package com.gregtechceu.gtceu.common.datafixer.schemas; + +import net.minecraft.util.datafix.schemas.NamespacedSchema; + +import com.mojang.datafixers.schemas.Schema; +import com.mojang.datafixers.types.templates.TypeTemplate; + +import java.util.Map; +import java.util.function.Supplier; + +public class V3_1 extends NamespacedSchema { + + public V3_1(int versionKey, Schema parent) { + super(versionKey, parent); + } + + @Override + public Map> registerBlockEntities(Schema schema) { + Map> map = super.registerBlockEntities(schema); + + schema.register(map, "gtceu:rotary_hearth_furnace", map.remove("gtceu:mega_blast_furnace")); + schema.register(map, "gtceu:bulk_blast_chiller", map.remove("gtceu:mega_vacuum_freezer")); + + return map; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/package-info.java b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/package-info.java new file mode 100644 index 00000000000..a5712064fb1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/datafixer/schemas/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.common.datafixer.schemas; + +import org.jetbrains.annotations.NotNullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/testmultis/PCBFactoryMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/testmultis/PCBFactoryMachine.java index c4ec9877989..a607f62b02a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/testmultis/PCBFactoryMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/testmultis/PCBFactoryMachine.java @@ -10,8 +10,9 @@ import org.jetbrains.annotations.NotNull; -import static com.gregtechceu.gtceu.common.data.GTBlocks.CASING_GRATE; +import static com.gregtechceu.gtceu.common.data.GTBlocks.CASING_ASSEMBLY_GRATE; +// FIXME why is this here?! public class PCBFactoryMachine extends WorkableElectricMultiblockMachine { public PCBFactoryMachine(BlockEntityCreationInfo info) { @@ -27,7 +28,7 @@ public IBlockPattern getDefaultStructurePattern() { .where('C', /* * Predicates.autoAbilities(true, false, false) * .or( - */Predicates.blocks(CASING_GRATE.get()).setMinGlobalLimited(12)) + */Predicates.blocks(CASING_ASSEMBLY_GRATE.get()).setMinGlobalLimited(12)) .where('S', Predicates.controller(Predicates.blocks(getDefinition().getBlock()))) .where('B', Predicates.frames(GTMaterials.Steel)) .build(); diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index b091cb08512..317dabc9971 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -187,6 +187,13 @@ public static class RecipeConfigs { public static class CompatibilityConfigs { + @Configurable + @Configurable.Comment({ "Whether to apply datafixers when necessary.", + "Do note that mods like ModernFix might interfere with this.", + "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) + public boolean doDataFixers = true; + @Configurable @Configurable.Comment("Config options regarding GTEU compatibility with other energy systems") public EnergyCompatConfig energy = new EnergyCompatConfig(); diff --git a/src/main/java/com/gregtechceu/gtceu/core/config/GTEarlyConfig.java b/src/main/java/com/gregtechceu/gtceu/core/config/GTEarlyConfig.java index 58b15e174f2..7cb00ab03bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/config/GTEarlyConfig.java +++ b/src/main/java/com/gregtechceu/gtceu/core/config/GTEarlyConfig.java @@ -61,6 +61,8 @@ private GTEarlyConfig(File file) { enableIfModPresent("xaerominimap", "xaerominimap"); enableIfModPresent("xaeroworldmap", "xaeroworldmap"); + enableIfModPresent("datafixer.modernfix", "modernfix"); + // bind non-empty parents for (Map.Entry entry : this.options.entrySet()) { if (entry.getValue().getParent() != null) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/DataFixTypesMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/DataFixTypesMixin.java new file mode 100644 index 00000000000..64557d6cc29 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/DataFixTypesMixin.java @@ -0,0 +1,31 @@ +package com.gregtechceu.gtceu.core.mixins.datafixer; + +import com.gregtechceu.gtceu.api.datafixer.DataFixHelper; + +import net.minecraft.util.datafix.DataFixTypes; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.mojang.datafixers.DSL; +import com.mojang.serialization.Dynamic; +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; + +@Mixin(DataFixTypes.class) +public class DataFixTypesMixin { + + @Shadow + @Final + private DSL.TypeReference type; + + // ModifyReturnValue to inject our fixes *after* vanilla ones + @ModifyReturnValue(method = "update(Lcom/mojang/datafixers/DataFixer;Lcom/mojang/serialization/Dynamic;II)Lcom/mojang/serialization/Dynamic;", + at = @At(value = "RETURN")) + private Dynamic gtceu$injectDataFixers(Dynamic value) { + // skip applying datafixers to options.txt; doing that loads the fixers too early + if ((Object) this == DataFixTypes.OPTIONS) return value; + + return DataFixHelper.updateToCurrentVersion(this.type, value); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/ForgeHooksMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/ForgeHooksMixin.java new file mode 100644 index 00000000000..9f91b8610c7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/ForgeHooksMixin.java @@ -0,0 +1,30 @@ +package com.gregtechceu.gtceu.core.mixins.datafixer; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.datafixer.DataFixHelper; +import com.gregtechceu.gtceu.common.data.datafixer.GTReferences; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraftforge.common.ForgeHooks; + +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.ModifyVariable; + +@Mixin(value = ForgeHooks.class, remap = false) +public class ForgeHooksMixin { + + @ModifyVariable(method = "writeAdditionalLevelSaveData", at = @At(value = "STORE"), name = "fmlData") + private static CompoundTag gtceu$addDataVersions(CompoundTag fmlData) { + return NbtUtils.addCurrentDataVersion(fmlData); + } + + @ModifyVariable(method = "readAdditionalLevelSaveData", at = @At(value = "STORE"), name = "regs") + private static CompoundTag gtceu$fixRegistriesTag(CompoundTag regs, + @Local(name = "tag") CompoundTag tag) { + int currentVersion = DataFixHelper.getGTDataVersion(tag); + return DataFixHelper.update(GTReferences.FORGE_REGISTRY_DATA, regs, currentVersion, GTCEu.GT_DATA_VERSION); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/NbtUtilsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/NbtUtilsMixin.java new file mode 100644 index 00000000000..2f378163157 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/NbtUtilsMixin.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.core.mixins.datafixer; + +import com.gregtechceu.gtceu.api.datafixer.DataFixHelper; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(NbtUtils.class) +public class NbtUtilsMixin { + + @ModifyReturnValue(method = "addDataVersion", at = @At("RETURN")) + private static CompoundTag gtceu$addGTDataVersion(CompoundTag tag) { + return DataFixHelper.addGTDataVersion(tag); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/V705Accessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/V705Accessor.java new file mode 100644 index 00000000000..eb71256ae1e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/V705Accessor.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.core.mixins.datafixer; + +import net.minecraft.util.datafix.schemas.V705; + +import com.mojang.datafixers.types.templates.Hook; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(V705.class) +public interface V705Accessor { + + @Accessor("ADD_NAMES") + static Hook.HookFunction gtceu$getAddNames() { + throw new AssertionError("Mixin didn't apply"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/modernfix/CachingStructureManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/modernfix/CachingStructureManagerMixin.java new file mode 100644 index 00000000000..20031b1cee0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/datafixer/modernfix/CachingStructureManagerMixin.java @@ -0,0 +1,62 @@ +package com.gregtechceu.gtceu.core.mixins.datafixer.modernfix; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.datafixer.DataFixHelper; +import com.gregtechceu.gtceu.common.data.datafixer.GTDataFixers; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; + +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.datafixers.DataFixer; +import org.embeddedt.modernfix.structure.CachingStructureManager; +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 java.io.InputStream; + +/** + * Mixin to ModernFix's structure cache to make it account for GT's data version as well as the vanilla one. + * + * @author screret + * @implNote This is the approach recommended by EmbeddedT.
+ * (He couldn't figure out a better way to do this than this relatively small mixin) + */ +@Mixin(value = CachingStructureManager.class, remap = false) +public class CachingStructureManagerMixin { + + @Definition(id = "currentDataVersion", local = @Local(type = int.class, name = "currentDataVersion")) + @Expression("currentDataVersion < ?") + @ModifyExpressionValue(method = "readStructureTag", at = @At("MIXINEXTRAS:EXPRESSION")) + private static boolean gtceu$alsoRequireGTDataVersionToBeUpToDate1(boolean original, + @Local CompoundTag currentTag) { + if (GTDataFixers.getDataFixer() == null) return original; + return original || DataFixHelper.getGTDataVersion(currentTag) < GTCEu.GT_DATA_VERSION; + } + + @Definition(id = "cachedUpgraded", local = @Local(type = CompoundTag.class, name = "cachedUpgraded")) + @Definition(id = "getInt", method = "Lnet/minecraft/nbt/CompoundTag;getInt(Ljava/lang/String;)I", remap = true) + @Expression("cachedUpgraded.getInt('DataVersion') == ?") + @ModifyExpressionValue(method = "readStructureTag", at = @At("MIXINEXTRAS:EXPRESSION")) + private static boolean gtceu$alsoRequireGTDataVersionToBeUpToDate2(boolean original, + @Local(name = "cachedUpgraded") CompoundTag cachedUpgraded) { + if (GTDataFixers.getDataFixer() == null) return original; + return original && cachedUpgraded.getInt(DataFixHelper.GT_DATA_VERSION_TAG) == GTCEu.GT_DATA_VERSION; + } + + @Inject(method = "readStructureTag", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/nbt/CompoundTag;putInt(Ljava/lang/String;I)V", + remap = true, + ordinal = 1)) + private static void gtceu$addGTDataVersion(ResourceLocation location, DataFixer datafixer, InputStream stream, + CallbackInfoReturnable cir, + @Local(name = "currentTag") CompoundTag currentTag) { + DataFixHelper.addGTDataVersion(currentTag); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java index 92f44e6f0f7..66bf1ea7de7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java @@ -34,34 +34,20 @@ private static void initCasingLang(RegistrateLangProvider provider) { provider.add("block.gtceu.substation_capacitor.tooltip_filled", "§cEnergy Capacity: §f%d EU"); // Casings - replace(provider, "block.gtceu.bronze_brick_casing", "Bricked Bronze Casing"); - replace(provider, "block.gtceu.steel_brick_casing", "Bricked Wrought Iron Casing"); replace(provider, "block.gtceu.heatproof_machine_casing", "Heat Proof Invar Machine Casing"); replace(provider, "block.gtceu.frostproof_machine_casing", "Frost Proof Aluminium Machine Casing"); replace(provider, "block.gtceu.steel_machine_casing", "Solid Steel Machine Casing"); replace(provider, "block.gtceu.clean_machine_casing", "Clean Stainless Steel Casing"); replace(provider, "block.gtceu.stable_machine_casing", "Stable Titanium Machine Casing"); replace(provider, "block.gtceu.robust_machine_casing", "Robust Tungstensteel Machine Casing"); - replace(provider, "block.gtceu.casing_coke_bricks", "Coke Oven Bricks"); replace(provider, "block.gtceu.inert_machine_casing", "Chemically Inert PTFE Machine Casing"); replace(provider, "block.gtceu.sturdy_machine_casing", "Sturdy HSS-E Machine Casing"); - replace(provider, "block.gtceu.casing_grate", "Grate Machine Casing"); - replace(provider, "block.gtceu.assembly_line_unit", "Assembly Control Casing"); replace(provider, "block.gtceu.ptfe_pipe_casing", "PTFE Pipe Casing"); replace(provider, "block.gtceu.bronze_gearbox", "Bronze Gearbox Casing"); replace(provider, "block.gtceu.steel_gearbox", "Steel Gearbox Casing"); replace(provider, "block.gtceu.stainless_steel_gearbox", "Stainless Steel Gearbox Casing"); replace(provider, "block.gtceu.titanium_gearbox", "Titanium Gearbox Casing"); replace(provider, "block.gtceu.tungstensteel_gearbox", "Tungstensteel Gearbox Casing"); - replace(provider, "block.gtceu.steel_turbine_casing", "Magnalium Turbine Casing"); - replace(provider, "block.gtceu.titanium_turbine_casing", "Titanium Turbine Casing"); - replace(provider, "block.gtceu.stainless_steel_turbine_casing", "Stainless Turbine Casing"); - replace(provider, "block.gtceu.tungstensteel_turbine_casing", "Tungstensteel Turbine Casing"); - replace(provider, "block.gtceu.bronze_pipe_casing", "Bronze Pipe Casing"); - replace(provider, "block.gtceu.steel_pipe_casing", "Steel Pipe Casing"); - replace(provider, "block.gtceu.titanium_pipe_casing", "Titanium Pipe Casing"); - replace(provider, "block.gtceu.tungstensteel_pipe_casing", "Tungstensteel Pipe Casing"); - replace(provider, "block.gtceu.palladium_substation", "Palladium Substation Casing"); replace(provider, "block.gtceu.steam_casing_bronze", "Bronze Hull"); provider.add("block.gtceu.steam_casing_bronze.tooltip", "§7For your first Steam Machines"); 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 3a1969c4ca0..c21029bb12a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java @@ -159,7 +159,6 @@ private static void initItemTooltips(RegistrateLangProvider provider) { provider.add("item.gtceu.circuit.integrated.gui", "§7Programmed Circuit Configuration"); // multilineLang(provider, "item.gtceu.circuit.integrated.jei_description", "JEI is only showing recipes for the // given configuration.\n\nYou can select a configuration in the Programmed Circuit configuration tab."); - provider.add("item.glass_lens", "Glass Lens (White)"); // todo move to material overrides provider.add("item.gtceu.silicon_boule.tooltip", "§7Raw Circuit"); provider.add("item.gtceu.phosphorus_boule.tooltip", "§7Raw Circuit"); provider.add("item.gtceu.naquadah_boule.tooltip", "§7Raw Circuit"); 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 92f09cb015a..e1bcd59a166 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -521,6 +521,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("cover.detector_base.message_normal_state", "Monitoring Status: Normal"); provider.add("cover.detector_base.message_inverted_state", "Monitoring Status: Inverted"); + // FIXME why is this duplicated?? just append it to the tooltip in code. + // also, this thing adds an empty string to the translation file. var detectorLatchDescription = """ Change the redstone behavior of this Cover. §eContinuous§7 - Default; values less than the minimum output 0; values higher than the maximum output 15; values between min and max output between 0 and 15 @@ -534,11 +536,15 @@ public static void init(RegistrateLangProvider provider) { provider.add("cover.advanced_energy_detector.min", "Min"); provider.add("cover.advanced_energy_detector.max", "Max"); + // FIXME why is this duplicated?? just append it to the tooltip in code. + // also, this thing adds 2 empty strings to the translation file. var advancedEnergyDetectorInvertDescription = "Toggle to invert the redstone logic\nBy default, redstone is emitted when less than the minimum EU, and stops emitting when greater than the max EU"; multilineLang(provider, "cover.advanced_energy_detector.invert.enabled", "Output: Inverted\n\n" + advancedEnergyDetectorInvertDescription); multilineLang(provider, "cover.advanced_energy_detector.invert.disabled", "Output: Normal\n\n" + advancedEnergyDetectorInvertDescription); + // FIXME why is this duplicated?? just append it to the tooltip in code. + // also, this thing adds 2 empty strings to the translation file. var advancedEnergyDetectorModeDescription = "Change between using discrete EU values or percentages for comparing min/max against an attached energy storage."; multilineLang(provider, "cover.advanced_energy_detector.use_percent.enabled", "Mode: Percentage\n\n" + advancedEnergyDetectorModeDescription); @@ -546,6 +552,8 @@ public static void init(RegistrateLangProvider provider) { "Mode: Discrete EU\n\n" + advancedEnergyDetectorModeDescription); provider.add("cover.advanced_fluid_detector.label", "Advanced Fluid Detector"); + // FIXME why is this duplicated?? just append it to the tooltip in code. + // also, this thing adds 2 empty strings to the translation file. var advancedFluidDetectorInvertDescription = "Toggle to invert the redstone logic\nBy default, redstone stops emitting when less than the minimum mB of fluid, and starts emitting when greater than the min mB of fluid up to the set maximum"; multilineLang(provider, "cover.advanced_fluid_detector.invert.enabled", "Output: Inverted\n\n" + advancedFluidDetectorInvertDescription); @@ -555,6 +563,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("cover.advanced_fluid_detector.min", "Min Fluid (mB)"); provider.add("cover.advanced_item_detector.label", "Advanced Item Detector"); + // FIXME why is this duplicated?? just append it to the tooltip in code. + // also, this thing adds 2 empty strings to the translation file. var advancedItemDetectorInvertDescription = "Toggle to invert the redstone logic\nBy default, redstone stops emitting when less than the minimum amount of items, and starts emitting when greater than the min amount of items up to the set maximum"; multilineLang(provider, "cover.advanced_item_detector.invert.enabled", "Output: Inverted\n\n" + advancedItemDetectorInvertDescription); @@ -567,9 +577,9 @@ public static void init(RegistrateLangProvider provider) { replace(provider, "item.gtceu.bucket", "%s Bucket"); - replace(provider, "block.gtceu.oil_heavy", "Heavy Oil"); - replace(provider, "block.gtceu.oil_light", "Light Oil"); - replace(provider, "block.gtceu.oil_medium", "Raw Oil"); + replace(provider, "block.gtceu.heavy_oil", "Heavy Oil"); + replace(provider, "block.gtceu.light_oil", "Light Oil"); + replace(provider, "block.gtceu.raw_oil", "Raw Oil"); replace(provider, "block.gtceu.oil", "Oil"); replace(provider, "block.gtceu.creosote", "Creosote"); @@ -583,8 +593,8 @@ public static void init(RegistrateLangProvider provider) { replace(provider, GTBlocks.BATTERY_LAPOTRONIC_UV.get().getDescriptionId(), "UV Lapotronic Capacitor"); replace(provider, GTBlocks.BATTERY_ULTIMATE_UHV.get().getDescriptionId(), "UHV Ultimate Capacitor"); - provider.add("item.netherrack_nether_quartz", "Nether Quartz Ore"); - provider.add("block.surface_rock", "%s Surface Rock"); + provider.add("item.gtceu.netherrack_nether_quartz", "Nether Quartz Ore"); + provider.add("block.gtceu.surface_rock", "%s Surface Rock"); provider.add("item.gtceu.tiny_gunpowder_dust", "Tiny Pile of Gunpowder"); provider.add("item.gtceu.small_gunpowder_dust", "Small Pile of Gunpowder"); @@ -646,6 +656,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("item.gtceu.flawless_glass_gem", "Flawless Glass Crystal"); provider.add("item.gtceu.exquisite_glass_gem", "Exquisite Glass Crystal"); provider.add("item.gtceu.glass_plate", "Glass Pane"); + provider.add("item.gtceu.glass_lens", "Glass Lens (White)"); provider.add("item.gtceu.tiny_blaze_dust", "Tiny Pile of Blaze Powder"); provider.add("item.gtceu.small_blaze_dust", "Small Pile of Blaze Powder"); provider.add("item.gtceu.tiny_sugar_dust", "Tiny Pile of Sugar"); @@ -706,9 +717,9 @@ public static void init(RegistrateLangProvider provider) { provider.add("item.gtceu.tiny_platinum_raw_dust", "Tiny Pile of Raw Platinum Powder"); provider.add("item.gtceu.small_platinum_raw_dust", "Small Pile of Raw Platinum Powder"); provider.add("item.gtceu.platinum_raw_dust", "Raw Platinum Powder"); - provider.add("item.gtceu.tiny_palladium_raw_dust", "Tiny Pile of Raw Palladium Powder"); - provider.add("item.gtceu.small_palladium_raw_dust", "Small Pile of Raw Palladium Powder"); - provider.add("item.gtceu.palladium_raw_dust", "Raw Palladium Powder"); + provider.add("item.gtceu.tiny_raw_palladium_dust", "Tiny Pile of Raw Palladium Powder"); + provider.add("item.gtceu.small_raw_palladium_dust", "Small Pile of Raw Palladium Powder"); + provider.add("item.gtceu.raw_palladium_dust", "Raw Palladium Powder"); provider.add("item.gtceu.tiny_inert_metal_mixture_dust", "Tiny Pile of Inert Metal Mixture"); provider.add("item.gtceu.small_inert_metal_mixture_dust", "Small Pile of Inert Metal Mixture"); provider.add("item.gtceu.inert_metal_mixture_dust", "Inert Metal Mixture"); 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 2ff251d5521..a3840873968 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 @@ -92,7 +92,7 @@ public static void init(Consumer provider) { .save(provider); LARGE_BOILER_RECIPES.recipeBuilder("gtceu_oil_heavy") - .inputFluids(OilHeavy.getFluid(32)) + .inputFluids(HeavyOil.getFluid(32)) .duration(50) .save(provider); @@ -191,7 +191,7 @@ public static void init(Consumer provider) { .save(provider); COMBUSTION_GENERATOR_FUELS.recipeBuilder("light_oil") - .inputFluids(OilLight.getFluid(32)) + .inputFluids(LightOil.getFluid(32)) .duration(5) .EUt(-V[LV]) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCYMRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCYMRecipes.java index ea048d869eb..f1b7fd634b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCYMRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCYMRecipes.java @@ -104,12 +104,12 @@ private static void registerMultiblockControllerRecipes(Consumer VanillaRecipeHelper.addShapedRecipe(provider, true, "blast_alloy_smelter", BLAST_ALLOY_SMELTER.asStack(), "TCT", "WXW", "TCT", 'C', CustomTags.EV_CIRCUITS, 'T', new MaterialEntry(plate, TantalumCarbide), 'W', new MaterialEntry(cableGtSingle, Aluminium), 'X', ALLOY_SMELTER[EV].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "mega_blast_furnace", MEGA_BLAST_FURNACE.asStack(), "PCP", - "FSF", "DWD", 'C', ZPM_CIRCUITS, 'S', GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), 'F', + VanillaRecipeHelper.addShapedRecipe(provider, true, "rotary_hearth_furnace", ROTARY_HEARTH_FURNACE.asStack(), + "PCP", "FSF", "DWD", 'C', ZPM_CIRCUITS, 'S', GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), 'F', FIELD_GENERATOR_ZPM.asStack(), 'P', new MaterialEntry(spring, Naquadah), 'D', new MaterialEntry(plateDense, NaquadahAlloy), 'W', new MaterialEntry(wireGtQuadruple, RutheniumTriniumAmericiumNeutronate)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "mega_vacuum_freezer", MEGA_VACUUM_FREEZER.asStack(), "PCP", + VanillaRecipeHelper.addShapedRecipe(provider, true, "bulk_blast_chiller", BULK_BLAST_CHILLER.asStack(), "PCP", "FSF", "DWD", 'C', ZPM_CIRCUITS, 'S', GTMultiMachines.VACUUM_FREEZER.asStack(), 'F', FIELD_GENERATOR_ZPM.asStack(), 'P', new MaterialEntry(pipeNormalFluid, NiobiumTitanium), 'D', 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 ae31fac67f3..ba5159543d7 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 @@ -859,23 +859,31 @@ private static void registerAssemblerRecipes(Consumer provider) .duration(100).cleanroom(CleanroomType.CLEANROOM) .addMaterialInfo(true, true).save(provider); - WELDER_RECIPES.recipeBuilder("casing_steel_turbine").EUt(16).inputItems(plate, Magnalium, 6) - .inputItems(frameGt, BlueSteel, 1).circuitMeta(6) - .outputItems(GTBlocks.CASING_STEEL_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft)) + WELDER_RECIPES.recipeBuilder("casing_magnalium_turbine").EUt(16) + .inputItems(plate, Magnalium, 6) + .inputItems(frameGt, BlueSteel, 1) + .circuitMeta(6) + .outputItems(GTBlocks.CASING_MAGNALIUM_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft)) .duration(50) .addMaterialInfo(true).save(provider); WELDER_RECIPES.recipeBuilder("casing_stainless_steel_turbine").EUt(16) - .inputItems(GTBlocks.CASING_STEEL_TURBINE.asStack()).inputItems(plate, StainlessSteel, 6).circuitMeta(6) + .inputItems(GTBlocks.CASING_MAGNALIUM_TURBINE.asStack()) + .inputItems(plate, StainlessSteel, 6) + .circuitMeta(6) .outputItems(GTBlocks.CASING_STAINLESS_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft)) .duration(50) .addMaterialInfo(true).save(provider); WELDER_RECIPES.recipeBuilder("casing_titanium_turbine").EUt(16) - .inputItems(GTBlocks.CASING_STEEL_TURBINE.asStack()).inputItems(plate, Titanium, 6).circuitMeta(6) + .inputItems(GTBlocks.CASING_MAGNALIUM_TURBINE.asStack()) + .inputItems(plate, Titanium, 6) + .circuitMeta(6) .outputItems(GTBlocks.CASING_TITANIUM_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft)) .duration(50) .addMaterialInfo(true).save(provider); WELDER_RECIPES.recipeBuilder("casing_tungstensteel_turbine").EUt(16) - .inputItems(GTBlocks.CASING_STEEL_TURBINE.asStack()).inputItems(plate, TungstenSteel, 6).circuitMeta(6) + .inputItems(GTBlocks.CASING_MAGNALIUM_TURBINE.asStack()) + .inputItems(plate, TungstenSteel, 6) + .circuitMeta(6) .outputItems( GTBlocks.CASING_TUNGSTENSTEEL_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft)) .duration(50) @@ -935,22 +943,22 @@ private static void registerAssemblerRecipes(Consumer provider) .outputItems(CASING_EXTREME_ENGINE_INTAKE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft)) .duration(50).EUt(16).save(provider); - ASSEMBLER_RECIPES.recipeBuilder("casing_grate_casing") + ASSEMBLER_RECIPES.recipeBuilder("assembly_line_grating") .inputItems(Items.IRON_BARS, 6) .inputItems(frameGt, Steel) .inputItems(ELECTRIC_MOTOR_MV) .inputItems(rotor, Steel) - .outputItems(GTBlocks.CASING_GRATE, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .outputItems(GTBlocks.CASING_ASSEMBLY_GRATE, ConfigHolder.INSTANCE.recipes.casingsPerCraft) .duration(800) .EUt(VA[IV]) .save(provider); - ASSEMBLER_RECIPES.recipeBuilder("assembly_line_casing") + ASSEMBLER_RECIPES.recipeBuilder("assembly_line_unit") .inputItems(gear, Ruridit, 2) .inputItems(plate, Steel, 4) .inputItems(ROBOT_ARM_IV, 2) .inputItems(frameGt, TungstenSteel) - .outputItems(GTBlocks.CASING_ASSEMBLY_LINE, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .outputItems(GTBlocks.CASING_ASSEMBLY_UNIT, ConfigHolder.INSTANCE.recipes.casingsPerCraft) .duration(650) .EUt(VA[IV]) .save(provider); @@ -1352,8 +1360,8 @@ private static void registerRecyclingRecipes(Consumer provider) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_red_granite") - .inputItems(rock, GraniteRed) - .outputItems(dust, GraniteRed) + .inputItems(rock, RedGranite) + .outputItems(dust, RedGranite) .chancedOutput(dust, Uranium238, 25) .duration(150).EUt(2) .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 c7e1c8d1e1d..212f89a1102 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 @@ -60,7 +60,7 @@ public static void init(Consumer provider) { registerMachineRecipe(provider, false, GTMachines.HULL, "PLP", "CHC", 'P', HULL_PLATE, 'L', PLATE, 'C', CABLE, 'H', CASING); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_coke_bricks", GTBlocks.CASING_COKE_BRICKS.asStack(), + VanillaRecipeHelper.addShapedRecipe(provider, true, "coke_oven_bricks", GTBlocks.CASING_COKE_BRICKS.asStack(), "XX", "XX", 'X', GTItems.COKE_OVEN_BRICK); VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_bronze_bricks", GTBlocks.CASING_BRONZE_BRICKS.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PhP", "PBP", @@ -96,21 +96,21 @@ public static void init(Consumer provider) { new MaterialEntry(TagPrefix.frameGt, GTMaterials.Europium)); VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_steel_turbine_casing", - GTBlocks.CASING_STEEL_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PhP", "PFP", + GTBlocks.CASING_MAGNALIUM_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PhP", "PFP", "PwP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Magnalium), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.BlueSteel)); VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_stainless_turbine_casing", GTBlocks.CASING_STAINLESS_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PhP", "PFP", "PwP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.StainlessSteel), 'F', - GTBlocks.CASING_STEEL_TURBINE.asStack()); + GTBlocks.CASING_MAGNALIUM_TURBINE.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_titanium_turbine_casing", GTBlocks.CASING_TITANIUM_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PhP", "PFP", "PwP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', - GTBlocks.CASING_STEEL_TURBINE.asStack()); + GTBlocks.CASING_MAGNALIUM_TURBINE.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_tungstensteel_turbine_casing", GTBlocks.CASING_TUNGSTENSTEEL_TURBINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PhP", "PFP", "PwP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.TungstenSteel), 'F', - GTBlocks.CASING_STEEL_TURBINE.asStack()); + GTBlocks.CASING_MAGNALIUM_TURBINE.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_bronze_pipe", GTBlocks.CASING_BRONZE_PIPE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PIP", "IFI", "PIP", @@ -187,17 +187,18 @@ public static void init(Consumer provider) { new MaterialEntry(TagPrefix.frameGt, GTMaterials.TungstenSteel), 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.TungstenSteel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_grate_casing", - GTBlocks.CASING_GRATE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PVP", "PFP", "PMP", 'P', + VanillaRecipeHelper.addShapedRecipe(provider, true, "assembly_line_grating", + GTBlocks.CASING_ASSEMBLY_GRATE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PVP", "PFP", + "PMP", 'P', new ItemStack(Blocks.IRON_BARS, 1), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Steel), 'M', GTItems.ELECTRIC_MOTOR_MV, 'V', new MaterialEntry(TagPrefix.rotor, GTMaterials.Steel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_assembly_control", + VanillaRecipeHelper.addShapedRecipe(provider, true, "assembly_control_casing", GTBlocks.CASING_ASSEMBLY_CONTROL.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "CPC", "SFE", "CMC", 'C', CustomTags.EV_CIRCUITS, 'P', GTItems.HIGH_POWER_INTEGRATED_CIRCUIT, 'S', GTItems.SENSOR_IV.asStack(), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.TungstenSteel), 'E', GTItems.EMITTER_IV.asStack(), 'M', GTItems.ELECTRIC_MOTOR_IV); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_assembly_line", - GTBlocks.CASING_ASSEMBLY_LINE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PGP", "AFA", + VanillaRecipeHelper.addShapedRecipe(provider, true, "assembly_line_unit", + GTBlocks.CASING_ASSEMBLY_UNIT.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PGP", "AFA", "PGP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Steel), 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Ruridit), 'A', GTItems.ROBOT_ARM_IV.asStack(), 'F', ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.TungstenSteel)); 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 97582a7063a..8fe1ae6d3fd 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 @@ -175,8 +175,8 @@ public static void init(Consumer provider) { .save(provider); ROCK_BREAKER_RECIPES.recipeBuilder("red_granite") - .notConsumable(rock, GraniteRed) - .outputItems(rock, GraniteRed) + .notConsumable(rock, RedGranite) + .outputItems(rock, RedGranite) .adjacentFluids(FluidTags.LAVA, FluidTags.WATER) .duration(16) .EUt(VHA[EV]) 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 b842e48a72d..4a9a54f85a3 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 @@ -1118,7 +1118,7 @@ private static void registerPyrolyseOvenRecipes(Consumer provide PYROLYSE_RECIPES.recipeBuilder("log_to_heavy_oil").circuitMeta(3) .inputItems(ItemTags.LOGS_THAT_BURN, 16) .outputItems(dust, Ash, 4) - .outputFluids(OilHeavy.getFluid(200)) + .outputFluids(HeavyOil.getFluid(200)) .duration(320).EUt(192) .save(provider); 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 d465c36f23e..576146b97d8 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 @@ -40,7 +40,7 @@ public static void init(Consumer provider) { .duration(20).EUt(96).save(provider); DISTILLATION_RECIPES.recipeBuilder("distill_light_oil") - .inputFluids(OilLight.getFluid(150)) + .inputFluids(LightOil.getFluid(150)) .outputFluids(SulfuricHeavyFuel.getFluid(10)) .outputFluids(SulfuricLightFuel.getFluid(20)) .outputFluids(SulfuricNaphtha.getFluid(30)) @@ -48,7 +48,7 @@ public static void init(Consumer provider) { .duration(20).EUt(96).save(provider); DISTILLATION_RECIPES.recipeBuilder("distill_heavy_oil") - .inputFluids(OilHeavy.getFluid(100)) + .inputFluids(HeavyOil.getFluid(100)) .outputFluids(SulfuricHeavyFuel.getFluid(250)) .outputFluids(SulfuricLightFuel.getFluid(45)) .outputFluids(SulfuricNaphtha.getFluid(15)) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PlatGroupMetalsRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PlatGroupMetalsRecipes.java index 89b3a5a9ff8..698e168cdee 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PlatGroupMetalsRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PlatGroupMetalsRecipes.java @@ -89,7 +89,7 @@ public static void init(Consumer provider) { .inputItems(dust, PlatinumGroupSludge, 6) .inputFluids(AquaRegia.getFluid(1200)) .outputItems(dust, PlatinumRaw, 3) // PtCl2 - .outputItems(dust, PalladiumRaw, 3) // PdNH3 + .outputItems(dust, RawPalladium, 3) // PdNH3 .outputItems(dust, InertMetalMixture, 2) // RhRuO4 .outputItems(dust, RarestMetalMixture) // IrOsO4(H2O) .outputItems(dust, PlatinumSludgeResidue, 2) @@ -106,7 +106,7 @@ public static void init(Consumer provider) { // PALLADIUM CHEMICAL_RECIPES.recipeBuilder("raw_palladium_separation").duration(200).EUt(VA[MV]) - .inputItems(dust, PalladiumRaw, 5) + .inputItems(dust, RawPalladium, 5) .inputFluids(HydrochloricAcid.getFluid(1000)) .outputItems(dust, Palladium) .outputItems(dust, AmmoniumChloride, 2) 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 5f5bd03361b..3693897e3c6 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 @@ -50,13 +50,13 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("oilsands_ore_separation") .inputItems(ore, Oilsands) .chancedOutput(new ItemStack(Blocks.SAND), 7500) - .outputFluids(OilHeavy.getFluid(2000)) + .outputFluids(HeavyOil.getFluid(2000)) .duration(200).EUt(30).save(provider); CENTRIFUGE_RECIPES.recipeBuilder("oilsands_dust_separation") .inputItems(dust, Oilsands) .chancedOutput(new ItemStack(Blocks.SAND), 7500) - .outputFluids(OilHeavy.getFluid(2000)) + .outputFluids(HeavyOil.getFluid(2000)) .duration(200).EUt(30).save(provider); CENTRIFUGE_RECIPES.recipeBuilder("nether_wart_separation").duration(144).EUt(5) 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 97133560c8e..88b1c5d51f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java @@ -61,8 +61,8 @@ public static void init(RegistrateTagsProvider.IntrinsicImpl provider) { 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.LightOil.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.HeavyOil.getFluid().defaultFluidState().createLegacyBlock().getBlock()) .add(GTMaterials.RawOil.getFluid().defaultFluidState().createLegacyBlock().getBlock()) .add(GTMaterials.NaturalGas.getFluid().defaultFluidState().createLegacyBlock().getBlock()); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/data/TagCompatibilityFixer.java b/src/main/java/com/gregtechceu/gtceu/utils/data/TagCompatibilityFixer.java deleted file mode 100644 index 3eb1b36725d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/utils/data/TagCompatibilityFixer.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.gregtechceu.gtceu.utils.data; - -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; -import com.gregtechceu.gtceu.common.machine.trait.AutoOutputTrait; -import com.gregtechceu.gtceu.common.machine.trait.BatterySlotTrait; -import com.gregtechceu.gtceu.common.machine.trait.ProgrammableCircuitSlotTrait; - -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; - -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -import java.util.Objects; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public final class TagCompatibilityFixer { - - public static void putTraitTag(MetaMachine machine, CompoundTag machineTag, - Class type, String defaultName, - CompoundTag data) { - var traits = machine.getTraits(type); - - if (traits.size() != 1 || traits.get(0).getTraitName() == null) { - machineTag.put(defaultName, data); - return; - } - - var persistent = traits.get(0).getTraitName(); - machineTag.getCompound("traitHolder").put(Objects.requireNonNull(persistent), data); - } - - public static void fixTraitTags(MetaMachine machine, CompoundTag tag) { - if (!tag.contains("traitHolder")) { - tag.put("traitHolder", new CompoundTag()); - - fixBatterySlotTag(machine, tag); - fixProgrammedCircutTag(machine, tag); - fixMachineAutoOutputTag(machine, tag); - } - } - - public static void fixBatterySlotTag(MetaMachine machine, CompoundTag tag) { - if (tag.contains("chargerInventory")) { - var newTag = new CompoundTag(); - newTag.put("storage", Objects.requireNonNull(tag.get("chargerInventory"))); - - putTraitTag(machine, tag, BatterySlotTrait.class, "batterySlot", newTag); - } - } - - public static void fixProgrammedCircutTag(MetaMachine machine, CompoundTag tag) { - if (tag.contains("circuitInventory")) { - var oldData = tag.getCompound("circuitInventory"); - - putTraitTag(machine, tag, ProgrammableCircuitSlotTrait.class, "circuitSlot", oldData); - } - } - - public static void fixMachineAutoOutputTag(MetaMachine machine, CompoundTag machineTag) { - var outputTag = new CompoundTag(); - Tag itemOutputDirection = machineTag.get("outputFacingItems"); - Tag fluidOutputDirection = machineTag.get("outputFacingFluids"); - Tag autoOutputItems = machineTag.get("autoOutputItems"); - Tag autoOutputFluids = machineTag.get("autoOutputFluids"); - Tag allowInputItems = machineTag.get("allowInputFromOutputSideItems"); - Tag allowInputFluids = machineTag.get("allowInputFromOutputSideFluids"); - if (itemOutputDirection != null) outputTag.put("itemOutputDirection", itemOutputDirection); - if (fluidOutputDirection != null) outputTag.put("fluidOutputDirection", fluidOutputDirection); - if (autoOutputItems != null) outputTag.put("autoOutputItems", autoOutputItems); - if (autoOutputFluids != null) outputTag.put("autoOutputFluids", autoOutputFluids); - if (allowInputItems != null) outputTag.put("allowItemInputFromOutputSide", allowInputItems); - if (allowInputFluids != null) outputTag.put("allowFluidInputFromOutputSide", allowInputFluids); - - putTraitTag(machine, machineTag, AutoOutputTrait.class, "autoOutput", outputTag); - } - - public static Direction fixUpwardsFacing(Direction frontfacing, Direction upwardsFacing) { - Direction newUpwards; - switch (frontfacing) { - case NORTH: { - if (upwardsFacing == Direction.NORTH) { - newUpwards = Direction.UP; - } else if (upwardsFacing == Direction.EAST) { - newUpwards = Direction.WEST; - } else if (upwardsFacing == Direction.SOUTH) { - newUpwards = Direction.DOWN; - } else if (upwardsFacing == Direction.WEST) { - newUpwards = Direction.EAST; - } else { - newUpwards = Direction.UP; - } - break; - } - case EAST: { - if (upwardsFacing == Direction.NORTH) { - newUpwards = Direction.UP; - } else if (upwardsFacing == Direction.EAST) { - newUpwards = Direction.NORTH; - } else if (upwardsFacing == Direction.SOUTH) { - newUpwards = Direction.DOWN; - } else if (upwardsFacing == Direction.WEST) { - newUpwards = Direction.SOUTH; - } else { - newUpwards = Direction.UP; - } - break; - } - case SOUTH: { - if (upwardsFacing == Direction.NORTH) { - newUpwards = Direction.UP; - } else if (upwardsFacing == Direction.EAST) { - newUpwards = Direction.EAST; - } else if (upwardsFacing == Direction.SOUTH) { - newUpwards = Direction.DOWN; - } else if (upwardsFacing == Direction.WEST) { - newUpwards = Direction.WEST; - } else { - newUpwards = Direction.UP; - } - break; - } - case WEST: { - if (upwardsFacing == Direction.NORTH) { - newUpwards = Direction.UP; - } else if (upwardsFacing == Direction.EAST) { - newUpwards = Direction.SOUTH; - } else if (upwardsFacing == Direction.SOUTH) { - newUpwards = Direction.DOWN; - } else if (upwardsFacing == Direction.WEST) { - newUpwards = Direction.NORTH; - } else { - newUpwards = Direction.UP; - } - break; - } - case DOWN: - case UP: - default: { - newUpwards = upwardsFacing; - // needed if previous machine did not have an upwards facing - if (upwardsFacing == null) { - newUpwards = Direction.NORTH; - } - } - } - return newUpwards; - } - - public static Tag stripLDLibPayloadWrapper(Tag t) { - if (!(t instanceof CompoundTag tag)) return t; - if (tag.contains("p") && tag.contains("t")) { - return tag.getCompound("p"); - } - if (tag.contains("t", Tag.TAG_COMPOUND)) { - return tag.getCompound("t").getCompound("p"); - } - return tag; - } -} diff --git a/src/main/resources/assets/gtceu/lang/de_de.json b/src/main/resources/assets/gtceu/lang/de_de.json index 84ecc717699..4c195619de9 100644 --- a/src/main/resources/assets/gtceu/lang/de_de.json +++ b/src/main/resources/assets/gtceu/lang/de_de.json @@ -14,7 +14,6 @@ "behavior.portable_scanner.debug_lag_count": "%s Lag-Spikes erkannt (> %sms)", "behavior.portable_scanner.debug_machine": "Meta-ID: %s", "behavior.portable_scanner.debug_machine_invalid": "Ungültig!", - "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": "Null!", "behavior.portable_scanner.debug_machine_valid": "Gültig", "behavior.portable_scanner.divider": "=========================", "behavior.portable_scanner.energy_container_in": "Max IN: %s EU (%s) @ %s A", @@ -120,7 +119,7 @@ "block.gtceu.aluminium_drum": "Aluminiumfass", "block.gtceu.antimatter_hazard_sign_block": "Antimaterie-Gefahrenschild", "block.gtceu.assembly_line": "Fertigungsstraße", - "block.gtceu.assembly_line_casing": "Fertigungsstraßengehäuse", + "block.gtceu.assembly_control_casing": "Fertigungsstraßengehäuse", "block.gtceu.assembly_line_grating": "Fertigungsstraßengitter", "block.gtceu.assembly_line_unit": "Fertigungsstraßen-Steuereinheit", "block.gtceu.atomic_casing": "Atomgehäuse", @@ -139,7 +138,7 @@ "block.gtceu.blue_studs": "Blauer Nietenblock", "block.gtceu.boss_hazard_sign_block": "Boss-Gefahrenschild", "block.gtceu.brittle_charcoal": "Spröde Holzkohle", - "block.gtceu.bronze_brick_casing": "Bronze-Ziegelgehäuse", + "block.gtceu.bricked_bronze_casing": "Bronze-Ziegelgehäuse", "block.gtceu.bronze_crate": "Bronzekiste", "block.gtceu.bronze_drum": "Bronzefass", "block.gtceu.bronze_firebox_casing": "Bronze-Feuerkammergehäuse", @@ -154,8 +153,6 @@ "block.gtceu.brown_large_metal_sheet": "Großes braunes Metallblech", "block.gtceu.brown_metal_sheet": "Braunes Metallblech", "block.gtceu.brown_studs": "Brauner Nietenblock", - "block.gtceu.casing_coke_bricks": "Koksofen-Ziegel", - "block.gtceu.casing_grate": "Gittergehäuse", "block.gtceu.causality_hazard_sign_block": "Kausalitäts-Gefahrenschild", "block.gtceu.central_monitor": "Zentralmonitor", "block.gtceu.charcoal_pile_igniter": "Holzkohlemeiler-Zünder", @@ -814,8 +811,8 @@ "block.gtceu.me_pattern_buffer_proxy": "ME Pattern Buffer Proxy", "block.gtceu.me_stocking_input_bus": "ME-Strumpf-Eingangsbus", "block.gtceu.me_stocking_input_hatch": "ME-Strumpf-Eingabeklappe", - "block.gtceu.mega_blast_furnace": "Drehherdofen", - "block.gtceu.mega_vacuum_freezer": "Massenschockkühler", + "block.gtceu.rotary_hearth_furnace": "Drehherdofen", + "block.gtceu.bulk_blast_chiller": "Massenschockkühler", "block.gtceu.miner_pipe": "Bergmannsrohr", "block.gtceu.mob_infestation_hazard_sign_block": "Mob-Befall-Gefahrenschild-Block", "block.gtceu.mob_spawner_hazard_sign_block": "Mob Spawner Gefahrenschild-Block", @@ -919,9 +916,9 @@ "block.gtceu.normal_optical_pipe.tooltip": "§7Übertragung von §fBerechnungen§7 oder §fForschungsdaten§7", "block.gtceu.object_holder": "Objekthalter", "block.gtceu.oil": "Öl", - "block.gtceu.oil_heavy": "Schweröl", - "block.gtceu.oil_light": "Leichtes Öl", - "block.gtceu.oil_medium": "Rohöl", + "block.gtceu.heavy_oil": "Schweröl", + "block.gtceu.light_oil": "Leichtes Öl", + "block.gtceu.raw_oil": "Rohöl", "block.gtceu.opv_1024a_laser_source_hatch": "§9§lOpV§r 1.024§eA§r Laserquellenklappe", "block.gtceu.opv_1024a_laser_target_hatch": "§9§lOpV§r 1.024§eA§r Laserzielklappe", "block.gtceu.opv_16a_energy_converter": "§9§lOpV§r 16§eA§r Energieumwandler", @@ -1010,7 +1007,7 @@ "block.gtceu.orange_metal_sheet": "Orangefarbenes Metallblech", "block.gtceu.orange_studs": "Oranger Nietenblock", "block.gtceu.overworld_marker": "Oberwelt", - "block.gtceu.palladium_substation": "Palladium-Umspannwerksgehäuse", + "block.gtceu.palladium_substation_casing": "Palladium-Umspannwerksgehäuse", "block.gtceu.pattern_buffer.desc.0": "§fErmöglicht die direkte §6AE2-Musterspeicherung §ffür GregTech Multiblocks.", "block.gtceu.pattern_buffer.desc.1": "§fAE2-Muster können alles verwenden, was im §6gemeinsamen Inventar §fWidget gespeichert ist.", "block.gtceu.pattern_buffer.desc.2": "§fVerknüpfe §6Pattern Buffer Proxys §fmit einem §bDatenstick §f, um Maschinen miteinander zu verknüpfen!", @@ -1114,7 +1111,7 @@ "block.gtceu.steam_output_bus": "Dampfausgangsbus", "block.gtceu.steam_oven": "Dampfofen", "block.gtceu.steam_solid_boiler.bronze": "Kleiner Dampfkessel", - "block.gtceu.steel_brick_casing": "Gemauertes Schmiedeeisengehäuse", + "block.gtceu.bricked_wrought_iron_casing": "Gemauertes Schmiedeeisengehäuse", "block.gtceu.steel_crate": "Stahlkiste", "block.gtceu.steel_drum": "Stahltrommel", "block.gtceu.steel_firebox_casing": "Feuerraumgehäuse aus Stahl", @@ -1124,7 +1121,7 @@ "block.gtceu.steel_multiblock_tank": "Stahl-Multiblock-Tank", "block.gtceu.steel_pipe_casing": "Stahlrohrgehäuse", "block.gtceu.steel_tank_valve": "Tankventil aus Stahl", - "block.gtceu.steel_turbine_casing": "Magnalium-Turbinengehäuse", + "block.gtceu.magnalium_turbine_casing": "Magnalium-Turbinengehäuse", "block.gtceu.sterilizing_filter_casing": "Sterilisierendes Filtergehäuse", "block.gtceu.stress_proof_casing": "Spannungsfestes Gehäuse", "block.gtceu.stripped_rubber_log": "Abgestreifter Gummistamm", @@ -1723,7 +1720,7 @@ "block.gtceu.zpm_wiremill": "§bZPM Drahtwerk", "block.gtceu.zpm_world_accelerator": "§cElite World Accelerator III§r", "block.sterilizing_filter_casing.tooltip": "Erstellt eine §asterilisierte§7 Umgebung", - "block.surface_rock": "%s Oberflächengestein", + "block.gtceu.surface_rock": "%s Oberflächengestein", "button.gtceu.mark_as_depleted.name": "Als erschöpft markieren", "button.gtceu.toggle_waypoint.name": "Wegpunkt umschalten", "command.gtceu.cape.failure.does_not_exist": "Kap %s existiert nicht", @@ -3998,7 +3995,6 @@ "gui.gtceu.share_tank.title": "Gemeinsames Tankinventar", "gui.widget.incrementButton.default_tooltip": "Halte Shift-, Strg- oder beide Tasten gedrückt, um die Menge zu ändern", "gui.widget.recipeProgressWidget.default_tooltip": "Rezepte anzeigen", - "item.glass_lens": "Glaslinse (weiß)", "item.gtceu.activity_detector_cover": "Aktivitätsdetektor", "item.gtceu.activity_detector_cover.tooltip": "§7Gibt §fAktivitätsstatus§7 als Redstone als §fAbdeckung§7 aus.", "item.gtceu.advanced_activity_detector_cover": "Erweiterter Aktivitätsdetektor", @@ -4249,6 +4245,7 @@ "item.gtceu.gelled_toluene": "Geliertes Toluol", "item.gtceu.gelled_toluene.tooltip": "§7Roher Sprengstoff", "item.gtceu.glass_gem": "Glaskristall", + "item.gtceu.glass_lens": "Glaslinse (weiß)", "item.gtceu.glass_plate": "Glasscheibe", "item.gtceu.glass_tube": "Glasrohr", "item.gtceu.glass_vial": "%s Glasfläschchen", @@ -4512,6 +4509,7 @@ "item.gtceu.naquadah_boule.tooltip": "§7Rohschaltung", "item.gtceu.naquadah_wafer": "Naquadah-dotierter Wafer", "item.gtceu.naquadah_wafer.tooltip": "§7Rohschaltung", + "item.gtceu.netherrack_nether_quartz": "Netherquarz-Erz", "item.gtceu.neuro_processing_unit": "Neuroverarbeitungseinheit", "item.gtceu.neuro_processing_unit.tooltip": "§7Neuro-CPU", "item.gtceu.neutron_reflector": "Iridium-Neutronenreflektor", @@ -4541,7 +4539,7 @@ "item.gtceu.opv_voltage_coil.tooltip": "Legendäre Spule", "item.gtceu.orange_dye_spray_can": "Sprühdose (Orange)", "item.gtceu.orange_glass_lens": "Glaslinse (Orange)", - "item.gtceu.palladium_raw_dust": "Rohes Palladiumpulver", + "item.gtceu.raw_palladium_dust": "Rohes Palladiumpulver", "item.gtceu.paper_dust": "Tschad", "item.gtceu.paracetamol_pill": "Paracetamol-Pille", "item.gtceu.petri_dish": "Petrischale", @@ -4699,7 +4697,7 @@ "item.gtceu.small_inert_metal_mixture_dust": "Kleiner Haufen inerter Metallmischung", "item.gtceu.small_iridium_metal_residue_dust": "Kleiner Haufen Iridiummetallrückstände", "item.gtceu.small_meat_dust": "Kleiner Haufen Hackfleisch", - "item.gtceu.small_palladium_raw_dust": "Kleiner Haufen rohes Palladiumpulver", + "item.gtceu.small_raw_palladium_dust": "Kleiner Haufen rohes Palladiumpulver", "item.gtceu.small_paper_dust": "Kleiner Haufen Tschad", "item.gtceu.small_pipe_casting_mold": "Gussform (kleines Rohr)", "item.gtceu.small_pipe_extruder_mold": "Extruderform (kleines Rohr)", @@ -4769,7 +4767,7 @@ "item.gtceu.tiny_inert_metal_mixture_dust": "Winziger Haufen inerter Metallmischung", "item.gtceu.tiny_iridium_metal_residue_dust": "Winziger Haufen Iridiummetallrückstände", "item.gtceu.tiny_meat_dust": "Winziger Haufen Hackfleisch", - "item.gtceu.tiny_palladium_raw_dust": "Winziger Haufen rohes Palladiumpulver", + "item.gtceu.tiny_raw_palladium_dust": "Winziger Haufen rohes Palladiumpulver", "item.gtceu.tiny_paper_dust": "Winziger Haufen Tschad", "item.gtceu.tiny_pipe_casting_mold": "Gussform (winziges Rohr)", "item.gtceu.tiny_pipe_extruder_mold": "Extruderform (winziges Rohr)", @@ -5022,7 +5020,6 @@ "item.gtceu.zpm_voltage_coil": "Spannungsspule des Nullpunktmoduls", "item.gtceu.zpm_voltage_coil.tooltip": "Superspule", "item.invalid.name": "Ungültiger Item", - "item.netherrack_nether_quartz": "Netherquarz-Erz", "itemGroup.gtceu.decoration": "GregTechCEu-Dekorationsblöcke", "itemGroup.gtceu.item": "GregTechCEu-Item", "itemGroup.gtceu.machine": "GregTech CEu-Maschinen", @@ -5273,7 +5270,7 @@ "material.gtceu.goethite": "Goethit", "material.gtceu.gold": "Gold", "material.gtceu.granite": "Granit", - "material.gtceu.granite_red": "Granit rot", + "material.gtceu.red_granite": "Granit rot", "material.gtceu.granitic_mineral_sand": "Granitischer Mineralsand", "material.gtceu.graphene": "Graphen", "material.gtceu.graphite": "Graphit", @@ -5443,9 +5440,9 @@ "material.gtceu.octane": "Oktan", "material.gtceu.oganesson": "Oganesson", "material.gtceu.oil": "Öl", - "material.gtceu.oil_heavy": "Schweröl", - "material.gtceu.oil_light": "Leichtes Öl", - "material.gtceu.oil_medium": "Rohöl", + "material.gtceu.heavy_oil": "Schweröl", + "material.gtceu.light_oil": "Leichtes Öl", + "material.gtceu.raw_oil": "Rohöl", "material.gtceu.oilsands": "Ölsande", "material.gtceu.olivine": "Olivin", "material.gtceu.opal": "Opal", @@ -5455,7 +5452,7 @@ "material.gtceu.osmium_tetroxide": "Osmiumtetroxid", "material.gtceu.oxygen": "Sauerstoff", "material.gtceu.palladium": "Palladium", - "material.gtceu.palladium_raw": "Palladium roh", + "material.gtceu.raw_palladium": "Palladium roh", "material.gtceu.paper": "Papier", "material.gtceu.paracetamol": "Paracetamol", "material.gtceu.pcb_coolant": "PCB-Kühlmittel", diff --git a/src/main/resources/assets/gtceu/lang/ja_jp.json b/src/main/resources/assets/gtceu/lang/ja_jp.json index 0ad30ee9fcf..d22b03eb32c 100644 --- a/src/main/resources/assets/gtceu/lang/ja_jp.json +++ b/src/main/resources/assets/gtceu/lang/ja_jp.json @@ -119,7 +119,7 @@ "block.gtceu.aluminium_drum": "アルミニウム製ドラム", "block.gtceu.antimatter_hazard_sign_block": "反物質危害警告ブロック", "block.gtceu.assembly_line": "アセンブリライン", - "block.gtceu.assembly_line_casing": "組立マシン外装", + "block.gtceu.assembly_control_casing": "組立マシン外装", "block.gtceu.assembly_line_grating": "アセンブリライン用格子", "block.gtceu.assembly_line_unit": "組立制御外装", "block.gtceu.atomic_casing": "原子マシン外装", @@ -138,7 +138,7 @@ "block.gtceu.blue_studs": "青鋲", "block.gtceu.boss_hazard_sign_block": "ボス危害警告ブロック", "block.gtceu.brittle_charcoal": "脆い木炭", - "block.gtceu.bronze_brick_casing": "ブロンズレンガ外装", + "block.gtceu.bricked_bronze_casing": "ブロンズレンガ外装", "block.gtceu.bronze_crate": "ブロンズ製クレート", "block.gtceu.bronze_drum": "ブロンズ製ドラム", "block.gtceu.bronze_firebox_casing": "ブロンズ製火室外装", @@ -153,8 +153,6 @@ "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.central_monitor": "セントラルモニター", "block.gtceu.charcoal_pile_igniter": "炭窯", @@ -813,8 +811,8 @@ "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.rotary_hearth_furnace": "回転式炉床炉", + "block.gtceu.bulk_blast_chiller": "一括真空冷却機", "block.gtceu.miner_pipe": "鉱夫パイプ", "block.gtceu.mob_infestation_hazard_sign_block": "モブ侵入危害警告ブロック", "block.gtceu.mob_spawner_hazard_sign_block": "スポナー危害警告ブロック", @@ -918,9 +916,9 @@ "block.gtceu.normal_optical_pipe.tooltip": "§f計算§7 または§f研究データ§7 の送信に", "block.gtceu.object_holder": "オブジェクトホルダー", "block.gtceu.oil": "原油", - "block.gtceu.oil_heavy": "重油", - "block.gtceu.oil_light": "軽油", - "block.gtceu.oil_medium": "原料油", + "block.gtceu.heavy_oil": "重油", + "block.gtceu.light_oil": "軽油", + "block.gtceu.raw_oil": "原料油", "block.gtceu.opv_1024a_laser_source_hatch": "§9§lOpV§r 1024§eA§r対応レーザー照射ハッチ", "block.gtceu.opv_1024a_laser_target_hatch": "§9§lOpV§r 1024§eA§r対応レーザー照準ハッチ", "block.gtceu.opv_16a_energy_converter": "§9§lOpV§r 16§eA§rエネルギー変換機", @@ -1009,7 +1007,7 @@ "block.gtceu.orange_metal_sheet": "橙色の板金ブロック", "block.gtceu.orange_studs": "橙鋲", "block.gtceu.overworld_marker": "オーバーワールド", - "block.gtceu.palladium_substation": "パラジウム製大型蓄電器用外装", + "block.gtceu.palladium_substation_casing": "パラジウム製大型蓄電器用外装", "block.gtceu.pattern_buffer.desc.0": "§fマルチブロックのために §6AE2 パターンを直接保存できる。", "block.gtceu.pattern_buffer.desc.1": "§fAE2 パターンは、§6 共有インベントリ§fウィジェットに格納されているものなら何でも利用できる。", "block.gtceu.pattern_buffer.desc.2": "§fリンク§6パターンバッファ マシンをリンクするための§bデータスティック§fを持つプロキシ!", @@ -1113,7 +1111,7 @@ "block.gtceu.steam_output_bus": "蒸気搬出バス", "block.gtceu.steam_oven": "蒸気式オーブン", "block.gtceu.steam_solid_boiler.bronze": "固形燃料用小型ボイラー", - "block.gtceu.steel_brick_casing": "錬鉄製レンガ筐体", + "block.gtceu.bricked_wrought_iron_casing": "錬鉄製レンガ筐体", "block.gtceu.steel_crate": "スチール製クレート", "block.gtceu.steel_drum": "スチール製ドラム", "block.gtceu.steel_firebox_casing": "スチール製火室外装", @@ -1123,7 +1121,7 @@ "block.gtceu.steel_multiblock_tank": "スチール製マルチブロックタンク", "block.gtceu.steel_pipe_casing": "スチール製パイプ外装", "block.gtceu.steel_tank_valve": "スチール製タンクバルブ", - "block.gtceu.steel_turbine_casing": "マグナリウム製タービン外装", + "block.gtceu.magnalium_turbine_casing": "マグナリウム製タービン外装", "block.gtceu.sterilizing_filter_casing": "滅菌フィルター外装", "block.gtceu.stress_proof_casing": "耐応力マシン外装", "block.gtceu.stripped_rubber_log": "ゴムの原木", @@ -1722,7 +1720,7 @@ "block.gtceu.zpm_wiremill": "§c精鋭型ワイヤー作製機 III§r", "block.gtceu.zpm_world_accelerator": "§c精鋭型世界加速機 III§r", "block.sterilizing_filter_casing.tooltip": "§a滅菌§7環境を構築する", - "block.surface_rock": "%sの小石", + "block.gtceu.surface_rock": "%sの小石", "button.gtceu.mark_as_depleted.name": "枯渇済みとしてマーク", "button.gtceu.toggle_waypoint.name": "ウェイポイントを切り替え", "command.gtceu.cape.failure.does_not_exist": "マント %s は存在しない", @@ -3923,7 +3921,6 @@ "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": "発展型動作検出器", @@ -4174,6 +4171,7 @@ "item.gtceu.gelled_toluene": "ゲル状トルエン", "item.gtceu.gelled_toluene.tooltip": "§7爆発物の原料", "item.gtceu.glass_gem": "ガラスクリスタル", + "item.gtceu.glass_lens": "白いガラスレンズ", "item.gtceu.glass_plate": "ガラス板", "item.gtceu.glass_tube": "ガラス管", "item.gtceu.glass_vial": "%sのガラス製バイアル", @@ -4437,6 +4435,7 @@ "item.gtceu.naquadah_boule.tooltip": "§7回路の原料", "item.gtceu.naquadah_wafer": "ナクアダ添加シリコンウェハー", "item.gtceu.naquadah_wafer.tooltip": "§7回路の原料", + "item.gtceu.netherrack_nether_quartz": "ネザークォーツ鉱石", "item.gtceu.neuro_processing_unit": "神経処理装置", "item.gtceu.neuro_processing_unit.tooltip": "§7神経のCPU", "item.gtceu.neutron_reflector": "イリジウム製中性子反射板", @@ -4466,7 +4465,7 @@ "item.gtceu.opv_voltage_coil.tooltip": "伝説型コイル", "item.gtceu.orange_dye_spray_can": "橙色のスプレー缶", "item.gtceu.orange_glass_lens": "橙色のガラスレンズ", - "item.gtceu.palladium_raw_dust": "粗パラジウムパウダー", + "item.gtceu.raw_palladium_dust": "粗パラジウムパウダー", "item.gtceu.paper_dust": "紙くず", "item.gtceu.paracetamol_pill": "アセトアミノフェン錠", "item.gtceu.petri_dish": "ペトリ皿", @@ -4624,7 +4623,7 @@ "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_raw_palladium_dust": "小さな粗パラジウムパウダー", "item.gtceu.small_paper_dust": "小さな紙くず", "item.gtceu.small_pipe_casting_mold": "金型 (細いパイプ)", "item.gtceu.small_pipe_extruder_mold": "押出形成用金型 (細いパイプ)", @@ -4694,7 +4693,7 @@ "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_raw_palladium_dust": "極小の粗パラジウムパウダー", "item.gtceu.tiny_paper_dust": "極小の紙くず", "item.gtceu.tiny_pipe_casting_mold": "金型 (極細パイプ)", "item.gtceu.tiny_pipe_extruder_mold": "押出形成用金型 (極細パイプ)", @@ -4942,7 +4941,6 @@ "item.gtceu.zpm_voltage_coil": "Zero Point Module Voltage コイル", "item.gtceu.zpm_voltage_coil.tooltip": "素晴らしいコイル", "item.invalid.name": "無効なアイテム", - "item.netherrack_nether_quartz": "ネザークォーツ鉱石", "itemGroup.gtceu.decoration": "GregTechCEu装飾ブロック", "itemGroup.gtceu.item": "GregTechCEuアイテム", "itemGroup.gtceu.machine": "GregTechCEu機械", @@ -5193,7 +5191,7 @@ "material.gtceu.goethite": "針鉄鉱", "material.gtceu.gold": "金", "material.gtceu.granite": "花崗岩", - "material.gtceu.granite_red": "赤色花崗岩", + "material.gtceu.red_granite": "赤色花崗岩", "material.gtceu.granitic_mineral_sand": "花崗岩質含鉱砂", "material.gtceu.graphene": "グラフェン", "material.gtceu.graphite": "グラファイト", @@ -5363,9 +5361,9 @@ "material.gtceu.octane": "オクタン", "material.gtceu.oganesson": "オガネソン", "material.gtceu.oil": "原油", - "material.gtceu.oil_heavy": "重油", - "material.gtceu.oil_light": "軽油", - "material.gtceu.oil_medium": "原料油", + "material.gtceu.heavy_oil": "重油", + "material.gtceu.light_oil": "軽油", + "material.gtceu.raw_oil": "原料油", "material.gtceu.oilsands": "オイルサンド", "material.gtceu.olivine": "オリビン", "material.gtceu.opal": "オパール", @@ -5375,7 +5373,7 @@ "material.gtceu.osmium_tetroxide": "四酸化オスミウム", "material.gtceu.oxygen": "酸素", "material.gtceu.palladium": "パラジウム", - "material.gtceu.palladium_raw": "生のパラジウム", + "material.gtceu.raw_palladium": "生のパラジウム", "material.gtceu.paper": "紙", "material.gtceu.paracetamol": "アセトアミノフェン", "material.gtceu.pcb_coolant": "PCBクーラント", diff --git a/src/main/resources/assets/gtceu/lang/pt_br.json b/src/main/resources/assets/gtceu/lang/pt_br.json index 53a277ea555..c5d932e2709 100644 --- a/src/main/resources/assets/gtceu/lang/pt_br.json +++ b/src/main/resources/assets/gtceu/lang/pt_br.json @@ -119,7 +119,7 @@ "block.gtceu.aluminium_drum": "Tambor de Alumínio", "block.gtceu.antimatter_hazard_sign_block": "Bloco de Sinal de Risco de Antimatéria", "block.gtceu.assembly_line": "Linha de Montagem", - "block.gtceu.assembly_line_casing": "Revestimento de Linha de Montagem", + "block.gtceu.assembly_control_casing": "Revestimento de Linha de Montagem", "block.gtceu.assembly_line_grating": "Grade de Linha de Montagem", "block.gtceu.assembly_line_unit": "Revestimento de Controle de Montagem", "block.gtceu.atomic_casing": "Revestimento Atômico", @@ -138,7 +138,7 @@ "block.gtceu.blue_studs": "Pinos Azuis", "block.gtceu.boss_hazard_sign_block": "Bloco de Sinal de Risco de Chefe", "block.gtceu.brittle_charcoal": "Carvão Vegetal Quebradiço", - "block.gtceu.bronze_brick_casing": "Revestimento de Tijolos de Bronze", + "block.gtceu.bricked_bronze_casing": "Revestimento de Tijolos de Bronze", "block.gtceu.bronze_crate": "Caixote de Bronze", "block.gtceu.bronze_drum": "Tambor de Bronze", "block.gtceu.bronze_firebox_casing": "Revestimento de Fornalha de Bronze", @@ -153,8 +153,6 @@ "block.gtceu.brown_large_metal_sheet": "Chapa de Metal Grande Marrom", "block.gtceu.brown_metal_sheet": "Chapa de Metal Marrom", "block.gtceu.brown_studs": "Pinos Marrons", - "block.gtceu.casing_coke_bricks": "Tijolos de Forno de Coque", - "block.gtceu.casing_grate": "Revestimento de Máquina com Grade", "block.gtceu.causality_hazard_sign_block": "Bloco de Sinal de Risco de Causalidade", "block.gtceu.central_monitor": "Monitor Central", "block.gtceu.charcoal_pile_igniter": "Ignitor de Pilha de Carvão Vegetal", @@ -813,8 +811,8 @@ "block.gtceu.me_pattern_buffer_proxy": "Proxy de Buffer de Padrões ME", "block.gtceu.me_stocking_input_bus": "Barramento de Entrada de Estoque ME", "block.gtceu.me_stocking_input_hatch": "Escotilha de Entrada de Estoque ME", - "block.gtceu.mega_blast_furnace": "Forno de Lareira Rotativa", - "block.gtceu.mega_vacuum_freezer": "Resfriador de Explosão em Massa", + "block.gtceu.rotary_hearth_furnace": "Forno de Lareira Rotativa", + "block.gtceu.bulk_blast_chiller": "Resfriador de Explosão em Massa", "block.gtceu.miner_pipe": "Tubo de Minerador", "block.gtceu.mob_infestation_hazard_sign_block": "Bloco de Sinal de Risco de Infestação de Criaturas", "block.gtceu.mob_spawner_hazard_sign_block": "Bloco de Sinal de Risco de Gerador de Criaturas", @@ -918,9 +916,9 @@ "block.gtceu.normal_optical_pipe.tooltip": "§7Transmitindo §fComputação§7 ou §fDados de Pesquisa§7", "block.gtceu.object_holder": "Suporte de Objeto", "block.gtceu.oil": "Óleo", - "block.gtceu.oil_heavy": "Óleo Pesado", - "block.gtceu.oil_light": "Óleo Leve", - "block.gtceu.oil_medium": "Óleo Bruto", + "block.gtceu.heavy_oil": "Óleo Pesado", + "block.gtceu.light_oil": "Óleo Leve", + "block.gtceu.raw_oil": "Óleo Bruto", "block.gtceu.opv_1024a_laser_source_hatch": "Escotilha de Fonte de Laser 1.024§eA§r §9§lOpV§r", "block.gtceu.opv_1024a_laser_target_hatch": "Escotilha de Alvo de Laser 1.024§eA§r §9§lOpV§r", "block.gtceu.opv_16a_energy_converter": "Conversor de Energia §9§lOpV§r 16§eA§r", @@ -1009,7 +1007,7 @@ "block.gtceu.orange_metal_sheet": "Chapa de Metal Laranja", "block.gtceu.orange_studs": "Pinos Laranjas", "block.gtceu.overworld_marker": "Mundo Superior", - "block.gtceu.palladium_substation": "Revestimento de Subestação de Paládio", + "block.gtceu.palladium_substation_casing": "Revestimento de Subestação de Paládio", "block.gtceu.pattern_buffer.desc.0": "§fPermite armazenamento direto de padrões §6AE2 §fpara Multiblocos GregTech.", "block.gtceu.pattern_buffer.desc.1": "§fPadrões AE2 podem utilizar qualquer coisa armazenada no widget de §6inventário compartilhado§f.", "block.gtceu.pattern_buffer.desc.2": "§fVincule §6Proxies de Buffer de Padrões §fcom um §bdatastick §fpara interligar máquinas!", @@ -1113,7 +1111,7 @@ "block.gtceu.steam_output_bus": "Barramento de Saída de Vapor", "block.gtceu.steam_oven": "Forno a Vapor", "block.gtceu.steam_solid_boiler.bronze": "Caldeira Sólida a Vapor Pequena", - "block.gtceu.steel_brick_casing": "Revestimento de Ferro Forjado com Tijolos", + "block.gtceu.bricked_wrought_iron_casing": "Revestimento de Ferro Forjado com Tijolos", "block.gtceu.steel_crate": "Caixote de Aço", "block.gtceu.steel_drum": "Tambor de Aço", "block.gtceu.steel_firebox_casing": "Revestimento de Fornalha de Aço", @@ -1123,7 +1121,7 @@ "block.gtceu.steel_multiblock_tank": "Tanque Multibloco de Aço", "block.gtceu.steel_pipe_casing": "Revestimento de Tubo de Aço", "block.gtceu.steel_tank_valve": "Válvula de Tanque de Aço", - "block.gtceu.steel_turbine_casing": "Revestimento de Turbina de Magnálio", + "block.gtceu.magnalium_turbine_casing": "Revestimento de Turbina de Magnálio", "block.gtceu.sterilizing_filter_casing": "Revestimento de Filtro Esterilizador", "block.gtceu.stress_proof_casing": "Revestimento à Prova de Estresse", "block.gtceu.stripped_rubber_log": "Tora de Borracha Descascada", @@ -1722,7 +1720,7 @@ "block.gtceu.zpm_wiremill": "§cTrefiladora de Elite III§r", "block.gtceu.zpm_world_accelerator": "§cAcelerador de Mundo de Elite III§r", "block.sterilizing_filter_casing.tooltip": "Cria um ambiente §aEsterilizado§7", - "block.surface_rock": "Rocha de Superfície de %s", + "block.gtceu.surface_rock": "Rocha de Superfície de %s", "button.gtceu.mark_as_depleted.name": "Marcar como Esgotado", "button.gtceu.toggle_waypoint.name": "Alternar Waypoint", "command.gtceu.cape.failure.does_not_exist": "A capa %s não existe", @@ -3994,7 +3992,6 @@ "gui.gtceu.share_tank.title": "Inventário de Tanque Compartilhado", "gui.widget.incrementButton.default_tooltip": "Segure Shift, Ctrl ou ambos para alterar a quantidade", "gui.widget.recipeProgressWidget.default_tooltip": "Mostrar Receitas", - "item.glass_lens": "Lente de Vidro (Branca)", "item.gtceu.activity_detector_cover": "Detector de Atividade", "item.gtceu.activity_detector_cover.tooltip": "§7Emite §fStatus de Atividade§7 como Redstone como §fCobertura§7.", "item.gtceu.advanced_activity_detector_cover": "Detector de Atividade Avançado", @@ -4245,6 +4242,7 @@ "item.gtceu.gelled_toluene": "Tolueno Geleificado", "item.gtceu.gelled_toluene.tooltip": "§7Explosivo Bruto", "item.gtceu.glass_gem": "Cristal de Vidro", + "item.gtceu.glass_lens": "Lente de Vidro (Branca)", "item.gtceu.glass_plate": "Painel de Vidro", "item.gtceu.glass_tube": "Tubo de Vidro", "item.gtceu.glass_vial": "Frasco de Vidro de %s", @@ -4537,7 +4535,7 @@ "item.gtceu.opv_voltage_coil.tooltip": "Bobina Lendária", "item.gtceu.orange_dye_spray_can": "Lata de Spray (Laranja)", "item.gtceu.orange_glass_lens": "Lente de Vidro (Laranja)", - "item.gtceu.palladium_raw_dust": "Pó de Paládio Bruto", + "item.gtceu.raw_palladium_dust": "Pó de Paládio Bruto", "item.gtceu.paper_dust": "Confete", "item.gtceu.paracetamol_pill": "Pílula de Paracetamol", "item.gtceu.petri_dish": "Placa de Petri", @@ -4695,7 +4693,7 @@ "item.gtceu.small_inert_metal_mixture_dust": "Pilha Pequena de Mistura de Metais Inertes", "item.gtceu.small_iridium_metal_residue_dust": "Pilha Pequena de Resíduo Metálico de Irídio", "item.gtceu.small_meat_dust": "Pilha Pequena de Carne Moída", - "item.gtceu.small_palladium_raw_dust": "Pilha Pequena de Pó de Paládio Bruto", + "item.gtceu.small_raw_palladium_dust": "Pilha Pequena de Pó de Paládio Bruto", "item.gtceu.small_paper_dust": "Pilha Pequena de Confete", "item.gtceu.small_pipe_casting_mold": "Molde de Fundição (Tubo Pequeno)", "item.gtceu.small_pipe_extruder_mold": "Molde de Extrusora (Tubo Pequeno)", @@ -4765,7 +4763,7 @@ "item.gtceu.tiny_inert_metal_mixture_dust": "Pilha Minúscula de Mistura de Metais Inertes", "item.gtceu.tiny_iridium_metal_residue_dust": "Pilha Minúscula de Resíduo Metálico de Irídio", "item.gtceu.tiny_meat_dust": "Pilha Minúscula de Carne Moída", - "item.gtceu.tiny_palladium_raw_dust": "Pilha Minúscula de Pó de Paládio Bruto", + "item.gtceu.tiny_raw_palladium_dust": "Pilha Minúscula de Pó de Paládio Bruto", "item.gtceu.tiny_paper_dust": "Pilha Minúscula de Confete", "item.gtceu.tiny_pipe_casting_mold": "Molde de Fundição (Tubo Minúsculo)", "item.gtceu.tiny_pipe_extruder_mold": "Molde de Extrusora (Tubo Minúsculo)", @@ -5018,7 +5016,6 @@ "item.gtceu.zpm_voltage_coil": "Bobina de Tensão de Módulo de Ponto Zero", "item.gtceu.zpm_voltage_coil.tooltip": "Bobina Super", "item.invalid.name": "Item inválido", - "item.netherrack_nether_quartz": "Minério de Quartzo do Nether", "itemGroup.gtceu.decoration": "Blocos de Decoração GregTechCEu", "itemGroup.gtceu.item": "Itens GregTechCEu", "itemGroup.gtceu.machine": "Máquinas GregTechCEu", @@ -5269,7 +5266,7 @@ "material.gtceu.goethite": "Goethita", "material.gtceu.gold": "Ouro", "material.gtceu.granite": "Granito", - "material.gtceu.granite_red": "Granito Vermelho", + "material.gtceu.red_granite": "Granito Vermelho", "material.gtceu.granitic_mineral_sand": "Areia Mineral Granítica", "material.gtceu.graphene": "Grafeno", "material.gtceu.graphite": "Grafite", @@ -5439,9 +5436,9 @@ "material.gtceu.octane": "Octano", "material.gtceu.oganesson": "Oganessônio", "material.gtceu.oil": "Petróleo", - "material.gtceu.oil_heavy": "Petróleo Pesado", - "material.gtceu.oil_light": "Petróleo Leve", - "material.gtceu.oil_medium": "Petróleo Bruto", + "material.gtceu.heavy_oil": "Petróleo Pesado", + "material.gtceu.light_oil": "Petróleo Leve", + "material.gtceu.raw_oil": "Petróleo Bruto", "material.gtceu.oilsands": "Areias Betuminosas", "material.gtceu.olivine": "Olivina", "material.gtceu.opal": "Opala", @@ -5451,7 +5448,7 @@ "material.gtceu.osmium_tetroxide": "Tetróxido de Ósmio", "material.gtceu.oxygen": "Oxigênio", "material.gtceu.palladium": "Paládio", - "material.gtceu.palladium_raw": "Paládio Bruto", + "material.gtceu.raw_palladium": "Paládio Bruto", "material.gtceu.paper": "Papel", "material.gtceu.paracetamol": "Paracetamol", "material.gtceu.pcb_coolant": "Líquido de Arrefecimento PCB", diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index c952c2a6052..114b9518507 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -67,12 +67,12 @@ "block.gtceu.aluminium_crate": "Алюминиевый ящик", "block.gtceu.aluminium_drum": "Алюминиевая бочка", "block.gtceu.assembly_line": "Сборочный конвейер", - "block.gtceu.assembly_line_casing": "Корпус сборочной линии", + "block.gtceu.assembly_control_casing": "Корпус сборочной линии", "block.gtceu.assembly_line_grating": "Вентиляционный корпус", "block.gtceu.assembly_line_unit": "Корпус сборочной линии", "block.gtceu.atomic_casing": "Атомный корпус", "block.gtceu.auto_maintenance_hatch": "Автоматический люк обслуживания", - "block.gtceu.bronze_brick_casing": "Кирпичный корпус из бронзы", + "block.gtceu.bricked_bronze_casing": "Кирпичный корпус из бронзы", "block.gtceu.bronze_crate": "Бронзовый ящик", "block.gtceu.bronze_drum": "Бронзовая бочка", "block.gtceu.bronze_firebox_casing": "Бронзовый корпус топки", @@ -80,8 +80,6 @@ "block.gtceu.bronze_large_boiler": "Большой бронзовый котел", "block.gtceu.bronze_machine_casing": "Бронзовый корпус машины", "block.gtceu.bronze_pipe_casing": "Корпус бронзовой трубы", - "block.gtceu.casing_coke_bricks": "Кирпичи коксовой печи", - "block.gtceu.casing_grate": "Вентиляционный корпус", "block.gtceu.clean_machine_casing": "Очищенный корпус из нержавеющей стали", "block.gtceu.cleaning_maintenance_hatch": "Люк обслуживания автоматической фильтрации", "block.gtceu.cleanroom": "Чистая комната", @@ -561,8 +559,8 @@ "block.gtceu.me_input_hatch": "ME жидкостный люк", "block.gtceu.me_output_bus": "ME Выходной предметный люк", "block.gtceu.me_output_hatch": "ME Выходной жидкостный люк", - "block.gtceu.mega_blast_furnace": "Карусельная печь", - "block.gtceu.mega_vacuum_freezer": "Аппарат шоковой заморозки", + "block.gtceu.rotary_hearth_furnace": "Карусельная печь", + "block.gtceu.bulk_blast_chiller": "Аппарат шоковой заморозки", "block.gtceu.miner_pipe": "Труба шахтера", "block.gtceu.molybdenum_disilicide_coil_block": "Катушка из дисилицида молибдена", "block.gtceu.multi_smelter": "Мультиплавильня", @@ -642,9 +640,9 @@ "block.gtceu.nichrome_coil_block": "Нихромовая катушка", "block.gtceu.nonconducting_casing": "Изолированный корпус", "block.gtceu.normal_laser_pipe": "Передающий лазерный кабель", - "block.gtceu.oil_heavy": "Тяжелая нефть", - "block.gtceu.oil_light": "Легкая нефть", - "block.gtceu.oil_medium": "Средняя нефть", + "block.gtceu.heavy_oil": "Тяжелая нефть", + "block.gtceu.light_oil": "Легкая нефть", + "block.gtceu.raw_oil": "Средняя нефть", "block.gtceu.opv_1024a_laser_source_hatch": "Люк для лазерного источника (1024§eA§r §9§lOpV§r)", "block.gtceu.opv_1024a_laser_target_hatch": "Люк для лазерного приемника (1024§eA§r §9§lOpV§r)", "block.gtceu.opv_16a_energy_converter": "Преобразователь энергии (16§eA§r §9§lOpV§r)", @@ -709,7 +707,7 @@ "block.gtceu.opv_sifter": "§9§lСовершенный просеиватель §r", "block.gtceu.opv_thermal_centrifuge": "§9Совершенная термальная центрифуга §r", "block.gtceu.opv_wiremill": "§9§lСовершенный волочильный станок §r", - "block.gtceu.palladium_substation": "Палладиевый корпус подстанции", + "block.gtceu.palladium_substation_casing": "Палладиевый корпус подстанции", "block.gtceu.plascrete": "Пластбетон", "block.gtceu.plasma_large_turbine": "Большая плазменная турбина", "block.gtceu.power_substation": "Силовая подстанция", @@ -751,7 +749,7 @@ "block.gtceu.steam_output_bus": "Паровой выходной предметный люк", "block.gtceu.steam_oven": "Паровая плавильня", "block.gtceu.steam_solid_boiler.bronze": "Маленький угольный паровой котел", - "block.gtceu.steel_brick_casing": "Кирпичный корпус из кованого железа", + "block.gtceu.bricked_wrought_iron_casing": "Кирпичный корпус из кованого железа", "block.gtceu.steel_crate": "Стальной ящик", "block.gtceu.steel_drum": "Стальная бочка", "block.gtceu.steel_firebox_casing": "Стальной корпус топки", @@ -759,7 +757,7 @@ "block.gtceu.steel_large_boiler": "Большой стальной котел", "block.gtceu.steel_machine_casing": "Стальной корпус", "block.gtceu.steel_pipe_casing": "Корпус стальной трубы", - "block.gtceu.steel_turbine_casing": "Стальной корпус турбины", + "block.gtceu.magnalium_turbine_casing": "Стальной корпус турбины", "block.gtceu.sterilizing_filter_casing": "Корпус стерилизующего фильтра", "block.gtceu.stress_proof_casing": "Корпус устойчивый к напряжению", "block.gtceu.sturdy_machine_casing": "Корпус из прочной HSS-E стали", @@ -1238,7 +1236,7 @@ "block.gtceu.zpm_transformer_2a": "Высокотоковый трансформатор (2А §cZPM§r)", "block.gtceu.zpm_transformer_4a": "Высокотоковый трансформатор (4А §cZPM§r)", "block.gtceu.zpm_wiremill": "§cПревосходный волочильный станок III§r", - "block.surface_rock": "Поверхностная порода (%s)", + "block.gtceu.surface_rock": "Поверхностная порода (%s)", "config.gtceu.option.allUniqueStoneTypes": "allUniqueStoneTypes", "config.gtceu.option.bedrockOreDropTagPrefix": "bedrockOreDropTagPrefix", "config.gtceu.option.cleanMultiblocks": "cleanMultiblocks", @@ -2508,6 +2506,7 @@ "item.gtceu.nano_saber.tooltip": "§7Ryujin no ken wo kurae!", "item.gtceu.naquadah_boule": "Монокристаллический кремний легированный наквадой", "item.gtceu.naquadah_wafer": "Пластина легированная наквадой", + "item.gtceu.netherrack_nether_quartz": "Незер-кварцевая руда", "item.gtceu.neuro_processing_unit": "Нейронный блок обработки", "item.gtceu.neutron_reflector": "Иридиевый нейтронный отражатель", "item.gtceu.neutron_reflector.tooltip": "§7Неразрушимый", @@ -3387,7 +3386,6 @@ "gtceu.tool.class.saw": "Пила", "gtceu.tool.class.screwdriver": "Отвертка", "gtceu.tool.class.shovel": "Лопата", - "item.glass_lens": "Стеклянная линза (Белый)", "item.gtceu.activity_detector_cover.tooltip": "§7Выдает §fПрогресс Работы§7 Сигналом Красного камня как §fУлучшение механизма§7.", "item.gtceu.advanced_activity_detector_cover.tooltip": "§7Выдает §fСтатус прогресса§7 Сигналом Красного камня как §fУлучшение механизма§7.", "item.gtceu.advanced_energy_detector_cover.tooltip": "§7Даёт §fRS-триггеру контроль§7 за §fУровнем энергии§7 Сигналом Красного камня как §fУлучшение механизма§7.", @@ -3640,6 +3638,7 @@ "item.gtceu.exquisite_glass_gem": "Изысканный хрусталь", "item.gtceu.flawless_glass_gem": "Безупречный хрусталь", "item.gtceu.glass_gem": "Стеклянный кристалл", + "item.gtceu.glass_lens": "Стеклянная линза (Белый)", "item.gtceu.ice_dust": "Колотый лёд", "item.gtceu.impure_cassiterite_sand_dust": "Грязная кучка касситеритного песка", "item.gtceu.iridium_metal_residue_dust": "Металлический остаток иридия", @@ -3700,7 +3699,7 @@ "material.gtceu.gallium_arsenide": "Арсенид галлия", "material.gtceu.gelatin_mixture": "Желатиновая смесь", "material.gtceu.glauconite_sand": "Глауконитовый песок", - "material.gtceu.granite_red": "Красный гранит", + "material.gtceu.red_granite": "Красный гранит", "material.gtceu.green_sapphire_slurry": "Шлам зелёного сапфира", "material.gtceu.hematite": "Гематит", "material.gtceu.hydro_cracked_butadiene": "Бутадиен прошедший крекинг водородом", @@ -3780,9 +3779,9 @@ "material.gtceu.octane": "Октан", "material.gtceu.oganesson": "Оганесон", "material.gtceu.oil": "Нефть", - "material.gtceu.oil_heavy": "Тяжелая нефть", - "material.gtceu.oil_light": "Легкая нефть", - "material.gtceu.oil_medium": "Средняя нефть", + "material.gtceu.heavy_oil": "Тяжелая нефть", + "material.gtceu.light_oil": "Легкая нефть", + "material.gtceu.raw_oil": "Средняя нефть", "material.gtceu.oilsands": "Нефтеносный песок", "material.gtceu.olivine": "Оливин", "material.gtceu.opal": "Опал", @@ -4026,7 +4025,7 @@ "item.gtceu.long_treated_wood_rod": "Длинная обработанная деревянная палка", "item.gtceu.long_wood_rod": "Длинная деревянная палка", "item.gtceu.meat_dust": "Мясной фарш", - "item.gtceu.palladium_raw_dust": "Необработанный порошок палладия", + "item.gtceu.raw_palladium_dust": "Необработанный порошок палладия", "item.gtceu.paper_dust": "Целлюлоза", "item.gtceu.pitchblende_dust": "Уранит", "item.gtceu.platinum_raw_dust": "Необработанный платиновый порошок", @@ -4057,7 +4056,7 @@ "item.gtceu.small_ice_dust": "Маленькая кучка колотого льда", "item.gtceu.small_inert_metal_mixture_dust": "Маленькая кучка инертной смеси металлов", "item.gtceu.small_meat_dust": "Маленькая кучка мясного фарша", - "item.gtceu.small_palladium_raw_dust": "Маленькая кучка необработанного порошка палладия", + "item.gtceu.small_raw_palladium_dust": "Маленькая кучка необработанного порошка палладия", "item.gtceu.small_paper_dust": "Маленькая кучка целлюлозы", "item.gtceu.small_platinum_group_sludge_dust": "Маленький комок шлама платиновой группы", "item.gtceu.small_platinum_raw_dust": "Маленькая кучка необработанного платинового порошка", @@ -4082,7 +4081,7 @@ "item.gtceu.tiny_ice_dust": "Крошечная кучка колотого льда", "item.gtceu.tiny_inert_metal_mixture_dust": "Крошечная кучка инертной смеси металлов", "item.gtceu.tiny_meat_dust": "Крошечная кучка мясного фарша", - "item.gtceu.tiny_palladium_raw_dust": "Крошечная кучка необработанного порошка палладия", + "item.gtceu.tiny_raw_palladium_dust": "Крошечная кучка необработанного порошка палладия", "item.gtceu.tiny_paper_dust": "Крошечная куча целлюлозы", "item.gtceu.tiny_pitchblende_dust": "Крошечная кучка уранита", "item.gtceu.tiny_platinum_raw_dust": "Крошечная кучка необработанного платинового порошка", @@ -4368,7 +4367,7 @@ "material.gtceu.osmium_tetroxide": "Тетроксид осмия", "material.gtceu.oxygen": "Кислород", "material.gtceu.palladium": "Палладий", - "material.gtceu.palladium_raw": "Необработанный палладий", + "material.gtceu.raw_palladium": "Необработанный палладий", "material.gtceu.paper": "Бумага", "material.gtceu.pcb_coolant": "Диэлектрический хладоген (ПХД)", "material.gtceu.pentlandite": "Пентландит", @@ -4941,7 +4940,6 @@ "block.gtceu.gray_borderless_lamp": "Серая лампа (Без границ)", "command.gtceu.medical_condition.get": "У игрока %s следующие заболевания:", "block.gtceu.the_nether_marker": "Нижний мир", - "block.gtceu.evaporation_plant": "Градирня", "material.gtceu.potassium_sulfate": "Сульфат калия", "behavior.portable_scanner.local_hazard": "Опасность в области: %s§r - %s ppm", "behavior.portable_scanner.local_hazard.nothing": "Опасность в области: §6Ничего§r", @@ -4957,11 +4955,8 @@ "material.gtceu.dichloroethane": "Дихлорэтан", "material.gtceu.diethylenetriamine": "Диэтилентриамин", "material.gtceu.diethylenetriaminepentaacetic_acid": "Диэтилентриаминпентауксусная кислота", - "material.gtceu.debrominated_brine": "Дебромированный соляной раствор", "material.gtceu.formamide": "Формамид", "material.gtceu.glycolonitrile": "Гликолонитрил", - "material.gtceu.hot_alkaline_debrominated_brine": "Горячий щелочной дебромированный соляной раствор", - "material.gtceu.hot_brine": "Горячий соляной раствор", "material.gtceu.paracetamol": "Парацетамол", "material.gtceu.potassium_cyanide": "Цианистый калий", "material.gtceu.potassium_ferrocyanide": "Ферроцианид калия", @@ -4971,7 +4966,6 @@ "death.attack.gtceu.medical_condition/poison": "%s забыл что яды ядовиты", "material.gtceu.acetic_anhydride": "Уксусный ангидрид", "material.gtceu.calcium_carbonate": "Карбонат кальция", - "material.gtceu.concentrated_bromine_solution": "Концентрированный раствор брома", "material.gtceu.formaldehyde": "Формальдегид", "material.gtceu.formic_acid": "Муравьиная кислота", "material.gtceu.aminophenol": "Аминофенол", @@ -5112,7 +5106,6 @@ "death.attack.gtceu.medical_condition/weak_poison": "%s поел свинца (или ртути!)", "gtceu.air_scrubber": "Очиститель воздуха", "gtceu.duct_pipe.transfer_rate": "§bСкорость передачи воздуха: %s", - "gtceu.evaporation": "Выпаривание", "tooltip.gtceu.hazard_trigger.any": "При любом контакте", "tooltip.gtceu.hazard_trigger": "Проявляется при:", "tooltip.gtceu.hazard_trigger.inhalation": "Вдыхание вредных веществ", @@ -5136,7 +5129,6 @@ "config.gtceu.option.voltageTierQuarkTech": "voltageTierQuarkTech", "config.gtceu.option.zombieSpawnWithSabers": "zombieSpawnWithSabers", "config.gtceu.option.hideOreProcessingDiagrams": "hideOreProcessingDiagrams", - "block.gtceu.stainless_evaporation_casing": "Нержавеющий корпус градирни", "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - Уровень %s §7(%s/%s %s осталось§7)", "item.gtceu.invar_lighter": "Инваровая зажигалка", "item.gtceu.matchbox": "Пачка спичек", @@ -5145,20 +5137,11 @@ "item.gtceu.nano_saber": "Нано-сабля", "item.gtceu.paracetamol_pill": "Таблетка парацетамола", "item.gtceu.pill_casting_mold": "Отливная форма (Таблетка)", - "material.gtceu.acidic_bromine_exhaust": "Кислотно-бромный выхлоп", - "material.gtceu.acidic_bromine_solution": "Кислотный раствор брома", "material.gtceu.ammonium_formate": "Формиат аммония", "tagprefix.blackstone": "%s (Чернитная руда)", - "tile.gtceu.brittle_charcoal.tooltip.1": "Добудь это что бы получить Древесный уголь.", - "tile.gtceu.brittle_charcoal.name": "Хрупкий древесный уголь", - "tile.gtceu.brittle_charcoal.tooltip.0": "Сделан с помощью воспламенителя угольной ямы.", - "material.gtceu.brominated_chlorine_vapor": "Бромированные пары хлора", - "material.gtceu.raw_brine": "Необработанный cоляной раствор", "item.gtceu.face_mask": "Медицинская маска", "item.gtceu.rad_away_pill": "Таблетка Антирадина", "item.gtceu.rubber_gloves": "Резиновые перчатки", - "material.gtceu.hot_chlorinated_brominated_brine": "Горячий хлорированный бромированный соляной раствор", - "material.gtceu.hot_debrominated_brine": "Горячий дебромированный соляной раствор", "block.gtceu.brown_large_metal_sheet": "Крупный коричневый лист металла", "block.gtceu.uev_transformer_16a": "Силовой трансформатор (§aUEV§r)", "block.gtceu.normal_optical_pipe.tooltip": "§7Передает данные §fИсследования§7 или §fВычислений§7", @@ -5354,7 +5337,6 @@ "item.gtceu.treated_wood_chest_boat": "Обработанная деревянная лодка с сундуком", "material.gtceu.echo_shard": "Осколок эха", "material.gtceu.sculk": "Скалк", - "material.gtceu.hydrogen_iodide": "Йодид водорода", "metaarmor.nms.boosted_jump.enabled": "NanoMuscle™ Suite: Прыгучесть включена", "recipe.condition.adjacent_block.tooltip": "Блоки вокруг", "metaarmor.nms.boosted_jump.disabled": "NanoMuscle™ Suite: Прыгучесть выключена", diff --git a/src/main/resources/assets/gtceu/lang/uk_ua.json b/src/main/resources/assets/gtceu/lang/uk_ua.json index 126e385c951..eb38f936bde 100644 --- a/src/main/resources/assets/gtceu/lang/uk_ua.json +++ b/src/main/resources/assets/gtceu/lang/uk_ua.json @@ -127,7 +127,7 @@ "block.gtceu.aluminium_drum": "Алюмінієва бочка", "block.gtceu.antimatter_hazard_sign_block": "Блок зі знаком антиматеріальної небезпеки", "block.gtceu.assembly_line": "Конвеєрна лінія", - "block.gtceu.assembly_line_casing": "Корпус конвеєрної лінії", + "block.gtceu.assembly_control_casing": "Корпус конвеєрної лінії", "block.gtceu.assembly_line_grating": "Решітка конвеєрної лінії", "block.gtceu.assembly_line_unit": "Конвеєрний контролювальний корпус", "block.gtceu.atomic_casing": "Атомний корпус", @@ -146,7 +146,7 @@ "block.gtceu.blue_studs": "Сині кубики", "block.gtceu.boss_hazard_sign_block": "Блок зі знаком босової небезпеки", "block.gtceu.brittle_charcoal": "Крихке деревне вугілля", - "block.gtceu.bronze_brick_casing": "Мурований бронзовий корпус", + "block.gtceu.bricked_bronze_casing": "Мурований бронзовий корпус", "block.gtceu.bronze_crate": "Бронзовий ящик", "block.gtceu.bronze_drum": "Бронзова бочка", "block.gtceu.bronze_firebox_casing": "Бронзова топка", @@ -161,8 +161,6 @@ "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.central_monitor": "Центральний монітор", "block.gtceu.charcoal_pile_igniter": "Запалювач вугільної купи", @@ -822,8 +820,8 @@ "block.gtceu.me_pattern_buffer_proxy": "Проксі ME шаблонного буфера", "block.gtceu.me_stocking_input_bus": "МЕ Складальна вхідна шина", "block.gtceu.me_stocking_input_hatch": "МЕ Складальний ввідний люк", - "block.gtceu.mega_blast_furnace": "Ротаційна мартенівська піч", - "block.gtceu.mega_vacuum_freezer": "Масовий шоковий охолоджувач", + "block.gtceu.rotary_hearth_furnace": "Ротаційна мартенівська піч", + "block.gtceu.bulk_blast_chiller": "Масовий шоковий охолоджувач", "block.gtceu.miner_pipe": "Бурова труба", "block.gtceu.mob_infestation_hazard_sign_block": "Блок зі знаком небезпеки зараження мобів", "block.gtceu.mob_spawner_hazard_sign_block": "Блок зі знаком породжувальної небезпеки", @@ -927,9 +925,9 @@ "block.gtceu.normal_optical_pipe.tooltip": "§7Транспортує§f обчислення§7 або§f дослідницькі дані§7", "block.gtceu.object_holder": "Тримач об’єктів", "block.gtceu.oil": "Нафта", - "block.gtceu.oil_heavy": "Важка нафта", - "block.gtceu.oil_light": "Легка нафта", - "block.gtceu.oil_medium": "Сира нафта", + "block.gtceu.heavy_oil": "Важка нафта", + "block.gtceu.light_oil": "Легка нафта", + "block.gtceu.raw_oil": "Сира нафта", "block.gtceu.opv_1024a_laser_source_hatch": "§9§lOpV§r 1,024§eA§r люк джерела лазера", "block.gtceu.opv_1024a_laser_target_hatch": "§9§lOpV§r 1,024§eA§r люк цілі лазера", "block.gtceu.opv_16a_energy_converter": "§9§lOpV§r 16§eA§r енергетичний конвертер", @@ -1018,7 +1016,7 @@ "block.gtceu.orange_metal_sheet": "Помаранчеве металеве покриття", "block.gtceu.orange_studs": "Помаранчеві кубики", "block.gtceu.overworld_marker": "Верхній світ", - "block.gtceu.palladium_substation": "Паладієвий корпус підстанції", + "block.gtceu.palladium_substation_casing": "Паладієвий корпус підстанції", "block.gtceu.pattern_buffer.desc.0": "§fДозволяє безпосередньо§6 зберігати шаблони AE2§f для конструкцій GregTech.", "block.gtceu.pattern_buffer.desc.1": "§fШаблони AE2 можуть використовувати все, що зберігається у віджеті§6 спільного містила§f.", "block.gtceu.pattern_buffer.desc.2": "§fЗ’єднайте§6 проксі шаблонних буферів§f з§b карткою даних§f, щоб зв’язати машини між собою!", @@ -1122,7 +1120,7 @@ "block.gtceu.steam_output_bus": "Парова вихідна шина", "block.gtceu.steam_oven": "Парова піч", "block.gtceu.steam_solid_boiler.bronze": "Малий паровий твердопаливний котел", - "block.gtceu.steel_brick_casing": "Мурований кованозалізний корпус", + "block.gtceu.bricked_wrought_iron_casing": "Мурований кованозалізний корпус", "block.gtceu.steel_crate": "Сталевий ящик", "block.gtceu.steel_drum": "Сталева бочка", "block.gtceu.steel_firebox_casing": "Сталева топка", @@ -1132,7 +1130,7 @@ "block.gtceu.steel_multiblock_tank": "Сталевий багатоблоковий резервуар", "block.gtceu.steel_pipe_casing": "Сталевий трубний корпус", "block.gtceu.steel_tank_valve": "Сталевий вентиль резервуара", - "block.gtceu.steel_turbine_casing": "Сталевий турбінний корпус", + "block.gtceu.magnalium_turbine_casing": "Сталевий турбінний корпус", "block.gtceu.sterilizing_filter_casing": "Стерилізуючий фільтрувальний корпус", "block.gtceu.stress_proof_casing": "Стресостійкий корпус", "block.gtceu.stripped_rubber_log": "Обтесана каучукова колода", @@ -1732,7 +1730,7 @@ "block.gtceu.zpm_wiremill": "§cЕлітний волок III§r", "block.gtceu.zpm_world_accelerator": "§cЕлітний світовий прискорювач III§r", "block.sterilizing_filter_casing.tooltip": "Створює§a стерильне§7 середовище", - "block.surface_rock": "%s (поверхневий поклад)", + "block.gtceu.surface_rock": "%s (поверхневий поклад)", "button.gtceu.mark_as_depleted.name": "Позначити як виснажений", "button.gtceu.toggle_waypoint.name": "Перемикнути маршрутну точку", "command.gtceu.cape.failure.does_not_exist": "Плаща «%s» не існує", @@ -4083,7 +4081,6 @@ "gui.gtceu.share_tank.desc.0": "Ділиться вставленими рідинами/газами/тощо з усіма шаблонами в буфері!", "gui.gtceu.share_tank.title": "Інвентар спільного резервуара", "gui.widget.incrementButton.default_tooltip": "Утримуйте Shift, Ctrl чи обидва, щоб змінити кількість", - "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": "Вдосконалений детектор активності", @@ -4334,6 +4331,7 @@ "item.gtceu.gelled_toluene": "Гелевий толуол", "item.gtceu.gelled_toluene.tooltip": "§7Сира вибухівка", "item.gtceu.glass_gem": "Скляний кристал", + "item.gtceu.glass_lens": "Скляна лінза (Біла)", "item.gtceu.glass_plate": "Шибка", "item.gtceu.glass_tube": "Скляна трубка", "item.gtceu.glass_vial": "Скляна пробірка (%s)", @@ -4627,7 +4625,7 @@ "item.gtceu.opv_voltage_coil.tooltip": "Легендарна котушка", "item.gtceu.orange_dye_spray_can": "Аерозольний балончик (помаранчевий)", "item.gtceu.orange_glass_lens": "Скляна лінза (помаранчева)", - "item.gtceu.palladium_raw_dust": "Необроблений паладієвий пил", + "item.gtceu.raw_palladium_dust": "Необроблений паладієвий пил", "item.gtceu.paper_dust": "Паперова стружка", "item.gtceu.paracetamol_pill": "Пігулка парацетамолу", "item.gtceu.petri_dish": "Чашка петри", @@ -4785,7 +4783,7 @@ "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_raw_palladium_dust": "Дрібний необроблений паладієвий пил", "item.gtceu.small_paper_dust": "Дрібна паперова стружка", "item.gtceu.small_pipe_casting_mold": "Відливна форма (мала труба)", "item.gtceu.small_pipe_extruder_mold": "Відтискна форма (мала труба)", @@ -4855,7 +4853,7 @@ "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_raw_palladium_dust": "Крихта необробленого паладію", "item.gtceu.tiny_paper_dust": "Крихітна паперова стружка", "item.gtceu.tiny_pipe_casting_mold": "Відливна форма (крихітна труба)", "item.gtceu.tiny_pipe_extruder_mold": "Відтискна форма (крихітна труба)", @@ -5109,7 +5107,7 @@ "item.gtceu.zpm_voltage_coil": "Котушки напруги модуля нульової точки", "item.gtceu.zpm_voltage_coil.tooltip": "Суперкотушка", "item.invalid.name": "Неприпустимий предмет", - "item.netherrack_nether_quartz": "Незерська кварцова руда", + "item.gtceu.netherrack_nether_quartz": "Незерська кварцова руда", "itemGroup.gtceu.decoration": "GregTechCEu: Декоративні блоки", "itemGroup.gtceu.item": "GregTechCEu: Предмети", "itemGroup.gtceu.machine": "GregTechCEU: Машини", @@ -5360,7 +5358,7 @@ "material.gtceu.goethite": "Ґетит", "material.gtceu.gold": "Золото", "material.gtceu.granite": "Граніт", - "material.gtceu.granite_red": "Червоний граніт", + "material.gtceu.red_granite": "Червоний граніт", "material.gtceu.granitic_mineral_sand": "Гранітний мінеральний пісок", "material.gtceu.graphene": "Графен", "material.gtceu.graphite": "Графіт", @@ -5530,9 +5528,9 @@ "material.gtceu.octane": "Октан", "material.gtceu.oganesson": "Оґанесон", "material.gtceu.oil": "Нафта", - "material.gtceu.oil_heavy": "Важка нафта", - "material.gtceu.oil_light": "Легка нафта", - "material.gtceu.oil_medium": "Сира нафта", + "material.gtceu.heavy_oil": "Важка нафта", + "material.gtceu.light_oil": "Легка нафта", + "material.gtceu.raw_oil": "Сира нафта", "material.gtceu.oilsands": "Нафтоносні піски", "material.gtceu.olivine": "Олівін", "material.gtceu.opal": "Опал", @@ -5542,7 +5540,7 @@ "material.gtceu.osmium_tetroxide": "Оксид осмію", "material.gtceu.oxygen": "Кисень", "material.gtceu.palladium": "Паладій", - "material.gtceu.palladium_raw": "Необроблений паладій", + "material.gtceu.raw_palladium": "Необроблений паладій", "material.gtceu.paper": "Папір", "material.gtceu.paracetamol": "Парацетамол", "material.gtceu.pcb_coolant": "ДП-охолоджуюча рідина", diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index f9287389a4b..6d3edb0de89 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -126,7 +126,7 @@ "block.gtceu.aluminium_drum": "铝桶", "block.gtceu.antimatter_hazard_sign_block": "反物质危害警示方块", "block.gtceu.assembly_line": "装配线", - "block.gtceu.assembly_line_casing": "装配线外壳", + "block.gtceu.assembly_control_casing": "装配线外壳", "block.gtceu.assembly_line_grating": "装配线格栅", "block.gtceu.assembly_line_unit": "装配线控制外壳", "block.gtceu.atomic_casing": "原子机械方块", @@ -145,7 +145,7 @@ "block.gtceu.blue_studs": "蓝色橡胶混凝土", "block.gtceu.boss_hazard_sign_block": "Boss危害警示方块", "block.gtceu.brittle_charcoal": "脆木炭块", - "block.gtceu.bronze_brick_casing": "砖砌青铜外壳", + "block.gtceu.bricked_bronze_casing": "砖砌青铜外壳", "block.gtceu.bronze_crate": "青铜板条箱", "block.gtceu.bronze_drum": "青铜桶", "block.gtceu.bronze_firebox_casing": "青铜燃烧室", @@ -160,8 +160,6 @@ "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.central_monitor": "中央监控器", "block.gtceu.charcoal_pile_igniter": "木炭堆点火器", @@ -833,8 +831,8 @@ "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.rotary_hearth_furnace": "转底炉", + "block.gtceu.bulk_blast_chiller": "巨型真空冷冻机", "block.gtceu.miner_pipe": "采矿管道", "block.gtceu.mob_infestation_hazard_sign_block": "怪物侵袭危害警示方块", "block.gtceu.mob_spawner_hazard_sign_block": "刷怪笼危害警示方块", @@ -940,9 +938,9 @@ "block.gtceu.normal_optical_pipe.tooltip": "§7传递§f算力§7或§f研究数据§7", "block.gtceu.object_holder": "物品支架", "block.gtceu.oil": "石油", - "block.gtceu.oil_heavy": "重油", - "block.gtceu.oil_light": "轻油", - "block.gtceu.oil_medium": "原油", + "block.gtceu.heavy_oil": "重油", + "block.gtceu.light_oil": "轻油", + "block.gtceu.raw_oil": "原油", "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能量转换器", @@ -1033,7 +1031,7 @@ "block.gtceu.orange_metal_sheet": "橙色金属板方块", "block.gtceu.orange_studs": "橙色橡胶混凝土", "block.gtceu.overworld_marker": "主世界", - "block.gtceu.palladium_substation": "镀钯变电站机械方块", + "block.gtceu.palladium_substation_casing": "镀钯变电站机械方块", "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,以使机器相互连接!", @@ -1137,7 +1135,7 @@ "block.gtceu.steam_output_bus": "蒸汽输出总线", "block.gtceu.steam_oven": "蒸汽熔炼炉", "block.gtceu.steam_solid_boiler.bronze": "小型蒸汽固体燃料锅炉", - "block.gtceu.steel_brick_casing": "砖砌锻铁外壳", + "block.gtceu.bricked_wrought_iron_casing": "砖砌锻铁外壳", "block.gtceu.steel_crate": "钢板条箱", "block.gtceu.steel_drum": "钢桶", "block.gtceu.steel_firebox_casing": "钢制燃烧室", @@ -1147,7 +1145,7 @@ "block.gtceu.steel_multiblock_tank": "钢制多方块储罐", "block.gtceu.steel_pipe_casing": "钢管道方块", "block.gtceu.steel_tank_valve": "钢制储罐阀门", - "block.gtceu.steel_turbine_casing": "镁铝合金涡轮机械方块", + "block.gtceu.magnalium_turbine_casing": "镁铝合金涡轮机械方块", "block.gtceu.sterilizing_filter_casing": "除菌过滤器机械方块", "block.gtceu.stress_proof_casing": "耐压机械方块", "block.gtceu.stripped_rubber_log": "去皮橡胶原木", @@ -1759,7 +1757,7 @@ "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)", + "block.gtceu.surface_rock": "地表岩石(%s)", "button.gtceu.mark_as_depleted.name": "标记为枯竭", "button.gtceu.toggle_waypoint.name": "切换路径点", "command.gtceu.cape.failure.does_not_exist": "披风%s不存在", @@ -4135,12 +4133,10 @@ "gui.gtceu.share_tank.desc.0": "与总成内的所有样板共享流体!", "gui.gtceu.share_tank.title": "共享流体库存", "gui.widget.incrementButton.default_tooltip": "按住Shift,Ctrl键或同时按住这两个键来改变数量", - "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": "进阶流体探测覆盖板", @@ -4389,6 +4385,7 @@ "item.gtceu.gelled_toluene": "胶凝甲苯", "item.gtceu.gelled_toluene.tooltip": "§7炸药原料", "item.gtceu.glass_gem": "玻璃晶体", + "item.gtceu.glass_lens": "玻璃透镜(白色)", "item.gtceu.glass_plate": "玻璃板", "item.gtceu.glass_tube": "玻璃管", "item.gtceu.glass_vial": "%s玻璃试管", @@ -4684,7 +4681,7 @@ "item.gtceu.opv_voltage_coil.tooltip": "传奇线圈", "item.gtceu.orange_dye_spray_can": "喷漆罐(橙色)", "item.gtceu.orange_glass_lens": "玻璃透镜(橙色)", - "item.gtceu.palladium_raw_dust": "粗钯粉", + "item.gtceu.raw_palladium_dust": "粗钯粉", "item.gtceu.paper_dust": "纸屑", "item.gtceu.paracetamol_pill": "对乙酰氨基酚药片", "item.gtceu.petri_dish": "培养皿", @@ -4697,20 +4694,19 @@ "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_casting_mold.tooltip": "§7用来制作巨型管道的模具", - "item.gtceu.pipe.huge_extruder_mold.tooltip": "§7用来制作巨型管道的模头", - "item.gtceu.pipe.large_casting_mold.tooltip": "§7用来制作大型管道的模具", - "item.gtceu.pipe.large_extruder_mold.tooltip": "§7用来制作大型管道的模头", - "item.gtceu.pipe.normal_casting_mold.tooltip": "§7用来制作管道的模具", - "item.gtceu.pipe.normal_extruder_mold.tooltip": "§7用来制作管道的模头", - "item.gtceu.pipe.small_casting_mold.tooltip": "§7用来制作小型管道的模具", - "item.gtceu.pipe.small_extruder_mold.tooltip": "§7用来制作小型管道的模头", - "item.gtceu.pipe.tiny_casting_mold.tooltip": "§7用来制作微型管道的模具", - "item.gtceu.pipe.tiny_extruder_mold.tooltip": "§7用来制作微型管道的模头", + "item.gtceu.huge_pipe_casting_mold.tooltip": "§7用来制作巨型管道的模具", + "item.gtceu.huge_pipe_extruder_mold.tooltip": "§7用来制作巨型管道的模头", + "item.gtceu.large_pipe_casting_mold.tooltip": "§7用来制作大型管道的模具", + "item.gtceu.large_pipe_extruder_mold.tooltip": "§7用来制作大型管道的模头", + "item.gtceu.normal_pipe_casting_mold.tooltip": "§7用来制作管道的模具", + "item.gtceu.normal_pipe_extruder_mold.tooltip": "§7用来制作管道的模头", + "item.gtceu.small_pipe_casting_mold.tooltip": "§7用来制作小型管道的模具", + "item.gtceu.small_pipe_extruder_mold.tooltip": "§7用来制作小型管道的模头", + "item.gtceu.tiny_pipe_casting_mold.tooltip": "§7用来制作微型管道的模具", + "item.gtceu.tiny_pipe_extruder_mold.tooltip": "§7用来制作微型管道的模头", "item.gtceu.pitchblende_dust": "沥青铀矿", "item.gtceu.plant_ball": "植物球", "item.gtceu.plastic_circuit_board": "塑料电路基板", @@ -4801,17 +4797,12 @@ "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.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.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": "单晶硅", @@ -4839,7 +4830,7 @@ "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_raw_palladium_dust": "小堆粗钯粉", "item.gtceu.small_paper_dust": "小堆纸屑", "item.gtceu.small_pipe_casting_mold": "模具(小型管道)", "item.gtceu.small_pipe_extruder_mold": "模头(小型管道)", @@ -4890,7 +4881,6 @@ "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": "作§f覆盖板§7时以§f标签§7过滤§f物品§7的输入/输出。", "item.gtceu.tag_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", "item.gtceu.talc_dust": "滑石", @@ -4914,7 +4904,7 @@ "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_raw_palladium_dust": "小撮粗钯粉", "item.gtceu.tiny_paper_dust": "小撮纸屑", "item.gtceu.tiny_pipe_casting_mold": "模具(微型管道)", "item.gtceu.tiny_pipe_extruder_mold": "模头(微型管道)", @@ -5168,7 +5158,7 @@ "item.gtceu.zpm_voltage_coil": "零点压线圈", "item.gtceu.zpm_voltage_coil.tooltip": "超级线圈", "item.invalid.name": "无效物品", - "item.netherrack_nether_quartz": "下界石英矿石", + "item.gtceu.netherrack_nether_quartz": "下界石英矿石", "itemGroup.gtceu.decoration": "格雷科技 | 装饰方块", "itemGroup.gtceu.item": "格雷科技 | 物品", "itemGroup.gtceu.machine": "格雷科技 | 机器", @@ -5419,7 +5409,7 @@ "material.gtceu.goethite": "针铁矿", "material.gtceu.gold": "金", "material.gtceu.granite": "花岗岩", - "material.gtceu.granite_red": "红花岗岩", + "material.gtceu.red_granite": "红花岗岩", "material.gtceu.granitic_mineral_sand": "花岗岩矿砂", "material.gtceu.graphene": "石墨烯", "material.gtceu.graphite": "石墨", @@ -5587,14 +5577,13 @@ "material.gtceu.nitrosyl_chloride": "亚硝酰氯", "material.gtceu.nitrous_oxide": "一氧化二氮", "material.gtceu.nobelium": "锘", - "material.gtceu.null": "无", "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.heavy_oil": "重油", + "material.gtceu.light_oil": "轻油", + "material.gtceu.raw_oil": "原油", "material.gtceu.oilsands": "油砂", "material.gtceu.olivine": "橄榄石", "material.gtceu.opal": "猫眼石", @@ -5604,7 +5593,7 @@ "material.gtceu.osmium_tetroxide": "四氧化锇", "material.gtceu.oxygen": "氧", "material.gtceu.palladium": "钯", - "material.gtceu.palladium_raw": "粗钯", + "material.gtceu.raw_palladium": "粗钯", "material.gtceu.paper": "纸", "material.gtceu.paracetamol": "对乙酰氨基酚", "material.gtceu.pcb_coolant": "多氯联苯冷却液 ", @@ -6038,7 +6027,6 @@ "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物品管道", diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json index b27fe57a602..9fffb15ed95 100644 --- a/src/main/resources/assets/gtceu/lang/zh_tw.json +++ b/src/main/resources/assets/gtceu/lang/zh_tw.json @@ -119,7 +119,7 @@ "block.gtceu.aluminium_drum": "鋁桶", "block.gtceu.antimatter_hazard_sign_block": "反物質危害警示方塊", "block.gtceu.assembly_line": "裝配線", - "block.gtceu.assembly_line_casing": "裝配線外殼", + "block.gtceu.assembly_control_casing": "裝配線外殼", "block.gtceu.assembly_line_grating": "裝配線格柵", "block.gtceu.assembly_line_unit": "裝配線控制外殼", "block.gtceu.atomic_casing": "原子機械方塊", @@ -138,7 +138,7 @@ "block.gtceu.blue_studs": "藍色橡膠混凝土", "block.gtceu.boss_hazard_sign_block": "Boss危害警示方塊", "block.gtceu.brittle_charcoal": "脆木炭塊", - "block.gtceu.bronze_brick_casing": "磚砌青銅外殼", + "block.gtceu.bricked_bronze_casing": "磚砌青銅外殼", "block.gtceu.bronze_crate": "青銅板條箱", "block.gtceu.bronze_drum": "青銅桶", "block.gtceu.bronze_firebox_casing": "青銅燃燒室", @@ -153,8 +153,6 @@ "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.central_monitor": "中央監控器", "block.gtceu.charcoal_pile_igniter": "木炭堆點火器", @@ -813,8 +811,8 @@ "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.rotary_hearth_furnace": "轉底爐", + "block.gtceu.bulk_blast_chiller": "巨型真空冷凍機", "block.gtceu.miner_pipe": "採礦管道", "block.gtceu.mob_infestation_hazard_sign_block": "怪物侵襲危害警示方塊", "block.gtceu.mob_spawner_hazard_sign_block": "生怪磚危害警示方塊", @@ -918,9 +916,9 @@ "block.gtceu.normal_optical_pipe.tooltip": "§7傳遞§f算力§7或§f研究資料§7", "block.gtceu.object_holder": "物品支架", "block.gtceu.oil": "石油", - "block.gtceu.oil_heavy": "重油", - "block.gtceu.oil_light": "輕油", - "block.gtceu.oil_medium": "原油", + "block.gtceu.heavy_oil": "重油", + "block.gtceu.light_oil": "輕油", + "block.gtceu.raw_oil": "原油", "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能量轉換器", @@ -1009,7 +1007,7 @@ "block.gtceu.orange_metal_sheet": "橙色金屬板方塊", "block.gtceu.orange_studs": "橙色橡膠混凝土", "block.gtceu.overworld_marker": "主世界", - "block.gtceu.palladium_substation": "鍍鈀變電站機械方塊", + "block.gtceu.palladium_substation_casing": "鍍鈀變電站機械方塊", "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,以使機器相互連線!", @@ -1113,7 +1111,7 @@ "block.gtceu.steam_output_bus": "輸出匯流排(蒸汽)", "block.gtceu.steam_oven": "蒸汽熔煉爐", "block.gtceu.steam_solid_boiler.bronze": "小型蒸汽固體燃料鍋爐", - "block.gtceu.steel_brick_casing": "磚砌鍛鐵外殼", + "block.gtceu.bricked_wrought_iron_casing": "磚砌鍛鐵外殼", "block.gtceu.steel_crate": "鋼板條箱", "block.gtceu.steel_drum": "鋼桶", "block.gtceu.steel_firebox_casing": "鋼製燃燒室", @@ -1123,7 +1121,7 @@ "block.gtceu.steel_multiblock_tank": "鋼製多方塊儲罐", "block.gtceu.steel_pipe_casing": "鋼管道方塊", "block.gtceu.steel_tank_valve": "鋼製儲罐閥門", - "block.gtceu.steel_turbine_casing": "鋼渦輪機械方塊", + "block.gtceu.magnalium_turbine_casing": "鋼渦輪機械方塊", "block.gtceu.sterilizing_filter_casing": "除菌過濾器機械方塊", "block.gtceu.stress_proof_casing": "耐壓機械方塊", "block.gtceu.stripped_rubber_log": "剝皮橡膠木原木", @@ -1722,7 +1720,7 @@ "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)", + "block.gtceu.surface_rock": "地表岩石(%s)", "button.gtceu.mark_as_depleted.name": "標記為枯竭", "button.gtceu.toggle_waypoint.name": "切換路徑點", "command.gtceu.cape.failure.does_not_exist": "披風%s不存在", @@ -3982,7 +3980,6 @@ "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": "進階活躍狀態探測器", @@ -4233,6 +4230,7 @@ "item.gtceu.gelled_toluene": "膠凝甲苯", "item.gtceu.gelled_toluene.tooltip": "§7炸藥原料", "item.gtceu.glass_gem": "玻璃晶體", + "item.gtceu.glass_lens": "玻璃透鏡(白色)", "item.gtceu.glass_plate": "玻璃板", "item.gtceu.glass_tube": "玻璃管", "item.gtceu.glass_vial": "玻璃試管", @@ -4525,7 +4523,7 @@ "item.gtceu.opv_voltage_coil.tooltip": "傳奇線圈", "item.gtceu.orange_dye_spray_can": "噴漆罐(橙色)", "item.gtceu.orange_glass_lens": "玻璃透鏡(橙色)", - "item.gtceu.palladium_raw_dust": "粗鈀粉", + "item.gtceu.raw_palladium_dust": "粗鈀粉", "item.gtceu.paper_dust": "紙屑", "item.gtceu.paracetamol_pill": "對乙醯氨基酚藥片", "item.gtceu.petri_dish": "培養皿", @@ -4683,7 +4681,7 @@ "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_raw_palladium_dust": "小堆粗鈀粉", "item.gtceu.small_paper_dust": "小堆紙屑", "item.gtceu.small_pipe_casting_mold": "模具(小型管道)", "item.gtceu.small_pipe_extruder_mold": "擠壓模具(小型管道)", @@ -4753,7 +4751,7 @@ "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_raw_palladium_dust": "小撮粗鈀粉", "item.gtceu.tiny_paper_dust": "小撮紙屑", "item.gtceu.tiny_pipe_casting_mold": "模具(微型管道)", "item.gtceu.tiny_pipe_extruder_mold": "擠壓模具(微型管道)", @@ -5006,7 +5004,7 @@ "item.gtceu.zpm_voltage_coil": "零點壓線圈(§cZPM§r)", "item.gtceu.zpm_voltage_coil.tooltip": "超級線圈", "item.invalid.name": "無效物品", - "item.netherrack_nether_quartz": "地獄石英礦", + "item.gtceu.netherrack_nether_quartz": "地獄石英礦", "itemGroup.gtceu.decoration": "格雷科技 | 裝飾方塊", "itemGroup.gtceu.item": "格雷科技 | 物品", "itemGroup.gtceu.machine": "格雷科技 | 機器", @@ -5257,7 +5255,7 @@ "material.gtceu.goethite": "針鐵", "material.gtceu.gold": "金", "material.gtceu.granite": "花崗岩", - "material.gtceu.granite_red": "紅花崗岩", + "material.gtceu.red_granite": "紅花崗岩", "material.gtceu.granitic_mineral_sand": "花崗岩礦砂", "material.gtceu.graphene": "石墨烯", "material.gtceu.graphite": "石墨", @@ -5427,9 +5425,9 @@ "material.gtceu.octane": "辛烷", "material.gtceu.oganesson": "鿫", "material.gtceu.oil": "石油", - "material.gtceu.oil_heavy": "重油", - "material.gtceu.oil_light": "輕油", - "material.gtceu.oil_medium": "原油", + "material.gtceu.heavy_oil": "重油", + "material.gtceu.light_oil": "輕油", + "material.gtceu.raw_oil": "原油", "material.gtceu.oilsands": "油砂", "material.gtceu.olivine": "橄欖石", "material.gtceu.opal": "貓眼石", @@ -5439,7 +5437,7 @@ "material.gtceu.osmium_tetroxide": "四氧化鋨", "material.gtceu.oxygen": "氧", "material.gtceu.palladium": "鈀", - "material.gtceu.palladium_raw": "粗鈀", + "material.gtceu.raw_palladium": "粗鈀", "material.gtceu.paper": "紙", "material.gtceu.paracetamol": "對乙醯氨基酚", "material.gtceu.pcb_coolant": "多氯聯苯冷卻液 ", 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_unit.json similarity index 90% rename from src/main/resources/assets/gtceu/models/block/variant/assembly_line.json rename to src/main/resources/assets/gtceu/models/block/variant/assembly_line_unit.json index 50ae842ddbc..d79c805b053 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json +++ b/src/main/resources/assets/gtceu/models/block/variant/assembly_line_unit.json @@ -1,6 +1,6 @@ { "parent": "block/cube_all", "textures": { - "all": "gtceu:block/casings/mechanic/machine_casing_assembly_line" + "all": "gtceu:block/casings/mechanic/machine_casing_assembly_line_unit" } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/variant/assembly_line_active.json b/src/main/resources/assets/gtceu/models/block/variant/assembly_line_unit_active.json similarity index 83% rename from src/main/resources/assets/gtceu/models/block/variant/assembly_line_active.json rename to src/main/resources/assets/gtceu/models/block/variant/assembly_line_unit_active.json index 32a8880562c..df2cf5a8f86 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/assembly_line_active.json +++ b/src/main/resources/assets/gtceu/models/block/variant/assembly_line_unit_active.json @@ -1,7 +1,7 @@ { "parent": "gtceu:block/cube_2_layer/all", "textures": { - "bot_all": "gtceu:block/casings/mechanic/machine_casing_assembly_line", - "top_all": "gtceu:block/casings/mechanic/machine_casing_assembly_line_bloom" + "bot_all": "gtceu:block/casings/mechanic/machine_casing_assembly_line_unit", + "top_all": "gtceu:block/casings/mechanic/machine_casing_assembly_line_unit_bloom" } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line.png b/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_unit.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line.png rename to src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_unit.png diff --git a/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_bloom.png b/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_unit_bloom.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_bloom.png rename to src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_unit_bloom.png diff --git a/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_bloom.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_unit_bloom.png.mcmeta similarity index 60% rename from src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_bloom.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_unit_bloom.png.mcmeta index a3edcb551d9..9660e715fbc 100644 --- a/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_bloom.png.mcmeta +++ b/src/main/resources/assets/gtceu/textures/block/casings/mechanic/machine_casing_assembly_line_unit_bloom.png.mcmeta @@ -1,6 +1,6 @@ { - "animation":{ - "frametime":2 + "animation": { + "frametime": 2 }, "gtceu": { "bloom": true diff --git a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_heavy.png b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.heavy_oil.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_heavy.png rename to src/main/resources/assets/gtceu/textures/block/fluids/fluid.heavy_oil.png diff --git a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.heavy_oil.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.heavy_oil.png.mcmeta new file mode 100644 index 00000000000..24381e6cd16 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.heavy_oil.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_light.png b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.light_oil.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_light.png rename to src/main/resources/assets/gtceu/textures/block/fluids/fluid.light_oil.png diff --git a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.light_oil.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.light_oil.png.mcmeta new file mode 100644 index 00000000000..24381e6cd16 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.light_oil.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_heavy.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_heavy.png.mcmeta deleted file mode 100644 index 0df7234a792..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_heavy.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/fluids/fluid.oil_light.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_light.png.mcmeta deleted file mode 100644 index 0df7234a792..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_light.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/fluids/fluid.oil_medium.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_medium.png.mcmeta deleted file mode 100644 index 0df7234a792..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_medium.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/fluids/fluid.oil_medium.png b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.raw_oil.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/fluids/fluid.oil_medium.png rename to src/main/resources/assets/gtceu/textures/block/fluids/fluid.raw_oil.png diff --git a/src/main/resources/assets/gtceu/textures/block/fluids/fluid.raw_oil.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.raw_oil.png.mcmeta new file mode 100644 index 00000000000..24381e6cd16 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/fluids/fluid.raw_oil.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_active_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_paused.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_paused.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_paused_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/bulk_blast_chiller/overlay_front_paused_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_active_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_paused.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_paused.png diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_paused_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive.png rename to src/main/resources/assets/gtceu/textures/block/multiblock/gcym/rotary_hearth_furnace/overlay_front_paused_emissive.png diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 2d2e9616239..9cee2e3d376 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -41,6 +41,7 @@ "client.bloom.normal.embeddium.BlockRendererMixin", "client.bloom.normal.embeddium.DefaultMaterialsMixin", "client.bloom.normal.embeddium.DefaultTerrainRenderPassesMixin", + "client.bloom.normal.embeddium.SodiumWorldRendererMixin", "client.bloom.normal.oculus.WorldRenderingPhaseMixin", "client.bloom.safemode.embeddium.BlockRendererMixin", "dev.client.KeyboardHandlerMixin", @@ -96,7 +97,11 @@ "TagValueAccessor", "UniformGeneratorAccessor", "client.ItemEntityMixin", - "client.bloom.normal.embeddium.SodiumWorldRendererMixin", + "datafixer.DataFixTypesMixin", + "datafixer.ForgeHooksMixin", + "datafixer.NbtUtilsMixin", + "datafixer.V705Accessor", + "datafixer.modernfix.CachingStructureManagerMixin", "dev.datagen.FixParallelKeyMappingRegistrationMixin", "dev.test.GameTestRegistryMixin", "emi.EmiApiAccessor",