diff --git a/src/main/java/gregtech/api/items/armor/IArmorLogic.java b/src/main/java/gregtech/api/items/armor/IArmorLogic.java index b8c906d4388..ec47b11ec89 100644 --- a/src/main/java/gregtech/api/items/armor/IArmorLogic.java +++ b/src/main/java/gregtech/api/items/armor/IArmorLogic.java @@ -79,4 +79,12 @@ default ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemSt default float getHeatResistance() { return 1.0f; } + + /** + * + * @return the value to multiply radiation damage by + */ + default float getRadiationResistance() { + return 1.0f; + } } diff --git a/src/main/java/gregtech/api/items/materialitem/MetaPrefixItem.java b/src/main/java/gregtech/api/items/materialitem/MetaPrefixItem.java index 35172727add..5981ad18fac 100644 --- a/src/main/java/gregtech/api/items/materialitem/MetaPrefixItem.java +++ b/src/main/java/gregtech/api/items/materialitem/MetaPrefixItem.java @@ -87,8 +87,8 @@ private static void registerSpecialOreDict(ItemStack item, Material material, Or if (material == Materials.Plutonium239) { OreDictUnifier.registerOre(item, prefix.name() + material.toCamelCaseString() + "239"); - } else if (material == Materials.Uranium238) { - OreDictUnifier.registerOre(item, prefix.name() + material.toCamelCaseString() + "238"); + } else if (material == Materials.Uranium) { + OreDictUnifier.registerOre(item, prefix.name() + material.toCamelCaseString()); } else if (material == Materials.Saltpeter) { OreDictUnifier.registerOre(item, prefix.name() + material.toCamelCaseString()); } @@ -157,23 +157,49 @@ public void onUpdate(@NotNull ItemStack itemStack, @NotNull World worldIn, @NotN super.onUpdate(itemStack, worldIn, entityIn, itemSlot, isSelected); if (metaItems.containsKey((short) itemStack.getItemDamage()) && entityIn instanceof EntityLivingBase entity) { if (entityIn.ticksExisted % 20 == 0) { - if (prefix.heatDamageFunction == null) return; - - Material material = getMaterial(itemStack); - if (material == null || !material.hasProperty(PropertyKey.BLAST)) return; - float heatDamage = prefix.heatDamageFunction.apply(material.getBlastTemperature()); - ItemStack armor = entity.getItemStackFromSlot(EntityEquipmentSlot.CHEST); - if (!armor.isEmpty() && armor.getItem() instanceof ArmorMetaItem) { - ArmorMetaItem.ArmorMetaValueItem metaValueItem = ((ArmorMetaItem) armor.getItem()) - .getItem(armor); - if (metaValueItem != null) heatDamage *= metaValueItem.getArmorLogic().getHeatResistance(); + //Handle heat damage + if (prefix.heatDamageFunction != null) { + Material material = getMaterial(itemStack); + if (material != null) { + float heatDamage = 0.f; + if (material.hasProperty(PropertyKey.BLAST)) { + heatDamage = prefix.heatDamageFunction.apply(material.getBlastTemperature()); + } else if (material.hasProperty(PropertyKey.FISSION_FUEL)) { + heatDamage = prefix.heatDamageFunction.apply(0); + } + ItemStack armor = entity.getItemStackFromSlot(EntityEquipmentSlot.CHEST); + if (!armor.isEmpty() && armor.getItem() instanceof ArmorMetaItem) { + ArmorMetaItem.ArmorMetaValueItem metaValueItem = ((ArmorMetaItem) armor.getItem()) + .getItem(armor); + if (metaValueItem != null) heatDamage *= metaValueItem.getArmorLogic().getHeatResistance(); + } + if (heatDamage > 0.0) { + entity.attackEntityFrom(DamageSources.getHeatDamage().setDamageBypassesArmor(), heatDamage); + } else if (heatDamage < 0.0) { + entity.attackEntityFrom(DamageSources.getFrostDamage().setDamageBypassesArmor(), + -heatDamage); + } + } } - if (heatDamage > 0.0) { - entity.attackEntityFrom(DamageSources.getHeatDamage().setDamageBypassesArmor(), heatDamage); - } else if (heatDamage < 0.0) { - entity.attackEntityFrom(DamageSources.getFrostDamage().setDamageBypassesArmor(), -heatDamage); + //Handle radiation damage + if (prefix.radiationDamageFunction != null) { + Material material = getMaterial(itemStack); + if (material != null) { + float radiationDamage = prefix.radiationDamageFunction.apply(material.getNeutrons()); + ItemStack armor = entity.getItemStackFromSlot(EntityEquipmentSlot.CHEST); + if (!armor.isEmpty() && armor.getItem() instanceof ArmorMetaItem) { + ArmorMetaItem.ArmorMetaValueItem metaValueItem = ((ArmorMetaItem) armor.getItem()) + .getItem(armor); + if (metaValueItem != null) { + radiationDamage *= metaValueItem.getArmorLogic().getRadiationResistance(); + } + } + if (radiationDamage > 0.0) { + entity.attackEntityFrom(DamageSources.getRadioactiveDamage().setDamageBypassesArmor(), radiationDamage); + } + } } } } diff --git a/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockAbility.java b/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockAbility.java index 52595bb70ae..3a7ab2d5c62 100644 --- a/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockAbility.java +++ b/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockAbility.java @@ -80,7 +80,7 @@ public class MultiblockAbility { public static final MultiblockAbility EXPORT_FUEL_ROD = new MultiblockAbility<>( "export_fuel_rod"); public static final MultiblockAbility IMPORT_COOLANT = new MultiblockAbility<>("import_coolant"); - public static final MultiblockAbility EXPORT_COOLANT = new MultiblockAbility<>("export_coolant"); + public static final MultiblockAbility EXPORT_COOLANT = new MultiblockAbility<>("export_coolant"); public static final MultiblockAbility CONTROL_ROD_PORT = new MultiblockAbility<>( "control_rod_port"); diff --git a/src/main/java/gregtech/api/nuclear/fission/FissionReactor.java b/src/main/java/gregtech/api/nuclear/fission/FissionReactor.java index 185641662a7..03a9dea92d1 100644 --- a/src/main/java/gregtech/api/nuclear/fission/FissionReactor.java +++ b/src/main/java/gregtech/api/nuclear/fission/FissionReactor.java @@ -131,7 +131,7 @@ public double criticalCoolantFlow() { return this.power / this.coolingFactor; } - protected void prepareThermalProperties() { + public void prepareThermalProperties() { int idRod = 0, idControl = 0, idChannel = 0; for (int i = 0; i < reactorLayout.length; i++) { diff --git a/src/main/java/gregtech/api/unification/Elements.java b/src/main/java/gregtech/api/unification/Elements.java index d49203d32f6..9f842a333fc 100644 --- a/src/main/java/gregtech/api/unification/Elements.java +++ b/src/main/java/gregtech/api/unification/Elements.java @@ -112,10 +112,19 @@ private Elements() {} public static final Element U = add(92, 146, -1, null, "Uranium", "U", false); public static final Element U238 = add(92, 146, -1, null, "Uranium-238", "U-238", false); public static final Element U235 = add(92, 143, -1, null, "Uranium-235", "U-235", true); + public static final Element U239 = add(92, 147, -1, null, "Uranium-239", "U-239", true); public static final Element Np = add(93, 144, -1, null, "Neptunium", "Np", false); + public static final Element Np235 = add(93, 142, -1, null, "Neptunium-235", "Np-235", true); + public static final Element Np236 = add(93, 143, -1, null, "Neptunium-236", "Np-236", true); + public static final Element Np237 = add(93, 144, -1, null, "Neptunium-237", "Np-237", true); + public static final Element Np239 = add(93, 146, -1, null, "Neptunium-239", "Np-239", true); public static final Element Pu = add(94, 152, -1, null, "Plutonium", "Pu", false); - public static final Element Pu239 = add(94, 145, -1, null, "Plutonium-239", "Pu-239", false); - public static final Element Pu241 = add(94, 149, -1, null, "Plutonium-241", "Pu-241", true); + public static final Element Pu238 = add(94, 144, -1, null, "Plutonium-238", "Pu-238", true); + public static final Element Pu239 = add(94, 145, -1, null, "Plutonium-239", "Pu-239", true); + public static final Element Pu240 = add(94, 146, -1, null, "Plutonium-240", "Pu-240", true); + public static final Element Pu241 = add(94, 147, -1, null, "Plutonium-241", "Pu-241", true); + public static final Element Pu242 = add(94, 148, -1, null, "Plutonium-242", "Pu-242", true); + public static final Element Pu244 = add(94, 150, -1, null, "Plutonium-244", "Pu-244", true); public static final Element Am = add(95, 150, -1, null, "Americium", "Am", false); public static final Element Cm = add(96, 153, -1, null, "Curium", "Cm", false); public static final Element Bk = add(97, 152, -1, null, "Berkelium", "Bk", false); diff --git a/src/main/java/gregtech/api/unification/material/Material.java b/src/main/java/gregtech/api/unification/material/Material.java index 147896c8fa2..026d6eddd6b 100644 --- a/src/main/java/gregtech/api/unification/material/Material.java +++ b/src/main/java/gregtech/api/unification/material/Material.java @@ -1077,6 +1077,12 @@ public Builder fissionFuelProperties(int maxTemperature, int duration, double sl return this; } + public Builder coolantProperty(Material hotCoolant, Material hotHPCoolant, double moderatorFactor, double coolingFactor, double boilingPoint, double absorption, double pressure) { + properties.ensureSet(PropertyKey.FLUID); + properties.setProperty(PropertyKey.COOLANT, new CoolantProperty(hotCoolant, hotHPCoolant, moderatorFactor, coolingFactor, boilingPoint, absorption, pressure)); + return this; + } + // TODO Clean this up post 2.5 release @Deprecated public Builder addDefaultEnchant(Enchantment enchant, int level) { diff --git a/src/main/java/gregtech/api/unification/material/Materials.java b/src/main/java/gregtech/api/unification/material/Materials.java index 61b35daae31..24c9b1c36c7 100644 --- a/src/main/java/gregtech/api/unification/material/Materials.java +++ b/src/main/java/gregtech/api/unification/material/Materials.java @@ -200,6 +200,10 @@ public static void register() { public static Material Neodymium; public static Material Neon; public static Material Neptunium; + public static Material Neptunium235; + public static Material Neptunium236; + public static Material Neptunium237; + public static Material Neptunium239; public static Material Nickel; public static Material Nihonium; public static Material Niobium; @@ -212,8 +216,12 @@ public static void register() { public static Material Phosphorus; public static Material Polonium; public static Material Platinum; + public static Material Plutonium238; public static Material Plutonium239; + public static Material Plutonium240; public static Material Plutonium241; + public static Material Plutonium242; + public static Material Plutonium244; public static Material Potassium; public static Material Praseodymium; public static Material Promethium; @@ -247,8 +255,10 @@ public static void register() { public static Material Titanium; public static Material Tritium; public static Material Tungsten; - public static Material Uranium238; + public static Material Uranium; public static Material Uranium235; + public static Material Uranium238; + public static Material Uranium239; public static Material Vanadium; public static Material Xenon; public static Material Ytterbium; @@ -479,6 +489,10 @@ public static void register() { public static Material Zircaloy; public static Material Inconel; public static Material RTMAlloy; + public static Material EnrichedUraniumDioxide; + public static Material DepletedUraniumDioxide; + public static Material HighPressureSteam; + public static Material Plutonium239Dioxide; /** * Organic chemistry @@ -694,6 +708,7 @@ public static void register() { public static Material Lapotron; public static Material UUMatter; public static Material PCBCoolant; + public static Material Corium; /** * Second Degree Compounds @@ -752,6 +767,10 @@ public static void register() { public static Material Clay; public static Material Redstone; public static Material ThoriumFLiBe; + public static Material LEU235; + public static Material HEU235; + public static Material LowGradeMOX; + public static Material HighGradeMOX; /** * Third Degree Materials diff --git a/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java b/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java index 23d4589d3b5..c5b3f2e54eb 100644 --- a/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java +++ b/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java @@ -85,6 +85,10 @@ public class MaterialIconType { public static final MaterialIconType turbineBlade = new MaterialIconType("turbineBlade"); + public static final MaterialIconType fuelRod = new MaterialIconType("fuelRod"); + public static final MaterialIconType fuelRodDepleted = new MaterialIconType("fuelRodDepleted"); + public static final MaterialIconType fuelRodHotDepleted = new MaterialIconType("fuelRodHotDepleted"); + // BLOCK TEXTURES public static final MaterialIconType liquid = new MaterialIconType("liquid"); public static final MaterialIconType gas = new MaterialIconType("gas"); diff --git a/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java b/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java index 781ec2bc018..2aeae1d0170 100644 --- a/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java +++ b/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java @@ -864,12 +864,12 @@ public static void register() { .vacuumStats(VA[HV], 300)) .build(); - Uranium238 = new Material.Builder(116, gregtechId("uranium")) + Uranium = new Material.Builder(116, gregtechId("uranium")) .ingot(3) .liquid(new FluidBuilder().temperature(1405)) .color(0x32F032).iconSet(METALLIC) .flags(EXT_METAL) - .element(Elements.U238) + .element(Elements.U) .fluidTemp(1405) .fissionFuelProperties(400, 40, 0.1, 0.1, 0.1, 0.1) .build(); @@ -1009,5 +1009,69 @@ public static void register() { .blastStats(VA[LuV], 1500) .vacuumStats(VA[IV], 300)) .build(); + + Uranium238 = new Material.Builder(131, gregtechId("uranium_238")) + .ingot(3) + .liquid(new FluidBuilder().temperature(1405)) + .color(0x46FA46).iconSet(SHINY) + .flags(EXT_METAL) + .element(Elements.U238) + .build(); + + Uranium239 = new Material.Builder(132, gregtechId("uranium_239")) + .ingot(3) + .liquid(new FluidBuilder().temperature(1405)) + .color(0x46FA46).iconSet(SHINY) + .flags(EXT_METAL) + .element(Elements.U239) + .build(); + + Neptunium235 = new Material.Builder(133, gregtechId("neptunium_235")) + .color(0x284D7B).iconSet(METALLIC) + .element(Elements.Np235) + .build(); + + Neptunium236 = new Material.Builder(134, gregtechId("neptunium_236")) + .color(0x284D7B).iconSet(METALLIC) + .element(Elements.Np236) + .build(); + + Neptunium237 = new Material.Builder(135, gregtechId("neptunium_237")) + .color(0x284D7B).iconSet(METALLIC) + .element(Elements.Np237) + .build(); + + Neptunium239 = new Material.Builder(136, gregtechId("neptunium_239")) + .color(0x284D7B).iconSet(METALLIC) + .element(Elements.Np239) + .build(); + + Plutonium238 = new Material.Builder(137, gregtechId("plutonium_238")) + .ingot(3) + .liquid(new FluidBuilder().temperature(913)) + .color(0xF03232).iconSet(METALLIC) + .element(Elements.Pu238) + .build(); + + Plutonium240 = new Material.Builder(138, gregtechId("plutonium_240")) + .ingot(3) + .liquid(new FluidBuilder().temperature(913)) + .color(0xF03232).iconSet(METALLIC) + .element(Elements.Pu240) + .build(); + + Plutonium242 = new Material.Builder(139, gregtechId("plutonium_242")) + .ingot(3) + .liquid(new FluidBuilder().temperature(913)) + .color(0xF03232).iconSet(METALLIC) + .element(Elements.Pu242) + .build(); + + Plutonium244 = new Material.Builder(140, gregtechId("plutonium_244")) + .ingot(3) + .liquid(new FluidBuilder().temperature(913)) + .color(0xF03232).iconSet(METALLIC) + .element(Elements.Pu244) + .build(); } } diff --git a/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java b/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java index c0e73b3e9ce..ff4079ebf01 100644 --- a/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java +++ b/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java @@ -5,6 +5,7 @@ import gregtech.api.fluids.FluidState; import gregtech.api.fluids.attribute.FluidAttributes; import gregtech.api.fluids.store.FluidStorageKeys; +import gregtech.api.nuclear.fission.FissionReactor; import gregtech.api.unification.material.Material; import gregtech.api.unification.material.properties.BlastProperty.GasTier; import gregtech.api.unification.material.properties.PropertyKey; @@ -675,7 +676,7 @@ public static void register() { .dust(3).ore(true) .color(0x232323).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) - .components(Uranium238, 1, Oxygen, 2) + .components(Uranium, 1, Oxygen, 2) .build() .setFormula("UO2", true); @@ -1214,7 +1215,7 @@ public static void register() { .gas() .color(0x42D126) .flags(DISABLE_DECOMPOSITION) - .components(Uranium238, 1, Fluorine, 6) + .components(Uranium, 1, Fluorine, 6) .build() .setFormula("UF6", true); @@ -1230,7 +1231,7 @@ public static void register() { .gas() .color(0x74BA66) .flags(DISABLE_DECOMPOSITION) - .components(Uranium238, 1, Fluorine, 6) + .components(Uranium, 1, Fluorine, 6) .build() .setFormula("UF6", true); @@ -1285,6 +1286,7 @@ public static void register() { .liquid(new FluidBuilder().alternativeName("fluidDistWater")) .color(0x4A94FF) .flags(DISABLE_DECOMPOSITION) + .coolantProperty(Steam, HighPressureSteam, 1., 1., 373, 10., FissionReactor.standardPressure) .components(Hydrogen, 2, Oxygen, 1) .build(); @@ -1347,7 +1349,7 @@ public static void register() { .liquid(new FluidBuilder().temperature(1882)) .color(0x008700).iconSet(SHINY) .flags(DECOMPOSITION_BY_CENTRIFUGING) - .components(Uranium238, 1, Platinum, 3) + .components(Uranium, 1, Platinum, 3) .cableProperties(GTValues.V[GTValues.EV], 6, 0, true, 30) .blast(b -> b .temp(4400, GasTier.MID) @@ -1387,7 +1389,7 @@ public static void register() { .liquid(new FluidBuilder().temperature(3410)) .color(0x0A0A0A) .flags(DECOMPOSITION_BY_CENTRIFUGING, GENERATE_FINE_WIRE) - .components(Uranium238, 1, Rhodium, 1, Naquadah, 2) + .components(Uranium, 1, Rhodium, 1, Naquadah, 2) .cableProperties(GTValues.V[GTValues.ZPM], 8, 0, true, 5) .blast(b -> b .temp(9000, GasTier.HIGH) @@ -1638,5 +1640,22 @@ public static void register() { .blastTemp(1610, GasTier.MID, GTValues.VA[EV], 200) .build() .setFormula("Ni50Cr20Fe20Ni5Mo3", true); + + HighPressureSteam = new Material.Builder(463, gregtechId("high_pressure_steam")) + .gas(new FluidBuilder() + .temperature(500) + .customStill()) + .color(0xC4C4C4) + .flags(DISABLE_DECOMPOSITION) + .components(Hydrogen, 2, Oxygen, 1) + .build(); + + Plutonium239Dioxide = new Material.Builder(464, gregtechId("plutonium_239_dioxide")) + .dust(3) + .color(0xF03232).iconSet(DULL) + .flags(DISABLE_DECOMPOSITION) + .components(Uranium235, 1, Oxygen, 2) + .build() + .setFormula("PuO2", true); } } diff --git a/src/main/java/gregtech/api/unification/material/materials/SecondDegreeMaterials.java b/src/main/java/gregtech/api/unification/material/materials/SecondDegreeMaterials.java index 59ed1e97f76..72449b02442 100644 --- a/src/main/java/gregtech/api/unification/material/materials/SecondDegreeMaterials.java +++ b/src/main/java/gregtech/api/unification/material/materials/SecondDegreeMaterials.java @@ -503,5 +503,41 @@ public static void register() { EXCLUDE_PLATE_COMPRESSOR_RECIPE, DECOMPOSITION_BY_CENTRIFUGING) .components(Silicon, 1, Pyrite, 5, Ruby, 1, Mercury, 3) .build(); + + LEU235 = new Material.Builder(2065, gregtechId("leu_235")) + .dust(3) + .color(0x232323).iconSet(METALLIC) + .flags(DISABLE_DECOMPOSITION) + .components(EnrichedUraniumDioxide, 1, DepletedUraniumDioxide, 20) + .fissionFuelProperties(2000, 1000, 100., 0., 1000., 0.) + .build() + .setFormula("UO2", true); + + HEU235 = new Material.Builder(2066, gregtechId("heu_235")) + .dust(3) + .color(0x242826).iconSet(METALLIC) + .flags(DISABLE_DECOMPOSITION) + .components(EnrichedUraniumDioxide, 1, DepletedUraniumDioxide, 5) + .fissionFuelProperties(2000, 1000, 10., 0., 2000., 0.) + .build() + .setFormula("UO2", true); + + LowGradeMOX = new Material.Builder(2067, gregtechId("low_grade_mox")) + .dust(3) + .color(0x62C032).iconSet(METALLIC) + .flags(DISABLE_DECOMPOSITION) + .components(Plutonium239Dioxide, 1, Uraninite, 20) + .fissionFuelProperties(2000, 1500, 50., 10., 1500., 10.) + .build() + .setFormula("(U,Pu)O2", true); + + HighGradeMOX = new Material.Builder(2068, gregtechId("high_grade_mox")) + .dust(3) + .color(0x7EA432).iconSet(METALLIC) + .flags(DISABLE_DECOMPOSITION) + .components(Plutonium239Dioxide, 1, Uraninite, 5) + .fissionFuelProperties(2000, 1500, 10., 10., 2000., 10.) + .build() + .setFormula("(U,Pu)O2", true); } } diff --git a/src/main/java/gregtech/api/unification/material/materials/UnknownCompositionMaterials.java b/src/main/java/gregtech/api/unification/material/materials/UnknownCompositionMaterials.java index 2b8918b2abb..cf55a739501 100644 --- a/src/main/java/gregtech/api/unification/material/materials/UnknownCompositionMaterials.java +++ b/src/main/java/gregtech/api/unification/material/materials/UnknownCompositionMaterials.java @@ -331,7 +331,13 @@ public static void register() { .flags(FLAMMABLE) .build(); - // Free IDs 1560-1575 + Corium = new Material.Builder(1560, gregtechId("corium")) + .liquid(new FluidBuilder().temperature(2500).block().density(8.0D)) + .color(0x7A6B50) + .flags(NO_UNIFICATION, STICKY, GLOWING) + .build(); + + // Free IDs 1561-1575 LPG = new Material.Builder(1576, gregtechId("lpg")) .liquid(new FluidBuilder().customStill()) diff --git a/src/main/java/gregtech/api/unification/material/properties/CoolantProperty.java b/src/main/java/gregtech/api/unification/material/properties/CoolantProperty.java index 9c51e95217e..6329216c988 100644 --- a/src/main/java/gregtech/api/unification/material/properties/CoolantProperty.java +++ b/src/main/java/gregtech/api/unification/material/properties/CoolantProperty.java @@ -6,12 +6,22 @@ public class CoolantProperty implements IMaterialProperty { private Material hotCoolant; private Material hotHPCoolant; - private double moderatorFactor = 0.D; - private double coolingFactor = 0.D; + private double moderatorFactor; + private double coolingFactor; private double boilingPoint; private double absorption; private double pressure; + public CoolantProperty(Material hotCoolant, Material hotHPCoolant, double moderatorFactor, double coolingFactor, double boilingPoint, double absorption, double pressure) { + this.hotCoolant = hotCoolant; + this.hotHPCoolant = hotHPCoolant; + this.moderatorFactor = moderatorFactor; + this.coolingFactor = coolingFactor; + this.boilingPoint = boilingPoint; + this.absorption = absorption; + this.pressure = pressure; + } + @Override public void verifyProperty(MaterialProperties properties) { properties.ensureSet(PropertyKey.FLUID, true); diff --git a/src/main/java/gregtech/api/unification/ore/OrePrefix.java b/src/main/java/gregtech/api/unification/ore/OrePrefix.java index 64eb11cd7fa..e0269b111f5 100644 --- a/src/main/java/gregtech/api/unification/ore/OrePrefix.java +++ b/src/main/java/gregtech/api/unification/ore/OrePrefix.java @@ -317,6 +317,11 @@ public class OrePrefix { public static final OrePrefix circuit = new OrePrefix("circuit", -1, null, null, ENABLE_UNIFICATION, null); public static final OrePrefix component = new OrePrefix("component", -1, null, null, ENABLE_UNIFICATION, null); + // Nuclear stuff + public static final OrePrefix fuelRod = new OrePrefix("fuelRod", -1, null, MaterialIconType.fuelRod, 0, material -> material.hasProperty(PropertyKey.FISSION_FUEL)); + public static final OrePrefix fuelRodDepleted = new OrePrefix("fuelRodDepleted", -1, null, MaterialIconType.fuelRodDepleted, 0, material -> material.hasProperty(PropertyKey.FISSION_FUEL)); + public static final OrePrefix fuelRodHotDepleted = new OrePrefix("fuelRodHotDepleted", -1, null, MaterialIconType.fuelRodHotDepleted, 0, material -> material.hasProperty(PropertyKey.FISSION_FUEL)); + public static class Flags { public static final long ENABLE_UNIFICATION = 1; @@ -476,6 +481,10 @@ public static void init() { stick.modifyMaterialAmount(Materials.Blaze, 4); stick.modifyMaterialAmount(Materials.Bone, 5); + + fuelRodDepleted.radiationDamageFunction = (neutrons) -> neutrons/2.f; + fuelRodHotDepleted.radiationDamageFunction = (neutrons) -> neutrons/1.5f; + fuelRodHotDepleted.heatDamageFunction = (x) -> 2.0f; } private static void excludeAllGems(Material material) { @@ -518,6 +527,7 @@ private static void excludeAllGemsButNormal(Material material) { public byte maxStackSize = 64; public final List secondaryMaterials = new ArrayList<>(); public Function heatDamageFunction = null; // Negative for Frost Damage + public Function radiationDamageFunction = null; public Function> tooltipFunc; private String alternativeOreName = null; diff --git a/src/main/java/gregtech/common/items/MetaItems.java b/src/main/java/gregtech/common/items/MetaItems.java index 0e9ec1c5134..60569bb80e3 100644 --- a/src/main/java/gregtech/common/items/MetaItems.java +++ b/src/main/java/gregtech/common/items/MetaItems.java @@ -615,6 +615,9 @@ private MetaItems() {} orePrefixes.add(OrePrefix.toolHeadWrench); orePrefixes.add(OrePrefix.toolHeadBuzzSaw); orePrefixes.add(OrePrefix.toolHeadScrewdriver); + orePrefixes.add(OrePrefix.fuelRod); + orePrefixes.add(OrePrefix.fuelRodDepleted); + orePrefixes.add(OrePrefix.fuelRodHotDepleted); } public static void init() { diff --git a/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityFissionReactor.java b/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityFissionReactor.java index 23accbac84b..5e2b57cf516 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityFissionReactor.java +++ b/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityFissionReactor.java @@ -21,6 +21,7 @@ import gregtech.api.pattern.FactoryBlockPattern; import gregtech.api.unification.OreDictUnifier; import gregtech.api.unification.material.Material; +import gregtech.api.unification.material.Materials; import gregtech.api.unification.material.properties.FissionFuelProperty; import gregtech.api.unification.material.properties.PropertyKey; import gregtech.api.unification.ore.OrePrefix; @@ -45,6 +46,11 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidTank; +import net.minecraftforge.fml.relauncher.Side; + +import net.minecraftforge.fml.relauncher.SideOnly; + import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -117,6 +123,9 @@ protected void updateFormedValid() { .getCoolingFactor() * this.flowRate; coolantImport.getFluidTank().drain(this.flowRate, true); } + for (ICoolantHandler coolantExport : this.getAbilities(MultiblockAbility.EXPORT_COOLANT)) { + coolantExport.getFluidTank().fill(coolantExport.getCoolant().getProperty(PropertyKey.COOLANT).getHotHPCoolant().getFluid(this.flowRate), true); + } // Fuel handling if (this.fissionReactor.fuelDepletion == 1.) { @@ -131,17 +140,41 @@ protected void updateFormedValid() { this.updateReactorState(); if (this.fissionReactor.checkForMeltdown()) { - // TODO Meltdown consequences + this.performMeltdownEffects(); } if (this.fissionReactor.checkForExplosion()) { - // TODO Explosion consequences + this.performPrimaryExplosion(); if (this.fissionReactor.checkForSecondaryExplosion()) { - // TODO Secondary explosion consequences + this.performSecondaryExplosion(); } } + } + } + protected void performMeltdownEffects() { + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(this.getPos()); + pos = pos.move(this.getFrontFacing().getOpposite(), Math.floorDiv(diameter, 2)); + for (int i = 0; i <= this.heightBottom; i++) { + this.getWorld().setBlockState(pos.add(0, -i, 0), Materials.Corium.getFluid().getBlock().getDefaultState()); + this.getWorld().setBlockState(pos.add(1, -i, 0), Materials.Corium.getFluid().getBlock().getDefaultState()); + this.getWorld().setBlockState(pos.add(-1, -i, 0), Materials.Corium.getFluid().getBlock().getDefaultState()); + this.getWorld().setBlockState(pos.add(0, -i, 1), Materials.Corium.getFluid().getBlock().getDefaultState()); + this.getWorld().setBlockState(pos.add(0, -i, -1), Materials.Corium.getFluid().getBlock().getDefaultState()); } + this.getWorld().setBlockState(pos.add(0, 1, 0), Materials.Corium.getFluid().getBlock().getDefaultState()); + } + + protected void performPrimaryExplosion() { + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(this.getPos()); + pos = pos.move(this.getFrontFacing().getOpposite(), Math.floorDiv(diameter, 2)); + this.getWorld().createExplosion(null, pos.getX(), pos.getY() + heightTop, pos.getZ(), 4.f, true); + } + + protected void performSecondaryExplosion() { + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(this.getPos()); + pos = pos.move(this.getFrontFacing().getOpposite(), Math.floorDiv(diameter, 2)); + this.getWorld().newExplosion(null, pos.getX(), pos.getY() + heightTop + 3, pos.getZ(), 10.f, true, true); } public boolean updateStructureDimensions() { @@ -282,6 +315,7 @@ public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) { return Textures.FISSION_REACTOR_TEXTURE; } + @SideOnly(Side.CLIENT) @NotNull @Override protected ICubeRenderer getFrontOverlay() { @@ -354,6 +388,30 @@ protected void addDisplayText(List textList) { textList.add(toggleText); } + protected void lockAll() { + for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_COOLANT)) { + handler.setLock(true); + } + for (ILockableHandler handler : this.getAbilities(MultiblockAbility.EXPORT_COOLANT)) { + handler.setLock(true); + } + for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_FUEL_ROD)) { + handler.setLock(true); + } + } + + protected void unlockAll() { + for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_COOLANT)) { + handler.setLock(false); + } + for (ILockableHandler handler : this.getAbilities(MultiblockAbility.EXPORT_COOLANT)) { + handler.setLock(false); + } + for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_FUEL_ROD)) { + handler.setLock(false); + } + } + @Override protected void handleDisplayClick(String componentData, Widget.ClickData clickData) { super.handleDisplayClick(componentData, clickData); @@ -362,23 +420,13 @@ protected void handleDisplayClick(String componentData, Widget.ClickData clickDa if (this.locked) { lockAndPrepareReactor(); } else { - for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_COOLANT)) { - handler.setLock(false); - } - for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_FUEL_ROD)) { - handler.setLock(false); - } + this.unlockAll(); } } } private void lockAndPrepareReactor() { - for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_COOLANT)) { - handler.setLock(true); - } - for (ILockableHandler handler : this.getAbilities(MultiblockAbility.IMPORT_FUEL_ROD)) { - handler.setLock(true); - } + this.lockAll(); fissionReactor = new FissionReactor(this.diameter - 2); int radius = this.diameter % 2 == 0 ? (int) Math.floor(this.diameter / 2.f) : Math.round((this.diameter - 1) / 2.f); @@ -419,6 +467,7 @@ private void lockAndPrepareReactor() { } } } + fissionReactor.prepareThermalProperties(); fissionReactor.computeGeometry(); } diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCoolantExportHatch.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCoolantExportHatch.java index a8489d55fc8..512d9ae68d6 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCoolantExportHatch.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCoolantExportHatch.java @@ -1,7 +1,9 @@ package gregtech.common.metatileentities.multi.multiblockpart; import gregtech.api.capability.IControllable; +import gregtech.api.capability.ICoolantHandler; import gregtech.api.capability.impl.FilteredItemHandler; +import gregtech.api.capability.impl.LockableFluidTank; import gregtech.api.capability.impl.NotifiableFluidTank; import gregtech.api.gui.GuiTextures; import gregtech.api.gui.ModularUI; @@ -14,6 +16,8 @@ import gregtech.api.metatileentity.multiblock.IFissionReactorHatch; import gregtech.api.metatileentity.multiblock.IMultiblockAbilityPart; import gregtech.api.metatileentity.multiblock.MultiblockAbility; +import gregtech.api.unification.material.Material; +import gregtech.api.unification.material.properties.PropertyKey; import gregtech.client.renderer.texture.Textures; import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer; import net.minecraft.entity.player.EntityPlayer; @@ -31,16 +35,19 @@ import java.util.List; -public class MetaTileEntityCoolantExportHatch extends MetaTileEntityMultiblockNotifiablePart implements - IMultiblockAbilityPart, IControllable, IFissionReactorHatch { +import static gregtech.api.capability.GregtechDataCodes.LOCK_UPDATE; + +public class MetaTileEntityCoolantExportHatch extends MetaTileEntityMultiblockNotifiablePart + implements IMultiblockAbilityPart, ICoolantHandler, + IControllable, IFissionReactorHatch { private boolean workingEnabled; private boolean valid; - private final FluidTank fluidTank; + private LockableFluidTank fluidTank; + private Material coolant; public MetaTileEntityCoolantExportHatch(ResourceLocation metaTileEntityId) { super(metaTileEntityId, 4, true); - this.fluidTank = new NotifiableFluidTank(16000, this, true); this.frontFacing = EnumFacing.DOWN; } @@ -104,19 +111,49 @@ public boolean checkValidity(int depth) { return true; } + @Override + public void setLock(boolean isLocked) { + fluidTank.setLock(isLocked); + writeCustomData(LOCK_UPDATE, (packetBuffer -> packetBuffer.writeBoolean(isLocked))); + } + + @Override + public boolean isLocked() { + return fluidTank.isLocked(); + } + + @Override + public Material getCoolant() { + return this.coolant; + } + + @Override + public void setCoolant(Material material) { + if (!material.hasProperty(PropertyKey.COOLANT)) { + throw new IllegalStateException( + "Can't use material " + material.getName() + " as a coolant without a coolant property"); + } + this.coolant = material; + } + + @Override + public LockableFluidTank getFluidTank() { + return this.fluidTank; + } + @Override public void setValid(boolean valid) { this.valid = valid; } @Override - public MultiblockAbility getAbility() { + public MultiblockAbility getAbility() { return MultiblockAbility.EXPORT_COOLANT; } @Override - public void registerAbilities(List abilityList) { - abilityList.add(fluidTank); + public void registerAbilities(List abilityList) { + abilityList.add(this); } @Override diff --git a/src/main/java/gregtech/integration/forestry/ForestryModule.java b/src/main/java/gregtech/integration/forestry/ForestryModule.java index edd4080c33b..69a691938f2 100644 --- a/src/main/java/gregtech/integration/forestry/ForestryModule.java +++ b/src/main/java/gregtech/integration/forestry/ForestryModule.java @@ -315,7 +315,7 @@ public static void registerMaterials(MaterialEvent event) { createOreProperty(Materials.Osmium, Materials.Iridium); createOreProperty(Materials.Iridium, Materials.Platinum, Materials.Osmium); createOreProperty(Materials.Electrum, Materials.Gold, Materials.Silver); - createOreProperty(Materials.Uranium238, Materials.Lead, Materials.Uranium235, Materials.Thorium); + createOreProperty(Materials.Uranium, Materials.Lead, Materials.Uranium235, Materials.Thorium); createOreProperty(Materials.NaquadahEnriched, Materials.Naquadah, Materials.Naquadria); createOreProperty(Materials.Uranium235); createOreProperty(Materials.Neutronium); diff --git a/src/main/java/gregtech/integration/forestry/recipes/CombRecipes.java b/src/main/java/gregtech/integration/forestry/recipes/CombRecipes.java index 66df87dc408..33c96a223dc 100644 --- a/src/main/java/gregtech/integration/forestry/recipes/CombRecipes.java +++ b/src/main/java/gregtech/integration/forestry/recipes/CombRecipes.java @@ -248,14 +248,14 @@ public static void initGTCombs() { addProcessGT(GTCombType.ALMANDINE, new Material[] { Materials.Almandine, Materials.Pyrope, Materials.Sapphire, Materials.GreenSapphire }, Voltage.LV); - addProcessGT(GTCombType.URANIUM, new Material[] { Materials.Uranium238, Materials.Pitchblende, + addProcessGT(GTCombType.URANIUM, new Material[] { Materials.Uranium, Materials.Pitchblende, Materials.Uraninite, Materials.Uranium235 }, Voltage.EV); addProcessGT(GTCombType.PLUTONIUM, new Material[] { Materials.Plutonium239, Materials.Uranium235 }, Voltage.EV); addProcessGT(GTCombType.NAQUADAH, new Material[] { Materials.Naquadah, Materials.NaquadahEnriched, Materials.Naquadria }, Voltage.IV); addProcessGT(GTCombType.NAQUADRIA, new Material[] { Materials.Naquadria, Materials.NaquadahEnriched, Materials.Naquadah }, Voltage.LUV); - addProcessGT(GTCombType.THORIUM, new Material[] { Materials.Thorium, Materials.Uranium238, Materials.Coal }, + addProcessGT(GTCombType.THORIUM, new Material[] { Materials.Thorium, Materials.Uranium, Materials.Coal }, Voltage.EV); addProcessGT(GTCombType.LUTETIUM, new Material[] { Materials.Lutetium, Materials.Thorium }, Voltage.IV); addProcessGT(GTCombType.AMERICIUM, new Material[] { Materials.Americium, Materials.Lutetium }, Voltage.LUV); diff --git a/src/main/java/gregtech/loaders/recipe/FusionLoader.java b/src/main/java/gregtech/loaders/recipe/FusionLoader.java index f5ec3a7b861..f07b9b5c47a 100644 --- a/src/main/java/gregtech/loaders/recipe/FusionLoader.java +++ b/src/main/java/gregtech/loaders/recipe/FusionLoader.java @@ -110,7 +110,7 @@ public static void init() { RecipeMaps.FUSION_RECIPES.recipeBuilder() .fluidInputs(Materials.Gold.getFluid(16)) .fluidInputs(Materials.Aluminium.getFluid(16)) - .fluidOutputs(Materials.Uranium238.getFluid(16)) + .fluidOutputs(Materials.Uranium.getFluid(16)) .duration(128) .EUt(24576) .EUToStart(140_000_000) diff --git a/src/main/java/gregtech/loaders/recipe/MachineRecipeLoader.java b/src/main/java/gregtech/loaders/recipe/MachineRecipeLoader.java index eb820fbe624..61b30c19423 100644 --- a/src/main/java/gregtech/loaders/recipe/MachineRecipeLoader.java +++ b/src/main/java/gregtech/loaders/recipe/MachineRecipeLoader.java @@ -1214,7 +1214,7 @@ private static void registerRecyclingRecipes() { MACERATOR_RECIPES.recipeBuilder() .input(stone, GraniteRed) .output(dust, GraniteRed) - .chancedOutput(dust, Uranium238, 10, 5) + .chancedOutput(dust, Uranium, 10, 5) .buildAndRegister(); MACERATOR_RECIPES.recipeBuilder() diff --git a/src/main/java/gregtech/loaders/recipe/chemistry/GrowthMediumRecipes.java b/src/main/java/gregtech/loaders/recipe/chemistry/GrowthMediumRecipes.java index 0bd90974ed9..65663e492dd 100644 --- a/src/main/java/gregtech/loaders/recipe/chemistry/GrowthMediumRecipes.java +++ b/src/main/java/gregtech/loaders/recipe/chemistry/GrowthMediumRecipes.java @@ -48,7 +48,7 @@ public static void init() { // Enriched Bacterial Sludge BREWING_RECIPES.recipeBuilder().EUt(4).duration(128) - .input(dust, Uranium238) + .input(dust, Uranium) .fluidInputs(BacterialSludge.getFluid(1000)) .fluidOutputs(EnrichedBacterialSludge.getFluid(1000)) .cleanroom(CleanroomType.STERILE_CLEANROOM) diff --git a/src/main/java/gregtech/loaders/recipe/chemistry/MixerRecipes.java b/src/main/java/gregtech/loaders/recipe/chemistry/MixerRecipes.java index f4ae4d431af..2f823ab7158 100644 --- a/src/main/java/gregtech/loaders/recipe/chemistry/MixerRecipes.java +++ b/src/main/java/gregtech/loaders/recipe/chemistry/MixerRecipes.java @@ -527,7 +527,7 @@ public static void init() { .buildAndRegister(); MIXER_RECIPES.recipeBuilder().duration(200).EUt(VA[EV]) - .input(dust, Uranium238) + .input(dust, Uranium) .input(dust, Platinum, 3) .circuitMeta(4) .output(dust, UraniumTriplatinum, 4) @@ -554,7 +554,7 @@ public static void init() { .buildAndRegister(); MIXER_RECIPES.recipeBuilder().duration(150).EUt(VA[ZPM]) - .input(dust, Uranium238) + .input(dust, Uranium) .input(dust, Rhodium) .input(dust, Naquadah, 2) .circuitMeta(4) diff --git a/src/main/java/gregtech/loaders/recipe/chemistry/ReactorRecipes.java b/src/main/java/gregtech/loaders/recipe/chemistry/ReactorRecipes.java index 7871a518e8c..8a07b6dba0a 100644 --- a/src/main/java/gregtech/loaders/recipe/chemistry/ReactorRecipes.java +++ b/src/main/java/gregtech/loaders/recipe/chemistry/ReactorRecipes.java @@ -588,7 +588,7 @@ public static void init() { LARGE_CHEMICAL_RECIPES.recipeBuilder() .input(ingot, Plutonium239, 8) - .input(dust, Uranium238) + .input(dust, Uranium) .fluidInputs(Air.getFluid(10000)) .output(dust, Plutonium239, 8) .fluidOutputs(Radon.getFluid(1000)) diff --git a/src/main/java/gregtech/loaders/recipe/chemistry/SeparationRecipes.java b/src/main/java/gregtech/loaders/recipe/chemistry/SeparationRecipes.java index 3d51fc11124..38b7aadfe0f 100644 --- a/src/main/java/gregtech/loaders/recipe/chemistry/SeparationRecipes.java +++ b/src/main/java/gregtech/loaders/recipe/chemistry/SeparationRecipes.java @@ -175,14 +175,14 @@ public static void init() { .buildAndRegister(); CENTRIFUGE_RECIPES.recipeBuilder().duration(800).EUt(320) - .input(dust, Uranium238) + .input(dust, Uranium) .chancedOutput(dustTiny, Plutonium239, 200, 80) .chancedOutput(dustTiny, Uranium235, 2000, 350) .buildAndRegister(); CENTRIFUGE_RECIPES.recipeBuilder().duration(1600).EUt(320) .input(dust, Plutonium239) - .chancedOutput(dustTiny, Uranium238, 3000, 450) + .chancedOutput(dustTiny, Uranium, 3000, 450) .chancedOutput(dust, Plutonium241, 2000, 300) .buildAndRegister(); diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 21da0c853d8..1d3c48d8147 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -1464,6 +1464,9 @@ item.material.oreprefix.polymer.dustTiny=Tiny Pile of %s Pulp item.material.oreprefix.polymer.dustSmall=Small Pile of %s Pulp item.material.oreprefix.polymer.dust=%s Pulp item.material.oreprefix.polymer.ingot=%s Bar +item.material.oreprefix.fuelRod=%s Fuel Rod +item.material.oreprefix.fuelRodDepleted=%s Exhausted Fuel Rod +item.material.oreprefix.fuelRodHotDepleted=%s Hot Exhausted Fuel Rod # Direct Element Materials @@ -1806,7 +1809,15 @@ gregtech.material.lithium_fluoride=Lithium Fluoride gregtech.material.beryllium_fluoride=Beryllium Fluoride gregtech.material.thorium_tetrafluoride=Thorium Tetrafluoride gregtech.material.rtm_alloy=RTM Alloy - +gregtech.material.enriched_uranium_dioxide=Enriched Uranium Dioxide +gregtech.material.depleted_uranium_dioxide=Depleted Uranium Dioxide +gregtech.material.plutonium_239_dioxide=Plutonium 239 Dioxide +gregtech.material.neptunium_235=Neptunium 235 +gregtech.material.neptunium_236=Neptunium 236 +gregtech.material.neptunium_237=Neptunium 237 +gregtech.material.plutonium_240=Plutonium 240 +gregtech.material.plutonium_242=Plutonium 242 +gregtech.material.plutonium_244=Plutonium 244 # Organic Chemistry Materials gregtech.material.silicone_rubber=Silicone Rubber @@ -2085,6 +2096,10 @@ gregtech.material.clay=Clay gregtech.material.redstone=Redstone gregtech.material.thorium_flibe=FLiBeTh +gregtech.material.leu_235=LEU-235 +gregtech.material.heu_235=HEU-235 +gregtech.material.low_grade_mox=Low Grade MOX +gregtech.material.high_grade_mox=High Grade MOX # Third Degree Materials gregtech.material.electrotine=Electrotine diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod.json b/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod.json new file mode 100644 index 00000000000..bcc67cf2bae --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/dull/fuel_rod" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod_depleted.json b/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod_depleted.json new file mode 100644 index 00000000000..89eddf20fec --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod_depleted.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/dull/fuel_rod_depleted" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod_hot_depleted.json b/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod_hot_depleted.json new file mode 100644 index 00000000000..7286522b925 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/dull/fuel_rod_hot_depleted.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/dull/fuel_rod_hot_depleted" + } +} diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod.png new file mode 100644 index 00000000000..9a5a98b8060 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod_depleted.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod_depleted.png new file mode 100644 index 00000000000..d71b7ff205f Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod_depleted.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod_hot_depleted.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod_hot_depleted.png new file mode 100644 index 00000000000..1f0a666ebf3 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/fuel_rod_hot_depleted.png differ