diff --git a/CHANGELOG.md b/CHANGELOG.md index eff342b7e1..d94d840cc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,43 +1,34 @@ # ChangeLog -Version: 1.3.0-a +Version: 1.3.1 # **1.21 IS A *VERY* BREAKING UPDATE, DO NOT TRY TO UPDATE FROM 1.20.1 OR 1.19.2** ### ADDITIONS: -- Added the subtitle language values for machine/tool sounds -- Added various missing, commented out recipes back -- Added the ability to disable ore processing categories per material +- Ordered Assembly Lines +- Integration of Monazite: providing lots of additional functionality to jade +- Ghost Circuits for fluid hatches +- Overclocking beyond MAX voltage +- Much more lamp variants, with bloom support +- Subtick parallels, if a recipe oc's past 1 tick it does parallels instead ### CHANGES: -- Updated mod compatibilities now that the dependencies exist -- Changed RedGranite material's id to actually be `red_granite` -- updated to latest KJS 1.21 changes -- Made pollution more bearable -- Made pollution shrink away slowly (speed is configurable) -- Made pollution spawn a fixed amount of particles instead of a massive amount -- Made pollution change the grass/leaf/water color of the area it's in -- Made singleblock generators produce a small amount of pollution -- Made air ducts more sensible to use -- Made all medical conditions be unconditionally removed on death -- Made normal naquadah not radioactive -- Made higher-tier air scrubbers have a higher radius -- Updated ja_jp & zh_cn language files +- In world multiblock preview now properly works with rotated multiblocks +- Updated jp and tw lang +- Fusion Reactors now show a bloom ring when running a recipe +- Pipes of any kind can be water logged +- Updated NeoForge, EMI, KubeJS +- Removed registerX methods from IGTAddon in favor of the GT register event ### FIXES: -- Fixed tools not taking durability damage when using -- Fixed fluid stack networking crash that sometimes could happen -- Fixed JEI crashing when loading a world -- Fixed EMI spamming the log when loading a world -- Fixed addons' material registries being stuck frozen -- Fixed infinite loop in fluid tank filling via automation -- Fixed EMI/JEI/REI not loading GT's pages -- Fixed missing null checks on create compatibility machines sometimes causing crashes -- Fixed fluid parallel logic -- Fixed GT recipe removal filtering -- Fixed pipe frame material not loading correctly when a world is loaded -- Fixed custom veins not generating when no biomes are set -- Fixed "%s B" and "%s mB" being inverted in the language values -- Fixed unsafe set operation in recipe logic that could cause crashes -- Fixed removal of vanilla GT ore veins not working correctly on singleplayer -- Fixed xaero's minimap spamming the log when it's rendering a material block +- Disabling hazard config now properly disables everything hazard related +- Rubber trees spawn chance config now works +- Singleblock machines can no longer run a recipe beyond its tier +- Fluid Hatch locking properly saves between world loads +- Color-changing tooltip now changes colors properly +- Fixed recipe conflicts in ore recipes +- Fixed Drill GUI not updating after 1st click +- Fixed batteries always working as ULV once charged +- Fixed crafting with tools crashing the game +- Fixed GT's recipe removal not working +- Fixed GT causing options.txt to reset every launch diff --git a/gradle.properties b/gradle.properties index 8fb0b9b1e4..1bcd6d47e2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ loader_version = 2 # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 1.3.0-a +mod_version = 1.3.1 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ diff --git a/settings.gradle b/settings.gradle index b86fd9c54e..a1a1c6b25f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -28,7 +28,7 @@ dependencyResolutionManagement { def reiVersion = "16.0.729" def emiVersion = "1.1.8" def ae2Version = "18.1.3-alpha" - def kjsVersion = "2100.7.0-build.56" + def kjsVersion = "2100.7.0-build.57" def auVersion = "1.20.1-0.6.0" // NeoForge diff --git a/src/generated/resources/assets/gtceu/blockstates/black_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/black_borderless_lamp.json new file mode 100644 index 0000000000..65fa8c3d44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/black_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/black_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/black_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/black_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/black_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/black_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/black_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/black_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/black_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/black_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/black_lamp.json b/src/generated/resources/assets/gtceu/blockstates/black_lamp.json index df2e9c0c6d..cd4e0f9257 100644 --- a/src/generated/resources/assets/gtceu/blockstates/black_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/black_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/black_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/black_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/black_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/black_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/black_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/black_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/black_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/black_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/black_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/blue_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/blue_borderless_lamp.json new file mode 100644 index 0000000000..45abae047a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/blue_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/blue_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/blue_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/blue_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/blue_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/blue_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/blue_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/blue_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/blue_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/blue_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/blue_lamp.json b/src/generated/resources/assets/gtceu/blockstates/blue_lamp.json index ced684b1b1..5ccc078cfc 100644 --- a/src/generated/resources/assets/gtceu/blockstates/blue_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/blue_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/blue_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/blue_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/blue_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/blue_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/blue_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/blue_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/blue_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/blue_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/blue_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/brown_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/brown_borderless_lamp.json new file mode 100644 index 0000000000..d8b79bb47b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/brown_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/brown_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/brown_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/brown_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/brown_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/brown_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/brown_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/brown_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/brown_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/brown_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/brown_lamp.json b/src/generated/resources/assets/gtceu/blockstates/brown_lamp.json index ddd4748b9e..7209c021b2 100644 --- a/src/generated/resources/assets/gtceu/blockstates/brown_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/brown_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/brown_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/brown_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/brown_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/brown_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/brown_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/brown_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/brown_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/brown_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/brown_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cyan_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/cyan_borderless_lamp.json new file mode 100644 index 0000000000..5d8399dd75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/cyan_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/cyan_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/cyan_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cyan_lamp.json b/src/generated/resources/assets/gtceu/blockstates/cyan_lamp.json index 3f69dcdda6..99f8b154d6 100644 --- a/src/generated/resources/assets/gtceu/blockstates/cyan_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/cyan_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/cyan_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/cyan_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/cyan_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/cyan_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/cyan_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/cyan_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/cyan_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/cyan_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/cyan_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/gray_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/gray_borderless_lamp.json new file mode 100644 index 0000000000..5edfd0e79e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/gray_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/gray_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/gray_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/gray_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/gray_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/gray_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/gray_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/gray_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/gray_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/gray_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/gray_lamp.json b/src/generated/resources/assets/gtceu/blockstates/gray_lamp.json index dd73057a37..2a297aa3b1 100644 --- a/src/generated/resources/assets/gtceu/blockstates/gray_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/gray_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/gray_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/gray_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/gray_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/gray_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/gray_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/gray_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/gray_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/gray_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/gray_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/green_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/green_borderless_lamp.json new file mode 100644 index 0000000000..20aa48033b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/green_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/green_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/green_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/green_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/green_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/green_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/green_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/green_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/green_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/green_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/green_lamp.json b/src/generated/resources/assets/gtceu/blockstates/green_lamp.json index dda69261ce..d3fc044531 100644 --- a/src/generated/resources/assets/gtceu/blockstates/green_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/green_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/green_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/green_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/green_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/green_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/green_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/green_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/green_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/green_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/green_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/light_blue_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/light_blue_borderless_lamp.json new file mode 100644 index 0000000000..3b2d626b77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/light_blue_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_blue_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_blue_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/light_blue_lamp.json b/src/generated/resources/assets/gtceu/blockstates/light_blue_lamp.json index 49ed7133e8..789777c405 100644 --- a/src/generated/resources/assets/gtceu/blockstates/light_blue_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/light_blue_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/light_blue_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_blue_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_blue_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_blue_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/light_blue_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_blue_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_blue_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_blue_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_blue_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/light_gray_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/light_gray_borderless_lamp.json new file mode 100644 index 0000000000..25408c7c72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/light_gray_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_gray_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_gray_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/light_gray_lamp.json b/src/generated/resources/assets/gtceu/blockstates/light_gray_lamp.json index 08fd0e2551..077535ad40 100644 --- a/src/generated/resources/assets/gtceu/blockstates/light_gray_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/light_gray_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/light_gray_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_gray_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_gray_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_gray_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/light_gray_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/light_gray_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/light_gray_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/light_gray_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/light_gray_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lime_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/lime_borderless_lamp.json new file mode 100644 index 0000000000..b48cdc08da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lime_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/lime_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/lime_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/lime_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/lime_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/lime_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/lime_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/lime_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/lime_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/lime_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lime_lamp.json b/src/generated/resources/assets/gtceu/blockstates/lime_lamp.json index 272dec9eaf..d36a7c3e3a 100644 --- a/src/generated/resources/assets/gtceu/blockstates/lime_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/lime_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/lime_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/lime_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/lime_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/lime_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/lime_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/lime_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/lime_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/lime_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/lime_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/magenta_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/magenta_borderless_lamp.json new file mode 100644 index 0000000000..4c25a94fcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/magenta_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/magenta_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/magenta_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/magenta_lamp.json b/src/generated/resources/assets/gtceu/blockstates/magenta_lamp.json index 276b402f74..e3bfd66936 100644 --- a/src/generated/resources/assets/gtceu/blockstates/magenta_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/magenta_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/magenta_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/magenta_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/magenta_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/magenta_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/magenta_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/magenta_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/magenta_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/magenta_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/magenta_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/orange_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/orange_borderless_lamp.json new file mode 100644 index 0000000000..c82a39e4c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/orange_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/orange_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/orange_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/orange_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/orange_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/orange_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/orange_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/orange_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/orange_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/orange_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/orange_lamp.json b/src/generated/resources/assets/gtceu/blockstates/orange_lamp.json index 28356891be..d4f1841d14 100644 --- a/src/generated/resources/assets/gtceu/blockstates/orange_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/orange_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/orange_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/orange_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/orange_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/orange_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/orange_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/orange_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/orange_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/orange_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/orange_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/overworld_marker.json b/src/generated/resources/assets/gtceu/blockstates/overworld_marker.json new file mode 100644 index 0000000000..5befb5d45e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/overworld_marker.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/overworld_marker" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/pink_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/pink_borderless_lamp.json new file mode 100644 index 0000000000..277ac18c6b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/pink_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/pink_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/pink_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/pink_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/pink_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/pink_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/pink_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/pink_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/pink_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/pink_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/pink_lamp.json b/src/generated/resources/assets/gtceu/blockstates/pink_lamp.json index 2df21e50eb..a480a15edf 100644 --- a/src/generated/resources/assets/gtceu/blockstates/pink_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/pink_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/pink_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/pink_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/pink_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/pink_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/pink_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/pink_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/pink_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/pink_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/pink_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/purple_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/purple_borderless_lamp.json new file mode 100644 index 0000000000..9328f5d185 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/purple_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/purple_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/purple_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/purple_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/purple_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/purple_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/purple_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/purple_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/purple_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/purple_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/purple_lamp.json b/src/generated/resources/assets/gtceu/blockstates/purple_lamp.json index 4b1eab8f93..0ea9e2c4bc 100644 --- a/src/generated/resources/assets/gtceu/blockstates/purple_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/purple_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/purple_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/purple_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/purple_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/purple_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/purple_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/purple_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/purple_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/purple_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/purple_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/red_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/red_borderless_lamp.json new file mode 100644 index 0000000000..a89947daaa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/red_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/red_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/red_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/red_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/red_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/red_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/red_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/red_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/red_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/red_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/red_lamp.json b/src/generated/resources/assets/gtceu/blockstates/red_lamp.json index 26707fd3b7..5c68690f6b 100644 --- a/src/generated/resources/assets/gtceu/blockstates/red_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/red_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/red_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/red_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/red_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/red_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/red_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/red_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/red_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/red_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/red_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/the_end_marker.json b/src/generated/resources/assets/gtceu/blockstates/the_end_marker.json new file mode 100644 index 0000000000..f379890a71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/the_end_marker.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/the_end_marker" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/the_nether_marker.json b/src/generated/resources/assets/gtceu/blockstates/the_nether_marker.json new file mode 100644 index 0000000000..2ffef2e5e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/the_nether_marker.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/the_nether_marker" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/white_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/white_borderless_lamp.json new file mode 100644 index 0000000000..329c333d42 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/white_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/white_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/white_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/white_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/white_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/white_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/white_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/white_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/white_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/white_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/white_lamp.json b/src/generated/resources/assets/gtceu/blockstates/white_lamp.json index 37486eb9a2..38298650c4 100644 --- a/src/generated/resources/assets/gtceu/blockstates/white_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/white_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/white_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/white_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/white_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/white_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/white_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/white_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/white_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/white_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/white_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/yellow_borderless_lamp.json b/src/generated/resources/assets/gtceu/blockstates/yellow_borderless_lamp.json new file mode 100644 index 0000000000..cdf49a3e28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/yellow_borderless_lamp.json @@ -0,0 +1,52 @@ +{ + "variants": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/yellow_borderless_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/yellow_borderless_lamp_bloom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/yellow_lamp.json b/src/generated/resources/assets/gtceu/blockstates/yellow_lamp.json index e8793c2fda..43509ebf6a 100644 --- a/src/generated/resources/assets/gtceu/blockstates/yellow_lamp.json +++ b/src/generated/resources/assets/gtceu/blockstates/yellow_lamp.json @@ -1,7 +1,52 @@ { "variants": { - "": { + "bloom=false,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=false,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=false,inverted=false,lit=true,powered=false": { "model": "gtceu:block/yellow_lamp" + }, + "bloom=false,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/yellow_lamp" + }, + "bloom=false,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=false,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=false,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/yellow_lamp" + }, + "bloom=false,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/yellow_lamp" + }, + "bloom=true,inverted=false,lit=false,powered=false": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=true,inverted=false,lit=false,powered=true": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=true,inverted=false,lit=true,powered=false": { + "model": "gtceu:block/yellow_lamp_bloom" + }, + "bloom=true,inverted=false,lit=true,powered=true": { + "model": "gtceu:block/yellow_lamp_bloom" + }, + "bloom=true,inverted=true,lit=false,powered=false": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=true,inverted=true,lit=false,powered=true": { + "model": "gtceu:block/yellow_lamp_off" + }, + "bloom=true,inverted=true,lit=true,powered=false": { + "model": "gtceu:block/yellow_lamp_bloom" + }, + "bloom=true,inverted=true,lit=true,powered=true": { + "model": "gtceu:block/yellow_lamp_bloom" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/compass/nodes/materials/chainsaw_head.json b/src/generated/resources/assets/gtceu/compass/nodes/materials/chainsaw_head.json index 85a77e08aa..f0714fb296 100644 --- a/src/generated/resources/assets/gtceu/compass/nodes/materials/chainsaw_head.json +++ b/src/generated/resources/assets/gtceu/compass/nodes/materials/chainsaw_head.json @@ -5,7 +5,7 @@ }, "page": "gtceu:materials/chainsaw_head", "position": [ - -350, + -300, 250 ], "section": "gtceu:materials" diff --git a/src/generated/resources/assets/gtceu/compass/nodes/materials/screwdriver_tip.json b/src/generated/resources/assets/gtceu/compass/nodes/materials/screwdriver_tip.json index 482dbce4f6..0e2be18919 100644 --- a/src/generated/resources/assets/gtceu/compass/nodes/materials/screwdriver_tip.json +++ b/src/generated/resources/assets/gtceu/compass/nodes/materials/screwdriver_tip.json @@ -5,7 +5,7 @@ }, "page": "gtceu:materials/screwdriver_tip", "position": [ - -150, + -100, 100 ], "section": "gtceu:materials" diff --git a/src/generated/resources/assets/gtceu/compass/nodes/tools/mallet.json b/src/generated/resources/assets/gtceu/compass/nodes/tools/mallet.json index 40df56532d..fe2023c8b1 100644 --- a/src/generated/resources/assets/gtceu/compass/nodes/tools/mallet.json +++ b/src/generated/resources/assets/gtceu/compass/nodes/tools/mallet.json @@ -1,7 +1,7 @@ { "button_texture": { "type": "item", - "res": "gtceu:polybenzimidazole_mallet" + "res": "gtceu:silicone_rubber_mallet" }, "items": [ "#c:tools/mallets" diff --git a/src/generated/resources/assets/gtceu/compass/nodes/tools/plunger.json b/src/generated/resources/assets/gtceu/compass/nodes/tools/plunger.json index 0edf7e42e0..a60f8e66a9 100644 --- a/src/generated/resources/assets/gtceu/compass/nodes/tools/plunger.json +++ b/src/generated/resources/assets/gtceu/compass/nodes/tools/plunger.json @@ -1,7 +1,7 @@ { "button_texture": { "type": "item", - "res": "gtceu:polybenzimidazole_plunger" + "res": "gtceu:silicone_rubber_plunger" }, "items": [ "#c:tools/plungers" diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 015f5153ce..d46682fe5c 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -96,7 +96,9 @@ "block.gtceu.atomic_casing": "buısɐƆ ɔıɯoʇⱯ", "block.gtceu.auto_maintenance_hatch": "ɥɔʇɐH ǝɔuɐuǝʇuıɐW oʇnⱯ", "block.gtceu.bio_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH oıᗺ", + "block.gtceu.black_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ʞɔɐןᗺ", "block.gtceu.black_lamp": "dɯɐꞀ ʞɔɐןᗺ", + "block.gtceu.blue_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ǝnןᗺ", "block.gtceu.blue_lamp": "dɯɐꞀ ǝnןᗺ", "block.gtceu.boss_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ssoᗺ", "block.gtceu.bronze_brick_casing": "buısɐƆ ʞɔıɹᗺ ǝzuoɹᗺ", @@ -107,6 +109,7 @@ "block.gtceu.bronze_large_boiler": "ɹǝןıoᗺ ǝzuoɹᗺ ǝbɹɐꞀ", "block.gtceu.bronze_machine_casing": "buısɐƆ ǝuıɥɔɐW ǝzuoɹᗺ", "block.gtceu.bronze_pipe_casing": "buısɐƆ ǝdıԀ ǝzuoɹᗺ", + "block.gtceu.brown_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ uʍoɹᗺ", "block.gtceu.brown_lamp": "dɯɐꞀ uʍoɹᗺ", "block.gtceu.casing_bronze_bricks": "buısɐƆ ǝuıɥɔɐW ǝzuoɹᗺ", "block.gtceu.casing_coke_bricks": "sʞɔıɹᗺ uǝʌO ǝʞoƆ", @@ -141,6 +144,7 @@ "block.gtceu.creative_tank": "ʞuɐ⟘ ǝʌıʇɐǝɹƆ", "block.gtceu.crushing_wheels": "sןǝǝɥM buıɥsnɹƆ", "block.gtceu.cupronickel_coil_block": "ʞɔoןᗺ ןıoƆ ןǝʞɔıuoɹdnƆ", + "block.gtceu.cyan_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ uɐʎƆ", "block.gtceu.cyan_lamp": "dɯɐꞀ uɐʎƆ", "block.gtceu.dark_concrete": "ǝʇǝɹɔuoƆ ʞɹɐᗡ", "block.gtceu.dark_concrete_bricks": "sʞɔıɹᗺ ǝʇǝɹɔuoƆ ʞɹɐᗡ", @@ -266,7 +270,9 @@ "block.gtceu.gas_large_turbine": "ǝuıqɹn⟘ sɐ⅁ ǝbɹɐꞀ", "block.gtceu.generic_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɔıɹǝuǝ⅁", "block.gtceu.gold_drum": "ɯnɹᗡ pןo⅁", + "block.gtceu.gray_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ʎɐɹ⅁", "block.gtceu.gray_lamp": "dɯɐꞀ ʎɐɹ⅁", + "block.gtceu.green_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ uǝǝɹ⅁", "block.gtceu.green_lamp": "dɯɐꞀ uǝǝɹ⅁", "block.gtceu.gregification_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH uoıʇɐɔıɟıbǝɹ⅁", "block.gtceu.heat_vent": "ʇuǝΛ ʇɐǝH", @@ -464,6 +470,9 @@ "block.gtceu.iv_world_accelerator": "ɹ§ ɹoʇɐɹǝןǝɔɔⱯ pןɹoM ǝʇıןƎ6§", "block.gtceu.kanthal_coil_block": "ʞɔoןᗺ ןıoƆ ןɐɥʇuɐʞ", "block.gtceu.laminated_glass": "ssɐן⅁ pǝʇɐuıɯɐꞀ", + "block.gtceu.lamp.tooltip.inverted": "pǝʇɹǝʌuI", + "block.gtceu.lamp.tooltip.no_bloom": "ɯooןᗺ oN", + "block.gtceu.lamp.tooltip.no_light": "ʇɥbıꞀ oN", "block.gtceu.large_arc_smelter": "ɹǝʇןǝɯS ɔɹⱯ ǝbɹɐꞀ", "block.gtceu.large_assembler": "ʎɹoʇɔɐℲ buıןqɯǝssⱯ ǝbɹɐꞀ", "block.gtceu.large_autoclave": "ɹǝqɯɐɥƆ uoıʇɐzıןןɐʇsʎɹƆ ǝbɹɐꞀ", @@ -491,6 +500,7 @@ "block.gtceu.large_wiremill": "ʎɹoʇɔɐℲ ǝɹıM ǝbɹɐꞀ", "block.gtceu.laser_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɹǝsɐꞀ", "block.gtceu.laser_safe_engraving_casing": "buısɐƆ buıʌɐɹbuƎ ǝɟɐS-ɹǝsɐꞀ", + "block.gtceu.light_blue_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ǝnןᗺ ʇɥbıꞀ", "block.gtceu.light_blue_lamp": "dɯɐꞀ ǝnןᗺ ʇɥbıꞀ", "block.gtceu.light_concrete": "ǝʇǝɹɔuoƆ ʇɥbıꞀ", "block.gtceu.light_concrete_bricks": "sʞɔıɹᗺ ǝʇǝɹɔuoƆ ʇɥbıꞀ", @@ -499,7 +509,9 @@ "block.gtceu.light_concrete_tile": "ǝןı⟘ ǝʇǝɹɔuoƆ ʇɥbıꞀ", "block.gtceu.light_concrete_windmill_a": "Ɐ ןןıɯpuıM ǝʇǝɹɔuoƆ ʇɥbıꞀ", "block.gtceu.light_concrete_windmill_b": "ᗺ ןןıɯpuıM ǝʇǝɹɔuoƆ ʇɥbıꞀ", + "block.gtceu.light_gray_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ʎɐɹ⅁ ʇɥbıꞀ", "block.gtceu.light_gray_lamp": "dɯɐꞀ ʎɐɹ⅁ ʇɥbıꞀ", + "block.gtceu.lime_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ǝɯıꞀ", "block.gtceu.lime_lamp": "dɯɐꞀ ǝɯıꞀ", "block.gtceu.long_distance_fluid_pipeline": "ǝuıןǝdıԀ pınןℲ ǝɔuɐʇsıᗡ buoꞀ", "block.gtceu.long_distance_fluid_pipeline_endpoint": "ʇuıodpuƎ ǝuıןǝdıԀ pınןℲ ǝɔuɐʇsıᗡ buoꞀ", @@ -682,6 +694,7 @@ "block.gtceu.lv_transformer_4a": "ɹǝɯɹoɟsuɐɹ⟘ )xㄣ( dɯⱯ-ıH ǝbɐʇןoΛ ʍoꞀ", "block.gtceu.lv_wiremill": "ɹ§ ןןıɯǝɹıM ɔısɐᗺ", "block.gtceu.lv_world_accelerator": "ɹ§ ɹoʇɐɹǝןǝɔɔⱯ pןɹoM ɔısɐᗺ", + "block.gtceu.magenta_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ɐʇuǝbɐW", "block.gtceu.magenta_lamp": "dɯɐꞀ ɐʇuǝbɐW", "block.gtceu.magic_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɔıbɐW", "block.gtceu.magnetic_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɔıʇǝubɐW", @@ -893,9 +906,12 @@ "block.gtceu.opv_substation_output_hatch_64a": "ɥɔʇɐH oɯɐuʎᗡ uoıʇɐʇsqnS Ɐㄣ9 ΛdOן§6§", "block.gtceu.opv_thermal_centrifuge": "ɹ§ ǝbnɟıɹʇuǝƆ ןɐɯɹǝɥ⟘ ʎɹɐpuǝbǝꞀן§6§", "block.gtceu.opv_wiremill": "ɹ§ ןןıɯǝɹıM ʎɹɐpuǝbǝꞀן§6§", + "block.gtceu.orange_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ǝbuɐɹO", "block.gtceu.orange_lamp": "dɯɐꞀ ǝbuɐɹO", + "block.gtceu.overworld_marker": "pןɹoʍɹǝʌO", "block.gtceu.palladium_substation": "uoıʇɐʇsqnS ɯnıpɐןןɐԀ", "block.gtceu.petrified_foam": "ɯɐoℲ pǝıɟıɹʇǝԀ", + "block.gtceu.pink_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ʞuıԀ", "block.gtceu.pink_lamp": "dɯɐꞀ ʞuıԀ", "block.gtceu.plascrete": "ǝʇǝɹɔsɐןԀ", "block.gtceu.plasma_large_turbine": "ǝuıqɹn⟘ ɐɯsɐןԀ ǝbɹɐꞀ", @@ -911,10 +927,12 @@ "block.gtceu.ptfe_pipe_casing": "buısɐƆ ǝdıԀ ƎℲ⟘Ԁ", "block.gtceu.pump_deck": "ʞɔǝᗡ dɯnԀ", "block.gtceu.pump_hatch": "ɥɔʇɐH dɯnԀ", + "block.gtceu.purple_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ǝןdɹnԀ", "block.gtceu.purple_lamp": "dɯɐꞀ ǝן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.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ǝᴚ", "block.gtceu.red_granite_bricks": "sʞɔıɹᗺ ǝʇıuɐɹ⅁ pǝᴚ", "block.gtceu.red_granite_cobblestone": "ǝuoʇsǝןqqoƆ ǝʇıuɐɹ⅁ pǝᴚ", @@ -1000,6 +1018,8 @@ "block.gtceu.sturdy_machine_casing": "buısɐƆ ǝuıɥɔɐW Ǝ-SSH ʎpɹnʇS", "block.gtceu.superconducting_coil": "ʞɔoןᗺ ןıoƆ buıʇɔnpuoɔɹǝdnS", "block.gtceu.tempered_glass": "ssɐן⅁ pǝɹǝdɯǝ⟘", + "block.gtceu.the_end_marker": "puƎ ǝɥ⟘", + "block.gtceu.the_nether_marker": "ɹǝɥʇǝN ǝɥ⟘", "block.gtceu.titanium_crate": "ǝʇɐɹƆ ɯnıuɐʇı⟘", "block.gtceu.titanium_drum": "ɯnɹᗡ ɯnıuɐʇı⟘", "block.gtceu.titanium_firebox_casing": "buısɐƆ xoqǝɹıℲ ɯnıuɐʇı⟘", @@ -1439,6 +1459,7 @@ "block.gtceu.vibration_safe_casing": "buısɐƆ ǝɟɐS-uoıʇɐɹqıΛ", "block.gtceu.void_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH pıoΛ", "block.gtceu.watertight_casing": "buısɐƆ ʇɥbıʇɹǝʇɐM", + "block.gtceu.white_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ǝʇıɥM", "block.gtceu.white_lamp": "dɯɐꞀ ǝʇıɥM", "block.gtceu.wire_coil.tooltip_cracking": ":ʇıu∩ buıʞɔɐɹƆ8§", "block.gtceu.wire_coil.tooltip_energy_cracking": "%s%%ɟ§ :ǝbɐs∩ ʎbɹǝuƎɐ§ ", @@ -1454,6 +1475,7 @@ "block.gtceu.wood_wall": "ןןɐM pooM", "block.gtceu.wooden_multiblock_tank": "ʞuɐ⟘ ʞɔoןqıʇןnW uǝpooM", "block.gtceu.wooden_tank_valve": "ǝʌןɐΛ ʞuɐ⟘ uǝpooM", + "block.gtceu.yellow_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ʍoןןǝʎ", "block.gtceu.yellow_lamp": "dɯɐꞀ ʍoןןǝʎ", "block.gtceu.yellow_stripes_block.a": "ʞɔoןᗺ sǝdıɹʇS ʍoןןǝʎ", "block.gtceu.yellow_stripes_block.b": "ʞɔoןᗺ sǝdıɹʇS ʍoןןǝʎ", @@ -1781,12 +1803,14 @@ "compass.node.gtceu.materials/block": "ʞɔoןᗺ", "compass.node.gtceu.materials/bolt": "ʇןoᗺ", "compass.node.gtceu.materials/chainsaw_head": "pɐǝH ʍɐsuıɐɥƆ", + "compass.node.gtceu.materials/chipped_gem": "ɯǝ⅁ pǝddıɥƆ", "compass.node.gtceu.materials/crushed_ore": "ǝɹO pǝɥsnɹƆ", "compass.node.gtceu.materials/dense_plate": "ǝʇɐןԀ ǝsuǝᗡ", "compass.node.gtceu.materials/double_plate": "ǝʇɐןԀ ǝןqnoᗡ", "compass.node.gtceu.materials/dust": "ʇsnᗡ", "compass.node.gtceu.materials/exquisite_gem": "ɯǝ⅁ ǝʇısınbxƎ", "compass.node.gtceu.materials/fine_wire": "ǝɹıM ǝuıℲ", + "compass.node.gtceu.materials/flawed_gem": "ɯǝ⅁ pǝʍɐןℲ", "compass.node.gtceu.materials/flawless_gem": "ɯǝ⅁ ssǝןʍɐןℲ", "compass.node.gtceu.materials/foil": "ןıoℲ", "compass.node.gtceu.materials/frame": "ǝɯɐɹℲ", @@ -2046,6 +2070,7 @@ "config.gtceu.option.enableResearch": "ɥɔɹɐǝsǝᴚǝןqɐuǝ", "config.gtceu.option.enableTieredCasings": "sbuısɐƆpǝɹǝı⟘ǝןqɐuǝ", "config.gtceu.option.enableWorldAccelerators": "sɹoʇɐɹǝןǝɔɔⱯpןɹoMǝןqɐuǝ", + "config.gtceu.option.enchantedTools": "sןoo⟘pǝʇuɐɥɔuǝ", "config.gtceu.option.energy": "ʎbɹǝuǝ", "config.gtceu.option.energyConsumption": "uoıʇdɯnsuoƆʎbɹǝuǝ", "config.gtceu.option.energyUsageMultiplier": "ɹǝıןdıʇןnWǝbɐs∩ʎbɹǝuǝ", @@ -2094,6 +2119,8 @@ "config.gtceu.option.nativeEUToFE": "ƎℲo⟘∩Ǝǝʌıʇɐu", "config.gtceu.option.nerfPaperCrafting": "buıʇɟɐɹƆɹǝdɐԀɟɹǝu", "config.gtceu.option.nerfWoodCrafting": "buıʇɟɐɹƆpooMɟɹǝu", + "config.gtceu.option.orderedAssemblyLineFluids": "spınןℲǝuıꞀʎןqɯǝssⱯpǝɹǝpɹo", + "config.gtceu.option.orderedAssemblyLineItems": "sɯǝʇIǝuıꞀʎןqɯǝssⱯpǝɹǝpɹo", "config.gtceu.option.oreGenerationChunkCacheSize": "ǝzıSǝɥɔɐƆʞunɥƆuoıʇɐɹǝuǝ⅁ǝɹo", "config.gtceu.option.oreIndicatorChunkCacheSize": "ǝzıSǝɥɔɐƆʞunɥƆɹoʇɐɔıpuIǝɹo", "config.gtceu.option.oreVeinGridSize": "ǝzıSpıɹ⅁uıǝΛǝɹo", @@ -2113,6 +2140,7 @@ "config.gtceu.option.rngDamageElectricTools": "sןoo⟘ɔıɹʇɔǝןƎǝbɐɯɐᗡbuɹ", "config.gtceu.option.rubberTreeSpawnChance": "ǝɔuɐɥƆuʍɐdSǝǝɹ⟘ɹǝqqnɹ", "config.gtceu.option.sandOresFall": "ןןɐℲsǝɹOpuɐs", + "config.gtceu.option.showDimensionTier": "ɹǝı⟘uoısuǝɯıᗡʍoɥs", "config.gtceu.option.sprayCanChainLength": "ɥʇbuǝꞀuıɐɥƆuɐƆʎɐɹds", "config.gtceu.option.steelSteamMultiblocks": "sʞɔoןqıʇןnWɯɐǝʇSןǝǝʇs", "config.gtceu.option.toolCraftingSounds": "spunoSbuıʇɟɐɹƆןooʇ", @@ -2131,9 +2159,19 @@ "config.gtceu.option.worldAcceleratorBlacklist": "ʇsıןʞɔɐןᗺɹoʇɐɹǝןǝɔɔⱯpןɹoʍ", "config.gtceu.option.worldgen": "uǝbpןɹoʍ", "config.gtceu.option.zombieSpawnWithSabers": "sɹǝqɐSɥʇıMuʍɐdSǝıqɯoz", + "config.jade.plugin_gtceu.auto_output_info": "oɟuI ʇndʇnO oʇnⱯ ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.cable_info": "oɟuI ǝןqɐƆ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.controllable_provider": "ǝןqɐןןoɹʇuoƆ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.electric_container_provider": "ɹǝuıɐʇuoƆ ɔıɹʇɔǝןƎ ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.exhaust_vent_info": "oɟuI ʇuǝΛ ʇsnɐɥxƎ ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.hazard_cleaner_provider": "ɹǝuɐǝןƆ pɹɐzɐH ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.machine_mode": "ǝpoW ǝuıɥɔɐW ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.maintenance_info": "oɟuI ǝɔuɐuǝʇuıɐW ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.multiblock_structure": "ǝɹnʇɔnɹʇS ʞɔoןᗺıʇןnW ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.parallel_info": "oɟuI ןǝןןɐɹɐԀ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.recipe_logic_provider": "ɔıboꞀ ǝdıɔǝᴚ ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.recipe_output_info": "oɟuI ʇndʇnO ǝdıɔǝᴚ ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.stained_color": "oɟuI ʞɔoןᗺ pǝuıɐʇS ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.workable_provider": "ǝןqɐʞɹoM ]nƎƆ⟘⅁[", "cover.advanced_energy_detector.invert.disabled.0": "ןɐɯɹoN :ʇndʇnO", "cover.advanced_energy_detector.invert.disabled.1": "", @@ -3607,16 +3645,25 @@ "gtceu.tooltip.hold_ctrl": "oɟuı ǝɹoɯ ɹoɟ Ꞁᴚ⟘Ɔ pןoHㄥ§", "gtceu.tooltip.hold_shift": "oɟuı ǝɹoɯ ɹoɟ ⟘ℲIHS pןoHㄥ§", "gtceu.tooltip.tool_fluid_hold_shift": "oɟuI ןoo⟘ puɐ ʇuǝɯuıɐʇuoƆ pınןℲ ʍoɥs oʇ ⟘ℲIHS pןoHㄥ§", + "gtceu.top.allow_output_input": "ʇnduI ʍoןןⱯ", + "gtceu.top.auto_output": "ʇndʇnO oʇnⱯ", + "gtceu.top.cable_amperage": " :ǝbɐɹǝdɯⱯ", + "gtceu.top.cable_voltage": " :ǝbɐʇןoΛ", "gtceu.top.convert_eu": "ɹ§ƎℲɔ§ >- ɹ§∩Ǝǝ§ buıʇɹǝʌuoƆ", "gtceu.top.convert_fe": "ɹ§∩Ǝǝ§ >- ɹ§ƎℲɔ§ buıʇɹǝʌuoƆ", "gtceu.top.energy_consumption": "buıs∩", "gtceu.top.energy_production": "buıɔnpoɹԀ", "gtceu.top.energy_stored": "∩Ǝ %d / ", + "gtceu.top.exhaust_vent_blocked": "pǝʞɔoןᗺ", + "gtceu.top.exhaust_vent_direction": "%s :ʇuǝΛ ʇsnɐɥxƎ", "gtceu.top.filter.label": ":ɹǝʇןıℲ", + "gtceu.top.fluid_auto_output": "%s :ʇndʇnO pınןℲ", "gtceu.top.fuel_min_consume": "spǝǝN", "gtceu.top.fuel_none": "ןǝnɟ oN", "gtceu.top.invalid_structure": "ǝʇǝןdɯoɔuI ǝɹnʇɔnɹʇS", + "gtceu.top.item_auto_output": "%s :ʇndʇnO ɯǝʇI", "gtceu.top.link_cover.color": ":ɹoןoƆ", + "gtceu.top.machine_mode": " :ǝpoW ǝuıɥɔɐW", "gtceu.top.maintenance.crowbar": "ǝɹǝɥʇ buoןǝq ʇ,usǝop ʇɐɥ⟘", "gtceu.top.maintenance.hard_hammer": "pǝʇuǝp sı buıʇɐןԀ", "gtceu.top.maintenance.screwdriver": "ǝsooן ǝɹɐ sʍǝɹɔS", @@ -3632,6 +3679,8 @@ "gtceu.top.progress_computation": "∩MƆ %s / ", "gtceu.top.progress_sec": "s %s / ", "gtceu.top.progress_tick": "ʇ %s / ", + "gtceu.top.recipe_output": ":sʇndʇnO ǝdıɔǝᴚ", + "gtceu.top.stained": "%s :pǝɹoןoƆ", "gtceu.top.transform_down": "ɹ§uʍoᗡ dǝʇSɐ§", "gtceu.top.transform_input": "ɹ§:ʇnduI9§", "gtceu.top.transform_output": "ɹ§:ʇndʇnO6§", @@ -3743,7 +3792,9 @@ "item.gtceu.basic_integrated_circuit": "ʇınɔɹıƆ pǝʇɐɹbǝʇuI ɔısɐᗺ", "item.gtceu.basic_integrated_circuit.tooltip.0": "ןnɟɹǝʍod ǝɹoɯ puɐ ɹǝןןɐɯSㄥ§", "item.gtceu.basic_integrated_circuit.tooltip.1": "ʇınɔɹıƆ ɹǝı⟘-ΛꞀ9§", - "item.gtceu.battery.charge_detailed": ")ㄥ§buıuıɐɯǝɹ %d%sɔ%§(ㄥ§ %s ɹǝı⟘ - ∩Ǝ %d/%d", + "item.gtceu.battery.charge_detailed.0": ")ㄥ§buıuıɐɯǝɹ %s %s/%sɐ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sɐ§", + "item.gtceu.battery.charge_detailed.1": ")ㄥ§buıuıɐɯǝɹ %s %s/%sǝ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sǝ§", + "item.gtceu.battery.charge_detailed.2": ")ㄥ§buıuıɐɯǝɹ %s %s/%sɔ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sɔ§", "item.gtceu.battery.charge_time": ")%s( ɹǝʍoԀ ɟo %s %s spןoHɐ§", "item.gtceu.battery.charge_unit.hour": "sɹnoɥ", "item.gtceu.battery.charge_unit.minute": "sǝʇnuıɯ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 6f254d1dba..7f13ccfce6 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -96,7 +96,9 @@ "block.gtceu.atomic_casing": "Atomic Casing", "block.gtceu.auto_maintenance_hatch": "Auto Maintenance Hatch", "block.gtceu.bio_hazard_sign_block": "Bio Hazard Sign Block", + "block.gtceu.black_borderless_lamp": "Black Borderless Lamp", "block.gtceu.black_lamp": "Black Lamp", + "block.gtceu.blue_borderless_lamp": "Blue Borderless Lamp", "block.gtceu.blue_lamp": "Blue Lamp", "block.gtceu.boss_hazard_sign_block": "Boss Hazard Sign Block", "block.gtceu.bronze_brick_casing": "Bronze Brick Casing", @@ -107,6 +109,7 @@ "block.gtceu.bronze_large_boiler": "Large Bronze Boiler", "block.gtceu.bronze_machine_casing": "Bronze Machine Casing", "block.gtceu.bronze_pipe_casing": "Bronze Pipe Casing", + "block.gtceu.brown_borderless_lamp": "Brown Borderless Lamp", "block.gtceu.brown_lamp": "Brown Lamp", "block.gtceu.casing_bronze_bricks": "Bronze Machine Casing", "block.gtceu.casing_coke_bricks": "Coke Oven Bricks", @@ -141,6 +144,7 @@ "block.gtceu.creative_tank": "Creative Tank", "block.gtceu.crushing_wheels": "Crushing Wheels", "block.gtceu.cupronickel_coil_block": "Cupronickel Coil Block", + "block.gtceu.cyan_borderless_lamp": "Cyan Borderless Lamp", "block.gtceu.cyan_lamp": "Cyan Lamp", "block.gtceu.dark_concrete": "Dark Concrete", "block.gtceu.dark_concrete_bricks": "Dark Concrete Bricks", @@ -266,7 +270,9 @@ "block.gtceu.gas_large_turbine": "Large Gas Turbine", "block.gtceu.generic_hazard_sign_block": "Generic Hazard Sign Block", "block.gtceu.gold_drum": "Gold Drum", + "block.gtceu.gray_borderless_lamp": "Gray Borderless Lamp", "block.gtceu.gray_lamp": "Gray Lamp", + "block.gtceu.green_borderless_lamp": "Green Borderless Lamp", "block.gtceu.green_lamp": "Green Lamp", "block.gtceu.gregification_hazard_sign_block": "Gregification Hazard Sign Block", "block.gtceu.heat_vent": "Heat Vent", @@ -464,6 +470,9 @@ "block.gtceu.iv_world_accelerator": "§9Elite World Accelerator §r", "block.gtceu.kanthal_coil_block": "Kanthal Coil Block", "block.gtceu.laminated_glass": "Laminated Glass", + "block.gtceu.lamp.tooltip.inverted": "Inverted", + "block.gtceu.lamp.tooltip.no_bloom": "No Bloom", + "block.gtceu.lamp.tooltip.no_light": "No Light", "block.gtceu.large_arc_smelter": "Large Arc Smelter", "block.gtceu.large_assembler": "Large Assembling Factory", "block.gtceu.large_autoclave": "Large Crystallization Chamber", @@ -491,6 +500,7 @@ "block.gtceu.large_wiremill": "Large Wire Factory", "block.gtceu.laser_hazard_sign_block": "Laser Hazard Sign Block", "block.gtceu.laser_safe_engraving_casing": "Laser-Safe Engraving Casing", + "block.gtceu.light_blue_borderless_lamp": "Light Blue Borderless Lamp", "block.gtceu.light_blue_lamp": "Light Blue Lamp", "block.gtceu.light_concrete": "Light Concrete", "block.gtceu.light_concrete_bricks": "Light Concrete Bricks", @@ -499,7 +509,9 @@ "block.gtceu.light_concrete_tile": "Light Concrete Tile", "block.gtceu.light_concrete_windmill_a": "Light Concrete Windmill A", "block.gtceu.light_concrete_windmill_b": "Light Concrete Windmill B", + "block.gtceu.light_gray_borderless_lamp": "Light Gray Borderless Lamp", "block.gtceu.light_gray_lamp": "Light Gray Lamp", + "block.gtceu.lime_borderless_lamp": "Lime Borderless Lamp", "block.gtceu.lime_lamp": "Lime Lamp", "block.gtceu.long_distance_fluid_pipeline": "Long Distance Fluid Pipeline", "block.gtceu.long_distance_fluid_pipeline_endpoint": "Long Distance Fluid Pipeline Endpoint", @@ -682,6 +694,7 @@ "block.gtceu.lv_transformer_4a": "Low Voltage Hi-Amp (4x) Transformer", "block.gtceu.lv_wiremill": "Basic Wiremill §r", "block.gtceu.lv_world_accelerator": "Basic World Accelerator §r", + "block.gtceu.magenta_borderless_lamp": "Magenta Borderless Lamp", "block.gtceu.magenta_lamp": "Magenta Lamp", "block.gtceu.magic_hazard_sign_block": "Magic Hazard Sign Block", "block.gtceu.magnetic_hazard_sign_block": "Magnetic Hazard Sign Block", @@ -893,9 +906,12 @@ "block.gtceu.opv_substation_output_hatch_64a": "§9§lOpV 64A Substation Dynamo Hatch", "block.gtceu.opv_thermal_centrifuge": "§9§lLegendary Thermal Centrifuge §r", "block.gtceu.opv_wiremill": "§9§lLegendary Wiremill §r", + "block.gtceu.orange_borderless_lamp": "Orange Borderless Lamp", "block.gtceu.orange_lamp": "Orange Lamp", + "block.gtceu.overworld_marker": "Overworld", "block.gtceu.palladium_substation": "Palladium Substation", "block.gtceu.petrified_foam": "Petrified Foam", + "block.gtceu.pink_borderless_lamp": "Pink Borderless Lamp", "block.gtceu.pink_lamp": "Pink Lamp", "block.gtceu.plascrete": "Plascrete", "block.gtceu.plasma_large_turbine": "Large Plasma Turbine", @@ -911,10 +927,12 @@ "block.gtceu.ptfe_pipe_casing": "PTFE Pipe Casing", "block.gtceu.pump_deck": "Pump Deck", "block.gtceu.pump_hatch": "Pump Hatch", + "block.gtceu.purple_borderless_lamp": "Purple Borderless Lamp", "block.gtceu.purple_lamp": "Purple Lamp", "block.gtceu.pyrolyse_oven": "Pyrolyse Oven", "block.gtceu.radioactive_hazard_sign_block": "Radioactive Hazard Sign Block", "block.gtceu.reaction_safe_mixing_casing": "Reaction-Safe Mixing Casing", + "block.gtceu.red_borderless_lamp": "Red Borderless Lamp", "block.gtceu.red_granite": "Red Granite", "block.gtceu.red_granite_bricks": "Red Granite Bricks", "block.gtceu.red_granite_cobblestone": "Red Granite Cobblestone", @@ -1000,6 +1018,8 @@ "block.gtceu.sturdy_machine_casing": "Sturdy HSS-E Machine Casing", "block.gtceu.superconducting_coil": "Superconducting Coil Block", "block.gtceu.tempered_glass": "Tempered Glass", + "block.gtceu.the_end_marker": "The End", + "block.gtceu.the_nether_marker": "The Nether", "block.gtceu.titanium_crate": "Titanium Crate", "block.gtceu.titanium_drum": "Titanium Drum", "block.gtceu.titanium_firebox_casing": "Titanium Firebox Casing", @@ -1439,6 +1459,7 @@ "block.gtceu.vibration_safe_casing": "Vibration-Safe Casing", "block.gtceu.void_hazard_sign_block": "Void Hazard Sign Block", "block.gtceu.watertight_casing": "Watertight Casing", + "block.gtceu.white_borderless_lamp": "White Borderless Lamp", "block.gtceu.white_lamp": "White Lamp", "block.gtceu.wire_coil.tooltip_cracking": "§8Cracking Unit:", "block.gtceu.wire_coil.tooltip_energy_cracking": " §aEnergy Usage: §f%s%%", @@ -1454,6 +1475,7 @@ "block.gtceu.wood_wall": "Wood Wall", "block.gtceu.wooden_multiblock_tank": "Wooden Multiblock Tank", "block.gtceu.wooden_tank_valve": "Wooden Tank Valve", + "block.gtceu.yellow_borderless_lamp": "Yellow Borderless Lamp", "block.gtceu.yellow_lamp": "Yellow Lamp", "block.gtceu.yellow_stripes_block.a": "Yellow Stripes Block", "block.gtceu.yellow_stripes_block.b": "Yellow Stripes Block", @@ -1781,12 +1803,14 @@ "compass.node.gtceu.materials/block": "Block", "compass.node.gtceu.materials/bolt": "Bolt", "compass.node.gtceu.materials/chainsaw_head": "Chainsaw Head", + "compass.node.gtceu.materials/chipped_gem": "Chipped Gem", "compass.node.gtceu.materials/crushed_ore": "Crushed Ore", "compass.node.gtceu.materials/dense_plate": "Dense Plate", "compass.node.gtceu.materials/double_plate": "Double Plate", "compass.node.gtceu.materials/dust": "Dust", "compass.node.gtceu.materials/exquisite_gem": "Exquisite Gem", "compass.node.gtceu.materials/fine_wire": "Fine Wire", + "compass.node.gtceu.materials/flawed_gem": "Flawed Gem", "compass.node.gtceu.materials/flawless_gem": "Flawless Gem", "compass.node.gtceu.materials/foil": "Foil", "compass.node.gtceu.materials/frame": "Frame", @@ -2046,6 +2070,7 @@ "config.gtceu.option.enableResearch": "enableResearch", "config.gtceu.option.enableTieredCasings": "enableTieredCasings", "config.gtceu.option.enableWorldAccelerators": "enableWorldAccelerators", + "config.gtceu.option.enchantedTools": "enchantedTools", "config.gtceu.option.energy": "energy", "config.gtceu.option.energyConsumption": "energyConsumption", "config.gtceu.option.energyUsageMultiplier": "energyUsageMultiplier", @@ -2094,6 +2119,8 @@ "config.gtceu.option.nativeEUToFE": "nativeEUToFE", "config.gtceu.option.nerfPaperCrafting": "nerfPaperCrafting", "config.gtceu.option.nerfWoodCrafting": "nerfWoodCrafting", + "config.gtceu.option.orderedAssemblyLineFluids": "orderedAssemblyLineFluids", + "config.gtceu.option.orderedAssemblyLineItems": "orderedAssemblyLineItems", "config.gtceu.option.oreGenerationChunkCacheSize": "oreGenerationChunkCacheSize", "config.gtceu.option.oreIndicatorChunkCacheSize": "oreIndicatorChunkCacheSize", "config.gtceu.option.oreVeinGridSize": "oreVeinGridSize", @@ -2113,6 +2140,7 @@ "config.gtceu.option.rngDamageElectricTools": "rngDamageElectricTools", "config.gtceu.option.rubberTreeSpawnChance": "rubberTreeSpawnChance", "config.gtceu.option.sandOresFall": "sandOresFall", + "config.gtceu.option.showDimensionTier": "showDimensionTier", "config.gtceu.option.sprayCanChainLength": "sprayCanChainLength", "config.gtceu.option.steelSteamMultiblocks": "steelSteamMultiblocks", "config.gtceu.option.toolCraftingSounds": "toolCraftingSounds", @@ -2131,9 +2159,19 @@ "config.gtceu.option.worldAcceleratorBlacklist": "worldAcceleratorBlacklist", "config.gtceu.option.worldgen": "worldgen", "config.gtceu.option.zombieSpawnWithSabers": "zombieSpawnWithSabers", + "config.jade.plugin_gtceu.auto_output_info": "[GTCEu] Auto Output Info", + "config.jade.plugin_gtceu.cable_info": "[GTCEu] Cable Info", "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] Controllable", "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] Electric Container", + "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] Exhaust Vent Info", + "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] Hazard Cleaner", + "config.jade.plugin_gtceu.machine_mode": "[GTCEu] Machine Mode", + "config.jade.plugin_gtceu.maintenance_info": "[GTCEu] Maintenance Info", + "config.jade.plugin_gtceu.multiblock_structure": "[GTCEu] MultiBlock Structure", + "config.jade.plugin_gtceu.parallel_info": "[GTCEu] Parallel Info", "config.jade.plugin_gtceu.recipe_logic_provider": "[GTCEu] Recipe Logic", + "config.jade.plugin_gtceu.recipe_output_info": "[GTCEu] Recipe Output Info", + "config.jade.plugin_gtceu.stained_color": "[GTCEu] Stained Block Info", "config.jade.plugin_gtceu.workable_provider": "[GTCEu] Workable", "cover.advanced_energy_detector.invert.disabled.0": "Output: Normal", "cover.advanced_energy_detector.invert.disabled.1": "", @@ -3607,16 +3645,25 @@ "gtceu.tooltip.hold_ctrl": "§7Hold CTRL for more info", "gtceu.tooltip.hold_shift": "§7Hold SHIFT for more info", "gtceu.tooltip.tool_fluid_hold_shift": "§7Hold SHIFT to show Fluid Containment and Tool Info", + "gtceu.top.allow_output_input": "Allow Input", + "gtceu.top.auto_output": "Auto Output", + "gtceu.top.cable_amperage": "Amperage: ", + "gtceu.top.cable_voltage": "Voltage: ", "gtceu.top.convert_eu": "Converting §eEU§r -> §cFE§r", "gtceu.top.convert_fe": "Converting §cFE§r -> §eEU§r", "gtceu.top.energy_consumption": "Using", "gtceu.top.energy_production": "Producing", "gtceu.top.energy_stored": " / %d EU", + "gtceu.top.exhaust_vent_blocked": "Blocked", + "gtceu.top.exhaust_vent_direction": "Exhaust Vent: %s", "gtceu.top.filter.label": "Filter:", + "gtceu.top.fluid_auto_output": "Fluid Output: %s", "gtceu.top.fuel_min_consume": "Needs", "gtceu.top.fuel_none": "No fuel", "gtceu.top.invalid_structure": "Structure Incomplete", + "gtceu.top.item_auto_output": "Item Output: %s", "gtceu.top.link_cover.color": "Color:", + "gtceu.top.machine_mode": "Machine Mode: ", "gtceu.top.maintenance.crowbar": "That doesn't belong there", "gtceu.top.maintenance.hard_hammer": "Plating is dented", "gtceu.top.maintenance.screwdriver": "Screws are loose", @@ -3632,6 +3679,8 @@ "gtceu.top.progress_computation": " / %s CWU", "gtceu.top.progress_sec": " / %s s", "gtceu.top.progress_tick": " / %s t", + "gtceu.top.recipe_output": "Recipe Outputs:", + "gtceu.top.stained": "Colored: %s", "gtceu.top.transform_down": "§aStep Down§r", "gtceu.top.transform_input": "§6Input:§r", "gtceu.top.transform_output": "§9Output:§r", @@ -3743,7 +3792,9 @@ "item.gtceu.basic_integrated_circuit": "Basic Integrated Circuit", "item.gtceu.basic_integrated_circuit.tooltip.0": "§7Smaller and more powerful", "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV-Tier Circuit", - "item.gtceu.battery.charge_detailed": "%d/%d EU - Tier %s §7(§%c%d%s remaining§7)", + "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s remaining§7)", + "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s remaining§7)", + "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s remaining§7)", "item.gtceu.battery.charge_time": "§aHolds %s %s of Power (%s)", "item.gtceu.battery.charge_unit.hour": "hours", "item.gtceu.battery.charge_unit.minute": "minutes", diff --git a/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp.json new file mode 100644 index 0000000000..0c19aad913 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/black_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp_bloom.json new file mode 100644 index 0000000000..9fa8d3f38d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/black_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp_off.json new file mode 100644 index 0000000000..c5e5fbca67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/black_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/black_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/black_lamp.json b/src/generated/resources/assets/gtceu/models/block/black_lamp.json index b13f545806..ab020a5164 100644 --- a/src/generated/resources/assets/gtceu/models/block/black_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/black_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/black_lamp" + "active": "gtceu:block/lamps/black", + "active_overlay": "gtceu:block/lamps/black" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/black_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/black_lamp_bloom.json new file mode 100644 index 0000000000..4f744418d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/black_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/black", + "active_overlay": "gtceu:block/lamps/black_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/black_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/black_lamp_off.json new file mode 100644 index 0000000000..67e619c38b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/black_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/black_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp.json new file mode 100644 index 0000000000..141172292f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/blue_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp_bloom.json new file mode 100644 index 0000000000..7f670fdbd3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/blue_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp_off.json new file mode 100644 index 0000000000..bbddedf544 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/blue_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/blue_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/blue_lamp.json b/src/generated/resources/assets/gtceu/models/block/blue_lamp.json index 11b54361ab..5745ea7e12 100644 --- a/src/generated/resources/assets/gtceu/models/block/blue_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/blue_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/blue_lamp" + "active": "gtceu:block/lamps/blue", + "active_overlay": "gtceu:block/lamps/blue" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/blue_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/blue_lamp_bloom.json new file mode 100644 index 0000000000..0aaa532325 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/blue_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/blue", + "active_overlay": "gtceu:block/lamps/blue_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/blue_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/blue_lamp_off.json new file mode 100644 index 0000000000..e7af08e18d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/blue_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/blue_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp.json new file mode 100644 index 0000000000..b505d4b694 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/brown_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp_bloom.json new file mode 100644 index 0000000000..aa7dbb55ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/brown_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp_off.json new file mode 100644 index 0000000000..b8f137c325 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/brown_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/brown_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/brown_lamp.json b/src/generated/resources/assets/gtceu/models/block/brown_lamp.json index 4df8935d52..df6eb9f6ad 100644 --- a/src/generated/resources/assets/gtceu/models/block/brown_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/brown_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/brown_lamp" + "active": "gtceu:block/lamps/brown", + "active_overlay": "gtceu:block/lamps/brown" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/brown_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/brown_lamp_bloom.json new file mode 100644 index 0000000000..255f40f829 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/brown_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/brown", + "active_overlay": "gtceu:block/lamps/brown_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/brown_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/brown_lamp_off.json new file mode 100644 index 0000000000..2c55e94769 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/brown_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/brown_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp.json new file mode 100644 index 0000000000..f36df56558 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/cyan_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp_bloom.json new file mode 100644 index 0000000000..bc635568a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/cyan_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp_off.json new file mode 100644 index 0000000000..f96fa394e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/cyan_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/cyan_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/cyan_lamp.json b/src/generated/resources/assets/gtceu/models/block/cyan_lamp.json index a16fa4b114..1bda83da43 100644 --- a/src/generated/resources/assets/gtceu/models/block/cyan_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/cyan_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/cyan_lamp" + "active": "gtceu:block/lamps/cyan", + "active_overlay": "gtceu:block/lamps/cyan" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/cyan_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/cyan_lamp_bloom.json new file mode 100644 index 0000000000..664da2a906 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/cyan_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/cyan", + "active_overlay": "gtceu:block/lamps/cyan_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/cyan_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/cyan_lamp_off.json new file mode 100644 index 0000000000..e21e83f6b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/cyan_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/cyan_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp.json new file mode 100644 index 0000000000..cb1c75e15e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/gray_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp_bloom.json new file mode 100644 index 0000000000..02817b26ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/gray_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp_off.json new file mode 100644 index 0000000000..3d630919dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/gray_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/gray_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/gray_lamp.json b/src/generated/resources/assets/gtceu/models/block/gray_lamp.json index beda3952f8..10a7355aad 100644 --- a/src/generated/resources/assets/gtceu/models/block/gray_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/gray_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/gray_lamp" + "active": "gtceu:block/lamps/gray", + "active_overlay": "gtceu:block/lamps/gray" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/gray_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/gray_lamp_bloom.json new file mode 100644 index 0000000000..395664b859 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/gray_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/gray", + "active_overlay": "gtceu:block/lamps/gray_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/gray_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/gray_lamp_off.json new file mode 100644 index 0000000000..857a1e007a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/gray_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/gray_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp.json new file mode 100644 index 0000000000..f53ba7ebb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/green_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp_bloom.json new file mode 100644 index 0000000000..77b024546b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/green_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp_off.json new file mode 100644 index 0000000000..b1f22b9681 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/green_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/green_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/green_lamp.json b/src/generated/resources/assets/gtceu/models/block/green_lamp.json index 1e775ab175..a79d65ee1a 100644 --- a/src/generated/resources/assets/gtceu/models/block/green_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/green_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/green_lamp" + "active": "gtceu:block/lamps/green", + "active_overlay": "gtceu:block/lamps/green" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/green_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/green_lamp_bloom.json new file mode 100644 index 0000000000..5611eae3d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/green_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/green", + "active_overlay": "gtceu:block/lamps/green_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/green_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/green_lamp_off.json new file mode 100644 index 0000000000..a781dd834e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/green_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/green_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp.json new file mode 100644 index 0000000000..9cc7bf42d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/light_blue_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp_bloom.json new file mode 100644 index 0000000000..67d13121e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/light_blue_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp_off.json new file mode 100644 index 0000000000..8a476527d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_blue_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/light_blue_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_blue_lamp.json b/src/generated/resources/assets/gtceu/models/block/light_blue_lamp.json index bd78d14381..c1a04f4f71 100644 --- a/src/generated/resources/assets/gtceu/models/block/light_blue_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/light_blue_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/light_blue_lamp" + "active": "gtceu:block/lamps/light_blue", + "active_overlay": "gtceu:block/lamps/light_blue" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_blue_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/light_blue_lamp_bloom.json new file mode 100644 index 0000000000..c42aac4396 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_blue_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/light_blue", + "active_overlay": "gtceu:block/lamps/light_blue_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_blue_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/light_blue_lamp_off.json new file mode 100644 index 0000000000..9ca034a540 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_blue_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/light_blue_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp.json new file mode 100644 index 0000000000..2d5c4a7dc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/light_gray_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp_bloom.json new file mode 100644 index 0000000000..f1693f502c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/light_gray_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp_off.json new file mode 100644 index 0000000000..4a82d739b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_gray_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/light_gray_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_gray_lamp.json b/src/generated/resources/assets/gtceu/models/block/light_gray_lamp.json index 666321c85a..187128e5b5 100644 --- a/src/generated/resources/assets/gtceu/models/block/light_gray_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/light_gray_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/light_gray_lamp" + "active": "gtceu:block/lamps/light_gray", + "active_overlay": "gtceu:block/lamps/light_gray" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_gray_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/light_gray_lamp_bloom.json new file mode 100644 index 0000000000..82851dde5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_gray_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/light_gray", + "active_overlay": "gtceu:block/lamps/light_gray_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/light_gray_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/light_gray_lamp_off.json new file mode 100644 index 0000000000..6808ffb2a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/light_gray_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/light_gray_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp.json new file mode 100644 index 0000000000..e08dc19e73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/lime_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp_bloom.json new file mode 100644 index 0000000000..a3114c2c29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/lime_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp_off.json new file mode 100644 index 0000000000..983ce7d803 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/lime_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/lime_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lime_lamp.json b/src/generated/resources/assets/gtceu/models/block/lime_lamp.json index ed4e87fd1b..4be47ff4c5 100644 --- a/src/generated/resources/assets/gtceu/models/block/lime_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/lime_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/lime_lamp" + "active": "gtceu:block/lamps/lime", + "active_overlay": "gtceu:block/lamps/lime" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lime_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/lime_lamp_bloom.json new file mode 100644 index 0000000000..11569f18ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/lime_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/lime", + "active_overlay": "gtceu:block/lamps/lime_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lime_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/lime_lamp_off.json new file mode 100644 index 0000000000..7ca5c8f6e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/lime_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/lime_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp.json new file mode 100644 index 0000000000..d76ba268ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/magenta_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp_bloom.json new file mode 100644 index 0000000000..5a35c2addc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/magenta_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp_off.json new file mode 100644 index 0000000000..e71bbf3ae4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/magenta_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/magenta_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/magenta_lamp.json b/src/generated/resources/assets/gtceu/models/block/magenta_lamp.json index f27631b8b7..5e808a5b3b 100644 --- a/src/generated/resources/assets/gtceu/models/block/magenta_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/magenta_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/magenta_lamp" + "active": "gtceu:block/lamps/magenta", + "active_overlay": "gtceu:block/lamps/magenta" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/magenta_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/magenta_lamp_bloom.json new file mode 100644 index 0000000000..b12ad01860 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/magenta_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/magenta", + "active_overlay": "gtceu:block/lamps/magenta_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/magenta_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/magenta_lamp_off.json new file mode 100644 index 0000000000..e677abbc66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/magenta_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/magenta_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp.json new file mode 100644 index 0000000000..268c735b95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/orange_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp_bloom.json new file mode 100644 index 0000000000..4d8e9ee997 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/orange_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp_off.json new file mode 100644 index 0000000000..f9df9f88ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/orange_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/orange_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/orange_lamp.json b/src/generated/resources/assets/gtceu/models/block/orange_lamp.json index 7f918a2a33..575ac5eba7 100644 --- a/src/generated/resources/assets/gtceu/models/block/orange_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/orange_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/orange_lamp" + "active": "gtceu:block/lamps/orange", + "active_overlay": "gtceu:block/lamps/orange" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/orange_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/orange_lamp_bloom.json new file mode 100644 index 0000000000..bca9ad4c8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/orange_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/orange", + "active_overlay": "gtceu:block/lamps/orange_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/orange_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/orange_lamp_off.json new file mode 100644 index 0000000000..29c97af707 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/orange_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/orange_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/overworld_marker.json b/src/generated/resources/assets/gtceu/models/block/overworld_marker.json new file mode 100644 index 0000000000..b17cafccb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/overworld_marker.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/cube", + "gui_light": "front", + "textures": { + "down": "gtceu:block/dim_markers/overworld/down", + "east": "gtceu:block/dim_markers/overworld/east", + "north": "gtceu:block/dim_markers/overworld/north", + "particle": "#north", + "south": "gtceu:block/dim_markers/overworld/south", + "up": "gtceu:block/dim_markers/overworld/up", + "west": "gtceu:block/dim_markers/overworld/west" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp.json new file mode 100644 index 0000000000..671ce70381 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/pink_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp_bloom.json new file mode 100644 index 0000000000..e90375ef7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/pink_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp_off.json new file mode 100644 index 0000000000..a6d100ca5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/pink_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/pink_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pink_lamp.json b/src/generated/resources/assets/gtceu/models/block/pink_lamp.json index f04f81253b..7c3c8fbcee 100644 --- a/src/generated/resources/assets/gtceu/models/block/pink_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/pink_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/pink_lamp" + "active": "gtceu:block/lamps/pink", + "active_overlay": "gtceu:block/lamps/pink" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pink_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/pink_lamp_bloom.json new file mode 100644 index 0000000000..694392c18a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/pink_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/pink", + "active_overlay": "gtceu:block/lamps/pink_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pink_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/pink_lamp_off.json new file mode 100644 index 0000000000..6716a235ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/pink_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/pink_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp.json new file mode 100644 index 0000000000..a70dc190f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/purple_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp_bloom.json new file mode 100644 index 0000000000..d29ca9d459 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/purple_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp_off.json new file mode 100644 index 0000000000..a2c85e59b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/purple_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/purple_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/purple_lamp.json b/src/generated/resources/assets/gtceu/models/block/purple_lamp.json index e68e70a95a..4a1ac93555 100644 --- a/src/generated/resources/assets/gtceu/models/block/purple_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/purple_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/purple_lamp" + "active": "gtceu:block/lamps/purple", + "active_overlay": "gtceu:block/lamps/purple" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/purple_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/purple_lamp_bloom.json new file mode 100644 index 0000000000..7461d1ab9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/purple_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/purple", + "active_overlay": "gtceu:block/lamps/purple_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/purple_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/purple_lamp_off.json new file mode 100644 index 0000000000..6bda97ffb1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/purple_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/purple_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp.json new file mode 100644 index 0000000000..475c552e60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/red_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp_bloom.json new file mode 100644 index 0000000000..ed52fab86b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/red_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp_off.json new file mode 100644 index 0000000000..622bb2edfb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/red_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/red_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/red_lamp.json b/src/generated/resources/assets/gtceu/models/block/red_lamp.json index 7d5081fac1..d5ec2cf543 100644 --- a/src/generated/resources/assets/gtceu/models/block/red_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/red_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/red_lamp" + "active": "gtceu:block/lamps/red", + "active_overlay": "gtceu:block/lamps/red" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/red_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/red_lamp_bloom.json new file mode 100644 index 0000000000..439816ac98 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/red_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/red", + "active_overlay": "gtceu:block/lamps/red_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/red_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/red_lamp_off.json new file mode 100644 index 0000000000..50ccba6a18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/red_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/red_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/the_end_marker.json b/src/generated/resources/assets/gtceu/models/block/the_end_marker.json new file mode 100644 index 0000000000..fc6b3f6318 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/the_end_marker.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/cube", + "gui_light": "front", + "textures": { + "down": "gtceu:block/dim_markers/the_end/down", + "east": "gtceu:block/dim_markers/the_end/east", + "north": "gtceu:block/dim_markers/the_end/north", + "particle": "#north", + "south": "gtceu:block/dim_markers/the_end/south", + "up": "gtceu:block/dim_markers/the_end/up", + "west": "gtceu:block/dim_markers/the_end/west" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/the_nether_marker.json b/src/generated/resources/assets/gtceu/models/block/the_nether_marker.json new file mode 100644 index 0000000000..5cdf92b8a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/the_nether_marker.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/cube", + "gui_light": "front", + "textures": { + "down": "gtceu:block/dim_markers/the_nether/down", + "east": "gtceu:block/dim_markers/the_nether/east", + "north": "gtceu:block/dim_markers/the_nether/north", + "particle": "#north", + "south": "gtceu:block/dim_markers/the_nether/south", + "up": "gtceu:block/dim_markers/the_nether/up", + "west": "gtceu:block/dim_markers/the_nether/west" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp.json new file mode 100644 index 0000000000..efaabb1b55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/white_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp_bloom.json new file mode 100644 index 0000000000..a77bbb1841 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/white_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp_off.json new file mode 100644 index 0000000000..87da3643f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/white_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/white_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/white_lamp.json b/src/generated/resources/assets/gtceu/models/block/white_lamp.json index 976259ba70..cc2fa12fc0 100644 --- a/src/generated/resources/assets/gtceu/models/block/white_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/white_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/white_lamp" + "active": "gtceu:block/lamps/white", + "active_overlay": "gtceu:block/lamps/white" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/white_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/white_lamp_bloom.json new file mode 100644 index 0000000000..4e8878006b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/white_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/white", + "active_overlay": "gtceu:block/lamps/white_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/white_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/white_lamp_off.json new file mode 100644 index 0000000000..0980e4043b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/white_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/white_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp.json new file mode 100644 index 0000000000..4df3581346 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/yellow_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp_bloom.json new file mode 100644 index 0000000000..37c776a0d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp_bloom.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless", + "textures": { + "active": "gtceu:block/lamps/yellow_borderless_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp_off.json new file mode 100644 index 0000000000..9f5d3a4c28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/yellow_borderless_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_borderless_off", + "textures": { + "inactive": "gtceu:block/lamps/yellow_off_borderless" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/yellow_lamp.json b/src/generated/resources/assets/gtceu/models/block/yellow_lamp.json index 6a46a3494a..28dd1a7124 100644 --- a/src/generated/resources/assets/gtceu/models/block/yellow_lamp.json +++ b/src/generated/resources/assets/gtceu/models/block/yellow_lamp.json @@ -1,6 +1,7 @@ { - "parent": "minecraft:block/cube_all", + "parent": "gtceu:block/lamp", "textures": { - "all": "gtceu:block/yellow_lamp" + "active": "gtceu:block/lamps/yellow", + "active_overlay": "gtceu:block/lamps/yellow" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/yellow_lamp_bloom.json b/src/generated/resources/assets/gtceu/models/block/yellow_lamp_bloom.json new file mode 100644 index 0000000000..027d8c77f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/yellow_lamp_bloom.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/lamp", + "textures": { + "active": "gtceu:block/lamps/yellow", + "active_overlay": "gtceu:block/lamps/yellow_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/yellow_lamp_off.json b/src/generated/resources/assets/gtceu/models/block/yellow_lamp_off.json new file mode 100644 index 0000000000..4cc9252711 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/yellow_lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/lamp_off", + "textures": { + "inactive": "gtceu:block/lamps/yellow_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/black_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/black_borderless_lamp.json new file mode 100644 index 0000000000..cb306261be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/black_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/black_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/blue_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/blue_borderless_lamp.json new file mode 100644 index 0000000000..d7c6939c70 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/blue_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/blue_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/brown_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/brown_borderless_lamp.json new file mode 100644 index 0000000000..06c1a13eef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/brown_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/brown_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/cyan_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/cyan_borderless_lamp.json new file mode 100644 index 0000000000..2ebe5ae190 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/cyan_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/cyan_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/gray_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/gray_borderless_lamp.json new file mode 100644 index 0000000000..077a9c52b0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/gray_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/gray_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/green_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/green_borderless_lamp.json new file mode 100644 index 0000000000..6c708589fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/green_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/green_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/light_blue_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/light_blue_borderless_lamp.json new file mode 100644 index 0000000000..c1c2558ff1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/light_blue_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/light_blue_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/light_gray_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/light_gray_borderless_lamp.json new file mode 100644 index 0000000000..ba98d5dba1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/light_gray_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/light_gray_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lime_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/lime_borderless_lamp.json new file mode 100644 index 0000000000..70e7956ac6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lime_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/lime_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/magenta_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/magenta_borderless_lamp.json new file mode 100644 index 0000000000..a344a46196 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/magenta_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/magenta_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/orange_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/orange_borderless_lamp.json new file mode 100644 index 0000000000..2c20cdfa5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/orange_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/orange_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/overworld_marker.json b/src/generated/resources/assets/gtceu/models/item/overworld_marker.json new file mode 100644 index 0000000000..e67fa731f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/overworld_marker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/overworld_marker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/pink_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/pink_borderless_lamp.json new file mode 100644 index 0000000000..974f41940c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/pink_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/pink_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/purple_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/purple_borderless_lamp.json new file mode 100644 index 0000000000..32808b8026 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/purple_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/purple_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/red_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/red_borderless_lamp.json new file mode 100644 index 0000000000..91cf330777 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/red_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/red_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/the_end_marker.json b/src/generated/resources/assets/gtceu/models/item/the_end_marker.json new file mode 100644 index 0000000000..d504f9d5f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/the_end_marker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/the_end_marker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/the_nether_marker.json b/src/generated/resources/assets/gtceu/models/item/the_nether_marker.json new file mode 100644 index 0000000000..af0d658a3c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/the_nether_marker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/the_nether_marker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/white_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/white_borderless_lamp.json new file mode 100644 index 0000000000..969bc63832 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/white_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/white_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/yellow_borderless_lamp.json b/src/generated/resources/assets/gtceu/models/item/yellow_borderless_lamp.json new file mode 100644 index 0000000000..9db7270eef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/yellow_borderless_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/yellow_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/block/concrete.json b/src/generated/resources/data/c/tags/block/concrete.json deleted file mode 100644 index 75ccbb2e97..0000000000 --- a/src/generated/resources/data/c/tags/block/concrete.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "values": [ - { - "id": "minecraft:white_concrete", - "required": false - }, - { - "id": "minecraft:orange_concrete", - "required": false - }, - { - "id": "minecraft:magenta_concrete", - "required": false - }, - { - "id": "minecraft:light_blue_concrete", - "required": false - }, - { - "id": "minecraft:yellow_concrete", - "required": false - }, - { - "id": "minecraft:lime_concrete", - "required": false - }, - { - "id": "minecraft:pink_concrete", - "required": false - }, - { - "id": "minecraft:gray_concrete", - "required": false - }, - { - "id": "minecraft:light_gray_concrete", - "required": false - }, - { - "id": "minecraft:cyan_concrete", - "required": false - }, - { - "id": "minecraft:purple_concrete", - "required": false - }, - { - "id": "minecraft:blue_concrete", - "required": false - }, - { - "id": "minecraft:brown_concrete", - "required": false - }, - { - "id": "minecraft:green_concrete", - "required": false - }, - { - "id": "minecraft:red_concrete", - "required": false - }, - { - "id": "minecraft:black_concrete", - "required": false - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/block/concrete_powder.json b/src/generated/resources/data/c/tags/block/concrete_powders.json similarity index 100% rename from src/generated/resources/data/c/tags/block/concrete_powder.json rename to src/generated/resources/data/c/tags/block/concrete_powders.json diff --git a/src/generated/resources/data/c/tags/item/concrete.json b/src/generated/resources/data/c/tags/item/concrete.json deleted file mode 100644 index 99c8ab401a..0000000000 --- a/src/generated/resources/data/c/tags/item/concrete.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "values": [ - "minecraft:white_concrete", - "minecraft:orange_concrete", - "minecraft:magenta_concrete", - "minecraft:light_blue_concrete", - "minecraft:yellow_concrete", - "minecraft:lime_concrete", - "minecraft:pink_concrete", - "minecraft:gray_concrete", - "minecraft:light_gray_concrete", - "minecraft:cyan_concrete", - "minecraft:purple_concrete", - "minecraft:blue_concrete", - "minecraft:brown_concrete", - "minecraft:green_concrete", - "minecraft:red_concrete", - "minecraft:black_concrete" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/concrete_powder.json b/src/generated/resources/data/c/tags/item/concrete_powder.json deleted file mode 100644 index 57a09c9b25..0000000000 --- a/src/generated/resources/data/c/tags/item/concrete_powder.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "values": [ - "minecraft:white_concrete_powder", - "minecraft:orange_concrete_powder", - "minecraft:magenta_concrete_powder", - "minecraft:light_blue_concrete_powder", - "minecraft:yellow_concrete_powder", - "minecraft:lime_concrete_powder", - "minecraft:pink_concrete_powder", - "minecraft:gray_concrete_powder", - "minecraft:light_gray_concrete_powder", - "minecraft:cyan_concrete_powder", - "minecraft:purple_concrete_powder", - "minecraft:blue_concrete_powder", - "minecraft:brown_concrete_powder", - "minecraft:green_concrete_powder", - "minecraft:red_concrete_powder", - "minecraft:black_concrete_powder" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/worldgen/biome/is_swamp.json b/src/generated/resources/data/c/tags/worldgen/biome/is_swamp.json deleted file mode 100644 index 0f5eb22e0c..0000000000 --- a/src/generated/resources/data/c/tags/worldgen/biome/is_swamp.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "minecraft:swamp", - "minecraft:mangrove_swamp" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/black_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/black_borderless_lamp.json new file mode 100644 index 0000000000..35accfd3b2 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/black_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:black_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/black_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/blue_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/blue_borderless_lamp.json new file mode 100644 index 0000000000..3b6a89fcd0 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/blue_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:blue_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/blue_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/brown_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/brown_borderless_lamp.json new file mode 100644 index 0000000000..32e27bf5c7 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/brown_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:brown_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/brown_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/cyan_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/cyan_borderless_lamp.json new file mode 100644 index 0000000000..da5cd8ab34 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/cyan_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:cyan_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/cyan_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/gray_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/gray_borderless_lamp.json new file mode 100644 index 0000000000..7bf30ab879 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/gray_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:gray_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/gray_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/green_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/green_borderless_lamp.json new file mode 100644 index 0000000000..e1d3c75e49 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/green_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:green_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/green_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/light_blue_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/light_blue_borderless_lamp.json new file mode 100644 index 0000000000..aa4f094cb0 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/light_blue_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:light_blue_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/light_blue_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/light_gray_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/light_gray_borderless_lamp.json new file mode 100644 index 0000000000..f15a4b6c91 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/light_gray_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:light_gray_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/light_gray_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/lime_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/lime_borderless_lamp.json new file mode 100644 index 0000000000..18eceb855d --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/lime_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:lime_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/lime_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/magenta_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/magenta_borderless_lamp.json new file mode 100644 index 0000000000..98d89ff998 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/magenta_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:magenta_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/magenta_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/orange_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/orange_borderless_lamp.json new file mode 100644 index 0000000000..8fb4cab0db --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/orange_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:orange_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/orange_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/overworld_marker.json b/src/generated/resources/data/gtceu/loot_table/blocks/overworld_marker.json new file mode 100644 index 0000000000..2e745f8d30 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/overworld_marker.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:overworld_marker" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/overworld_marker" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/pink_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/pink_borderless_lamp.json new file mode 100644 index 0000000000..ff721a05f4 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/pink_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:pink_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/pink_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/purple_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/purple_borderless_lamp.json new file mode 100644 index 0000000000..f6abec9cf2 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/purple_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:purple_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/purple_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/red_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/red_borderless_lamp.json new file mode 100644 index 0000000000..4cf2bf05a9 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/red_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:red_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/red_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/the_end_marker.json b/src/generated/resources/data/gtceu/loot_table/blocks/the_end_marker.json new file mode 100644 index 0000000000..788a027300 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/the_end_marker.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:the_end_marker" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/the_end_marker" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/the_nether_marker.json b/src/generated/resources/data/gtceu/loot_table/blocks/the_nether_marker.json new file mode 100644 index 0000000000..900ef029cc --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/the_nether_marker.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:the_nether_marker" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/the_nether_marker" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/white_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/white_borderless_lamp.json new file mode 100644 index 0000000000..a160a6ce26 --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/white_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:white_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/white_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/loot_table/blocks/yellow_borderless_lamp.json b/src/generated/resources/data/gtceu/loot_table/blocks/yellow_borderless_lamp.json new file mode 100644 index 0000000000..774990875a --- /dev/null +++ b/src/generated/resources/data/gtceu/loot_table/blocks/yellow_borderless_lamp.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "gtceu:yellow_borderless_lamp" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "gtceu:blocks/yellow_borderless_lamp" +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/tags/worldgen/biome/is_sandy.json b/src/generated/resources/data/gtceu/tags/worldgen/biome/is_sandy.json deleted file mode 100644 index 2fa0ae9347..0000000000 --- a/src/generated/resources/data/gtceu/tags/worldgen/biome/is_sandy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "values": [ - "#c:is_sandy", - "minecraft:desert", - "minecraft:beach", - "minecraft:badlands", - "minecraft:wooded_badlands" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/worldgen/placed_feature/rubber_checked.json b/src/generated/resources/data/gtceu/worldgen/placed_feature/rubber_checked.json index 5f4f651271..d01b7b1221 100644 --- a/src/generated/resources/data/gtceu/worldgen/placed_feature/rubber_checked.json +++ b/src/generated/resources/data/gtceu/worldgen/placed_feature/rubber_checked.json @@ -13,17 +13,7 @@ { "type": "minecraft:count", "count": { - "type": "minecraft:weighted_list", - "distribution": [ - { - "data": 0, - "weight": 1 - }, - { - "data": 1, - "weight": 1 - } - ] + "type": "gtceu:rubber_tree_chance" } }, { diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index 597c24f8fd..bead2e0fcb 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -86,4 +86,8 @@ public static boolean isAE2Loaded() { public static boolean isAlmostUnifiedLoaded() { return LDLib.isModLoaded(GTValues.MODID_ALMOSTUNIFIED); } + + public static boolean isShimmerLoaded() { + return LDLib.isModLoaded(GTValues.MODID_SHIMMER); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index b4653a1bce..a605e0ef5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -107,7 +107,8 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { MODID_REBORN_ENERGY = "team_reborn_energy", MODID_ALMOSTUNIFIED = "almostunified", MODID_CURIOS = "curios", - MODID_AE2WTLIB = "ae2wtlib"; + MODID_AE2WTLIB = "ae2wtlib", + MODID_SHIMMER = "shimmer"; /** * Spray painting compat modids diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java index 2b86c2f1fe..ec63c5149e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.block; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.item.PipeBlockItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; @@ -166,6 +165,9 @@ public MutableComponent getName() { @Override protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + if (this.tagPrefix != TagPrefix.frameGt) { + return super.useItemOn(stack, state, level, pos, player, hand, hit); + } if (stack.isEmpty()) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; @@ -255,12 +257,14 @@ public boolean replaceWithFramedPipe(Level level, BlockPos pos, BlockState state BlockState pipeState = pipeBlock.defaultBlockState(); BlockPlaceContext context = new BlockPlaceContext(level, player, InteractionHand.MAIN_HAND, stackInHand, hit); + BlockState original = level.getBlockState(context.getClickedPos()); itemBlock.placeBlock(context, pipeState); var pipeTile = pipeBlock.getPipeTile(level, pos); if (pipeTile instanceof PipeBlockEntity pipeBlockEntity) { pipeBlockEntity.setFrameMaterial(material); } else { - GTCEu.LOGGER.error("Pipe was not placed!"); + // reset the state if we didn't place correctly + level.setBlockAndUpdate(context.getClickedPos(), original); return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index dded05fa5d..819b99a077 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -227,6 +227,9 @@ public boolean triggerEvent(BlockState pState, Level pLevel, BlockPos pPos, int @Override public BlockState rotate(BlockState pState, Rotation pRotation) { + if (this.rotationState == RotationState.NONE) { + return pState; + } return pState.setValue(this.rotationState.property, pRotation.rotate(pState.getValue(this.rotationState.property))); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java index 6d98b1bf2c..31b601d22c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.ICoverable; -import com.gregtechceu.gtceu.api.capability.IToolable; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.item.PipeBlockItem; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; @@ -41,15 +40,15 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.*; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.EntityBlock; -import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; @@ -79,19 +78,35 @@ @MethodsReturnNonnullByDefault public abstract class PipeBlock & IPipeType, NodeDataType, WorldPipeNetType extends LevelPipeNet>> extends AppearanceBlock - implements EntityBlock, IBlockRendererProvider { + implements EntityBlock, IBlockRendererProvider, SimpleWaterloggedBlock { public final PipeType pipeType; public PipeBlock(Properties properties, PipeType pipeType) { super(properties); this.pipeType = pipeType; - registerDefaultState(defaultBlockState().setValue(BlockProperties.SERVER_TICK, false)); + registerDefaultState(defaultBlockState().setValue(BlockProperties.SERVER_TICK, false) + .setValue(BlockStateProperties.WATERLOGGED, false)); } @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { - super.createBlockStateDefinition(builder.add(BlockProperties.SERVER_TICK)); + super.createBlockStateDefinition(builder.add(BlockProperties.SERVER_TICK, BlockStateProperties.WATERLOGGED)); + } + + @Override + public FluidState getFluidState(BlockState state) { + return state.getValue(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getSource(false) : + super.getFluidState(state); + } + + @Override + public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, + BlockPos pos, BlockPos neighborPos) { + if (state.getValue(BlockStateProperties.WATERLOGGED)) { + level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); } @Override @@ -330,9 +345,8 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev } Set types = ToolHelper.getToolTypes(stack); - if (entity instanceof IToolable toolable && !types.isEmpty() && ToolHelper.canUse(stack)) { - var result = toolable.onToolClick(types, stack, - new UseOnContext(player, InteractionHand.MAIN_HAND, hit)); + if (!types.isEmpty() && ToolHelper.canUse(stack)) { + var result = pipeBlockEntity.onToolClick(types, stack, new UseOnContext(player, hand, hit)); if (result.getSecond() == ItemInteractionResult.CONSUME && player instanceof ServerPlayer serverPlayer) { ToolHelper.playToolSound(result.getFirst(), serverPlayer); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IFilteredHandler.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IFilteredHandler.java index 51dfe4c3cf..3f6a4c6240 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IFilteredHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IFilteredHandler.java @@ -5,8 +5,14 @@ public interface IFilteredHandler extends Predicate { - Comparator> PRIORITY_COMPARATOR = Comparator.comparingInt(IFilteredHandler::getPriority); - int NO_PRIORITY = Integer.MIN_VALUE; + Comparator> PRIORITY_COMPARATOR = Comparator + .>comparingInt(IFilteredHandler::getPriority).reversed(); + + int HIGHEST = Integer.MAX_VALUE; + int HIGH = Integer.MAX_VALUE / 2; + int NORMAL = 0; + int LOW = Integer.MIN_VALUE / 2; + int LOWEST = Integer.MIN_VALUE; /** * Test an ingredient for filtering & priority. @@ -24,6 +30,6 @@ default boolean test(K ingredient) { * The priority of this recipe handler. */ default int getPriority() { - return NO_PRIORITY; + return NORMAL; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index fd1ba0e70a..c695b08785 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -248,16 +248,7 @@ public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int mu @Override public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { // Find all the items in the combined Item Input inventories and create oversized ItemStacks - Object2IntMap ingredientStacks = Objects - .requireNonNullElseGet(holder.getCapabilitiesProxy().get(IO.IN, ItemRecipeCapability.CAP), - Collections::>emptyList) - .stream() - .filter(handler -> !handler.isProxy()) - .map(container -> container.getContents().stream().filter(ItemStack.class::isInstance) - .map(ItemStack.class::cast).toList()) - .flatMap(container -> GTHashMaps.fromItemStackCollection(container).object2IntEntrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum, - () -> new Object2IntOpenCustomHashMap<>(ItemStackHashStrategy.comparingAllButCount()))); + Object2IntMap ingredientStacks = getIngredientStacks(holder); int minMultiplier = Integer.MAX_VALUE; // map the recipe ingredients to account for duplicated and notConsumable ingredients. @@ -321,6 +312,7 @@ public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, for (Object2IntMap.Entry inventoryEntry : ingredientStacks.object2IntEntrySet()) { if (recipeInputEntry.getKey().test(inventoryEntry.getKey())) { available += inventoryEntry.getIntValue(); + break; } } if (available >= needed) { @@ -335,6 +327,38 @@ public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, return minMultiplier; } + private Object2IntMap getIngredientStacks(IRecipeCapabilityHolder holder) { + Object2IntMap map = new Object2IntOpenCustomHashMap<>( + ItemStackHashStrategy.comparingAllButCount()); + Object2IntMap result = new Object2IntOpenHashMap<>(); + + List> recipeHandlerList = Objects + .requireNonNullElseGet(holder.getCapabilitiesProxy().get(IO.IN, ItemRecipeCapability.CAP), + Collections::>emptyList) + .stream() + .filter(handler -> !handler.isProxy()).toList(); + + for (IRecipeHandler container : recipeHandlerList) { + + var itemMap = container.getContents().stream().filter(ItemStack.class::isInstance) + .map(ItemStack.class::cast) + .flatMap(con -> GTHashMaps.fromItemStackCollection(Collections.singleton(con)).object2IntEntrySet() + .stream()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum, + () -> new Object2IntOpenCustomHashMap<>(ItemStackHashStrategy.comparingAllButCount()))); + + if (container.isDistinct()) { + result.putAll(itemMap); + } else { + for (Object2IntMap.Entry obj : itemMap.object2IntEntrySet()) { + map.computeInt(obj.getKey(), (k, v) -> v == null ? obj.getIntValue() : v + obj.getIntValue()); + } + } + } + result.putAll(map); + return result; + } + @Override public @NotNull List createXEIContainerContents(List contents, GTRecipe recipe, IO io) { var outputStacks = contents.stream().map(content -> content.content) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index f3454c5e9b..abc85271b7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -556,8 +556,8 @@ default int getTotalHarvestLevel(ItemStack stack) { // electric info if (this.isElectric()) { tooltip.add(Component.translatable("metaitem.generic.electric_item.tooltip", - getCharge(stack), - getMaxCharge(stack), + FormattingUtil.formatNumbers(getCharge(stack)), + FormattingUtil.formatNumbers(getMaxCharge(stack)), GTValues.VNF[getElectricTier()])); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/LampBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/LampBlockItem.java new file mode 100644 index 0000000000..02826b579f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/item/LampBlockItem.java @@ -0,0 +1,73 @@ +package com.gregtechceu.gtceu.api.item; + +import com.gregtechceu.gtceu.common.block.LampBlock; +import com.gregtechceu.gtceu.data.tag.GTDataComponents; + +import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; +import com.lowdragmc.lowdraglib.client.renderer.IRenderer; + +import net.minecraft.core.NonNullList; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.state.BlockState; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class LampBlockItem extends BlockItem implements IItemRendererProvider { + + public LampBlockItem(LampBlock block, Properties properties) { + super(block, properties); + } + + @NotNull + @Override + public LampBlock getBlock() { + return (LampBlock) super.getBlock(); + } + + @Nullable + @Override + protected BlockState getPlacementState(BlockPlaceContext context) { + BlockState returnValue = super.getPlacementState(context); + ItemStack handItem = context.getItemInHand(); + if (returnValue != null) { + LampData data = handItem.getOrDefault(GTDataComponents.LAMP_DATA, LampData.EMPTY); + returnValue = returnValue + .setValue(LampBlock.INVERTED, data.inverted()) + .setValue(LampBlock.BLOOM, data.bloom()) + .setValue(LampBlock.LIGHT, data.lit()); + } + return returnValue; + } + + public void fillItemCategory(CreativeModeTab category, NonNullList items) { + for (int i = 0; i < 8; ++i) { + items.add(this.getBlock().getStackFromIndex(i)); + } + } + + @Nullable + @Override + public IRenderer getRenderer(ItemStack stack) { + BlockState state = getBlock().defaultBlockState(); + LampData data = stack.getOrDefault(GTDataComponents.LAMP_DATA, LampData.EMPTY); + state = state.setValue(LampBlock.INVERTED, data.inverted()) + .setValue(LampBlock.BLOOM, data.bloom()) + .setValue(LampBlock.LIGHT, data.lit()); + return getBlock().getRenderer(state); + } + + public record LampData(boolean inverted, boolean bloom, boolean lit) { + + public static final LampData EMPTY = new LampData(false, false, false); + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.BOOL.fieldOf("inverted").forGetter(LampData::inverted), + Codec.BOOL.fieldOf("bloom").forGetter(LampData::bloom), + Codec.BOOL.fieldOf("lit").forGetter(LampData::lit)).apply(instance, LampData::new)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java index 94748c5851..988e4632c8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java @@ -6,9 +6,11 @@ import com.gregtechceu.gtceu.api.capability.forge.GTCapability; import com.gregtechceu.gtceu.api.item.capability.ElectricItem; import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; +import com.gregtechceu.gtceu.utils.FormattingUtil; import com.lowdragmc.lowdraglib.utils.LocalizationUtils; +import net.minecraft.ChatFormatting; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; @@ -127,30 +129,62 @@ public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltip, long maxCharge, int tier) { - Instant start = Instant.now(); - Instant end = Instant.now().plusSeconds(Math.clamp((long) ((maxCharge * 1.0) / GTValues.V[tier] / 20), 0L, - Instant.MAX.getEpochSecond() - start.getEpochSecond())); - Duration duration = Duration.between(start, end); + private static void addCurrentChargeTooltip(List tooltip, long currentCharge, long maxCharge, int tier) { + double percentage = (double) currentCharge / (double) maxCharge; - long chargeTime; + Instant start = Instant.now(); + Instant current = Instant.now().plusSeconds(Math.clamp((long) ((currentCharge * 1.0) / GTValues.V[tier] / 20), + 0L, Instant.MAX.getEpochSecond() - start.getEpochSecond())); + Instant max = Instant.now().plusSeconds((long) ((maxCharge * 1.0) / GTValues.V[tier] / 20)); + Duration durationCurrent = Duration.between(start, current); + Duration durationMax = Duration.between(start, max); + long currentChargeTime; + long maxChargeTime; String unit; - if (duration.getSeconds() <= 180) { - chargeTime = duration.getSeconds(); + if (durationCurrent.getSeconds() <= 180) { + currentChargeTime = durationCurrent.getSeconds(); unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.second"); - } else if (duration.toMinutes() <= 180) { - chargeTime = duration.toMinutes(); + } else if (durationCurrent.toMinutes() <= 180) { + currentChargeTime = durationCurrent.toMinutes(); unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.minute"); } else { - chargeTime = duration.toHours(); + currentChargeTime = durationCurrent.toHours(); unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.hour"); } - tooltip.add(Component.translatable("item.gtceu.battery.charge_time", chargeTime, unit, GTValues.VNF[tier])); + + if (durationMax.getSeconds() <= 180) { + maxChargeTime = durationMax.getSeconds(); + } else if (durationMax.toMinutes() <= 180) { + maxChargeTime = durationMax.toMinutes(); + } else { + maxChargeTime = durationMax.toHours(); + } + + if (percentage > 0.5) { + tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.0", + FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), + GTValues.VNF[tier], + FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) + .withStyle(ChatFormatting.GREEN)); + } else if (percentage > 0.3) { + tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.1", + FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), + GTValues.VNF[tier], + FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) + .withStyle(ChatFormatting.YELLOW)); + } else { + tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.2", + FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), + GTValues.VNF[tier], + FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) + .withStyle(ChatFormatting.RED)); + } } private static boolean isInDischargeMode(ItemStack itemStack) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index e5983bf129..eb7dfbc194 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -176,8 +176,7 @@ default ItemInteractionResult onUse(BlockState state, Level world, BlockPos pos, BlockHitResult hit) { if (!self().isFormed() && player.isShiftKeyDown() && player.getItemInHand(hand).isEmpty()) { if (world.isClientSide()) { - MultiblockInWorldPreviewRenderer.showPreview(pos, self().getFrontFacing(), self().getUpwardsFacing(), - self().getDefinition().getMatchingShapes().get(0), + MultiblockInWorldPreviewRenderer.showPreview(pos, self(), ConfigHolder.INSTANCE.client.inWorldPreviewDuration * 20); } return ItemInteractionResult.SUCCESS; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 048ae9abc8..d55edbdf69 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -154,6 +154,7 @@ public void asyncCheckPattern(long periodID) { serverLevel.getServer().execute(() -> { patternLock.lock(); if (checkPatternWithLock()) { // formed + setFlipped(getMultiblockState().isNeededFlip()); onStructureFormed(); var mwsd = MultiblockWorldSavedData.getOrCreate(serverLevel); mwsd.addMapping(getMultiblockState()); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 6f508e6d7e..3a61348870 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -165,6 +165,7 @@ public long getOverclockVoltage() { if (amperage == 1) { // amperage is 1 when the energy is not exactly on a tier // the voltage for recipe search is always on tier, so take the closest lower tier + if (voltage > Integer.MAX_VALUE) return GTUtil.getVoltageFromFakeTier(GTUtil.getFakeVoltageTier(voltage)); return GTValues.V[GTUtil.getFloorTierByVoltage(voltage)]; } else { // amperage != 1 means the voltage is exactly on a tier diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 0ba49081db..5939a4d773 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -170,7 +170,7 @@ public boolean test(SizedFluidIngredient ingredient) { @Override public int getPriority() { - return !isLocked() || lockedFluid.getFluid().isEmpty() ? super.getPriority() : Integer.MAX_VALUE - getTanks(); + return !isLocked() || lockedFluid.getFluid().isEmpty() ? super.getPriority() : HIGH - getTanks(); } public boolean isLocked() { @@ -410,4 +410,14 @@ public boolean supportsFill(int i) { public boolean supportsDrain(int i) { return canCapOutput(); } + + @Override + public void onMachineLoad() { + super.onMachineLoad(); + if (this.isLocked()) { + setFilter(stack -> stack.isFluidEqual(this.lockedFluid.getFluid())); + } else { + setFilter(stack -> true); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/material/material/properties/ToolProperty.java b/src/main/java/com/gregtechceu/gtceu/api/material/material/properties/ToolProperty.java index 0dda6f3ccc..3b6b9a3fb1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/material/material/properties/ToolProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/material/material/properties/ToolProperty.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.MaterialToolTier; import com.gregtechceu.gtceu.api.material.material.Material; +import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.enchantment.Enchantment; @@ -141,7 +142,9 @@ public void verifyProperty(MaterialProperties properties) { } public void addEnchantmentForTools(ResourceKey enchantment, int level) { - enchantments.put(enchantment, level); + if (ConfigHolder.INSTANCE.recipes.enchantedTools) { + enchantments.put(enchantment, level); + } } public MaterialToolTier getTier(Material material) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/multiblock/BlockPattern.java b/src/main/java/com/gregtechceu/gtceu/api/multiblock/BlockPattern.java index 7f6c2bcd19..0e833fea32 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/multiblock/BlockPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/multiblock/BlockPattern.java @@ -659,7 +659,10 @@ private static Pair getMatchStackWithHandler( IItemHandler stackCap = stack.getCapability(Capabilities.ItemHandler.ITEM); if (stackCap != null) { - return getMatchStackWithHandler(candidates, stackCap); + var rt = getMatchStackWithHandler(candidates, stackCap); + if (rt != null) { + return rt; + } } else if (candidates.stream() .anyMatch(candidate -> ItemStack.isSameItemSameComponents(candidate, stack)) && !stack.isEmpty() && stack.getItem() instanceof BlockItem) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index 607d078b6f..9f6fdb6885 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -49,6 +49,7 @@ public class GTRecipe implements Recipe { @NotNull public CompoundTag data; public int duration; + public int parallels = 1; @Getter public boolean isFuel; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 6f4d28c7b3..41e4f4930d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -51,7 +51,6 @@ public class GTRecipeType implements RecipeType { public static final String LANGUAGE_KEY_PATH = "recipe_type"; - public static final List CUSTOM_SCANNER_LOGICS = new ArrayList<>(); @Getter @Setter(onMethod_ = { @ApiStatus.Internal }) @@ -106,6 +105,8 @@ public class GTRecipeType implements RecipeType { @Getter private int voltageTextOffset = 20; private final Map> researchEntries = new Object2ObjectOpenHashMap<>(); + @Getter + private final List customRecipeLogicRunners = new ArrayList<>(); public GTRecipeType(ResourceLocation registryName, String group, RecipeType... proxyRecipes) { this.registryName = registryName; @@ -177,6 +178,16 @@ public GTRecipeType addDataInfo(Function dataInfo) { return this; } + /** + * + * @param recipeLogic A function which is passed the normal findRecipe() result. Returns null if no valid recipe for + * the custom logic is found. + */ + public GTRecipeType addCustomRecipeLogic(ICustomRecipeLogic recipeLogic) { + this.customRecipeLogicRunners.add(recipeLogic); + return this; + } + @Override public String toString() { return registryName.toString(); @@ -200,12 +211,13 @@ public Iterator searchRecipe(IRecipeCapabilityHolder holder) { any = true; break; } - if (!this.isScanner || any) { + + if (any) { iterator.reset(); return iterator; } - for (ICustomScannerLogic logic : CUSTOM_SCANNER_LOGICS) { + for (ICustomRecipeLogic logic : customRecipeLogicRunners) { GTRecipe recipe = logic.createCustomRecipe(holder); if (recipe != null) return Collections.singleton(recipe).iterator(); } @@ -301,7 +313,7 @@ public RecipeHolder toGTRecipe(RecipeHolder recipe) { public @NotNull List> getRepresentativeRecipes() { List> recipes = new ArrayList<>(); - for (ICustomScannerLogic logic : CUSTOM_SCANNER_LOGICS) { + for (ICustomRecipeLogic logic : customRecipeLogicRunners) { List> logicRecipes = logic.getRepresentativeRecipes(); if (logicRecipes != null && !logicRecipes.isEmpty()) { recipes.addAll(logicRecipes); @@ -318,16 +330,7 @@ public Component getName() { return Component.translatable(getTranslationKey()); } - /** - * - * @param logic A function which is passed the normal findRecipe() result. Returns null if no valid recipe for the - * custom logic is found. - */ - public static void registerCustomScannerLogic(ICustomScannerLogic logic) { - CUSTOM_SCANNER_LOGICS.add(logic); - } - - public interface ICustomScannerLogic { + public interface ICustomRecipeLogic { /** * @return A custom recipe to run given the current Scanner's inputs. Will be called only if a registered diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java index b5a2ce865e..2349574d7d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java @@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.longs.LongIntMutablePair; import it.unimi.dsi.fastutil.longs.LongIntPair; import lombok.Getter; +import org.apache.commons.lang3.tuple.ImmutableTriple; import org.jetbrains.annotations.NotNull; /** @@ -97,6 +98,55 @@ public static LongIntPair standardOverclockingLogic(long recipeEUt, long maxVolt return LongIntMutablePair.of((long) resultVoltage, (int) resultDuration); } + /** + * applies standard logic for overclocking, where each overclock modifies energy and duration + * + * @param recipeEUt the EU/t of the recipe to overclock + * @param maxVoltage the maximum voltage the recipe is allowed to be run at + * @param recipeDuration the duration of the recipe to overclock + * @param durationDivisor the value to divide the duration by for each overclock + * @param voltageMultiplier the value to multiply the voltage by for each overclock + * @param numberOfOCs the maximum amount of overclocks allowed + * @return an int array of {OverclockedEUt, OverclockedDuration, PotentialParallels} + */ + @NotNull + public static ImmutableTriple standardOverclockingLogicWithSubTickParallelCount(long recipeEUt, + long maxVoltage, + int recipeDuration, + int numberOfOCs, + double durationDivisor, + double voltageMultiplier) { + double resultDuration = recipeDuration; + double resultVoltage = recipeEUt; + double resultParallel = 1; + + for (; numberOfOCs > 0; numberOfOCs--) { + // it is important to do voltage first, + // so overclocking voltage does not go above the limit before changing duration + + double potentialVoltage = resultVoltage * voltageMultiplier; + // do not allow voltage to go above maximum + if (potentialVoltage > maxVoltage) break; + + double potentialDuration = resultDuration / durationDivisor; + + if (potentialDuration < 1) { + resultParallel *= durationDivisor; + if (potentialDuration > (double) 1. / durationDivisor) { + potentialDuration *= durationDivisor; + } + } + + // update the duration for the next iteration + resultDuration = Math.max(1, potentialDuration); + + // update the voltage for the next iteration after everything else + // in case duration overclocking would waste energy + resultVoltage = potentialVoltage; + } + return ImmutableTriple.of((long) resultVoltage, (int) resultDuration, (int) resultParallel); + } + @NotNull public static LongIntPair heatingCoilOverclockingLogic(long recipeEUt, long maximumVoltage, int recipeDuration, int maxOverclocks, int currentTemp, int recipeRequiredTemp) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index d5ca6c5cbe..6c2df6216c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -2,12 +2,23 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.recipe.content.Content; +import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.GTUtil; +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.fluids.FluidStack; + import it.unimi.dsi.fastutil.longs.LongIntPair; import org.jetbrains.annotations.NotNull; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + /** * @author KilaBash * @date 2023/2/26 @@ -87,7 +98,8 @@ public static GTRecipe applyOverclock(OverclockingLogic logic, @NotNull GTRecipe public static LongIntPair performOverclocking(OverclockingLogic logic, @NotNull GTRecipe recipe, long EUt, long maxOverclockVoltage) { int recipeTier = GTUtil.getTierByVoltage(EUt); - int maximumTier = logic.getOverclockForTier(maxOverclockVoltage); + int maximumTier = maxOverclockVoltage < Integer.MAX_VALUE ? logic.getOverclockForTier(maxOverclockVoltage) : + GTUtil.getFakeVoltageTier(maxOverclockVoltage); // The maximum number of overclocks is determined by the difference between the tier the recipe is running at, // and the maximum tier that the machine can overclock to. int numberOfOCs = maximumTier - recipeTier; @@ -97,4 +109,113 @@ public static LongIntPair performOverclocking(OverclockingLogic logic, @NotNull // Always overclock even if numberOfOCs is <=0 as without it, some logic for coil bonuses ETC won't apply. return logic.getLogic().runOverclockingLogic(recipe, EUt, maxOverclockVoltage, recipe.duration, numberOfOCs); } + + public static List getInputContents(GTRecipeBuilder builder, RecipeCapability capability) { + return builder.input.getOrDefault(capability, Collections.emptyList()).stream() + .map(content -> capability.of(content.getContent())) + .collect(Collectors.toList()); + } + + public static List getInputContents(GTRecipe recipe, RecipeCapability capability) { + return recipe.getInputContents(capability).stream() + .map(content -> capability.of(content.getContent())) + .collect(Collectors.toList()); + } + + public static List getOutputContents(GTRecipeBuilder builder, RecipeCapability capability) { + return builder.output.getOrDefault(capability, Collections.emptyList()).stream() + .map(content -> capability.of(content.getContent())) + .collect(Collectors.toList()); + } + + public static List getOutputContents(GTRecipe recipe, RecipeCapability capability) { + return recipe.getOutputContents(capability).stream() + .map(content -> capability.of(content.getContent())) + .collect(Collectors.toList()); + } + + /* + * Those who use these methods should note that these methods do not guarantee that the returned values are valid, + * because the relevant data, such as tag information, may not be loaded at the time these methods are called. + * Methods for getting Recipe Builder input items or fluids are not provided, as these data are not yet loaded when + * they are needed. + */ + + /** + * get all input items from GTRecipes + * + * @param recipe GTRecipe + * @return all input items + */ + public static List getInputItems(GTRecipe recipe) { + return recipe.getInputContents(ItemRecipeCapability.CAP).stream() + .map(content -> ItemRecipeCapability.CAP.of(content.getContent())) + .map(ingredient -> ingredient.getItems()[0]) + .collect(Collectors.toList()); + } + + /** + * get all input fluids from GTRecipes + * + * @param recipe GTRecipe + * @return all input fluids + */ + public static List getInputFluids(GTRecipe recipe) { + return recipe.getInputContents(FluidRecipeCapability.CAP).stream() + .map(content -> FluidRecipeCapability.CAP.of(content.getContent())) + .map(ingredient -> ingredient.getFluids()[0]) + .collect(Collectors.toList()); + } + + /** + * get all output items from GTRecipes + * + * @param recipe GTRecipe + * @return all output items + */ + public static List getOutputItems(GTRecipe recipe) { + return recipe.getOutputContents(ItemRecipeCapability.CAP).stream() + .map(content -> ItemRecipeCapability.CAP.of(content.getContent())) + .map(ingredient -> ingredient.getItems()[0]) + .collect(Collectors.toList()); + } + + /** + * get all output items from GTRecipeBuilder + * + * @param builder GTRecipeBuilder + * @return all output items + */ + public static List getOutputItems(GTRecipeBuilder builder) { + return builder.output.getOrDefault(ItemRecipeCapability.CAP, Collections.emptyList()).stream() + .map(content -> ItemRecipeCapability.CAP.of(content.getContent())) + .map(ingredient -> ingredient.getItems()[0]) + .collect(Collectors.toList()); + } + + /** + * get all output fluids from GTRecipes + * + * @param recipe GTRecipe + * @return all output fluids + */ + public static List getOutputFluids(GTRecipe recipe) { + return recipe.getOutputContents(FluidRecipeCapability.CAP).stream() + .map(content -> FluidRecipeCapability.CAP.of(content.getContent())) + .map(ingredient -> ingredient.getFluids()[0]) + .collect(Collectors.toList()); + } + + /** + * get all output fluids from GTRecipeBuilder + * + * @param builder GTRecipeBuilder + * @return all output fluids + */ + public static List getOutputFluids(GTRecipeBuilder builder) { + return builder.output.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).stream() + .map(content -> FluidRecipeCapability.CAP.of(content.getContent())) + .map(ingredient -> ingredient.getFluids()[0]) + .collect(Collectors.toList()); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java index 4bc20d37cf..ca54364215 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java @@ -195,8 +195,11 @@ public static Pair doParallelRecipes(@NotNull GTRecipe curren // and limit by the amount we can successfully merge int limitByOutput = ParallelLogic.limitByOutputMerging(currentRecipe, machine, multiplierByInputs, machine::canVoidRecipeOutputs); + GTRecipe multiRecipe; if (limitByOutput > 0) { - currentRecipe = currentRecipe.copy(ContentModifier.multiplier(limitByOutput), modifyDuration); + multiRecipe = currentRecipe.copy(ContentModifier.multiplier(limitByOutput), modifyDuration); + multiRecipe.parallels = limitByOutput; + return Pair.of(multiRecipe, limitByOutput); } return Pair.of(currentRecipe, limitByOutput); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java index c00ec6fa0a..6d869ac753 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.registry.registrate.CompassNode; import com.gregtechceu.gtceu.api.registry.registrate.CompassSection; import com.gregtechceu.gtceu.api.sound.SoundEntry; +import com.gregtechceu.gtceu.api.worldgen.DimensionMarker; import com.gregtechceu.gtceu.api.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.worldgen.bedrockfluid.BedrockFluidDefinition; import com.gregtechceu.gtceu.api.worldgen.bedrockore.BedrockOreDefinition; @@ -64,6 +65,8 @@ public final class GTRegistries { public static final GTRegistry.RL BEDROCK_ORE_DEFINITIONS = new GTRegistry.RL<>( GTCEu.id("bedrock_ore")); public static final GTRegistry.RL ORE_VEINS = new GTRegistry.RL<>(GTCEu.id("ore_vein")); + public static final GTRegistry.RL DIMENSION_MARKERS = new GTRegistry.RL<>( + GTCEu.id("dimension_marker")); public static final DeferredRegister> TRUNK_PLACER_TYPE = DeferredRegister .create(Registries.TRUNK_PLACER_TYPE, GTCEu.MOD_ID); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 33233f9755..3a5299b4c2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -238,6 +238,10 @@ public MachineBuilder sidedWorkableCasingRenderer(String basePath, R return renderer(() -> new WorkableSidedCasingMachineRenderer(basePath, overlayModel, tint)); } + public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel) { + return renderer(() -> new WorkableSidedCasingMachineRenderer(basePath, overlayModel)); + } + public MachineBuilder appearanceBlock(Supplier block) { appearance = () -> block.get().defaultBlockState(); return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 24793cc84b..aa14ed0364 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -218,16 +218,23 @@ public MultiblockMachineBuilder workableCasingRenderer(ResourceLocation baseCasi return (MultiblockMachineBuilder) super.workableCasingRenderer(baseCasing, overlayModel); } + @Override public MultiblockMachineBuilder workableCasingRenderer(ResourceLocation baseCasing, ResourceLocation overlayModel, boolean tint) { return (MultiblockMachineBuilder) super.workableCasingRenderer(baseCasing, overlayModel, tint); } + @Override public MultiblockMachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel, boolean tint) { return (MultiblockMachineBuilder) super.sidedWorkableCasingRenderer(basePath, overlayModel, tint); } + @Override + public MultiblockMachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel) { + return (MultiblockMachineBuilder) super.sidedWorkableCasingRenderer(basePath, overlayModel); + } + @Override public MultiblockMachineBuilder tooltipBuilder(BiConsumer> tooltipBuilder) { return (MultiblockMachineBuilder) super.tooltipBuilder(tooltipBuilder); diff --git a/src/main/java/com/gregtechceu/gtceu/api/worldgen/DimensionMarker.java b/src/main/java/com/gregtechceu/gtceu/api/worldgen/DimensionMarker.java new file mode 100644 index 0000000000..e77baf2b64 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/worldgen/DimensionMarker.java @@ -0,0 +1,102 @@ +package com.gregtechceu.gtceu.api.worldgen; + +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; +import com.gregtechceu.gtceu.integration.kjs.Validator; +import com.gregtechceu.gtceu.utils.SupplierMemoizer; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; + +import dev.latvian.mods.rhino.util.HideFromJS; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +public class DimensionMarker { + + public static final int MAX_TIER = 99; + + @Getter + public final int tier; // Not only used to represent dimension tier, but also for sorting + + @Nullable + private final String overrideName; + + private final SupplierMemoizer.MemoizedSupplier markerSupplier; + + public DimensionMarker(int tier, ResourceLocation resourceLocation, @Nullable String overrideName) { + this.tier = tier; + this.markerSupplier = SupplierMemoizer.memoize(() -> BuiltInRegistries.ITEM.getOptional(resourceLocation) + .map(this::getStack) + .orElse(ItemStack.EMPTY)); + this.overrideName = overrideName; + } + + public DimensionMarker(int tier, Supplier supplier, @Nullable String overrideName) { + this.tier = tier; + this.markerSupplier = SupplierMemoizer.memoize(() -> getStack(supplier.get().asItem())); + this.overrideName = overrideName; + } + + public ItemStack getMarker() { + return markerSupplier.get(); + } + + public void register(ResourceLocation id) { + if (tier < 0 || tier >= MAX_TIER) { + throw new IllegalArgumentException("Tier must be between 0 and " + (MAX_TIER - 1)); + } + GTRegistries.DIMENSION_MARKERS.register(id, this); + } + + private ItemStack getStack(Item item) { + ItemStack stack = new ItemStack(item); + if (overrideName != null) { + stack.set(DataComponents.CUSTOM_NAME, Component.translatable(overrideName)); + } + return stack; + } + + @Setter + @Accessors(fluent = true, chain = true) + public static class Builder extends BuilderBase { + + private Supplier iconSupplier; + private int tier = 0; + @Nullable + private String overrideName; + + public Builder(ResourceLocation id) { + super(id); + } + + public Builder(ResourceLocation id, Object... args) { + this(id); + } + + @HideFromJS + public DimensionMarker buildAndRegister() { + Validator.validate( + id, + Validator.errorIfNull(iconSupplier, "icon"), + Validator.errorIfOutOfRange(tier, "tier", 0, MAX_TIER - 1)); + DimensionMarker marker = new DimensionMarker(tier, iconSupplier, overrideName); + marker.register(id); + return marker; + } + + @Override + public DimensionMarker register() { + return value = buildAndRegister(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index a15ef04590..6aca850431 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -3,10 +3,10 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; -import com.gregtechceu.gtceu.client.TooltipHelper; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.client.renderer.BlockHighLightRenderer; import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; +import com.gregtechceu.gtceu.client.util.TooltipHelper; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java index 53dad57c29..b9aba026be 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java @@ -156,6 +156,14 @@ public List bakeQuads(@Nullable Direction side, Direction frontFacing Quaternionf rot = new Quaternionf().rotationAxis(degree, 0, 0, frontFacing.getAxisDirection() == Direction.AxisDirection.POSITIVE ? 1 : -1); + + if (frontFacing.getAxisDirection() == Direction.AxisDirection.POSITIVE && + frontFacing.getAxis() != Direction.Axis.Y) { + if (upwardsFacing.getAxis() != Direction.Axis.Z) { + matrix.rotate(Mth.PI, 0, 0, 1); + } + } + matrix.rotate(rot); var rotation = new SimpleModelState(new Transformation(matrix)); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java new file mode 100644 index 0000000000..a072c28a83 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.client.renderer; + +import net.minecraft.client.renderer.RenderStateShard; +import net.minecraft.client.renderer.RenderType; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; + +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.VertexFormat; + +@OnlyIn(Dist.CLIENT) +public class GTRenderTypes extends RenderType { + + private static final RenderType LIGHT_RING = RenderType.create("light_ring", + DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.TRIANGLE_STRIP, 256, false, false, + RenderType.CompositeState.builder() + .setCullState(NO_CULL) + .setShaderState(RenderStateShard.POSITION_COLOR_SHADER) + .createCompositeState(false)); + + private GTRenderTypes(String name, VertexFormat format, VertexFormat.Mode mode, int bufferSize, + boolean affectsCrumbling, boolean sortOnUpload, Runnable setupState, Runnable clearState) { + super(name, format, mode, bufferSize, affectsCrumbling, sortOnUpload, setupState, clearState); + } + + public static RenderType getLightRing() { + return LIGHT_RING; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java index 7d0ec1db44..060a5baa8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.multiblock.MultiblockShapeInfo; import com.lowdragmc.lowdraglib.Platform; @@ -101,14 +102,15 @@ public static void removePreview(BlockPos pos) { /** * Show the multiblock preview in the world by the given pos, side, and shape info. * - * @param pos the pos of the controller - * @param front the front of the controller - * @param shapeInfo the shape info of the multiblock - * @param duration the duration of the preview. in ticks. + * @param pos the pos of the controller + * @param controller the controller + * @param duration the duration of the preview. in ticks. */ - public static void showPreview(BlockPos pos, Direction front, Direction up, MultiblockShapeInfo shapeInfo, + public static void showPreview(BlockPos pos, MultiblockControllerMachine controller, int duration) { - front = front.getStepY() == 0 ? front : front.getStepY() < 0 ? up : up.getOpposite(); + Direction front = controller.getFrontFacing(); + Direction up = controller.getUpwardsFacing(); + MultiblockShapeInfo shapeInfo = controller.getDefinition().getMatchingShapes().get(0); Map blockMap = new HashMap<>(); IMultiController controllerBase = null; @@ -167,6 +169,12 @@ public static void showPreview(BlockPos pos, Direction front, Direction up, Mult case EAST -> offset.rotate(Rotation.CLOCKWISE_90); }; + Rotation r = up == Direction.NORTH ? Rotation.NONE : up == Direction.EAST ? Rotation.CLOCKWISE_90 : + up == Direction.SOUTH ? Rotation.CLOCKWISE_180 : + up == Direction.WEST ? Rotation.COUNTERCLOCKWISE_90 : Rotation.NONE; + + offset = rotateByFrontAxis(offset, front, r); + if (blockState.getBlock() instanceof MetaMachineBlock machineBlock) { var rotationState = machineBlock.getRotationState(); if (rotationState != RotationState.NONE) { @@ -189,9 +197,9 @@ public static void showPreview(BlockPos pos, Direction front, Direction up, Mult if (column[z].getBlockEntity(realPos, Platform.getFrozenRegistry()) instanceof IMachineBlockEntity holder && - holder.getMetaMachine() instanceof IMultiController controller) { + holder.getMetaMachine() instanceof IMultiController cont) { holder.getSelf().setLevel(LEVEL); - controllerBase = controller; + controllerBase = cont; } else { blockMap.put(realPos, BlockInfo.fromBlockState(blockState)); } @@ -207,6 +215,40 @@ public static void showPreview(BlockPos pos, Direction front, Direction up, Mult prepareBuffers(LEVEL, blockMap.keySet(), duration); } + private static BlockPos rotateByFrontAxis(BlockPos pos, Direction front, Rotation rotation) { + if (front.getAxis() == Direction.Axis.X) { + return switch (rotation) { + default -> pos; + case CLOCKWISE_90 -> new BlockPos(pos.getX(), -front.getAxisDirection().getStep() * pos.getZ(), + -front.getAxisDirection().getStep() * -pos.getY()); + case CLOCKWISE_180 -> new BlockPos(pos.getX(), -pos.getY(), -pos.getZ()); + case COUNTERCLOCKWISE_90 -> new BlockPos(pos.getX(), front.getAxisDirection().getStep() * pos.getZ(), + -front.getAxisDirection().getStep() * pos.getY()); + }; + } else if (front.getAxis() == Direction.Axis.Y) { + return switch (rotation) { + default -> new BlockPos(-pos.getX(), -front.getAxisDirection().getStep() * pos.getZ(), + -front.getAxisDirection().getStep() * pos.getY()); + case CLOCKWISE_90 -> new BlockPos(-front.getAxisDirection().getStep() * pos.getY(), + -front.getAxisDirection().getStep() * pos.getZ(), pos.getX()); + case CLOCKWISE_180 -> new BlockPos(pos.getX(), -front.getAxisDirection().getStep() * pos.getZ(), + front.getAxisDirection().getStep() * pos.getY()); + case COUNTERCLOCKWISE_90 -> new BlockPos(front.getAxisDirection().getStep() * pos.getY(), + -front.getAxisDirection().getStep() * pos.getZ(), -pos.getX()); + }; + } else if (front.getAxis() == Direction.Axis.Z) { + return switch (rotation) { + default -> pos; + case CLOCKWISE_90 -> new BlockPos(-front.getAxisDirection().getStep() * pos.getY(), + front.getAxisDirection().getStep() * pos.getX(), pos.getZ()); + case CLOCKWISE_180 -> new BlockPos(-pos.getX(), -pos.getY(), pos.getZ()); + case COUNTERCLOCKWISE_90 -> new BlockPos(-front.getAxisDirection().getStep() * -pos.getY(), + -front.getAxisDirection().getStep() * pos.getX(), pos.getZ()); + }; + } + return pos; + } + public static void onClientTick() { if (LEFT_TICK.get() > 0) { if (LEFT_TICK.decrementAndGet() <= 0) { @@ -273,7 +315,7 @@ public static void renderInWorldPreview(PoseStack poseStack, Camera camera, floa } if (shaderInstance.FOG_START != null) { - shaderInstance.FOG_START.set(RenderSystem.getShaderFogStart()); + shaderInstance.FOG_START.set(Float.MAX_VALUE); } if (shaderInstance.FOG_END != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/LampRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/LampRenderer.java new file mode 100644 index 0000000000..6b37723682 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/LampRenderer.java @@ -0,0 +1,50 @@ +package com.gregtechceu.gtceu.client.renderer.block; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.block.LampBlock; + +import com.lowdragmc.lowdraglib.client.model.custommodel.ICTMPredicate; +import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.neoforge.common.util.TriState; + +public class LampRenderer extends IModelRenderer implements ICTMPredicate { + + public LampRenderer(LampBlock lamp, BlockState state) { + super(GTCEu.id("block/%s%s_lamp%s%s".formatted( + lamp.color, + lamp.bordered ? "" : "_borderless", + state.getValue(LampBlock.LIGHT) ? "" : "_off", + state.getValue(LampBlock.LIGHT) && state.getValue(LampBlock.BLOOM) ? "_bloom" : ""))); + } + + @Override + public boolean isConnected(BlockAndTintGetter level, BlockState state, BlockPos pos, + BlockState sourceState, BlockPos sourcePos, Direction side) { + var stateAppearance = state.getAppearance(level, pos, side, sourceState, sourcePos); + var sourceStateAppearance = sourceState.getAppearance(level, sourcePos, side, state, pos); + return stateAppearance.getBlock() == sourceStateAppearance.getBlock(); + } + + @Override + @OnlyIn(Dist.CLIENT) + public TriState useAO() { + return TriState.TRUE; + } + + @Override + public boolean reBakeCustomQuads() { + return true; + } + + @Override + public float reBakeCustomQuadsOffset() { + return 0.0f; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java index adb39c6395..ff8d08681f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java @@ -98,8 +98,8 @@ public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer renderLightRing(machine, partialTicks, finalStack, source)); + } else { + renderLightRing(machine, partialTicks, stack, buffer); + } + } + } + + @OnlyIn(Dist.CLIENT) + private void renderLightRing(FusionReactorMachine machine, float partialTicks, PoseStack stack, + MultiBufferSource buffer) { + var color = machine.getColor(); + if (color == -1) return; + int ringColor = ColorUtils.blendColor(color, -1, Eases.EaseQuadIn.getInterpolation( + Math.abs((Math.abs(machine.getOffsetTimer() % 50) + partialTicks) - 25) / 25)); + var front = machine.getFrontFacing(); + var upwards = machine.getUpwardsFacing(); + var flipped = machine.isFlipped(); + Direction relativeBack = RelativeDirection.BACK.getRelativeFacing(front, upwards, flipped); + Direction.Axis axis = RelativeDirection.UP.getRelativeFacing(front, upwards, flipped).getAxis(); + float a = ColorUtils.alpha(ringColor); + float r = ColorUtils.red(ringColor); + float g = ColorUtils.green(ringColor); + float b = ColorUtils.blue(ringColor); + RenderBufferHelper.renderRing(stack, buffer.getBuffer(GTRenderTypes.getLightRing()), + relativeBack.getStepX() * 7 + 0.5F, + relativeBack.getStepY() * 7 + 0.5F, + relativeBack.getStepZ() * 7 + 0.5F, + 6, 0.2F, 10, 20, + r, g, b, a, axis); + } + + @Override + @OnlyIn(Dist.CLIENT) + public boolean hasTESR(BlockEntity blockEntity) { + return true; + } + + @Override + @OnlyIn(Dist.CLIENT) + public boolean isGlobalRenderer(BlockEntity blockEntity) { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java index 5925589447..618a0ec90c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java @@ -32,7 +32,7 @@ public class LargeBoilerRenderer extends WorkableCasingMachineRenderer implement public final BoilerFireboxType firebox; public LargeBoilerRenderer(ResourceLocation texture, BoilerFireboxType firebox, ResourceLocation workableModel) { - super(texture, workableModel, false); + super(texture, workableModel); this.firebox = firebox; } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java index f2433cf057..5bf281c9ef 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java @@ -18,6 +18,7 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemDisplayContext; @@ -43,6 +44,10 @@ public QuantumChestRenderer(int tier) { super(tier, GTCEu.id("block/machine/quantum_chest")); } + public QuantumChestRenderer(int tier, ResourceLocation modelLocation) { + super(tier, modelLocation); + } + @Override @OnlyIn(Dist.CLIENT) public boolean hasTESR(BlockEntity blockEntity) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java index 39e83b8533..eeb9111375 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java @@ -22,6 +22,7 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.CustomData; @@ -46,6 +47,10 @@ public QuantumTankRenderer(int tier) { super(tier, GTCEu.id("block/machine/quantum_tank")); } + public QuantumTankRenderer(int tier, ResourceLocation modelLocation) { + super(tier, modelLocation); + } + @Override @OnlyIn(Dist.CLIENT) public boolean hasTESR(BlockEntity blockEntity) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java index da3cac6763..b49bb26f45 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java @@ -30,6 +30,10 @@ public class WorkableSidedCasingMachineRenderer extends MachineRenderer { protected final WorkableOverlayModel overlayModel; + public WorkableSidedCasingMachineRenderer(String basePath, ResourceLocation workableModel) { + this(basePath, workableModel, true); + } + public WorkableSidedCasingMachineRenderer(String basePath, ResourceLocation workableModel, boolean tint) { super(tint ? GTCEu.id("block/cube_bottom_top_tintindex") : ResourceLocation.withDefaultNamespace("block/cube_bottom_top")); diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/BloomUtils.java b/src/main/java/com/gregtechceu/gtceu/client/util/BloomUtils.java new file mode 100644 index 0000000000..599e4f9eb0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/BloomUtils.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.client.util; + +import com.lowdragmc.shimmer.client.postprocessing.PostProcessing; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; + +import java.util.function.Consumer; + +@OnlyIn(Dist.CLIENT) +public class BloomUtils { + + public static void entityBloom(Consumer sourceConsumer) { + // Shimmer will call PostProcessing.BLOOM_UNREAL.renderEntityPost in LevelRenderer#renderLevel + // We probably don't need to call it ourselves + PostProcessing.BLOOM_UNREAL.postEntity(sourceConsumer); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java new file mode 100644 index 0000000000..1fb9787b46 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java @@ -0,0 +1,91 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import org.joml.Matrix4f; + +@OnlyIn(Dist.CLIENT) +public class RenderBufferHelper { + + /** + * + * Draw a ring torus + * + * @param poseStack The stack used to store the transformation matrix. + * @param buffer Vertex consumer, which is used to cache vertex data. + * @param x The coordinates of the center + * @param y The coordinates of the center + * @param z The coordinates of the center + * @param r The large radius of the torus, that is, the distance from the center of the torus to center of + * the "pipe". + * @param tubeRadius The small radius of the "pipe", i.e. the thickness of the "pipe". + * @param sides The number of subdivisions of the "pipe". + * @param segments The number of subdivisions for the ring. + * @param red color + * @param green color + * @param blue color + * @param alpha transparency + * @param axis The axial direction of the "ring pipe" determines which axis the "ring pipe" rotates around. + */ + public static void renderRing(PoseStack poseStack, VertexConsumer buffer, float x, float y, float z, float r, + float tubeRadius, + int sides, int segments, float red, float green, float blue, float alpha, + Direction.Axis axis) { + Matrix4f mat = poseStack.last().pose(); + float sideDelta = (float) (2.0 * Math.PI / sides); // Subdivision angle of the "pipe" + float ringDelta = (float) (2.0 * Math.PI / segments); // Subdivision angle of the ring + float theta = 0; // θ, sin(θ), cos(θ) Main angle + float cosTheta = 1.0F; + float sinTheta = 0.0F; + + float phi, sinPhi, cosPhi; // φ, sin(φ), cos(φ) Side angle + float dist; // The distance from the point to the center of the ring pipe + + // Iterate through each subdivision of the ring + for (int i = 0; i < segments; i++) { + float theta1 = theta + ringDelta; + float cosTheta1 = Mth.cos(theta1); + float sinTheta1 = Mth.sin(theta1); + + // Iterate through each subdivision of the "pipe" + phi = 0; + for (int j = 0; j <= sides; j++) { + phi = phi + sideDelta; + cosPhi = Mth.cos(phi); + sinPhi = Mth.sin(phi); + dist = r + (tubeRadius * cosPhi); + + switch (axis) { + case Y: + buffer.addVertex(mat, x + sinTheta * dist, y + tubeRadius * sinPhi, z + cosTheta * dist) + .setColor(red, green, blue, alpha); + buffer.addVertex(mat, x + sinTheta1 * dist, y + tubeRadius * sinPhi, z + cosTheta1 * dist) + .setColor(red, green, blue, alpha); + break; + case X: + buffer.addVertex(mat, x + tubeRadius * sinPhi, y + sinTheta * dist, z + cosTheta * dist) + .setColor(red, green, blue, alpha); + buffer.addVertex(mat, x + tubeRadius * sinPhi, y + sinTheta1 * dist, z + cosTheta1 * dist) + .setColor(red, green, blue, alpha); + break; + case Z: + buffer.addVertex(mat, x + cosTheta * dist, y + sinTheta * dist, z + tubeRadius * sinPhi) + .setColor(red, green, blue, alpha); + buffer.addVertex(mat, x + cosTheta1 * dist, y + sinTheta1 * dist, z + tubeRadius * sinPhi) + .setColor(red, green, blue, alpha); + break; + } + + } + theta = theta1; + cosTheta = cosTheta1; + sinTheta = sinTheta1; + + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/TooltipHelper.java b/src/main/java/com/gregtechceu/gtceu/client/util/TooltipHelper.java similarity index 96% rename from src/main/java/com/gregtechceu/gtceu/client/TooltipHelper.java rename to src/main/java/com/gregtechceu/gtceu/client/util/TooltipHelper.java index dd8d2b9447..9bc861d585 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/TooltipHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/TooltipHelper.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.client; +package com.gregtechceu.gtceu.client.util; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; @@ -15,7 +15,7 @@ public class TooltipHelper { private static final List CODES = new ArrayList<>(); - /* Array of TextFormatting codes that are used to create a rainbow effect */ + /** Array of TextFormatting codes that are used to create a rainbow effect */ private static final ChatFormatting[] ALL_COLORS = new ChatFormatting[] { RED, GOLD, YELLOW, GREEN, AQUA, DARK_AQUA, DARK_BLUE, BLUE, DARK_PURPLE, LIGHT_PURPLE }; diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 4508aab903..3f024fa793 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -68,7 +68,9 @@ import com.gregtechceu.gtceu.data.tag.GTIngredientTypes; import com.gregtechceu.gtceu.data.tools.GTToolBehaviors; import com.gregtechceu.gtceu.data.tools.GTToolTiers; +import com.gregtechceu.gtceu.data.worldgen.GTDimensionMarkers; import com.gregtechceu.gtceu.data.worldgen.GTFeatures; +import com.gregtechceu.gtceu.data.worldgen.GTIntProviderTypes; import com.gregtechceu.gtceu.forge.AlloyBlastPropertyAddition; import com.gregtechceu.gtceu.integration.kjs.GTCEuStartupEvents; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; @@ -77,6 +79,7 @@ import com.gregtechceu.gtceu.utils.input.KeyBind; import com.lowdragmc.lowdraglib.LDLib; +import com.lowdragmc.lowdraglib.Platform; import com.lowdragmc.lowdraglib.gui.factory.UIFactory; import net.minecraft.core.registries.BuiltInRegistries; @@ -126,6 +129,9 @@ public CommonProxy(IEventBus modBus) { GTCEuAPI.materialManager = MaterialRegistryManager.getInstance(); ConfigHolder.init(); GTCEuAPI.initializeHighTier(); + if (Platform.isDevEnv()) { + ConfigHolder.INSTANCE.recipes.generateLowQualityGems = true; + } GTRegistries.init(modBus); GTFeatures.init(modBus); @@ -133,6 +139,7 @@ public CommonProxy(IEventBus modBus) { GTMobEffects.init(modBus); GTAttachmentTypes.init(modBus); GTParticleTypes.init(modBus); + GTIntProviderTypes.init(modBus); // init common features GTRegistries.GLOBAL_LOOT_MODIFIES.register("tool", () -> ToolLootModifier.CODEC); } @@ -170,6 +177,7 @@ public static void init() { GTDataComponents.DATA_COMPONENTS.register(modBus); GTArmorMaterials.ARMOR_MATERIALS.register(modBus); GTItems.init(); + GTDimensionMarkers.init(); AddonFinder.getAddons().forEach(IGTAddon::initializeAddon); GTIngredientTypes.INGREDIENT_TYPES.register(modBus); @@ -193,7 +201,7 @@ public static void init() { WorldGenLayers.registerAll(); VeinGenerators.registerAddonGenerators(); - IndicatorGenerators.registerAddonGenerators();; + IndicatorGenerators.registerAddonGenerators(); GTFeatures.init(); CustomBlockRotations.init(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java new file mode 100644 index 0000000000..c9d36a5378 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java @@ -0,0 +1,171 @@ +package com.gregtechceu.gtceu.common.block; + +import com.gregtechceu.gtceu.api.item.LampBlockItem; +import com.gregtechceu.gtceu.client.renderer.block.LampRenderer; +import com.gregtechceu.gtceu.data.tag.GTDataComponents; + +import com.lowdragmc.lowdraglib.client.renderer.IBlockRendererProvider; +import com.lowdragmc.lowdraglib.client.renderer.IRenderer; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.storage.loot.LootParams; +import net.minecraft.world.phys.HitResult; + +import org.jetbrains.annotations.Nullable; + +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Map; + +public class LampBlock extends Block implements IBlockRendererProvider { + + public static final BooleanProperty BLOOM = BooleanProperty.create("bloom"); + public static final BooleanProperty LIGHT = BlockStateProperties.LIT; + public static final BooleanProperty INVERTED = BooleanProperty.create("inverted"); + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + + public static final int BLOOM_FLAG = 1; + public static final int LIGHT_FLAG = 2; + public static final int INVERTED_FLAG = 4; + public static final int POWERED_FLAG = 8; + + public final DyeColor color; + public final boolean bordered; + private final Map renderers = new IdentityHashMap<>(); + + public LampBlock(Properties properties, DyeColor color, boolean bordered) { + super(properties); + this.color = color; + this.bordered = bordered; + registerDefaultState(defaultBlockState() + .setValue(BLOOM, true) + .setValue(LIGHT, true) + .setValue(INVERTED, false) + .setValue(POWERED, false)); + for (BlockState state : getStateDefinition().getPossibleStates()) { + renderers.put(state, new LampRenderer(this, state)); + } + } + + public static boolean isLightActive(BlockState state) { + return state.getValue(INVERTED) != state.getValue(POWERED); + } + + public boolean isInverted(BlockState state) { + return state.getValue(INVERTED); + } + + public boolean isLightEnabled(BlockState state) { + return state.getValue(LIGHT); + } + + public boolean isBloomEnabled(BlockState state) { + return state.getValue(BLOOM); + } + + public LampBlockItem.LampData getDataFromState(BlockState state) { + return new LampBlockItem.LampData(state.getValue(INVERTED), state.getValue(BLOOM), state.getValue(LIGHT)); + } + + public ItemStack getStackFromIndex(int i) { + ItemStack stack = new ItemStack(this); + LampBlockItem.LampData data = new LampBlockItem.LampData((i & LampBlock.INVERTED_FLAG) == 0, + (i & LampBlock.BLOOM_FLAG) == 0, + (i & LampBlock.LIGHT_FLAG) == 0); + stack.set(GTDataComponents.LAMP_DATA, data); + return stack; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + super.createBlockStateDefinition(builder.add(INVERTED, BLOOM, LIGHT, POWERED)); + } + + @Override + public int getLightEmission(BlockState state, BlockGetter level, BlockPos pos) { + return state.getValue(LIGHT) && isLightActive(state) ? 15 : 0; + } + + @Override + public void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { + if (!level.isClientSide) { + boolean powered = state.getValue(POWERED); + if (powered != level.hasNeighborSignal(pos)) { + level.setBlock(pos, state.setValue(POWERED, !powered), state.getValue(LIGHT) ? 2 | 8 : 2); + } + } + super.onPlace(state, level, pos, oldState, movedByPiston); + } + + @Override + public void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, BlockPos neighborPos, + boolean movedByPiston) { + if (!level.isClientSide) { + boolean powered = state.getValue(POWERED); + if (powered != level.hasNeighborSignal(pos)) { + level.setBlock(pos, state.setValue(POWERED, !powered), state.getValue(LIGHT) ? 2 | 8 : 2); + } + } + } + + @Override + public void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (state.getValue(POWERED) && !level.hasNeighborSignal(pos)) { + level.setBlock(pos, state.cycle(POWERED), state.getValue(LIGHT) ? 2 | 8 : 2); + } + } + + @Override + public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, + Player player) { + ItemStack stack = super.getCloneItemStack(state, target, level, pos, player); + stack.set(GTDataComponents.LAMP_DATA, getDataFromState(state)); + return stack; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List tooltip, + TooltipFlag flag) { + LampBlockItem.LampData data = stack.getOrDefault(GTDataComponents.LAMP_DATA, LampBlockItem.LampData.EMPTY); + if (data.inverted()) + tooltip.add(Component.translatable("block.gtceu.lamp.tooltip.inverted")); + if (!data.bloom()) + tooltip.add(Component.translatable("block.gtceu.lamp.tooltip.no_bloom")); + if (!data.lit()) + tooltip.add(Component.translatable("block.gtceu.lamp.tooltip.no_light")); + } + + @Override + public List getDrops(BlockState state, LootParams.Builder params) { + List returnValue = super.getDrops(state, params); + for (ItemStack stack : returnValue) { + if (stack.is(this.asItem())) { + stack.set(GTDataComponents.LAMP_DATA, this.getDataFromState(state)); + break; + } + } + return returnValue; + } + + @Nullable + @Override + public IRenderer getRenderer(BlockState state) { + return renderers.get(state); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java b/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java index 54d363a4cf..4163b0a3bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java +++ b/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java @@ -47,6 +47,8 @@ public MedicalConditionTracker(Player player) { @Override public void tick() { + if (player.isCreative()) return; + for (var entry : activeMobEffects.object2IntEntrySet()) { player.addEffect(new MobEffectInstance(entry.getKey(), 100, entry.getIntValue())); } @@ -73,6 +75,8 @@ public void tick() { } public void progressCondition(@NotNull MedicalCondition condition, float strength) { + if (player.isCreative()) return; + medicalConditions.put(condition, medicalConditions.getOrDefault(condition, 0) + strength); updateActiveSymptoms(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/ServerCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/ServerCommands.java index 4a45dc0789..842046ab65 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/ServerCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/ServerCommands.java @@ -151,22 +151,17 @@ public static List> createServerComma } private static int queryMedicalConditions(ServerPlayer target) throws CommandSyntaxException { - IMedicalConditionTracker tracker = GTCapabilityHelper - .getMedicalConditionTracker(target); + IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker(target); if (tracker == null) { throw EntityArgument.NO_PLAYERS_FOUND.create(); } int count = tracker.getMedicalConditions().size(); if (count == 0) { - target.sendSystemMessage( - Component.translatable( - "command.gtceu.medical_condition.get.empty", - target.getName())); + Component.translatable("command.gtceu.medical_condition.get.empty", target.getName())); } else { target.sendSystemMessage( - Component.translatable("command.gtceu.medical_condition.get", - target.getName())); + Component.translatable("command.gtceu.medical_condition.get", target.getName())); } for (var entry : tracker.getMedicalConditions().object2FloatEntrySet()) { String langKey = "command.gtceu.medical_condition.get.element"; @@ -175,10 +170,8 @@ private static int queryMedicalConditions(ServerPlayer target) throws CommandSyn langKey = "command.gtceu.medical_condition.get.element.permanent"; } target.sendSystemMessage( - Component.translatable( - langKey, - Component.translatable("gtceu.medical_condition." + - entry.getKey().name), + Component.translatable(langKey, + Component.translatable("gtceu.medical_condition." + entry.getKey().name), entry.getFloatValue() / 20f)); } return count; @@ -188,15 +181,13 @@ private static int clearMedicalConditions(Collection targets, @Nullable MedicalCondition condition) throws CommandSyntaxException { int count = 0; for (ServerPlayer target : targets) { - IMedicalConditionTracker tracker = GTCapabilityHelper - .getMedicalConditionTracker(target); + IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker(target); if (tracker == null) { continue; } if (condition == null) { count += tracker.getMedicalConditions().keySet().size(); - for (MedicalCondition medicalCondition : tracker.getMedicalConditions() - .keySet()) { + for (MedicalCondition medicalCondition : tracker.getMedicalConditions().keySet()) { tracker.removeMedicalCondition(medicalCondition); } } else { @@ -210,13 +201,11 @@ private static int clearMedicalConditions(Collection targets, return count; } - private static int applyMedicalConditions(Collection targets, - MedicalCondition condition, + private static int applyMedicalConditions(Collection targets, MedicalCondition condition, float strength) throws CommandSyntaxException { int success = 0; for (ServerPlayer player : targets) { - IMedicalConditionTracker tracker = GTCapabilityHelper - .getMedicalConditionTracker(player); + IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker(player); if (tracker == null) { continue; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java index 91a042673d..75602f0b87 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java @@ -39,6 +39,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; +import net.neoforged.neoforge.common.Tags; import appeng.api.util.AEColor; import appeng.blockentity.networking.CableBusBlockEntity; @@ -271,12 +272,12 @@ private static boolean recolorBlockState(Level level, BlockPos pos, Direction si } private boolean tryPaintSpecialBlock(Player player, Level world, BlockPos pos, Block block) { - if (block.defaultBlockState().is(CustomTags.GLASS_BLOCKS_BLOCK)) { + if (block.defaultBlockState().is(Tags.Blocks.GLASS_BLOCKS)) { if (recolorBlockNoState(GLASS_MAP, this.color, world, pos, Blocks.GLASS)) { return true; } } - if (block.defaultBlockState().is(CustomTags.GLASS_PANES_BLOCK)) { + if (block.defaultBlockState().is(Tags.Blocks.GLASS_PANES)) { if (recolorBlockNoState(GLASS_PANE_MAP, this.color, world, pos, Blocks.GLASS_PANE)) { return true; } @@ -296,7 +297,7 @@ private boolean tryPaintSpecialBlock(Player player, Level world, BlockPos pos, B return true; } } - if (block.defaultBlockState().is(CustomTags.CONCRETE_BLOCK)) { + if (block.defaultBlockState().is(Tags.Blocks.CONCRETES)) { if (recolorBlockNoState(CONCRETE_MAP, this.color, world, pos)) { return true; } @@ -403,7 +404,7 @@ private static boolean tryStripBlockColor(Player player, Level world, BlockPos p world.setBlock(pos, Blocks.WHITE_CARPET.defaultBlockState(), 3); return true; } - if (block.defaultBlockState().is(CustomTags.CONCRETE_BLOCK) && block != Blocks.WHITE_CONCRETE) { + if (block.defaultBlockState().is(Tags.Blocks.CONCRETES) && block != Blocks.WHITE_CONCRETE) { world.setBlock(pos, Blocks.WHITE_CONCRETE.defaultBlockState(), 3); return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java new file mode 100644 index 0000000000..aff4cd8024 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -0,0 +1,89 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.electric; + +import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.config.ConfigHolder; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.common.crafting.SizedIngredient; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; + +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Function; + +public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { + + public AssemblyLineMachine(IMachineBlockEntity holder) { + super(holder); + } + + @Override + public boolean beforeWorking(@Nullable GTRecipe recipe) { + if (ConfigHolder.INSTANCE.machines.orderedAssemblyLineItems) { + + var recipeInputs = recipe.inputs.get(ItemRecipeCapability.CAP); + var itemInputInventory = Objects + .requireNonNullElseGet(getCapabilitiesProxy().get(IO.IN, ItemRecipeCapability.CAP), + Collections::>emptyList) + .stream() + .filter(handler -> !handler.isProxy()) + .map(container -> container.getContents().stream().filter(ItemStack.class::isInstance) + .map(ItemStack.class::cast).toList()) + .filter(container -> !container.isEmpty()) + .toList(); + + if (itemInputInventory.size() < recipeInputs.size()) return false; + + for (int i = 0; i < recipeInputs.size(); i++) { + var itemStack = itemInputInventory.get(i).get(0); + SizedIngredient recipeStack = ItemRecipeCapability.CAP.of(recipeInputs.get(i).content); + if (!recipeStack.test(itemStack)) { + return false; + } + } + + if (ConfigHolder.INSTANCE.machines.orderedAssemblyLineFluids) { + recipeInputs = recipe.inputs.get(FluidRecipeCapability.CAP); + var itemFluidInventory = Objects + .requireNonNullElseGet(getCapabilitiesProxy().get(IO.IN, FluidRecipeCapability.CAP), + Collections::>emptyList) + .stream() + .map(container -> container.getContents().stream().filter(FluidStack.class::isInstance) + .map(FluidStack.class::cast).toList()) + .filter(container -> !container.isEmpty()) + .toList(); + + if (itemFluidInventory.size() < recipeInputs.size()) return false; + + for (int i = 0; i < recipeInputs.size(); i++) { + var fluidStack = (FluidStack) itemFluidInventory.get(i).get(0); + SizedFluidIngredient recipeStack = FluidRecipeCapability.CAP.of(recipeInputs.get(i).content); + if (!recipeStack.test(fluidStack) || recipeStack.amount() > fluidStack.getAmount()) { + return false; + } + } + } + } + return super.beforeWorking(recipe); + } + + @Override + public void onStructureFormed() { + getDefinition().setPartSorter(Comparator.comparing(it -> multiblockPartSorter().apply(it.self().getPos()))); + super.onStructureFormed(); + } + + private Function multiblockPartSorter() { + return RelativeDirection.RIGHT.getSorter(getFrontFacing(), getUpwardsFacing(), isFlipped()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java index 2506308f97..ac50bf6038 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.block.IFusionCasingType; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -19,6 +20,8 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.common.block.FusionCasingBlock; +import com.lowdragmc.lowdraglib.side.fluid.FluidHelper; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -56,10 +59,9 @@ public class FusionReactorMachine extends WorkableElectricMultiblockMachine impl protected long heat = 0; @Persisted protected final NotifiableEnergyContainer energyContainer; - // TODO implement it when we do fancy effect again. - // @Getter - // @DescSynced - // private Integer color = -1; + @Getter + @DescSynced + private Integer color = -1; @Nullable protected TickableSubscription preHeatSubs; @@ -196,6 +198,18 @@ public boolean onWorking() { this.updatePreHeatSubscription(); } } + + if (color == -1) { + if (!recipe.getOutputContents(FluidRecipeCapability.CAP).isEmpty()) { + int newColor = 0xFF000000 | + FluidHelper.getColor(FluidRecipeCapability.CAP + .of(recipe.getOutputContents(FluidRecipeCapability.CAP).get(0).getContent()) + .getFluids()[0]); + if (!Objects.equals(color, newColor)) { + color = newColor; + } + } + } return super.onWorking(); } @@ -217,31 +231,16 @@ public void updateHeat() { updatePreHeatSubscription(); } - // @Override - // public void onWorking() { - // super.onWorking(); - // if (color == -1) { - // var lastRecipe = recipeLogic.getLastRecipe(); - // if (lastRecipe != null && !lastRecipe.getOutputContents(FluidRecipeCapability.CAP).isEmpty()) { - // int newColor = 0xFF000000 | - // FluidHelper.getColor(FluidRecipeCapability.CAP.of(lastRecipe.getOutputContents(FluidRecipeCapability.CAP).get(0).getContent())); - // if (!Objects.equals(color, newColor)) { - // color = newColor; - // } - // } - // } - // } - - // @Override - // public void onWaiting() { - // super.onWaiting(); - // color = -1; - // } + @Override + public void onWaiting() { + super.onWaiting(); + color = -1; + } @Override public void afterWorking() { super.afterWorking(); - // color = -1; + color = -1; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java index 9b28eaa13c..847ee1946b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java @@ -137,12 +137,12 @@ protected Iterator searchRecipe() { any = true; break; } - if (!machine.getRecipeType().isScanner() || any) { + if (any) { iterator.reset(); return iterator; } - for (GTRecipeType.ICustomScannerLogic logic : GTRecipeType.CUSTOM_SCANNER_LOGICS) { + for (GTRecipeType.ICustomRecipeLogic logic : machine.getRecipeType().getCustomRecipeLogicRunners()) { GTRecipe recipe = logic.createCustomRecipe(holder); if (recipe != null) return Collections.singleton(recipe).iterator(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 9bd793e0e0..c1ca3aa1f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -2,11 +2,17 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; +import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; +import com.gregtechceu.gtceu.api.machine.feature.IMachineModifyDrops; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.common.item.behavior.IntCircuitBehaviour; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.widget.*; import com.lowdragmc.lowdraglib.side.fluid.FluidHelper; @@ -21,11 +27,16 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.neoforged.neoforge.fluids.FluidStack; +import lombok.Getter; import org.jetbrains.annotations.Nullable; +import java.util.List; + import javax.annotation.ParametersAreNonnullByDefault; /** @@ -35,7 +46,7 @@ */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class FluidHatchPartMachine extends TieredIOPartMachine { +public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachineModifyDrops { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(FluidHatchPartMachine.class, TieredIOPartMachine.MANAGED_FIELD_HOLDER); @@ -51,6 +62,9 @@ public class FluidHatchPartMachine extends TieredIOPartMachine { protected TickableSubscription autoIOSubs; @Nullable protected ISubscription tankSubs; + @Getter + @Persisted + protected final NotifiableItemStackHandler circuitInventory; // The `Object... args` parameter is necessary in case a superclass needs to pass any args along to createTank(). // We can't use fields here because those won't be available while createTank() is called. @@ -59,6 +73,7 @@ public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int in super(holder, tier, io); this.slots = slots; this.tank = createTank(initialCapacity, slots, args); + this.circuitInventory = createCircuitItemHandler(io); } ////////////////////////////////////// @@ -77,6 +92,22 @@ public static int getTankCapacity(int initialCapacity, int tier) { return initialCapacity * (1 << Math.min(9, tier)); } + protected NotifiableItemStackHandler createCircuitItemHandler(Object... args) { + if (args.length > 0 && args[0] instanceof IO io && io == IO.IN) { + return new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) + .setFilter(IntCircuitBehaviour::isIntegratedCircuit); + } else { + return new NotifiableItemStackHandler(this, 0, IO.NONE); + } + } + + @Override + public void onDrops(List drops, Player entity) { + if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { + clearInventory(drops, circuitInventory.storage); + } + } + @Override public void onLoad() { super.onLoad(); @@ -144,6 +175,15 @@ public void setWorkingEnabled(boolean workingEnabled) { ////////////////////////////////////// // ********** GUI ***********// ////////////////////////////////////// + + @Override + public void attachConfigurators(ConfiguratorPanel configuratorPanel) { + super.attachConfigurators(configuratorPanel); + if (this.io == IO.IN) { + configuratorPanel.attachConfigurators(new CircuitFancyConfigurator(circuitInventory.storage)); + } + } + @Override public Widget createUIWidget() { if (slots == 1) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/CannerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/CannerLogic.java new file mode 100644 index 0000000000..36aa1b2a59 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/CannerLogic.java @@ -0,0 +1,90 @@ +package com.gregtechceu.gtceu.common.machine.trait.customlogic; + +import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.IRecipeCapabilityHolder; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.data.recipe.GTRecipeTypes; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import com.lowdragmc.lowdraglib.misc.ItemTransferList; + +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; +import net.neoforged.neoforge.items.IItemHandlerModifiable; + +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Objects; + +public class CannerLogic implements GTRecipeType.ICustomRecipeLogic { + + @Override + public @Nullable GTRecipe createCustomRecipe(IRecipeCapabilityHolder holder) { + var itemInputs = Objects + .requireNonNullElseGet(holder.getCapabilitiesProxy().get(IO.IN, ItemRecipeCapability.CAP), + ArrayList::new) + .stream() + .filter(IItemHandlerModifiable.class::isInstance).map(IItemHandlerModifiable.class::cast) + .toArray(IItemHandlerModifiable[]::new); + + var fluidInputs = Objects + .requireNonNullElseGet(holder.getCapabilitiesProxy().get(IO.IN, FluidRecipeCapability.CAP), + ArrayList::new) + .stream() + .filter(IFluidHandler.class::isInstance).map(IFluidHandler.class::cast) + .toArray(IFluidHandler[]::new); + + var inputs = new ItemTransferList(itemInputs); + for (int i = 0; i < inputs.getSlots(); i++) { + ItemStack item = inputs.getStackInSlot(i); + if (!item.isEmpty()) { + ItemStack inputStack = item.copy(); + inputStack.setCount(1); + + ItemStack fluidHandlerStack = inputStack.copy(); + IFluidHandlerItem fluidHandlerItem = fluidHandlerStack + .getCapability(Capabilities.FluidHandler.ITEM); + if (fluidHandlerItem == null) + continue; + + FluidStack fluid = fluidHandlerItem.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.EXECUTE); + if (!fluid.isEmpty()) { + return GTRecipeTypes.CANNER_RECIPES.recipeBuilder(GTStringUtils.itemStackToString(item)) + .inputItems(inputStack) + .outputItems(fluidHandlerItem.getContainer()) + .outputFluids(fluid) + .duration(Math.max(16, fluid.getAmount() / 64)).EUt(4) + .build(); + } + + // nothing drained so try filling + for (IFluidHandler fluidInput : fluidInputs) { + var fluidStack1 = fluidInput.getFluidInTank(0); + if (fluidStack1.isEmpty()) { + continue; + } + fluidStack1 = fluidStack1.copy(); + fluidStack1.setAmount( + fluidHandlerItem.fill(new FluidStack(fluidStack1.getFluid(), (int) fluidStack1.getAmount()), + IFluidHandler.FluidAction.EXECUTE)); + if (fluidStack1.getAmount() > 0) { + return GTRecipeTypes.CANNER_RECIPES.recipeBuilder(GTStringUtils.itemStackToString(item)) + .inputItems(inputStack) + .inputFluids(fluidStack1) + .outputItems(fluidHandlerItem.getContainer()) + .duration(Math.max(16, fluid.getAmount() / 64)).EUt(4) + .build(); + } + } + } + } + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/FormingPressLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/FormingPressLogic.java new file mode 100644 index 0000000000..41621de483 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/FormingPressLogic.java @@ -0,0 +1,66 @@ +package com.gregtechceu.gtceu.common.machine.trait.customlogic; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.IRecipeCapabilityHolder; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.data.item.GTItems; +import com.gregtechceu.gtceu.data.recipe.GTRecipeTypes; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import com.lowdragmc.lowdraglib.misc.ItemTransferList; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.items.IItemHandlerModifiable; + +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Objects; + +public class FormingPressLogic implements GTRecipeType.ICustomRecipeLogic { + + @Override + public @Nullable GTRecipe createCustomRecipe(IRecipeCapabilityHolder holder) { + var itemInputs = Objects + .requireNonNullElseGet(holder.getCapabilitiesProxy().get(IO.IN, ItemRecipeCapability.CAP), + ArrayList::new) + .stream() + .filter(IItemHandlerModifiable.class::isInstance).map(IItemHandlerModifiable.class::cast) + .toArray(IItemHandlerModifiable[]::new); + + ItemTransferList inputs = new ItemTransferList(itemInputs); + if (inputs.getSlots() > 1) { + ItemStack moldStack = ItemStack.EMPTY; + ItemStack item = ItemStack.EMPTY; + for (int i = 0; i < inputs.getSlots(); i++) { + var inputStack = inputs.getStackInSlot(i); + + if (!moldStack.isEmpty() && !item.isEmpty()) break; + + if (moldStack.isEmpty() && inputStack.is(GTItems.SHAPE_MOLD_NAME.asItem())) { + if (inputStack.has(DataComponents.CUSTOM_NAME)) { + moldStack = inputStack; + } + } else if (item.isEmpty()) { + item = inputStack; + } + } + + if (!moldStack.isEmpty() && !item.isEmpty()) { + ItemStack output = item.copyWithCount(1); + + output.set(DataComponents.CUSTOM_NAME, moldStack.getHoverName()); + return GTRecipeTypes.FORMING_PRESS_RECIPES.recipeBuilder(GTStringUtils.itemStackToString(output)) + .notConsumable(moldStack) + .inputItems(item.copyWithCount(1)) + .outputItems(output) + .duration(40).EUt(4) + .build(); + } + } + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java index 6cece646ca..22f9bc430c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java @@ -15,7 +15,6 @@ import com.gregtechceu.gtceu.data.block.GTBlocks; import com.gregtechceu.gtceu.data.item.GTItems; import com.gregtechceu.gtceu.data.material.GTMaterials; -import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.gregtechceu.gtceu.utils.GTUtil; @@ -38,6 +37,7 @@ import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.Vec3; +import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.items.IItemHandlerModifiable; import com.google.common.collect.Table; @@ -226,13 +226,13 @@ public void serverTick() { BlockState blockState = serverLevel.getBlockState(blocksToMine.getFirst()); // check to make sure the ore is still there, - while (!blockState.is(CustomTags.ORE_BLOCKS)) { + while (!blockState.is(Tags.Blocks.ORES)) { blocksToMine.removeFirst(); if (blocksToMine.isEmpty()) break; blockState = serverLevel.getBlockState(blocksToMine.getFirst()); } // When we are here we have an ore to mine! I'm glad we aren't threaded - if (!blocksToMine.isEmpty() & blockState.is(CustomTags.ORE_BLOCKS)) { + if (!blocksToMine.isEmpty() & blockState.is(Tags.Blocks.ORES)) { LootParams.Builder builder = new LootParams.Builder(serverLevel) .withParameter(LootContextParams.BLOCK_STATE, blockState) .withParameter(LootContextParams.ORIGIN, Vec3.atLowerCornerOf(blocksToMine.getFirst())) @@ -506,7 +506,7 @@ private LinkedList getBlocksToMine() { BlockState state = getMachine().getLevel().getBlockState(blockPos); if (state.getBlock().defaultDestroyTime() >= 0 && getMachine().getLevel().getBlockEntity(blockPos) == null && - state.is(CustomTags.ORE_BLOCKS)) { + state.is(Tags.Blocks.ORES)) { blocks.addLast(blockPos); } // move to the next x position diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/EnvironmentalHazardCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/EnvironmentalHazardCondition.java index a522fd5284..c8b46a4ed8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/EnvironmentalHazardCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/EnvironmentalHazardCondition.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.recipe.condition.RecipeCondition; import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.medicalcondition.GTMedicalConditions; import com.gregtechceu.gtceu.data.recipe.GTRecipeConditions; @@ -55,6 +56,7 @@ public Component getTooltips() { @Override public boolean test(@NotNull GTRecipe recipe, @NotNull RecipeLogic recipeLogic) { + if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) return true; if (!(recipeLogic.getMachine().getLevel() instanceof ServerLevel serverLevel)) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTreeChanceWeightedListInt.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTreeChanceWeightedListInt.java new file mode 100644 index 0000000000..330b2a3ce7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTreeChanceWeightedListInt.java @@ -0,0 +1,61 @@ +package com.gregtechceu.gtceu.common.worldgen; + +import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.data.worldgen.GTIntProviderTypes; + +import net.minecraft.util.RandomSource; +import net.minecraft.util.random.SimpleWeightedRandomList; +import net.minecraft.util.valueproviders.ConstantInt; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.util.valueproviders.IntProviderType; + +import com.mojang.serialization.MapCodec; + +public class RubberTreeChanceWeightedListInt extends IntProvider { + + public static final RubberTreeChanceWeightedListInt INSTANCE = new RubberTreeChanceWeightedListInt(); + public static final MapCodec CODEC = MapCodec.unit(INSTANCE); + + private final SimpleWeightedRandomList distribution; + private final int maxValue; + + public RubberTreeChanceWeightedListInt() { + if (ConfigHolder.INSTANCE.worldgen.rubberTreeSpawnChance <= 0.0f) { + distribution = SimpleWeightedRandomList.builder() + .add(ConstantInt.of(0), 1) + .build(); + this.maxValue = 0; + } else { + float chance = 1.0F / ConfigHolder.INSTANCE.worldgen.rubberTreeSpawnChance; + if (Math.abs(chance - (int) chance) > 1.0E-5F) { + throw new IllegalStateException("Chance data cannot be represented as list weight"); + } else { + this.distribution = SimpleWeightedRandomList.builder() + .add(ConstantInt.of(0), (int) chance - 1) + .add(ConstantInt.of(1), 1) + .build(); + } + this.maxValue = 1; + } + } + + @Override + public int sample(RandomSource random) { + return this.distribution.getRandomValue(random).orElseThrow(IllegalStateException::new).sample(random); + } + + @Override + public int getMinValue() { + return 0; + } + + @Override + public int getMaxValue() { + return this.maxValue; + } + + @Override + public IntProviderType getType() { + return GTIntProviderTypes.RUBBER_TREE_CHANCE.get(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 38e7c0310c..75280f35f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -17,10 +17,13 @@ public class ConfigHolder { public static ConfigHolder INSTANCE; + private static final Object LOCK = new Object(); public static void init() { - if (INSTANCE == null) { - INSTANCE = Configuration.registerConfig(ConfigHolder.class, ConfigFormats.yaml()).getConfigInstance(); + synchronized (LOCK) { + if (INSTANCE == null) { + INSTANCE = Configuration.registerConfig(ConfigHolder.class, ConfigFormats.yaml()).getConfigInstance(); + } } } @@ -121,6 +124,11 @@ public static class RecipeConfigs { "Whether to nerf the output amounts of the first circuit in a set to 1 (from 2) and SoC to 2 (from 4).", "Default: false" }) public boolean harderCircuitRecipes = false; + @Configurable + @Configurable.Comment({ + "Whether tools should have enchants or not. Like the flint sword getting fire aspect.", + "Default: true" }) + public boolean enchantedTools = true; } public static class CompatibilityConfigs { @@ -158,6 +166,10 @@ public static class CompatibilityConfigs { "Default: true" }) public boolean removeSmeltingForEBFMetals = true; + @Configurable + @Configurable.Comment({ "Whether dimension marker should show dimension tier.", "Default: false" }) + public boolean showDimensionTier = false; + public static class EnergyCompatConfig { @Configurable @@ -201,7 +213,8 @@ public static class AE2CompatConfig { public static class WorldGenConfigs { @Configurable - @Configurable.Comment({ "Rubber Tree spawn chance (% per chunk)", "Default: 0.5" }) + @Configurable.Comment({ "Rubber Tree spawn chance (decimal % per chunk)", "Default: 0.5" }) + @Configurable.DecimalRange(min = 0f, max = 1f) public float rubberTreeSpawnChance = 0.5f; @Configurable @@ -388,6 +401,15 @@ public static class MachineConfigs { "Other mods can override this to true, regardless of the config file.", "Default: false" }) public boolean highTierContent = false; + + @Configurable + @Configurable.Comment({ "Whether the Assembly Line should require the item inputs to be in order.", + "Default: true" }) + public boolean orderedAssemblyLineItems = true; + @Configurable + @Configurable.Comment({ "Whether the Assembly Line should require the fluid inputs to be in order.", + "(Requires Ordered Assembly Line Item Inputs to be enabled.)", "Default: false" }) + public boolean orderedAssemblyLineFluids = false; } public static class ToolConfigs { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java index df847be2bc..0a9a61fdc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IMedicalConditionTracker; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.core.IFireImmuneEntity; import net.minecraft.world.entity.Entity; @@ -49,6 +50,9 @@ public abstract class EntityMixin implements IFireImmuneEntity { if (!gtceu$isEntityInit) { return original; } + if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) + return original; + if (((Entity) (Object) this) instanceof Player player) { IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker(player); if (tracker.getMaxAirSupply() != -1) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/GTCreativeModeTabs.java b/src/main/java/com/gregtechceu/gtceu/data/GTCreativeModeTabs.java index b648b4f4dc..3cdd7b0f33 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/GTCreativeModeTabs.java +++ b/src/main/java/com/gregtechceu/gtceu/data/GTCreativeModeTabs.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.IGTTool; +import com.gregtechceu.gtceu.api.item.LampBlockItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.material.ChemicalHelper; @@ -127,6 +128,10 @@ public void accept(@NotNull CreativeModeTab.ItemDisplayParameters itemDisplayPar NonNullList list = NonNullList.create(); tool.definition$fillItemCategory(tab.get(), list); list.forEach(output::accept); + } else if (item instanceof LampBlockItem lamp) { + NonNullList list = NonNullList.create(); + lamp.fillItemCategory(tab.get(), list); + list.forEach(output::accept); } else { output.accept(item); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/GTModels.java b/src/main/java/com/gregtechceu/gtceu/data/GTModels.java index a9a8e72d82..a56322e8c0 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/GTModels.java +++ b/src/main/java/com/gregtechceu/gtceu/data/GTModels.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.fluid.store.FluidStorageKey; import com.gregtechceu.gtceu.api.material.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.material.material.properties.PropertyKey; +import com.gregtechceu.gtceu.common.block.LampBlock; import com.gregtechceu.gtceu.core.MixinHelpers; import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; @@ -15,10 +16,12 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; import net.neoforged.neoforge.client.model.generators.ConfiguredModel; +import net.neoforged.neoforge.client.model.generators.ModelBuilder; import net.neoforged.neoforge.client.model.generators.ModelFile; import net.neoforged.neoforge.client.model.generators.ModelProvider; @@ -111,6 +114,51 @@ public static void longDistanceFluidPipeModel(DataGenContext, RegistrateBlockstateProvider> lampModel(DyeColor color, + boolean border) { + return (ctx, prov) -> { + final String borderPart = (border ? "" : "_borderless"); + ModelFile parentOn = prov.models().getExistingFile(prov.modLoc("block/lamp" + borderPart)); + ModelFile parentOff = prov.models().getExistingFile(prov.modLoc("block/lamp" + borderPart + "_off")); + + prov.getVariantBuilder(ctx.getEntry()) + .forAllStates(state -> { + if (state.getValue(LampBlock.LIGHT)) { + ModelBuilder model = prov.models() + .getBuilder(ctx.getName() + (state.getValue(LampBlock.BLOOM) ? "_bloom" : "")) + .parent(parentOn); + if (border) { + model.texture("active", "block/lamps/" + color.getName()); + if (state.getValue(LampBlock.BLOOM)) { + model.texture("active_overlay", "block/lamps/" + color.getName() + "_emissive"); + } else { + model.texture("active_overlay", "block/lamps/" + color.getName()); + } + } else { + if (state.getValue(LampBlock.BLOOM)) { + model.texture("active", + "block/lamps/" + color.getName() + "_borderless_emissive"); + } else { + model.texture("active", + "block/lamps/" + color.getName() + "_borderless"); + } + } + return ConfiguredModel.builder() + .modelFile(model) + .build(); + } else { + return ConfiguredModel.builder() + .modelFile(prov.models() + .getBuilder(ctx.getName() + "_off") + .parent(parentOff) + .texture("inactive", + "block/lamps/" + color.getName() + "_off" + borderPart)) + .build(); + } + }); + }; + } + public static NonNullBiConsumer, RegistrateBlockstateProvider> randomRotatedModel(ResourceLocation texturePath) { return (ctx, prov) -> { Block block = ctx.getEntry(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/block/GTBlocks.java b/src/main/java/com/gregtechceu/gtceu/data/block/GTBlocks.java index 63832679ca..7ffe94f0d1 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/block/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/data/block/GTBlocks.java @@ -1647,17 +1647,36 @@ public static void generateStoneBlocks() { .register(); // Lamps - @SuppressWarnings("unchecked") - public static final BlockEntry[] LAMPS = new BlockEntry[DyeColor.values().length]; + public static final Map> LAMPS; + public static final Map> BORDERLESS_LAMPS; static { + ImmutableMap.Builder> lampBuilder = new ImmutableMap.Builder<>(); DyeColor[] colors = DyeColor.values(); - for (int i = 0; i < colors.length; i++) { - var dyeColor = colors[i]; - LAMPS[i] = REGISTRATE.block("%s_lamp".formatted(dyeColor.getName()), Block::new) - .initialProperties(() -> Blocks.GLOWSTONE) - .simpleItem() - .register(); + for (DyeColor dyeColor : colors) { + lampBuilder.put(dyeColor, + REGISTRATE.block("%s_lamp".formatted(dyeColor.getName()), (p) -> new LampBlock(p, dyeColor, true)) + .initialProperties(() -> Blocks.GLASS) + .properties(p -> p.strength(0.3f, 8.0f).sound(SoundType.GLASS)) + .addLayer(() -> RenderType::cutout) + .blockstate(GTModels.lampModel(dyeColor, true)) + .item(LampBlockItem::new) + .build() + .register()); + } + LAMPS = lampBuilder.build(); + ImmutableMap.Builder> borderlessLampBuilder = new ImmutableMap.Builder<>(); + for (DyeColor dyeColor : colors) { + borderlessLampBuilder.put(dyeColor, REGISTRATE + .block("%s_borderless_lamp".formatted(dyeColor.getName()), (p) -> new LampBlock(p, dyeColor, false)) + .initialProperties(() -> Blocks.GLASS) + .properties(p -> p.strength(0.3f, 8.0f).sound(SoundType.GLASS)) + .addLayer(() -> RenderType::cutout) + .blockstate(GTModels.lampModel(dyeColor, false)) + .item(LampBlockItem::new) + .build() + .register()); } + BORDERLESS_LAMPS = borderlessLampBuilder.build(); } public static FactoryBlockPattern.start() @@ -93,7 +93,7 @@ public static void init() {} .where('A', Predicates.air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/secure_maceration_casing"), - GTCEu.id("block/multiblock/gcym/large_maceration_tower"), false) + GTCEu.id("block/multiblock/gcym/large_maceration_tower")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -106,7 +106,7 @@ public static void init() {} ORE_WASHER_RECIPES.getName(), CHEMICAL_BATH_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeTypes(CHEMICAL_BATH_RECIPES, ORE_WASHER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() @@ -125,7 +125,7 @@ public static void init() {} .where('T', Predicates.blocks(CASING_TITANIUM_PIPE.get())) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), - GTCEu.id("block/multiblock/gcym/large_chemical_bath"), false) + GTCEu.id("block/multiblock/gcym/large_chemical_bath")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -138,7 +138,7 @@ public static void init() {} CENTRIFUGE_RECIPES.getName(), THERMAL_CENTRIFUGE_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeTypes(CENTRIFUGE_RECIPES, THERMAL_CENTRIFUGE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_VIBRATION_SAFE) .pattern(definition -> FactoryBlockPattern.start() @@ -156,7 +156,7 @@ public static void init() {} .where('#', Predicates.any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), - GTCEu.id("block/multiblock/gcym/large_centrifuge"), false) + GTCEu.id("block/multiblock/gcym/large_centrifuge")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -169,7 +169,7 @@ public static void init() {} MIXER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(MIXER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_REACTION_SAFE) .pattern(definition -> FactoryBlockPattern.start() @@ -189,7 +189,7 @@ public static void init() {} .where('#', Predicates.any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), - GTCEu.id("block/multiblock/gcym/large_mixer"), false) + GTCEu.id("block/multiblock/gcym/large_mixer")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -202,7 +202,7 @@ public static void init() {} ELECTROLYZER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(ELECTROLYZER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_NONCONDUCTING) .pattern(definition -> FactoryBlockPattern.start() @@ -217,7 +217,7 @@ public static void init() {} .where('C', blocks(ELECTROLYTIC_CELL.get())) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), - GTCEu.id("block/multiblock/gcym/large_electrolyzer"), false) + GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -231,7 +231,7 @@ public static void init() {} POLARIZER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeTypes(ELECTROMAGNETIC_SEPARATOR_RECIPES, POLARIZER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_NONCONDUCTING) .pattern(definition -> FactoryBlockPattern.start() @@ -246,7 +246,7 @@ public static void init() {} .where('C', blocks(ELECTROLYTIC_CELL.get())) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), - GTCEu.id("block/multiblock/gcym/large_electrolyzer"), false) + GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -259,7 +259,7 @@ public static void init() {} PACKER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PACKER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_TUNGSTENSTEEL_ROBUST) .pattern(definition -> FactoryBlockPattern.start() @@ -276,7 +276,7 @@ public static void init() {} .where('A', Predicates.air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), - GTCEu.id("block/multiblock/gcym/large_packer"), false) + GTCEu.id("block/multiblock/gcym/large_packer")) .compassSections(GTCompassSections.TIER[HV]) .compassNodeSelf() .register(); @@ -290,7 +290,8 @@ public static void init() {} .tooltips(GTMachines.defaultEnvironmentRequirement()) .rotationState(RotationState.ALL) .recipeType(ASSEMBLER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, + GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() @@ -308,7 +309,7 @@ public static void init() {} .where('#', Predicates.any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), - GTCEu.id("block/multiblock/gcym/large_assembler"), false) + GTCEu.id("block/multiblock/gcym/large_assembler")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -322,7 +323,8 @@ public static void init() {} .tooltips(GTMachines.defaultEnvironmentRequirement()) .rotationState(RotationState.ALL) .recipeType(CIRCUIT_ASSEMBLER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, + GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() @@ -344,7 +346,7 @@ public static void init() {} .where('#', Predicates.any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), - GTCEu.id("block/multiblock/gcym/large_circuit_assembler"), false) + GTCEu.id("block/multiblock/gcym/large_circuit_assembler")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -357,7 +359,7 @@ public static void init() {} ARC_FURNACE_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(ARC_FURNACE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> FactoryBlockPattern.start() @@ -376,7 +378,7 @@ public static void init() {} .where('#', Predicates.any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), - GTCEu.id("block/multiblock/gcym/large_arc_smelter"), false) + GTCEu.id("block/multiblock/gcym/large_arc_smelter")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -390,7 +392,8 @@ public static void init() {} .tooltips(GTMachines.defaultEnvironmentRequirement()) .rotationState(RotationState.ALL) .recipeType(LASER_ENGRAVER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, + GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_LASER_SAFE_ENGRAVING) .pattern(definition -> FactoryBlockPattern.start() @@ -409,7 +412,7 @@ public static void init() {} .where('A', Predicates.air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/laser_safe_engraving_casing"), - GTCEu.id("block/multiblock/gcym/large_engraving_laser"), false) + GTCEu.id("block/multiblock/gcym/large_engraving_laser")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -422,7 +425,7 @@ public static void init() {} SIFTER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(SIFTER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_VIBRATION_SAFE) .pattern(definition -> FactoryBlockPattern.start() @@ -440,7 +443,7 @@ public static void init() {} .where('#', Predicates.any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), - GTCEu.id("block/multiblock/gcym/large_sifting_funnel"), false) + GTCEu.id("block/multiblock/gcym/large_sifting_funnel")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -452,7 +455,8 @@ public static void init() {} ALLOY_BLAST_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(ALLOY_BLAST_RECIPES) - .recipeModifier(GTRecipeModifiers::ebfOverclock) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, + GTRecipeModifiers::ebfOverclock) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#CCC#", "#GGG#", "#CCC#", "#XXX#") @@ -495,7 +499,7 @@ public static void init() {} return shapeInfo; }) .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), - GTCEu.id("block/multiblock/gcym/blast_alloy_smelter"), false) + GTCEu.id("block/multiblock/gcym/blast_alloy_smelter")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -508,7 +512,7 @@ public static void init() {} AUTOCLAVE_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(AUTOCLAVE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() @@ -525,7 +529,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), - GTCEu.id("block/multiblock/gcym/large_autoclave"), false) + GTCEu.id("block/multiblock/gcym/large_autoclave")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -539,7 +543,7 @@ public static void init() {} FORGE_HAMMER_RECIPES.getName(), FORMING_PRESS_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeTypes(BENDER_RECIPES, COMPRESSOR_RECIPES, FORGE_HAMMER_RECIPES, FORMING_PRESS_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() @@ -555,7 +559,7 @@ public static void init() {} .where('A', air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), - GTCEu.id("block/multiblock/gcym/large_material_press"), false) + GTCEu.id("block/multiblock/gcym/large_material_press")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -569,7 +573,7 @@ public static void init() {} FLUID_HEATER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeTypes(BREWING_RECIPES, FERMENTING_RECIPES, FLUID_HEATER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_CORROSION_PROOF) .pattern(definition -> FactoryBlockPattern.start() @@ -589,7 +593,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/corrosion_proof_casing"), - GTCEu.id("block/multiblock/gcym/large_brewer"), false) + GTCEu.id("block/multiblock/gcym/large_brewer")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -602,7 +606,7 @@ public static void init() {} CUTTER_RECIPES.getName(), LATHE_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeTypes(CUTTER_RECIPES, LATHE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_SHOCK_PROOF) .pattern(definition -> FactoryBlockPattern.start() @@ -620,7 +624,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/shock_proof_cutting_casing"), - GTCEu.id("block/multiblock/gcym/large_cutter"), false) + GTCEu.id("block/multiblock/gcym/large_cutter")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -633,7 +637,7 @@ public static void init() {} DISTILLATION_RECIPES.getName(), DISTILLERY_RECIPES.getName())) .rotationState(RotationState.NON_Y_AXIS) .recipeTypes(DISTILLATION_RECIPES, DISTILLERY_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> { @@ -661,7 +665,7 @@ public static void init() {} }) .partSorter(Comparator.comparingInt(a -> a.self().getPos().getY())) .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), - GTCEu.id("block/multiblock/gcym/large_distillery"), false) + GTCEu.id("block/multiblock/gcym/large_distillery")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -674,7 +678,7 @@ public static void init() {} EXTRACTOR_RECIPES.getName(), CANNER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeTypes(EXTRACTOR_RECIPES, CANNER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() @@ -689,7 +693,7 @@ public static void init() {} .where('A', air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), - GTCEu.id("block/multiblock/gcym/large_extractor"), false) + GTCEu.id("block/multiblock/gcym/large_extractor")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -702,7 +706,7 @@ public static void init() {} EXTRUDER_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(EXTRUDER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() @@ -721,7 +725,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), - GTCEu.id("block/multiblock/gcym/large_extruder"), false) + GTCEu.id("block/multiblock/gcym/large_extruder")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -734,7 +738,7 @@ public static void init() {} FLUID_SOLIDFICATION_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(FLUID_SOLIDFICATION_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() @@ -752,7 +756,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), - GTCEu.id("block/multiblock/gcym/large_solidifier"), false) + GTCEu.id("block/multiblock/gcym/large_solidifier")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -765,7 +769,7 @@ public static void init() {} WIREMILL_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(WIREMILL_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() @@ -780,7 +784,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), - GTCEu.id("block/multiblock/gcym/large_wiremill"), false) + GTCEu.id("block/multiblock/gcym/large_wiremill")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -793,7 +797,8 @@ public static void init() {} BLAST_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(BLAST_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers::ebfOverclock) + .recipeModifiers(GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.PARALLEL_HATCH, + GTRecipeModifiers::ebfOverclock) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> { TraceabilityPredicate casing = blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(360); @@ -944,7 +949,7 @@ public static void init() {} return shapeInfo; }) .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), - GTCEu.id("block/multiblock/gcym/mega_blast_furnace"), false) + GTCEu.id("block/multiblock/gcym/mega_blast_furnace")) .compassSections(GTCompassSections.TIER[LuV]) .compassNodeSelf() .register(); @@ -957,7 +962,7 @@ public static void init() {} VACUUM_RECIPES.getName())) .rotationState(RotationState.ALL) .recipeType(VACUUM_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, + .recipeModifiers(GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) .pattern(definition -> FactoryBlockPattern.start() @@ -985,7 +990,7 @@ public static void init() {} .where('#', any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), - GTCEu.id("block/multiblock/gcym/mega_vacuum_freezer"), false) + GTCEu.id("block/multiblock/gcym/mega_vacuum_freezer")) .compassSections(GTCompassSections.TIER[LuV]) .compassNodeSelf() .register(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/machine/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/data/machine/GTMachines.java index fc856f2f3f..16f75d4d56 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/machine/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/data/machine/GTMachines.java @@ -31,8 +31,8 @@ import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; import com.gregtechceu.gtceu.api.tag.TagPrefix; -import com.gregtechceu.gtceu.client.TooltipHelper; import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.item.DrumMachineItem; import com.gregtechceu.gtceu.common.machine.electric.*; @@ -359,7 +359,7 @@ public class GTMachines { GTRecipeTypes.COMBUSTION_GENERATOR_FUELS, genericGeneratorTankSizeFunction, 0.1f, GTValues.LV, GTValues.MV, GTValues.HV); public static final MachineDefinition[] STEAM_TURBINE = registerSimpleGenerator("steam_turbine", - GTRecipeTypes.STEAM_TURBINE_FUELS, steamGeneratorTankSizeFunction, 0.1f, GTValues.LV, GTValues.MV, + GTRecipeTypes.STEAM_TURBINE_FUELS, steamGeneratorTankSizeFunction, 0.0f, GTValues.LV, GTValues.MV, GTValues.HV); public static final MachineDefinition[] GAS_TURBINE = registerSimpleGenerator("gas_turbine", GTRecipeTypes.GAS_TURBINE_FUELS, genericGeneratorTankSizeFunction, 0.1f, GTValues.LV, GTValues.MV, @@ -426,12 +426,13 @@ public class GTMachines { .renderer(() -> new TieredHullMachineRenderer(tier, GTCEu.id("block/machine/pump_machine"))) .langValue("%s Pump %s".formatted(VLVH[tier], VLVT[tier])) .tooltips(Component.translatable("gtceu.machine.pump.tooltip"), - Component.translatable("gtceu.universal.tooltip.voltage_in", GTValues.V[tier], + Component.translatable("gtceu.universal.tooltip.voltage_in", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier]), Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", - GTValues.V[tier] * 64), + FormattingUtil.formatNumbers(GTValues.V[tier] * 64)), Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", - 16 * FluidHelper.getBucket() * Math.max(1, tier)), + FormattingUtil.formatNumbers(16 * FluidHelper.getBucket() * Math.max(1, tier))), Component.translatable("gtceu.universal.tooltip.working_area", PumpMachine.BASE_PUMP_RANGE + PumpMachine.EXTRA_PUMP_RANGE * tier, PumpMachine.BASE_PUMP_RANGE + PumpMachine.EXTRA_PUMP_RANGE * tier)) @@ -449,10 +450,11 @@ public class GTMachines { Component.translatable("gtceu.machine.fisher.speed", 1000 - tier * 200L), Component.translatable("gtceu.machine.fisher.requirement", FisherMachine.WATER_CHECK_SIZE, FisherMachine.WATER_CHECK_SIZE), - Component.translatable("gtceu.universal.tooltip.voltage_in", GTValues.V[tier], + Component.translatable("gtceu.universal.tooltip.voltage_in", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier]), Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", - GTValues.V[tier] * 64)) + FormattingUtil.formatNumbers(GTValues.V[tier] * 64))) .compassNode("fisher") .register(), LV, MV, HV, EV); @@ -469,10 +471,11 @@ public class GTMachines { .tooltips(Component.translatable("gtceu.machine.block_breaker.tooltip"), Component.translatable("gtceu.machine.block_breaker.speed_bonus", (int) (BlockBreakerMachine.getEfficiencyMultiplier(tier) * 100)), - Component.translatable("gtceu.universal.tooltip.voltage_in", GTValues.V[tier], + Component.translatable("gtceu.universal.tooltip.voltage_in", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier]), Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", - GTValues.V[tier] * 64)) + FormattingUtil.formatNumbers(GTValues.V[tier] * 64))) .compassNode("block_breaker") .register(), LV, MV, HV, EV); @@ -493,10 +496,11 @@ public class GTMachines { tooltip.add(Component.translatable("gtceu.universal.tooltip.uses_per_tick", energyPerTick) .append(Component.literal(", ").withStyle(ChatFormatting.GRAY)) .append(Component.translatable("gtceu.machine.miner.per_block", tickSpeed / 20))); - tooltip.add(Component.translatable("gtceu.universal.tooltip.voltage_in", GTValues.V[tier], + tooltip.add(Component.translatable("gtceu.universal.tooltip.voltage_in", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier])); tooltip.add(Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", - GTValues.V[tier] * 64L)); + FormattingUtil.formatNumbers(GTValues.V[tier] * 64L))); tooltip.add( Component.translatable("gtceu.universal.tooltip.working_area_max", maxArea, maxArea)); @@ -517,10 +521,11 @@ public class GTMachines { int randTickWorkingArea = 3 + (tier - 1) * 2; tooltip.add(Component.translatable("gtceu.machine.world_accelerator.description")); - tooltip.add(Component.translatable("gtceu.universal.tooltip.voltage_in", GTValues.V[tier], + tooltip.add(Component.translatable("gtceu.universal.tooltip.voltage_in", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier])); tooltip.add(Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", - GTValues.V[tier] * 64L)); + FormattingUtil.formatNumbers(GTValues.V[tier] * 64L))); tooltip.add(Component.translatable("gtceu.machine.world_accelerator.working_area")); tooltip.add(Component.translatable("gtceu.machine.world_accelerator.working_area_tile")); @@ -545,10 +550,11 @@ public class GTMachines { Component.translatable("gtceu.machine.item_collector.tooltip"), Component.translatable("gtceu.machine.item_collector.gui.collect_range", IntMath.pow(2, tier + 2), IntMath.pow(2, tier + 2)), - Component.translatable("gtceu.universal.tooltip.voltage_in", GTValues.V[tier], + Component.translatable("gtceu.universal.tooltip.voltage_in", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier]), Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", - GTValues.V[tier] * 64L)) + FormattingUtil.formatNumbers(GTValues.V[tier] * 64L))) .compassNode("item_collector") .register(), LV, MV, HV, EV); @@ -556,30 +562,39 @@ public class GTMachines { ////////////////////////////////////// // ********* Storage *********// ////////////////////////////////////// + + public static final BiConsumer> CREATIVE_TOOLTIPS = (stack, components) -> components + .add(Component.translatable("gtceu.creative_tooltip.1") + .append(Component.translatable("gtceu.creative_tooltip.2") + .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent()))) + .append(Component.translatable("gtceu.creative_tooltip.3"))); + + public static BiConsumer> createCreativeTooltips(boolean share) { + return (stack, list) -> { + CREATIVE_TOOLTIPS.accept(stack, list); + list.add(Component.translatable("gtceu.universal.%s".formatted(share ? "enabled" : "disabled"))); + }; + } + public static final MachineDefinition CREATIVE_ENERGY = REGISTRATE .machine("creative_energy", CreativeEnergyContainerMachine::new) .rotationState(RotationState.NONE) - .tooltips(Component.translatable("gtceu.creative_tooltip.1"), - Component.translatable("gtceu.creative_tooltip.2") - .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent())), - Component.translatable("gtceu.creative_tooltip.3")) + .tooltipBuilder(CREATIVE_TOOLTIPS) .compassNodeSelf() .register(); public static final MachineDefinition CREATIVE_FLUID = REGISTRATE.machine("creative_tank", CreativeTankMachine::new) .rotationState(RotationState.ALL) - .tooltips(Component.translatable("gtceu.creative_tooltip.1"), - Component.translatable("gtceu.creative_tooltip.2") - .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent())), - Component.translatable("gtceu.creative_tooltip.3")) + .tooltipBuilder(CREATIVE_TOOLTIPS) + .renderer(() -> new QuantumTankRenderer(MAX, GTCEu.id("block/machine/creative_tank"))) + .hasTESR(true) .compassNodeSelf() .register(); public static final MachineDefinition CREATIVE_ITEM = REGISTRATE .machine("creative_chest", CreativeChestMachine::new) .rotationState(RotationState.ALL) - .tooltips(Component.translatable("gtceu.creative_tooltip.1"), - Component.translatable("gtceu.creative_tooltip.2") - .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent())), - Component.translatable("gtceu.creative_tooltip.3")) + .tooltipBuilder(CREATIVE_TOOLTIPS) + .renderer(() -> new QuantumChestRenderer(MAX, GTCEu.id("block/machine/creative_chest"))) + .hasTESR(true) .compassNodeSelf() .register(); @@ -602,7 +617,8 @@ public class GTMachines { }; public static final MachineDefinition[] SUPER_CHEST = registerTieredMachines("super_chest", - (holder, tier) -> new QuantumChestMachine(holder, tier, 4000000 * (int) Math.pow(2, tier)), + (holder, tier) -> new QuantumChestMachine(holder, tier, + (int) Math.min(4000000l * (long) Math.pow(2, tier), Integer.MAX_VALUE)), (tier, builder) -> builder .langValue("Super Chest " + LVT[tier + 1 - LOW_TIERS[0]]) .blockProp(BlockBehaviour.Properties::dynamicShape) @@ -612,14 +628,15 @@ public class GTMachines { .tooltipBuilder(CHEST_TOOLTIPS) .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_total", - 4000000 * (int) Math.pow(2, tier))) + FormattingUtil.formatNumbers(4000000l * (long) Math.pow(2, tier)))) .compassNode("super_chest") .register(), LOW_TIERS); public static final MachineDefinition[] QUANTUM_CHEST = registerTieredMachines("quantum_chest", (holder, tier) -> new QuantumChestMachine(holder, tier, - tier == GTValues.UHV ? Integer.MAX_VALUE : 4000000 * (int) Math.pow(2, tier)), + tier == GTValues.UHV ? Integer.MAX_VALUE : + (int) Math.min(4000000l * (long) Math.pow(2, tier), Integer.MAX_VALUE)), (tier, builder) -> builder .langValue("Quantum Chest " + LVT[tier + 1 - LOW_TIERS[0]]) .blockProp(BlockBehaviour.Properties::dynamicShape) @@ -629,7 +646,8 @@ public class GTMachines { .tooltipBuilder(CHEST_TOOLTIPS) .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_total", - /* tier == GTValues.UHV ? Integer.MAX_VALUE : */ 4000000 * (int) Math.pow(2, tier))) + /* tier == GTValues.UHV ? Integer.MAX_VALUE : */ FormattingUtil + .formatNumbers(4000000l * (long) Math.pow(2, tier)))) .compassNode("super_chest") .register(), HIGH_TIERS); @@ -663,7 +681,7 @@ public static BiConsumer> createTankTooltips(String n .tooltipBuilder(createTankTooltips("stored")) .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", - 4000000 * (int) Math.pow(2, tier))) + FormattingUtil.formatNumbers(4000000L * (long) Math.pow(2, tier)))) .compassNode("super_tank") .register(), LOW_TIERS); @@ -681,7 +699,8 @@ public static BiConsumer> createTankTooltips(String n .tooltipBuilder(createTankTooltips("stored")) .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", - /* tier == GTValues.UHV ? Integer.MAX_VALUE : */ 4000000 * (int) Math.pow(2, tier))) + /* tier == GTValues.UHV ? Integer.MAX_VALUE : */ FormattingUtil + .formatNumbers(4000000L * (long) Math.pow(2, tier)))) .compassNode("super_tank") .register(), HIGH_TIERS); @@ -689,23 +708,23 @@ public static BiConsumer> createTankTooltips(String n // Multiblock Tanks public static final MachineDefinition WOODEN_TANK_VALVE = registerTankValve( "wooden_tank_valve", "Wooden Tank Valve", false, - (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay, false)); + (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay)); public static final MultiblockMachineDefinition WOODEN_MULTIBLOCK_TANK = registerMultiblockTank( "wooden_multiblock_tank", "Wooden Multiblock Tank", 250 * 1000, CASING_WOOD_WALL, WOODEN_TANK_VALVE::getBlock, new PropertyFluidFilter(340, false, false, false, false), - (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay, false)); + (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay)); public static final MachineDefinition STEEL_TANK_VALVE = registerTankValve( "steel_tank_valve", "Steel Tank Valve", true, (builder, overlay) -> builder.workableCasingRenderer( - GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay, false)); + GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); public static final MultiblockMachineDefinition STEEL_MULTIBLOCK_TANK = registerMultiblockTank( "steel_multiblock_tank", "Steel Multiblock Tank", 1000 * 1000, CASING_STEEL_SOLID, STEEL_TANK_VALVE::getBlock, null, (builder, overlay) -> builder.workableCasingRenderer( - GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay, false)); + GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); public static MachineDefinition WOODEN_CRATE = registerCrate(GTMaterials.Wood, 27, "Wooden Crate"); public static MachineDefinition BRONZE_CRATE = registerCrate(GTMaterials.Bronze, 54, "Bronze Crate"); @@ -1053,7 +1072,8 @@ public static BiConsumer> createTankTooltips(String n .overlayTieredHullRenderer("diode") .tooltips(Component.translatable("gtceu.machine.diode.tooltip_general"), Component.translatable("gtceu.machine.diode.tooltip_starts_at"), - Component.translatable("gtceu.universal.tooltip.voltage_in_out", GTValues.V[tier], + Component.translatable("gtceu.universal.tooltip.voltage_in_out", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier]), Component.translatable("gtceu.universal.tooltip.amperage_in_out_till", DiodePartMachine.MAX_AMPS)) @@ -1121,7 +1141,7 @@ public static BiConsumer> createTankTooltips(String n .where('Y', Predicates.controller(blocks(definition.getBlock()))) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_coke_bricks"), - GTCEu.id("block/multiblock/coke_oven"), false) + GTCEu.id("block/multiblock/coke_oven")) .compassSections(GTCompassSections.STEAM) .compassNodeSelf() .register(); @@ -1140,7 +1160,7 @@ public static BiConsumer> createTankTooltips(String n .where('Y', Predicates.controller(blocks(definition.getBlock()))) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_primitive_bricks"), - GTCEu.id("block/multiblock/primitive_blast_furnace"), false) + GTCEu.id("block/multiblock/primitive_blast_furnace")) .compassSections(GTCompassSections.STEAM) .compassNodeSelf() .register(); @@ -1188,7 +1208,7 @@ public static BiConsumer> createTankTooltips(String n .recoveryItems( () -> new ItemLike[] { GTItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_heatproof"), - GTCEu.id("block/multiblock/electric_blast_furnace"), false) + GTCEu.id("block/multiblock/electric_blast_furnace")) .tooltips(Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.0"), Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.1"), Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.2")) @@ -1213,7 +1233,7 @@ public static BiConsumer> createTankTooltips(String n .tooltips(GTMachines.defaultEnvironmentRequirement()) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.LARGE_CHEMICAL_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, + .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.PERFECT_OVERCLOCK)) .appearanceBlock(CASING_PTFE_INERT) .pattern(definition -> { @@ -1273,7 +1293,7 @@ public static BiConsumer> createTankTooltips(String n return shapeInfo; }) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_inert_ptfe"), - GTCEu.id("block/multiblock/large_chemical_reactor"), false) + GTCEu.id("block/multiblock/large_chemical_reactor")) .compassSections(GTCompassSections.TIER[HV]) .compassNodeSelf() .register(); @@ -1282,7 +1302,8 @@ public static BiConsumer> createTankTooltips(String n .multiblock("implosion_compressor", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.IMPLOSION_RECIPES) - .recipeModifier(GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) + .recipeModifiers(GTRecipeModifiers.SUBTICK_PARALLEL, + GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_STEEL_SOLID) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -1295,7 +1316,7 @@ public static BiConsumer> createTankTooltips(String n .where('#', Predicates.air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), - GTCEu.id("block/multiblock/implosion_compressor"), false) + GTCEu.id("block/multiblock/implosion_compressor")) .compassSections(GTCompassSections.TIER[HV]) .compassNodeSelf() .register(); @@ -1304,7 +1325,7 @@ public static BiConsumer> createTankTooltips(String n .multiblock("pyrolyse_oven", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PYROLYSE_RECIPES) - .recipeModifier(GTRecipeModifiers::pyrolyseOvenOverclock) + .recipeModifiers(GTRecipeModifiers::pyrolyseOvenOverclock, GTRecipeModifiers.SUBTICK_PARALLEL) .appearanceBlock(MACHINE_CASING_ULV) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -1343,7 +1364,7 @@ public static BiConsumer> createTankTooltips(String n return shapeInfo; }) .workableCasingRenderer(GTCEu.id("block/casings/voltage/ulv/side"), - GTCEu.id("block/multiblock/pyrolyse_oven"), false) + GTCEu.id("block/multiblock/pyrolyse_oven")) .tooltips(Component.translatable("gtceu.machine.pyrolyse_oven.tooltip"), Component.translatable("gtceu.machine.pyrolyse_oven.tooltip.1")) .additionalDisplay((controller, components) -> { @@ -1360,7 +1381,7 @@ public static BiConsumer> createTankTooltips(String n .multiblock("multi_smelter", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeTypes(GTRecipeTypes.FURNACE_RECIPES, GTRecipeTypes.ALLOY_SMELTER_RECIPES) - .recipeModifiers(GTRecipeModifiers::multiSmelterParallel, + .recipeModifiers(GTRecipeModifiers::multiSmelterParallel, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_INVAR_HEATPROOF) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", @@ -1400,7 +1421,7 @@ public static BiConsumer> createTankTooltips(String n .recoveryItems( () -> new ItemLike[] { GTItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_heatproof"), - GTCEu.id("block/multiblock/multi_furnace"), false) + GTCEu.id("block/multiblock/multi_furnace")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { components.add(Component.translatable("gtceu.multiblock.multi_furnace.heating_coil_level", @@ -1452,7 +1473,7 @@ public static BiConsumer> createTankTooltips(String n return shapeInfo; }) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), - GTCEu.id("block/multiblock/cracking_unit"), false) + GTCEu.id("block/multiblock/cracking_unit")) .tooltips(Component.translatable("gtceu.machine.cracker.tooltip.1")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { @@ -1468,7 +1489,8 @@ public static BiConsumer> createTankTooltips(String n .multiblock("distillation_tower", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.DISTILLATION_RECIPES) - .recipeModifier(GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) + .recipeModifiers(GTRecipeModifiers.SUBTICK_PARALLEL, + GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_STAINLESS_CLEAN) .pattern(definition -> FactoryBlockPattern.start(RIGHT, BACK, UP) .aisle("YSY", "YYY", "YYY") @@ -1488,7 +1510,7 @@ public static BiConsumer> createTankTooltips(String n .allowExtendedFacing(false) .partSorter(Comparator.comparingInt(a -> a.self().getPos().getY())) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), - GTCEu.id("block/multiblock/distillation_tower"), false) + GTCEu.id("block/multiblock/distillation_tower")) .compassSections(GTCompassSections.TIER[EV]) .compassNodeSelf() .register(); @@ -1498,7 +1520,8 @@ public static BiConsumer> createTankTooltips(String n .langValue("Evaporation Tower") .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.EVAPORATION_RECIPES) - .recipeModifier(GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) + .recipeModifiers(GTRecipeModifiers.SUBTICK_PARALLEL, + GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_STAINLESS_EVAPORATION) .pattern(definition -> FactoryBlockPattern.start(RIGHT, BACK, UP) .aisle("YSYY", "YYYY", "YYYY", "YYYY") @@ -1518,14 +1541,15 @@ public static BiConsumer> createTankTooltips(String n .allowExtendedFacing(false) .partSorter(Comparator.comparingInt(a -> a.self().getPos().getY())) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_stainless_evaporation"), - GTCEu.id("block/multiblock/distillation_tower"), false) + GTCEu.id("block/multiblock/distillation_tower")) .register(); public static final MultiblockMachineDefinition VACUUM_FREEZER = REGISTRATE .multiblock("vacuum_freezer", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.VACUUM_RECIPES) - .recipeModifier(GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) + .recipeModifiers(GTRecipeModifiers.SUBTICK_PARALLEL, + GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -1538,17 +1562,17 @@ public static BiConsumer> createTankTooltips(String n .where('#', Predicates.air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), - GTCEu.id("block/multiblock/vacuum_freezer"), false) + GTCEu.id("block/multiblock/vacuum_freezer")) .compassSections(GTCompassSections.TIER[HV]) .compassNodeSelf() .register(); public static final MultiblockMachineDefinition ASSEMBLY_LINE = REGISTRATE - .multiblock("assembly_line", WorkableElectricMultiblockMachine::new) + .multiblock("assembly_line", AssemblyLineMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.ASSEMBLY_LINE_RECIPES) .alwaysTryModifyRecipe(true) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, + .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.SUBTICK_PARALLEL, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PERFECT_OVERCLOCK)) .appearanceBlock(CASING_STEEL_SOLID) .pattern(definition -> FactoryBlockPattern.start(BACK, UP, RIGHT) @@ -1557,7 +1581,9 @@ public static BiConsumer> createTankTooltips(String n .aisle("FOF", "RTR", "DAG", "#Y#") .where('S', Predicates.controller(blocks(definition.getBlock()))) .where('F', blocks(CASING_STEEL_SOLID.get()) - .or(Predicates.abilities(PartAbility.IMPORT_FLUIDS).setMaxGlobalLimited(4))) + .or(!ConfigHolder.INSTANCE.machines.orderedAssemblyLineFluids ? + Predicates.abilities(PartAbility.IMPORT_FLUIDS) : + Predicates.abilities(PartAbility.IMPORT_FLUIDS_1X).setMaxGlobalLimited(4))) .where('O', Predicates.abilities(PartAbility.EXPORT_ITEMS) .addTooltips(Component.translatable("gtceu.multiblock.pattern.location_end"))) @@ -1573,7 +1599,7 @@ public static BiConsumer> createTankTooltips(String n .where('#', Predicates.any()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), - GTCEu.id("block/multiblock/assembly_line"), false) + GTCEu.id("block/multiblock/assembly_line")) .compassSections(GTCompassSections.TIER[IV]) .compassNodeSelf() .register(); @@ -1595,7 +1621,7 @@ public static BiConsumer> createTankTooltips(String n .where('#', Predicates.any()) .build()) .allowExtendedFacing(false) - .sidedWorkableCasingRenderer("block/casings/pump_deck", GTCEu.id("block/multiblock/primitive_pump"), false) + .sidedWorkableCasingRenderer("block/casings/pump_deck", GTCEu.id("block/multiblock/primitive_pump")) .compassSections(GTCompassSections.STEAM) .compassNodeSelf() .register(); @@ -1619,7 +1645,7 @@ public static BiConsumer> createTankTooltips(String n .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), - GTCEu.id("block/multiblock/steam_grinder"), false) + GTCEu.id("block/multiblock/steam_grinder")) .compassSections(GTCompassSections.STEAM) .compassNodeSelf() .register(); @@ -1700,7 +1726,7 @@ public static BiConsumer> createTankTooltips(String n List shapeInfos = new ArrayList<>(); MultiblockShapeInfo.ShapeInfoBuilder baseBuilder = MultiblockShapeInfo.builder() - .aisle("###############", "######WGW######", "###############") + .aisle("###############", "######EME######", "###############") .aisle("######DCD######", "####GG###GG####", "######UCU######") .aisle("####CC###CC####", "###w##EGE##s###", "####CC###CC####") .aisle("###C#######C###", "##nKeG###GeKn##", "###C#######C###") @@ -1714,7 +1740,7 @@ public static BiConsumer> createTankTooltips(String n .aisle("###C#######C###", "##eKnG###GnKe##", "###C#######C###") .aisle("####CC###CC####", "###w##WGW##s###", "####CC###CC####") .aisle("######DCD######", "####GG###GG####", "######UCU######") - .aisle("###############", "######EME######", "###############") + .aisle("###############", "######WGW######", "###############") .where('M', controller, Direction.SOUTH) .where('C', FusionReactorMachine.getCasingState(tier)) .where('G', FUSION_GLASS.get()) @@ -1737,8 +1763,9 @@ public static BiConsumer> createTankTooltips(String n shapeInfos.add(baseBuilder.build()); return shapeInfos; }) - .workableCasingRenderer(FusionReactorMachine.getCasingType(tier).getTexture(), - GTCEu.id("block/multiblock/fusion_reactor"), false) + .renderer(() -> new FusionReactorRenderer(FusionReactorMachine.getCasingType(tier).getTexture(), + GTCEu.id("block/multiblock/fusion_reactor"))) + .hasTESR(true) .compassSections(GTCompassSections.TIER[LuV]) .compassNodeSelf() .register(), @@ -1773,7 +1800,7 @@ public static BiConsumer> createTankTooltips(String n .where('#', any()) .build()) .workableCasingRenderer(FluidDrillMachine.getBaseTexture(tier), - GTCEu.id("block/multiblock/fluid_drilling_rig"), false) + GTCEu.id("block/multiblock/fluid_drilling_rig")) .compassSections(GTCompassSections.TIER[MV]) .compassNode("fluid_drilling_rig") .register(), @@ -1907,7 +1934,7 @@ public static BiConsumer> createTankTooltips(String n .allowExtendedFacing(false) .allowFlip(false) .workableCasingRenderer(GTCEu.id("block/casings/cleanroom/plascrete"), - GTCEu.id("block/multiblock/cleanroom"), false) + GTCEu.id("block/multiblock/cleanroom")) .compassSections(GTCompassSections.TIER[HV]) .compassNodeSelf() .register(); @@ -1950,10 +1977,12 @@ public static BiConsumer> createTankTooltips(String n .recipeType(GTRecipeTypes.DUMMY_RECIPES) .appearanceBlock(HIGH_POWER_CASING) .tooltips(Component.translatable("gtceu.machine.active_transformer.tooltip.0"), - Component.translatable("gtceu.machine.active_transformer.tooltip.1"), - Component.translatable("gtceu.machine.active_transformer.tooltip.2") - .append(Component.translatable("gtceu.machine.active_transformer.tooltip.3") - .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent())))) + Component.translatable("gtceu.machine.active_transformer.tooltip.1")) + .tooltipBuilder( + (stack, + components) -> components.add(Component.translatable("gtceu.machine.active_transformer.tooltip.2") + .append(Component.translatable("gtceu.machine.active_transformer.tooltip.3") + .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent()))))) .pattern((definition) -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") .aisle("XXX", "XCX", "XXX") @@ -1964,7 +1993,7 @@ public static BiConsumer> createTankTooltips(String n .where('C', blocks(GTBlocks.SUPERCONDUCTING_COIL.get())) .build()) .workableCasingRenderer(GTCEu.id("block/casings/hpca/high_power_casing"), - GTCEu.id("block/multiblock/data_bank"), false) + GTCEu.id("block/multiblock/data_bank")) .register(); public static final MultiblockMachineDefinition POWER_SUBSTATION = REGISTRATE @@ -1977,10 +2006,12 @@ public static BiConsumer> createTankTooltips(String n PowerSubstationMachine.MAX_BATTERY_LAYERS), Component.translatable("gtceu.machine.power_substation.tooltip.3"), Component.translatable("gtceu.machine.power_substation.tooltip.4", - PowerSubstationMachine.PASSIVE_DRAIN_MAX_PER_STORAGE / 1000), - Component.translatable("gtceu.machine.power_substation.tooltip.5") - .append(Component.translatable("gtceu.machine.power_substation.tooltip.6") - .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent())))) + PowerSubstationMachine.PASSIVE_DRAIN_MAX_PER_STORAGE / 1000)) + .tooltipBuilder( + (stack, + components) -> components.add(Component.translatable("gtceu.machine.power_substation.tooltip.5") + .append(Component.translatable("gtceu.machine.power_substation.tooltip.6") + .withStyle(style -> style.withColor(TooltipHelper.RAINBOW_SLOW.getCurrent()))))) .appearanceBlock(CASING_PALLADIUM_SUBSTATION) .pattern(definition -> FactoryBlockPattern.start(RIGHT, BACK, UP) .aisle("XXSXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX") @@ -2033,7 +2064,7 @@ public static BiConsumer> createTankTooltips(String n return shapeInfo; }) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_palladium_substation"), - GTCEu.id("block/multiblock/power_substation"), false) + GTCEu.id("block/multiblock/power_substation")) .register(); ////////////////////////////////////// @@ -2214,7 +2245,8 @@ public static MachineDefinition[] registerBatteryBuffer(int batterySlotSize) { .tooltips( Component.translatable("gtceu.universal.tooltip.item_storage_capacity", batterySlotSize), - Component.translatable("gtceu.universal.tooltip.voltage_in_out", GTValues.V[tier], + Component.translatable("gtceu.universal.tooltip.voltage_in_out", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier]), Component.translatable("gtceu.universal.tooltip.amperage_in_till", batterySlotSize * BatteryBufferMachine.AMPS_PER_BATTERY), @@ -2232,7 +2264,8 @@ public static MachineDefinition[] registerCharger(int itemSlotSize) { .renderer(() -> new ChargerRenderer(tier)) .langValue("%s %s%s".formatted(VOLTAGE_NAMES[tier], itemSlotSize, "x Turbo Charger")) .tooltips(Component.translatable("gtceu.universal.tooltip.item_storage_capacity", itemSlotSize), - Component.translatable("gtceu.universal.tooltip.voltage_in_out", GTValues.V[tier], + Component.translatable("gtceu.universal.tooltip.voltage_in_out", + FormattingUtil.formatNumbers(GTValues.V[tier]), GTValues.VNF[tier]), Component.translatable("gtceu.universal.tooltip.amperage_in_till", itemSlotSize * ChargerMachine.AMPS_PER_ITEM)) @@ -2274,7 +2307,7 @@ public static MultiblockMachineDefinition[] registerTieredMultis(String name, private static MachineDefinition registerTankValve( String name, String displayName, boolean isMetal, - BiConsumer rendererSetup) { + BiConsumer, ResourceLocation> rendererSetup) { MachineBuilder builder = REGISTRATE .machine(name, holder -> new TankValvePartMachine(holder, isMetal)) .langValue(displayName) @@ -2410,7 +2443,7 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n .build()) .recoveryItems( () -> new ItemLike[] { GTItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(casingTexture, overlayModel, false) + .workableCasingRenderer(casingTexture, overlayModel) .tooltips( Component.translatable("gtceu.universal.tooltip.base_production_eut", V[tier]), Component.translatable("gtceu.universal.tooltip.uses_per_hour_lubricant", @@ -2465,7 +2498,7 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int .build()) .recoveryItems( () -> new ItemLike[] { GTItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(casingTexture, overlayModel, false) + .workableCasingRenderer(casingTexture, overlayModel) .tooltips( Component.translatable("gtceu.universal.tooltip.base_production_eut", V[tier] * 2), Component.translatable("gtceu.multiblock.turbine.efficiency_tooltip", VNF[tier])) @@ -2549,14 +2582,19 @@ public static Component[] workableTiered(int tier, long voltage, long energyCapa long tankCapacity, boolean input) { List tooltipComponents = new ArrayList<>(); tooltipComponents - .add(input ? Component.translatable("gtceu.universal.tooltip.voltage_in", voltage, GTValues.VNF[tier]) : - Component.translatable("gtceu.universal.tooltip.voltage_out", voltage, GTValues.VNF[tier])); + .add(input ? + Component.translatable("gtceu.universal.tooltip.voltage_in", + FormattingUtil.formatNumbers(voltage), GTValues.VNF[tier]) : + Component.translatable("gtceu.universal.tooltip.voltage_out", + FormattingUtil.formatNumbers(voltage), GTValues.VNF[tier])); tooltipComponents - .add(Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", energyCapacity)); + .add(Component.translatable("gtceu.universal.tooltip.energy_storage_capacity", + FormattingUtil.formatNumbers(energyCapacity))); if (recipeType.getMaxInputs(FluidRecipeCapability.CAP) > 0 || recipeType.getMaxOutputs(FluidRecipeCapability.CAP) > 0) tooltipComponents - .add(Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", tankCapacity)); + .add(Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", + FormattingUtil.formatNumbers(tankCapacity))); return tooltipComponents.toArray(Component[]::new); } @@ -2613,7 +2651,7 @@ public static void init() { .where('#', any()) .build()) .workableCasingRenderer(BedrockOreMinerMachine.getBaseTexture(tier), - GTCEu.id("block/multiblock/bedrock_ore_miner"), false) + GTCEu.id("block/multiblock/bedrock_ore_miner")) .register(), MV, HV, EV); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/machine/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/data/machine/GTResearchMachines.java index 0cfbbd74ae..a82e16f805 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/machine/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/data/machine/GTResearchMachines.java @@ -11,9 +11,9 @@ import com.gregtechceu.gtceu.api.multiblock.FactoryBlockPattern; import com.gregtechceu.gtceu.api.multiblock.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; -import com.gregtechceu.gtceu.client.TooltipHelper; import com.gregtechceu.gtceu.client.renderer.machine.HPCAPartRenderer; import com.gregtechceu.gtceu.client.renderer.machine.OverlayTieredActiveMachineRenderer; +import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.DataBankMachine; import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.HPCAMachine; import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.NetworkSwitchMachine; @@ -34,6 +34,7 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import org.jetbrains.annotations.NotNull; @@ -41,12 +42,14 @@ import java.util.ArrayList; import java.util.List; +import java.util.function.BiConsumer; import java.util.function.Function; import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.multiblock.Predicates.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; import static com.gregtechceu.gtceu.data.block.GTBlocks.*; +import static com.gregtechceu.gtceu.data.machine.GTMachines.createCreativeTooltips; @SuppressWarnings("unused") @net.minecraft.MethodsReturnNonnullByDefault @@ -82,29 +85,29 @@ public class GTResearchMachines { .where('H', abilities(PartAbility.OBJECT_HOLDER)) .build()) .shapeInfo(definition -> MultiblockShapeInfo.builder() - .aisle("XXX", "VVV", "POP", "PEP", "PMP", "VVV", "XXX") - .aisle("XXX", "VAV", "AAA", "AAA", "AAA", "VAV", "XXX") - .aisle("XXX", "VAV", "XAX", "XSX", "XAX", "VAV", "XXX") - .aisle("XXX", "XAX", "---", "---", "---", "XAX", "XXX") - .aisle("-X-", "XAX", "---", "---", "---", "XAX", "-X-") - .aisle("-X-", "XAX", "-A-", "-H-", "-A-", "XAX", "-X-") .aisle("---", "XXX", "---", "---", "---", "XXX", "---") - .where('S', GTResearchMachines.RESEARCH_STATION, Direction.SOUTH) + .aisle("-X-", "XAX", "-A-", "-H-", "-A-", "XAX", "-X-") + .aisle("-X-", "XAX", "---", "---", "---", "XAX", "-X-") + .aisle("XXX", "XAX", "---", "---", "---", "XAX", "XXX") + .aisle("XXX", "VAV", "XAX", "XSX", "XAX", "VAV", "XXX") + .aisle("XXX", "VAV", "AAA", "AAA", "AAA", "VAV", "XXX") + .aisle("XXX", "VVV", "POP", "PEP", "PMP", "VVV", "XXX") + .where('S', GTResearchMachines.RESEARCH_STATION, Direction.NORTH) .where('X', COMPUTER_CASING.get()) .where('-', Blocks.AIR) .where('V', COMPUTER_HEAT_VENT.get()) .where('A', ADVANCED_COMPUTER_CASING.get()) .where('P', COMPUTER_CASING.get()) - .where('O', GTResearchMachines.COMPUTATION_HATCH_RECEIVER, Direction.NORTH) - .where('E', GTMachines.ENERGY_INPUT_HATCH[GTValues.LuV], Direction.NORTH) + .where('O', GTResearchMachines.COMPUTATION_HATCH_RECEIVER, Direction.SOUTH) + .where('E', GTMachines.ENERGY_INPUT_HATCH[GTValues.LuV], Direction.SOUTH) .where('M', ConfigHolder.INSTANCE.machines.enableMaintenance ? GTMachines.MAINTENANCE_HATCH.getBlock().defaultBlockState().setValue( - GTMachines.MAINTENANCE_HATCH.get().getRotationState().property, Direction.NORTH) : + GTMachines.MAINTENANCE_HATCH.get().getRotationState().property, Direction.SOUTH) : COMPUTER_CASING.getDefaultState()) - .where('H', GTResearchMachines.OBJECT_HOLDER, Direction.NORTH) + .where('H', GTResearchMachines.OBJECT_HOLDER, Direction.SOUTH) .build()) .sidedWorkableCasingRenderer("block/casings/hpca/advanced_computer_casing", - GTCEu.id("block/multiblock/research_station"), false) + GTCEu.id("block/multiblock/research_station")) .register(); public static final MachineDefinition OBJECT_HOLDER = REGISTRATE.machine("object_holder", ObjectHolderMachine::new) @@ -148,7 +151,7 @@ public class GTResearchMachines { .setPreviewCount(1))) .build()) .workableCasingRenderer(GTCEu.id("block/casings/hpca/high_power_casing"), - GTCEu.id("block/multiblock/data_bank"), false) + GTCEu.id("block/multiblock/data_bank")) .register(); public static final MachineDefinition NETWORK_SWITCH = REGISTRATE @@ -175,19 +178,19 @@ public class GTResearchMachines { .or(abilities(PartAbility.COMPUTATION_DATA_TRANSMISSION).setMinGlobalLimited(1, 1))) .build()) .shapeInfo(definition -> MultiblockShapeInfo.builder() - .aisle("XEX", "XXX", "TTT") - .aisle("XXX", "XAX", "XXX") .aisle("XMX", "XSX", "XRX") - .where('S', GTResearchMachines.NETWORK_SWITCH, Direction.SOUTH) + .aisle("XXX", "XAX", "XXX") + .aisle("XEX", "XXX", "TTT") + .where('S', GTResearchMachines.NETWORK_SWITCH, Direction.NORTH) .where('X', COMPUTER_CASING) .where('A', ADVANCED_COMPUTER_CASING) - .where('R', GTResearchMachines.COMPUTATION_HATCH_RECEIVER, Direction.SOUTH) - .where('T', GTResearchMachines.COMPUTATION_HATCH_TRANSMITTER, Direction.NORTH) - .where('M', GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) - .where('E', GTMachines.ENERGY_INPUT_HATCH[LuV], Direction.SOUTH) + .where('R', GTResearchMachines.COMPUTATION_HATCH_RECEIVER, Direction.NORTH) + .where('T', GTResearchMachines.COMPUTATION_HATCH_TRANSMITTER, Direction.SOUTH) + .where('M', GTMachines.MAINTENANCE_HATCH, Direction.NORTH) + .where('E', GTMachines.ENERGY_INPUT_HATCH[LuV], Direction.NORTH) .build()) .sidedWorkableCasingRenderer("block/casings/hpca/computer_casing", - GTCEu.id("block/multiblock/network_switch"), false) + GTCEu.id("block/multiblock/network_switch")) .register(); public static final MachineDefinition HIGH_PERFORMANCE_COMPUTING_ARRAY = REGISTRATE @@ -217,22 +220,22 @@ public class GTResearchMachines { .shapeInfos(definition -> { List shapeInfo = new ArrayList<>(); MultiblockShapeInfo.ShapeInfoBuilder builder = MultiblockShapeInfo.builder() - .aisle("AA", "EC", "MC", "HC", "AA") - .aisle("VA", "6V", "3V", "0V", "VA") - .aisle("VA", "7V", "4V", "1V", "VA") - .aisle("VA", "8V", "5V", "2V", "VA") .aisle("SA", "CC", "CC", "OC", "AA") - .where('S', GTResearchMachines.HIGH_PERFORMANCE_COMPUTING_ARRAY, Direction.SOUTH) + .aisle("VA", "8V", "5V", "2V", "VA") + .aisle("VA", "7V", "4V", "1V", "VA") + .aisle("VA", "6V", "3V", "0V", "VA") + .aisle("AA", "EC", "MC", "HC", "AA") + .where('S', GTResearchMachines.HIGH_PERFORMANCE_COMPUTING_ARRAY, Direction.NORTH) .where('A', ADVANCED_COMPUTER_CASING) .where('V', COMPUTER_HEAT_VENT) .where('C', COMPUTER_CASING) - .where('E', GTMachines.ENERGY_INPUT_HATCH[GTValues.LuV], Direction.NORTH) - .where('H', GTMachines.FLUID_IMPORT_HATCH[GTValues.LV], Direction.NORTH) - .where('O', GTResearchMachines.COMPUTATION_HATCH_TRANSMITTER, Direction.SOUTH) + .where('E', GTMachines.ENERGY_INPUT_HATCH[GTValues.LuV], Direction.SOUTH) + .where('H', GTMachines.FLUID_IMPORT_HATCH[GTValues.LV], Direction.SOUTH) + .where('O', GTResearchMachines.COMPUTATION_HATCH_TRANSMITTER, Direction.NORTH) .where('M', ConfigHolder.INSTANCE.machines.enableMaintenance ? GTMachines.MAINTENANCE_HATCH.defaultBlockState().setValue( GTMachines.MAINTENANCE_HATCH.get().getRotationState().property, - Direction.NORTH) : + Direction.SOUTH) : COMPUTER_CASING.getDefaultState()); // a few example structures @@ -287,7 +290,7 @@ public class GTResearchMachines { return shapeInfo; }) .sidedWorkableCasingRenderer("block/casings/hpca/computer_casing", - GTCEu.id("block/multiblock/hpca"), false) + GTCEu.id("block/multiblock/hpca")) .register(); //////////////////////////////////////////// @@ -344,12 +347,8 @@ public class GTResearchMachines { .tier(MAX) .rotationState(RotationState.ALL) .abilities(PartAbility.DATA_ACCESS) - .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), - Component.translatable("gtceu.creative_tooltip.1") - .append(TooltipHelper.RAINBOW.toString()) - .append(Component.translatable("gtceu.creative_tooltip.2")) - .append(Component.translatable("gtceu.creative_tooltip.3")), - Component.translatable("gtceu.universal.enabled")) + .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0")) + .tooltipBuilder(createCreativeTooltips(true)) .overlayTieredHullRenderer("data_access_hatch_creative") .register(); @@ -357,6 +356,10 @@ public class GTResearchMachines { // *********** HPCA ***********// ////////////////////////////////////// + public static final BiConsumer> OVERHEAT_TOOLTIPS = (stack, components) -> components + .add(Component.translatable("gtceu.machine.hpca.component_type.damaged") + .withStyle(style -> style.withColor(TooltipHelper.BLINKING_ORANGE.getCurrent()))); + public static final MachineDefinition HPCA_EMPTY_COMPONENT = registerHPCAPart( "hpca_empty_component", "Empty HPCA Component", HPCAEmptyPartMachine::new, "empty", null, null, false).register(); @@ -367,9 +370,8 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_general.upkeep_eut", GTValues.VA[GTValues.EV]), Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.LuV]), Component.translatable("gtceu.machine.hpca.component_type.computation_cwut", 4), - Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 2), - Component.literal(TooltipHelper.BLINKING_ORANGE.toString()) - .append(Component.translatable("gtceu.machine.hpca.component_type.damaged"))) + Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 2)) + .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); public static final MachineDefinition HPCA_ADVANCED_COMPUTATION_COMPONENT = registerHPCAPart( "hpca_advanced_computation_component", "HPCA Advanced Computation Component", @@ -378,9 +380,8 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_general.upkeep_eut", GTValues.VA[GTValues.IV]), Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.ZPM]), Component.translatable("gtceu.machine.hpca.component_type.computation_cwut", 16), - Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 4), - Component.literal(TooltipHelper.BLINKING_ORANGE.toString()) - .append(Component.translatable("gtceu.machine.hpca.component_type.damaged"))) + Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 4)) + .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); public static final MachineDefinition HPCA_HEAT_SINK_COMPONENT = registerHPCAPart( "hpca_heat_sink_component", "HPCA Heat Sink Component", diff --git a/src/main/java/com/gregtechceu/gtceu/data/material/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/data/material/ElementMaterials.java index 440a86bcb9..9fda4b63a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/material/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/data/material/ElementMaterials.java @@ -73,7 +73,7 @@ public static void register() { .temperature(887)) .color(0x9c9c8d).secondaryColor(0x676756) .element(GTElements.As) - .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.ARSENICOSIS) + .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.ARSENICOSIS) .buildAndRegister(); Astatine = new Material.Builder(GTCEu.id("astatine")) @@ -98,7 +98,7 @@ public static void register() { .ore() .color(0x98d677).secondaryColor(0x254d40).iconSet(METALLIC) .appendFlags(STD_METAL) - .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.BERYLLIOSIS, false) + .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.BERYLLIOSIS, false) .element(GTElements.Be) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/material/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/data/material/FirstDegreeMaterials.java index 080bffd3fb..c806966051 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/material/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/data/material/FirstDegreeMaterials.java @@ -925,7 +925,7 @@ public static void register() { .dust(1) .color(0xff6000).secondaryColor(0xFF0000) .components(Potassium, 2, Chromium, 2, Oxygen, 7) - .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.POISON) + .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON) .buildAndRegister(); ChromiumTrioxide = new Material.Builder(GTCEu.id("chromium_trioxide")) diff --git a/src/main/java/com/gregtechceu/gtceu/data/material/OrganicChemistryMaterials.java b/src/main/java/com/gregtechceu/gtceu/data/material/OrganicChemistryMaterials.java index 8058c89a4b..518d502249 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/material/OrganicChemistryMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/data/material/OrganicChemistryMaterials.java @@ -23,6 +23,8 @@ public static void register() { SiliconeRubber = new Material.Builder(GTCEu.id("silicone_rubber")) .polymer() .liquid(new FluidBuilder().temperature(900)) + .toolStats( + ToolProperty.Builder.of(1.0F, 1.0F, 512, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) .color(0xF0F0F0).secondaryColor(0xE8E8E0) .flags(GENERATE_GEAR, GENERATE_RING, GENERATE_FOIL) .components(Carbon, 2, Hydrogen, 6, Oxygen, 1, Silicon, 1) @@ -53,6 +55,8 @@ public static void register() { StyreneButadieneRubber = new Material.Builder(GTCEu.id("styrene_butadiene_rubber")) .polymer() .liquid(new FluidBuilder().temperature(1000)) + .toolStats( + ToolProperty.Builder.of(1.0F, 1.0F, 512, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) .color(0x34312b).secondaryColor(0x110B09) .flags(GENERATE_FOIL, GENERATE_RING) .components(Carbon, 20, Hydrogen, 26) @@ -103,7 +107,8 @@ public static void register() { .color(0x464441).secondaryColor(0x382e1b) .flags(EXCLUDE_BLOCK_CRAFTING_RECIPES, GENERATE_FOIL) .toolStats( - ToolProperty.Builder.of(1.0F, 1.0F, 128, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) + ToolProperty.Builder.of(1.0F, 1.0F, 1024, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER) + .build()) .components(Carbon, 20, Hydrogen, 12, Nitrogen, 4) .fluidPipeProperties(1000, 350, true) .buildAndRegister(); @@ -121,7 +126,7 @@ public static void register() { .color(0xC8C8C8) .flags(GENERATE_FOIL) .toolStats( - ToolProperty.Builder.of(1.0F, 1.0F, 128, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) + ToolProperty.Builder.of(1.0F, 1.0F, 256, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) .components(Carbon, 2, Hydrogen, 4) .fluidPipeProperties(370, 60, true) .buildAndRegister(); @@ -148,7 +153,7 @@ public static void register() { .color(0xFFFFFF).secondaryColor(0x919187) .appendFlags(STD_METAL, GENERATE_FRAME, GENERATE_FOIL) .toolStats( - ToolProperty.Builder.of(1.0F, 1.0F, 128, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) + ToolProperty.Builder.of(1.0F, 1.0F, 512, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) .components(Carbon, 2, Fluorine, 4) .fluidPipeProperties(600, 100, true, true, false, false) .buildAndRegister(); @@ -405,6 +410,7 @@ public static void register() { Ethanol = new Material.Builder(GTCEu.id("ethanol")) .liquid(new FluidBuilder().customStill()) + .components(Carbon, 2, Hydrogen, 6, Oxygen, 1) .flags(DISABLE_DECOMPOSITION) // TODO ethanol intoxication .hazard(HazardProperty.HazardTrigger.INHALATION, .buildAndRegister(); @@ -502,7 +508,7 @@ public static void register() { .liquid(new FluidBuilder().temperature(400)) .color(0x353529).secondaryColor(0x080808) .toolStats( - ToolProperty.Builder.of(1.0F, 1.0F, 128, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) + ToolProperty.Builder.of(1.0F, 1.0F, 256, 1, GTToolType.SOFT_MALLET, GTToolType.PLUNGER).build()) .flags(GENERATE_GEAR, GENERATE_RING, GENERATE_FOIL, GENERATE_BOLT_SCREW) .components(Carbon, 5, Hydrogen, 8) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/medicalcondition/GTMedicalConditions.java b/src/main/java/com/gregtechceu/gtceu/data/medicalcondition/GTMedicalConditions.java index 6c6b92aa87..d7abc158d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/medicalcondition/GTMedicalConditions.java +++ b/src/main/java/com/gregtechceu/gtceu/data/medicalcondition/GTMedicalConditions.java @@ -50,7 +50,7 @@ public class GTMedicalConditions { // Material specific Conditions public static final MedicalCondition ASBESTOSIS = new MedicalCondition("asbestosis", 0xe3e3e3, 5000, - MedicalCondition.IdleProgressionType.UNTREATED_PROGRESSION, 1, true, + MedicalCondition.IdleProgressionType.HEAL, 1, true, new Symptom.ConfiguredSymptom(Symptom.HEALTH_DEBUFF, .6f), new Symptom.ConfiguredSymptom(Symptom.AIR_SUPPLY_DEBUFF, .3f), new Symptom.ConfiguredSymptom(Symptom.HUNGER, .2f), @@ -58,7 +58,7 @@ public class GTMedicalConditions { .setRecipeModifier(builder -> builder .outputItems(dust, Asbestos, 4)); public static final MedicalCondition ARSENICOSIS = new MedicalCondition("arsenicosis", 0xbd4b15, 1000, - MedicalCondition.IdleProgressionType.UNTREATED_PROGRESSION, 1, true, + MedicalCondition.IdleProgressionType.HEAL, 1, true, new Symptom.ConfiguredSymptom(Symptom.WITHER), new Symptom.ConfiguredSymptom(Symptom.HEALTH_DEBUFF, .6f), new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 2, .5f), @@ -68,13 +68,13 @@ public class GTMedicalConditions { .setRecipeModifier(builder -> builder .outputItems(dust, Arsenic, 4)); public static final MedicalCondition SILICOSIS = new MedicalCondition("silicosis", 0x5d6c91, 15000, - MedicalCondition.IdleProgressionType.UNTREATED_PROGRESSION, .5f, true, + MedicalCondition.IdleProgressionType.HEAL, .5f, true, new Symptom.ConfiguredSymptom(Symptom.HEALTH_DEBUFF, 4, .75f), new Symptom.ConfiguredSymptom(Symptom.AIR_SUPPLY_DEBUFF, .6f)) .setRecipeModifier(builder -> builder .outputItems(dust, SiliconDioxide, 4)); public static final MedicalCondition BERYLLIOSIS = new MedicalCondition("berylliosis", 0x0c6539, 10000, - MedicalCondition.IdleProgressionType.UNTREATED_PROGRESSION, .5f, true, + MedicalCondition.IdleProgressionType.HEAL, .5f, true, new Symptom.ConfiguredSymptom(Symptom.WITHER), new Symptom.ConfiguredSymptom(Symptom.RANDOM_DAMAGE, 1, .7f), new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 2, .5f), @@ -82,7 +82,7 @@ public class GTMedicalConditions { .setRecipeModifier(builder -> builder .outputItems(dust, Beryllium, 4)); public static final MedicalCondition METHANOL_POISONING = new MedicalCondition("methanol_poisoning", 0xaa8800, 500, - MedicalCondition.IdleProgressionType.UNTREATED_PROGRESSION, .5f, true, + MedicalCondition.IdleProgressionType.HEAL, .5f, true, new Symptom.ConfiguredSymptom(Symptom.POISONING), new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 1, .75f), new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 2, .5f), diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CraftingComponent.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CraftingComponent.java index 1267181693..9a48ffa938 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CraftingComponent.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CraftingComponent.java @@ -12,6 +12,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; +import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; import java.util.EnumMap; @@ -423,10 +424,10 @@ public static void initializeComponents() { */ GLASS = new Component(Stream.of(new Object[][] { - { GTValues.FALLBACK, CustomTags.GLASS_BLOCKS }, - { ULV, CustomTags.GLASS_BLOCKS }, - { LV, CustomTags.GLASS_BLOCKS }, - { MV, CustomTags.GLASS_BLOCKS }, + { GTValues.FALLBACK, Tags.Items.GLASS_BLOCKS }, + { ULV, Tags.Items.GLASS_BLOCKS }, + { LV, Tags.Items.GLASS_BLOCKS }, + { MV, Tags.Items.GLASS_BLOCKS }, { HV, GTBlocks.CASING_TEMPERED_GLASS.asStack() }, { EV, GTBlocks.CASING_TEMPERED_GLASS.asStack() }, { IV, GTBlocks.CASING_LAMINATED_GLASS.asStack() }, diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index 64738e8b17..227412f603 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -17,11 +17,6 @@ public class CustomTags { // Added Vanilla tags public static final TagKey TAG_PISTONS = TagUtil.createItemTag("pistons"); - public static final TagKey GLASS_BLOCKS = TagUtil.createItemTag("glass_blocks"); - public static final TagKey GLASS_PANES = TagUtil.createItemTag("glass_panes"); - public static final TagKey SEEDS = TagUtil.createItemTag("seeds"); - public static final TagKey CONCRETE_ITEM = TagUtil.createItemTag("concrete"); - public static final TagKey CONCRETE_POWDER_ITEM = TagUtil.createItemTag("concrete_powder"); // Added Gregtech tags public static final TagKey TRANSISTORS = TagUtil.createModItemTag("transistors"); @@ -59,10 +54,6 @@ public class CustomTags { public static final TagKey PPE_ARMOR = TagUtil.createModItemTag("ppe_armor"); - // Platform-dependent tags - public static final TagKey RUBBER_LOGS_ITEM = TagUtil.createModItemTag("logs/rubber"); - public static final TagKey WOODEN_CHESTS = TagUtil.createItemTag("chests/wooden"); - public static final TagKey NEEDS_WOOD_TOOL = Tags.Blocks.NEEDS_WOOD_TOOL; public static final TagKey NEEDS_GOLD_TOOL = Tags.Blocks.NEEDS_GOLD_TOOL; public static final TagKey NEEDS_NETHERITE_TOOL = Tags.Blocks.NEEDS_NETHERITE_TOOL; @@ -99,18 +90,10 @@ public class CustomTags { }; public static final TagKey ENDSTONE_ORE_REPLACEABLES = TagUtil.createBlockTag("end_stone_ore_replaceables"); - public static final TagKey CONCRETE_BLOCK = TagUtil.createBlockTag("concrete"); - public static final TagKey CONCRETE_POWDER_BLOCK = TagUtil.createBlockTag("concrete_powder"); - public static final TagKey GLASS_BLOCKS_BLOCK = TagUtil.createBlockTag("glass_blocks"); - public static final TagKey GLASS_PANES_BLOCK = TagUtil.createBlockTag("glass_panes"); + public static final TagKey CONCRETE_POWDER_BLOCK = TagUtil.createBlockTag("concrete_powders"); public static final TagKey CREATE_SEATS = TagUtil.optionalTag(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(GTValues.MODID_CREATE, "seats")); - public static final TagKey ORE_BLOCKS = TagUtil.createBlockTag("ores"); - - public static final TagKey RUBBER_LOGS_BLOCK = TagUtil.createModBlockTag("logs/rubber"); - public static final TagKey IS_SWAMP = TagUtil.createTag(Registries.BIOME, "is_swamp", false); - public static final TagKey IS_SANDY = TagUtil.createModTag(Registries.BIOME, "is_sandy"); public static final TagKey HAS_RUBBER_TREE = TagUtil.createModTag(Registries.BIOME, "has_rubber_tree"); public static final TagKey> HEAT_IMMUNE = TagUtil.createModTag(Registries.ENTITY_TYPE, "heat_immune"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeModifiers.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeModifiers.java index e9f777c086..e0919a5e55 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeModifiers.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeModifiers.java @@ -7,8 +7,10 @@ import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; +import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; @@ -27,6 +29,7 @@ import net.minecraft.world.level.Level; import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.longs.LongIntPair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -51,6 +54,10 @@ public class GTRecipeModifiers { .memoize(ElectricOverclockModifier::new); public static final RecipeModifier PARALLEL_HATCH = (machine, recipe) -> GTRecipeModifiers .hatchParallel(machine, recipe, false).getFirst(); + + public static final RecipeModifier SUBTICK_PARALLEL = (machine, recipe) -> GTRecipeModifiers + .subtickParallel(machine, recipe, false); + public static final BiFunction ENVIRONMENT_REQUIREMENT = Util .memoize((condition, maxAllowedStrength) -> (machine, recipe) -> { if (!ConfigHolder.INSTANCE.gameplay.environmentalHazards) return recipe; @@ -69,7 +76,11 @@ public class GTRecipeModifiers { return null; } recipe = recipe.copy(); - recipe.duration *= Math.max(1, (int) (maxAllowedStrength / Math.max(strength, 1))); + int originalDuration = recipe.duration; + recipe.duration *= (1 + (int) (strength * 5 / maxAllowedStrength)); + if (recipe.duration > 5 * originalDuration) { + return null; + } return recipe; }); public static final RecipeModifier DEFAULT_ENVIRONMENT_REQUIREMENT = ENVIRONMENT_REQUIREMENT @@ -89,8 +100,15 @@ public ElectricOverclockModifier(OverclockingLogic overclockingLogic) { @Override public GTRecipe apply(MetaMachine machine, @NotNull GTRecipe recipe) { if (machine instanceof IOverclockMachine overclockMachine) { + if (RecipeHelper.getRecipeEUtTier(recipe) / recipe.parallels > overclockMachine.getMaxOverclockTier()) { + return null; + } return RecipeHelper.applyOverclock(overclockingLogic, recipe, overclockMachine.getOverclockVoltage()); } + if (machine instanceof ITieredMachine tieredMachine && + RecipeHelper.getRecipeEUtTier(recipe) > tieredMachine.getTier()) { + return null; + } return recipe; } } @@ -228,4 +246,28 @@ public static GTRecipe multiSmelterParallel(MetaMachine machine, @NotNull GTReci } return null; } + + public static GTRecipe subtickParallel(MetaMachine machine, @NotNull GTRecipe recipe, boolean modifyDuration) { + if (machine instanceof WorkableElectricMultiblockMachine electricMachine) { + final Pair[] result = new Pair[] { null }; + RecipeHelper.applyOverclock( + new OverclockingLogic((recipe1, recipeEUt, maxVoltage, duration, amountOC) -> { + var parallel = OverclockingLogic.standardOverclockingLogicWithSubTickParallelCount( + Math.abs(recipeEUt), + maxVoltage, + duration, + amountOC, + OverclockingLogic.STANDARD_OVERCLOCK_DURATION_DIVISOR, + OverclockingLogic.STANDARD_OVERCLOCK_VOLTAGE_MULTIPLIER); + + result[0] = GTRecipeModifiers.accurateParallel(machine, recipe, parallel.getRight(), + modifyDuration); + return LongIntPair.of(parallel.getLeft(), parallel.getMiddle()); + }), recipe, electricMachine.getOverclockVoltage()); + if (result[0] != null) { + return result[0].getFirst(); + } + } + return recipe; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeTypes.java index d3c7bd8700..74932f405c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipeTypes.java @@ -14,6 +14,8 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.sound.ExistingSoundEntry; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.common.machine.trait.customlogic.CannerLogic; +import com.gregtechceu.gtceu.common.machine.trait.customlogic.FormingPressLogic; import com.gregtechceu.gtceu.common.recipe.RPMCondition; import com.gregtechceu.gtceu.common.recipe.RockBreakerCondition; import com.gregtechceu.gtceu.data.machine.GTMachines; @@ -159,6 +161,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, true, GuiTextures.DARK_CANISTER_OVERLAY) .setSlotOverlay(true, true, GuiTextures.DARK_CANISTER_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_CANNER, LEFT_TO_RIGHT) + .addCustomRecipeLogic(new CannerLogic()) .setSound(GTSoundEntries.BATH); public final static GTRecipeType CENTRIFUGE_RECIPES = register("centrifuge", ELECTRIC).setMaxIOSize(2, 6, 1, 6) @@ -310,6 +313,7 @@ public class GTRecipeTypes { public final static GTRecipeType FORMING_PRESS_RECIPES = register("forming_press", ELECTRIC) .setMaxIOSize(6, 1, 0, 0).setEUIO(IO.IN) .setProgressBar(GuiTextures.PROGRESS_BAR_COMPRESS, LEFT_TO_RIGHT) + .addCustomRecipeLogic(new FormingPressLogic()) .setSound(GTSoundEntries.COMPRESSOR); public final static GTRecipeType LATHE_RECIPES = register("lathe", ELECTRIC).setMaxIOSize(1, 2, 0, 0).setEUIO(IO.IN) @@ -415,6 +419,7 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) .setSlotOverlay(false, false, GuiTextures.SCANNER_OVERLAY) .setSlotOverlay(true, false, GuiTextures.RESEARCH_STATION_OVERLAY) + .addCustomRecipeLogic(new ResearchManager.DataStickCopyScannerLogic()) .setScanner(true) .setMaxTooltips(4) .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); @@ -453,6 +458,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.DATA_ORB_OVERLAY) .setSlotOverlay(false, false, true, GuiTextures.SCANNER_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) + .addCustomRecipeLogic(new ResearchManager.DataStickCopyScannerLogic()) .setScanner(true) .setSound(GTSoundEntries.ELECTROLYZER); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipes.java index eb2f7896f8..616081ede6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTRecipes.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.data.recipe.generated.*; import com.gregtechceu.gtceu.data.recipe.misc.*; import com.gregtechceu.gtceu.data.recipe.serialized.chemistry.ChemistryRecipes; -import com.gregtechceu.gtceu.utils.ResearchManager; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; @@ -26,8 +25,6 @@ public class GTRecipes { * to respond to a config option in ConfigHolder. */ public static void recipeAddition(final RecipeOutput consumer) { - ResearchManager.registerScannerLogic(); - // Decomposition info loading MaterialInfoLoader.init(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java index a03c0fb5e2..b413966e15 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.data.item.GTItems; import com.gregtechceu.gtceu.data.machine.GTMachines; import com.gregtechceu.gtceu.data.material.GTMaterials; -import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.GTRecipeTypes; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; @@ -66,10 +65,10 @@ private static void steelSteamMultiblocks(RecipeOutput provider) { GTMachines.STEEL_DRUM.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_input_bus", GTMachines.STEAM_IMPORT_BUS.asStack(), "C", "H", 'H', GTBlocks.STEEL_HULL.asStack(), 'C', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_output_bus", GTMachines.STEAM_EXPORT_BUS.asStack(), "H", "C", 'H', GTBlocks.STEEL_HULL.asStack(), 'C', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); } else { VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven", GTMachines.STEAM_OVEN.asStack(), "CGC", "FMF", "CGC", 'F', GTBlocks.FIREBOX_BRONZE.asStack(), 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack(), @@ -84,10 +83,10 @@ private static void steelSteamMultiblocks(RecipeOutput provider) { GTMachines.BRONZE_DRUM.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_input_bus", GTMachines.STEAM_IMPORT_BUS.asStack(), "C", "H", 'H', GTBlocks.BRONZE_HULL.asStack(), 'C', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_output_bus", GTMachines.STEAM_EXPORT_BUS.asStack(), "H", "C", 'H', GTBlocks.BRONZE_HULL.asStack(), 'C', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); } } @@ -153,7 +152,7 @@ private static void hardIronRecipes(RecipeOutput provider) { VanillaRecipeHelper.addShapedRecipe(provider, "hopper", new ItemStack(Blocks.HOPPER), "XCX", "XGX", "wXh", 'X', new UnificationEntry(TagPrefix.plate, GTMaterials.Iron), - 'C', CustomTags.WOODEN_CHESTS, + 'C', Tags.Items.CHESTS_WOODEN, 'G', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Iron)); VanillaRecipeHelper.addShapedRecipe(provider, "iron_bars", new ItemStack(Blocks.IRON_BARS, 8), " h ", "XXX", @@ -938,7 +937,7 @@ private static void hardMiscRecipes(RecipeOutput provider) { 'C', ItemTags.WOOL_CARPETS); VanillaRecipeHelper.addShapedRecipe(provider, "chest_minecart", new ItemStack(Items.CHEST_MINECART), "hIw", - " M ", " d ", 'I', CustomTags.WOODEN_CHESTS, 'M', new ItemStack(Items.MINECART)); + " M ", " d ", 'I', Tags.Items.CHESTS_WOODEN, 'M', new ItemStack(Items.MINECART)); VanillaRecipeHelper.addShapedRecipe(provider, "furnace_minecart", new ItemStack(Items.FURNACE_MINECART), "hIw", " M ", " d ", 'I', new ItemStack(Blocks.FURNACE), 'M', new ItemStack(Items.MINECART)); VanillaRecipeHelper.addShapedRecipe(provider, "tnt_minecart", new ItemStack(Items.TNT_MINECART), "hIw", @@ -969,7 +968,7 @@ private static void hardMiscRecipes(RecipeOutput provider) { 'C', new ItemStack(Blocks.CHEST)); ASSEMBLER_RECIPES.recipeBuilder("ender_chest") - .inputItems(CustomTags.WOODEN_CHESTS) + .inputItems(Tags.Items.CHESTS_WOODEN) .inputItems(TagPrefix.plateDense, GTMaterials.Obsidian, 6) .inputItems(TagPrefix.plate, GTMaterials.EnderEye) .outputItems(Blocks.ENDER_CHEST.asItem()) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java index ea46ef7f50..42eb04fc32 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java @@ -14,6 +14,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; +import net.neoforged.neoforge.common.Tags; import static com.gregtechceu.gtceu.api.tag.TagPrefix.*; import static com.gregtechceu.gtceu.data.item.GTItems.*; @@ -127,7 +128,7 @@ public static void init(RecipeOutput provider) { 'W', SILICON_WAFER.asStack(), 'G', new ItemStack(Blocks.GLASS_PANE), 'C', CustomTags.LV_CIRCUITS, 'P', CARBON_FIBER_PLATE.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, "solar_panel_ulv", COVER_SOLAR_PANEL_ULV.asStack(), "WGW", "CAC", - "P P", 'W', PHOSPHORUS_WAFER.asStack(), 'G', CustomTags.GLASS_PANES, 'C', CustomTags.HV_CIRCUITS, 'P', + "P P", 'W', PHOSPHORUS_WAFER.asStack(), 'G', Tags.Items.GLASS_PANES, 'C', CustomTags.HV_CIRCUITS, 'P', ChemicalHelper.get(plate, GalliumArsenide), 'A', ChemicalHelper.get(wireGtQuadruple, Graphene)); VanillaRecipeHelper.addShapedRecipe(provider, "solar_panel_lv", COVER_SOLAR_PANEL_LV.asStack(), "WGW", "CAC", "P P", 'W', NAQUADAH_WAFER.asStack(), 'G', GTBlocks.CASING_TEMPERED_GLASS.asStack(), 'C', 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 197c8f0c10..b9cbea1502 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 @@ -10,12 +10,14 @@ import com.gregtechceu.gtceu.api.material.material.Material; import com.gregtechceu.gtceu.api.material.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.material.material.stack.MaterialStack; +import com.gregtechceu.gtceu.common.block.LampBlock; import com.gregtechceu.gtceu.common.block.StoneBlockType; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.block.GTBlocks; import com.gregtechceu.gtceu.data.item.GTItems; import com.gregtechceu.gtceu.data.machine.GTAEMachines; import com.gregtechceu.gtceu.data.machine.GTMachines; +import com.gregtechceu.gtceu.data.material.GTMaterials; import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; @@ -23,10 +25,12 @@ import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; +import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.fluids.FluidStack; import com.tterrag.registrate.util.entry.ItemEntry; @@ -426,9 +430,11 @@ private static void registerAlloyRecipes(RecipeOutput provider) { ALLOY_SMELTER_RECIPES.recipeBuilder("rubber_bar").duration(100).EUt(VA[ULV]).inputItems(dust, Sulfur) .inputItems(dust, RawRubber, 3).outputItems(ingot, Rubber).save(provider); - // todo tag stuff - // ALLOY_SMELTER_RECIPES.recipeBuilder("coke_oven_brick").duration(150).EUt(VA[ULV]).inputItems(OreDictUnifier.get("sand")).inputItems(new - // ItemStack(Items.CLAY_BALL)).outputItems(COKE_OVEN_BRICK, 2).save(provider); + ALLOY_SMELTER_RECIPES.recipeBuilder("coke_oven_brick").duration(150).EUt(VA[ULV]) + .inputItems(Tags.Items.SANDS) + .inputItems(new ItemStack(Items.CLAY_BALL)) + .outputItems(COKE_OVEN_BRICK, 2) + .save(provider); } private static void registerAssemblerRecipes(RecipeOutput provider) { @@ -439,6 +445,30 @@ private static void registerAssemblerRecipes(RecipeOutput provider) { .outputItems(SPRAY_CAN_DYES[i]) .EUt(VA[ULV]).duration(200) .save(provider); + + DyeColor color = DyeColor.byId(i); + + LampBlock lamp = GTBlocks.LAMPS.get(color).get(); + for (int lampMeta = 0; lampMeta < 8; lampMeta++) { + ASSEMBLER_RECIPES.recipeBuilder("lamp_" + color + "_" + lampMeta) + .inputItems(plate, Glass, 6) + .inputItems(dust, Glowstone, 1) + .inputFluids(GTMaterials.CHEMICAL_DYES[i].getFluid(GTValues.L)) + .outputItems(lamp.getStackFromIndex(lampMeta)) + .circuitMeta(lampMeta + 1).EUt(VA[ULV]).duration(40) + .save(provider); + } + lamp = GTBlocks.BORDERLESS_LAMPS.get(color).get(); + for (int lampMeta = 0; lampMeta < 8; lampMeta++) { + ASSEMBLER_RECIPES.recipeBuilder("borderless_lamp_" + color + "_" + lampMeta) + .inputItems(plate, Glass, 6) + .inputItems(dust, Glowstone, 1) + .inputFluids(GTMaterials.CHEMICAL_DYES[i].getFluid(GTValues.L)) + .outputItems(lamp.getStackFromIndex(lampMeta)) + .circuitMeta(lampMeta + 9).EUt(VA[ULV]).duration(40) + .save(provider); + } + } CANNER_RECIPES.recipeBuilder("spray_can_solvent") @@ -805,9 +835,9 @@ private static void registerAssemblerRecipes(RecipeOutput provider) { .inputItems(GTBlocks.MACHINE_CASING_UHV.asStack()).inputItems(cableGtSingle, Europium, 2) .inputFluids(Polybenzimidazole.getFluid(L * 2)).outputItems(GTMachines.HULL[9]).save(provider); - ASSEMBLER_RECIPES.recipeBuilder("hopper_iron").EUt(2).inputItems(CustomTags.WOODEN_CHESTS) + ASSEMBLER_RECIPES.recipeBuilder("hopper_iron").EUt(2).inputItems(Tags.Items.CHESTS_WOODEN) .inputItems(plate, Iron, 5).outputItems(new ItemStack(Blocks.HOPPER)).duration(800).save(provider); - ASSEMBLER_RECIPES.recipeBuilder("hopper_wrought_iron").EUt(2).inputItems(CustomTags.WOODEN_CHESTS) + ASSEMBLER_RECIPES.recipeBuilder("hopper_wrought_iron").EUt(2).inputItems(Tags.Items.CHESTS_WOODEN) .inputItems(plate, WroughtIron, 5).outputItems(new ItemStack(Blocks.HOPPER)).duration(800) .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 fbf636706e..130b3ac1aa 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 @@ -414,7 +414,7 @@ public static void init(RecipeOutput provider) { VanillaRecipeHelper.addShapedRecipe(provider, true, "passthrough_hatch_item", GTMachines.ITEM_PASSTHROUGH_HATCH[HV].asStack(), " C ", "GHG", " S ", 'C', GTItems.CONVEYOR_MODULE_HV.asStack(), 'G', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Steel), - 'H', GTMachines.HULL[HV].asStack(), 'S', CustomTags.WOODEN_CHESTS); + 'H', GTMachines.HULL[HV].asStack(), 'S', Tags.Items.CHESTS_WOODEN); VanillaRecipeHelper.addShapedRecipe(provider, true, "passthrough_hatch_fluid", GTMachines.FLUID_PASSTHROUGH_HATCH[HV].asStack(), " C ", "GHG", " S ", 'C', GTItems.ELECTRIC_PUMP_HV.asStack(), 'G', @@ -770,7 +770,7 @@ public static void init(RecipeOutput provider) { registerMachineRecipe(provider, GTMachines.CHEMICAL_REACTOR, "GRG", "WEW", "CMC", 'M', HULL, 'R', ROTOR, 'E', MOTOR, 'C', CIRCUIT, 'W', CABLE, 'G', PIPE_REACTOR); registerMachineRecipe(provider, GTMachines.PACKER, "BCB", "RMV", "WCW", 'M', HULL, 'R', ROBOT_ARM, 'V', - CONVEYOR, 'C', CIRCUIT, 'W', CABLE, 'B', CustomTags.WOODEN_CHESTS); + CONVEYOR, 'C', CIRCUIT, 'W', CABLE, 'B', Tags.Items.CHESTS_WOODEN); registerMachineRecipe(provider, GTMachines.BREWERY, "GPG", "WMW", "CBC", 'M', HULL, 'P', PUMP, 'B', STICK_DISTILLATION, 'C', CIRCUIT, 'W', CABLE, 'G', GLASS); registerMachineRecipe(provider, GTMachines.FERMENTER, "WPW", "GMG", "WCW", 'M', HULL, 'P', PUMP, 'C', CIRCUIT, @@ -778,7 +778,7 @@ public static void init(RecipeOutput provider) { registerMachineRecipe(provider, GTMachines.DISTILLERY, "GBG", "CMC", "WPW", 'M', HULL, 'P', PUMP, 'B', STICK_DISTILLATION, 'C', CIRCUIT, 'W', CABLE, 'G', GLASS); registerMachineRecipe(provider, GTMachines.FLUID_SOLIDIFIER, "PGP", "WMW", "CBC", 'M', HULL, 'P', PUMP, 'C', - CIRCUIT, 'W', CABLE, 'G', GLASS, 'B', CustomTags.WOODEN_CHESTS); + CIRCUIT, 'W', CABLE, 'G', GLASS, 'B', Tags.Items.CHESTS_WOODEN); registerMachineRecipe(provider, GTMachines.CHEMICAL_BATH, "VGW", "PGV", "CMC", 'M', HULL, 'P', PUMP, 'V', CONVEYOR, 'C', CIRCUIT, 'W', CABLE, 'G', GLASS); registerMachineRecipe(provider, GTMachines.POLARIZER, "ZSZ", "WMW", "ZSZ", 'M', HULL, 'S', @@ -828,7 +828,7 @@ public static void init(RecipeOutput provider) { registerMachineRecipe(provider, GTMachines.WORLD_ACCELERATOR, "FSF", "EHE", "FSF", 'F', FIELD_GENERATOR, 'S', SENSOR, 'E', EMITTER, 'H', HULL); registerMachineRecipe(provider, GTMachines.BLOCK_BREAKER, "MGM", "CHC", "WSW", 'M', MOTOR, 'H', HULL, 'C', - CIRCUIT, 'W', CABLE, 'S', CustomTags.WOODEN_CHESTS, 'G', GRINDER); + CIRCUIT, 'W', CABLE, 'S', Tags.Items.CHESTS_WOODEN, 'G', GRINDER); registerMachineRecipe(provider, GTMachines.MINER, "MMM", "WHW", "CSC", 'M', MOTOR, 'W', CABLE, 'H', HULL, 'C', CIRCUIT, 'S', SENSOR); @@ -864,21 +864,21 @@ public static void init(RecipeOutput provider) { "WCC", "TH ", "WCC", 'W', POWER_COMPONENT, 'C', CABLE_HEX, 'T', CABLE_TIER_UP_HEX, 'H', HULL); registerMachineRecipe(provider, GTMachines.BATTERY_BUFFER_4, "WTW", "WMW", 'M', HULL, 'W', WIRE_QUAD, 'T', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); registerMachineRecipe(provider, GTMachines.BATTERY_BUFFER_8, "WTW", "WMW", 'M', HULL, 'W', WIRE_OCT, 'T', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); registerMachineRecipe(provider, GTMachines.BATTERY_BUFFER_16, "WTW", "WMW", 'M', HULL, 'W', WIRE_HEX, 'T', - CustomTags.WOODEN_CHESTS);; + Tags.Items.CHESTS_WOODEN);; registerMachineRecipe(provider, GTMachines.CHARGER_4, "WTW", "WMW", "BCB", 'M', HULL, 'W', WIRE_QUAD, 'T', - CustomTags.WOODEN_CHESTS, 'B', CABLE, 'C', CIRCUIT); + Tags.Items.CHESTS_WOODEN, 'B', CABLE, 'C', CIRCUIT); registerMachineRecipe(provider, GTMachines.FLUID_IMPORT_HATCH, " G", " M", 'M', HULL, 'G', GLASS); registerMachineRecipe(provider, GTMachines.FLUID_EXPORT_HATCH, " M", " G", 'M', HULL, 'G', GLASS); registerMachineRecipe(provider, GTMachines.ITEM_IMPORT_BUS, " C", " M", 'M', HULL, 'C', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); registerMachineRecipe(provider, GTMachines.ITEM_EXPORT_BUS, " M", " C", 'M', HULL, 'C', - CustomTags.WOODEN_CHESTS); + Tags.Items.CHESTS_WOODEN); VanillaRecipeHelper.addShapedRecipe(provider, true, "wooden_crate", GTMachines.WOODEN_CRATE.asStack(), "RPR", "PsP", "RPR", 'P', ItemTags.PLANKS, 'R', new UnificationEntry(TagPrefix.screw, GTMaterials.Iron)); 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 5bd43aa867..f1eec4b51f 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 @@ -13,6 +13,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; +import net.neoforged.neoforge.common.Tags; import com.tterrag.registrate.util.entry.ItemEntry; @@ -27,7 +28,7 @@ public class MiscRecipeLoader { public static void init(RecipeOutput provider) { // Basic Terminal Recipe VanillaRecipeHelper.addShapedRecipe(provider, true, "basic_terminal", TERMINAL.asStack(), - "SGS", "PBP", "PWP", 'S', new UnificationEntry(screw, WroughtIron), 'G', CustomTags.GLASS_PANES, 'B', + "SGS", "PBP", "PWP", 'S', new UnificationEntry(screw, WroughtIron), 'G', Tags.Items.GLASS_PANES, 'B', new ItemStack(Items.BOOK), 'P', new UnificationEntry(plate, WroughtIron), 'W', new UnificationEntry(wireGtSingle, RedAlloy)); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java index cd1ecbdce5..c5abad33ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.tag.TagPrefix; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.material.GTMaterials; -import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; import net.minecraft.core.registries.BuiltInRegistries; @@ -551,7 +550,7 @@ private static void woodRecipes(RecipeOutput provider) { .inputItems(new ItemStack(Items.STICK, 7)).outputItems(new ItemStack(Blocks.LADDER, 2)).save(provider); ASSEMBLER_RECIPES.recipeBuilder("chest_minecart").EUt(4).duration(100).inputItems(new ItemStack(Items.MINECART)) - .inputItems(CustomTags.WOODEN_CHESTS).outputItems(new ItemStack(Items.CHEST_MINECART)).save(provider); + .inputItems(Tags.Items.CHESTS_WOODEN).outputItems(new ItemStack(Items.CHEST_MINECART)).save(provider); ASSEMBLER_RECIPES.recipeBuilder("furnace_minecart").EUt(4).duration(100) .inputItems(new ItemStack(Items.MINECART)).inputItems(new ItemStack(Blocks.FURNACE)) .outputItems(new ItemStack(Items.FURNACE_MINECART)).save(provider); @@ -599,7 +598,7 @@ private static void dyingCleaningRecipes(RecipeOutput provider) { if (color != DyeColor.WHITE) { CHEMICAL_BATH_RECIPES.recipeBuilder("dye_concrete_to_" + dyeName).duration(20).EUt(VA[ULV]) - .inputItems(CustomTags.CONCRETE_ITEM) + .inputItems(Tags.Items.CONCRETES) .inputFluids(CHEMICAL_DYES[color.ordinal()].getFluid(L / 8)) .outputItems( new ItemStack(BuiltInRegistries.ITEM @@ -693,7 +692,7 @@ private static void dyingCleaningRecipes(RecipeOutput provider) { .duration(400).EUt(2).save(provider); CHEMICAL_BATH_RECIPES.recipeBuilder("decolor_concrete") - .inputItems(CustomTags.CONCRETE_ITEM) + .inputItems(Tags.Items.CONCRETES) .inputFluids(Chlorine.getFluid(20)) .outputItems(Items.WHITE_CONCRETE) .duration(400).EUt(2).save(provider); @@ -975,7 +974,7 @@ private static void miscRecipes(RecipeOutput provider) { .outputItems(new ItemStack(Blocks.END_ROD, 4)).save(provider); ASSEMBLER_RECIPES.recipeBuilder("purple_shulker_box").duration(100).EUt(VA[ULV]) - .inputItems(CustomTags.WOODEN_CHESTS).inputItems(new ItemStack(Items.SHULKER_SHELL, 2)) + .inputItems(Tags.Items.CHESTS_WOODEN).inputItems(new ItemStack(Items.SHULKER_SHELL, 2)) .outputItems(new ItemStack(Blocks.PURPLE_SHULKER_BOX)).save(provider); ASSEMBLER_RECIPES.recipeBuilder("painting").duration(100).EUt(4).circuitMeta(1).inputItems(ItemTags.WOOL) 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 5f7b491740..5fce08098a 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 @@ -1,12 +1,12 @@ package com.gregtechceu.gtceu.data.recipe.serialized.chemistry; import com.gregtechceu.gtceu.data.block.GTBlocks; -import com.gregtechceu.gtceu.data.recipe.CustomTags; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; +import net.neoforged.neoforge.common.Tags; import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.tag.TagPrefix.*; @@ -479,7 +479,7 @@ public static void init(RecipeOutput provider) { EXTRACTOR_RECIPES.recipeBuilder("seed_oil_from_tag_seeds") .duration(32).EUt(2) - .inputItems(CustomTags.SEEDS) + .inputItems(Tags.Items.SEEDS) .outputFluids(SeedOil.getFluid(10)) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/tag/BiomeTagsLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tag/BiomeTagsLoader.java index d7ccacc3a5..9125fa517f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tag/BiomeTagsLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tag/BiomeTagsLoader.java @@ -24,10 +24,7 @@ public BiomeTagsLoader(PackOutput arg, CompletableFuture @Override protected void addTags(HolderLookup.Provider provider) { - tag(CustomTags.IS_SWAMP).add(Biomes.SWAMP).add(Biomes.MANGROVE_SWAMP); - tag(CustomTags.HAS_RUBBER_TREE).addTag(CustomTags.IS_SWAMP).addTag(BiomeTags.IS_FOREST) + tag(CustomTags.HAS_RUBBER_TREE).addTag(Tags.Biomes.IS_SWAMP).addTag(BiomeTags.IS_FOREST) .addTag(BiomeTags.IS_JUNGLE); - tag(CustomTags.IS_SANDY).addTag(Tags.Biomes.IS_SANDY).add(Biomes.DESERT).add(Biomes.BEACH).add(Biomes.BADLANDS) - .add(Biomes.WOODED_BADLANDS); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tag/BlockTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tag/BlockTagLoader.java index 4b6bfe6d57..af68515728 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tag/BlockTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tag/BlockTagLoader.java @@ -19,11 +19,6 @@ public class BlockTagLoader { public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.CONCRETE_BLOCK, Blocks.WHITE_CONCRETE, Blocks.ORANGE_CONCRETE, - Blocks.MAGENTA_CONCRETE, Blocks.LIGHT_BLUE_CONCRETE, Blocks.YELLOW_CONCRETE, Blocks.LIME_CONCRETE, - Blocks.PINK_CONCRETE, Blocks.GRAY_CONCRETE, Blocks.LIGHT_GRAY_CONCRETE, Blocks.CYAN_CONCRETE, - Blocks.PURPLE_CONCRETE, Blocks.BLUE_CONCRETE, Blocks.BROWN_CONCRETE, Blocks.GREEN_CONCRETE, - Blocks.RED_CONCRETE, Blocks.BLACK_CONCRETE); create(provider, CustomTags.CONCRETE_POWDER_BLOCK, Blocks.WHITE_CONCRETE_POWDER, Blocks.ORANGE_CONCRETE_POWDER, Blocks.MAGENTA_CONCRETE_POWDER, Blocks.LIGHT_BLUE_CONCRETE_POWDER, Blocks.YELLOW_CONCRETE_POWDER, Blocks.LIME_CONCRETE_POWDER, Blocks.PINK_CONCRETE_POWDER, Blocks.GRAY_CONCRETE_POWDER, diff --git a/src/main/java/com/gregtechceu/gtceu/data/tag/GTDataComponents.java b/src/main/java/com/gregtechceu/gtceu/data/tag/GTDataComponents.java index 3ebce24ce6..a38fa7825f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tag/GTDataComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tag/GTDataComponents.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.cover.filter.SimpleItemFilter; import com.gregtechceu.gtceu.api.cover.filter.TagFluidFilter; import com.gregtechceu.gtceu.api.cover.filter.TagItemFilter; +import com.gregtechceu.gtceu.api.item.LampBlockItem; import com.gregtechceu.gtceu.api.item.component.IMaterialPartItem; import com.gregtechceu.gtceu.api.item.datacomponents.*; import com.gregtechceu.gtceu.utils.ResearchManager; @@ -88,4 +89,7 @@ public class GTDataComponents { public static final DeferredHolder, DataComponentType> FACADE = DATA_COMPONENTS .registerComponentType("facade", builder -> builder.persistent(FacadeWrapper.CODEC).networkSynchronized(FacadeWrapper.STREAM_CODEC)); + public static final DeferredHolder, DataComponentType> LAMP_DATA = DATA_COMPONENTS + .registerComponentType("lamp", + builder -> builder.persistent(LampBlockItem.LampData.CODEC)); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tag/ItemTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tag/ItemTagLoader.java index 198e733546..ad2fa4bf80 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tag/ItemTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tag/ItemTagLoader.java @@ -24,17 +24,6 @@ public class ItemTagLoader { public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.CONCRETE_ITEM, Items.WHITE_CONCRETE, Items.ORANGE_CONCRETE, Items.MAGENTA_CONCRETE, - Items.LIGHT_BLUE_CONCRETE, Items.YELLOW_CONCRETE, Items.LIME_CONCRETE, Items.PINK_CONCRETE, - Items.GRAY_CONCRETE, Items.LIGHT_GRAY_CONCRETE, Items.CYAN_CONCRETE, Items.PURPLE_CONCRETE, - Items.BLUE_CONCRETE, Items.BROWN_CONCRETE, Items.GREEN_CONCRETE, Items.RED_CONCRETE, - Items.BLACK_CONCRETE); - create(provider, CustomTags.CONCRETE_POWDER_ITEM, Items.WHITE_CONCRETE_POWDER, Items.ORANGE_CONCRETE_POWDER, - Items.MAGENTA_CONCRETE_POWDER, Items.LIGHT_BLUE_CONCRETE_POWDER, Items.YELLOW_CONCRETE_POWDER, - Items.LIME_CONCRETE_POWDER, Items.PINK_CONCRETE_POWDER, Items.GRAY_CONCRETE_POWDER, - Items.LIGHT_GRAY_CONCRETE_POWDER, Items.CYAN_CONCRETE_POWDER, Items.PURPLE_CONCRETE_POWDER, - Items.BLUE_CONCRETE_POWDER, Items.BROWN_CONCRETE_POWDER, Items.GREEN_CONCRETE_POWDER, - Items.RED_CONCRETE_POWDER, Items.BLACK_CONCRETE_POWDER); create(provider, lens, Color.White, GTItems.MATERIAL_ITEMS.get(lens, Glass).getId(), GTItems.MATERIAL_ITEMS.get(lens, NetherStar).getId()); create(provider, lens, Color.LightBlue, GTItems.MATERIAL_ITEMS.get(lens, Diamond).getId()); diff --git a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTBedrockFluids.java b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTBedrockFluids.java index 8919c054ce..7fcad9fe4f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTBedrockFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTBedrockFluids.java @@ -4,13 +4,13 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.worldgen.bedrockfluid.BedrockFluidDefinition; import com.gregtechceu.gtceu.data.material.GTMaterials; -import com.gregtechceu.gtceu.data.recipe.CustomTags; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BiomeTags; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biomes; +import net.neoforged.neoforge.common.Tags; import java.util.HashMap; import java.util.Map; @@ -36,7 +36,7 @@ public class GTBedrockFluids { .depletionChance(100) .depletedYield(20) .biomes(5, BiomeTags.IS_OCEAN) - .biomes(10, CustomTags.IS_SANDY) + .biomes(10, Tags.Biomes.IS_SANDY) .dimensions(overworld()) .register(); @@ -68,7 +68,7 @@ public class GTBedrockFluids { .depletionChance(100) .depletedYield(25) .biomes(5, BiomeTags.IS_OCEAN) - .biomes(5, CustomTags.IS_SANDY) + .biomes(5, Tags.Biomes.IS_SANDY) .dimensions(overworld()) .register(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTDimensionMarkers.java b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTDimensionMarkers.java new file mode 100644 index 0000000000..ef946c5fd7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTDimensionMarkers.java @@ -0,0 +1,80 @@ +package com.gregtechceu.gtceu.data.worldgen; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.worldgen.DimensionMarker; +import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; +import com.gregtechceu.gtceu.utils.FormattingUtil; + +import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.neoforged.fml.ModLoader; + +import com.tterrag.registrate.util.entry.BlockEntry; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; + +@SuppressWarnings("unused") +public class GTDimensionMarkers { + + static { + GTRegistries.DIMENSION_MARKERS.unfreeze(); + REGISTRATE.creativeModeTab(() -> null); + } + + public static final BlockEntry OVERWORLD_MARKER = createMarker("overworld"); + public static final BlockEntry NETHER_MARKER = createMarker("the_nether"); + public static final BlockEntry END_MARKER = createMarker("the_end"); + + public static final DimensionMarker OVERWORLD = createAndRegister(Level.OVERWORLD.location(), 0, + () -> OVERWORLD_MARKER, null); + public static final DimensionMarker NETHER = createAndRegister(Level.NETHER.location(), 0, + () -> NETHER_MARKER, null); + public static final DimensionMarker END = createAndRegister(Level.END.location(), 0, + () -> END_MARKER, null); + + public static DimensionMarker createAndRegister(ResourceLocation dim, int tier, ResourceLocation itemKey, + @Nullable String overrideName) { + DimensionMarker marker = new DimensionMarker(tier, itemKey, overrideName); + marker.register(dim); + return marker; + } + + public static DimensionMarker createAndRegister(ResourceLocation dim, int tier, Supplier supplier, + @Nullable String overrideName) { + DimensionMarker marker = new DimensionMarker(tier, supplier, overrideName); + marker.register(dim); + return marker; + } + + private static BlockEntry createMarker(String name) { + return REGISTRATE.block("%s_marker".formatted(name), Block::new) + .lang(FormattingUtil.toEnglishName(name)) + .blockstate((ctx, prov) -> prov.simpleBlock(ctx.get(), prov.models().cube(ctx.getName(), + prov.modLoc("block/dim_markers/%s/down".formatted(name)), + prov.modLoc("block/dim_markers/%s/up".formatted(name)), + prov.modLoc("block/dim_markers/%s/north".formatted(name)), + prov.modLoc("block/dim_markers/%s/south".formatted(name)), + prov.modLoc("block/dim_markers/%s/east".formatted(name)), + prov.modLoc("block/dim_markers/%s/west".formatted(name))) + .texture("particle", "#north") + .guiLight(BlockModel.GuiLight.FRONT))) + .simpleItem() + .register(); + } + + public static void init() { + ModLoader.postEvent(new GTCEuAPI.RegisterEvent(GTRegistries.DIMENSION_MARKERS)); + if (GTCEu.isKubeJSLoaded()) { + GTRegistryInfo.registerFor(GTRegistries.DIMENSION_MARKERS.getRegistryName()); + } + GTRegistries.DIMENSION_MARKERS.freeze(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTIntProviderTypes.java b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTIntProviderTypes.java new file mode 100644 index 0000000000..d456d6a9c2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTIntProviderTypes.java @@ -0,0 +1,23 @@ +package com.gregtechceu.gtceu.data.worldgen; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.worldgen.RubberTreeChanceWeightedListInt; + +import net.minecraft.core.registries.Registries; +import net.minecraft.util.valueproviders.IntProviderType; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +public class GTIntProviderTypes { + + public static final DeferredRegister> INT_PROVIDER_TYPES = DeferredRegister + .create(Registries.INT_PROVIDER_TYPE, GTCEu.MOD_ID); + + public static final DeferredHolder, IntProviderType> RUBBER_TREE_CHANCE = INT_PROVIDER_TYPES + .register("rubber_tree_chance", () -> () -> RubberTreeChanceWeightedListInt.CODEC); + + public static void init(IEventBus modBus) { + INT_PROVIDER_TYPES.register(modBus); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTOres.java b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTOres.java index ef8f833b40..5413d812d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTOres.java +++ b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTOres.java @@ -254,7 +254,7 @@ public class GTOres { .withLayerPattern(() -> GTLayerPattern.builder(NETHER_RULES) // .layer(l -> l.weight(2).state(Blocks.NETHERRACK::defaultBlockState)) .layer(l -> l.weight(3).mat(Bastnasite).size(2, 4)) - .layer(l -> l.weight(1).mat(Molybdenum).size(1, 1)) + .layer(l -> l.weight(1).mat(Monazite).size(1, 1)) .layer(l -> l.weight(1).mat(Neodymium).size(1, 1)) .build())) .surfaceIndicatorGenerator(indicator -> indicator diff --git a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTPlacedFeatures.java b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTPlacedFeatures.java index c8f26774a7..68c4e1a3b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTPlacedFeatures.java +++ b/src/main/java/com/gregtechceu/gtceu/data/worldgen/GTPlacedFeatures.java @@ -3,9 +3,8 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.worldgen.BiomeWeightModifier; import com.gregtechceu.gtceu.api.worldgen.modifier.BiomePlacement; -import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.common.worldgen.RubberTreeChanceWeightedListInt; import com.gregtechceu.gtceu.data.block.GTBlocks; -import com.gregtechceu.gtceu.data.recipe.CustomTags; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; @@ -16,6 +15,7 @@ import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.*; +import net.neoforged.neoforge.common.Tags; import java.util.List; @@ -41,8 +41,8 @@ public static void bootstrap(BootstrapContext ctx) { PlacementUtils.register(ctx, RUBBER_CHECKED, featureLookup.getOrThrow(GTConfiguredFeatures.RUBBER), new BiomePlacement(List.of( - new BiomeWeightModifier(() -> biomeLookup.getOrThrow(CustomTags.IS_SWAMP), 50))), - PlacementUtils.countExtra(0, ConfigHolder.INSTANCE.worldgen.rubberTreeSpawnChance, 1), + new BiomeWeightModifier(() -> biomeLookup.getOrThrow(Tags.Biomes.IS_SWAMP), 50))), + CountPlacement.of(RubberTreeChanceWeightedListInt.INSTANCE), InSquarePlacement.spread(), SurfaceWaterDepthFilter.forMaxDepth(0), PlacementUtils.HEIGHTMAP_TOP_SOLID, diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index d59ac51a94..23465c5199 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -73,12 +73,20 @@ public static void tickPlayerInventoryHazards(PlayerTickEvent.Post event) { if (event.getEntity().level().isClientSide) { return; } + if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) return; + Player player = event.getEntity(); IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker(player); IItemHandler inventory = player.getCapability(Capabilities.ItemHandler.ENTITY, null); if (inventory == null) { return; } + if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) { + for (MedicalCondition medicalCondition : tracker.getMedicalConditions().keySet()) { + tracker.removeMedicalCondition(medicalCondition); + } + return; + } tracker.tick(); for (int i = 0; i < inventory.getSlots(); ++i) { @@ -144,8 +152,10 @@ public static void registerReloadListeners(AddReloadListenerEvent event) { public static void levelTick(LevelTickEvent.Post event) { if (event.getLevel() instanceof ServerLevel serverLevel) { TaskHandler.onTickUpdate(serverLevel); - EnvironmentalHazardSavedData.getOrCreate(serverLevel).tick(); - LocalizedHazardSavedData.getOrCreate(serverLevel).tick(); + if (ConfigHolder.INSTANCE.gameplay.environmentalHazards) { + EnvironmentalHazardSavedData.getOrCreate(serverLevel).tick(); + LocalizedHazardSavedData.getOrCreate(serverLevel).tick(); + } } } @@ -165,9 +175,9 @@ public static void onPlayerJoinServer(PlayerEvent.PlayerLoggedInEvent event) { PacketDistributor.sendToPlayer(serverPlayer, new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry())); - if (!ConfigHolder.INSTANCE.gameplay.environmentalHazards) { + if (!ConfigHolder.INSTANCE.gameplay.environmentalHazards) return; - } + ServerLevel level = (ServerLevel) event.getEntity().level(); var data = EnvironmentalHazardSavedData.getOrCreate(level); PacketDistributor.sendToPlayer(serverPlayer, new SPacketSyncLevelHazards(data.getHazardZones())); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java index 31bbe5cd7b..370141b582 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java @@ -5,9 +5,12 @@ import com.gregtechceu.gtceu.api.tag.TagPrefix; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.api.worldgen.DimensionMarker; import com.gregtechceu.gtceu.api.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.worldgen.bedrockfluid.BedrockFluidDefinition; +import com.gregtechceu.gtceu.config.ConfigHolder; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.TextTexture; import com.lowdragmc.lowdraglib.gui.widget.*; import com.lowdragmc.lowdraglib.jei.IngredientIO; @@ -19,6 +22,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.heightproviders.HeightProvider; import net.minecraft.world.level.levelgen.heightproviders.UniformHeight; import net.minecraft.world.level.material.Fluid; @@ -26,10 +30,10 @@ import lombok.Getter; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -42,7 +46,6 @@ public class GTOreVeinWidget extends WidgetGroup { private final String name; private final int weight; private final String range; - private final String dimensions; private final Set> dimensionFilter; public final static int width = 120; @@ -51,7 +54,6 @@ public GTOreVeinWidget(GTOreDefinition oreDefinition) { this.name = getOreName(oreDefinition); this.weight = oreDefinition.weight(); this.dimensionFilter = oreDefinition.dimensionFilter(); - this.dimensions = dimensions(); this.range = range(oreDefinition); setClientSideWidget(); setupBaseGui(oreDefinition); @@ -63,7 +65,6 @@ public GTOreVeinWidget(BedrockFluidDefinition fluid) { this.name = getFluidName(fluid); this.weight = fluid.getWeight(); this.dimensionFilter = fluid.getDimensionFilter(); - this.dimensions = dimensions(); this.range = "NULL"; setClientSideWidget(); setupBaseGui(fluid); @@ -119,7 +120,7 @@ private void setupText(GTOreDefinition ignored) { LocalizationUtils.format("gtceu.jei.ore_vein_diagram.weight", weight))); addWidget(new LabelWidget(5, 70, LocalizationUtils.format("gtceu.jei.ore_vein_diagram.dimensions"))); - addWidget(new LabelWidget(5, 80, dimensions)); + setupDimensionMarker(80); } private void setupText(BedrockFluidDefinition ignored) { @@ -130,14 +131,41 @@ private void setupText(BedrockFluidDefinition ignored) { LocalizationUtils.format("gtceu.jei.ore_vein_diagram.weight", weight))); addWidget(new LabelWidget(5, 50, LocalizationUtils.format("gtceu.jei.ore_vein_diagram.dimensions"))); - addWidget(new LabelWidget(5, 60, dimensions)); + setupDimensionMarker(60); } - private String dimensions() { - if (dimensionFilter == null) return "Any"; - return dimensionFilter.stream() - .map(dimension -> dimension.location().toString()) - .collect(Collectors.joining("\n")); + private void setupDimensionMarker(int yPosition) { + if (this.dimensionFilter != null) { + int interval = 2; + int rowSlots = (width - 10 + interval) / (16 + interval); + + DimensionMarker[] dimMarkers = dimensionFilter.stream() + .map(ResourceKey::location) + .map(loc -> GTRegistries.DIMENSION_MARKERS.getOrDefault(loc, + new DimensionMarker(DimensionMarker.MAX_TIER, () -> Blocks.BARRIER, loc.toString()))) + .sorted(Comparator.comparingInt(DimensionMarker::getTier)) + .toArray(DimensionMarker[]::new); + var transfer = new CustomItemStackHandler(dimMarkers.length); + for (int i = 0; i < dimMarkers.length; i++) { + var dimMarker = dimMarkers[i]; + var markerItem = dimMarker.getMarker(); + int row = Math.floorDiv(i, rowSlots); + SlotWidget dimSlot = new SlotWidget(transfer, i, + 5 + (16 + interval) * (i - row * rowSlots), + yPosition + 18 * row, + false, false).setIngredientIO(IngredientIO.INPUT); + transfer.setStackInSlot(i, markerItem); + if (ConfigHolder.INSTANCE.compat.showDimensionTier) { + dimSlot.setOverlay( + new TextTexture("T" + (dimMarker.tier >= DimensionMarker.MAX_TIER ? "?" : dimMarker.tier)) + .scale(0.75F) + .transform(-3F, 5F)); + } + addWidget(dimSlot.setBackgroundTexture(IGuiTexture.EMPTY)); + } + } else { + addWidget(new LabelWidget(5, yPosition, "Any")); + } } public static List getContainedOresAndBlocks(GTOreDefinition oreDefinition) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/GTRecipeWidget.java index 6277b9ac03..978c196d61 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/GTRecipeWidget.java @@ -182,7 +182,7 @@ private static List getRecipeParaText(GTRecipe recipe, int duration, isOutput = true; } if (EUt > 0) { - long euTotal = EUt * recipe.duration; + long euTotal = EUt * duration; // sadly we still need a custom override here, since computation uses duration and EU/t very differently if (recipe.data.getBoolean("duration_is_total_cwu") && recipe.tickInputs.containsKey(CWURecipeCapability.CAP)) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTElementHelper.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTElementHelper.java new file mode 100644 index 0000000000..fdbd329a11 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTElementHelper.java @@ -0,0 +1,21 @@ +package com.gregtechceu.gtceu.integration.jade; + +import net.minecraft.world.phys.Vec2; + +import snownee.jade.api.fluid.JadeFluidObject; +import snownee.jade.api.ui.IElement; +import snownee.jade.api.ui.IElementHelper; + +public class GTElementHelper { + + public static final Vec2 SMALL_FLUID_SIZE = new Vec2(10.0F, 10.0F); + public static final Vec2 SMALL_FLUID_OFFSET = new Vec2(0.0F, -1.0F); + + public static IElement smallFluid(JadeFluidObject fluid) { + return helper().fluid(fluid).size(SMALL_FLUID_SIZE).translate(SMALL_FLUID_OFFSET).message(null); + } + + public static IElementHelper helper() { + return IElementHelper.get(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java index e40ebee6d7..64a061bbbe 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java @@ -29,6 +29,15 @@ public void register(IWailaCommonRegistration registration) { registration.registerBlockDataProvider(new WorkableBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new ControllableBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new RecipeLogicProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new ParallelProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new RecipeOutputProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new MultiblockStructureProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new MaintenanceBlockProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new ExhaustVentBlockProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new AutoOutputBlockProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new CableBlockProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new MachineModeProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new StainedColorProvider(), BlockEntity.class); registration.registerBlockDataProvider(new HazardCleanerBlockProvider(), BlockEntity.class); registration.registerFluidStorage(FluidPipeStorageProvider.INSTANCE, FluidPipeBlockEntity.class); @@ -40,6 +49,16 @@ public void registerClient(IWailaClientRegistration registration) { registration.registerBlockComponent(new WorkableBlockProvider(), Block.class); registration.registerBlockComponent(new ControllableBlockProvider(), Block.class); registration.registerBlockComponent(new RecipeLogicProvider(), Block.class); + registration.registerBlockComponent(new ParallelProvider(), Block.class); + registration.registerBlockComponent(new RecipeOutputProvider(), Block.class); + registration.registerBlockComponent(new MultiblockStructureProvider(), Block.class); + registration.registerBlockComponent(new MaintenanceBlockProvider(), Block.class); + registration.registerBlockComponent(new ExhaustVentBlockProvider(), Block.class); + registration.registerBlockComponent(new AutoOutputBlockProvider(), Block.class); + registration.registerBlockComponent(new CableBlockProvider(), Block.class); + registration.registerBlockComponent(new MachineModeProvider(), Block.class); + registration.registerBlockComponent(new StainedColorProvider(), Block.class); + registration.registerBlockComponent(new HazardCleanerBlockProvider(), Block.class); registration.registerFluidStorageClient(FluidPipeStorageProvider.INSTANCE); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/AutoOutputBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/AutoOutputBlockProvider.java new file mode 100644 index 0000000000..ec4b18c1f8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/AutoOutputBlockProvider.java @@ -0,0 +1,117 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; + +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.entity.BlockEntity; + +import org.apache.commons.lang3.StringUtils; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; +import snownee.jade.api.ui.IElementHelper; + +public class AutoOutputBlockProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + BlockEntity be = blockAccessor.getBlockEntity(); + if (be != null) { + CompoundTag data = blockAccessor.getServerData().getCompound(getUid().toString()); + if (data.contains("autoOutputItem", Tag.TAG_COMPOUND)) { + var tag = data.getCompound("autoOutputItem"); + addAutoOutputInfo(iTooltip, blockAccessor, tag, "gtceu.top.item_auto_output"); + } + + if (data.contains("autoOutputFluid", Tag.TAG_COMPOUND)) { + var tag = data.getCompound("autoOutputFluid"); + addAutoOutputInfo(iTooltip, blockAccessor, tag, "gtceu.top.fluid_auto_output"); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + CompoundTag data = compoundTag.getCompound(getUid().toString()); + var level = blockAccessor.getLevel(); + var pos = blockAccessor.getPosition(); + if (MetaMachine.getMachine(level, pos) instanceof IAutoOutputItem outputItem) { + var direction = outputItem.getOutputFacingItems(); + if (direction != null) { + data.put("autoOutputItem", writeData(new CompoundTag(), direction, blockAccessor, + outputItem.isAllowInputFromOutputSideItems(), outputItem.isAutoOutputItems())); + } + } + if (MetaMachine.getMachine(level, pos) instanceof IAutoOutputFluid outputFluid) { + var direction = outputFluid.getOutputFacingFluids(); + if (direction != null) { + data.put("autoOutputFluid", writeData(new CompoundTag(), direction, blockAccessor, + outputFluid.isAllowInputFromOutputSideFluids(), outputFluid.isAutoOutputFluids())); + } + } + compoundTag.put(getUid().toString(), data); + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("auto_output_info"); + } + + private CompoundTag writeData(CompoundTag compoundTag, Direction direction, BlockAccessor blockAccessor, + boolean allowInput, boolean auto) { + compoundTag.putString("direction", direction.getName()); + var level = blockAccessor.getLevel(); + var pos = blockAccessor.getPosition().relative(direction); + if (level != null) { + var key = BuiltInRegistries.BLOCK.getKey(level.getBlockState(pos).getBlock()); + compoundTag.putString("block", key.toString()); + } + compoundTag.putBoolean("allowInput", allowInput); + compoundTag.putBoolean("auto", auto); + return compoundTag; + } + + private void addAutoOutputInfo(ITooltip iTooltip, BlockAccessor blockAccessor, CompoundTag compoundTag, + String text) { + var direction = Direction.byName(compoundTag.getString("direction")); + boolean allowInput = compoundTag.getBoolean("allowInput"); + boolean auto = compoundTag.getBoolean("auto"); + if (direction != null) { + iTooltip.add(Component.translatable(text, StringUtils.capitalize(direction.getName()))); + if (blockAccessor.showDetails()) { + var block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(compoundTag.getString("block"))).asItem() + .getDefaultInstance(); + if (!block.isEmpty()) { + iTooltip.append(IElementHelper.get().smallItem(block)); + } + } + + if (allowInput || auto) { + var component = Component.literal(" ("); + if (auto) { + component.append(Component.translatable("gtceu.top.auto_output")); + } + + if (allowInput && auto) { + component.append("/"); + } + + if (allowInput) { + component.append(Component.translatable("gtceu.top.allow_output_input")); + } + component.append(")"); + iTooltip.append(component); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/BlockInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/BlockInfoProvider.java new file mode 100644 index 0000000000..097d629ec6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/BlockInfoProvider.java @@ -0,0 +1,56 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +import lombok.Getter; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +import javax.annotation.Nullable; + +public abstract class BlockInfoProvider implements IBlockComponentProvider, IServerDataProvider { + + @Getter + public final ResourceLocation uid; + + protected BlockInfoProvider(ResourceLocation uid) { + this.uid = uid; + } + + @Nullable + protected abstract C getCapability(Level level, BlockPos pos); + + protected abstract void write(CompoundTag data, C capability, BlockAccessor block); + + protected abstract void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, BlockAccessor block, + BlockEntity blockEntity, IPluginConfig config); + + protected boolean allowDisplaying(C capability) { + return true; + } + + public void appendTooltip(ITooltip tooltip, BlockAccessor block, IPluginConfig config) { + BlockEntity be = block.getBlockEntity(); + if (be != null) { + CompoundTag capData = block.getServerData().getCompound(this.uid.toString()); + this.addTooltip(capData, tooltip, block.getPlayer(), block, be, config); + } + } + + public void appendServerData(CompoundTag data, BlockAccessor blockAccessor) { + CompoundTag capData = data.getCompound(this.uid.toString()); + C capability = this.getCapability(blockAccessor.getLevel(), blockAccessor.getPosition()); + if (capability != null && this.allowDisplaying(capability)) { + this.write(capData, capability, blockAccessor); + } + data.put(this.uid.toString(), capData); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/CableBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/CableBlockProvider.java new file mode 100644 index 0000000000..b91c909ee9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/CableBlockProvider.java @@ -0,0 +1,72 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.common.block.CableBlock; +import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.entity.BlockEntity; + +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +import static com.gregtechceu.gtceu.utils.FormattingUtil.DECIMAL_FORMAT_1F; + +public class CableBlockProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + BlockEntity be = blockAccessor.getBlockEntity(); + if (be != null) { + CompoundTag data = blockAccessor.getServerData().getCompound(getUid().toString()); + if (data.contains("cableData", Tag.TAG_COMPOUND)) { + var tag = data.getCompound("cableData"); + long voltage = tag.getLong("currentVoltage"); + double amperage = tag.getDouble("currentAmperage"); + iTooltip.add(Component.translatable("gtceu.top.cable_voltage")); + if (voltage != 0) { + iTooltip.append(Component.literal(GTValues.VNF[GTUtil.getTierByVoltage(voltage)])); + iTooltip.append(Component.literal(" / ")); + } + iTooltip.append(Component.literal(GTValues.VNF[GTUtil.getTierByVoltage(tag.getLong("maxVoltage"))])); + + iTooltip.add(Component.translatable("gtceu.top.cable_amperage")); + if (amperage != 0) { + iTooltip.append(Component.literal(DECIMAL_FORMAT_1F.format(amperage) + "A / ")); + } + iTooltip.append(Component.literal(DECIMAL_FORMAT_1F.format(tag.getDouble("maxAmperage")) + "A")); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + CompoundTag data = compoundTag.getCompound(getUid().toString()); + if (blockAccessor.getBlock() instanceof CableBlock cableBlock) { + CableBlockEntity cable = (CableBlockEntity) cableBlock.getPipeTile(blockAccessor.getLevel(), + blockAccessor.getPosition()); + if (cable != null) { + var cableData = new CompoundTag(); + cableData.putLong("maxVoltage", cable.getMaxVoltage()); + cableData.putLong("currentVoltage", cable.getCurrentMaxVoltage()); + cableData.putDouble("maxAmperage", cable.getMaxAmperage()); + cableData.putDouble("currentAmperage", cable.getAverageAmperage()); + data.put("cableData", cableData); + } + } + compoundTag.put(getUid().toString(), data); + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("cable_info"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ElectricContainerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ElectricContainerBlockProvider.java index 4691471b6f..37b2515bf4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ElectricContainerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ElectricContainerBlockProvider.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; +import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.Util; import net.minecraft.core.BlockPos; @@ -50,7 +51,8 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, tooltip.add( helper.progress( getProgress(stored, maxStorage), - Component.translatable("gtceu.jade.energy_stored", stored, maxStorage), + Component.translatable("gtceu.jade.energy_stored", FormattingUtil.formatNumbers(stored), + FormattingUtil.formatNumbers(maxStorage)), helper.progressStyle().color(0xFFEEE600, 0xFFEEE600).textColor(-1), Util.make(BoxStyle.GradientBorder.DEFAULT_VIEW_GROUP, style -> style.borderColor = new int[] { 0xFF555555, 0xFF555555, 0xFF555555, diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ExhaustVentBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ExhaustVentBlockProvider.java new file mode 100644 index 0000000000..f3f5aaf0a8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ExhaustVentBlockProvider.java @@ -0,0 +1,82 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; + +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.Nullable; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; +import snownee.jade.api.ui.IElementHelper; + +public class ExhaustVentBlockProvider extends BlockInfoProvider { + + public ExhaustVentBlockProvider() { + super(GTCEu.id("exhaust_vent_info")); + } + + @Nullable + @Override + protected IExhaustVentMachine getCapability(Level level, BlockPos blockPos) { + if (MetaMachine.getMachine(level, blockPos) instanceof IExhaustVentMachine exhaustVentMachine) { + return exhaustVentMachine; + } + return null; + } + + @Override + protected boolean allowDisplaying(IExhaustVentMachine capability) { + return super.allowDisplaying(capability); + } + + @Override + protected void write(CompoundTag compoundTag, IExhaustVentMachine iExhaustVentMachine, + BlockAccessor blockAccessor) { + var direction = iExhaustVentMachine.getVentingDirection(); + compoundTag.putString("ventDirection", direction.getName()); + var level = blockAccessor.getLevel(); + var pos = blockAccessor.getPosition().relative(direction); + if (level != null) { + var key = BuiltInRegistries.BLOCK.getKey(level.getBlockState(pos).getBlock()); + compoundTag.putString("ventBlock", key.toString()); + } + compoundTag.putBoolean("ventBlocked", iExhaustVentMachine.isVentingBlocked()); + compoundTag.putBoolean("needsVenting", iExhaustVentMachine.isNeedsVenting()); + } + + @Override + protected void addTooltip(CompoundTag compoundTag, ITooltip iTooltip, Player player, BlockAccessor blockAccessor, + BlockEntity blockEntity, IPluginConfig iPluginConfig) { + var direction = Direction.byName(compoundTag.getString("ventDirection")); + if (direction != null) { + iTooltip.add(Component.translatable("gtceu.top.exhaust_vent_direction", + StringUtils.capitalize(direction.getName()))); + if (!compoundTag.getBoolean("ventBlocked")) return; + + if (blockAccessor.showDetails()) { + var block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(compoundTag.getString("ventBlock"))) + .asItem().getDefaultInstance(); + iTooltip.append(IElementHelper.get().smallItem(block)); + } + + if (compoundTag.getBoolean("needsVenting")) { + iTooltip.append(Component.literal(" (")); + iTooltip.append(Component.translatable("gtceu.top.exhaust_vent_blocked").withStyle(ChatFormatting.RED) + .append(Component.literal(")").withStyle(ChatFormatting.GRAY))); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java index bcb5b4a1a6..a8c72156d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/HazardCleanerBlockProvider.java @@ -38,7 +38,8 @@ protected void write(CompoundTag data, IEnvironmentalHazardCleaner capability) { protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, BlockAccessor block, BlockEntity blockEntity, IPluginConfig config) { float cleaned = capData.getFloat("Cleaned"); - - tooltip.add(Component.translatable("gtceu.jade.cleaned_this_second", cleaned)); + if (cleaned > 0) { + tooltip.add(Component.translatable("gtceu.jade.cleaned_this_second", cleaned)); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java new file mode 100644 index 0000000000..304c5cb69c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MachineModeProvider.java @@ -0,0 +1,81 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; + +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; + +import org.jetbrains.annotations.Nullable; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +public class MachineModeProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + CompoundTag serverData = blockAccessor.getServerData(); + if (serverData.contains("RecipeTypes") && serverData.contains("CurrentRecipeType")) { + int currentRecipeTypeIndex = serverData.getInt("CurrentRecipeType"); + ListTag recipeTypesTagList = serverData.getList("RecipeTypes", StringTag.TAG_STRING); + if (blockAccessor.showDetails()) { + iTooltip.add(Component.translatable("gtceu.top.machine_mode")); + for (int i = 0; i < recipeTypesTagList.size(); i++) { + ResourceLocation recipeType = ResourceLocation.parse(recipeTypesTagList.getString(i)); + MutableComponent text; + if (currentRecipeTypeIndex == i) { + text = Component.literal(" > ").withStyle(ChatFormatting.BLUE); + } else { + text = Component.literal(" "); + } + text.append( + Component.translatable("%s.%s".formatted(recipeType.getNamespace(), recipeType.getPath()))); + iTooltip.add(text); + } + } else { + ResourceLocation recipeType = ResourceLocation.parse( + recipeTypesTagList.getString(currentRecipeTypeIndex)); + iTooltip.add(Component.translatable("gtceu.top.machine_mode").append( + Component.translatable("%s.%s".formatted(recipeType.getNamespace(), recipeType.getPath())))); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { + @Nullable + GTRecipeType[] recipeTypes = blockEntity.getMetaMachine().getDefinition().getRecipeTypes(); + if (recipeTypes != null && recipeTypes.length > 1) { + if (blockEntity.getMetaMachine() instanceof IRecipeLogicMachine recipeLogicMachine) { + ListTag recipeTypesTagList = new ListTag(); + GTRecipeType currentRecipeType = recipeLogicMachine.getRecipeType(); + int currentRecipeTypeIndex = -1; + for (int i = 0; i < recipeTypes.length; i++) { + if (recipeTypes[i] == currentRecipeType) { + currentRecipeTypeIndex = i; + } + recipeTypesTagList.add(StringTag.valueOf(recipeTypes[i].registryName.toString())); + } + compoundTag.put("RecipeTypes", recipeTypesTagList); + compoundTag.putInt("CurrentRecipeType", currentRecipeTypeIndex); + } + } + } + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("machine_mode"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MaintenanceBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MaintenanceBlockProvider.java new file mode 100644 index 0000000000..53b4025ba3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MaintenanceBlockProvider.java @@ -0,0 +1,79 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +import org.jetbrains.annotations.Nullable; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; +import snownee.jade.api.ui.IElementHelper; + +public class MaintenanceBlockProvider extends CapabilityBlockProvider { + + public MaintenanceBlockProvider() { + super(GTCEu.id("maintenance_info")); + } + + @Nullable + @Override + protected IMaintenanceMachine getCapability(Level level, BlockPos blockPos, @Nullable Direction direction) { + var cap = GTCapabilityHelper.getMaintenanceMachine(level, blockPos, direction); + if (cap != null) { + return cap; + } + if (MetaMachine.getMachine(level, blockPos) instanceof IMultiController controller) { + for (var part : controller.getParts()) { + if (part instanceof IMaintenanceMachine maintenanceMachine) { + return maintenanceMachine; + } + } + } + return null; + } + + @Override + protected void write(CompoundTag compoundTag, IMaintenanceMachine maintenanceMachine) { + compoundTag.putBoolean("hasProblems", maintenanceMachine.hasMaintenanceProblems()); + if (maintenanceMachine.hasMaintenanceProblems()) { + compoundTag.putInt("maintenanceProblems", maintenanceMachine.getMaintenanceProblems()); + } + } + + @Override + protected void addTooltip(CompoundTag compoundTag, ITooltip iTooltip, Player player, BlockAccessor blockAccessor, + BlockEntity blockEntity, IPluginConfig iPluginConfig) { + if (compoundTag.contains("hasProblems", Tag.TAG_BYTE)) { + if (compoundTag.getBoolean("hasProblems")) { + if (blockAccessor.showDetails()) { + int problems = compoundTag.getInt("maintenanceProblems"); + for (byte i = 0; i < 6; i++) { + if (((problems >> i) & 1) == 0) { + var tuple = GTUtil.getMaintenanceText(i); + iTooltip.add(IElementHelper.get().smallItem(tuple.getA())); + iTooltip.append(tuple.getB()); + } + } + } else { + iTooltip.add(Component.translatable("gtceu.top.maintenance_broken").withStyle(ChatFormatting.RED)); + } + } else { + iTooltip.add(Component.translatable("gtceu.top.maintenance_fixed").withStyle(ChatFormatting.GREEN)); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java new file mode 100644 index 0000000000..da6ca49a64 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java @@ -0,0 +1,45 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; + +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; + +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +public class MultiblockStructureProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getServerData().contains("hasError")) { + boolean hasError = blockAccessor.getServerData().getBoolean("hasError"); + if (hasError) { + iTooltip.add(Component.translatable("gtceu.top.invalid_structure").withStyle(ChatFormatting.RED)); + } else { + iTooltip.add(Component.translatable("gtceu.top.valid_structure").withStyle(ChatFormatting.GREEN)); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { + if (blockEntity.getMetaMachine() instanceof IMultiController controller) { + compoundTag.putBoolean("hasError", controller.getMultiblockState().hasError()); + } + } + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("multiblock_structure"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java new file mode 100644 index 0000000000..bbc922160d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java @@ -0,0 +1,55 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.IParallelHatch; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; + +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; + +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +import java.util.Optional; + +public class ParallelProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getServerData().contains("parallel")) { + int parallel = blockAccessor.getServerData().getInt("parallel"); + if (parallel > 0) { + iTooltip.add(Component.translatable( + "gtceu.multiblock.parallel", + Component.literal(parallel + "").withStyle(ChatFormatting.DARK_PURPLE))); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { + if (blockEntity.getMetaMachine() instanceof IParallelHatch parallelHatch) { + compoundTag.putInt("parallel", parallelHatch.getCurrentParallel()); + } else if (blockEntity.getMetaMachine() instanceof IMultiController controller) { + Optional parallelHatch = controller.getParts().stream() + .filter(IParallelHatch.class::isInstance) + .map(IParallelHatch.class::cast) + .findAny(); + parallelHatch.ifPresent( + iParallelHatch -> compoundTag.putInt("parallel", iParallelHatch.getCurrentParallel())); + } + } + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("parallel_info"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java new file mode 100644 index 0000000000..2c1ecabbf2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java @@ -0,0 +1,164 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.integration.jade.GTElementHelper; + +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentUtils; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.neoforged.neoforge.fluids.FluidStack; + +import org.jetbrains.annotations.Nullable; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; +import snownee.jade.api.fluid.JadeFluidObject; +import snownee.jade.api.ui.IElementHelper; +import snownee.jade.util.FluidTextHelper; + +import java.util.ArrayList; +import java.util.List; + +public class RecipeOutputProvider extends CapabilityBlockProvider { + + public RecipeOutputProvider() { + super(GTCEu.id("recipe_output_info")); + } + + @Override + protected @Nullable RecipeLogic getCapability(Level level, BlockPos pos, @Nullable Direction side) { + return GTCapabilityHelper.getRecipeLogic(level, pos, side); + } + + @Override + protected void write(CompoundTag data, RecipeLogic recipeLogic) { + if (recipeLogic.isWorking()) { + data.putBoolean("Working", recipeLogic.isWorking()); + var recipe = recipeLogic.getLastRecipe(); + if (recipe != null) { + ListTag itemTags = new ListTag(); + for (var stack : RecipeHelper.getOutputItems(recipe)) { + if (stack != null && !stack.isEmpty()) { + var itemTag = new CompoundTag(); + + stack.save(recipeLogic.getMachine().getLevel().registryAccess(), itemTag); + itemTags.add(itemTag); + } + } + if (!itemTags.isEmpty()) { + data.put("OutputItems", itemTags); + } + ListTag fluidTags = new ListTag(); + for (var stack : RecipeHelper.getOutputFluids(recipe)) { + if (stack != null && !stack.isEmpty()) { + var fluidTag = new CompoundTag(); + stack.save(recipeLogic.getMachine().getLevel().registryAccess(), fluidTag); + fluidTags.add(fluidTag); + } + } + if (!fluidTags.isEmpty()) { + data.put("OutputFluids", fluidTags); + } + } + } + } + + @Override + protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, BlockAccessor block, + BlockEntity blockEntity, IPluginConfig config) { + if (capData.getBoolean("Working")) { + List outputItems = new ArrayList<>(); + if (capData.contains("OutputItems", Tag.TAG_LIST)) { + ListTag itemTags = capData.getList("OutputItems", Tag.TAG_COMPOUND); + if (!itemTags.isEmpty()) { + for (Tag tag : itemTags) { + if (tag instanceof CompoundTag tCompoundTag) { + var stack = ItemStack.CODEC.parse(blockEntity + .getLevel() + .registryAccess() + .createSerializationContext(NbtOps.INSTANCE), + tCompoundTag).getOrThrow(); + if (!stack.isEmpty()) { + outputItems.add(stack); + } + } + } + } + } + List outputFluids = new ArrayList<>(); + if (capData.contains("OutputFluids", Tag.TAG_LIST)) { + ListTag fluidTags = capData.getList("OutputFluids", Tag.TAG_COMPOUND); + for (Tag tag : fluidTags) { + if (tag instanceof CompoundTag tCompoundTag) { + var stack = FluidStack.parseOptional(blockEntity.getLevel().registryAccess(), tCompoundTag); + if (!stack.isEmpty()) { + outputFluids.add(stack); + } + } + } + } + if (!outputItems.isEmpty() || !outputFluids.isEmpty()) { + tooltip.add(Component.translatable("gtceu.top.recipe_output")); + } + addItemTooltips(tooltip, outputItems); + addFluidTooltips(tooltip, outputFluids); + } + } + + private void addItemTooltips(ITooltip iTooltip, List outputItems) { + IElementHelper helper = IElementHelper.get(); + for (ItemStack itemOutput : outputItems) { + if (itemOutput != null && !itemOutput.isEmpty()) { + int count = itemOutput.getCount(); + itemOutput.setCount(1); + iTooltip.add(helper.smallItem(itemOutput)); + Component text = Component.literal(" ") + .append(String.valueOf(count)) + .append("× ") + .append(getItemName(itemOutput)) + .withStyle(ChatFormatting.WHITE); + iTooltip.append(text); + } + } + } + + private void addFluidTooltips(ITooltip iTooltip, List outputFluids) { + for (FluidStack fluidOutput : outputFluids) { + if (fluidOutput != null && !fluidOutput.isEmpty()) { + iTooltip.add(GTElementHelper.smallFluid(getFluid(fluidOutput))); + Component text = Component.literal(" ") + .append(FluidTextHelper.getUnicodeMillibuckets(fluidOutput.getAmount(), true)) + .append(" ") + .append(getFluidName(fluidOutput)) + .withStyle(ChatFormatting.WHITE); + iTooltip.append(text); + + } + } + } + + private Component getItemName(ItemStack stack) { + return ComponentUtils.wrapInSquareBrackets(stack.getItem().getDescription()).withStyle(ChatFormatting.WHITE); + } + + private Component getFluidName(FluidStack stack) { + return ComponentUtils.wrapInSquareBrackets(stack.getHoverName()).withStyle(ChatFormatting.WHITE); + } + + private JadeFluidObject getFluid(FluidStack stack) { + return JadeFluidObject.of(stack.getFluid(), stack.getAmount()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java new file mode 100644 index 0000000000..f1954da828 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java @@ -0,0 +1,54 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.resources.ResourceLocation; + +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +import java.util.Locale; + +public class StainedColorProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getServerData().contains("StainedColor")) { + int paintingColor = blockAccessor.getServerData().getInt("StainedColor"); + if (paintingColor != -1) { + iTooltip.add(Component + .translatable("gtceu.top.stained", + "#" + Integer.toHexString(paintingColor).toUpperCase(Locale.ROOT)) + .withStyle(Style.EMPTY.withColor(paintingColor))); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { + MetaMachine metaMachine = blockEntity.getMetaMachine(); + if (metaMachine != null) { + int paintingColor = metaMachine.getPaintingColor(); + compoundTag.putInt("StainedColor", paintingColor); + } + } else if (blockAccessor.getBlockEntity() instanceof PipeBlockEntity pipe) { + int paintingColor = pipe.getPaintingColor(); + compoundTag.putInt("StainedColor", paintingColor); + } + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("stained_color"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java index a9a7377604..6336bef8bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistry; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; import com.gregtechceu.gtceu.api.tag.TagPrefix; +import com.gregtechceu.gtceu.api.worldgen.DimensionMarker; import com.gregtechceu.gtceu.api.worldgen.IWorldGenLayer; import com.gregtechceu.gtceu.api.worldgen.SimpleWorldGenLayer; import com.gregtechceu.gtceu.api.worldgen.WorldGeneratorUtils; @@ -63,6 +64,9 @@ public record BuilderType(String type, Class WorldGeneratorUtils.WORLD_GEN_LAYERS, SimpleWorldGenLayer.class); public static final GTRegistryInfo TAG_PREFIX = add(GTCEu.id("tag_prefix"), () -> TagPrefix.PREFIXES, KJSTagPrefix.class); + public static final GTRegistryInfo DIMENSION_MARKER = add( + GTRegistries.DIMENSION_MARKERS, DimensionMarker.class); + /* * public static final GTRegistryInfo> RECIPE_CAPABILITY = * add(GTRegistries.RECIPE_CAPABILITIES, RecipeCapability.class); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/Validator.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/Validator.java index a9f51f123d..09a563600f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/Validator.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/Validator.java @@ -101,4 +101,17 @@ static Validator errorIfNull(@Nullable Object value, String name) { return ValidationResult.ERROR; }; } + + static Validator errorIfOutOfRange(int value, String name, int min, int max) { + return id -> { + if (value >= min && value <= max) { + return ValidationResult.SUCCESS; + } + + var message = "Cannot build %s, %s is not in range [%d, %d].".formatted(id, name, min, max); + + ConsoleJS.getCurrent((Context) null).error(message); + return ValidationResult.ERROR; + }; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java index 735d6216c3..656e7deb30 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java @@ -388,6 +388,15 @@ public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLo return this; } + @Override + public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel) { + for (var builder : builders) { + if (builder == null) continue; + builder.sidedWorkableCasingRenderer(basePath, overlayModel); + } + return this; + } + public MachineBuilder tier(int tier, BuilderConsumer consumer) { for (var builder : builders) { if (builder == null) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index fdf25133b6..a831142e46 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -512,6 +512,5 @@ public GTKubeRecipe stationResearch(UnaryOperator, List> m) { } public void add(RecipeCapability capability, Content value) { - this.get(capability).add(value); + this.computeIfAbsent(capability, cap -> new ArrayList<>()).add(value); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index 96ce18abf0..6f94daa0d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -45,7 +45,7 @@ public Codec codec() { @Override public TypeInfo typeInfo() { - return TypeInfo.STRING; + return TypeInfo.of(ResourceLocation.class); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java index 2f5d513f66..404aa80efc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java @@ -19,6 +19,15 @@ public static void init(ITheOneProbe oneProbe) { // oneProbe.registerProvider(new MultiRecipeMapInfoProvider()); // oneProbe.registerProvider(new ConverterInfoProvider()); oneProbe.registerProvider(new RecipeLogicInfoProvider()); + oneProbe.registerProvider(new ParallelProvider()); + oneProbe.registerProvider(new RecipeOutputProvider()); + oneProbe.registerProvider(new MulitblockStructureProvider()); + oneProbe.registerProvider(new MaintenanceInfoProvider()); + oneProbe.registerProvider(new ExhaustVentInfoProvider()); + oneProbe.registerProvider(new AutoOutputInfoProvider()); + oneProbe.registerProvider(new CableInfoProvider()); + oneProbe.registerProvider(new MachineModeProvider()); + oneProbe.registerProvider(new StainedColorProvider()); // oneProbe.registerProvider(new PrimitivePumpInfoProvider()); oneProbe.registerProvider(new CoverProvider()); oneProbe.registerProvider(new HazardCleanerInfoProvider()); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/element/FluidStackElement.java b/src/main/java/com/gregtechceu/gtceu/integration/top/element/FluidStackElement.java new file mode 100644 index 0000000000..e489fc80c8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/element/FluidStackElement.java @@ -0,0 +1,91 @@ +package com.gregtechceu.gtceu.integration.top.element; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.registry.GTRegistries; + +import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; +import com.lowdragmc.lowdraglib.gui.util.TextFormattingUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.neoforged.neoforge.fluids.FluidStack; + +import com.mojang.blaze3d.systems.RenderSystem; +import mcjty.theoneprobe.api.IElement; + +public class FluidStackElement implements IElement { + + private final FluidStack fluidStack; + private final IFluidStyle style; + + public FluidStackElement(FluidStack fluidStack, IFluidStyle style) { + this.fluidStack = fluidStack; + this.style = style; + } + + public FluidStackElement(RegistryFriendlyByteBuf buf) { + if (buf.readBoolean()) { + this.fluidStack = FluidStack.OPTIONAL_STREAM_CODEC.decode(buf); + } else { + this.fluidStack = FluidStack.EMPTY; + } + + this.style = new FluidStyle().width(buf.readInt()).height(buf.readInt()); + } + + @Override + public void render(GuiGraphics guiGraphics, int x, int y) { + RenderSystem.disableBlend(); + if (!fluidStack.isEmpty()) { + x += 2; + y += 2; + int width = style.getWidth() - 4; + int height = style.getHeight() - 4; + DrawerHelper.drawFluidForGui(guiGraphics, fluidStack, fluidStack.getAmount(), x, y, width, height); + + guiGraphics.pose().pushPose(); + guiGraphics.pose().scale(0.5F, 0.5F, 1); + String s = TextFormattingUtil.formatLongToCompactStringBuckets(fluidStack.getAmount(), 3) + "B"; + Font fontRenderer = Minecraft.getInstance().font; + guiGraphics.drawString(fontRenderer, s, (x + (width / 3f)) * 2 - fontRenderer.width(s) + 21, + (y + (height / 3f) + 6) * 2, 0xFFFFFF, true); + guiGraphics.pose().popPose(); + } + RenderSystem.enableBlend(); + RenderSystem.setShaderColor(1, 1, 1, 1); + } + + @Override + public int getWidth() { + return style.getWidth(); + } + + @Override + public int getHeight() { + return style.getHeight(); + } + + @Override + public void toBytes(FriendlyByteBuf friendlyByteBuf) { + RegistryFriendlyByteBuf registryFriendlyByteBuf = new RegistryFriendlyByteBuf(friendlyByteBuf, + GTRegistries.builtinRegistry()); + if (!fluidStack.isEmpty()) { + friendlyByteBuf.writeBoolean(true); + FluidStack.OPTIONAL_STREAM_CODEC.encode(registryFriendlyByteBuf, fluidStack); + } else { + friendlyByteBuf.writeBoolean(false); + } + + friendlyByteBuf.writeInt(this.style.getWidth()); + friendlyByteBuf.writeInt(this.style.getHeight()); + } + + @Override + public ResourceLocation getID() { + return GTCEu.id("fluid_element"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/element/FluidStyle.java b/src/main/java/com/gregtechceu/gtceu/integration/top/element/FluidStyle.java new file mode 100644 index 0000000000..94bd75ca39 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/element/FluidStyle.java @@ -0,0 +1,27 @@ +package com.gregtechceu.gtceu.integration.top.element; + +import lombok.Getter; + +@Getter +public class FluidStyle implements IFluidStyle { + + private int width = 20; + + private int height = 20; + + public FluidStyle() {/**/} + + public IFluidStyle copy() { + return new FluidStyle().bounds(this.width, this.height); + } + + public IFluidStyle width(int w) { + this.width = w; + return this; + } + + public IFluidStyle height(int h) { + this.height = h; + return this; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/element/IFluidStyle.java b/src/main/java/com/gregtechceu/gtceu/integration/top/element/IFluidStyle.java new file mode 100644 index 0000000000..e23a4d6e9c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/element/IFluidStyle.java @@ -0,0 +1,18 @@ +package com.gregtechceu.gtceu.integration.top.element; + +public interface IFluidStyle { + + IFluidStyle copy(); + + IFluidStyle width(int var1); + + IFluidStyle height(int var1); + + default IFluidStyle bounds(int width, int height) { + return this.width(width).height(height); + } + + int getWidth(); + + int getHeight(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/AutoOutputInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/AutoOutputInfoProvider.java new file mode 100644 index 0000000000..a03da60098 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/AutoOutputInfoProvider.java @@ -0,0 +1,87 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.CompoundText; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; +import mcjty.theoneprobe.api.TextStyleClass; +import mcjty.theoneprobe.apiimpl.styles.ItemStyle; +import org.apache.commons.lang3.StringUtils; + +public class AutoOutputInfoProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("auto_output_info"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + var pos = iProbeHitData.getPos(); + + if (MetaMachine.getMachine(level, pos) instanceof IAutoOutputItem outputItem) { + var direction = outputItem.getOutputFacingItems(); + addAutoOutputInfo(iProbeInfo, player, level, pos, direction, "gtceu.top.item_auto_output", + outputItem.isAllowInputFromOutputSideItems(), outputItem.isAutoOutputItems()); + + } + if (MetaMachine.getMachine(level, pos) instanceof IAutoOutputFluid outputFluid) { + var direction = outputFluid.getOutputFacingFluids(); + addAutoOutputInfo(iProbeInfo, player, level, pos, direction, "gtceu.top.item_auto_output", + outputFluid.isAllowInputFromOutputSideFluids(), outputFluid.isAutoOutputFluids()); + + } + } + + private void addAutoOutputInfo(IProbeInfo iProbeInfo, Player player, Level level, BlockPos blockPos, + Direction direction, String text, boolean allowInput, boolean auto) { + if (direction != null) { + IProbeInfo horizontalPane = iProbeInfo + .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontalPane.text(CompoundText.create() + .info(Component.translatable(text, StringUtils.capitalize(direction.getName()) + " "))); + if (player.isShiftKeyDown()) { + if (level != null) { + var pos = blockPos.relative(direction); + var block = level.getBlockState(pos).getBlock().asItem().getDefaultInstance(); + if (!block.isEmpty()) { + horizontalPane.item(block, new ItemStyle().width(16).height(16)).text(" "); + } + } + } + + if (allowInput || auto) { + var compoundText = CompoundText.create().text("("); + if (auto) { + compoundText.ok(Component.translatable("gtceu.top.auto_output")); + } + + if (allowInput && auto) { + compoundText.style(TextStyleClass.INFO).text("/"); + } + + if (allowInput) { + compoundText.ok(Component.translatable("gtceu.top.allow_output_input")); + } + compoundText.style(TextStyleClass.INFO).text(")"); + horizontalPane.text(compoundText); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/CableInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/CableInfoProvider.java new file mode 100644 index 0000000000..f819034570 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/CableInfoProvider.java @@ -0,0 +1,52 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.common.block.CableBlock; +import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.*; + +import static com.gregtechceu.gtceu.utils.FormattingUtil.DECIMAL_FORMAT_1F; + +public class CableInfoProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("cable_info"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + if (blockState.getBlock() instanceof CableBlock cableBlock) { + CableBlockEntity cable = (CableBlockEntity) cableBlock.getPipeTile(level, iProbeHitData.getPos()); + if (cable != null) { + long voltage = cable.getCurrentMaxVoltage(); + double amperage = cable.getAverageAmperage(); + IProbeInfo horizontalPane = iProbeInfo + .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontalPane.text(Component.translatable("gtceu.top.cable_voltage")); + if (voltage != 0) { + horizontalPane.text(GTValues.VNF[GTUtil.getTierByVoltage(voltage)]).text(" / "); + } + horizontalPane.text(GTValues.VNF[GTUtil.getTierByVoltage(cable.getMaxVoltage())]); + + horizontalPane = iProbeInfo + .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontalPane.text(Component.translatable("gtceu.top.cable_amperage")); + if (amperage != 0) { + horizontalPane.text(DECIMAL_FORMAT_1F.format(cable.getAverageAmperage()) + "A / "); + } + horizontalPane.text(DECIMAL_FORMAT_1F.format(cable.getMaxAmperage()) + "A"); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ExhaustVentInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ExhaustVentInfoProvider.java new file mode 100644 index 0000000000..7c643f601f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ExhaustVentInfoProvider.java @@ -0,0 +1,69 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +import mcjty.theoneprobe.api.CompoundText; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.TextStyleClass; +import mcjty.theoneprobe.apiimpl.styles.ItemStyle; +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.Nullable; + +public class ExhaustVentInfoProvider extends CapabilityInfoProvider { + + @Nullable + @Override + protected IExhaustVentMachine getCapability(Level level, BlockPos blockPos, @Nullable Direction direction) { + if (MetaMachine.getMachine(level, blockPos) instanceof IExhaustVentMachine exhaustVentMachine) { + return exhaustVentMachine; + } + return null; + } + + @Override + protected boolean allowDisplaying(IExhaustVentMachine capability) { + return super.allowDisplaying(capability); + } + + @Override + protected void addProbeInfo(IExhaustVentMachine iExhaustVentMachine, IProbeInfo iProbeInfo, Player player, + BlockEntity blockEntity, IProbeHitData iProbeHitData) { + IProbeInfo horizontalPane = iProbeInfo + .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + var direction = iExhaustVentMachine.getVentingDirection(); + horizontalPane.text(CompoundText.create().info(Component.translatable("gtceu.top.exhaust_vent_direction", + StringUtils.capitalize(direction.getName()) + " "))); + if (!iExhaustVentMachine.isVentingBlocked()) return; + + if (player.isShiftKeyDown()) { + var level = blockEntity.getLevel(); + var pos = blockEntity.getBlockPos().relative(direction); + if (level != null) { + var block = level.getBlockState(pos).getBlock().asItem().getDefaultInstance(); + horizontalPane.item(block, new ItemStyle().width(16).height(16)).text(" "); + } + } + if (iExhaustVentMachine.isNeedsVenting()) { + horizontalPane.text( + CompoundText.create().text("(").error(Component.translatable("gtceu.top.exhaust_vent_blocked")) + .style(TextStyleClass.INFO).text(")")); + } + } + + @Override + public ResourceLocation getID() { + return GTCEu.id("exhaust_vent_info"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java new file mode 100644 index 0000000000..7a292b409d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java @@ -0,0 +1,65 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; + +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.CompoundText; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; +import org.jetbrains.annotations.Nullable; + +public class MachineModeProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("machine_mode"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { + @Nullable + GTRecipeType[] recipeTypes = blockEntity.getMetaMachine().getDefinition().getRecipeTypes(); + if (recipeTypes != null && recipeTypes.length > 1) { + if (blockEntity.getMetaMachine() instanceof IRecipeLogicMachine recipeLogicMachine) { + GTRecipeType currentRecipeType = recipeLogicMachine.getRecipeType(); + if (player.isShiftKeyDown()) { + iProbeInfo.text(Component.translatable("gtceu.top.machine_mode")); + for (GTRecipeType recipeType : recipeTypes) { + IProbeInfo horizontalPane = iProbeInfo.horizontal( + iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + if (recipeType == currentRecipeType) { + horizontalPane.text(ChatFormatting.BLUE + " > "); + horizontalPane.text(CompoundText.create().important("%s.%s".formatted( + recipeType.registryName.getNamespace(), recipeType.registryName.getPath()))); + } else { + horizontalPane.text(" "); + horizontalPane.text(CompoundText.create().label("%s.%s".formatted( + recipeType.registryName.getNamespace(), recipeType.registryName.getPath()))); + } + } + } else { + iProbeInfo.text( + Component.translatable("gtceu.top.machine_mode") + .append(Component.translatable("%s.%s".formatted( + currentRecipeType.registryName.getNamespace(), + currentRecipeType.registryName.getPath())))); + } + } + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MaintenanceInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MaintenanceInfoProvider.java new file mode 100644 index 0000000000..071e9e0917 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MaintenanceInfoProvider.java @@ -0,0 +1,72 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +import mcjty.theoneprobe.api.CompoundText; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.apiimpl.styles.ItemStyle; +import org.jetbrains.annotations.Nullable; + +public class MaintenanceInfoProvider extends CapabilityInfoProvider { + + @Nullable + @Override + protected IMaintenanceMachine getCapability(Level level, BlockPos blockPos, @Nullable Direction direction) { + var cap = GTCapabilityHelper.getMaintenanceMachine(level, blockPos, direction); + if (cap != null) { + return cap; + } + if (MetaMachine.getMachine(level, blockPos) instanceof IMultiController controller) { + for (var part : controller.getParts()) { + if (part instanceof IMaintenanceMachine maintenanceMachine) { + return maintenanceMachine; + } + } + } + return null; + } + + @Override + protected void addProbeInfo(IMaintenanceMachine maintenanceMachine, IProbeInfo iProbeInfo, Player player, + BlockEntity blockEntity, IProbeHitData iProbeHitData) { + IProbeInfo verticalPane = iProbeInfo.vertical(iProbeInfo.defaultLayoutStyle().spacing(0)); + if (maintenanceMachine.hasMaintenanceProblems()) { + if (player.isShiftKeyDown()) { + int problems = maintenanceMachine.getMaintenanceProblems(); + for (byte i = 0; i < 6; i++) { + if (((problems >> i) & 1) == 0) { + IProbeInfo horizontalPane = verticalPane + .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + var tuple = GTUtil.getMaintenanceText(i); + horizontalPane.item(tuple.getA(), new ItemStyle().width(16).height(16)) + .text(tuple.getB()); + } + } + } else { + verticalPane.text(CompoundText.create().error(Component.translatable("gtceu.top.maintenance_broken"))); + } + } else { + verticalPane.text(CompoundText.create().ok(Component.translatable("gtceu.top.maintenance_fixed"))); + } + } + + @Override + public ResourceLocation getID() { + return GTCEu.id("maintenance_info"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java new file mode 100644 index 0000000000..f7446f040e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java @@ -0,0 +1,38 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.CompoundText; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; + +public class MulitblockStructureProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("multiblock_structure"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { + if (blockEntity.getMetaMachine() instanceof IMultiController controller) { + if (controller.getMultiblockState().hasError()) { + iProbeInfo.text(CompoundText.create().error("gtceu.top.invalid_structure")); + } else { + iProbeInfo.text(CompoundText.create().ok("gtceu.top.valid_structure")); + } + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java new file mode 100644 index 0000000000..a5b724c6eb --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/ParallelProvider.java @@ -0,0 +1,54 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.IParallelHatch; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; + +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; + +import java.util.Optional; + +public class ParallelProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("parallel"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + BlockEntity blockEntity = level.getBlockEntity(iProbeHitData.getPos()); + if (blockEntity instanceof MetaMachineBlockEntity machineBlockEntity) { + int parallel = 0; + if (machineBlockEntity.getMetaMachine() instanceof IParallelHatch parallelHatch) { + parallel = parallelHatch.getCurrentParallel(); + } else if (machineBlockEntity.getMetaMachine() instanceof IMultiController controller) { + Optional parallelHatch = controller.getParts().stream() + .filter(IParallelHatch.class::isInstance) + .map(IParallelHatch.class::cast) + .findAny(); + if (parallelHatch.isPresent()) { + parallel = parallelHatch.get().getCurrentParallel(); + } + } + if (parallel > 0) { + iProbeInfo.text(Component.translatable( + "gtceu.multiblock.parallel", + Component.literal(parallel + "").withStyle(ChatFormatting.DARK_PURPLE))); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java new file mode 100644 index 0000000000..5fedf885c9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.integration.top.element.FluidStackElement; +import com.gregtechceu.gtceu.integration.top.element.FluidStyle; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.neoforged.neoforge.fluids.FluidStack; + +import mcjty.theoneprobe.api.CompoundText; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.apiimpl.styles.ItemStyle; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class RecipeOutputProvider extends CapabilityInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("recipe_output_info"); + } + + @Nullable + @Override + protected RecipeLogic getCapability(Level level, BlockPos blockPos, @Nullable Direction direction) { + return GTCapabilityHelper.getRecipeLogic(level, blockPos, direction); + } + + @Override + protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Player player, BlockEntity blockEntity, + IProbeHitData iProbeHitData) { + if (recipeLogic.isWorking()) { + var recipe = recipeLogic.getLastRecipe(); + if (recipe != null) { + IProbeInfo verticalPane = iProbeInfo.vertical(iProbeInfo.defaultLayoutStyle().spacing(0)); + verticalPane.text( + CompoundText.create().info(Component.translatable("gtceu.top.recipe_output").append(" "))); + List outputItems = RecipeHelper.getOutputItems(recipe); + if (!outputItems.isEmpty()) { + addItemInfo(verticalPane, outputItems); + } + + List outputFluids = RecipeHelper.getOutputFluids(recipe); + if (!outputFluids.isEmpty()) { + addFluidInfo(verticalPane, outputFluids); + } + } + } + } + + private void addItemInfo(IProbeInfo verticalPane, List outputItems) { + IProbeInfo horizontalPane; + for (ItemStack itemOutput : outputItems) { + if (itemOutput != null && !itemOutput.isEmpty()) { + horizontalPane = verticalPane + .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontalPane.item(itemOutput, new ItemStyle().width(16).height(16)).text(" ").itemLabel(itemOutput); + } + } + } + + private void addFluidInfo(IProbeInfo verticalPane, List outputFluids) { + IProbeInfo horizontalPane; + for (FluidStack fluidOutput : outputFluids) { + if (fluidOutput != null && !fluidOutput.isEmpty()) { + horizontalPane = verticalPane + .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontalPane.element(new FluidStackElement(fluidOutput, new FluidStyle())).text(" ") + .text(fluidOutput.getHoverName()); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java new file mode 100644 index 0000000000..0ed59e7c60 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java @@ -0,0 +1,46 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; + +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; + +import java.util.Locale; + +public class StainedColorProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("stained_color"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + BlockEntity blockEntity = level.getBlockEntity(iProbeHitData.getPos()); + int paintingColor = -1; + if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { + paintingColor = machineBlockEntity.getMetaMachine().getPaintingColor(); + } else if (blockEntity instanceof PipeBlockEntity pipe) { + paintingColor = pipe.getPaintingColor(); + } + if (paintingColor != -1) { + IProbeInfo horizontal = iProbeInfo + .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontal.mcText(Component.translatable("gtceu.top.stained", + "#" + Integer.toHexString(paintingColor).toUpperCase(Locale.ROOT))); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java index bfa68b5d9f..6283aea697 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java @@ -25,7 +25,10 @@ public class FormattingUtil { private static final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(Locale.ROOT); - private static final DecimalFormat TWO_PLACES_FORMAT = new DecimalFormat("#.##"); + public static final DecimalFormat DECIMAL_FORMAT_0F = new DecimalFormat("#"); + public static final DecimalFormat DECIMAL_FORMAT_1F = new DecimalFormat("#.#"); + public static final DecimalFormat DECIMAL_FORMAT_2F = new DecimalFormat("#.##"); + public static final DecimalFormat DECIMAL_FORMAT_SIC = new DecimalFormat("0E00"); private static final int SMALL_DOWN_NUMBER_BASE = '\u2080'; private static final int SMALL_UP_NUMBER_BASE = '\u2070'; @@ -164,7 +167,7 @@ public static String formatNumbers(Object number) { @NotNull public static String formatNumber2Places(float number) { - return TWO_PLACES_FORMAT.format(number); + return DECIMAL_FORMAT_2F.format(number); } public static Component formatPercentage2Places(String langKey, float percentage) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index c11ccdaedc..e40129c58b 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -2,11 +2,11 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.fluid.store.FluidStorageKeys; +import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.material.material.Material; import com.gregtechceu.gtceu.api.material.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.tag.TagPrefix; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.lowdragmc.lowdraglib.LDLib; import com.lowdragmc.lowdraglib.side.fluid.FluidHelper; @@ -17,8 +17,10 @@ import net.minecraft.core.Direction; import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.tags.BiomeTags; import net.minecraft.util.RandomSource; +import net.minecraft.util.Tuple; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -30,6 +32,7 @@ import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import com.google.common.math.LongMath; import com.mojang.blaze3d.platform.InputConstants; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -188,6 +191,20 @@ public static byte getTierByVoltage(long voltage) { return (byte) Math.min(GTValues.MAX, nearestLesser(GTValues.V, voltage) + 1); } + public static int getFakeVoltageTier(long voltage) { + long a = voltage; + int b = 0; + while (a / 4L >= 8L) { + b++; + a /= 4L; + } + return b; + } + + public static long getVoltageFromFakeTier(int tier) { + return LongMath.pow(4L, tier + 1) * 2; + } + /** * Ex: This method turns both 1024 and 512 into HV. * @@ -332,7 +349,7 @@ public static int getPumpBiomeModifier(Holder biome) { return FluidHelper.getBucket() / 4; } else if (biome.is(Tags.Biomes.IS_COLD)) { return FluidHelper.getBucket() * 175 / 1000; - } else if (biome.is(CustomTags.IS_SANDY)) { + } else if (biome.is(Tags.Biomes.IS_SANDY)) { return FluidHelper.getBucket() * 170 / 1000; } return FluidHelper.getBucket() / 10; @@ -432,4 +449,21 @@ public static void appendHazardTooltips(Material material, List toolt } tooltipComponents.add(Component.translatable("gtceu.medical_condition.description")); } + + public static Tuple getMaintenanceText(byte flag) { + return switch (flag) { + case 0 -> new Tuple<>(ToolItemHelper.getToolItem(GTToolType.WRENCH), + Component.translatable("gtceu.top.maintenance.wrench")); + case 1 -> new Tuple<>(ToolItemHelper.getToolItem(GTToolType.SCREWDRIVER), + Component.translatable("gtceu.top.maintenance.screwdriver")); + case 2 -> new Tuple<>(ToolItemHelper.getToolItem(GTToolType.SOFT_MALLET), + Component.translatable("gtceu.top.maintenance.soft_mallet")); + case 3 -> new Tuple<>(ToolItemHelper.getToolItem(GTToolType.HARD_HAMMER), + Component.translatable("gtceu.top.maintenance.hard_hammer")); + case 4 -> new Tuple<>(ToolItemHelper.getToolItem(GTToolType.WIRE_CUTTER), + Component.translatable("gtceu.top.maintenance.wire_cutter")); + default -> new Tuple<>(ToolItemHelper.getToolItem(GTToolType.CROWBAR), + Component.translatable("gtceu.top.maintenance.crowbar")); + }; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java index 01de6bb95a..09b0e9b35f 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java @@ -33,7 +33,6 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import io.netty.buffer.ByteBuf; -import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -57,11 +56,6 @@ public static ItemStack getDefaultResearchStationItem(int cwut) { private ResearchManager() {} - @ApiStatus.Internal - public static void registerScannerLogic() { - GTRecipeType.registerCustomScannerLogic(new DataStickCopyScannerLogic()); - } - /** * @param stack the ItemStack to write to * @param researchId the research id @@ -164,7 +158,7 @@ public record ResearchItem(String researchId, ResourceLocation researchRecipeTyp ResearchItem::new); } - public static class DataStickCopyScannerLogic implements GTRecipeType.ICustomScannerLogic { + public static class DataStickCopyScannerLogic implements GTRecipeType.ICustomRecipeLogic { private static final int EUT = 2; private static final int DURATION = 100; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ToolItemHelper.java b/src/main/java/com/gregtechceu/gtceu/utils/ToolItemHelper.java new file mode 100644 index 0000000000..80a733ddc9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/ToolItemHelper.java @@ -0,0 +1,55 @@ +package com.gregtechceu.gtceu.utils; + +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.IElectricItem; +import com.gregtechceu.gtceu.api.item.capability.ElectricItem; +import com.gregtechceu.gtceu.api.item.tool.GTToolType; +import com.gregtechceu.gtceu.data.item.GTItems; +import com.gregtechceu.gtceu.data.material.GTMaterials; + +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; + +import java.util.HashMap; +import java.util.Map; + +public class ToolItemHelper { + + public static final Map TOOL_CACHE = new HashMap<>(); + + /** + * Attempts to get an electric item variant with override of max charge + * + * @param maxCharge new max charge of this electric item + * @return item stack with given max charge + * @throws java.lang.IllegalStateException if this item is not electric item or uses custom implementation + */ + public static ItemStack getMaxChargeOverrideStack(Item item, long maxCharge) { + ItemStack itemStack = item.getDefaultInstance(); + IElectricItem electricItem = GTCapabilityHelper.getElectricItem(itemStack); + if (electricItem == null) { + throw new IllegalStateException("Not an electric item."); + } + if (!(electricItem instanceof ElectricItem)) { + throw new IllegalStateException("Only standard ElectricItem implementation supported, but this item uses " + + electricItem.getClass()); + } + ((ElectricItem) electricItem).setMaxChargeOverride(maxCharge); + return itemStack; + } + + /** + * get tool itemStack by GTToolType with default Material + * + * @param toolType GTToolType + * @return the tool itemStack + */ + public static ItemStack getToolItem(GTToolType toolType) { + return TOOL_CACHE.computeIfAbsent(toolType, type -> { + if (type == GTToolType.SOFT_MALLET) { + return GTItems.TOOL_ITEMS.get(GTMaterials.Rubber, type).asStack(); + } + return GTItems.TOOL_ITEMS.get(GTMaterials.Neutronium, type).asStack(); + }); + } +} diff --git a/src/main/resources/assets/gtceu/lang/ja_jp.json b/src/main/resources/assets/gtceu/lang/ja_jp.json index 0b13aea742..78e877e57f 100644 --- a/src/main/resources/assets/gtceu/lang/ja_jp.json +++ b/src/main/resources/assets/gtceu/lang/ja_jp.json @@ -23,8 +23,8 @@ "behavior.portable_scanner.environmental_hazard": "チャンク内の環境汚染: %s§r - %s ppm", "behavior.portable_scanner.environmental_hazard.nothing": "チャンク内の環境汚染: §6なし§r", "behavior.portable_scanner.eu_per_sec": "平均(直近1秒): %s EU/t", - "behavior.portable_scanner.local_hazard": "チャンク内のローカル汚染: %s§r - %s ppm", - "behavior.portable_scanner.local_hazard.nothing": "チャンク内のローカル汚染: §6なし§r", + "behavior.portable_scanner.local_hazard": "エリア内のローカル汚染: %s§r - %s ppm", + "behavior.portable_scanner.local_hazard.nothing": "エリア内のローカル汚染: §6なし§r", "behavior.portable_scanner.machine_disabled": "無効", "behavior.portable_scanner.machine_front_facing": "正面向き: %s", "behavior.portable_scanner.machine_power_loss": "エネルギー不足で停止", @@ -97,7 +97,9 @@ "block.gtceu.atomic_casing": "原子マシン外装", "block.gtceu.auto_maintenance_hatch": "自動メンテナンスハッチ", "block.gtceu.bio_hazard_sign_block": "生物学的危害警告ブロック", + "block.gtceu.black_borderless_lamp": "黒のボーダーレスランプ", "block.gtceu.black_lamp": "黒のランプ", + "block.gtceu.blue_borderless_lamp": "青のボーダーレスランプ", "block.gtceu.blue_lamp": "青のランプ", "block.gtceu.boss_hazard_sign_block": "ボス危害警告ブロック", "block.gtceu.bronze_brick_casing": "ブロンズレンガ筐体", @@ -108,6 +110,7 @@ "block.gtceu.bronze_large_boiler": "ブロンズ製大型ボイラー", "block.gtceu.bronze_machine_casing": "ブロンズ製マシン外装", "block.gtceu.bronze_pipe_casing": "ブロンズ製パイプ外装", + "block.gtceu.brown_borderless_lamp": "茶色のボーダーレスランプ", "block.gtceu.brown_lamp": "茶色のランプ", "block.gtceu.casing_bronze_bricks": "ブロンズ製マシン外装", "block.gtceu.casing_coke_bricks": "コークス炉用レンガブロック", @@ -142,6 +145,7 @@ "block.gtceu.creative_tank": "クリエイティブタンク", "block.gtceu.crushing_wheels": "破砕歯車", "block.gtceu.cupronickel_coil_block": "キュプロニッケルコイルブロック", + "block.gtceu.cyan_borderless_lamp": "青緑色のボーダーレスランプ", "block.gtceu.cyan_lamp": "青緑色のランプ", "block.gtceu.dark_concrete": "暗色コンクリート", "block.gtceu.dark_concrete_bricks": "暗色コンクリートのレンガ", @@ -266,7 +270,9 @@ "block.gtceu.gas_large_turbine": "大型ガスタービン", "block.gtceu.generic_hazard_sign_block": "汎用危害警告ブロック", "block.gtceu.gold_drum": "金製ドラム", + "block.gtceu.gray_borderless_lamp": "灰色のボーダーレスランプ", "block.gtceu.gray_lamp": "灰色のランプ", + "block.gtceu.green_borderless_lamp": "緑色のボーダーレスランプ", "block.gtceu.green_lamp": "緑色のランプ", "block.gtceu.gregification_hazard_sign_block": "Greg化危害警告ブロック", "block.gtceu.heat_vent": "排熱口", @@ -465,6 +471,9 @@ "block.gtceu.iv_world_accelerator": "§9精鋭型世界加速機 §r", "block.gtceu.kanthal_coil_block": "カンタルコイルブロック", "block.gtceu.laminated_glass": "合わせガラス", + "block.gtceu.lamp.tooltip.inverted": "反転", + "block.gtceu.lamp.tooltip.no_bloom": "咲かない", + "block.gtceu.lamp.tooltip.no_light": "光らない", "block.gtceu.large_arc_smelter": "大型アーク炉", "block.gtceu.large_assembler": "大型組立工場", "block.gtceu.large_autoclave": "大型結晶化チャンバー", @@ -492,6 +501,7 @@ "block.gtceu.large_wiremill": "大型ワイヤーファクトリー", "block.gtceu.laser_hazard_sign_block": "レーザー危害警告ブロック", "block.gtceu.laser_safe_engraving_casing": "耐レーザー刻印マシン外装", + "block.gtceu.light_blue_borderless_lamp": "空色のボーダーレスランプ", "block.gtceu.light_blue_lamp": "空色のランプ", "block.gtceu.light_concrete": "明色コンクリート", "block.gtceu.light_concrete_bricks": "明色コンクリートのレンガ", @@ -500,7 +510,9 @@ "block.gtceu.light_concrete_tile": "明色コンクリートのタイル", "block.gtceu.light_concrete_windmill_a": "明色コンクリート風車A", "block.gtceu.light_concrete_windmill_b": "明色コンクリート風車B", + "block.gtceu.light_gray_borderless_lamp": "薄灰色のボーダーレスランプ", "block.gtceu.light_gray_lamp": "薄灰色のランプ", + "block.gtceu.lime_borderless_lamp": "黄緑色のボーダーレスランプ", "block.gtceu.lime_lamp": "黄緑色のランプ", "block.gtceu.long_distance_fluid_pipeline": "長距離液体パイプライン", "block.gtceu.long_distance_fluid_pipeline_endpoint": "長距離液体パイプ接続口", @@ -684,6 +696,7 @@ "block.gtceu.lv_transformer_4a": "4A対応LV変圧器", "block.gtceu.lv_wiremill": "基本型ワイヤー作製機 §r", "block.gtceu.lv_world_accelerator": "基本型世界加速機 §r", + "block.gtceu.magenta_borderless_lamp": "赤紫色のボーダーレスランプ", "block.gtceu.magenta_lamp": "赤紫色のランプ", "block.gtceu.magic_hazard_sign_block": "魔術的危害警告ブロック", "block.gtceu.magnetic_hazard_sign_block": "磁力危害警告ブロック", @@ -903,9 +916,12 @@ "block.gtceu.opv_substation_output_hatch_64a": "§9§l大型蓄電器用OpV 64A ダイナモハッチ", "block.gtceu.opv_thermal_centrifuge": "§9§l伝説の熱遠心分離機 §r", "block.gtceu.opv_wiremill": "§9§l伝説のワイヤー作製機 §r", + "block.gtceu.orange_borderless_lamp": "橙色のボーダーレスランプ", "block.gtceu.orange_lamp": "橙色のランプ", + "block.gtceu.overworld_marker": "オーバーワールド", "block.gtceu.palladium_substation": "パラジウム製大型蓄電器用外装", "block.gtceu.petrified_foam": "石化したフォーム", + "block.gtceu.pink_borderless_lamp": "桃色のボーダーレスランプ", "block.gtceu.pink_lamp": "桃色のランプ", "block.gtceu.plascrete": "プラスクリート", "block.gtceu.plasma_large_turbine": "大型プラズマタービン", @@ -921,10 +937,12 @@ "block.gtceu.ptfe_pipe_casing": "PTFE製パイプ外装", "block.gtceu.pump_deck": "ポンプデッキ", "block.gtceu.pump_hatch": "ポンプハッチ", + "block.gtceu.purple_borderless_lamp": "紫色のボーダーレスランプ", "block.gtceu.purple_lamp": "紫色のランプ", "block.gtceu.pyrolyse_oven": "熱分解炉", "block.gtceu.radioactive_hazard_sign_block": "放射性危害警告ブロック", "block.gtceu.reaction_safe_mixing_casing": "不活性混合用マシン外装", + "block.gtceu.red_borderless_lamp": "赤のボーダーレスランプ", "block.gtceu.red_granite": "赤色花崗岩", "block.gtceu.red_granite_bricks": "赤色花崗岩のレンガ", "block.gtceu.red_granite_cobblestone": "赤色花崗岩の丸石", @@ -1008,6 +1026,8 @@ "block.gtceu.sturdy_machine_casing": "頑丈なHSS-E製マシン外装", "block.gtceu.superconducting_coil": "超伝導コイルブロック", "block.gtceu.tempered_glass": "強化ガラス", + "block.gtceu.the_end_marker": "エンド", + "block.gtceu.the_nether_marker": "ネザー", "block.gtceu.titanium_crate": "チタン製クレート", "block.gtceu.titanium_drum": "チタン製ドラム", "block.gtceu.titanium_firebox_casing": "チタン製火室外装", @@ -1447,6 +1467,7 @@ "block.gtceu.vibration_safe_casing": "耐振動性マシン外装", "block.gtceu.void_hazard_sign_block": "亜空間危害警告ブロック", "block.gtceu.watertight_casing": "防水マシン外装", + "block.gtceu.white_borderless_lamp": "白のボーダーレスランプ", "block.gtceu.white_lamp": "白のランプ", "block.gtceu.wire_coil.tooltip_cracking": "§8接触分解装置:", "block.gtceu.wire_coil.tooltip_energy_cracking": " §aエネルギー使用量: §f%s%%", @@ -1462,6 +1483,7 @@ "block.gtceu.wood_wall": "木製の塀", "block.gtceu.wooden_multiblock_tank": "木製マルチブロックタンク", "block.gtceu.wooden_tank_valve": "木製タンクバルブ", + "block.gtceu.yellow_borderless_lamp": "黄色のボーダーレスランプ", "block.gtceu.yellow_lamp": "黄色のランプ", "block.gtceu.yellow_stripes_block.a": "黄色斜線ブロック", "block.gtceu.yellow_stripes_block.b": "黄色斜線ブロック", @@ -2059,9 +2081,11 @@ "config.gtceu.option.enableResearch": "研究の有効化", "config.gtceu.option.enableTieredCasings": "階層筐体の有効化", "config.gtceu.option.enableWorldAccelerators": "ワールドアクセラレーターの有効化", + "config.gtceu.option.enchantedTools": "エンチャント済みツール", "config.gtceu.option.energy": "エネルギー", "config.gtceu.option.energyConsumption": "エネルギー消費量", "config.gtceu.option.energyUsageMultiplier": "エネルギー使用量乗数", + "config.gtceu.option.environmentalHazardDecayRate": "環境汚染減衰率", "config.gtceu.option.environmentalHazards": "環境汚染", "config.gtceu.option.euToPlatformRatio": "EUプラットフォーム比率", "config.gtceu.option.flintAndSteelRequireSteel": "火打石と打ち金にスチールを要求する", @@ -2105,6 +2129,8 @@ "config.gtceu.option.nativeEUToPlatformNative": "ネイティブ EUからプラットフォーム・ネイティブへ", "config.gtceu.option.nerfPaperCrafting": "紙クラフトをナーフする", "config.gtceu.option.nerfWoodCrafting": "木のクラフトをナーフする", + "config.gtceu.option.orderedAssemblyLineFluids": "組立ライン用液体の注文", + "config.gtceu.option.orderedAssemblyLineItems": "組立ライン用アイテムの注文", "config.gtceu.option.oreGenerationChunkCacheSize": "鉱石生成チャンクキャッシュサイズ", "config.gtceu.option.oreIndicatorChunkCacheSize": "鉱石インジケータチャンクキャッシュサイズ", "config.gtceu.option.oreVeinGridSize": "鉱脈グリッドサイズ", @@ -2125,6 +2151,7 @@ "config.gtceu.option.rngDamageElectricTools": "ランダムダメージ電気工具", "config.gtceu.option.rubberTreeSpawnChance": "ゴムの木の出現確率", "config.gtceu.option.sandOresFall": "砂鉱石の落下", + "config.gtceu.option.showDimensionTier": "ディメンションティアを表示する", "config.gtceu.option.sprayCanChainLength": "スプレー缶チェーンの長さ", "config.gtceu.option.steelSteamMultiblocks": "スチール製マルチブロック", "config.gtceu.option.toolCraftingSounds": "ツールをクラフトに使用したときの音", @@ -2143,9 +2170,19 @@ "config.gtceu.option.worldAcceleratorBlacklist": "世界加速機のブラックリスト", "config.gtceu.option.worldgen": "ワールド生成", "config.gtceu.option.zombieSpawnWithSabers": "ゾンビがナノセイバーを持ってスポーンするか", + "config.jade.plugin_gtceu.auto_output_info": "[GTCEu] 自動出力情報", + "config.jade.plugin_gtceu.cable_info": "[GTCEu] ケーブル情報", "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] 制御可能", "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] 電気コンテナ", + "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] 排気ガス情報", + "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] 汚染洗浄", + "config.jade.plugin_gtceu.machine_mode": "[GTCEu] マシンモード", + "config.jade.plugin_gtceu.maintenance_info": "[GTCEu] メンテナンスモード", + "config.jade.plugin_gtceu.multiblock_structure": "[GTCEu] マルチブロック構造", + "config.jade.plugin_gtceu.parallel_info": "[GTCEu] パラレル情報", "config.jade.plugin_gtceu.recipe_logic_provider": "[GTCEu] レシピロジック", + "config.jade.plugin_gtceu.recipe_output_info": "[GTCEu] レシピアウトプット情報", + "config.jade.plugin_gtceu.stained_color": "[GTCEu] ステンドブロック情報", "config.jade.plugin_gtceu.workable_provider": "[GTCEu] 実行可能", "cover.advanced_energy_detector.invert.disabled.0": "アウトプット: ノーマル", "cover.advanced_energy_detector.invert.disabled.1": "", @@ -2458,6 +2495,7 @@ "gtceu.debug.f3_h.enabled": "GregTechがデバッグ情報を修正しました! 開発者向け: GregTech.cfgのmisc:debug設定オプションを有効にすることでより多くの情報を見ることができます。", "gtceu.distillation_tower": "蒸留塔", "gtceu.distillery": "蒸留機", + "gtceu.duct_pipe.transfer_rate": "§b空気搬送速度: %s", "gtceu.electric_blast_furnace": "工業用電気炉", "gtceu.electric_furnace": "電気かまど", "gtceu.electrolyzer": "電解槽", @@ -2583,6 +2621,12 @@ "gtceu.gui.title_bar.page_switcher": "ページ", "gtceu.gui.toggle_view.disabled": "液体スロット切り替え", "gtceu.gui.toggle_view.enabled": "アイテムスロット切り替え", + "gtceu.hazard_trigger.any": "接続先", + "gtceu.hazard_trigger.description": "原因:", + "gtceu.hazard_trigger.inhalation": "吸入", + "gtceu.hazard_trigger.none": "何もない", + "gtceu.hazard_trigger.protection.description": "保護する:", + "gtceu.hazard_trigger.skin_contact": "皮膚接触", "gtceu.implosion_compressor": "内破圧縮機", "gtceu.io.both": "両方", "gtceu.io.export": "搬出", @@ -2592,6 +2636,7 @@ "gtceu.item_filter.footer": "§e 書き換える項目でクリックする。", "gtceu.item_list.item_stored": "§7格納: %d", "gtceu.item_pipe.priority": "§9優先順位: §f%d", + "gtceu.jade.cleaned_this_second": "汚染の洗浄度: %s/s", "gtceu.jade.energy_stored": "%d / %d EU", "gtceu.jade.progress_computation": "進行度: %s / %s", "gtceu.jade.progress_sec": "%s / %s s", @@ -3667,16 +3712,25 @@ "gtceu.tooltip.hold_ctrl": "§7CTRLを押して詳細を表示", "gtceu.tooltip.hold_shift": "§7SHIFTを押して詳細を表示", "gtceu.tooltip.tool_fluid_hold_shift": "§7SHIFTで耐液体性能とツール情報を表示", + "gtceu.top.allow_output_input": "全てのインプット", + "gtceu.top.auto_output": "自動アウトプット", + "gtceu.top.cable_amperage": "電流: ", + "gtceu.top.cable_voltage": "電圧: ", "gtceu.top.convert_eu": "変換 §eEU§r -> §cFE§r", "gtceu.top.convert_fe": "変換 §cFE§r -> §eEU§r", "gtceu.top.energy_consumption": "使用量:", "gtceu.top.energy_production": "発電量:", "gtceu.top.energy_stored": " / %d EU", + "gtceu.top.exhaust_vent_blocked": "ロック中", + "gtceu.top.exhaust_vent_direction": "排気口: %s", "gtceu.top.filter.label": "フィルター:", + "gtceu.top.fluid_auto_output": "液体アウトプット: %s", "gtceu.top.fuel_min_consume": "必要", "gtceu.top.fuel_none": "燃料がない", "gtceu.top.invalid_structure": "構造に不備あり", + "gtceu.top.item_auto_output": "アイテムアウトプット: %s", "gtceu.top.link_cover.color": "色:", + "gtceu.top.machine_mode": "マシンモード: ", "gtceu.top.maintenance.crowbar": "部品がずれている", "gtceu.top.maintenance.hard_hammer": "メッキがへこんでいる", "gtceu.top.maintenance.screwdriver": "ネジが緩い", @@ -3692,6 +3746,8 @@ "gtceu.top.progress_computation": " / %s CWU", "gtceu.top.progress_sec": " / %s s", "gtceu.top.progress_tick": " / %s t", + "gtceu.top.recipe_output": "レシピアウトプット:", + "gtceu.top.stained": "カラー: %s", "gtceu.top.transform_down": "§aステップダウン§r", "gtceu.top.transform_input": "§6搬入:§r", "gtceu.top.transform_output": "§9搬出:§r", @@ -3805,7 +3861,9 @@ "item.gtceu.basic_integrated_circuit": "基本型集積回路", "item.gtceu.basic_integrated_circuit.tooltip.0": "§7より小さくよりパワフルに", "item.gtceu.basic_integrated_circuit.tooltip.1": "§cLV時代の回路", - "item.gtceu.battery.charge_detailed": "%d/%d EU - Tier %s §7(§%c%d%s 放出可能§7)", + "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s 放出可能§7)", + "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s 放出可能§7)", + "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s 放出可能§7)", "item.gtceu.battery.charge_time": "§a %s %s 放出可能(%s)", "item.gtceu.battery.charge_unit.hour": "時間", "item.gtceu.battery.charge_unit.minute": "分", @@ -5103,7 +5161,7 @@ "material.gtceu.magnesium": "マグネシウム", "material.gtceu.magnesium_chloride": "塩化マグネシウム", "material.gtceu.magnesium_diboride": "二ホウ化マグネシウム", - "material.gtceu.magnetic_iron": "今日も元気に回ります", + "material.gtceu.magnetic_iron": "磁化鉄", "material.gtceu.magnetic_neodymium": "磁化ネオジム", "material.gtceu.magnetic_samarium": "磁化サマリウム", "material.gtceu.magnetic_steel": "磁化スチール", diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json index 5155827636..7ba4ec04e4 100644 --- a/src/main/resources/assets/gtceu/lang/zh_tw.json +++ b/src/main/resources/assets/gtceu/lang/zh_tw.json @@ -20,10 +20,16 @@ "behavior.portable_scanner.energy_container_in":"輸入上限:%s(%s)EU,%s A", "behavior.portable_scanner.energy_container_out":"輸出上限:%s(%s)EU,%s A", "behavior.portable_scanner.energy_container_storage":"電量:%s EU / %s EU", + "behavior.portable_scanner.environmental_hazard":"區塊內的環境污染:%s§r - %s ppm", + "behavior.portable_scanner.environmental_hazard.nothing":"區塊內的環境污染:§6無§r", "behavior.portable_scanner.eu_per_sec":"最後一秒 %s EU/t", + "behavior.portable_scanner.local_hazard":"區塊內的其他污染:%s§r - %s ppm", + "behavior.portable_scanner.local_hazard.nothing":"區塊內的其他污染:§6無§r", "behavior.portable_scanner.machine_disabled":"已停止。", + "behavior.portable_scanner.machine_front_facing":"控制器面向:%s", "behavior.portable_scanner.machine_power_loss":"因斷電而停止工作。", "behavior.portable_scanner.machine_progress":"處理進度/總計:%s / %s", + "behavior.portable_scanner.machine_upwards_facing":"控制器正面朝向:%s", "behavior.portable_scanner.mode.caption":"顯示模式:%s", "behavior.portable_scanner.mode.show_all_info":"顯示所有資訊", "behavior.portable_scanner.mode.show_block_info":"顯示方塊資訊", @@ -60,7 +66,7 @@ "behaviour.paintspray.green.tooltip":"可以將物品染成綠色", "behaviour.paintspray.light_blue.tooltip":"可以將物品染成淺藍色", "behaviour.paintspray.light_gray.tooltip":"可以將物品染成銀色", - "behaviour.paintspray.lime.tooltip":"可以將物品染成黃綠色", + "behaviour.paintspray.lime.tooltip":"可以將物品染成淺綠色", "behaviour.paintspray.magenta.tooltip":"可以將物品染成洋紅色", "behaviour.paintspray.orange.tooltip":"可以將物品染成橙色", "behaviour.paintspray.pink.tooltip":"可以將物品染成粉紅色", @@ -159,6 +165,7 @@ "block.gtceu.ev_1a_energy_converter":"1安§5EV§r能量轉換器", "block.gtceu.ev_4a_energy_converter":"4安§5EV§r能量轉換器", "block.gtceu.ev_8a_energy_converter":"8安§5EV§r能量轉換器", + "block.gtceu.ev_air_scrubber":"§5進階空氣淨化器 III§r", "block.gtceu.ev_alloy_smelter":"§5進階合金爐 III§r", "block.gtceu.ev_arc_furnace":"§5進階電弧爐 III§r", "block.gtceu.ev_assembler":"§5進階組裝機 III§r", @@ -173,8 +180,8 @@ "block.gtceu.ev_canner":"§5進階裝罐機 III§r", "block.gtceu.ev_centrifuge":"§5進階離心機 III§r", "block.gtceu.ev_charger_4x":"4x超高壓充電機(§5EV§r)", - "block.gtceu.ev_chemical_bath":"§5進階化學浸洗機 III§r", - "block.gtceu.ev_chemical_reactor":"§5進階化學反應釜 III§r", + "block.gtceu.ev_chemical_bath":"§5進階化學水浴機 III§r", + "block.gtceu.ev_chemical_reactor":"§5進階化學反應器 III§r", "block.gtceu.ev_circuit_assembler":"§5進階電路組裝機 III§r", "block.gtceu.ev_compressor":"§5進階壓縮機 III§r", "block.gtceu.ev_cutter":"§5進階切割機 III§r", @@ -182,7 +189,7 @@ "block.gtceu.ev_distillery":"§5進階蒸餾室 III§r", "block.gtceu.ev_electric_furnace":"§5進階電爐 III§r", "block.gtceu.ev_electrolyzer":"§5進階電解機 III§r", - "block.gtceu.ev_electromagnetic_separator":"§5進階電磁選礦機 III§r", + "block.gtceu.ev_electromagnetic_separator":"§5進階電磁分離機 III§r", "block.gtceu.ev_energy_input_hatch":"§5EV§r能量輸入倉", "block.gtceu.ev_energy_input_hatch_16a":"16安§5EV§r能量輸入倉", "block.gtceu.ev_energy_input_hatch_4a":"4安§5EV§r能量輸入倉 ", @@ -287,10 +294,12 @@ "block.gtceu.hpca_empty_component":"空HPCA元件", "block.gtceu.hpca_heat_sink_component":"HPCA散熱元件", "block.gtceu.hssg_coil_block":"高速鋼-G線圈方塊", + "block.gtceu.huge_duct_pipe":"巨型風管", "block.gtceu.hv_16a_energy_converter":"16安§6HV§r能量轉換器", "block.gtceu.hv_1a_energy_converter":"1安§6HV§r能量轉換器", "block.gtceu.hv_4a_energy_converter":"4安§6HV§r能量轉換器", "block.gtceu.hv_8a_energy_converter":"8安§6HV§r能量轉換器", + "block.gtceu.hv_air_scrubber":"§6進階空氣淨化器 II§r", "block.gtceu.hv_alloy_smelter":"§6進階合金爐 II§r", "block.gtceu.hv_arc_furnace":"§6進階電弧爐 II§r", "block.gtceu.hv_assembler":"§6進階組裝機 II§r", @@ -305,8 +314,8 @@ "block.gtceu.hv_canner":"§6進階裝罐機 II§r", "block.gtceu.hv_centrifuge":"§6進階離心機 II§r", "block.gtceu.hv_charger_4x":"4x高壓充電機(§6HV§r)", - "block.gtceu.hv_chemical_bath":"§6進階化學浸洗機 II§r", - "block.gtceu.hv_chemical_reactor":"§6進階化學反應釜 II§r", + "block.gtceu.hv_chemical_bath":"§6進階化學水浴機 II§r", + "block.gtceu.hv_chemical_reactor":"§6進階化學反應器 II§r", "block.gtceu.hv_circuit_assembler":"§6進階電路組裝機 II§r", "block.gtceu.hv_combustion":"§6進階內燃發電機 II§r", "block.gtceu.hv_compressor":"§6進階壓縮機 II§r", @@ -315,7 +324,7 @@ "block.gtceu.hv_distillery":"§6進階蒸餾室 II§r", "block.gtceu.hv_electric_furnace":"§6進階電爐 II§r", "block.gtceu.hv_electrolyzer":"§6進階電解機 II§r", - "block.gtceu.hv_electromagnetic_separator":"§6進階電磁選礦機 II§r", + "block.gtceu.hv_electromagnetic_separator":"§6進階電磁分離機 II§r", "block.gtceu.hv_energy_input_hatch":"§6HV§r能量輸入倉", "block.gtceu.hv_energy_output_hatch":"§6HV§r能量輸出倉", "block.gtceu.hv_extractor":"§6進階提取機 II§r", @@ -390,8 +399,8 @@ "block.gtceu.iv_canner":"§9精英裝罐機§r", "block.gtceu.iv_centrifuge":"§9精英離心機§r", "block.gtceu.iv_charger_4x":"4x強導壓充電機(§9IV§r)", - "block.gtceu.iv_chemical_bath":"§9精英化學浸洗機§r", - "block.gtceu.iv_chemical_reactor":"§9精英化學反應釜§r", + "block.gtceu.iv_chemical_bath":"§9精英化學水浴機§r", + "block.gtceu.iv_chemical_reactor":"§9精英化學反應器§r", "block.gtceu.iv_circuit_assembler":"§9精英電路組裝機§r", "block.gtceu.iv_compressor":"§9精英壓縮機§r", "block.gtceu.iv_cutter":"§9精英切割機§r", @@ -399,7 +408,7 @@ "block.gtceu.iv_distillery":"§9精英蒸餾室§r", "block.gtceu.iv_electric_furnace":"§9精英電爐§r", "block.gtceu.iv_electrolyzer":"§9精英電解機§r", - "block.gtceu.iv_electromagnetic_separator":"§9精英電磁選礦機§r", + "block.gtceu.iv_electromagnetic_separator":"§9精英電磁分離機§r", "block.gtceu.iv_energy_input_hatch":"§9IV§r能量輸入倉", "block.gtceu.iv_energy_input_hatch_16a":"16安§9IV§r能量輸入倉", "block.gtceu.iv_energy_input_hatch_4a":"4安§9IV§r能量輸入倉", @@ -461,12 +470,13 @@ "block.gtceu.large_autoclave":"大型高壓結晶室", "block.gtceu.large_brewer":"大型釀造廠", "block.gtceu.large_centrifuge":"大型離心機組", - "block.gtceu.large_chemical_bath":"大型化學浸洗機", - "block.gtceu.large_chemical_reactor":"大型化學反應釜", + "block.gtceu.large_chemical_bath":"大型化學水浴機", + "block.gtceu.large_chemical_reactor":"大型化學反應器", "block.gtceu.large_circuit_assembler":"大型電路組裝設施", "block.gtceu.large_combustion_engine":"大型內燃引擎", "block.gtceu.large_cutter":"大型切割機", "block.gtceu.large_distillery":"大型分餾蒸餾廠", + "block.gtceu.large_duct_pipe":"大型風管", "block.gtceu.large_electrolyzer":"大型電解槽", "block.gtceu.large_electromagnet":"大型電磁工廠", "block.gtceu.large_engraving_laser":"大型雷射蝕刻機", @@ -491,7 +501,7 @@ "block.gtceu.light_concrete_windmill_a":"淺色混凝土風車形磚瓦 A", "block.gtceu.light_concrete_windmill_b":"淺色混凝土風車形磚瓦 B", "block.gtceu.light_gray_lamp":"淺灰色燈", - "block.gtceu.lime_lamp":"黃綠色燈", + "block.gtceu.lime_lamp":"淺綠色燈", "block.gtceu.long_distance_fluid_pipeline":"長距離流體管道", "block.gtceu.long_distance_fluid_pipeline_endpoint":"長距離流體管道介面", "block.gtceu.long_distance_item_pipeline":"長距離物品管道", @@ -535,8 +545,8 @@ "block.gtceu.luv_canner":"§d精英裝罐機 II§r", "block.gtceu.luv_centrifuge":"§d精英離心機 II§r", "block.gtceu.luv_charger_4x":"4x劇差壓充電機(§dLuV§r)", - "block.gtceu.luv_chemical_bath":"§d精英化學浸洗機 II§r", - "block.gtceu.luv_chemical_reactor":"§d精英化學反應釜 II§r", + "block.gtceu.luv_chemical_bath":"§d精英化學水浴機 II§r", + "block.gtceu.luv_chemical_reactor":"§d精英化學反應器 II§r", "block.gtceu.luv_circuit_assembler":"§d精英電路組裝機 II§r", "block.gtceu.luv_compressor":"§d精英壓縮機 II§r", "block.gtceu.luv_cutter":"§d精英切割機 II§r", @@ -544,7 +554,7 @@ "block.gtceu.luv_distillery":"§d精英蒸餾室 II§r", "block.gtceu.luv_electric_furnace":"§d精英電爐 II§r", "block.gtceu.luv_electrolyzer":"§d精英電解機 II§r", - "block.gtceu.luv_electromagnetic_separator":"§d精英電磁選礦機 II§r", + "block.gtceu.luv_electromagnetic_separator":"§d精英電磁分離機 II§r", "block.gtceu.luv_energy_input_hatch":"§dLuV§r能量輸入倉", "block.gtceu.luv_energy_input_hatch_16a":"16安§dLuV§r能量輸入倉", "block.gtceu.luv_energy_input_hatch_4a":"4安§dLuV§r能量輸入倉", @@ -604,6 +614,7 @@ "block.gtceu.lv_1a_energy_converter":"1安§7LV§r能量轉換器", "block.gtceu.lv_4a_energy_converter":"4安§7LV§r能量轉換器", "block.gtceu.lv_8a_energy_converter":"8安§7LV§r能量轉換器", + "block.gtceu.lv_air_scrubber":"基礎空氣淨化器§r", "block.gtceu.lv_alloy_smelter":"基礎合金爐§r", "block.gtceu.lv_arc_furnace":"基礎電弧爐§r", "block.gtceu.lv_assembler":"基礎組裝機§r", @@ -617,8 +628,8 @@ "block.gtceu.lv_canner":"基礎裝罐機§r", "block.gtceu.lv_centrifuge":"基礎離心機§r", "block.gtceu.lv_charger_4x":"4x低壓充電機(§7LV§r)", - "block.gtceu.lv_chemical_bath":"基礎化學浸洗機§r", - "block.gtceu.lv_chemical_reactor":"基礎化學反應釜§r", + "block.gtceu.lv_chemical_bath":"基礎化學水浴機§r", + "block.gtceu.lv_chemical_reactor":"基礎化學反應器§r", "block.gtceu.lv_circuit_assembler":"基礎電路組裝機§r", "block.gtceu.lv_combustion":"基礎內燃發電機§r", "block.gtceu.lv_compressor":"基礎壓縮機§r", @@ -627,7 +638,7 @@ "block.gtceu.lv_distillery":"基礎蒸餾室§r", "block.gtceu.lv_electric_furnace":"基礎電爐§r", "block.gtceu.lv_electrolyzer":"基礎電解機§r", - "block.gtceu.lv_electromagnetic_separator":"基礎電磁選礦機§r", + "block.gtceu.lv_electromagnetic_separator":"基礎電磁分離機§r", "block.gtceu.lv_energy_input_hatch":"§7LV§r能量輸入倉", "block.gtceu.lv_energy_output_hatch":"§7LV§r能量輸出倉", "block.gtceu.lv_extractor":"基礎提取機§r", @@ -733,6 +744,7 @@ "block.gtceu.mv_1a_energy_converter":"1安§bMV§r能量轉換器", "block.gtceu.mv_4a_energy_converter":"4安§bMV§r能量轉換器", "block.gtceu.mv_8a_energy_converter":"8安§bMV§r能量轉換器", + "block.gtceu.mv_air_scrubber":"§b進階空氣淨化器§r", "block.gtceu.mv_alloy_smelter":"§b進階合金爐§r", "block.gtceu.mv_arc_furnace":"§b進階電弧爐§r", "block.gtceu.mv_assembler":"§b進階組裝機§r", @@ -747,8 +759,8 @@ "block.gtceu.mv_canner":"§b進階裝罐機§r", "block.gtceu.mv_centrifuge":"§b進階離心機§r", "block.gtceu.mv_charger_4x":"4x中壓充電機(§bMV§r)", - "block.gtceu.mv_chemical_bath":"§b進階化學浸洗機§r", - "block.gtceu.mv_chemical_reactor":"§b進階化學反應釜§r", + "block.gtceu.mv_chemical_bath":"§b進階化學水浴機§r", + "block.gtceu.mv_chemical_reactor":"§b進階化學反應器§r", "block.gtceu.mv_circuit_assembler":"§b進階電路組裝機§r", "block.gtceu.mv_combustion":"§b進階內燃發電機§r", "block.gtceu.mv_compressor":"§b進階壓縮機§r", @@ -757,7 +769,7 @@ "block.gtceu.mv_distillery":"§b進階蒸餾室§r", "block.gtceu.mv_electric_furnace":"§b進階電爐§r", "block.gtceu.mv_electrolyzer":"§b進階電解機§r", - "block.gtceu.mv_electromagnetic_separator":"§b進階電磁選礦機§r", + "block.gtceu.mv_electromagnetic_separator":"§b進階電磁分離機§r", "block.gtceu.mv_energy_input_hatch":"§bMV§r能量輸入倉", "block.gtceu.mv_energy_output_hatch":"§bMV§r能量輸出倉", "block.gtceu.mv_extractor":"§b進階提取機§r", @@ -809,6 +821,7 @@ "block.gtceu.nichrome_coil_block":"鎳鉻合金線圈方塊", "block.gtceu.noise_hazard_sign_block":"噪音危害警示方塊", "block.gtceu.nonconducting_casing":"絕緣機械方塊", + "block.gtceu.normal_duct_pipe":"普通風管", "block.gtceu.normal_laser_pipe":"普通雷射管道", "block.gtceu.normal_optical_pipe":"普通光學管道", "block.gtceu.object_holder":"物品支架", @@ -837,8 +850,8 @@ "block.gtceu.opv_canner":"§9§l傳奇裝罐機§r", "block.gtceu.opv_centrifuge":"§9§l傳奇離心機§r", "block.gtceu.opv_charger_4x":"4x過載壓充電機(§9§lOpV§r)", - "block.gtceu.opv_chemical_bath":"§9§l傳奇化學浸洗機§r", - "block.gtceu.opv_chemical_reactor":"§9§l傳奇化學反應釜§r", + "block.gtceu.opv_chemical_bath":"§9§l傳奇化學水浴機§r", + "block.gtceu.opv_chemical_reactor":"§9§l傳奇化學反應器§r", "block.gtceu.opv_circuit_assembler":"§9§l傳奇電路組裝機§r", "block.gtceu.opv_compressor":"§9§l傳奇壓縮機§r", "block.gtceu.opv_cutter":"§9§l傳奇切割機§r", @@ -846,7 +859,7 @@ "block.gtceu.opv_distillery":"§9§l傳奇蒸餾室§r", "block.gtceu.opv_electric_furnace":"§9§l傳奇電爐§r", "block.gtceu.opv_electrolyzer":"§9§l傳奇電解機§r", - "block.gtceu.opv_electromagnetic_separator":"§9§l傳奇電磁選礦機§r", + "block.gtceu.opv_electromagnetic_separator":"§9§l傳奇電磁分離機§r", "block.gtceu.opv_energy_input_hatch":"§9§lOpV§r能量輸入倉", "block.gtceu.opv_energy_input_hatch_16a":"16安§9§lOpV§r能量輸入倉", "block.gtceu.opv_energy_input_hatch_4a":"4安§9§lOpV§r能量輸入倉", @@ -929,11 +942,11 @@ "block.gtceu.rubber_fence":"橡膠木柵欄", "block.gtceu.rubber_fence_gate":"橡膠木柵欄門", "block.gtceu.rubber_hanging_sign":"懸掛式橡膠木告示牌", - "block.gtceu.rubber_leaves":"橡膠樹葉", - "block.gtceu.rubber_log":"橡膠原木", - "block.gtceu.rubber_planks":"橡膠木板", + "block.gtceu.rubber_leaves":"橡膠木樹葉", + "block.gtceu.rubber_log":"橡膠木原木", + "block.gtceu.rubber_planks":"橡膠木材", "block.gtceu.rubber_pressure_plate":"橡膠木壓力板", - "block.gtceu.rubber_sapling":"橡膠樹苗", + "block.gtceu.rubber_sapling":"橡膠木樹苗", "block.gtceu.rubber_sign":"橡膠木告示牌", "block.gtceu.rubber_slab":"橡膠木半磚", "block.gtceu.rubber_stairs":"橡膠木階梯", @@ -943,6 +956,7 @@ "block.gtceu.shock_proof_cutting_casing":"防震切割機械方塊", "block.gtceu.slicing_blades":"切片刀", "block.gtceu.small_dark_concrete_bricks":"深色混凝土小塊磚", + "block.gtceu.small_duct_pipe":"小型風管", "block.gtceu.small_light_concrete_bricks":"淺色混凝土小塊磚", "block.gtceu.small_marble_bricks":"大理岩小塊磚", "block.gtceu.small_red_granite_bricks":"紅花崗岩小塊磚", @@ -989,7 +1003,7 @@ "block.gtceu.steel_turbine_casing":"鋼渦輪機械方塊", "block.gtceu.sterilizing_filter_casing":"除菌過濾器機械方塊", "block.gtceu.stress_proof_casing":"耐壓機械方塊", - "block.gtceu.stripped_rubber_log":"剝皮橡膠原木", + "block.gtceu.stripped_rubber_log":"剝皮橡膠木原木", "block.gtceu.stripped_rubber_wood":"剝皮橡膠木塊", "block.gtceu.sturdy_machine_casing":"堅固高速鋼-E機械方塊", "block.gtceu.superconducting_coil":"超導線圈方塊", @@ -1006,7 +1020,7 @@ "block.gtceu.treated_wood_fence":"防腐木柵欄", "block.gtceu.treated_wood_fence_gate":"防腐木柵欄門", "block.gtceu.treated_wood_hanging_sign":"懸掛式防腐木告示牌", - "block.gtceu.treated_wood_planks":"防腐木板", + "block.gtceu.treated_wood_planks":"防腐木材", "block.gtceu.treated_wood_pressure_plate":"防腐木壓力板", "block.gtceu.treated_wood_sign":"防腐木告示牌", "block.gtceu.treated_wood_slab":"防腐木半磚", @@ -1044,8 +1058,8 @@ "block.gtceu.uev_canner":"§a史詩裝罐機 II§r", "block.gtceu.uev_centrifuge":"§a史詩離心機 II§r", "block.gtceu.uev_charger_4x":"4x極超壓充電機(§aUEV§r)", - "block.gtceu.uev_chemical_bath":"§a史詩化學浸洗機 II§r", - "block.gtceu.uev_chemical_reactor":"§a史詩化學反應釜 II§r", + "block.gtceu.uev_chemical_bath":"§a史詩化學水浴機 II§r", + "block.gtceu.uev_chemical_reactor":"§a史詩化學反應器 II§r", "block.gtceu.uev_circuit_assembler":"§a史詩電路組裝機 II§r", "block.gtceu.uev_compressor":"§a史詩壓縮機 II§r", "block.gtceu.uev_cutter":"§a史詩切割機 II§r", @@ -1053,7 +1067,7 @@ "block.gtceu.uev_distillery":"§a史詩蒸餾室 II§r", "block.gtceu.uev_electric_furnace":"§a史詩電爐 II§r", "block.gtceu.uev_electrolyzer":"§a史詩電解機 II§r", - "block.gtceu.uev_electromagnetic_separator":"§a史詩電磁選礦機 II§r", + "block.gtceu.uev_electromagnetic_separator":"§a史詩電磁分離機 II§r", "block.gtceu.uev_energy_input_hatch":"§aUEV§r能量輸入倉", "block.gtceu.uev_energy_input_hatch_16a":"16安§aUEV§r能量輸入倉", "block.gtceu.uev_energy_input_hatch_4a":"4安§aUEV§r能量輸入倉", @@ -1119,8 +1133,8 @@ "block.gtceu.uhv_canner":"§4史詩裝罐機§r", "block.gtceu.uhv_centrifuge":"§4史詩離心機§r", "block.gtceu.uhv_charger_4x":"4x極高壓充電機(§4UHV§r)", - "block.gtceu.uhv_chemical_bath":"§4史詩化學浸洗機§r", - "block.gtceu.uhv_chemical_reactor":"§4史詩化學反應釜§r", + "block.gtceu.uhv_chemical_bath":"§4史詩化學水浴機§r", + "block.gtceu.uhv_chemical_reactor":"§4史詩化學反應器§r", "block.gtceu.uhv_circuit_assembler":"§4史詩電路組裝機§r", "block.gtceu.uhv_compressor":"§4史詩壓縮機§r", "block.gtceu.uhv_cutter":"§4史詩切割機§r", @@ -1128,7 +1142,7 @@ "block.gtceu.uhv_distillery":"§4史詩蒸餾室§r", "block.gtceu.uhv_electric_furnace":"§4史詩電爐§r", "block.gtceu.uhv_electrolyzer":"§4史詩電解機§r", - "block.gtceu.uhv_electromagnetic_separator":"§4史詩電磁選礦機§r", + "block.gtceu.uhv_electromagnetic_separator":"§4史詩電磁分離機§r", "block.gtceu.uhv_energy_input_hatch":"§4UHV§r能量輸入倉", "block.gtceu.uhv_energy_input_hatch_16a":"16安§4UHV§r能量輸入倉", "block.gtceu.uhv_energy_input_hatch_4a":"4安§4UHV§r能量輸入倉", @@ -1196,8 +1210,8 @@ "block.gtceu.uiv_canner":"§2史詩裝罐機 III§r", "block.gtceu.uiv_centrifuge":"§2史詩離心機 III§r", "block.gtceu.uiv_charger_4x":"4x極巨壓充電機(§2UIV§r)", - "block.gtceu.uiv_chemical_bath":"§2史詩化學浸洗機 III§r", - "block.gtceu.uiv_chemical_reactor":"§2史詩化學反應釜 III§r", + "block.gtceu.uiv_chemical_bath":"§2史詩化學水浴機 III§r", + "block.gtceu.uiv_chemical_reactor":"§2史詩化學反應器 III§r", "block.gtceu.uiv_circuit_assembler":"§2史詩電路組裝機 III§r", "block.gtceu.uiv_compressor":"§2史詩壓縮機 III§r", "block.gtceu.uiv_cutter":"§2史詩切割機 III§r", @@ -1205,7 +1219,7 @@ "block.gtceu.uiv_distillery":"§2史詩蒸餾室 III§r", "block.gtceu.uiv_electric_furnace":"§2史詩電爐 III§r", "block.gtceu.uiv_electrolyzer":"§2史詩電解機 III§r", - "block.gtceu.uiv_electromagnetic_separator":"§2史詩電磁選礦機 III§r", + "block.gtceu.uiv_electromagnetic_separator":"§2史詩電磁分離機 III§r", "block.gtceu.uiv_energy_input_hatch":"§2UIV§r能量輸入倉", "block.gtceu.uiv_energy_input_hatch_16a":"16安§2UIV§r能量輸入倉", "block.gtceu.uiv_energy_input_hatch_4a":"4安§2UIV§r能量輸入倉", @@ -1291,8 +1305,8 @@ "block.gtceu.uv_canner":"§3終極裝罐機§r", "block.gtceu.uv_centrifuge":"§3終極離心機§r", "block.gtceu.uv_charger_4x":"4x極限壓充電機(§3UV§r)", - "block.gtceu.uv_chemical_bath":"§3終極化學浸洗機§r", - "block.gtceu.uv_chemical_reactor":"§3終極化學反應釜§r", + "block.gtceu.uv_chemical_bath":"§3終極化學水浴機§r", + "block.gtceu.uv_chemical_reactor":"§3終極化學反應器§r", "block.gtceu.uv_circuit_assembler":"§3終極電路組裝機§r", "block.gtceu.uv_compressor":"§3終極壓縮機§r", "block.gtceu.uv_cutter":"§3終極切割機§r", @@ -1300,7 +1314,7 @@ "block.gtceu.uv_distillery":"§3終極蒸餾室§r", "block.gtceu.uv_electric_furnace":"§3終極電爐§r", "block.gtceu.uv_electrolyzer":"§3終極電解機§r", - "block.gtceu.uv_electromagnetic_separator":"§3終極電磁選礦機§r", + "block.gtceu.uv_electromagnetic_separator":"§3終極電磁分離機§r", "block.gtceu.uv_energy_input_hatch":"§3UV§r能量輸入倉", "block.gtceu.uv_energy_input_hatch_16a":"16安§3UV§r能量輸入倉", "block.gtceu.uv_energy_input_hatch_4a":"4安§3UV§r能量輸入倉", @@ -1376,8 +1390,8 @@ "block.gtceu.uxv_canner":"§e史詩裝罐機 IV§r", "block.gtceu.uxv_centrifuge":"§e史詩離心機 IV§r", "block.gtceu.uxv_charger_4x":"4x極頂壓充電機(§eUXV§r)", - "block.gtceu.uxv_chemical_bath":"§e史詩化學浸洗機 IV§r", - "block.gtceu.uxv_chemical_reactor":"§e史詩化學反應釜 IV§r", + "block.gtceu.uxv_chemical_bath":"§e史詩化學水浴機 IV§r", + "block.gtceu.uxv_chemical_reactor":"§e史詩化學反應器 IV§r", "block.gtceu.uxv_circuit_assembler":"§e史詩電路組裝機 IV§r", "block.gtceu.uxv_compressor":"§e史詩壓縮機 IV§r", "block.gtceu.uxv_cutter":"§e史詩切割機 IV§r", @@ -1385,7 +1399,7 @@ "block.gtceu.uxv_distillery":"§e史詩蒸餾室 IV§r", "block.gtceu.uxv_electric_furnace":"§e史詩電爐 IV§r", "block.gtceu.uxv_electrolyzer":"§e史詩電解機 IV§r", - "block.gtceu.uxv_electromagnetic_separator":"§e史詩電磁選礦機 IV§r", + "block.gtceu.uxv_electromagnetic_separator":"§e史詩電磁分離機 IV§r", "block.gtceu.uxv_energy_input_hatch":"§eUXV§r能量輸入倉", "block.gtceu.uxv_energy_input_hatch_16a":"16安§eUXV§r能量輸入倉", "block.gtceu.uxv_energy_input_hatch_4a":"4安§eUXV§r能量輸入倉", @@ -1477,8 +1491,8 @@ "block.gtceu.zpm_canner":"§c精英裝罐機 III§r", "block.gtceu.zpm_centrifuge":"§c精英離心機 III§r", "block.gtceu.zpm_charger_4x":"4x零點壓充電機(§cZPM§r)", - "block.gtceu.zpm_chemical_bath":"§c精英化學浸洗機 III§r", - "block.gtceu.zpm_chemical_reactor":"§c精英化學反應釜 III§r", + "block.gtceu.zpm_chemical_bath":"§c精英化學水浴機 III§r", + "block.gtceu.zpm_chemical_reactor":"§c精英化學反應器 III§r", "block.gtceu.zpm_circuit_assembler":"§c精英電路組裝機 III§r", "block.gtceu.zpm_compressor":"§c精英壓縮機 III§r", "block.gtceu.zpm_cutter":"§c精英切割機 III§r", @@ -1486,7 +1500,7 @@ "block.gtceu.zpm_distillery":"§c精英蒸餾室 III§r", "block.gtceu.zpm_electric_furnace":"§c精英電爐 III§r", "block.gtceu.zpm_electrolyzer":"§c精英電解機 III§r", - "block.gtceu.zpm_electromagnetic_separator":"§c精英電磁選礦機 III§r", + "block.gtceu.zpm_electromagnetic_separator":"§c精英電磁分離機 III§r", "block.gtceu.zpm_energy_input_hatch":"§cZPM§r能量輸入倉", "block.gtceu.zpm_energy_input_hatch_16a":"16安§cZPM§r能量輸入倉", "block.gtceu.zpm_energy_input_hatch_4a":"4安§cZPM§r能量輸入倉", @@ -1542,6 +1556,10 @@ "block.gtceu.zpm_world_accelerator":"§c精英世界加速器 III§r", "block.sterilizing_filter_casing.tooltip":"創造一個§a無菌§r環境", "block.surface_rock":"地表岩石(%s)", + "command.gtceu.medical_condition.get":"玩家%s有以下疾病:", + "command.gtceu.medical_condition.get.element":"症狀:%s§r %s秒", + "command.gtceu.medical_condition.get.element.permanent":"症狀:%s§r %s秒(永久)", + "command.gtceu.medical_condition.get.empty":"玩家%s沒有疾病。", "compass.node.gtceu.batteries/energy_cluster":"能量簇", "compass.node.gtceu.batteries/energy_crystal":"能量水晶", "compass.node.gtceu.batteries/energy_module":"能量模組", @@ -1609,7 +1627,7 @@ "compass.node.gtceu.components/electric_motor":"電動馬達", "compass.node.gtceu.components/emitter":"發射器", "compass.node.gtceu.components/field_generator":"力場發生器", - "compass.node.gtceu.components/fluid_regulator":"流體校準器", + "compass.node.gtceu.components/fluid_regulator":"流體調節器", "compass.node.gtceu.components/piston":"活塞", "compass.node.gtceu.components/sensor":"感測器", "compass.node.gtceu.covers/activity_detector_cover":"活躍探測覆蓋板", @@ -1622,7 +1640,7 @@ "compass.node.gtceu.covers/computer_monitor_cover":"電腦螢幕覆蓋板", "compass.node.gtceu.covers/conveyor":"傳送帶", "compass.node.gtceu.covers/cover":"什麼是覆蓋板?", - "compass.node.gtceu.covers/crafting_table_cover":"工作臺覆蓋板", + "compass.node.gtceu.covers/crafting_table_cover":"工作台覆蓋板", "compass.node.gtceu.covers/ender_fluid_link_cover":"終界流體連線覆蓋板", "compass.node.gtceu.covers/energy_detector_cover":"能量探測覆蓋板", "compass.node.gtceu.covers/facade_cover":"偽裝板", @@ -1658,10 +1676,10 @@ "compass.node.gtceu.generation/ore":"如何找到礦?", "compass.node.gtceu.generation/red_granite":"紅花崗岩", "compass.node.gtceu.generation/red_sand":"紅沙", - "compass.node.gtceu.generation/rubber_leaves":"橡膠樹葉", - "compass.node.gtceu.generation/rubber_log":"橡膠原木", - "compass.node.gtceu.generation/rubber_planks":"橡膠木板", - "compass.node.gtceu.generation/rubber_sapling":"橡膠樹苗", + "compass.node.gtceu.generation/rubber_leaves":"橡膠木樹葉", + "compass.node.gtceu.generation/rubber_log":"橡膠木原木", + "compass.node.gtceu.generation/rubber_planks":"橡膠木材", + "compass.node.gtceu.generation/rubber_sapling":"橡膠木樹苗", "compass.node.gtceu.generation/rubber_slab":"橡膠木半磚", "compass.node.gtceu.generation/sand":"沙子", "compass.node.gtceu.generation/stone":"石頭", @@ -1669,7 +1687,7 @@ "compass.node.gtceu.generation/tuff":"凝灰岩", "compass.node.gtceu.hv/cleanroom":"無塵室", "compass.node.gtceu.hv/implosion_compressor":"聚爆壓縮機", - "compass.node.gtceu.hv/large_chemical_reactor":"大型化學反應釜", + "compass.node.gtceu.hv/large_chemical_reactor":"大型化學反應器", "compass.node.gtceu.hv/large_packer":"大型打包機", "compass.node.gtceu.hv/large_turbine":"大型渦輪", "compass.node.gtceu.hv/vacuum_freezer":"真空冷凍機", @@ -1688,7 +1706,7 @@ "compass.node.gtceu.iv/large_autoclave":"大型高壓釜", "compass.node.gtceu.iv/large_brewer":"大型釀造室", "compass.node.gtceu.iv/large_centrifuge":"大型離心機", - "compass.node.gtceu.iv/large_chemical_bath":"大型化學浸洗機", + "compass.node.gtceu.iv/large_chemical_bath":"大型化學水浴機", "compass.node.gtceu.iv/large_circuit_assembler":"大型電路組裝機", "compass.node.gtceu.iv/large_cutter":"大型切割機", "compass.node.gtceu.iv/large_distillery":"大型蒸餾廠", @@ -1709,6 +1727,7 @@ "compass.node.gtceu.luv/mega_vacuum_freezer":"巨型真空冷凍機", "compass.node.gtceu.luv/uv_fusion_reactor":"§3UV§r核融合反應爐", "compass.node.gtceu.luv/zpm_fusion_reactor":"§cZPM§r核融合反應爐", + "compass.node.gtceu.machines/air_scrubber":"空氣淨化器", "compass.node.gtceu.machines/alloy_smelter":"合金爐", "compass.node.gtceu.machines/arc_furnace":"電弧爐", "compass.node.gtceu.machines/assembler":"組裝機", @@ -1720,8 +1739,8 @@ "compass.node.gtceu.machines/canner":"裝罐機", "compass.node.gtceu.machines/centrifuge":"離心機", "compass.node.gtceu.machines/charger":"充電機", - "compass.node.gtceu.machines/chemical_bath":"化學浸洗機", - "compass.node.gtceu.machines/chemical_reactor":"化學反應釜", + "compass.node.gtceu.machines/chemical_bath":"化學水浴機", + "compass.node.gtceu.machines/chemical_reactor":"化學反應器", "compass.node.gtceu.machines/circuit_assembler":"電路組裝機", "compass.node.gtceu.machines/combustion":"內燃發電機", "compass.node.gtceu.machines/compressor":"壓縮機", @@ -1735,7 +1754,7 @@ "compass.node.gtceu.machines/drum":"桶", "compass.node.gtceu.machines/electric_furnace":"電爐", "compass.node.gtceu.machines/electrolyzer":"電解機", - "compass.node.gtceu.machines/electromagnetic_separator":"電磁選礦機", + "compass.node.gtceu.machines/electromagnetic_separator":"電磁分離機", "compass.node.gtceu.machines/extractor":"提取機", "compass.node.gtceu.machines/extruder":"壓模器", "compass.node.gtceu.machines/fermenter":"發酵槽", @@ -1876,8 +1895,8 @@ "compass.node.gtceu.multiblock/large_boiler":"大型鍋爐", "compass.node.gtceu.multiblock/large_brewer":"大型釀造室", "compass.node.gtceu.multiblock/large_centrifuge":"大型離心機", - "compass.node.gtceu.multiblock/large_chemical_bath":"大型化學浸洗機", - "compass.node.gtceu.multiblock/large_chemical_reactor":"大型化學反應釜", + "compass.node.gtceu.multiblock/large_chemical_bath":"大型化學水浴機", + "compass.node.gtceu.multiblock/large_chemical_reactor":"大型化學反應器", "compass.node.gtceu.multiblock/large_circuit_assembler":"大型電路組裝機", "compass.node.gtceu.multiblock/large_combustion":"大型內燃引擎", "compass.node.gtceu.multiblock/large_cutter":"大型切割機", @@ -2034,6 +2053,7 @@ "config.gtceu.option.dumpAssets":"匯出資源", "config.gtceu.option.dumpRecipes":"匯出配方", "config.gtceu.option.enableCleanroom":"啟用無塵室", + "config.gtceu.option.enableCompass":"啟用指南", "config.gtceu.option.enableMaintenance":"啟用維護倉", "config.gtceu.option.enablePlatformConverters":"啟用能量轉換器", "config.gtceu.option.enableResearch":"啟用研究", @@ -2042,6 +2062,7 @@ "config.gtceu.option.energy":"能量", "config.gtceu.option.energyConsumption":"能耗", "config.gtceu.option.energyUsageMultiplier":"能源消耗倍率", + "config.gtceu.option.environmentalHazards":"環境污染", "config.gtceu.option.euToPlatformRatio":"GTEU與載入器原生能量的轉換比例", "config.gtceu.option.flintAndSteelRequireSteel":"打火石配方是否需要鋼", "config.gtceu.option.gameplay":"遊戲玩法", @@ -2061,7 +2082,7 @@ "config.gtceu.option.harderCircuitRecipes":"更難的電路板配方", "config.gtceu.option.harderRods":"更難的桿配方", "config.gtceu.option.harmlessActiveTransformers":"無害的有源變壓器", - "config.gtceu.option.hazardsEnabled":"啓用危險物質", + "config.gtceu.option.hazardsEnabled":"啟用危險物質", "config.gtceu.option.hideFacadesInJEI":"在JEI頁面隱藏偽裝板", "config.gtceu.option.hideFilledCellsInJEI":"在JEI頁面隱藏流體單元", "config.gtceu.option.hideOreProcessingDiagrams":"隱藏礦物處理流程圖", @@ -2077,12 +2098,13 @@ "config.gtceu.option.machineSounds":"機器音效", "config.gtceu.option.machines":"機器", "config.gtceu.option.machinesEmissiveTextures":"啟用機器泛光紋理", + "config.gtceu.option.meHatchEnergyUsage":"ME倉能耗", "config.gtceu.option.nanoSaber":"奈米劍", "config.gtceu.option.nanoSaberBaseDamage":"奈米劍基礎傷害", "config.gtceu.option.nanoSaberDamageBoost":"奈米劍傷害增幅", "config.gtceu.option.nativeEUToPlatformNative":"線纜直接給其他能源的機器供能", "config.gtceu.option.nerfPaperCrafting":"削弱紙配方", - "config.gtceu.option.nerfWoodCrafting":"削弱木板木棍合成", + "config.gtceu.option.nerfWoodCrafting":"削弱木材木棒合成", "config.gtceu.option.oreGenerationChunkCacheSize":"礦物生成區塊快取大小", "config.gtceu.option.oreIndicatorChunkCacheSize":"礦脈指示物區塊快取大小", "config.gtceu.option.oreVeinGridSize":"礦脈網格大小", @@ -2109,11 +2131,12 @@ "config.gtceu.option.toolUseSounds":"使用工具時播放聲音", "config.gtceu.option.tools":"工具", "config.gtceu.option.universalHazards":"普遍化的危險物質", + "config.gtceu.option.updateIntervals":"更新間隔", "config.gtceu.option.useVBO":"使用VBO", - "config.gtceu.option.voltageTierAdvImpeller":"進階噴氣背包電壓等級", + "config.gtceu.option.voltageTierAdvImpeller":"進階噴射背包電壓等級", "config.gtceu.option.voltageTierAdvNanoSuit":"進階奈米胸甲電壓等級", "config.gtceu.option.voltageTierAdvQuarkTech":"進階夸克胸甲電壓等級", - "config.gtceu.option.voltageTierImpeller":"噴氣背包電壓等級", + "config.gtceu.option.voltageTierImpeller":"噴射背包電壓等級", "config.gtceu.option.voltageTierNanoSuit":"奈米套裝電壓等級", "config.gtceu.option.voltageTierNightVision":"夜視儀電壓等級", "config.gtceu.option.voltageTierQuarkTech":"夸克套裝電壓等級", @@ -2214,7 +2237,7 @@ "cover.fluid_filter.title":"流體過濾卡", "cover.fluid_regulator.keep_exact":"保持供應:%s", "cover.fluid_regulator.supply_exact":"精確供應:%s", - "cover.fluid_regulator.title":"流體校準器設定(%s)", + "cover.fluid_regulator.title":"流體調節器設定(%s)", "cover.fluid_regulator.transfer_mode.description.0":"§e任意傳輸§r-在此模式下,覆蓋板將傳輸任何與過濾器匹配的流體。", "cover.fluid_regulator.transfer_mode.description.1":"§e精確供應-在此模式下,覆蓋板會將此按鈕下方視窗中指定的流體按指定量打包傳輸。若流體量小於指定量,流體不會被傳輸。", "cover.fluid_regulator.transfer_mode.description.2":"§e保持供應-在此模式下,覆蓋板將在目標容器中保持指定數量的液體,低於保持量時傳輸相應量的流體。", @@ -2310,6 +2333,19 @@ "death.attack.gtceu.hoe":"%s被%s鋤死了", "death.attack.gtceu.knife":"%2$s紳士地捅了%1$s幾刀", "death.attack.gtceu.mallet":"%s被%s用錘頭活活敲死了", + "death.attack.gtceu.medical_condition/arsenicosis":"%s死於砷中毒", + "death.attack.gtceu.medical_condition/asbestosis":"%s得了間皮瘤", + "death.attack.gtceu.medical_condition/berylliosis":"%s貪婪地挖掘綠寶石,結果有點過火了", + "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning":"%s離開時爐子還開着", + "death.attack.gtceu.medical_condition/carcinogen":"%s身患白血病", + "death.attack.gtceu.medical_condition/chemical_burns":"%s歷經了一場化學事故", + "death.attack.gtceu.medical_condition/irritant":"%s身上長了§n§l極其嚴重§r的皮疹", + "death.attack.gtceu.medical_condition/methanol_poisoning":"%s在禁酒令下嘗試飲用私釀烈酒", + "death.attack.gtceu.medical_condition/nausea":"%s死於噁心", + "death.attack.gtceu.medical_condition/none":"%s死於...什麼都沒有?", + "death.attack.gtceu.medical_condition/poison":"%s忘了毒物的確有毒", + "death.attack.gtceu.medical_condition/silicosis":"%s不是死於肺結核,而是矽肺病", + "death.attack.gtceu.medical_condition/weak_poison":"%s吞下了鉛(或水銀!)", "death.attack.gtceu.mining_hammer":"%s被%s當成礦砸死了", "death.attack.gtceu.mortar":"%s被%s用研缽磨成了粉", "death.attack.gtceu.pickaxe":"%s被%s用鎬子鑿死了", @@ -2339,6 +2375,7 @@ "fluid.tile.lava":"熔岩", "fluid.tile.water":"水", "fluid_cell.empty":"空", + "gtceu.air_scrubber":"空氣淨化器", "gtceu.alloy_blast_smelter":"合金冶煉爐", "gtceu.alloy_smelter":"合金冶煉", "gtceu.arc_furnace":"電弧爐", @@ -2359,8 +2396,8 @@ "gtceu.canner":"裝罐機", "gtceu.centrifuge":"離心機", "gtceu.chat.cape":"§5恭喜你:你剛剛解鎖了一件新披風!檢視終端應用程式“披風選擇器”來使用它。§r", - "gtceu.chemical_bath":"化學浸洗機", - "gtceu.chemical_reactor":"化學反應釜", + "gtceu.chemical_bath":"化學水浴機", + "gtceu.chemical_reactor":"化學反應器", "gtceu.circuit_assembler":"電路組裝機", "gtceu.coke_oven":"焦爐", "gtceu.combustion_generator":"內燃發電機", @@ -2424,7 +2461,7 @@ "gtceu.electric_blast_furnace":"電力高爐", "gtceu.electric_furnace":"電爐", "gtceu.electrolyzer":"電解機", - "gtceu.electromagnetic_separator":"電磁選礦機", + "gtceu.electromagnetic_separator":"電磁分離機", "gtceu.evaporation":"蒸發", "gtceu.extractor":"提取機", "gtceu.extruder":"壓模器", @@ -2537,26 +2574,15 @@ "gtceu.gui.overclock.off":"X", "gtceu.gui.overclock.range":"可用電壓級 [%s,%s]", "gtceu.gui.overclock.title":"超頻電壓級", - "gtceu.gui.silktouch.disabled.0":"精準採集已禁用:單擊啟用。", + "gtceu.gui.silktouch.disabled.0":"絲綢之觸已禁用:單擊啟用。", "gtceu.gui.silktouch.disabled.1":"§7切換需要機器待機。", - "gtceu.gui.silktouch.enabled.0":"精準採集已啟用:單擊禁用。", + "gtceu.gui.silktouch.enabled.0":"絲綢之觸已啟用:單擊禁用。", "gtceu.gui.silktouch.enabled.1":"§7切換需要機器待機。", "gtceu.gui.sort":"分類", "gtceu.gui.title_bar.back":"返回", "gtceu.gui.title_bar.page_switcher":"頁面", "gtceu.gui.toggle_view.disabled":"切換檢視(流體)", "gtceu.gui.toggle_view.enabled":"切換檢視(物品)", - "gtceu.hazard.antidote.description":"§a解毒劑 §7按住Shift以顯示詳情", - "gtceu.hazard.antidote.description.effect_removed":"疾病效果持續時間降低%s%%", - "gtceu.hazard.antidote.description.effect_removed.all":"消除所有疾病效果", - "gtceu.hazard.antidote.description_shift":"§a療愈類型:", - "gtceu.hazard.contact_poison":"§5接觸性毒物", - "gtceu.hazard.corrosive":"§6腐蝕性", - "gtceu.hazard.description":"§c§l危險物質 §7按住Shift以顯示詳情", - "gtceu.hazard.description_shift":"§c§l危險物質:", - "gtceu.hazard.inhalation_poison":"§2吸入性毒物", - "gtceu.hazard.none":"§2無害", - "gtceu.hazard.radioactive":"§e放射性", "gtceu.implosion_compressor":"聚爆壓縮機", "gtceu.io.both":"同時", "gtceu.io.export":"輸出", @@ -2591,7 +2617,7 @@ "gtceu.jei.fluid.min_hover":"流體礦脈所能具有的的最小產量", "gtceu.jei.fluid.min_yield":"最小產量:%d", "gtceu.jei.fluid.vein_weight":"礦脈權重:%d", - "gtceu.jei.fluid.weight_hover":"流體礦脈的生成權重。滑鼠懸於圖示可檢視該流體在特定生物群系中特殊的生成權重", + "gtceu.jei.fluid.weight_hover":"流體礦脈的生成權重。滑鼠懸於圖示可檢視該流體在特定生態域中特殊的生成權重", "gtceu.jei.materials.average_mass":"平均質量:%d", "gtceu.jei.materials.average_neutrons":"平均中子數:%d", "gtceu.jei.materials.average_protons":"平均質子數:%d", @@ -2600,7 +2626,7 @@ "gtceu.jei.ore.between.1":"和其他礦一起生成在礦脈的中間%d層", "gtceu.jei.ore.biome_weighting":"§d%s的生成權重:§3%d", "gtceu.jei.ore.biome_weighting_no_spawn":"§d%s的生成權重:§c無法生成", - "gtceu.jei.ore.biome_weighting_title":"§d特定生物群系中的例外權重:", + "gtceu.jei.ore.biome_weighting_title":"§d特定生態域中的例外權重:", "gtceu.jei.ore.ore_weight":"礦脈內生成權重:%d%%", "gtceu.jei.ore.primary.0":"頂層礦", "gtceu.jei.ore.primary.1":"在礦脈的頂部%d層生成", @@ -2661,7 +2687,7 @@ "gtceu.key.armor_mode_switch":"切換盔甲模式", "gtceu.key.tool_aoe_change":"切換工具範圍模式", "gtceu.large_boiler":"大型鍋爐", - "gtceu.large_chemical_reactor":"大型化學反應釜", + "gtceu.large_chemical_reactor":"大型化學反應器", "gtceu.laser_engraver":"雷射蝕刻機", "gtceu.lathe":"車床", "gtceu.macerator":"研磨機", @@ -2733,12 +2759,12 @@ "gtceu.machine.endpoint.tooltip.1":"管路必須有且僅有一個§f1輸入§7介面和一個§f1輸出§7介面。", "gtceu.machine.endpoint.tooltip.2":"只有管道介面需要被§f區塊載入§7。", "gtceu.machine.endpoint.tooltip.min_length":"§b最低介面間距:§f%d格方塊", - "gtceu.machine.energy_converter.description":"在EU和FE/E之間轉換能量形式。", - "gtceu.machine.energy_converter.message_conversion_eu":"EU轉為FE/E,,輸入:%dA %d EU,輸出:%d FE/E", - "gtceu.machine.energy_converter.message_conversion_native":"FE/E轉為EU,輸入:%dFE/E,輸出:%dA %d EU", - "gtceu.machine.energy_converter.tooltip_conversion_eu":"§aEU轉換:§f%dA %d EU(%s§f)§7 -> %d FE/E", - "gtceu.machine.energy_converter.tooltip_conversion_native":"§cFE/E轉換:§f%d FE/E -> %dA %d EU (%s§f)", - "gtceu.machine.energy_converter.tooltip_tool_usage":"預設§f轉換為FE/E§r,使用軟錘切換。", + "gtceu.machine.energy_converter.description":"在EU和FE之間轉換能量形式。", + "gtceu.machine.energy_converter.message_conversion_eu":"EU轉為FE,,輸入:%dA %d EU,輸出:%d FE", + "gtceu.machine.energy_converter.message_conversion_native":"FE轉為EU,輸入:%dFE,輸出:%dA %d EU", + "gtceu.machine.energy_converter.tooltip_conversion_eu":"§aEU轉換:§f%dA %d EU(%s§f)§7 -> %d FE", + "gtceu.machine.energy_converter.tooltip_conversion_native":"§cFE轉換:§f%d FE -> %dA %d EU (%s§f)", + "gtceu.machine.energy_converter.tooltip_tool_usage":"預設§f轉換為FE§r,使用軟錘切換。", "gtceu.machine.energy_hatch.input.tooltip":"為多方塊結構輸入能量", "gtceu.machine.energy_hatch.input_hi_amp.tooltip":"為多方塊結構輸入更多電流", "gtceu.machine.energy_hatch.output.tooltip":"為多方塊結構輸出能量", @@ -2792,7 +2818,7 @@ "gtceu.machine.fluid_drilling_rig.production":"§e產量乘數:§f%dx,超頻後%fx", "gtceu.machine.fluid_hatch.export.tooltip":"為多方塊結構輸出流體", "gtceu.machine.fluid_hatch.import.tooltip":"為多方塊結構輸入流體", - "gtceu.machine.fluid_tank.fluid":"含有%sL%s", + "gtceu.machine.fluid_tank.fluid":"含有%smB%s", "gtceu.machine.fluid_tank.max_multiblock":"多方塊結構最大尺寸:%dx%dx%d", "gtceu.machine.fusion_reactor.capacity":"§7儲能上限:§e%sM EU", "gtceu.machine.fusion_reactor.luv.tooltip":"我發動魔法卡,融合!", @@ -2824,7 +2850,7 @@ "gtceu.machine.hpca.component_type.computation_cooling":"§c最多需要:§f%d 冷卻", "gtceu.machine.hpca.component_type.computation_cwut":"§9算力:§f%d CWU/t", "gtceu.machine.hpca.component_type.cooler_active":"§b冷卻型別:§f主動", - "gtceu.machine.hpca.component_type.cooler_active_coolant":"§c最多需要:§f%d L/t %s", + "gtceu.machine.hpca.component_type.cooler_active_coolant":"§c最多需要:§f%d mB/t %s", "gtceu.machine.hpca.component_type.cooler_cooling":"§a提供:§f%d 冷卻", "gtceu.machine.hpca.component_type.cooler_passive":"§b冷卻型別:§f被動", "gtceu.machine.hpca.component_type.damaged":"HPCA過熱可能會損壞!", @@ -2881,7 +2907,7 @@ "gtceu.machine.item_collector.tooltip":"吸取它周圍的掉落物", "gtceu.machine.iv_alloy_smelter.tooltip":"§7合金集聚器", "gtceu.machine.iv_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.iv_assembler.tooltip":"§l不是§7工作臺", + "gtceu.machine.iv_assembler.tooltip":"§l不是§7工作台", "gtceu.machine.iv_autoclave.tooltip":"§7高壓鍋", "gtceu.machine.iv_bender.tooltip":"§7形態扭曲器", "gtceu.machine.iv_brewery.tooltip":"§7釀酒好手", @@ -2924,12 +2950,12 @@ "gtceu.machine.large_boiler.tungstensteel.tooltip":"你手上有幾座煤礦也不夠它吃的吧?", "gtceu.machine.large_chemical_reactor.tooltip":"黑盒反應器", "gtceu.machine.large_combustion_engine.tooltip":"燃料點火室", - "gtceu.machine.large_combustion_engine.tooltip.boost_extreme":"提供§f80L/s§7的液態氧,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", - "gtceu.machine.large_combustion_engine.tooltip.boost_regular":"提供§f20 L/s§7的氧氣,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", + "gtceu.machine.large_combustion_engine.tooltip.boost_extreme":"提供§f80 mB/s§7的液態氧,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", + "gtceu.machine.large_combustion_engine.tooltip.boost_regular":"提供§f20 mB/s§7的氧氣,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", "gtceu.machine.large_miner.ev.tooltip":"替你挖礦", - "gtceu.machine.large_miner.iv.tooltip":"挖掉整個生物群系", + "gtceu.machine.large_miner.iv.tooltip":"挖掉整個生態域", "gtceu.machine.large_miner.luv.tooltip":"掀翻整片大陸", - "gtceu.machine.large_turbine.gas.tooltip":"並不是噴氣發動機", + "gtceu.machine.large_turbine.gas.tooltip":"並不是噴射發動機", "gtceu.machine.large_turbine.plasma.tooltip":"電漿能量虹吸器", "gtceu.machine.large_turbine.steam.tooltip":"別把頭伸進去", "gtceu.machine.laser_hatch.both.tooltip":"§c雷射傳導線纜必須直線擺放!§7", @@ -2953,7 +2979,7 @@ "gtceu.machine.lp_steam_solid_boiler.tooltip":"§7獲取蒸汽能源的早期手段", "gtceu.machine.luv_alloy_smelter.tooltip":"§7合金集聚器", "gtceu.machine.luv_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.luv_assembler.tooltip":"§l不是§7工作臺", + "gtceu.machine.luv_assembler.tooltip":"§l不是§7工作台", "gtceu.machine.luv_autoclave.tooltip":"§7高壓鍋", "gtceu.machine.luv_bender.tooltip":"§7形態扭曲器", "gtceu.machine.luv_brewery.tooltip":"§7釀酒好手", @@ -3046,18 +3072,18 @@ "gtceu.machine.me.item_export.tooltip":"將物品直接儲存到ME網路中。", "gtceu.machine.me.item_import.tooltip":"自動從ME網路獲取物品。", "gtceu.machine.miner.chunkradius":"區塊半徑:%d", - "gtceu.machine.miner.fluid_usage":"消耗§f%d L/t§7的§f%s§7,每次超頻都會使消耗量加倍。", + "gtceu.machine.miner.fluid_usage":"消耗§f%d mB/t§7的§f%s§7,每次超頻都會使消耗量加倍。", "gtceu.machine.miner.minex":"mX:%d", "gtceu.machine.miner.miney":"mY:%d", - "gtceu.machine.miner.minez":"正在挖掘Z:%d", + "gtceu.machine.miner.minez":"mZ:%d", "gtceu.machine.miner.multi.description":"一種佔地面積大、產礦量大的多方塊採礦機。", - "gtceu.machine.miner.multi.modes":"具有精準採集和區塊對齊模式。", + "gtceu.machine.miner.multi.modes":"具有絲綢之觸和區塊對齊模式。", "gtceu.machine.miner.multi.production":"產出§f研磨機§7§f3x§7倍的粉碎礦。", "gtceu.machine.miner.per_block":"§7每個方塊需要§f%d§7秒。", "gtceu.machine.miner.radius":"半徑:%d", "gtceu.machine.miner.startx":"sX:%d", "gtceu.machine.miner.starty":"sY:%d", - "gtceu.machine.miner.startz":"初始Z:%d", + "gtceu.machine.miner.startz":"sZ:%d", "gtceu.machine.miner.tooltip":"§7只採掘機器下方的礦!工作範圍預設為§f%sx%s§7。", "gtceu.machine.muffle.off":"靜音:已禁用", "gtceu.machine.muffle.on":"靜音:已啟用", @@ -3105,7 +3131,7 @@ "gtceu.machine.mv_sifter.tooltip":"§7保持冷靜,繼續篩選", "gtceu.machine.mv_thermal_centrifuge.tooltip":"§7更精確地分離礦", "gtceu.machine.mv_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.network_switch.tooltip.0":"乙太網集線器", + "gtceu.machine.network_switch.tooltip.0":"乙太網路集線器", "gtceu.machine.network_switch.tooltip.1":"用於路由與分發§f算力§7。", "gtceu.machine.network_switch.tooltip.2":"可以將任意數量的算力§f輸入§7整合為為任意數量的算力§f輸出§7。", "gtceu.machine.network_switch.tooltip.3":"每個算力資料倉使用§f%s EU/t§7。", @@ -3226,7 +3252,7 @@ "gtceu.machine.world_accelerator.working_area_tile":" 方塊實體模式:§f相鄰方塊", "gtceu.machine.zpm_alloy_smelter.tooltip":"§7合金集聚器", "gtceu.machine.zpm_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.zpm_assembler.tooltip":"§l不是§7工作臺", + "gtceu.machine.zpm_assembler.tooltip":"§l不是§7工作台", "gtceu.machine.zpm_autoclave.tooltip":"§7高壓鍋", "gtceu.machine.zpm_bender.tooltip":"§7形態扭曲器", "gtceu.machine.zpm_brewery.tooltip":"§7釀酒好手", @@ -3270,6 +3296,25 @@ "gtceu.maintenance.configurable_time":"故障機率:%fx", "gtceu.maintenance.configurable_time.changed_description":"故障的發生機率現為正常值的%f倍。", "gtceu.maintenance.configurable_time.unchanged_description":"故障的發生機率為正常值。更改配置以更新。", + "gtceu.medical_condition.antidote.description":"§a解毒劑 §7按住Shift以顯示詳情", + "gtceu.medical_condition.antidote.description.effect_removed":"疾病效果持續時間降低%s%%", + "gtceu.medical_condition.antidote.description.effect_removed.all":"消除所有疾病效果", + "gtceu.medical_condition.antidote.description_shift":"§a治癒以下疾病:", + "gtceu.medical_condition.arsenicosis":"§b砷中毒", + "gtceu.medical_condition.asbestosis":"§d石棉肺", + "gtceu.medical_condition.berylliosis":"§5鈹中毒", + "gtceu.medical_condition.carbon_monoxide_poisoning":"§7一氧化碳中毒", + "gtceu.medical_condition.carcinogen":"§e致癌", + "gtceu.medical_condition.chemical_burns":"§5化學燒傷", + "gtceu.medical_condition.description":"§c§l危險物質 §7按住Shift以顯示詳情", + "gtceu.medical_condition.description_shift":"§c§l危險物質:", + "gtceu.medical_condition.irritant":"§6刺激性", + "gtceu.medical_condition.methanol_poisoning":"§6甲醇中毒", + "gtceu.medical_condition.nausea":"§3噁心", + "gtceu.medical_condition.none":"§2無害", + "gtceu.medical_condition.poison":"§2中毒", + "gtceu.medical_condition.silicosis":"§1矽肺病", + "gtceu.medical_condition.weak_poison":"§a輕度中毒", "gtceu.mixer":"攪拌機", "gtceu.mode.both":"§d全部(流體和物品)§r", "gtceu.mode.fluid":"§9流體§r", @@ -3322,7 +3367,7 @@ "gtceu.multiblock.hpca.energy":"使用:%s / %s EU/t (%s)", "gtceu.multiblock.hpca.error_damaged":"計算元件損壞!", "gtceu.multiblock.hpca.error_temperature":"溫度超過100℃,可能導致計算元件損壞!", - "gtceu.multiblock.hpca.hover_for_info":"懸停以顯示細節", + "gtceu.multiblock.hpca.hover_for_info":"懸浮以顯示細節", "gtceu.multiblock.hpca.info_bridging_disabled":"橋接已關閉", "gtceu.multiblock.hpca.info_bridging_enabled":"橋接已啟動", "gtceu.multiblock.hpca.info_coolant_name":"多氯聯苯冷卻液", @@ -3346,20 +3391,20 @@ "gtceu.multiblock.large_boiler.explosion_tooltip":"無水時提供燃料將爆炸", "gtceu.multiblock.large_boiler.heat_time_tooltip":"§7需要§f%d秒§7預熱", "gtceu.multiblock.large_boiler.max_temperature":"最高溫度:%dK,蒸汽產量:%dmB/t", - "gtceu.multiblock.large_boiler.rate_tooltip":"§7每塊§1煤炭§7可以生產§f%dL§7的蒸汽", - "gtceu.multiblock.large_boiler.steam_output":"蒸汽輸出:%s L/t", + "gtceu.multiblock.large_boiler.rate_tooltip":"§7每塊§1煤炭§7可以生產§f%dmB§7的蒸汽", + "gtceu.multiblock.large_boiler.steam_output":"蒸汽輸出:%s mB/t", "gtceu.multiblock.large_boiler.temperature":"溫度::%sK / %sK", "gtceu.multiblock.large_boiler.throttle":"節流:%d", "gtceu.multiblock.large_boiler.throttle.tooltip":"鍋爐可以節流,以減少燃料消耗與蒸汽產出,並且不損失效率,不影響加熱時間。", "gtceu.multiblock.large_boiler.throttle_modify":"修改節流:", - "gtceu.multiblock.large_chemical_reactor.description":"大型化學反應釜能夠以 100% 的能效進行化學反應。超頻將使得處理速度與耗能提升 4 倍。該多方塊結構需要在中心位置的聚四氟乙烯管道方塊旁放置 1 個白銅線圈方塊。", + "gtceu.multiblock.large_chemical_reactor.description":"大型化學反應器能夠以 100% 的能效進行化學反應。超頻將使得處理速度與耗能提升 4 倍。該多方塊結構需要在中心位置的聚四氟乙烯管道方塊旁放置 1 個白銅線圈方塊。", "gtceu.multiblock.large_combustion_engine.boost_disallowed":"§b升級你的能量輸出倉以啟用氧氣促燃", "gtceu.multiblock.large_combustion_engine.description":"大型內燃引擎是一種產出§5EV§r能量的多方塊結構,工作方式與內燃發電機類似。", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount":"液氧存量:%sL", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount":"液氧存量:%smB", "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted":"§b液氧促燃中", - "gtceu.multiblock.large_combustion_engine.lubricant_amount":"潤滑油存量:%sL", + "gtceu.multiblock.large_combustion_engine.lubricant_amount":"潤滑油存量:%smB", "gtceu.multiblock.large_combustion_engine.obstructed":"引擎進氣口受阻。", - "gtceu.multiblock.large_combustion_engine.oxygen_amount":"氧氣存量:%sL", + "gtceu.multiblock.large_combustion_engine.oxygen_amount":"氧氣存量:%smB", "gtceu.multiblock.large_combustion_engine.oxygen_boosted":"§b氧氣促燃中", "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost":"提供液氧來促燃", "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost":"提供氧氣來促燃", @@ -3435,22 +3480,22 @@ "gtceu.multiblock.preview.select":"右擊方塊以檢視其他可選方塊", "gtceu.multiblock.preview.zoom":"使用滑鼠滾輪或右鍵拖拽以縮放", "gtceu.multiblock.primitive_blast_furnace.bronze.description":"土高爐是一種在遊戲前期用來生產鋼的多方塊結構。儘管它不是很快,卻能為你的發展提供鋼材。", - "gtceu.multiblock.primitive_water_pump.description":"原始水泵是一臺前蒸汽時代的多方塊設施,每秒進行一次水資源收集,每秒的收集量取決於其所處的生物群系。水泵輸出倉以及 §8ULV§r 和 §7LV§r 的輸出倉均可用於該設施,輸出倉的等級越高,水資源的產出量也越高。產出量遵循的公式為:生物群系係數 * 輸出倉倍數。", - "gtceu.multiblock.primitive_water_pump.extra1.0":"生物群系係數:", - "gtceu.multiblock.primitive_water_pump.extra1.1":" 海洋,河流:1000 L/s", - "gtceu.multiblock.primitive_water_pump.extra1.2":" 沼澤:800 L/s", - "gtceu.multiblock.primitive_water_pump.extra1.3":" 叢林:350 L/s", - "gtceu.multiblock.primitive_water_pump.extra1.4":" 覆雪群系:300 L/s", - "gtceu.multiblock.primitive_water_pump.extra1.5":" 平原,森林:250 L/s", - "gtceu.multiblock.primitive_water_pump.extra1.6":" 針葉林:175 L/s", - "gtceu.multiblock.primitive_water_pump.extra1.7":" 沙灘:170 L/s", - "gtceu.multiblock.primitive_water_pump.extra1.8":" 其他:100 L/s", + "gtceu.multiblock.primitive_water_pump.description":"原始水泵是一臺前蒸汽時代的多方塊設施,每秒進行一次水資源收集,每秒的收集量取決於其所處的生態域。水泵輸出倉以及 §8ULV§r 和 §7LV§r 的輸出倉均可用於該設施,輸出倉的等級越高,水資源的產出量也越高。產出量遵循的公式為:生態域係數 * 輸出倉倍數。", + "gtceu.multiblock.primitive_water_pump.extra1.0":"生態域係數:", + "gtceu.multiblock.primitive_water_pump.extra1.1":" 海洋,河流:1000 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.2":" 沼澤:800 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.3":" 叢林:350 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.4":" 覆雪生態域:300 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.5":" 平原,森林:250 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.6":" 針葉林:175 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.7":" 沙灘:170 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.8":" 其他:100 mB/s", "gtceu.multiblock.primitive_water_pump.extra2.0":"輸出乘數:", "gtceu.multiblock.primitive_water_pump.extra2.1":" 水泵倉:1x", "gtceu.multiblock.primitive_water_pump.extra2.2":"§8ULV§r輸出倉:2x", "gtceu.multiblock.primitive_water_pump.extra2.3":"§7LV§r輸出倉:4x", "gtceu.multiblock.primitive_water_pump.extra2.4":"", - "gtceu.multiblock.primitive_water_pump.extra2.5":"當水泵所處的生物群系下雨時,總產水量將增加50%%。", + "gtceu.multiblock.primitive_water_pump.extra2.5":"當水泵所處的生態域下雨時,總產水量將增加50%%。", "gtceu.multiblock.processing_array.description":"處理陣列可將最多 16 個單方塊機器整合在一個多方塊結構中,以實現更高效的自動化。", "gtceu.multiblock.progress":"進度:%s%%", "gtceu.multiblock.pyrolyse_oven.description":"熱解爐是一種用於將原木處理為木炭、雜酚油、灰燼或重油的多方塊結構。", @@ -3468,7 +3513,7 @@ "gtceu.multiblock.turbine.efficiency_tooltip":"轉子支架等級超過%s§r時,每級增加§610%%§r的效率。", "gtceu.multiblock.turbine.energy_per_tick":"能量輸出:%s/%s EU/t", "gtceu.multiblock.turbine.energy_per_tick_maxed":"能量輸出:%s EU/t", - "gtceu.multiblock.turbine.fuel_amount":"燃料量:%sL(%s)", + "gtceu.multiblock.turbine.fuel_amount":"燃料量:%smB(%s)", "gtceu.multiblock.turbine.fuel_needed":"消耗量:%s / %s ticks", "gtceu.multiblock.turbine.obstructed":"渦輪受阻", "gtceu.multiblock.turbine.rotor_durability":"轉子耐久度:%s%%", @@ -3513,7 +3558,9 @@ "gtceu.recipe.coil.tier":"線圈:%s", "gtceu.recipe.computation_per_tick":"最小算力:%s CWU/t", "gtceu.recipe.dimensions":"維度:%s", - "gtceu.recipe.duration":"耗時:%s秒", + "gtceu.recipe.duration":"耗時:%s 秒", + "gtceu.recipe.environmental_hazard":"區域內必須有%s", + "gtceu.recipe.environmental_hazard.reverse":"區域內必須不含%s", "gtceu.recipe.eu":"耗能功率:%s EU/t", "gtceu.recipe.eu_inverted":"產能功率:%s EU/t", "gtceu.recipe.eu_to_start":"啟動耗能:%s EU", @@ -3538,6 +3585,45 @@ "gtceu.sifter":"篩選機", "gtceu.steam_boiler":"蒸汽鍋爐", "gtceu.steam_turbine":"蒸汽渦輪", + "gtceu.subtitle.arc":"電弧爐:嗡——", + "gtceu.subtitle.assembler":"組裝機:運行中", + "gtceu.subtitle.bath":"化學水浴機:嘶嘶", + "gtceu.subtitle.boiler":"鍋爐:液體沸騰", + "gtceu.subtitle.centrifuge":"離心機:旋轉", + "gtceu.subtitle.chainsaw":"鏈鋸:拉動油門", + "gtceu.subtitle.chemical":"化學反應器:運行中", + "gtceu.subtitle.combustion":"燃燒發電機:燃料燃燒", + "gtceu.subtitle.compressor":"壓縮機:擠壓", + "gtceu.subtitle.computation":"計算機:嗶嗶", + "gtceu.subtitle.cooling":"真空冷凍機:嗡——", + "gtceu.subtitle.cut":"切割機:嘶嘶叫", + "gtceu.subtitle.drill":"電鑽:嗡嗡", + "gtceu.subtitle.electrolyzer":"電解機:爆出火花", + "gtceu.subtitle.file":"銼:磨削", + "gtceu.subtitle.fire":"火:爆裂", + "gtceu.subtitle.forge_hammer":"鍛造錘:DUANG", + "gtceu.subtitle.furnace":"電爐:冶煉", + "gtceu.subtitle.jet_engine":"噴射背包:轟轟", + "gtceu.subtitle.macerator":"研磨機:破碎", + "gtceu.subtitle.metal_pipe":"流體管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", + "gtceu.subtitle.miner":"採礦機:開採", + "gtceu.subtitle.mixer":"攪拌機:攪動", + "gtceu.subtitle.mortar":"研缽:研磨", + "gtceu.subtitle.motor":"馬達:轉啊轉", + "gtceu.subtitle.plunger":"搋子:清理流體", + "gtceu.subtitle.portable_scanner":"便攜式掃描儀:掃描", + "gtceu.subtitle.portal_closing":"傳送門:關閉", + "gtceu.subtitle.portal_opening":"傳送門:開啟", + "gtceu.subtitle.replicator":"複製機:運行", + "gtceu.subtitle.saw":"鋸:切割", + "gtceu.subtitle.science":"化學反應器:科!學!", + "gtceu.subtitle.screwdriver":"螺絲刀:擰螺絲", + "gtceu.subtitle.soft_hammer":"軟錘:輕敲", + "gtceu.subtitle.spray_can":"噴漆罐:噴塗", + "gtceu.subtitle.sus":"唱片:你有嫌疑", + "gtceu.subtitle.turbine":"渦輪:呼嘯", + "gtceu.subtitle.wirecutter":"剪線鉗:剪斷", + "gtceu.subtitle.wrench":"扳手:嘎啦", "gtceu.thermal_centrifuge":"熱力離心機", "gtceu.tool.class.axe":"斧", "gtceu.tool.class.butchery_knife":"屠刀", @@ -3552,7 +3638,7 @@ "gtceu.tool.class.mortar":"研缽", "gtceu.tool.class.pickaxe":"鎬", "gtceu.tool.class.plunger":"搋子", - "gtceu.tool.class.rolling_pin":"擀麵杖", + "gtceu.tool.class.rolling_pin":"擀麵棍", "gtceu.tool.class.saw":"鋸", "gtceu.tool.class.screwdriver":"螺絲起子", "gtceu.tool.class.scythe":"鐮刀", @@ -3581,8 +3667,8 @@ "gtceu.tooltip.hold_ctrl":"§7按住CTRL獲得更多資訊", "gtceu.tooltip.hold_shift":"§7按住§6SHIFT§7獲得更多資訊", "gtceu.tooltip.tool_fluid_hold_shift":"§7按住§6SHIFT§7以檢視流體容器及工具詳情", - "gtceu.top.convert_eu":"轉換模式:§eEU§r ->§cFE/E§r", - "gtceu.top.convert_fe":"轉換模式:§cFE/E§r ->§eEU§r", + "gtceu.top.convert_eu":"轉換模式:§eEU§r ->§cFE§r", + "gtceu.top.convert_fe":"轉換模式:§cFE§r ->§eEU§r", "gtceu.top.energy_consumption":"耗能", "gtceu.top.energy_production":"產能", "gtceu.top.energy_stored":" / %d EU", @@ -3610,16 +3696,16 @@ "gtceu.top.transform_input":"§6輸入:§r", "gtceu.top.transform_output":"§9輸出:§r", "gtceu.top.transform_up":"§c升壓§r", - "gtceu.top.unit.fluid_buckets":"kL", - "gtceu.top.unit.fluid_milibuckets":"L", + "gtceu.top.unit.fluid_buckets":"B", + "gtceu.top.unit.fluid_milibuckets":"mB", "gtceu.top.unit.items":"物品", "gtceu.top.valid_structure":"結構已成型", "gtceu.top.working_disabled":"已暫停工作", "gtceu.universal.clear_nbt_recipe.tooltip":"§c這將清除所有內容物!", "gtceu.universal.disabled":"多方塊結構共享:§4禁止", "gtceu.universal.enabled":"多方塊結構共享:§a允許", - "gtceu.universal.kiloliters":"%s kL", - "gtceu.universal.liters":"%s L", + "gtceu.universal.kiloliters":"%s B", + "gtceu.universal.liters":"%s mB", "gtceu.universal.tooltip.amperage_in":"§e輸入電流:§f%dA", "gtceu.universal.tooltip.amperage_in_out":"§e輸入/輸出電流:§f%dA", "gtceu.universal.tooltip.amperage_in_out_till":"§e輸入/輸出電流上限:§f%dA", @@ -3627,15 +3713,15 @@ "gtceu.universal.tooltip.amperage_out":"§e輸出電流:§f%dA", "gtceu.universal.tooltip.amperage_out_till":"§e輸出電流上限:§f%dA", "gtceu.universal.tooltip.base_production_eut":"§e基礎產能功率:§f%d EU/t", - "gtceu.universal.tooltip.base_production_fluid":"§e基礎產出速率:§f%d L/t", + "gtceu.universal.tooltip.base_production_fluid":"§e基礎產出速率:§f%d mB/t", "gtceu.universal.tooltip.chunk_mode":"區塊模式:", "gtceu.universal.tooltip.deprecated":"§4§l警告:§r§4已棄用。將在未來版本中移除。§r", "gtceu.universal.tooltip.energy_storage_capacity":"§c能量快取:§r%d EU", "gtceu.universal.tooltip.energy_tier_range":"§a適配電壓等級:§f%s§f-%s", - "gtceu.universal.tooltip.fluid_storage_capacity":"§9流體容量:§f%d L", - "gtceu.universal.tooltip.fluid_storage_capacity_mult":"§9流體容量:§r共§f%d§7個流體槽,每個§f%dL§7", - "gtceu.universal.tooltip.fluid_stored":"§d內部流體:%2$d L§f%1$s", - "gtceu.universal.tooltip.fluid_transfer_rate":"§b傳輸速率:§f%d L/t", + "gtceu.universal.tooltip.fluid_storage_capacity":"§9流體容量:§f%d mB", + "gtceu.universal.tooltip.fluid_storage_capacity_mult":"§9流體容量:§r共§f%d§7個流體槽,每個§f%dmB§7", + "gtceu.universal.tooltip.fluid_stored":"§d內部流體:%2$d mB §f%1$s", + "gtceu.universal.tooltip.fluid_transfer_rate":"§b傳輸速率:§f%d mB/t", "gtceu.universal.tooltip.item_storage_capacity":"§6物品槽位數量:§f%d", "gtceu.universal.tooltip.item_storage_total":"§6物品容量:§f%d物品", "gtceu.universal.tooltip.item_stored":"§d內部物品:§f%2$d個%1$s", @@ -3645,15 +3731,15 @@ "gtceu.universal.tooltip.max_voltage_in_out":"§a最大輸入/輸出電壓:§f%d EU/t(%s§f)", "gtceu.universal.tooltip.max_voltage_out":"§a最大輸出電壓:§f%d(%s§f)", "gtceu.universal.tooltip.parallel":"§d最大並行:§f%d", - "gtceu.universal.tooltip.produces_fluid":"§e產出速率:§f%d L/t", + "gtceu.universal.tooltip.produces_fluid":"§e產出速率:§f%d mB/t", "gtceu.universal.tooltip.requires_redstone":"§4需要紅石訊號", - "gtceu.universal.tooltip.silk_touch":"精準採集:", + "gtceu.universal.tooltip.silk_touch":"絲綢之觸:", "gtceu.universal.tooltip.terrain_resist":"該機器不會在暴露於惡劣天氣時爆炸", - "gtceu.universal.tooltip.uses_per_hour_lubricant":"工作時消耗§f%d L/hr§7潤滑油", + "gtceu.universal.tooltip.uses_per_hour_lubricant":"工作時消耗§f%d mB/hr§7潤滑油", "gtceu.universal.tooltip.uses_per_op":"每次工作時消耗§f%d EU§7", "gtceu.universal.tooltip.uses_per_second":"工作時消耗§f%d EU/s§7", "gtceu.universal.tooltip.uses_per_tick":"工作時消耗§f%d EU/t§7", - "gtceu.universal.tooltip.uses_per_tick_steam":"工作時消耗§f%dL/t§7蒸汽", + "gtceu.universal.tooltip.uses_per_tick_steam":"工作時消耗§f%dmB/t§7蒸汽", "gtceu.universal.tooltip.voltage_in":"§a輸入電壓:§f%d EU/t(%s§f)", "gtceu.universal.tooltip.voltage_in_out":"§a輸入/輸出電壓:§f%d EU/t(%s§f)", "gtceu.universal.tooltip.voltage_out":"§a輸出電壓:§f%d EU/t(%s§f)", @@ -3670,7 +3756,7 @@ "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_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":"進階流體探測器", @@ -3767,7 +3853,7 @@ "item.gtceu.chemical_green_dye":"綠色化學染料", "item.gtceu.chemical_light_blue_dye":"淺藍色化學染料", "item.gtceu.chemical_light_gray_dye":"淺灰色化學染料", - "item.gtceu.chemical_lime_dye":"黃綠色化學染料", + "item.gtceu.chemical_lime_dye":"淺綠色化學染料", "item.gtceu.chemical_magenta_dye":"洋紅色化學染料", "item.gtceu.chemical_orange_dye":"橙色化學染料", "item.gtceu.chemical_pink_dye":"粉紅色化學染料", @@ -3793,8 +3879,8 @@ "item.gtceu.cpu_chip.tooltip":"§7中央處理器", "item.gtceu.cpu_wafer":"CPU晶圓", "item.gtceu.cpu_wafer.tooltip":"§7中央處理器原料", - "item.gtceu.crafting_table_cover":"工作臺覆蓋板", - "item.gtceu.crafting_table_cover.tooltip":"§7安裝在機器側面的§f覆蓋板§7式§f高階工作臺§7。", + "item.gtceu.crafting_table_cover":"工作台覆蓋板", + "item.gtceu.crafting_table_cover.tooltip":"§7安裝在機器側面的§f覆蓋板§7式§f高階工作台§7。", "item.gtceu.credit_casting_mold":"模具(硬幣)", "item.gtceu.credit_casting_mold.tooltip":"§7用來製作硬幣的安全模具(別把它弄丟了!)", "item.gtceu.crushed_bentonite_ore":"精研膨潤土", @@ -3839,7 +3925,7 @@ "item.gtceu.duct_tape.tooltip":"§7如果一卷修不好,那就再來一卷!", "item.gtceu.dynamite":"炸藥", "item.gtceu.electric.pump.tooltip":"§7作§f覆蓋板§7時以特定速率傳輸§f流體§7。", - "item.gtceu.electric_jetpack":"電力噴氣背包", + "item.gtceu.electric_jetpack":"電力噴射背包", "item.gtceu.empty_mold":"空模板", "item.gtceu.empty_mold.tooltip":"§7用以製作模具與壓模器的模頭", "item.gtceu.empty_spray_can":"空噴漆罐", @@ -3871,7 +3957,7 @@ "item.gtceu.ev_electric_pump":"§5EV§r電動泵", "item.gtceu.ev_emitter":"§5EV§r發射器", "item.gtceu.ev_field_generator":"§5EV§r力場發生器", - "item.gtceu.ev_fluid_regulator":"§5EV§r流體校準器", + "item.gtceu.ev_fluid_regulator":"§5EV§r流體調節器", "item.gtceu.ev_power_unit":"§5EV§r能量單元", "item.gtceu.ev_robot_arm":"§5EV§r機械臂", "item.gtceu.ev_sensor":"§5EV§r感測器", @@ -3902,10 +3988,10 @@ "item.gtceu.fluid_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f流體儲量§7發出紅石訊號。", "item.gtceu.fluid_filter":"流體過濾卡", "item.gtceu.fluid_filter.tooltip.0":"§7作§f覆蓋板§7時過濾§流體§7的輸入/輸出。", - "item.gtceu.fluid_filter.tooltip.1":"§7可用於升級§f電動泵§7與§f流體校準器§7。", + "item.gtceu.fluid_filter.tooltip.1":"§7可用於升級§f電動泵§7與§f流體調節器§7。", "item.gtceu.fluid_tag_filter":"流體標籤過濾卡", "item.gtceu.fluid_tag_filter.tooltip.0":"§7作§f覆蓋板§7時過濾§流體標籤的流體§7的輸入/輸出。", - "item.gtceu.fluid_tag_filter.tooltip.1":"§7可用於升級§f電動泵§7與§f流體校準器§7。", + "item.gtceu.fluid_tag_filter.tooltip.1":"§7可用於升級§f電動泵§7與§f流體調節器§7。", "item.gtceu.fluid_voiding_cover":"流體銷毀覆蓋板", "item.gtceu.fluid_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時允許銷毀§f流體§7。", "item.gtceu.fluid_voiding_cover.tooltip.1":"§7加裝後使用§f軟錘§7啟用", @@ -3970,7 +4056,7 @@ "item.gtceu.hv_electric_pump":"§6HV§r電動泵", "item.gtceu.hv_emitter":"§6HV§r發射器", "item.gtceu.hv_field_generator":"§6HV§r力場發生器", - "item.gtceu.hv_fluid_regulator":"§6HV§r流體校準器", + "item.gtceu.hv_fluid_regulator":"§6HV§r流體調節器", "item.gtceu.hv_item_magnet":"§6HV§r物品磁鐵", "item.gtceu.hv_lithium_battery":"大型鋰電池", "item.gtceu.hv_lithium_battery.tooltip":"§7可充電電池", @@ -4023,7 +4109,7 @@ "item.gtceu.iv_electric_pump":"§9IV§r電動泵", "item.gtceu.iv_emitter":"§9IV§r發射器", "item.gtceu.iv_field_generator":"§9IV§r力場發生器", - "item.gtceu.iv_fluid_regulator":"§9IV§r流體校準器", + "item.gtceu.iv_fluid_regulator":"§9IV§r流體調節器", "item.gtceu.iv_power_unit":"§9IV§r能量單元", "item.gtceu.iv_robot_arm":"§9IV§r機械臂", "item.gtceu.iv_sensor":"§9IV§r感測器", @@ -4043,9 +4129,9 @@ "item.gtceu.light_blue_glass_lens":"玻璃透鏡(淺藍色)", "item.gtceu.light_gray_dye_spray_can":"噴漆罐(淺灰色)", "item.gtceu.light_gray_glass_lens":"玻璃透鏡(淺灰色)", - "item.gtceu.lime_dye_spray_can":"噴漆罐(黃綠色)", - "item.gtceu.lime_glass_lens":"玻璃透鏡(黃綠色)", - "item.gtceu.liquid_fuel_jetpack":"液體燃料噴氣背包", + "item.gtceu.lime_dye_spray_can":"噴漆罐(淺綠色)", + "item.gtceu.lime_glass_lens":"玻璃透鏡(淺綠色)", + "item.gtceu.liquid_fuel_jetpack":"液體燃料噴射背包", "item.gtceu.long_rod_extruder_mold":"模頭(長桿)", "item.gtceu.long_treated_wood_rod":"長防腐木棍", "item.gtceu.long_wood_rod":"長木棍", @@ -4061,7 +4147,7 @@ "item.gtceu.luv_electric_pump":"§dLuV§r電動泵", "item.gtceu.luv_emitter":"§dLuV§r發射器", "item.gtceu.luv_field_generator":"§dLuV§r力場發生器", - "item.gtceu.luv_fluid_regulator":"§dLuV§r流體校準器", + "item.gtceu.luv_fluid_regulator":"§dLuV§r流體調節器", "item.gtceu.luv_robot_arm":"§dLuV§r機械臂", "item.gtceu.luv_sensor":"§dLuV§r感測器", "item.gtceu.luv_solar_panel":"劇差壓太陽能板(§dLuV§r)", @@ -4079,7 +4165,7 @@ "item.gtceu.lv_electric_pump":"§7LV§r電動泵", "item.gtceu.lv_emitter":"§7LV§r發射器", "item.gtceu.lv_field_generator":"§7LV§r力場發生器", - "item.gtceu.lv_fluid_regulator":"§7LV§r流體校準器", + "item.gtceu.lv_fluid_regulator":"§7LV§r流體調節器", "item.gtceu.lv_item_magnet":"§7LV§r物品磁鐵", "item.gtceu.lv_lithium_battery":"小型鋰電池", "item.gtceu.lv_lithium_battery.tooltip":"§7可充電電池", @@ -4134,7 +4220,7 @@ "item.gtceu.mv_electric_pump":"§bMV§r電動泵", "item.gtceu.mv_emitter":"§bMV§r發射器", "item.gtceu.mv_field_generator":"§bMV§r力場發生器", - "item.gtceu.mv_fluid_regulator":"§bMV§r流體校準器", + "item.gtceu.mv_fluid_regulator":"§bMV§r流體調節器", "item.gtceu.mv_lithium_battery":"中型鋰電池", "item.gtceu.mv_lithium_battery.tooltip":"§7可充電電池", "item.gtceu.mv_power_unit":"§bMV§r能量單元", @@ -4208,7 +4294,7 @@ "item.gtceu.opv_electric_pump":"§9§lOpV§r電動泵", "item.gtceu.opv_emitter":"§9OpV§r發射器", "item.gtceu.opv_field_generator":"§9§lOpV§r力場發生器", - "item.gtceu.opv_fluid_regulator":"§9§lOpV§r流體校準器", + "item.gtceu.opv_fluid_regulator":"§9§lOpV§r流體調節器", "item.gtceu.opv_robot_arm":"§9§lOpV§r機械臂", "item.gtceu.opv_sensor":"§9§lOpV§r感測器", "item.gtceu.opv_voltage_coil.tooltip":"傳奇線圈", @@ -4469,7 +4555,7 @@ "item.gtceu.tool.behavior.remove_wax":"§6清潔試劑:§f脫蠟", "item.gtceu.tool.behavior.scrape":"§b拋光工藝:§f除鏽", "item.gtceu.tool.behavior.shield_disable":"§c野獸蠻攻:§f無視盾牌", - "item.gtceu.tool.behavior.silk_ice":"§b切冰利刃:§f精準採集冰塊", + "item.gtceu.tool.behavior.silk_ice":"§b切冰利刃:§f絲綢之觸採集冰塊", "item.gtceu.tool.behavior.strip_log":"§5林業工匠:§f剝去原木的表皮", "item.gtceu.tool.behavior.torch_place":"§e洞窟探客:§f右擊放置火把", "item.gtceu.tool.behavior.tree_felling":"§4伐木好手:§f連鎖砍樹", @@ -4518,7 +4604,7 @@ "item.gtceu.tool.plunger":"%s搋子", "item.gtceu.tool.plunger.tooltip":"§8從機器中抽除流體", "item.gtceu.tool.replace_tool_head":"在合成欄用新的工具頭替換", - "item.gtceu.tool.rolling_pin":"%s擀麵杖", + "item.gtceu.tool.rolling_pin":"%s擀麵棍", "item.gtceu.tool.saw":"%s鋸", "item.gtceu.tool.screwdriver":"%s螺絲起子", "item.gtceu.tool.screwdriver.tooltip":"§8調整覆蓋板和機器", @@ -4546,7 +4632,7 @@ "item.gtceu.transistor.tooltip":"§7基礎電子元件", "item.gtceu.treated_wood_bolt":"短防腐木棍", "item.gtceu.treated_wood_dust":"防腐木漿", - "item.gtceu.treated_wood_plate":"防腐木板", + "item.gtceu.treated_wood_plate":"防腐木材", "item.gtceu.treated_wood_rod":"防腐木棍", "item.gtceu.tungsten_grinding_head":"鎢研磨頭", "item.gtceu.tungstensteel_fluid_cell":"鎢鋼單元", @@ -4558,7 +4644,7 @@ "item.gtceu.uev_electric_pump":"§aUEV§r電動泵", "item.gtceu.uev_emitter":"§aUEV§r發射器", "item.gtceu.uev_field_generator":"§aUEV§r力場發生器", - "item.gtceu.uev_fluid_regulator":"§aUEV§r流體校準器", + "item.gtceu.uev_fluid_regulator":"§aUEV§r流體調節器", "item.gtceu.uev_robot_arm":"§aUEV§r機械臂", "item.gtceu.uev_sensor":"§aUEV§r感測器", "item.gtceu.uev_voltage_coil.tooltip":"超凡線圈", @@ -4572,7 +4658,7 @@ "item.gtceu.uhv_electric_pump":"§4UHV§r電動泵", "item.gtceu.uhv_emitter":"§4UHV§r發射器", "item.gtceu.uhv_field_generator":"§4UHV§r力場發生器", - "item.gtceu.uhv_fluid_regulator":"§4UHV§r流體校準器", + "item.gtceu.uhv_fluid_regulator":"§4UHV§r流體調節器", "item.gtceu.uhv_robot_arm":"§4UHV§r機械臂", "item.gtceu.uhv_sensor":"§4UHV§r感測器", "item.gtceu.uhv_voltage_coil.tooltip":"極致線圈", @@ -4582,7 +4668,7 @@ "item.gtceu.uiv_electric_pump":"§2UIV§r電動泵", "item.gtceu.uiv_emitter":"§2UIV§r發射器", "item.gtceu.uiv_field_generator":"§2UIV§r力場發生器", - "item.gtceu.uiv_fluid_regulator":"§2UIV§r流體校準器", + "item.gtceu.uiv_fluid_regulator":"§2UIV§r流體調節器", "item.gtceu.uiv_robot_arm":"§2UIV§r機械臂", "item.gtceu.uiv_sensor":"§2UIV§r感測器", "item.gtceu.uiv_voltage_coil.tooltip":"瘋狂線圈", @@ -4603,7 +4689,7 @@ "item.gtceu.uv_electric_pump":"§3UV§r電動泵", "item.gtceu.uv_emitter":"§3UV§r發射器", "item.gtceu.uv_field_generator":"§3UV§r力場發生器", - "item.gtceu.uv_fluid_regulator":"§3UV§r流體校準器", + "item.gtceu.uv_fluid_regulator":"§3UV§r流體調節器", "item.gtceu.uv_naquadria_battery":"大型超能矽岩電池", "item.gtceu.uv_naquadria_battery.tooltip":"§7可充電電池", "item.gtceu.uv_robot_arm":"§3UV§r機械臂", @@ -4617,7 +4703,7 @@ "item.gtceu.uxv_electric_pump":"§eUXV§r§r電動泵", "item.gtceu.uxv_emitter":"§eUXV§r發射器", "item.gtceu.uxv_field_generator":"§eUXV§r力場發生器", - "item.gtceu.uxv_fluid_regulator":"§eUXV§r流體校準器", + "item.gtceu.uxv_fluid_regulator":"§eUXV§r流體調節器", "item.gtceu.uxv_robot_arm":"§eUXV§r機械臂", "item.gtceu.uxv_sensor":"§eUXV§r感測器", "item.gtceu.uxv_voltage_coil.tooltip":"史詩線圈", @@ -4659,7 +4745,7 @@ "item.gtceu.zpm_electric_pump":"§cZPM§r電動泵", "item.gtceu.zpm_emitter":"§cZPM§r發射器", "item.gtceu.zpm_field_generator":"§cZPM§r力場發生器", - "item.gtceu.zpm_fluid_regulator":"§cZPM§r流體校準器", + "item.gtceu.zpm_fluid_regulator":"§cZPM§r流體調節器", "item.gtceu.zpm_naquadria_battery":"中型超能矽岩電池", "item.gtceu.zpm_naquadria_battery.tooltip":"§7可充電電池", "item.gtceu.zpm_robot_arm":"§cZPM§r機械臂", @@ -5000,7 +5086,7 @@ "material.gtceu.lightly_steam_cracked_heavy_fuel":"輕度蒸汽裂解重燃油", "material.gtceu.lightly_steam_cracked_light_fuel":"輕度蒸汽裂解輕燃油", "material.gtceu.lightly_steam_cracked_naphtha":"輕度蒸汽裂解石腦油", - "material.gtceu.lime_dye":"黃綠色染料", + "material.gtceu.lime_dye":"淺綠色染料", "material.gtceu.liquid_air":"液態空氣", "material.gtceu.liquid_ender_air":"液態終界空氣", "material.gtceu.liquid_nether_air":"液態地獄空氣", @@ -5346,9 +5432,9 @@ "metaarmor.hud.hover_mode":"懸浮模式:%s", "metaarmor.hud.status.disabled":"§c關", "metaarmor.hud.status.enabled":"§a開", - "metaarmor.jetpack.emergency_hover_mode":"緊急懸停模式已啟用!", - "metaarmor.jetpack.hover.disable":"噴氣背包:懸停模式已禁用", - "metaarmor.jetpack.hover.enable":"噴氣背包:懸停模式已啟用", + "metaarmor.jetpack.emergency_hover_mode":"緊急懸浮模式已啟用!", + "metaarmor.jetpack.hover.disable":"噴射背包:懸浮模式已禁用", + "metaarmor.jetpack.hover.enable":"噴射背包:懸浮模式已啟用", "metaarmor.message.nightvision.disabled":"§b夜視:§c關閉", "metaarmor.message.nightvision.enabled":"§b夜視:§a開啟", "metaarmor.message.nightvision.error":"§c能量不足!", @@ -5430,7 +5516,7 @@ "recipe.capability.fluid.name":"流體", "recipe.capability.item.name":"物品", "recipe.capability.su.name":"Create應力", - "recipe.condition.biome.tooltip":"生物群系:%s", + "recipe.condition.biome.tooltip":"生態域:%s", "recipe.condition.dimension.tooltip":"維度:%s", "recipe.condition.eu_to_start.tooltip":"啟動要求:%d EU", "recipe.condition.pos_y.tooltip":"Y軸高度:%d <= Y <= %d", @@ -5498,7 +5584,7 @@ "tagprefix.pipe_small_item":"小型%s物品管道", "tagprefix.pipe_small_restrictive":"小型加固%s物品管道", "tagprefix.pipe_tiny_fluid":"微型%s流體管道", - "tagprefix.planks":"%s木板", + "tagprefix.planks":"%s木材", "tagprefix.plate":"%s板", "tagprefix.polymer.dense_plate":"緻密%s片", "tagprefix.polymer.double_plate":"雙層%s片", diff --git a/src/main/resources/assets/gtceu/models/block/cube_bottom_top_tintindex.json b/src/main/resources/assets/gtceu/models/block/cube_bottom_top_tintindex.json index 1c3f76bd8b..a3af7b23b2 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_bottom_top_tintindex.json +++ b/src/main/resources/assets/gtceu/models/block/cube_bottom_top_tintindex.json @@ -8,12 +8,12 @@ "from": [ 0, 0, 0], "to": [16, 16, 16], "faces": { - "down": { "texture": "#bottom", "tintindex": 0 }, - "up": { "texture": "#top", "tintindex": 0 }, - "north": { "texture": "#side", "tintindex": 0 }, - "east": { "texture": "#side", "tintindex": 0 }, - "south": { "texture": "#side", "tintindex": 0 }, - "west": { "texture": "#side", "tintindex": 0 } + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/lamp.json b/src/main/resources/assets/gtceu/models/block/lamp.json new file mode 100644 index 0000000000..1ac4aeba0d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/lamp.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/cube_2_layer_all", + "textures": { + "bot_all": "#active", + "top_all": "#active_overlay" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/lamp_borderless.json b/src/main/resources/assets/gtceu/models/block/lamp_borderless.json new file mode 100644 index 0000000000..e24c1097ea --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/lamp_borderless.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "#active" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/lamp_borderless_off.json b/src/main/resources/assets/gtceu/models/block/lamp_borderless_off.json new file mode 100644 index 0000000000..d1a845c5f3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/lamp_borderless_off.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "#inactive" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/lamp_off.json b/src/main/resources/assets/gtceu/models/block/lamp_off.json new file mode 100644 index 0000000000..d1a845c5f3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/lamp_off.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "#inactive" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_stainless_evaporation.png b/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_stainless_evaporation.png index b8206dba76..73ea0d12c8 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_stainless_evaporation.png and b/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_stainless_evaporation.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/casings/unique/heat_vent_bloom.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/casings/unique/heat_vent_bloom.png.mcmeta index e333118814..c632ba4f8f 100644 --- a/src/main/resources/assets/gtceu/textures/block/casings/unique/heat_vent_bloom.png.mcmeta +++ b/src/main/resources/assets/gtceu/textures/block/casings/unique/heat_vent_bloom.png.mcmeta @@ -1,4 +1,5 @@ { + "animation": {"frametime": 2}, "shimmer": { "bloom": true } diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/down.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/down.png new file mode 100644 index 0000000000..fd8e668260 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/down.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/east.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/east.png new file mode 100644 index 0000000000..c6331fe528 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/east.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/north.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/north.png new file mode 100644 index 0000000000..d95dc2445a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/north.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/south.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/south.png new file mode 100644 index 0000000000..bc9483935f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/south.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/up.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/up.png new file mode 100644 index 0000000000..a33ecdca4d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/up.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/west.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/west.png new file mode 100644 index 0000000000..4c2182926c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/overworld/west.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/down.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/down.png new file mode 100644 index 0000000000..712a4f5c72 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/down.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/east.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/east.png new file mode 100644 index 0000000000..e7a2ba020a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/east.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/north.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/north.png new file mode 100644 index 0000000000..ccf2e31970 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/north.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/south.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/south.png new file mode 100644 index 0000000000..b300d3b81f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/south.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/up.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/up.png new file mode 100644 index 0000000000..b18188ebd2 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/up.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/west.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/west.png new file mode 100644 index 0000000000..df9ce0c3ce Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_end/west.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/down.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/down.png new file mode 100644 index 0000000000..cbd51db421 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/down.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/east.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/east.png new file mode 100644 index 0000000000..bd994ac25c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/east.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/north.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/north.png new file mode 100644 index 0000000000..5b0f798e88 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/north.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/south.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/south.png new file mode 100644 index 0000000000..01c2a40b66 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/south.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/up.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/up.png new file mode 100644 index 0000000000..7865ff41c8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/up.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/west.png b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/west.png new file mode 100644 index 0000000000..4a976ce376 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/dim_markers/the_nether/west.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/black_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/black.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/black_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/black.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/black.png.mcmeta new file mode 100644 index 0000000000..8f14d9b9cb --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/black.png.mcmeta @@ -0,0 +1,6 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/black_ctm" + } +} + diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless.png new file mode 100644 index 0000000000..a8a57548b7 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless_emissive.png new file mode 100644 index 0000000000..a8a57548b7 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/black_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm.png new file mode 100644 index 0000000000..3f25dd7482 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm_emissive.png new file mode 100644 index 0000000000..c24b96a2c2 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/black_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_emissive.png new file mode 100644 index 0000000000..e05d066f64 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/black_emissive.png.mcmeta new file mode 100644 index 0000000000..986fc3c4b9 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/black_emissive.png.mcmeta @@ -0,0 +1,9 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/black_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} + diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_off.png new file mode 100644 index 0000000000..f40748565e Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/black_off.png.mcmeta new file mode 100644 index 0000000000..077f1b444b --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/black_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/black_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_off_borderless.png new file mode 100644 index 0000000000..00b0e4391d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/black_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/black_off_ctm.png new file mode 100644 index 0000000000..c6a7b070e8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/black_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/blue_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/blue_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/blue.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/blue.png.mcmeta new file mode 100644 index 0000000000..b2d32fbdde --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/blue.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/blue_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless.png new file mode 100644 index 0000000000..4c5793763d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless_emissive.png new file mode 100644 index 0000000000..4c5793763d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/blue_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm.png new file mode 100644 index 0000000000..a4b3b65c0a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm_emissive.png new file mode 100644 index 0000000000..46c65c7ea5 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/blue_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_emissive.png new file mode 100644 index 0000000000..4b88c5c855 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/blue_emissive.png.mcmeta new file mode 100644 index 0000000000..6c7c62e8ad --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/blue_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/blue_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off.png new file mode 100644 index 0000000000..28d8853203 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off.png.mcmeta new file mode 100644 index 0000000000..6692caee33 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/blue_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off_borderless.png new file mode 100644 index 0000000000..c60bf0f0c8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/blue_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off_ctm.png new file mode 100644 index 0000000000..977717f8cb Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/blue_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/brown_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/brown_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/brown.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/brown.png.mcmeta new file mode 100644 index 0000000000..10bc639e0f --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/brown.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/brown_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless.png new file mode 100644 index 0000000000..671f9e73be Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless_emissive.png new file mode 100644 index 0000000000..671f9e73be Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/brown_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm.png new file mode 100644 index 0000000000..1977c3375f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm_emissive.png new file mode 100644 index 0000000000..03000d870f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/brown_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_emissive.png new file mode 100644 index 0000000000..6f81d4e5a3 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/brown_emissive.png.mcmeta new file mode 100644 index 0000000000..5716c71403 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/brown_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/brown_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off.png new file mode 100644 index 0000000000..4fe0c5cd51 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off.png.mcmeta new file mode 100644 index 0000000000..f222ed9e8a --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/brown_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off_borderless.png new file mode 100644 index 0000000000..ff6429a8f7 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/brown_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off_ctm.png new file mode 100644 index 0000000000..310770394c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/brown_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/cyan_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cyan_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/cyan.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/cyan.png.mcmeta new file mode 100644 index 0000000000..c0f13e9c0b --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/cyan.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/cyan_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless.png new file mode 100644 index 0000000000..474ac02630 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless_emissive.png new file mode 100644 index 0000000000..474ac02630 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm.png new file mode 100644 index 0000000000..5434612fca Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm_emissive.png new file mode 100644 index 0000000000..cddd75ddaf Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_emissive.png new file mode 100644 index 0000000000..b6ab5b682a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_emissive.png.mcmeta new file mode 100644 index 0000000000..b1725e83fa --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/cyan_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off.png new file mode 100644 index 0000000000..de15ca5b7a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off.png.mcmeta new file mode 100644 index 0000000000..0e6b73d84f --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/cyan_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off_borderless.png new file mode 100644 index 0000000000..716da40832 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off_ctm.png new file mode 100644 index 0000000000..16fdf08d7b Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/cyan_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/gray_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/gray_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/gray.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/gray.png.mcmeta new file mode 100644 index 0000000000..4cc28d73d3 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/gray.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/gray_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless.png new file mode 100644 index 0000000000..8e335e8926 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless_emissive.png new file mode 100644 index 0000000000..8e335e8926 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/gray_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm.png new file mode 100644 index 0000000000..7dd0ce87cc Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm_emissive.png new file mode 100644 index 0000000000..96557115ec Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/gray_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_emissive.png new file mode 100644 index 0000000000..ac025dfdc2 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/gray_emissive.png.mcmeta new file mode 100644 index 0000000000..c55ae8fc19 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/gray_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/gray_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off.png new file mode 100644 index 0000000000..5635abcf8e Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off.png.mcmeta new file mode 100644 index 0000000000..1bf1376070 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/gray_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off_borderless.png new file mode 100644 index 0000000000..7198031e98 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/gray_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off_ctm.png new file mode 100644 index 0000000000..019bc71e6b Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/gray_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/green_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/green.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/green_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/green.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/green.png.mcmeta new file mode 100644 index 0000000000..8c0cb78a3d --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/green.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/green_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless.png new file mode 100644 index 0000000000..5eb99c6c2c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless_emissive.png new file mode 100644 index 0000000000..5eb99c6c2c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/green_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm.png new file mode 100644 index 0000000000..5832facd06 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm_emissive.png new file mode 100644 index 0000000000..dc1f183eca Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/green_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_emissive.png new file mode 100644 index 0000000000..535e9f86ff Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/green_emissive.png.mcmeta new file mode 100644 index 0000000000..61c740ca6c --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/green_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/green_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_off.png new file mode 100644 index 0000000000..71db7c6a7a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/green_off.png.mcmeta new file mode 100644 index 0000000000..183ef8c6ac --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/green_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/green_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_off_borderless.png new file mode 100644 index 0000000000..6951c4d93e Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/green_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/green_off_ctm.png new file mode 100644 index 0000000000..7b47365596 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/green_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/light_blue_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/light_blue_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/light_blue.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue.png.mcmeta new file mode 100644 index 0000000000..7be5820dc9 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/light_blue_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless.png new file mode 100644 index 0000000000..6b5830650a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless_emissive.png new file mode 100644 index 0000000000..6b5830650a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm.png new file mode 100644 index 0000000000..bb2d19740d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm_emissive.png new file mode 100644 index 0000000000..fc8b5c55c5 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_emissive.png new file mode 100644 index 0000000000..cb64435fd2 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_emissive.png.mcmeta new file mode 100644 index 0000000000..3c37363340 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/light_blue_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off.png new file mode 100644 index 0000000000..6e8a0280f8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off.png.mcmeta new file mode 100644 index 0000000000..36da8684b5 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/light_blue_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off_borderless.png new file mode 100644 index 0000000000..5ccfa81a76 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off_ctm.png new file mode 100644 index 0000000000..55c560ae2e Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/light_gray_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/light_gray_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/light_gray.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray.png.mcmeta new file mode 100644 index 0000000000..876352e371 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/silver_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless.png new file mode 100644 index 0000000000..3191e57d4c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless_emissive.png new file mode 100644 index 0000000000..3191e57d4c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm.png new file mode 100644 index 0000000000..0b14bbc2fa Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm_emissive.png new file mode 100644 index 0000000000..38345fc885 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_emissive.png new file mode 100644 index 0000000000..f1ef4a8ca4 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_emissive.png.mcmeta new file mode 100644 index 0000000000..cbf07ef6d1 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/silver_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off.png new file mode 100644 index 0000000000..5a9e6f9337 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off.png.mcmeta new file mode 100644 index 0000000000..c884f74ba1 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/silver_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off_borderless.png new file mode 100644 index 0000000000..35e52b1e4c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off_ctm.png new file mode 100644 index 0000000000..d4d11febf6 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lime_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/lime_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/lime.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/lime.png.mcmeta new file mode 100644 index 0000000000..c1576b9477 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/lime.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/lime_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless.png new file mode 100644 index 0000000000..ac4d81c51f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless_emissive.png new file mode 100644 index 0000000000..ac4d81c51f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/lime_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm.png new file mode 100644 index 0000000000..e6ab9ddad6 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm_emissive.png new file mode 100644 index 0000000000..b111be42df Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/lime_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_emissive.png new file mode 100644 index 0000000000..5f171c2b41 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/lime_emissive.png.mcmeta new file mode 100644 index 0000000000..2eddeede77 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/lime_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/lime_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off.png new file mode 100644 index 0000000000..61588a79ee Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off.png.mcmeta new file mode 100644 index 0000000000..3ece38171e --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/lime_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off_borderless.png new file mode 100644 index 0000000000..562dacbc51 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/lime_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off_ctm.png new file mode 100644 index 0000000000..f31d2116a2 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/lime_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/magenta_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/magenta_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/magenta.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/magenta.png.mcmeta new file mode 100644 index 0000000000..8296eb3a51 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/magenta.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/magenta_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless.png new file mode 100644 index 0000000000..e3ebf49946 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless_emissive.png new file mode 100644 index 0000000000..e3ebf49946 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm.png new file mode 100644 index 0000000000..9351167d31 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm_emissive.png new file mode 100644 index 0000000000..be05fd0fa0 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_emissive.png new file mode 100644 index 0000000000..9cd76d9f43 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_emissive.png.mcmeta new file mode 100644 index 0000000000..bbcbde7bc8 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/magenta_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off.png new file mode 100644 index 0000000000..98e3db436d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off.png.mcmeta new file mode 100644 index 0000000000..c5d19b0dac --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/magenta_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off_borderless.png new file mode 100644 index 0000000000..67fd1d6f95 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off_ctm.png new file mode 100644 index 0000000000..a6babf0f28 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/magenta_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/orange_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/orange_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/orange.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/orange.png.mcmeta new file mode 100644 index 0000000000..53fdb4a15c --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/orange.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/orange_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless.png new file mode 100644 index 0000000000..9900aa733c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless_emissive.png new file mode 100644 index 0000000000..9900aa733c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/orange_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm.png new file mode 100644 index 0000000000..f9fda5a82d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm_emissive.png new file mode 100644 index 0000000000..e31ba79e07 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/orange_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_emissive.png new file mode 100644 index 0000000000..11c7fec5cc Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/orange_emissive.png.mcmeta new file mode 100644 index 0000000000..6bd561037c --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/orange_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/orange_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off.png new file mode 100644 index 0000000000..f7824147f3 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off.png.mcmeta new file mode 100644 index 0000000000..2d87bf7df3 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/orange_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off_borderless.png new file mode 100644 index 0000000000..d2277045d8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/orange_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off_ctm.png new file mode 100644 index 0000000000..ed12e951cb Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/orange_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/pink_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pink_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/pink.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/pink.png.mcmeta new file mode 100644 index 0000000000..37808e8059 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/pink.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/pink_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless.png new file mode 100644 index 0000000000..4fbc4f26e8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless_emissive.png new file mode 100644 index 0000000000..4fbc4f26e8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/pink_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm.png new file mode 100644 index 0000000000..75ef1f158e Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm_emissive.png new file mode 100644 index 0000000000..6a8b60a273 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/pink_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_emissive.png new file mode 100644 index 0000000000..4413fd421f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/pink_emissive.png.mcmeta new file mode 100644 index 0000000000..8ca9c17de1 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/pink_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/pink_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off.png new file mode 100644 index 0000000000..81698705f8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off.png.mcmeta new file mode 100644 index 0000000000..7894d02278 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/pink_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off_borderless.png new file mode 100644 index 0000000000..b137372422 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/pink_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off_ctm.png new file mode 100644 index 0000000000..40fb64c6d8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/pink_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/purple_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/purple_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/purple.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/purple.png.mcmeta new file mode 100644 index 0000000000..121eed221e --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/purple.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/purple_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless.png new file mode 100644 index 0000000000..54764d3e79 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless_emissive.png new file mode 100644 index 0000000000..54764d3e79 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/purple_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm.png new file mode 100644 index 0000000000..5f0c129c33 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm_emissive.png new file mode 100644 index 0000000000..87c802fed3 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/purple_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_emissive.png new file mode 100644 index 0000000000..81817d45c5 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/purple_emissive.png.mcmeta new file mode 100644 index 0000000000..8c82cc421b --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/purple_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/purple_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off.png new file mode 100644 index 0000000000..7e21c1687c Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off.png.mcmeta new file mode 100644 index 0000000000..e912715ff6 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/purple_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off_borderless.png new file mode 100644 index 0000000000..8a89169029 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/purple_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off_ctm.png new file mode 100644 index 0000000000..28bcfe08c2 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/purple_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/red_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/red.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/red_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/red.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/red.png.mcmeta new file mode 100644 index 0000000000..b0bef295ad --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/red.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/red_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless.png new file mode 100644 index 0000000000..3618b5c355 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless_emissive.png new file mode 100644 index 0000000000..3618b5c355 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/red_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm.png new file mode 100644 index 0000000000..53e96ac0e2 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm_emissive.png new file mode 100644 index 0000000000..d0f6ee3ac3 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/red_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_emissive.png new file mode 100644 index 0000000000..0fd690624f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/red_emissive.png.mcmeta new file mode 100644 index 0000000000..71f134efd0 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/red_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/red_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_off.png new file mode 100644 index 0000000000..a13318c77a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/red_off.png.mcmeta new file mode 100644 index 0000000000..d9f98de71d --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/red_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/red_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_off_borderless.png new file mode 100644 index 0000000000..00806f9ee3 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/red_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/red_off_ctm.png new file mode 100644 index 0000000000..c133665254 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/red_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/white_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/white.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/white_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/white.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/white.png.mcmeta new file mode 100644 index 0000000000..d21e74fd68 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/white.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/white_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless.png new file mode 100644 index 0000000000..1f467ac1c9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless_emissive.png new file mode 100644 index 0000000000..1f467ac1c9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/white_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm.png new file mode 100644 index 0000000000..db718363f0 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm_emissive.png new file mode 100644 index 0000000000..eed80e2c4b Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/white_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_emissive.png new file mode 100644 index 0000000000..b4642c3361 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/white_emissive.png.mcmeta new file mode 100644 index 0000000000..5b460863ca --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/white_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/white_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_off.png new file mode 100644 index 0000000000..b466a84b76 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/white_off.png.mcmeta new file mode 100644 index 0000000000..8defbca380 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/white_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/white_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_off_borderless.png new file mode 100644 index 0000000000..61d4b4f620 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/white_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/white_off_ctm.png new file mode 100644 index 0000000000..65534c37e5 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/white_off_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/yellow_lamp.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/yellow_lamp.png rename to src/main/resources/assets/gtceu/textures/block/lamps/yellow.png diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/yellow.png.mcmeta new file mode 100644 index 0000000000..92cd97707c --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/yellow.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/yellow_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless.png new file mode 100644 index 0000000000..a8014a4fe9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless_emissive.png new file mode 100644 index 0000000000..a8014a4fe9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_borderless_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm.png new file mode 100644 index 0000000000..f2e3887336 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm_emissive.png new file mode 100644 index 0000000000..15c046d4a7 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm_emissive.png.mcmeta new file mode 100644 index 0000000000..4da3f5f129 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_ctm_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_emissive.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_emissive.png new file mode 100644 index 0000000000..c9865fb1fd Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_emissive.png.mcmeta new file mode 100644 index 0000000000..4e0110c9e7 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_emissive.png.mcmeta @@ -0,0 +1,8 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/yellow_ctm_emissive" + }, + "shimmer": { + "bloom": true + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off.png new file mode 100644 index 0000000000..07def39832 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off.png.mcmeta new file mode 100644 index 0000000000..160ab56614 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/lamps/yellow_off_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off_borderless.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off_borderless.png new file mode 100644 index 0000000000..62cb3baf86 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off_borderless.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off_ctm.png b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off_ctm.png new file mode 100644 index 0000000000..b45d8311eb Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/lamps/yellow_off_ctm.png differ diff --git a/src/main/resources/data/gtceu/curios/tags/items/hands.json b/src/main/resources/data/gtceu/curios/tags/items/hands.json new file mode 100644 index 0000000000..90d5a15104 --- /dev/null +++ b/src/main/resources/data/gtceu/curios/tags/items/hands.json @@ -0,0 +1,5 @@ +{ + "values": [ + "gtceu:rubber_gloves" + ] +} diff --git a/src/main/resources/data/gtceu/curios/tags/items/head.json b/src/main/resources/data/gtceu/curios/tags/items/head.json new file mode 100644 index 0000000000..a4f8d20fc8 --- /dev/null +++ b/src/main/resources/data/gtceu/curios/tags/items/head.json @@ -0,0 +1,5 @@ +{ + "values": [ + "gtceu:face_mask" + ] +}