diff --git a/src/generated/resources/assets/epimorphism/lang/en_ud.json b/src/generated/resources/assets/epimorphism/lang/en_ud.json index 361645a..20175a4 100644 --- a/src/generated/resources/assets/epimorphism/lang/en_ud.json +++ b/src/generated/resources/assets/epimorphism/lang/en_ud.json @@ -931,11 +931,13 @@ "material.epimorphism.bismuth_vanadate": "ǝʇɐpɐuɐΛ ɥʇnɯsıᗺ", "material.epimorphism.bismuth_vanadate_solution": "uoıʇnןoS ǝʇɐpɐuɐΛ ɥʇnɯsıᗺ", "material.epimorphism.bistrichloromethylbenzene": "ǝuǝzuǝqןʎɥʇǝɯoɹoןɥɔıɹʇsıᗺ", + "material.epimorphism.black_concrete": "ǝʇǝɹɔuoƆ ʞɔɐןᗺ", "material.epimorphism.black_dwarf_matter": "ɹǝʇʇɐW ɟɹɐʍᗡ ʞɔɐןᗺ", "material.epimorphism.black_phosphorus": "snɹoɥdsoɥԀ ʞɔɐןᗺ", "material.epimorphism.black_plutonium": "ɯnıuoʇnןԀ ʞɔɐןᗺ", "material.epimorphism.black_titanium": "ɯnıuɐʇı⟘ ʞɔɐןᗺ", "material.epimorphism.blazing_pyrotheum": "ɯnǝɥʇoɹʎԀ buızɐןᗺ", + "material.epimorphism.blue_concrete": "ǝʇǝɹɔuoƆ ǝnןᗺ", "material.epimorphism.blue_phosphorus": "snɹoɥdsoɥԀ ǝnןᗺ", "material.epimorphism.borane_dimethylsulfide": "ǝpıɟןnsןʎɥʇǝɯıᗡ ǝuɐɹoᗺ", "material.epimorphism.borazine": "ǝuızɐɹoᗺ", @@ -953,6 +955,7 @@ "material.epimorphism.bromobutane": "ǝuɐʇnqoɯoɹᗺ", "material.epimorphism.bromodihydrothiine": "ǝuııɥʇoɹpʎɥıpoɯoɹᗺ", "material.epimorphism.brown_algae": "ǝɐbןⱯ uʍoɹᗺ", + "material.epimorphism.brown_concrete": "ǝʇǝɹɔuoƆ uʍoɹᗺ", "material.epimorphism.butanediol": "ןoıpǝuɐʇnᗺ", "material.epimorphism.butanol": "ןouɐʇnᗺ", "material.epimorphism.butyl_lithium": "ɯnıɥʇıꞀ ןʎʇnᗺ", @@ -1020,6 +1023,7 @@ "material.epimorphism.cubic_boron_nitride": "ǝpıɹʇıN uoɹoᗺ ɔıqnƆ", "material.epimorphism.cubic_heterodiamond": "puoɯɐıpoɹǝʇǝH ɔıqnƆ", "material.epimorphism.cubic_zirconia": "ɐıuoɔɹıZ ɔıqnƆ", + "material.epimorphism.cyan_concrete": "ǝʇǝɹɔuoƆ uɐʎƆ", "material.epimorphism.cyanonaphthalene": "ǝuǝןɐɥʇɥdɐuouɐʎƆ", "material.epimorphism.cyclooctadiene": "ǝuǝıpɐʇɔooןɔʎƆ", "material.epimorphism.cycloparaphenylene": "ǝuǝןʎuǝɥdɐɹɐdoןɔʎƆ", @@ -1124,7 +1128,9 @@ "material.epimorphism.gold_trifluoride": "ǝpıɹonןɟıɹ⟘ pןo⅁", "material.epimorphism.golden_algae": "ǝɐbןⱯ uǝpןo⅁", "material.epimorphism.graphene_oxide": "ǝpıxO ǝuǝɥdɐɹ⅁", + "material.epimorphism.gray_concrete": "ǝʇǝɹɔuoƆ ʎɐɹ⅁", "material.epimorphism.green_algae": "ǝɐbןⱯ uǝǝɹ⅁", + "material.epimorphism.green_concrete": "ǝʇǝɹɔuoƆ uǝǝɹ⅁", "material.epimorphism.grignard_reagent": "ʇuǝbɐǝᴚ pɹɐubıɹ⅁", "material.epimorphism.grisium": "ɯnısıɹ⅁", "material.epimorphism.gst_glass": "ssɐן⅁ ʇs⅁", @@ -1220,14 +1226,17 @@ "material.epimorphism.lead_chloride": "ǝpıɹoןɥƆ pɐǝꞀ", "material.epimorphism.legendarium": "ɯnıɹɐpuǝbǝꞀ", "material.epimorphism.light_bedrock_smoke": "ǝʞoɯS ʞɔoɹpǝᗺ ʇɥbıꞀ", + "material.epimorphism.light_blue_concrete": "ǝʇǝɹɔuoƆ ǝnןᗺ ʇɥbıꞀ", "material.epimorphism.light_enriched_bedrock_smoke": "ǝʞoɯS ʞɔoɹpǝᗺ pǝɥɔıɹuƎ ʇɥbıꞀ", "material.epimorphism.light_enriched_taranium_fuel": "ןǝnℲ ɯnıuɐɹɐ⟘ pǝɥɔıɹuƎ ʇɥbıꞀ", "material.epimorphism.light_enriched_taranium_gas": "sɐ⅁ ɯnıuɐɹɐ⟘ pǝɥɔıɹuƎ ʇɥbıꞀ", + "material.epimorphism.light_gray_concrete": "ǝʇǝɹɔuoƆ ʎɐɹ⅁ ʇɥbıꞀ", "material.epimorphism.light_hyper_fuel": "ןǝnℲ ɹǝdʎH ʇɥbıꞀ", "material.epimorphism.light_naquadah_fuel": "ןǝnℲ ɥɐpɐnbɐN ʇɥbıꞀ", "material.epimorphism.light_quarks": "sʞɹɐnὉ ʇɥbıꞀ", "material.epimorphism.light_taranium_fuel": "ןǝnℲ ɯnıuɐɹɐ⟘ ʇɥbıꞀ", "material.epimorphism.light_taranium_gas": "sɐ⅁ ɯnıuɐɹɐ⟘ ʇɥbıꞀ", + "material.epimorphism.lime_concrete": "ǝʇǝɹɔuoƆ ǝɯıꞀ", "material.epimorphism.lithium_amalgam": "ɯɐbןɐɯⱯ ɯnıɥʇıꞀ", "material.epimorphism.lithium_carbonate": "ǝʇɐuoqɹɐƆ ɯnıɥʇıꞀ", "material.epimorphism.lithium_fluoride": "ǝpıɹonןℲ ɯnıɥʇıꞀ", @@ -1242,6 +1251,7 @@ "material.epimorphism.low_purity_rare_earth_chlorides_solution": "uoıʇnןoS sǝpıɹoןɥƆ ɥʇɹɐƎ ǝɹɐᴚ ʎʇıɹnԀ ʍoꞀ", "material.epimorphism.lutetium_oxide": "ǝpıxO ɯnıʇǝʇnꞀ", "material.epimorphism.lutetium_thulium_yttrium_chlorides_solution": "uoıʇnןoS sǝpıɹoןɥƆ ɯnıɹʇʇʎ ɯnıןnɥ⟘ ɯnıʇǝʇnꞀ", + "material.epimorphism.magenta_concrete": "ǝʇǝɹɔuoƆ ɐʇuǝbɐW", "material.epimorphism.magnesium_bromide": "ǝpıɯoɹᗺ ɯnısǝubɐW", "material.epimorphism.magnesium_chloride_bromide": "ǝpıɯoɹᗺ ǝpıɹoןɥƆ ɯnısǝubɐW", "material.epimorphism.magnetic_chromium_germanium_telluride": "ǝpıɹnןןǝ⟘ ɯnıuɐɯɹǝ⅁ ɯnıɯoɹɥƆ ɔıʇǝubɐW", @@ -1311,6 +1321,7 @@ "material.epimorphism.nitryl_fluoride": "ǝpıɹonןℲ ןʎɹʇıN", "material.epimorphism.octafluoro_pentanol": "ןouɐʇuǝԀ oɹonןɟɐʇɔO", "material.epimorphism.oganesson_breeding_base": "ǝsɐᗺ buıpǝǝɹᗺ uossǝuɐbO", + "material.epimorphism.orange_concrete": "ǝʇǝɹɔuoƆ ǝbuɐɹO", "material.epimorphism.orichalcum": "ɯnɔןɐɥɔıɹO", "material.epimorphism.orichalcum_energized": "pǝzıbɹǝuƎ ɯnɔןɐɥɔıɹO", "material.epimorphism.osmium_tetrachloride": "ǝpıɹoןɥɔɐɹʇǝ⟘ ɯnıɯsO", @@ -1337,6 +1348,7 @@ "material.epimorphism.phosphoryl_chloride": "ǝpıɹoןɥƆ ןʎɹoɥdsoɥԀ", "material.epimorphism.phthalic_anhydride": "ǝpıɹpʎɥuⱯ ɔıןɐɥʇɥԀ", "material.epimorphism.pikyonium_64_b": "ᗺ ㄣ9 ɯnıuoʎʞıԀ", + "material.epimorphism.pink_concrete": "ǝʇǝɹɔuoƆ ʞuıԀ", "material.epimorphism.platinum_group_alloy": "ʎoןןⱯ dnoɹ⅁ ɯnuıʇɐןԀ", "material.epimorphism.platinum_group_sludge_solution": "uoıʇnןoS ǝbpnןS dnoɹ⅁ ɯnuıʇɐןԀ", "material.epimorphism.platinum_metal": "ןɐʇǝW ɯnuıʇɐןԀ", @@ -1376,6 +1388,7 @@ "material.epimorphism.primal_mana": "ɐuɐW ןɐɯıɹԀ", "material.epimorphism.propadiene": "ǝuǝıpɐdoɹԀ", "material.epimorphism.pure_naquadria_mixture_solution": "uoıʇnןoS ǝɹnʇxıW ɐıɹpɐnbɐN ǝɹnԀ", + "material.epimorphism.purple_concrete": "ǝʇǝɹɔuoƆ ǝןdɹnԀ", "material.epimorphism.pyridine": "ǝuıpıɹʎԀ", "material.epimorphism.pyrocatechol": "ןoɥɔǝʇɐɔoɹʎԀ", "material.epimorphism.pyromellitic_dianhydride": "ǝpıɹpʎɥuɐıᗡ ɔıʇıןןǝɯoɹʎԀ", @@ -1393,6 +1406,7 @@ "material.epimorphism.rarest_metal_residue": "ǝnpısǝᴚ ןɐʇǝW ʇsǝɹɐᴚ", "material.epimorphism.raw_star_matter": "ɹǝʇʇɐW ɹɐʇS ʍɐᴚ", "material.epimorphism.red_algae": "ǝɐbןⱯ pǝᴚ", + "material.epimorphism.red_concrete": "ǝʇǝɹɔuoƆ pǝᴚ", "material.epimorphism.red_phosphorus": "snɹoɥdsoɥԀ pǝᴚ", "material.epimorphism.residual_draconium_solution": "uoıʇnןoS ɯnıuoɔɐɹᗡ ןɐnpısǝᴚ", "material.epimorphism.resorcinol": "ןouıɔɹosǝᴚ", @@ -1531,6 +1545,7 @@ "material.epimorphism.waelz_oxide": "ǝpıxO zןǝɐM", "material.epimorphism.waelz_slag": "bɐןS zןǝɐM", "material.epimorphism.wet_bromine": "ǝuıɯoɹᗺ ʇǝM", + "material.epimorphism.white_concrete": "ǝʇǝɹɔuoƆ ǝʇıɥM", "material.epimorphism.white_dwarf_matter": "ɹǝʇʇɐW ɟɹɐʍᗡ ǝʇıɥM", "material.epimorphism.white_phosphorus": "snɹoɥdsoɥԀ ǝʇıɥM", "material.epimorphism.wollastonite": "ǝʇıuoʇsɐןןoM", @@ -1538,6 +1553,7 @@ "material.epimorphism.xenon_hexafluoro_enriched_naquadate": "ǝʇɐpɐnbɐN pǝɥɔıɹuƎ oɹonןɟɐxǝH uouǝX", "material.epimorphism.xenon_trioxide": "ǝpıxoıɹ⟘ uouǝX", "material.epimorphism.y_tb_dy_ho_oxides_solution": "uoıʇnןoS sǝpıxO oH ʎᗡ q⟘ ʎ", + "material.epimorphism.yellow_concrete": "ǝʇǝɹɔuoƆ ʍoןןǝʎ", "material.epimorphism.ytterbium_178": "8ㄥƖ ɯnıqɹǝʇʇʎ", "material.epimorphism.ytterbium_oxide": "ǝpıxO ɯnıqɹǝʇʇʎ", "material.epimorphism.yttrium_oxide": "ǝpıxO ɯnıɹʇʇʎ", diff --git a/src/generated/resources/assets/epimorphism/lang/en_us.json b/src/generated/resources/assets/epimorphism/lang/en_us.json index 4095553..3c93132 100644 --- a/src/generated/resources/assets/epimorphism/lang/en_us.json +++ b/src/generated/resources/assets/epimorphism/lang/en_us.json @@ -931,11 +931,13 @@ "material.epimorphism.bismuth_vanadate": "Bismuth Vanadate", "material.epimorphism.bismuth_vanadate_solution": "Bismuth Vanadate Solution", "material.epimorphism.bistrichloromethylbenzene": "Bistrichloromethylbenzene", + "material.epimorphism.black_concrete": "Black Concrete", "material.epimorphism.black_dwarf_matter": "Black Dwarf Matter", "material.epimorphism.black_phosphorus": "Black Phosphorus", "material.epimorphism.black_plutonium": "Black Plutonium", "material.epimorphism.black_titanium": "Black Titanium", "material.epimorphism.blazing_pyrotheum": "Blazing Pyrotheum", + "material.epimorphism.blue_concrete": "Blue Concrete", "material.epimorphism.blue_phosphorus": "Blue Phosphorus", "material.epimorphism.borane_dimethylsulfide": "Borane Dimethylsulfide", "material.epimorphism.borazine": "Borazine", @@ -953,6 +955,7 @@ "material.epimorphism.bromobutane": "Bromobutane", "material.epimorphism.bromodihydrothiine": "Bromodihydrothiine", "material.epimorphism.brown_algae": "Brown Algae", + "material.epimorphism.brown_concrete": "Brown Concrete", "material.epimorphism.butanediol": "Butanediol", "material.epimorphism.butanol": "Butanol", "material.epimorphism.butyl_lithium": "Butyl Lithium", @@ -1020,6 +1023,7 @@ "material.epimorphism.cubic_boron_nitride": "Cubic Boron Nitride", "material.epimorphism.cubic_heterodiamond": "Cubic Heterodiamond", "material.epimorphism.cubic_zirconia": "Cubic Zirconia", + "material.epimorphism.cyan_concrete": "Cyan Concrete", "material.epimorphism.cyanonaphthalene": "Cyanonaphthalene", "material.epimorphism.cyclooctadiene": "Cyclooctadiene", "material.epimorphism.cycloparaphenylene": "Cycloparaphenylene", @@ -1124,7 +1128,9 @@ "material.epimorphism.gold_trifluoride": "Gold Trifluoride", "material.epimorphism.golden_algae": "Golden Algae", "material.epimorphism.graphene_oxide": "Graphene Oxide", + "material.epimorphism.gray_concrete": "Gray Concrete", "material.epimorphism.green_algae": "Green Algae", + "material.epimorphism.green_concrete": "Green Concrete", "material.epimorphism.grignard_reagent": "Grignard Reagent", "material.epimorphism.grisium": "Grisium", "material.epimorphism.gst_glass": "Gst Glass", @@ -1220,14 +1226,17 @@ "material.epimorphism.lead_chloride": "Lead Chloride", "material.epimorphism.legendarium": "Legendarium", "material.epimorphism.light_bedrock_smoke": "Light Bedrock Smoke", + "material.epimorphism.light_blue_concrete": "Light Blue Concrete", "material.epimorphism.light_enriched_bedrock_smoke": "Light Enriched Bedrock Smoke", "material.epimorphism.light_enriched_taranium_fuel": "Light Enriched Taranium Fuel", "material.epimorphism.light_enriched_taranium_gas": "Light Enriched Taranium Gas", + "material.epimorphism.light_gray_concrete": "Light Gray Concrete", "material.epimorphism.light_hyper_fuel": "Light Hyper Fuel", "material.epimorphism.light_naquadah_fuel": "Light Naquadah Fuel", "material.epimorphism.light_quarks": "Light Quarks", "material.epimorphism.light_taranium_fuel": "Light Taranium Fuel", "material.epimorphism.light_taranium_gas": "Light Taranium Gas", + "material.epimorphism.lime_concrete": "Lime Concrete", "material.epimorphism.lithium_amalgam": "Lithium Amalgam", "material.epimorphism.lithium_carbonate": "Lithium Carbonate", "material.epimorphism.lithium_fluoride": "Lithium Fluoride", @@ -1242,6 +1251,7 @@ "material.epimorphism.low_purity_rare_earth_chlorides_solution": "Low Purity Rare Earth Chlorides Solution", "material.epimorphism.lutetium_oxide": "Lutetium Oxide", "material.epimorphism.lutetium_thulium_yttrium_chlorides_solution": "Lutetium Thulium Yttrium Chlorides Solution", + "material.epimorphism.magenta_concrete": "Magenta Concrete", "material.epimorphism.magnesium_bromide": "Magnesium Bromide", "material.epimorphism.magnesium_chloride_bromide": "Magnesium Chloride Bromide", "material.epimorphism.magnetic_chromium_germanium_telluride": "Magnetic Chromium Germanium Telluride", @@ -1311,6 +1321,7 @@ "material.epimorphism.nitryl_fluoride": "Nitryl Fluoride", "material.epimorphism.octafluoro_pentanol": "Octafluoro Pentanol", "material.epimorphism.oganesson_breeding_base": "Oganesson Breeding Base", + "material.epimorphism.orange_concrete": "Orange Concrete", "material.epimorphism.orichalcum": "Orichalcum", "material.epimorphism.orichalcum_energized": "Orichalcum Energized", "material.epimorphism.osmium_tetrachloride": "Osmium Tetrachloride", @@ -1337,6 +1348,7 @@ "material.epimorphism.phosphoryl_chloride": "Phosphoryl Chloride", "material.epimorphism.phthalic_anhydride": "Phthalic Anhydride", "material.epimorphism.pikyonium_64_b": "Pikyonium 64 B", + "material.epimorphism.pink_concrete": "Pink Concrete", "material.epimorphism.platinum_group_alloy": "Platinum Group Alloy", "material.epimorphism.platinum_group_sludge_solution": "Platinum Group Sludge Solution", "material.epimorphism.platinum_metal": "Platinum Metal", @@ -1376,6 +1388,7 @@ "material.epimorphism.primal_mana": "Primal Mana", "material.epimorphism.propadiene": "Propadiene", "material.epimorphism.pure_naquadria_mixture_solution": "Pure Naquadria Mixture Solution", + "material.epimorphism.purple_concrete": "Purple Concrete", "material.epimorphism.pyridine": "Pyridine", "material.epimorphism.pyrocatechol": "Pyrocatechol", "material.epimorphism.pyromellitic_dianhydride": "Pyromellitic Dianhydride", @@ -1393,6 +1406,7 @@ "material.epimorphism.rarest_metal_residue": "Rarest Metal Residue", "material.epimorphism.raw_star_matter": "Raw Star Matter", "material.epimorphism.red_algae": "Red Algae", + "material.epimorphism.red_concrete": "Red Concrete", "material.epimorphism.red_phosphorus": "Red Phosphorus", "material.epimorphism.residual_draconium_solution": "Residual Draconium Solution", "material.epimorphism.resorcinol": "Resorcinol", @@ -1531,6 +1545,7 @@ "material.epimorphism.waelz_oxide": "Waelz Oxide", "material.epimorphism.waelz_slag": "Waelz Slag", "material.epimorphism.wet_bromine": "Wet Bromine", + "material.epimorphism.white_concrete": "White Concrete", "material.epimorphism.white_dwarf_matter": "White Dwarf Matter", "material.epimorphism.white_phosphorus": "White Phosphorus", "material.epimorphism.wollastonite": "Wollastonite", @@ -1538,6 +1553,7 @@ "material.epimorphism.xenon_hexafluoro_enriched_naquadate": "Xenon Hexafluoro Enriched Naquadate", "material.epimorphism.xenon_trioxide": "Xenon Trioxide", "material.epimorphism.y_tb_dy_ho_oxides_solution": "Y Tb Dy Ho Oxides Solution", + "material.epimorphism.yellow_concrete": "Yellow Concrete", "material.epimorphism.ytterbium_178": "Ytterbium 178", "material.epimorphism.ytterbium_oxide": "Ytterbium Oxide", "material.epimorphism.yttrium_oxide": "Yttrium Oxide", diff --git a/src/generated/resources/assets/epimorphism/lang/zh_cn.json b/src/generated/resources/assets/epimorphism/lang/zh_cn.json index 775f5d2..0f2de26 100644 --- a/src/generated/resources/assets/epimorphism/lang/zh_cn.json +++ b/src/generated/resources/assets/epimorphism/lang/zh_cn.json @@ -779,11 +779,13 @@ "material.epimorphism.bismuth_vanadate": "钒酸铋", "material.epimorphism.bismuth_vanadate_solution": "钒酸铋溶液", "material.epimorphism.bistrichloromethylbenzene": "1,4-双(三氯甲基)苯", + "material.epimorphism.black_concrete": "黑色混凝土", "material.epimorphism.black_dwarf_matter": "黑矮星物质", "material.epimorphism.black_phosphorus": "黑磷", "material.epimorphism.black_plutonium": "黑钚", "material.epimorphism.black_titanium": "黑钛合金", "material.epimorphism.blazing_pyrotheum": "烈焰之炽焱", + "material.epimorphism.blue_concrete": "蓝色混凝土", "material.epimorphism.blue_phosphorus": "蓝磷", "material.epimorphism.borane_dimethylsulfide": "硼烷二甲硫醚", "material.epimorphism.borazine": "环氮硼烷", @@ -801,6 +803,7 @@ "material.epimorphism.bromobutane": "溴丁烷", "material.epimorphism.bromodihydrothiine": "溴二氢硫醚", "material.epimorphism.brown_algae": "褐藻", + "material.epimorphism.brown_concrete": "棕色混凝土", "material.epimorphism.butanediol": "1,4-丁二醇", "material.epimorphism.butanol": "丁醇", "material.epimorphism.butyl_lithium": "丁基锂", @@ -867,6 +870,7 @@ "material.epimorphism.cubic_boron_nitride": "立方氮化硼", "material.epimorphism.cubic_heterodiamond": "立方杂金刚石", "material.epimorphism.cubic_zirconia": "立方氧化锆", + "material.epimorphism.cyan_concrete": "青色混凝土", "material.epimorphism.cyanonaphthalene": "氰萘", "material.epimorphism.cyclooctadiene": "环辛二烯", "material.epimorphism.cycloparaphenylene": "环对苯撑(CPP)", @@ -971,7 +975,9 @@ "material.epimorphism.gold_trifluoride": "三氟化金", "material.epimorphism.golden_algae": "金藻", "material.epimorphism.graphene_oxide": "氧化石墨烯", + "material.epimorphism.gray_concrete": "灰色混凝土", "material.epimorphism.green_algae": "绿藻", + "material.epimorphism.green_concrete": "绿色混凝土", "material.epimorphism.grignard_reagent": "格氏试剂", "material.epimorphism.grisium": "灰钛合金", "material.epimorphism.gst_glass": "GST玻璃", @@ -1067,14 +1073,17 @@ "material.epimorphism.lead_chloride": "氯化铅", "material.epimorphism.legendarium": "传奇金属", "material.epimorphism.light_bedrock_smoke": "轻基岩烟", + "material.epimorphism.light_blue_concrete": "淡蓝色混凝土", "material.epimorphism.light_enriched_bedrock_smoke": "轻富集基岩烟", "material.epimorphism.light_enriched_taranium_fuel": "轻塔兰金属燃料", "material.epimorphism.light_enriched_taranium_gas": "轻富集塔兰金属气", + "material.epimorphism.light_gray_concrete": "淡灰色混凝土", "material.epimorphism.light_hyper_fuel": "轻超能燃料", "material.epimorphism.light_naquadah_fuel": "轻硅岩燃料", "material.epimorphism.light_quarks": "轻夸克", "material.epimorphism.light_taranium_fuel": "轻塔兰金属燃料", "material.epimorphism.light_taranium_gas": "轻塔兰金属气", + "material.epimorphism.lime_concrete": "黄绿色混凝土", "material.epimorphism.lithium_amalgam": "锂汞齐", "material.epimorphism.lithium_carbonate": "碳酸锂", "material.epimorphism.lithium_fluoride": "氟化锂", @@ -1089,6 +1098,7 @@ "material.epimorphism.low_purity_rare_earth_chlorides_solution": "低纯度稀土氯化物溶液", "material.epimorphism.lutetium_oxide": "氧化镥", "material.epimorphism.lutetium_thulium_yttrium_chlorides_solution": "镥铥钇氯化物溶液", + "material.epimorphism.magenta_concrete": "品红色混凝土", "material.epimorphism.magnesium_bromide": "溴化镁", "material.epimorphism.magnesium_chloride_bromide": "溴氯化镁", "material.epimorphism.magnetic_chromium_germanium_telluride": "磁化碲化锗铬", @@ -1154,6 +1164,7 @@ "material.epimorphism.nitryl_fluoride": "硝酰氟", "material.epimorphism.octafluoro_pentanol": "八氟戊醇", "material.epimorphism.oganesson_breeding_base": "气奥增殖基", + "material.epimorphism.orange_concrete": "橙色混凝土", "material.epimorphism.orichalcum": "山铜", "material.epimorphism.orichalcum_energized": "充能山铜", "material.epimorphism.osmium_tetrachloride": "四氯化锇", @@ -1180,6 +1191,7 @@ "material.epimorphism.phosphoryl_chloride": "磷酰氯", "material.epimorphism.phthalic_anhydride": "邻苯二甲酸酐", "material.epimorphism.pikyonium_64_b": "皮卡优合金-64B", + "material.epimorphism.pink_concrete": "粉色混凝土", "material.epimorphism.platinum_group_alloy": "稀有金属合金", "material.epimorphism.platinum_group_sludge_solution": "铂族金属泥浆液", "material.epimorphism.platinum_metal": "铂金属", @@ -1216,6 +1228,7 @@ "material.epimorphism.primal_mana": "原始魔力", "material.epimorphism.propadiene": "丙二烯", "material.epimorphism.pure_naquadria_mixture_solution": "洁净超能硅岩混合物乳液", + "material.epimorphism.purple_concrete": "紫色混凝土", "material.epimorphism.pyridine": "吡啶", "material.epimorphism.pyrocatechol": "邻苯二酚", "material.epimorphism.pyromellitic_dianhydride": "均苯四酸二酐(PDMA)", @@ -1232,6 +1245,7 @@ "material.epimorphism.rarest_metal_residue": "稀有金属残余物", "material.epimorphism.raw_star_matter": "原始恒星等离子体物质", "material.epimorphism.red_algae": "红藻", + "material.epimorphism.red_concrete": "红色混凝土", "material.epimorphism.red_phosphorus": "红磷", "material.epimorphism.residual_draconium_solution": "龙素残余物溶液", "material.epimorphism.resorcinol": "间苯二酚", @@ -1363,6 +1377,7 @@ "material.epimorphism.waelz_oxide": "威氏氧化物", "material.epimorphism.waelz_slag": "威氏浸出渣", "material.epimorphism.wet_bromine": "含水溴烟气", + "material.epimorphism.white_concrete": "白色混凝土", "material.epimorphism.white_dwarf_matter": "白矮星物质", "material.epimorphism.white_phosphorus": "白磷", "material.epimorphism.wollastonite": "硅灰石", @@ -1370,6 +1385,7 @@ "material.epimorphism.xenon_hexafluoro_enriched_naquadate": "六氟氙酸富集硅岩", "material.epimorphism.xenon_trioxide": "三氧化氙", "material.epimorphism.y_tb_dy_ho_oxides_solution": "钇-铽-镝-钬氧化物溶液", + "material.epimorphism.yellow_concrete": "黄色混凝土", "material.epimorphism.ytterbium_178": "镱-178", "material.epimorphism.ytterbium_oxide": "氧化镱", "material.epimorphism.yttrium_oxide": "氧化钇", diff --git a/src/main/java/com/epimorphismmc/epimorphism/api/data/chemical/material/info/EPMaterialFlags.java b/src/main/java/com/epimorphismmc/epimorphism/api/data/chemical/material/info/EPMaterialFlags.java index 874656e..6dbe578 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/api/data/chemical/material/info/EPMaterialFlags.java +++ b/src/main/java/com/epimorphismmc/epimorphism/api/data/chemical/material/info/EPMaterialFlags.java @@ -21,4 +21,8 @@ public class EPMaterialFlags { "generate_laser_emitter") .requireProps(PropertyKey.FLUID) .build(); + public static final MaterialFlag DISABLE_SMALL_DUST = new MaterialFlag.Builder( + "disable_small_dust") + .requireProps(PropertyKey.DUST) + .build(); } diff --git a/src/main/java/com/epimorphismmc/epimorphism/api/data/tag/EPTagPrefix.java b/src/main/java/com/epimorphismmc/epimorphism/api/data/tag/EPTagPrefix.java index 1b716cf..3fadbbf 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/api/data/tag/EPTagPrefix.java +++ b/src/main/java/com/epimorphismmc/epimorphism/api/data/tag/EPTagPrefix.java @@ -124,6 +124,6 @@ public static class Conditions { } public static void init() { - /**/ + TagPrefixAddition.init(); } } diff --git a/src/main/java/com/epimorphismmc/epimorphism/api/data/tag/TagPrefixAddition.java b/src/main/java/com/epimorphismmc/epimorphism/api/data/tag/TagPrefixAddition.java new file mode 100644 index 0000000..da8c901 --- /dev/null +++ b/src/main/java/com/epimorphismmc/epimorphism/api/data/tag/TagPrefixAddition.java @@ -0,0 +1,13 @@ +package com.epimorphismmc.epimorphism.api.data.tag; + +import static com.epimorphismmc.epimorphism.api.data.chemical.material.info.EPMaterialFlags.*; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.Conditions.*; + +public class TagPrefixAddition { + + public static void init() { + dustSmall.generationCondition(hasDustProperty.and(mat -> !mat.hasFlag(DISABLE_SMALL_DUST))); + dustTiny.generationCondition(hasDustProperty.and(mat -> !mat.hasFlag(DISABLE_SMALL_DUST))); + } +} diff --git a/src/main/java/com/epimorphismmc/epimorphism/client/ForgeClientEventHandler.java b/src/main/java/com/epimorphismmc/epimorphism/client/ForgeClientEventListener.java similarity index 95% rename from src/main/java/com/epimorphismmc/epimorphism/client/ForgeClientEventHandler.java rename to src/main/java/com/epimorphismmc/epimorphism/client/ForgeClientEventListener.java index 4ccd76b..8286ea3 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/client/ForgeClientEventHandler.java +++ b/src/main/java/com/epimorphismmc/epimorphism/client/ForgeClientEventListener.java @@ -14,7 +14,7 @@ bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) @OnlyIn(Dist.CLIENT) -public class ForgeClientEventHandler { +public class ForgeClientEventListener { @SubscribeEvent public static void onRenderWorldLast(RenderLevelStageEvent event) { diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/ForgeCommonEventHandler.java b/src/main/java/com/epimorphismmc/epimorphism/common/ForgeCommonEventListener.java similarity index 99% rename from src/main/java/com/epimorphismmc/epimorphism/common/ForgeCommonEventHandler.java rename to src/main/java/com/epimorphismmc/epimorphism/common/ForgeCommonEventListener.java index a481848..c25ef89 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/ForgeCommonEventHandler.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/ForgeCommonEventListener.java @@ -27,7 +27,7 @@ import static com.epimorphismmc.epimorphism.common.data.EPItems.*; @Mod.EventBusSubscriber(modid = Epimorphism.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) -public class ForgeCommonEventHandler { +public class ForgeCommonEventListener { @SubscribeEvent public static void onPlayerLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMachines.java b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMachines.java index 92f6baa..40aadac 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMachines.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMachines.java @@ -128,6 +128,7 @@ import static com.epimorphismmc.epimorphism.common.block.BlockMaps.ALL_CP_TUBES; import static com.epimorphismmc.epimorphism.common.block.BlockMaps.ALL_FIELD_BLOCKS; import static com.epimorphismmc.epimorphism.common.block.BlockMaps.ALL_FIREBOXS; +import static com.epimorphismmc.epimorphism.common.data.EPRecipeTypes.*; import static com.epimorphismmc.monomorphism.block.MOBlockMaps.ALL_COIL_BLOCKS; import static com.epimorphismmc.monomorphism.block.MOBlockMaps.ALL_MACHINE_CASINGS; import static com.epimorphismmc.monomorphism.pattern.MOPredicates.coilBlock; @@ -2220,7 +2221,7 @@ public class EPMachines { public static final MultiblockMachineDefinition[] CONCRETE_BACKFILLER = registerTieredEPMultis( "concrete_backfiller", (holder, tier) -> - new ConcreteBackfillerMachine(holder, tier, 64 / tier, (int) Math.pow(2, tier - 1)), + new ConcreteBackfillerMachine(holder, tier, (int) Math.pow(2, tier - 1)), (tier, builder) -> builder .langValue("Concrete Backfiller") .tooltips( @@ -2232,7 +2233,7 @@ public class EPMachines { ((int) Math.pow(2, tier - 1)) * 16 + 1, ((int) Math.pow(2, tier - 1)) * 16 + 1)) .rotationState(RotationState.NON_Y_AXIS) - .recipeType(DUMMY_RECIPES) + .recipeType(CONCRETE_BACKFILLER_RECIPES) .appearanceBlock(() -> ConcreteBackfillerMachine.getCasingState(tier)) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "#F#", "#F#", "#F#", "###", "###", "###") diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMaterials.java b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMaterials.java index 0bb6e9b..88e95c6 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMaterials.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPMaterials.java @@ -15,8 +15,18 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.level.ItemLike; + +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; + public class EPMaterials { - public EPMaterials() {} + + public static Material[] CONCRETES; + + private EPMaterials() {} // Element Materials public static Material Draconium; @@ -416,6 +426,22 @@ public EPMaterials() {} public static Material ConcentrateDragonBreath; public static Material DragonBlood; public static Material DragonTear; + public static Material ConcreteBlack; + public static Material ConcreteRed; + public static Material ConcreteGreen; + public static Material ConcreteBrown; + public static Material ConcreteBlue; + public static Material ConcretePurple; + public static Material ConcreteCyan; + public static Material ConcreteLightGray; + public static Material ConcreteGray; + public static Material ConcretePink; + public static Material ConcreteLime; + public static Material ConcreteYellow; + public static Material ConcreteLightBlue; + public static Material ConcreteMagenta; + public static Material ConcreteOrange; + public static Material ConcreteWhite; // Organic Chemistry Materials public static Material KaptonK; @@ -748,6 +774,40 @@ public static void init() { MaterialPropertyAddition.init(); MaterialFlagAddition.init(); MaterialIgnoreAddition.init(); + + CONCRETES = new Material[] { + ConcreteWhite, + ConcreteOrange, + ConcreteMagenta, + ConcreteLightBlue, + ConcreteYellow, + ConcreteLime, + ConcretePink, + ConcreteGray, + ConcreteLightGray, + ConcreteCyan, + ConcretePurple, + ConcreteBlue, + ConcreteBrown, + ConcreteGreen, + ConcreteRed, + ConcreteBlack + }; + + for (int i = 0; i < DyeColor.values().length; i++) { + var color = DyeColor.values()[i]; + String dyeName = color.getName(); + concrete( + CONCRETES[i], + BuiltInRegistries.BLOCK.get(new ResourceLocation(dyeName + "_concrete")), + BuiltInRegistries.ITEM.get(new ResourceLocation(dyeName + "_concrete_powder"))); + } + } + + private static void concrete(Material material, ItemLike concreteBlock, ItemLike concreteDust) { + dust.setIgnored(material, concreteDust); + block.setIgnored(material, concreteBlock); + block.modifyMaterialAmount(material, 1); } public static Material.Builder Builder(String name) { diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipeTypes.java b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipeTypes.java index d1b8814..b9974dd 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipeTypes.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipeTypes.java @@ -237,6 +237,12 @@ public class EPRecipeTypes { }) .setSound(GTSoundEntries.FURNACE); + public static final GTRecipeType CONCRETE_BACKFILLER_RECIPES = register( + "concrete_backfiller", MULTIBLOCK) + .setMaxIOSize(0, 1, 1, 0) + .setEUIO(IO.IN) + .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT); + // Universal Processing Plant Recipemaps (Fake Recipemap) public static final GTRecipeType GENERAL_RECIPES_A = registerGeneralRecipeType( "general_recipes_a", MULTIBLOCK, RECIPE_MAP[0], RECIPE_MAP[1], RECIPE_MAP[2]) diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipes.java b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipes.java index 66bbe5b..6e350ba 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipes.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/data/EPRecipes.java @@ -6,14 +6,16 @@ import com.epimorphismmc.epimorphism.data.recipe.handler.BouleRecipeHandler; import com.epimorphismmc.epimorphism.data.recipe.handler.ComponentAssemblyLineRecipeHandler; import com.epimorphismmc.epimorphism.data.recipe.handler.PartsRecipeHandler; -import com.epimorphismmc.epimorphism.data.recipe.handler.WrapItemRecipeHandler; import com.epimorphismmc.epimorphism.data.recipe.machine.multi.ComponentAssemblyLineMachineRecipe; import com.epimorphismmc.epimorphism.data.recipe.machine.multi.ConcreteBackfillerMachineRecipe; import com.epimorphismmc.epimorphism.data.recipe.machine.multi.SteamMachineRecipe; import com.epimorphismmc.epimorphism.data.recipe.misc.BorosilicateGlassRecipes; +import com.epimorphismmc.epimorphism.data.recipe.misc.ConcreteBackfillerRecipes; +import com.epimorphismmc.epimorphism.data.recipe.misc.ConcreteRecipes; import com.epimorphismmc.epimorphism.data.recipe.misc.FuelRecipes; import com.epimorphismmc.epimorphism.data.recipe.misc.LargeNaquadahReactorRecipes; import com.epimorphismmc.epimorphism.data.recipe.misc.RadiationHatchRecipes; +import com.epimorphismmc.epimorphism.data.recipe.misc.WrapItemRecipes; import net.minecraft.data.recipes.FinishedRecipe; @@ -40,7 +42,6 @@ public static void init(Consumer provider) { BouleRecipeHandler.init(provider); ComponentAssemblyLineRecipeHandler.finish(provider); PartsRecipeHandler.init(provider); - WrapItemRecipeHandler.init(provider); ///////////////////////////////////////// // ***** Misc Recipes ***** // @@ -48,6 +49,9 @@ public static void init(Consumer provider) { FuelRecipes.init(provider); LargeNaquadahReactorRecipes.init(provider); RadiationHatchRecipes.init(provider); + ConcreteBackfillerRecipes.init(provider); + ConcreteRecipes.init(provider); + WrapItemRecipes.init(provider); BorosilicateGlassRecipes.init(provider); } diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/data/materials/EPSecondDegreeMaterials.java b/src/main/java/com/epimorphismmc/epimorphism/common/data/materials/EPSecondDegreeMaterials.java index 29815c9..2c4163c 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/data/materials/EPSecondDegreeMaterials.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/data/materials/EPSecondDegreeMaterials.java @@ -5,7 +5,11 @@ import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; +import static com.epimorphismmc.epimorphism.api.data.chemical.material.info.EPMaterialFlags.*; import static com.epimorphismmc.epimorphism.common.data.EPMaterials.*; +import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; +import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; public class EPSecondDegreeMaterials { public static void register() { @@ -35,5 +39,149 @@ public static void register() { .iconSet(MaterialIconSet.DULL) .buildAndRegister() .setFormula("⚙", false); + + ConcreteBlack = Builder("black_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x202020) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteRed = Builder("red_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xAA0000) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteGreen = Builder("green_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x00AA00) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteBrown = Builder("brown_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x604000) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteBlue = Builder("blue_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x0000AA) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcretePurple = Builder("purple_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xAA00AA) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteCyan = Builder("cyan_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x00AAAA) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteLightGray = Builder("light_gray_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xAAAAAA) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteGray = Builder("gray_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x555555) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcretePink = Builder("pink_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xFFC0C0) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteLime = Builder("lime_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x80FF80) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteYellow = Builder("yellow_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xFFFF00) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteLightBlue = Builder("light_blue_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0x6080FF) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteMagenta = Builder("magenta_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xFF00FF) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteOrange = Builder("orange_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xFF8000) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); + + ConcreteWhite = Builder("white_concrete") + .dust() + .liquid(new FluidBuilder().temperature(286)) + .color(0xFFFFFF) + .iconSet(ROUGH) + .flags(DISABLE_SMALL_DUST, DISABLE_DECOMPOSITION, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) + .components(Stone, 1) + .buildAndRegister(); } } diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/machine/multiblock/electric/ConcreteBackfillerMachine.java b/src/main/java/com/epimorphismmc/epimorphism/common/machine/multiblock/electric/ConcreteBackfillerMachine.java index 85fa9d2..4568260 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/machine/multiblock/electric/ConcreteBackfillerMachine.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/machine/multiblock/electric/ConcreteBackfillerMachine.java @@ -3,27 +3,16 @@ import com.epimorphismmc.epimorphism.common.machine.trait.ConcreteBackfillerLogic; import com.gregtechceu.gtceu.api.GTValues; -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.data.chemical.material.Material; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; -import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterials; -import com.gregtechceu.gtceu.utils.GTTransferUtils; -import com.gregtechceu.gtceu.utils.GTUtil; - -import com.lowdragmc.lowdraglib.misc.FluidTransferList; -import com.lowdragmc.lowdraglib.side.fluid.FluidStack; -import com.lowdragmc.lowdraglib.side.fluid.IFluidTransfer; -import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; +import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; @@ -35,35 +24,28 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.BlockHitResult; -import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collections; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ConcreteBackfillerMachine extends WorkableElectricMultiblockMachine { - - public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( - ConcreteBackfillerMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); +public class ConcreteBackfillerMachine extends WorkableElectricMultiblockMachine + implements IDataInfoProvider { public static final int CHUNK_LENGTH = 16; @Getter private final int tier; - @Nullable protected EnergyContainerList energyContainer; - - @Nullable protected FluidTransferList inputFluidInventory; - public ConcreteBackfillerMachine( - IMachineBlockEntity holder, int tier, int speed, int maximumChunkDiameter) { - super(holder, speed, maximumChunkDiameter); + IMachineBlockEntity holder, int tier, int maximumChunkDiameter) { + super(holder, maximumChunkDiameter); this.tier = tier; } @@ -72,18 +54,9 @@ public ConcreteBackfillerMachine( ////////////////////////////////////// @Override - protected RecipeLogic createRecipeLogic(Object... args) { - if (args[args.length - 2] instanceof Integer speed - && args[args.length - 1] instanceof Integer maxRadius) { - return new ConcreteBackfillerLogic(this, speed, maxRadius * CHUNK_LENGTH / 2); - } else { - throw new IllegalArgumentException("ConcreteBackfiller need args [speed, maxRadius]"); - } - } - - @Override - public ConcreteBackfillerLogic getRecipeLogic() { - return (ConcreteBackfillerLogic) super.getRecipeLogic(); + public void onStructureFormed() { + super.onStructureFormed(); + getRecipeLogic().initPos(); } ////////////////////////////////////// @@ -100,98 +73,54 @@ public static Block getCasingState(int tier) { } @Override - public long getMaxVoltage() { - return GTValues.V[getEnergyTier()]; + public List getDataInfo(PortableScannerBehavior.DisplayMode mode) { + if (mode == PortableScannerBehavior.DisplayMode.SHOW_ALL + || mode == PortableScannerBehavior.DisplayMode.SHOW_MACHINE_INFO) { + int workingArea = getRecipeLogic().getCurrentRadius() * 2 + 1; + return Collections.singletonList( + Component.translatable("gtceu.universal.tooltip.working_area", workingArea, workingArea)); + } + return new ArrayList<>(); } ////////////////////////////////////// // ****** Logic ****** // ////////////////////////////////////// - @Override - public void onStructureFormed() { - super.onStructureFormed(); - initializeAbilities(); - } - private void initializeAbilities() { - List energyContainers = new ArrayList<>(); - List fluidTanks = new ArrayList<>(); - Map ioMap = - getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); - for (IMultiPart part : getParts()) { - IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); - if (io == IO.NONE) continue; - for (var handler : part.getRecipeHandlers()) { - if (io != IO.BOTH && handler.getHandlerIO() != IO.BOTH && io != handler.getHandlerIO()) - continue; - var handlerIO = io == IO.BOTH ? handler.getHandlerIO() : io; - if (handlerIO == IO.IN - && handler.getCapability() == EURecipeCapability.CAP - && handler instanceof IEnergyContainer container) { - energyContainers.add(container); - } else if (handlerIO == IO.IN - && handler.getCapability() == FluidRecipeCapability.CAP - && handler instanceof IFluidTransfer fluidTransfer) { - fluidTanks.add(fluidTransfer); - } - } + @Override + protected RecipeLogic createRecipeLogic(Object... args) { + if (args[args.length - 1] instanceof Integer maxRadius) { + return new ConcreteBackfillerLogic(this, maxRadius * CHUNK_LENGTH / 2); + } else { + throw new IllegalArgumentException("ConcreteBackfiller need args [maxRadius]"); } + } - this.energyContainer = new EnergyContainerList(energyContainers); - this.inputFluidInventory = new FluidTransferList(fluidTanks); - - getRecipeLogic().setVoltageTier(GTUtil.getTierByVoltage(energyContainer.getInputVoltage())); - getRecipeLogic() - .setOverclockAmount(Math.max( - 1, GTUtil.getTierByVoltage(this.energyContainer.getInputVoltage()) - this.tier)); - getRecipeLogic().initPos(getRecipeLogic().getCenterPos(), getRecipeLogic().getCurrentRadius()); + @Override + public ConcreteBackfillerLogic getRecipeLogic() { + return (ConcreteBackfillerLogic) super.getRecipeLogic(); } - public int getEnergyTier() { - if (energyContainer == null) return this.tier; - return Math.min( - this.tier + 1, - Math.max(this.tier, GTUtil.getFloorTierByVoltage(energyContainer.getInputVoltage()))); + @Override + public long getMaxVoltage() { + return Math.max(GTValues.V[tier], super.getMaxVoltage()); } - public boolean drainInput(boolean simulate) { - return drainEnergy(simulate) && drainFluid(getRecipeLogic().getOverclockAmount(), simulate); + @Override + public long getOverclockVoltage() { + return Math.max(GTValues.V[tier], super.getOverclockVoltage()); } - public boolean drainEnergy(boolean simulate) { - if (energyContainer != null && energyContainer.getEnergyStored() > 0) { - long energyToDrain = GTValues.VA[getEnergyTier()]; - long resultEnergy = energyContainer.getEnergyStored() - energyToDrain; - if (resultEnergy >= 0L && resultEnergy <= energyContainer.getEnergyCapacity()) { - if (!simulate) { - energyContainer.changeEnergy(-energyToDrain); - } - return true; - } else { - return false; - } - } else { - return false; - } + @Override + public @Nullable GTRecipe fullModifyRecipe(GTRecipe recipe) { + return doModifyRecipe(getRecipeLogic().modifyRecipe(recipe)); } - public boolean drainFluid(int times, boolean simulate) { - if (inputFluidInventory != null && inputFluidInventory.transfers.length > 0) { - FluidStack concreteFluid = GTMaterials.Concrete.getFluid(times * 144L); - FluidStack fluidStack = inputFluidInventory.getFluidInTank(0); - if (!fluidStack.isEmpty() - && fluidStack.isFluidEqual(concreteFluid) - && fluidStack.getAmount() >= concreteFluid.getAmount()) { - if (!simulate) { - GTTransferUtils.drainFluidAccountNotifiableList( - inputFluidInventory, concreteFluid, false); - } - return true; - } else { - return false; - } - } else { - return false; + @Override + public void setWorkingEnabled(boolean isWorkingAllowed) { + super.setWorkingEnabled(isWorkingAllowed); + if (getRecipeLogic().isDone()) { + getRecipeLogic().resetArea(); } } @@ -203,7 +132,6 @@ public void addDisplayText(List textList) { MultiblockDisplayText.builder(textList, isFormed()) .setWorkingStatus(getRecipeLogic().isWorkingEnabled(), getRecipeLogic().isActive()) .addEnergyUsageLine(energyContainer) - .addParallelsLine(getRecipeLogic().getOverclockAmount()) .addWorkingStatusLine() .addProgressLine(getRecipeLogic().getProgressPercent()); getDefinition().getAdditionalDisplay().accept(this, textList); @@ -249,7 +177,9 @@ public void addDisplayText(List textList) { @Override protected InteractionResult onScrewdriverClick( Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - if (isRemote() || !this.isFormed()) return InteractionResult.SUCCESS; + if (!isFormed()) return InteractionResult.PASS; + + if (isRemote()) return InteractionResult.sidedSuccess(true); if (!isActive()) { int currentRadius = getRecipeLogic().getCurrentRadius(); @@ -268,7 +198,6 @@ protected InteractionResult onScrewdriverClick( playerIn.sendSystemMessage(Component.translatable("gtceu.multiblock.large_miner.errorradius") .withStyle(ChatFormatting.RED)); } - - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(false); } } diff --git a/src/main/java/com/epimorphismmc/epimorphism/common/machine/trait/ConcreteBackfillerLogic.java b/src/main/java/com/epimorphismmc/epimorphism/common/machine/trait/ConcreteBackfillerLogic.java index 280866e..e97d479 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/common/machine/trait/ConcreteBackfillerLogic.java +++ b/src/main/java/com/epimorphismmc/epimorphism/common/machine/trait/ConcreteBackfillerLogic.java @@ -2,26 +2,36 @@ import com.epimorphismmc.epimorphism.common.data.EPTags; import com.epimorphismmc.epimorphism.common.machine.multiblock.electric.ConcreteBackfillerMachine; +import com.epimorphismmc.epimorphism.utils.EPUtil; +import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.common.block.SurfaceRockBlock; -import com.gregtechceu.gtceu.common.data.GTBlocks; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.Level; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.state.BlockState; import lombok.Getter; import lombok.Setter; -import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.util.Collections; +import java.util.Iterator; import java.util.LinkedList; -import java.util.Objects; +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class ConcreteBackfillerLogic extends RecipeLogic { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = @@ -34,20 +44,9 @@ public class ConcreteBackfillerLogic extends RecipeLogic { private final ConcreteBackfillerMachine filler; - @Getter - private final int speed; - @Getter private final int maximumRadius; - @Setter - @Getter - private int voltageTier; - - @Getter - @Setter - private int overclockAmount = 0; - private final LinkedList posesToFill = new LinkedList<>(); @Getter @@ -101,14 +100,15 @@ public class ConcreteBackfillerLogic extends RecipeLogic { @Persisted private boolean isDone; - public ConcreteBackfillerLogic(ConcreteBackfillerMachine machine, int speed, int maximumRadius) { + @Persisted + @Nullable + private BlockState lastBlock; + + public ConcreteBackfillerLogic(ConcreteBackfillerMachine machine, int maximumRadius) { super(machine); this.filler = machine; - this.speed = speed; - this.duration = speed; this.maximumRadius = maximumRadius; this.currentRadius = maximumRadius; - this.isDone = false; } @Override @@ -119,78 +119,139 @@ public ManagedFieldHolder getFieldHolder() { @Override public void resetRecipeLogic() { super.resetRecipeLogic(); - duration = speed; + this.lastBlock = null; resetArea(); } @Override public void serverTick() { - // main logic - if (!isSuspend() && filler.getLevel() instanceof ServerLevel level && checkCanFill()) { - // checkCanFill already check energy, needn't simulate - filler.drainEnergy(false); - setStatus(Status.WORKING); - - checkPosToFill(); - - if (progress >= duration && !posesToFill.isEmpty()) { - for (int i = 0; i < getOverclockAmount(); i++) { - if (posesToFill.isEmpty()) { - break; - } - BlockPos pos = posesToFill.getFirst(); - BlockState blockState = level.getBlockState(pos); - // check make sure here still can fill - while (!checkStateCanFill(blockState)) { - posesToFill.removeFirst(); - if (posesToFill.isEmpty()) { - break; - } - pos = posesToFill.getFirst(); - blockState = level.getBlockState(pos); - } + if (!isSuspend() && checkCoordinatesInvalid()) { + initPos(); + } + super.serverTick(); + } - // has place to fill - if (checkStateCanFill(blockState)) { - fillAndDrainFluid(pos, level); - posesToFill.removeFirst(); - } - } - progress = 0; + @Override + public boolean isSuspend() { + return super.isSuspend() || isDone; + } + + ////////////////////////////////////// + // ********* Recipe Handle ******** // + ////////////////////////////////////// + + @Override + protected @Nullable Iterator searchRecipe() { + // the same as the super method, but only matches the recipe inputs + if (!machine.hasProxies()) return null; + var iterator = machine + .getRecipeType() + .getLookup() + .getRecipeIterator( + machine, + recipe -> !recipe.isFuel + && recipe.matchRecipeContents(IO.IN, machine, recipe.inputs).isSuccess() + && recipe.matchRecipeContents(IO.IN, machine, recipe.tickInputs).isSuccess()); + + boolean any = false; + while (iterator.hasNext()) { + GTRecipe recipe = iterator.next(); + if (recipe == null) continue; + any = true; + break; + } + + if (any) { + iterator.reset(); + return iterator; + } + + for (GTRecipeType.ICustomRecipeLogic logic : machine.getRecipeType().getCustomRecipeLogicRunners()) { + GTRecipe recipe = logic.createCustomRecipe(machine); + if (recipe != null) return Collections.singleton(recipe).iterator(); + } + return Collections.emptyIterator(); + } + + public GTRecipe modifyRecipe(GTRecipe recipe) { + if (!recipe.outputs.isEmpty()) { + // must copy because this is the origin recipe + recipe = recipe.copy(); + var item = RecipeHelper.getOutputItems(recipe).get(0).getItem(); + if (item instanceof BlockItem blockItem) { + this.lastBlock = blockItem.getBlock().defaultBlockState(); + } + recipe.outputs.clear(); + } + return recipe; + } + + @Override + public void setupRecipe(GTRecipe recipe) { + checkPosToFill(); + if (!posesToFill.isEmpty()) { + super.setupRecipe(recipe); + } + } + + @Override + protected boolean handleRecipeIO(GTRecipe recipe, IO io) { + if (io == IO.OUT) { + if (!posesToFill.isEmpty()) { + this.fillState(); } - progress++; - totalContinuousRunningTime++; if (posesToFill.isEmpty()) { x = fillX; y = fillY; z = fillZ; + // blocks may change during machine working, so let's check again posesToFill.addAll(getPosesToFill()); if (posesToFill.isEmpty()) { - isDone = true; - setStatus(Status.IDLE); + this.isDone = true; + // do not try the last recipe again + this.recipeDirty = true; } } - } else { - // machine isn't working enabled - this.setStatus(Status.IDLE); - if (subscription != null) { - subscription.unsubscribe(); - subscription = null; + return true; + } + return super.handleRecipeIO(recipe, io); + } + + ////////////////////////////////////// + // *********** Backfill *********** // + ////////////////////////////////////// + + private void fillState() { + if (filler.getLevel() instanceof ServerLevel level) { + BlockPos pos = posesToFill.getFirst(); + BlockState blockState = level.getBlockState(pos); + // check make sure here still can fill + while (!checkStateCanFill(blockState)) { + posesToFill.removeFirst(); + if (posesToFill.isEmpty()) { + return; + } + pos = posesToFill.getFirst(); + blockState = level.getBlockState(pos); } + + if (lastBlock != null) { + level.setBlockAndUpdate(pos, lastBlock); + fillX = pos.getX(); + fillY = pos.getY(); + fillZ = pos.getZ(); + } + posesToFill.removeFirst(); } } - private void fillAndDrainFluid(BlockPos pos, ServerLevel level) { - filler.drainFluid(1, false); - level.setBlockAndUpdate(pos, GTBlocks.LIGHT_CONCRETE.getDefaultState()); - fillX = pos.getX(); - fillY = pos.getY(); - fillZ = pos.getZ(); + public void initPos() { + this.initPos(getCenterPos(), currentRadius); } - public void initPos(@NotNull BlockPos pos, int currentRadius) { + public void initPos(BlockPos pos, int currentRadius) { if (this.minBuildHeight == Integer.MAX_VALUE) { this.minBuildHeight = this.getMachine().getLevel().getMinBuildHeight(); } @@ -226,12 +287,12 @@ private static boolean checkStateCanFill(BlockState state) { private LinkedList getPosesToFill() { LinkedList poses = new LinkedList<>(); - double quotient = getQuotient(getMeanTickTime(getMachine().getLevel())); + double quotient = getQuotient(EPUtil.getMeanTickTime(getMachine().getLevel())); int calcAmount = quotient < 1 ? 1 : (int) (Math.min(quotient, Short.MAX_VALUE)); int calculated = 0; while (calculated < calcAmount) { - if (y < getCenterPos().getY() - 1) { + if (y <= getCenterPos().getY() - 1) { if (z <= startZ + currentRadius * 2) { if (x <= startX + currentRadius * 2) { BlockPos pos = new BlockPos(x, y, z); @@ -265,43 +326,16 @@ private boolean checkCoordinatesInvalid() { return x == Integer.MAX_VALUE && y == Integer.MAX_VALUE && z == Integer.MAX_VALUE; } - private boolean checkCanFill() { - if (!isDone() && checkCoordinatesInvalid()) { - initPos(getCenterPos(), currentRadius); - } - return !isDone && filler.drainInput(true); - } - public void resetArea() { - initPos(getCenterPos(), currentRadius); + initPos(); if (this.isDone) this.setWorkingEnabled(false); this.isDone = false; } - /** - * @param values to find the mean of - * @return the mean value - */ - private static long mean(long[] values) { - if (values.length == 0L) return 0L; - - long sum = 0L; - for (long v : values) sum += v; - return sum / values.length; - } - - /** - * @param world the {@link Level} to get the average tick time of - * @return the mean tick time - */ - private static double getMeanTickTime(@NotNull Level world) { - return mean(Objects.requireNonNull(world.getServer()).tickTimes) * 1.0E-6D; - } - /** * gets the quotient for determining the amount of blocks to mine * - * @param base is a value used for calculation, intended to be the mean tick time of the world the miner is in + * @param base is a value used for calculation, intended to be the mean tick time of the world the filler is in * @return the quotient */ private static double getQuotient(double base) { diff --git a/src/main/java/com/epimorphismmc/epimorphism/data/lang/MaterialLang.java b/src/main/java/com/epimorphismmc/epimorphism/data/lang/MaterialLang.java index 5849162..7852157 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/data/lang/MaterialLang.java +++ b/src/main/java/com/epimorphismmc/epimorphism/data/lang/MaterialLang.java @@ -391,6 +391,22 @@ public static void init(MOLangProvider provider) { // addCNMaterial(provider, HydrogenCyanide, "氰化氢"); // addCNMaterial(provider, SodiumCyanide, "氰化钠"); // addCNMaterial(provider, SodiumPerchlorate, "高氯酸钠"); + addCNMaterial(provider, ConcreteWhite, "白色混凝土"); + addCNMaterial(provider, ConcreteOrange, "橙色混凝土"); + addCNMaterial(provider, ConcreteMagenta, "品红色混凝土"); + addCNMaterial(provider, ConcreteLightBlue, "淡蓝色混凝土"); + addCNMaterial(provider, ConcreteYellow, "黄色混凝土"); + addCNMaterial(provider, ConcreteLime, "黄绿色混凝土"); + addCNMaterial(provider, ConcretePink, "粉色混凝土"); + addCNMaterial(provider, ConcreteGray, "灰色混凝土"); + addCNMaterial(provider, ConcreteLightGray, "淡灰色混凝土"); + addCNMaterial(provider, ConcreteCyan, "青色混凝土"); + addCNMaterial(provider, ConcretePurple, "紫色混凝土"); + addCNMaterial(provider, ConcreteBlue, "蓝色混凝土"); + addCNMaterial(provider, ConcreteBrown, "棕色混凝土"); + addCNMaterial(provider, ConcreteGreen, "绿色混凝土"); + addCNMaterial(provider, ConcreteRed, "红色混凝土"); + addCNMaterial(provider, ConcreteBlack, "黑色混凝土"); // Second Degree Materials addCNMaterial(provider, DragonBreath, "龙息"); diff --git a/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/ConcreteBackfillerRecipes.java b/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/ConcreteBackfillerRecipes.java new file mode 100644 index 0000000..ecb0bbc --- /dev/null +++ b/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/ConcreteBackfillerRecipes.java @@ -0,0 +1,36 @@ +package com.epimorphismmc.epimorphism.data.recipe.misc; + +import com.epimorphismmc.epimorphism.Epimorphism; +import com.epimorphismmc.epimorphism.common.data.EPMaterials; + +import com.gregtechceu.gtceu.api.data.chemical.material.Material; + +import net.minecraft.data.recipes.FinishedRecipe; + +import java.util.function.Consumer; + +import static com.epimorphismmc.epimorphism.common.data.EPRecipeTypes.*; +import static com.epimorphismmc.epimorphism.data.recipe.EPRecipeUtil.second; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; + +public class ConcreteBackfillerRecipes { + + public static void init(Consumer provider) { + concrete(provider, Concrete); + + for (Material concrete : EPMaterials.CONCRETES) { + concrete(provider, concrete); + } + } + + private static void concrete(Consumer provider, Material material) { + CONCRETE_BACKFILLER_RECIPES + .recipeBuilder(Epimorphism.id(material.getName())) + .inputFluids(material.getFluid(144)) + .outputItems(block, material) + .EUt(96) + .duration(second(3)) + .save(provider); + } +} diff --git a/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/ConcreteRecipes.java b/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/ConcreteRecipes.java new file mode 100644 index 0000000..24ca905 --- /dev/null +++ b/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/ConcreteRecipes.java @@ -0,0 +1,33 @@ +package com.epimorphismmc.epimorphism.data.recipe.misc; + +import com.epimorphismmc.epimorphism.Epimorphism; + +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.world.item.DyeColor; +import net.minecraftforge.common.Tags; + +import java.util.function.Consumer; + +import static com.epimorphismmc.epimorphism.common.data.EPMaterials.*; +import static com.gregtechceu.gtceu.api.GTValues.*; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; + +public class ConcreteRecipes { + public static void init(Consumer provider) { + for (int i = 0; i < DyeColor.values().length; i++) { + var color = DyeColor.values()[i]; + String dyeName = color.getName(); + MIXER_RECIPES + .recipeBuilder(Epimorphism.id(dyeName + "_concrete")) + .inputItems(Tags.Items.SAND, 4) + .inputItems(Tags.Items.GRAVEL, 4) + .inputFluids(CHEMICAL_DYES[color.ordinal()].getFluid(L)) + .inputFluids(Water.getFluid(1000)) + .outputFluids(CONCRETES[i].getFluid(144 * 8)) + .duration(200) + .EUt(VA[ULV]) + .save(provider); + } + } +} diff --git a/src/main/java/com/epimorphismmc/epimorphism/data/recipe/handler/WrapItemRecipeHandler.java b/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/WrapItemRecipes.java similarity index 51% rename from src/main/java/com/epimorphismmc/epimorphism/data/recipe/handler/WrapItemRecipeHandler.java rename to src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/WrapItemRecipes.java index e6e5b83..386d123 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/data/recipe/handler/WrapItemRecipeHandler.java +++ b/src/main/java/com/epimorphismmc/epimorphism/data/recipe/misc/WrapItemRecipes.java @@ -1,26 +1,31 @@ -package com.epimorphismmc.epimorphism.data.recipe.handler; +package com.epimorphismmc.epimorphism.data.recipe.misc; -import com.epimorphismmc.epimorphism.common.data.items.EPWrapItem; +import com.epimorphismmc.epimorphism.Epimorphism; + +import com.epimorphismmc.monomorphism.utility.RegisteredObjects; -import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import net.minecraft.data.recipes.FinishedRecipe; import java.util.function.Consumer; +import static com.epimorphismmc.epimorphism.common.data.items.EPWrapItem.WRAP_CIRCUIT_MAP; +import static com.epimorphismmc.epimorphism.common.data.items.EPWrapItem.WRAP_ITEM_MAP; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; + /** * 封装物品相关配方 */ -public class WrapItemRecipeHandler { +public class WrapItemRecipes { public static void init(Consumer provider) { - EPWrapItem.WRAP_CIRCUIT_MAP.object2ObjectEntrySet().fastForEach(entry -> { + WRAP_CIRCUIT_MAP.object2ObjectEntrySet().fastForEach(entry -> { var item = entry.getValue().asItem(); var tag = entry.getKey(); GTRecipeTypes.ASSEMBLER_RECIPES - .recipeBuilder("wrap_" + tag.location().getPath().replace('/', '_')) + .recipeBuilder(Epimorphism.id("wrap_" + tag.location().getPath().replace('/', '_'))) .inputItems(tag, 16) - .inputFluids(GTMaterials.Polyethylene.getFluid(72)) + .inputFluids(Polyethylene.getFluid(72)) .circuitMeta(16) .outputItems(item, 1) .duration(600) @@ -28,13 +33,14 @@ public static void init(Consumer provider) { .save(provider); }); - EPWrapItem.WRAP_ITEM_MAP.object2ObjectEntrySet().fastForEach(entry -> { + WRAP_ITEM_MAP.object2ObjectEntrySet().fastForEach(entry -> { var item = entry.getValue().asItem(); var wrappedItem = entry.getKey().asItem(); GTRecipeTypes.ASSEMBLER_RECIPES - .recipeBuilder("wrap_" + wrappedItem.asItem().getDescriptionId()) + .recipeBuilder(Epimorphism.id( + "wrap_" + RegisteredObjects.getKeyOrThrow(wrappedItem).getPath())) .inputItems(wrappedItem, 16) - .inputFluids(GTMaterials.Polyethylene.getFluid(72)) + .inputFluids(Polyethylene.getFluid(72)) .circuitMeta(16) .outputItems(item, 1) .duration(600) diff --git a/src/main/java/com/epimorphismmc/epimorphism/utils/EPMath.java b/src/main/java/com/epimorphismmc/epimorphism/utils/EPMath.java new file mode 100644 index 0000000..ffb9d10 --- /dev/null +++ b/src/main/java/com/epimorphismmc/epimorphism/utils/EPMath.java @@ -0,0 +1,16 @@ +package com.epimorphismmc.epimorphism.utils; + +public class EPMath { + + /** + * @param values to find the mean of + * @return the mean value + */ + public static long mean(long[] values) { + if (values.length == 0L) return 0L; + + long sum = 0L; + for (long v : values) sum += v; + return sum / values.length; + } +} diff --git a/src/main/java/com/epimorphismmc/epimorphism/utils/EPUtil.java b/src/main/java/com/epimorphismmc/epimorphism/utils/EPUtil.java index b36ee2a..5966847 100644 --- a/src/main/java/com/epimorphismmc/epimorphism/utils/EPUtil.java +++ b/src/main/java/com/epimorphismmc/epimorphism/utils/EPUtil.java @@ -3,8 +3,13 @@ import com.lowdragmc.lowdraglib.misc.FluidTransferList; import com.lowdragmc.lowdraglib.side.fluid.FluidStack; +import net.minecraft.world.level.Level; + +import org.jetbrains.annotations.NotNull; + import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.function.Predicate; public class EPUtil { @@ -19,4 +24,12 @@ public static List fluidHandlerToList(FluidTransferList fluidTransfe } return list.stream().filter(Predicate.not(FluidStack::isEmpty)).toList(); } + + /** + * @param world the {@link Level} to get the average tick time of + * @return the mean tick time + */ + public static double getMeanTickTime(@NotNull Level world) { + return EPMath.mean(Objects.requireNonNull(world.getServer()).tickTimes) * 1.0E-6D; + } }