diff --git a/src/main/java/gregtech/api/capability/impl/PrimitiveRecipeLogic.java b/src/main/java/gregtech/api/capability/impl/PrimitiveRecipeLogic.java
index d1893fa8f84..9754a26f0fe 100644
--- a/src/main/java/gregtech/api/capability/impl/PrimitiveRecipeLogic.java
+++ b/src/main/java/gregtech/api/capability/impl/PrimitiveRecipeLogic.java
@@ -1,8 +1,7 @@
package gregtech.api.capability.impl;
import gregtech.api.GTValues;
-import gregtech.api.metatileentity.multiblock.RecipeMapPrimitiveMultiblockController;
-import gregtech.api.recipes.RecipeMap;
+import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController;
import gregtech.api.recipes.logic.OCParams;
import gregtech.api.recipes.logic.OCResult;
import gregtech.api.recipes.recipeproperties.IRecipePropertyStorage;
@@ -12,10 +11,10 @@
/**
* Recipe Logic for a Multiblock that does not require power.
*/
-public class PrimitiveRecipeLogic extends AbstractRecipeLogic {
+public class PrimitiveRecipeLogic extends MultiblockRecipeLogic {
- public PrimitiveRecipeLogic(RecipeMapPrimitiveMultiblockController tileEntity, RecipeMap> recipeMap) {
- super(tileEntity, recipeMap);
+ public PrimitiveRecipeLogic(RecipeMapMultiblockController tileEntity) {
+ super(tileEntity);
}
@Override
diff --git a/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapPrimitiveMultiblockController.java b/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapPrimitiveMultiblockController.java
index da874e0bdb8..72eb8cd0e9a 100644
--- a/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapPrimitiveMultiblockController.java
+++ b/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapPrimitiveMultiblockController.java
@@ -20,13 +20,11 @@
import java.util.ArrayList;
import java.util.List;
-public abstract class RecipeMapPrimitiveMultiblockController extends MultiblockWithDisplayBase {
-
- protected PrimitiveRecipeLogic recipeMapWorkable;
+public abstract class RecipeMapPrimitiveMultiblockController extends RecipeMapMultiblockController {
public RecipeMapPrimitiveMultiblockController(ResourceLocation metaTileEntityId, RecipeMap> recipeMap) {
- super(metaTileEntityId);
- this.recipeMapWorkable = new PrimitiveRecipeLogic(this, recipeMap);
+ super(metaTileEntityId, recipeMap);
+ this.recipeMapWorkable = new PrimitiveRecipeLogic(this);
initializeAbilities();
}
diff --git a/src/main/java/gregtech/api/recipes/RecipeMaps.java b/src/main/java/gregtech/api/recipes/RecipeMaps.java
index b0766a74c9a..2add8cd5c76 100644
--- a/src/main/java/gregtech/api/recipes/RecipeMaps.java
+++ b/src/main/java/gregtech/api/recipes/RecipeMaps.java
@@ -1473,6 +1473,71 @@ public final class RecipeMaps {
.sound(GTSoundEvents.MOTOR)
.build();
+ /**
+ * Example:
+ *
+ *
+ * RecipeMap.HEAT_EXCHANGER_RECIPES.recipeBuilder()
+ * .circuitMeta(1)
+ * .fluidInputs(DistilledWater.getFluid(1000), HotHighPressureSteam.getFluid(100))
+ * .fluidOutputs(Steam.getFluid(96000), DistilledWater.getFluid(100))
+ * .duration(1)
+ * .buildAndRegister();
+ *
+ */
+ @ZenProperty
+ public static final RecipeMap HEAT_EXCHANGER_RECIPES = new RecipeMapBuilder<>(
+ "heat_exchanger",
+ new PrimitiveRecipeBuilder())
+ .itemInputs(1)
+ .fluidInputs(2)
+ .fluidOutputs(2)
+ .progressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, MoveType.HORIZONTAL)
+ .sound(GTSoundEvents.COOLING)
+ .build();
+
+ /**
+ * Example:
+ *
+ *
+ * RecipeMap.SPENT_FUEL_POOL_RECIPES.recipeBuilder()
+ * .input(OrePrefix.fuelRodHotDepleted, Materials.LEU235)
+ * .output(OrePrefix.fuelRodDepleted, Materials.LEU235)
+ * .duration(1000)
+ * .buildAndRegister();
+ *
+ */
+ @ZenProperty
+ public static final RecipeMap SPENT_FUEL_POOL_RECIPES = new RecipeMapBuilder<>(
+ "spent_fuel_pool",
+ new SimpleRecipeBuilder())
+ .itemInputs(1)
+ .itemOutputs(1)
+ .fluidInputs(1)
+ .fluidOutputs(1)
+ .progressBar(GuiTextures.PROGRESS_BAR_BATH, MoveType.HORIZONTAL)
+ .build();
+
+ /**
+ * Example:
+ *
+ *
+ * GAS_CENTRIFUGE_RECIPES.recipeBuilder().duration(800).EUt(VA[HV])
+ * .fluidInputs(UraniumHexafluoride.getFluid(1000))
+ * .fluidOutputs(LowEnrichedUraniumHexafluoride.getFluid(100))
+ * .fluidOutputs(DepletedUraniumHexafluoride.getFluid(900))
+ * .buildAndRegister();
+ *
+ */
+ @ZenProperty
+ public static final RecipeMap GAS_CENTRIFUGE_RECIPES = new RecipeMapBuilder<>("gas_centrifuge",
+ new SimpleRecipeBuilder())
+ .fluidInputs(1)
+ .fluidOutputs(2)
+ .progressBar(GuiTextures.PROGRESS_BAR_MIXER, MoveType.CIRCULAR)
+ .sound(GTSoundEvents.CENTRIFUGE)
+ .build();
+
//////////////////////////////////////
// Fuel Recipe Maps //
//////////////////////////////////////
diff --git a/src/main/java/gregtech/client/renderer/texture/Textures.java b/src/main/java/gregtech/client/renderer/texture/Textures.java
index 8615691ba87..825a070187f 100644
--- a/src/main/java/gregtech/client/renderer/texture/Textures.java
+++ b/src/main/java/gregtech/client/renderer/texture/Textures.java
@@ -196,6 +196,12 @@ public class Textures {
"multiblock/network_switch");
public static final OrientedOverlayRenderer POWER_SUBSTATION_OVERLAY = new OrientedOverlayRenderer(
"multiblock/power_substation");
+ public static final OrientedOverlayRenderer SPENT_FUEL_POOL_OVERLAY = new OrientedOverlayRenderer(
+ "multiblock/spent_fuel_pool");
+ public static final OrientedOverlayRenderer HEAT_EXCHANGER_OVERLAY = new OrientedOverlayRenderer(
+ "multiblock/heat_exchanger");
+ public static final OrientedOverlayRenderer GAS_CENTRIFUGE_OVERLAY = new OrientedOverlayRenderer(
+ "multiblock/gas_centrifuge");
public static final OrientedOverlayRenderer ALLOY_SMELTER_OVERLAY = new OrientedOverlayRenderer(
"machines/alloy_smelter");
diff --git a/src/main/java/gregtech/common/CommonProxy.java b/src/main/java/gregtech/common/CommonProxy.java
index 6817aaa7ce5..e2acad2dee3 100644
--- a/src/main/java/gregtech/common/CommonProxy.java
+++ b/src/main/java/gregtech/common/CommonProxy.java
@@ -136,6 +136,7 @@ public static void registerBlocks(RegistryEvent.Register event) {
registry.register(CLEANROOM_CASING);
registry.register(COMPUTER_CASING);
registry.register(BATTERY_BLOCK);
+ registry.register(NUCLEAR_CASING);
registry.register(FOAM);
registry.register(REINFORCED_FOAM);
registry.register(PETRIFIED_FOAM);
@@ -174,6 +175,7 @@ public static void registerBlocks(RegistryEvent.Register event) {
registry.register(METAL_SHEET);
registry.register(LARGE_METAL_SHEET);
registry.register(STUDS);
+ registry.register(PANELLING);
for (BlockLamp block : LAMPS.values()) registry.register(block);
for (BlockLamp block : BORDERLESS_LAMPS.values()) registry.register(block);
@@ -278,6 +280,8 @@ public static void registerItems(RegistryEvent.Register- event) {
registry.register(createItemBlock(block, LampItemBlock::new));
}
registry.register(createItemBlock(ASPHALT, VariantItemBlock::new));
+ registry.register(createItemBlock(NUCLEAR_CASING, VariantItemBlock::new));
+ registry.register(createItemBlock(PANELLING, VariantItemBlock::new));
for (StoneVariantBlock block : STONE_BLOCKS.values()) {
registry.register(createItemBlock(block, VariantItemBlock::new));
}
diff --git a/src/main/java/gregtech/common/blocks/BlockNuclearCasing.java b/src/main/java/gregtech/common/blocks/BlockNuclearCasing.java
new file mode 100644
index 00000000000..7bcfb689cf5
--- /dev/null
+++ b/src/main/java/gregtech/common/blocks/BlockNuclearCasing.java
@@ -0,0 +1,54 @@
+package gregtech.common.blocks;
+
+import gregtech.api.block.IStateHarvestLevel;
+import gregtech.api.block.VariantActiveBlock;
+
+import net.minecraft.block.SoundType;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.util.IStringSerializable;
+
+import org.jetbrains.annotations.NotNull;
+
+public class BlockNuclearCasing extends VariantActiveBlock {
+
+ public BlockNuclearCasing() {
+ super(Material.IRON);
+ setTranslationKey("nuclear_casing");
+ setHardness(5.0f);
+ setResistance(10.0f);
+ setSoundType(SoundType.METAL);
+ setDefaultState(getState(NuclearCasingType.SPENT_FUEL_CASING));
+ }
+
+ @Override
+ public boolean isOpaqueCube(IBlockState state) {
+ return state != getState(NuclearCasingType.GAS_CENTRIFUGE_COLUMN);
+ }
+
+ public enum NuclearCasingType implements IStringSerializable, IStateHarvestLevel {
+
+ SPENT_FUEL_CASING("spent_fuel_casing", 2),
+ GAS_CENTRIFUGE_HEATER("gas_centrifuge_heater", 1),
+ GAS_CENTRIFUGE_COLUMN("gas_centrifuge_column", 2);
+
+ NuclearCasingType(String name, int harvestLevel) {
+ this.name = name;
+ this.harvestLevel = harvestLevel;
+ }
+
+ private final String name;
+ private final int harvestLevel;
+
+ @NotNull
+ @Override
+ public String getName() {
+ return this.name;
+ }
+
+ @Override
+ public int getHarvestLevel(IBlockState state) {
+ return this.harvestLevel;
+ }
+ }
+}
diff --git a/src/main/java/gregtech/common/blocks/BlockPanelling.java b/src/main/java/gregtech/common/blocks/BlockPanelling.java
new file mode 100644
index 00000000000..2a732ede1e5
--- /dev/null
+++ b/src/main/java/gregtech/common/blocks/BlockPanelling.java
@@ -0,0 +1,50 @@
+package gregtech.common.blocks;
+
+import gregtech.api.block.VariantBlock;
+
+import net.minecraft.block.SoundType;
+import net.minecraft.util.IStringSerializable;
+
+public class BlockPanelling extends VariantBlock {
+
+ public BlockPanelling() {
+ super(net.minecraft.block.material.Material.IRON);
+ setTranslationKey("panelling");
+ setHardness(2.0f);
+ setResistance(5.0f);
+ setSoundType(SoundType.METAL);
+ setHarvestLevel("wrench", 2);
+ setDefaultState(getState(PanellingType.WHITE));
+ }
+
+ public enum PanellingType implements IStringSerializable {
+
+ WHITE("white"),
+ ORANGE("orange"),
+ MAGENTA("magenta"),
+ LIGHT_BLUE("light_blue"),
+ YELLOW("yellow"),
+ LIME("lime"),
+ PINK("pink"),
+ GRAY("gray"),
+ LIGHT_GRAY("light_gray"),
+ CYAN("cyan"),
+ PURPLE("purple"),
+ BLUE("blue"),
+ BROWN("brown"),
+ GREEN("green"),
+ RED("red"),
+ BLACK("black");
+
+ private final String name;
+
+ PanellingType(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String getName() {
+ return this.name;
+ }
+ }
+}
diff --git a/src/main/java/gregtech/common/blocks/MetaBlocks.java b/src/main/java/gregtech/common/blocks/MetaBlocks.java
index ed353717832..8eacd89ef9d 100644
--- a/src/main/java/gregtech/common/blocks/MetaBlocks.java
+++ b/src/main/java/gregtech/common/blocks/MetaBlocks.java
@@ -138,6 +138,7 @@ private MetaBlocks() {}
public static BlockCleanroomCasing CLEANROOM_CASING;
public static BlockComputerCasing COMPUTER_CASING;
public static BlockBatteryPart BATTERY_BLOCK;
+ public static BlockNuclearCasing NUCLEAR_CASING;
public static final EnumMap LAMPS = new EnumMap<>(EnumDyeColor.class);
public static final EnumMap BORDERLESS_LAMPS = new EnumMap<>(EnumDyeColor.class);
@@ -174,6 +175,7 @@ private MetaBlocks() {}
public static BlockColored METAL_SHEET;
public static BlockColored LARGE_METAL_SHEET;
public static BlockColored STUDS;
+ public static BlockPanelling PANELLING;
public static final Map COMPRESSED = new Object2ObjectOpenHashMap<>();
public static final Map FRAMES = new Object2ObjectOpenHashMap<>();
@@ -263,6 +265,8 @@ public static void init() {
COMPUTER_CASING.setRegistryName("computer_casing");
BATTERY_BLOCK = new BlockBatteryPart();
BATTERY_BLOCK.setRegistryName("battery_block");
+ NUCLEAR_CASING = new BlockNuclearCasing();
+ NUCLEAR_CASING.setRegistryName("nuclear_casing");
for (EnumDyeColor color : EnumDyeColor.values()) {
BlockLamp block = new BlockLamp(color);
@@ -336,6 +340,8 @@ public static void init() {
STUDS = new BlockColored(net.minecraft.block.material.Material.CARPET, "studs", 1.5f, 2.5f, SoundType.CLOTH,
EnumDyeColor.BLACK);
STUDS.setRegistryName("studs");
+ PANELLING = new BlockPanelling();
+ PANELLING.setRegistryName("panelling");
createGeneratedBlock(m -> m.hasProperty(PropertyKey.DUST) && m.hasFlag(GENERATE_FRAME),
MetaBlocks::createFrameBlock);
@@ -469,6 +475,7 @@ public static void registerItemModels() {
registerItemModel(COMPUTER_CASING);
registerItemModel(BATTERY_BLOCK);
registerItemModel(ASPHALT);
+ registerItemModel(PANELLING);
for (StoneVariantBlock block : STONE_BLOCKS.values())
registerItemModel(block);
registerItemModelWithOverride(RUBBER_LOG, ImmutableMap.of(BlockLog.LOG_AXIS, EnumAxis.Y));
@@ -507,6 +514,7 @@ public static void registerItemModels() {
FUSION_CASING.onModelRegister();
MULTIBLOCK_CASING.onModelRegister();
TRANSPARENT_CASING.onModelRegister();
+ NUCLEAR_CASING.onModelRegister();
for (BlockLamp lamp : LAMPS.values()) lamp.onModelRegister();
for (BlockLamp lamp : BORDERLESS_LAMPS.values()) lamp.onModelRegister();
diff --git a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java
index e2e2624f8cd..0fbe659d82b 100644
--- a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java
+++ b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java
@@ -57,6 +57,7 @@
import gregtech.common.metatileentities.multi.electric.MetaTileEntityElectricBlastFurnace;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityFluidDrill;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityFusionReactor;
+import gregtech.common.metatileentities.multi.electric.MetaTileEntityGasCentrifuge;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityHPCA;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityImplosionCompressor;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityLargeChemicalReactor;
@@ -67,6 +68,7 @@
import gregtech.common.metatileentities.multi.electric.MetaTileEntityProcessingArray;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityPyrolyseOven;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityResearchStation;
+import gregtech.common.metatileentities.multi.electric.MetaTileEntitySpentFuelPool;
import gregtech.common.metatileentities.multi.electric.MetaTileEntityVacuumFreezer;
import gregtech.common.metatileentities.multi.electric.centralmonitor.MetaTileEntityCentralMonitor;
import gregtech.common.metatileentities.multi.electric.centralmonitor.MetaTileEntityMonitorScreen;
@@ -332,6 +334,9 @@ public class MetaTileEntities {
public static MetaTileEntityNetworkSwitch NETWORK_SWITCH;
public static MetaTileEntityPowerSubstation POWER_SUBSTATION;
public static MetaTileEntityActiveTransformer ACTIVE_TRANSFORMER;
+ public static MetaTileEntityHeatExchanger HEAT_EXCHANGER;
+ public static MetaTileEntitySpentFuelPool SPENT_FUEL_POOL;
+ public static MetaTileEntityGasCentrifuge GAS_CENTRIFUGE;
// STORAGE SECTION
public static MetaTileEntityTankValve WOODEN_TANK_VALVE;
@@ -774,6 +779,10 @@ public static void init() {
ACTIVE_TRANSFORMER = registerMetaTileEntity(1042,
new MetaTileEntityActiveTransformer(gregtechId("active_transformer")));
+ SPENT_FUEL_POOL = registerMetaTileEntity(1044, new MetaTileEntitySpentFuelPool(gregtechId("spent_fuel_pool")));
+ HEAT_EXCHANGER = registerMetaTileEntity(1045, new MetaTileEntityHeatExchanger(gregtechId("heat_exchanger")));
+ GAS_CENTRIFUGE = registerMetaTileEntity(1046, new MetaTileEntityGasCentrifuge(gregtechId("gas_centrifuge")));
+
// MISC MTE's START: IDs 1150-2000
// Import/Export Buses/Hatches, IDs 1150-1209
diff --git a/src/main/java/gregtech/common/metatileentities/MetaTileEntityHeatExchanger.java b/src/main/java/gregtech/common/metatileentities/MetaTileEntityHeatExchanger.java
new file mode 100644
index 00000000000..c6054ac252a
--- /dev/null
+++ b/src/main/java/gregtech/common/metatileentities/MetaTileEntityHeatExchanger.java
@@ -0,0 +1,62 @@
+package gregtech.common.metatileentities;
+
+import gregtech.api.capability.impl.PrimitiveRecipeLogic;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
+import gregtech.api.metatileentity.multiblock.IMultiblockPart;
+import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController;
+import gregtech.api.pattern.BlockPattern;
+import gregtech.api.pattern.FactoryBlockPattern;
+import gregtech.api.recipes.RecipeMaps;
+import gregtech.api.unification.material.Materials;
+import gregtech.client.renderer.ICubeRenderer;
+import gregtech.client.renderer.texture.Textures;
+import gregtech.common.blocks.BlockBoilerCasing.BoilerCasingType;
+import gregtech.common.blocks.BlockMetalCasing.MetalCasingType;
+import gregtech.common.blocks.MetaBlocks;
+
+import net.minecraft.util.ResourceLocation;
+
+import org.jetbrains.annotations.NotNull;
+
+public class MetaTileEntityHeatExchanger extends RecipeMapMultiblockController {
+
+ public MetaTileEntityHeatExchanger(ResourceLocation metaTileEntityId) {
+ super(metaTileEntityId, RecipeMaps.HEAT_EXCHANGER_RECIPES);
+ this.recipeMapWorkable = new PrimitiveRecipeLogic(this);
+ }
+
+ @Override
+ public MetaTileEntity createMetaTileEntity(IGregTechTileEntity iGregTechTileEntity) {
+ return new MetaTileEntityHeatExchanger(metaTileEntityId);
+ }
+
+ @Override
+ protected @NotNull BlockPattern createStructurePattern() {
+ return FactoryBlockPattern.start()
+ .aisle("CCC", "BCB", "ACA")
+ .aisle("CCC", "CDC", "ACA").setRepeatable(7)
+ .aisle("CCC", "BSB", "AEA")
+ .where('S', selfPredicate())
+ .where('A', frames(Materials.Steel))
+ .where('B', autoAbilities(false, false, false, false, false, true, false).setMinGlobalLimited(2)
+ .or(autoAbilities(false, false, false, false, true, false, false).setMinGlobalLimited(2)))
+ .where('C', states(MetaBlocks.METAL_CASING.getState(MetalCasingType.STEEL_SOLID))
+ .or(autoAbilities(false, true, false, false, false, false, false)))
+ .where('D', states(MetaBlocks.BOILER_CASING.getState(BoilerCasingType.STEEL_PIPE)))
+ .where('E', states(MetaBlocks.METAL_CASING.getState(MetalCasingType.STEEL_SOLID))
+ .or(autoAbilities(false, false, true, false, false, false, false)))
+ .build();
+ }
+
+ @Override
+ public ICubeRenderer getBaseTexture(IMultiblockPart iMultiblockPart) {
+ return Textures.SOLID_STEEL_CASING;
+ }
+
+ @NotNull
+ @Override
+ protected ICubeRenderer getFrontOverlay() {
+ return Textures.HEAT_EXCHANGER_OVERLAY;
+ }
+}
diff --git a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityGasCentrifuge.java b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityGasCentrifuge.java
new file mode 100644
index 00000000000..f14d9cb0a84
--- /dev/null
+++ b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityGasCentrifuge.java
@@ -0,0 +1,96 @@
+package gregtech.common.metatileentities.multi.electric;
+
+import gregtech.api.capability.impl.MultiblockRecipeLogic;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
+import gregtech.api.metatileentity.multiblock.IMultiblockPart;
+import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController;
+import gregtech.api.pattern.BlockPattern;
+import gregtech.api.pattern.FactoryBlockPattern;
+import gregtech.api.pattern.PatternMatchContext;
+import gregtech.api.recipes.RecipeMaps;
+import gregtech.client.renderer.ICubeRenderer;
+import gregtech.client.renderer.texture.Textures;
+import gregtech.common.blocks.BlockBoilerCasing;
+import gregtech.common.blocks.BlockNuclearCasing;
+import gregtech.common.blocks.MetaBlocks;
+
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static gregtech.api.util.RelativeDirection.*;
+
+public class MetaTileEntityGasCentrifuge extends RecipeMapMultiblockController {
+
+ public MetaTileEntityGasCentrifuge(ResourceLocation metaTileEntityId) {
+ super(metaTileEntityId, RecipeMaps.GAS_CENTRIFUGE_RECIPES);
+ this.recipeMapWorkable = new MultiblockRecipeLogic(this);
+ }
+
+ @NotNull
+ @Override
+ protected BlockPattern createStructurePattern() {
+ return FactoryBlockPattern.start(FRONT, UP, RIGHT)
+ .aisle("SI", "HH", "CC", "CC", "CC", "CC", "CC")
+ .aisle("EE", "HH", "CC", "CC", "CC", "CC", "CC").setRepeatable(1, 14)
+ .aisle("OO", "HH", "CC", "CC", "CC", "CC", "CC")
+ .where('S', selfPredicate())
+ .where('P', states(getPipeState()))
+ .where('H', states(getHeaterState()))
+ .where('C', states(getCentrifugeState()))
+ .where('I', states(getPipeState()).or(autoAbilities(false, false, false, false, true, false, false)))
+ .where('E', states(getPipeState()).or(autoAbilities(true, true, false, false, false, false, false)))
+ .where('O', states(getPipeState()).or(autoAbilities(false, false, false, false, false, true, false)))
+ .build();
+ }
+
+ @Override
+ protected void formStructure(PatternMatchContext context) {
+ super.formStructure(context);
+ if (structurePattern != null) {
+ this.recipeMapWorkable.setParallelLimit(structurePattern.formedRepetitionCount[0]);
+ }
+ }
+
+ public void addInformation(ItemStack stack, @Nullable World player, List tooltip, boolean advanced) {
+ super.addInformation(stack, player, tooltip, advanced);
+ tooltip.add(I18n.format("gregtech.universal.tooltip.parallel",
+ I18n.format("gregtech.gas_centrifuge.tooltip.parallel")));
+ }
+
+ @Override
+ public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) {
+ return Textures.INERT_PTFE_CASING;
+ }
+
+ @Override
+ public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
+ return new MetaTileEntityGasCentrifuge(metaTileEntityId);
+ }
+
+ private IBlockState getPipeState() {
+ return MetaBlocks.BOILER_CASING.getState(BlockBoilerCasing.BoilerCasingType.POLYTETRAFLUOROETHYLENE_PIPE);
+ }
+
+ private IBlockState getHeaterState() {
+ return MetaBlocks.NUCLEAR_CASING.getState(
+ BlockNuclearCasing.NuclearCasingType.GAS_CENTRIFUGE_HEATER);
+ }
+
+ private IBlockState getCentrifugeState() {
+ return MetaBlocks.NUCLEAR_CASING
+ .getState(BlockNuclearCasing.NuclearCasingType.GAS_CENTRIFUGE_COLUMN);
+ }
+
+ protected ICubeRenderer getFrontOverlay() {
+ return Textures.GAS_CENTRIFUGE_OVERLAY;
+ }
+}
diff --git a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntitySpentFuelPool.java b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntitySpentFuelPool.java
new file mode 100644
index 00000000000..1103e35b3e7
--- /dev/null
+++ b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntitySpentFuelPool.java
@@ -0,0 +1,100 @@
+package gregtech.common.metatileentities.multi.electric;
+
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
+import gregtech.api.metatileentity.multiblock.IMultiblockPart;
+import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController;
+import gregtech.api.pattern.BlockPattern;
+import gregtech.api.pattern.FactoryBlockPattern;
+import gregtech.api.pattern.PatternMatchContext;
+import gregtech.api.recipes.RecipeMaps;
+import gregtech.client.renderer.ICubeRenderer;
+import gregtech.client.renderer.texture.Textures;
+import gregtech.common.blocks.BlockMetalCasing;
+import gregtech.common.blocks.BlockNuclearCasing;
+import gregtech.common.blocks.MetaBlocks;
+
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static gregtech.api.util.RelativeDirection.*;
+
+public class MetaTileEntitySpentFuelPool extends RecipeMapMultiblockController {
+
+ public MetaTileEntitySpentFuelPool(ResourceLocation metaTileEntityId) {
+ super(metaTileEntityId, RecipeMaps.SPENT_FUEL_POOL_RECIPES);
+ }
+
+ @Override
+ public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
+ return new MetaTileEntitySpentFuelPool(metaTileEntityId);
+ }
+
+ @Override
+ public boolean hasMaintenanceMechanics() {
+ return false;
+ }
+
+ @NotNull
+ @Override
+ protected BlockPattern createStructurePattern() {
+ return FactoryBlockPattern.start(FRONT, UP, RIGHT)
+ // spotless:off
+ .aisle("CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "TTTTTTTTTT")
+ .aisle("CCCCCCCCCC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CUUUUUUUUC", "S........T")
+ .aisle("CCCCCCCCCC", "CWRRRRRRWC", "CWRRRRRRWC", "CWRRRRRRWC", "CWRRRRRRWC", "CWRRRRRRWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CUUUUUUUUC", "T........T")
+ .setRepeatable(1, 10)
+ .aisle("CCCCCCCCCC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CWWWWWWWWC", "CUUUUUUUUC", "T........T")
+ .aisle("CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "CCCCCCCCCC", "TTTTTTTTTT")
+ //spotless:on
+ .where('S', selfPredicate())
+ .where('.', any())
+ .where('C', blocks(MetaBlocks.PANELLING))
+ .where('W', blocks(Blocks.WATER).or(blocks(Blocks.FLOWING_WATER)))
+ .where('U', blocks(Blocks.WATER))
+ .where('R', states(getRodState()))
+ .where('T',
+ states(getMetalCasingState()).or(autoAbilities(true, false, true, true, false, true, false)))
+ .build();
+ }
+
+ @Override
+ protected void formStructure(PatternMatchContext context) {
+ super.formStructure(context);
+ this.recipeMapWorkable.setParallelLimit(structurePattern.formedRepetitionCount[0] * 32);
+ }
+
+ @Override
+ public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) {
+ return Textures.CLEAN_STAINLESS_STEEL_CASING;
+ }
+
+ @NotNull
+ @Override
+ protected ICubeRenderer getFrontOverlay() {
+ return Textures.SPENT_FUEL_POOL_OVERLAY;
+ }
+
+ private IBlockState getRodState() {
+ return MetaBlocks.NUCLEAR_CASING.getState(BlockNuclearCasing.NuclearCasingType.SPENT_FUEL_CASING);
+ }
+
+ private IBlockState getMetalCasingState() {
+ return MetaBlocks.METAL_CASING.getState(BlockMetalCasing.MetalCasingType.STAINLESS_CLEAN);
+ }
+
+ public void addInformation(ItemStack stack, @Nullable World player, List tooltip, boolean advanced) {
+ super.addInformation(stack, player, tooltip, advanced);
+ tooltip.add(I18n.format("gregtech.universal.tooltip.parallel",
+ I18n.format("gregtech.spent_fuel_pool.tooltip.parallel")));
+ }
+}
diff --git a/src/main/resources/assets/gregtech/blockstates/fission_casing.json b/src/main/resources/assets/gregtech/blockstates/fission_casing.json
new file mode 100644
index 00000000000..13f608d2f10
--- /dev/null
+++ b/src/main/resources/assets/gregtech/blockstates/fission_casing.json
@@ -0,0 +1,41 @@
+{
+ "forge_marker" : 1,
+ "defaults": {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/casings/solid/machine_casing_solid_steel"
+ }
+ },
+ "variants" : {
+ "variant=reactor_vessel" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/casings/fission/reactor_vessel"
+ }
+ },
+ "variant=fuel_channel" : {
+ "model" : "minecraft:cube_bottom_top",
+ "textures" : {
+ "top" : "gregtech:blocks/casings/fission/fuel_channel_top",
+ "bottom" : "gregtech:blocks/casings/fission/fuel_channel_top",
+ "side" : "gregtech:blocks/casings/fission/fuel_channel_side"
+ }
+ },
+ "variant=control_rod_channel" : {
+ "model" : "minecraft:cube_bottom_top",
+ "textures" : {
+ "top" : "gregtech:blocks/casings/fission/control_rod_channel_top",
+ "bottom" : "gregtech:blocks/casings/fission/control_rod_channel_top",
+ "side" : "gregtech:blocks/casings/fission/fuel_channel_side"
+ }
+ },
+ "variant=coolant_channel" : {
+ "model" : "minecraft:cube_bottom_top",
+ "textures" : {
+ "top" : "gregtech:blocks/casings/fission/coolant_channel_top",
+ "bottom" : "gregtech:blocks/casings/fission/coolant_channel_top",
+ "side" : "gregtech:blocks/casings/fission/fuel_channel_side"
+ }
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/blockstates/nuclear_casing.json b/src/main/resources/assets/gregtech/blockstates/nuclear_casing.json
new file mode 100644
index 00000000000..d5ac53cd7e8
--- /dev/null
+++ b/src/main/resources/assets/gregtech/blockstates/nuclear_casing.json
@@ -0,0 +1,57 @@
+{
+ "forge_marker" : 1,
+ "variants" : {
+ "active=false,variant=spent_fuel_casing" : {
+ "model": "minecraft:cube_column",
+ "textures": {
+ "end": "gregtech:blocks/casings/nuclear/spent_fuel_casing_empty_top",
+ "side": "gregtech:blocks/casings/nuclear/spent_fuel_casing_empty_side"
+ }
+ },
+ "active=true,variant=spent_fuel_casing" : {
+ "model" : "gregtech:cube_2_layer_bottom_top",
+ "textures" : {
+ "bot_side" : "gregtech:blocks/casings/nuclear/spent_fuel_casing_side",
+ "bot_bottom" : "gregtech:blocks/casings/nuclear/spent_fuel_casing_top",
+ "bot_top" : "gregtech:blocks/casings/nuclear/spent_fuel_casing_top",
+ "top_side" : "gregtech:blocks/casings/nuclear/spent_fuel_casing_side_bloom",
+ "top_bottom" : "gregtech:blocks/casings/nuclear/spent_fuel_casing_top_bloom",
+ "top_top" : "gregtech:blocks/casings/nuclear/spent_fuel_casing_top_bloom"
+ }
+ },
+ "active=false,variant=gas_centrifuge_heater" : {
+ "model" : "minecraft:cube_column",
+ "textures" : {
+ "end" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_top",
+ "side" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_side"
+ }
+ },
+ "active=true,variant=gas_centrifuge_heater" : {
+ "model" : "gregtech:cube_2_layer_bottom_top",
+ "textures" : {
+ "bot_side" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_side",
+ "bot_bottom" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_top",
+ "bot_top" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_top",
+ "top_side" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_side_bloom",
+ "top_bottom" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_top_bloom",
+ "top_top" : "gregtech:blocks/casings/nuclear/gas_centrifuge_heater_top_bloom"
+ }
+ },
+ "active=false,variant=gas_centrifuge_column" : {
+ "model" : "gregtech:gas_centrifuge",
+ "textures" : {
+ "0" : "gregtech:blocks/casings/nuclear/gas_centrifuge_side",
+ "1" : "gregtech:blocks/casings/nuclear/gas_centrifuge_end",
+ "particle" : "gregtech:blocks/casings/nuclear/gas_centrifuge_side"
+ }
+ },
+ "active=true,variant=gas_centrifuge_column" : {
+ "model" : "gregtech:gas_centrifuge",
+ "textures" : {
+ "0" : "gregtech:blocks/casings/nuclear/gas_centrifuge_side",
+ "1" : "gregtech:blocks/casings/nuclear/gas_centrifuge_end",
+ "particle" : "gregtech:blocks/casings/nuclear/gas_centrifuge_side"
+ }
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/blockstates/panelling.json b/src/main/resources/assets/gregtech/blockstates/panelling.json
new file mode 100644
index 00000000000..e9e2170f7d7
--- /dev/null
+++ b/src/main/resources/assets/gregtech/blockstates/panelling.json
@@ -0,0 +1,109 @@
+{
+ "forge_marker" : 1,
+ "defaults": {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_white"
+ }
+ },
+ "variants" : {
+ "variant" : {
+ "white" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_white"
+ }
+ },
+ "orange" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_orange"
+ }
+ },
+ "magenta" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_magenta"
+ }
+ },
+ "light_blue" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_light_blue"
+ }
+ },
+ "yellow" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_yellow"
+ }
+ },
+ "lime" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_lime"
+ }
+ },
+ "pink" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_pink"
+ }
+ },
+ "gray" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_gray"
+ }
+ },
+ "light_gray" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_light_gray"
+ }
+ },
+ "cyan" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_cyan"
+ }
+ },
+ "purple" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_purple"
+ }
+ },
+ "blue" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_blue"
+ }
+ },
+ "brown" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_brown"
+ }
+ },
+ "green" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_green"
+ }
+ },
+ "red" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_red"
+ }
+ },
+ "black" : {
+ "model" : "minecraft:cube_all",
+ "textures" : {
+ "all" : "gregtech:blocks/panelling/panelling_black"
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang
index 55d74be23f2..23da2608229 100644
--- a/src/main/resources/assets/gregtech/lang/en_us.lang
+++ b/src/main/resources/assets/gregtech/lang/en_us.lang
@@ -150,6 +150,10 @@ gregtech.multiblock.primitive_water_pump.extra1=Biome Coefficient:/n Ocean, Riv
gregtech.multiblock.primitive_water_pump.extra2=Hatch Multipliers:/n Pump Hatch: 1x/n ULV Output Hatch: 2x/n LV Output Hatch: 4x/n/nWhile raining in the Pump's Biome, the total water production will be increased by 50%%.
gregtech.multiblock.processing_array.description=The Processing Array combines up to 16 single block machine(s) in a single multiblock, effectively easing automation.
gregtech.multiblock.advanced_processing_array.description=The Processing Array combines up to 64 single block machine(s) in a single multiblock, effectively easing automation.
+gregtech.multiblock.fission_reactor.description=Fission Reactors use fuel rods placed together to create a sustained chain of fission reactions. These reactions generate heat (power) that may be soaked up by coolants, which can then be used inside turbines. For example, using distilled water as a coolant, each channel soaks up about 2 EU/t of heat per degree Kelvin and block of internal reactor depth. The reactor can take on a variety of shapes. Its cross sections can be seen in JEI, and the reactor may extend 7 blocks up and down from the controller. Reactors can import and export fuel rods/coolants through special pairs of hatches on the top and bottom layers, respectively. Control rod hatches may also be placed on the top layer, and they give the user more control over the reactor. Inserting them more decreases the neutron multiplication rate "effective K" (shown as k_eff), a factor by which the power is continually multiplied by until it reaches the approximate max power. If k_eff is over 1, the reactor's power will eventually increase; if it's below 1, it will eventually decrease; and if it's around 1, it will stay stable. In fact, the reactor automatically shifts this over time, attempting to reach a stable equilibrium. This may be overridden manually, which you may want to do if the k_eff is over 1.05 to avoid it spiralling out of control and melting down. K_eff is also affected by neutron poisons inside the reactor, which will increase in concentration over time as the reactor runs (and still remain in a fairly high concentration for a while after). The rate at which k_eff "acts" is dependent on the mean generation time, which is how long it takes for the next generation of neutrons to be produced. This depends on the fuel rod (and can be seen in their tooltips), and it is mostly affected by delayed neutrons produced from decaying fission products. The power may then be modeled using an exponential function with a time constant of the mean generation time divided by (k_eff - 1). Control rods, fuel hatches, and coolant hatches all require special tubing beneath them to form correctly; check their tooltips to see which blocks to use. Once a reactor's hatches are filled, the reactor can be locked to begin operation, meaning that the types of items/fluids in the hatches can not be changed while the reactor operates. The placement of the fuel rods and coolant channels within the reactor is quite important. Neutrons produced by decaying atoms in the fuel rods can cause fissions in other fuel rods; therefore, reactors work far more effectively with more than one fuel rod channel. The chance that a neutron interacts with a fuel rod is increased if it is slowed down by a moderator, such as distilled water inside a coolant channel. As such, it can be helpful to put coolant channels between fuel rods to increase k_eff (and control rods do much the opposite). Fuel rods also decay at a rate proportional to the power; a 600 MJ fuel rod will deplete after 600 seconds of 1 MW, or alternatively 1 second of 600 MW. Note: if this multiblock receives maintenance problems, the coolant systems will occasionally seize up and stop working. However, coolant channels only operate when the hot coolant fluid is actually hotter than the reactor itself, and they can also only altogether export as much heat as the max power.
+gregtech.multiblock.gas_centrifuge.description=The Gas Centrifuge can help in the purification process of isotopes, especially those of uranium. By repeatedly putting uranium hexafluoride into a gas centrifuge, one can obtain highly enriched uranium hexafluoride, which has a purity high enough to make nuclear fuels. Each block of length makes it perform one more recipe in parallel.
+gregtech.multiblock.heat_exchanger.description=The Heat Exchanger can be used to take heat out from one fluid by either radiating it out into its surrounding environment or by transferring it into another fluid. This can be used with hot coolant from fission reactors to help generate steam for steam turbines.
+gregtech.multiblock.spent_fuel_pool.description=The Spent Fuel Pool takes hot depleted fuel rods fresh from a fission reactor and cools them down to be processed later. It only forms when full blocks of water are placed on top; what did you expect? Each block of length makes it perform 32 more recipes in parallel.
item.invalid.name=Invalid item
fluid.empty=Empty
@@ -2351,6 +2355,9 @@ recipemap.rock_breaker.name=Rock Breaker
recipemap.primitive_blast_furnace.name=Primitive Blast Furnace
recipemap.coke_oven.name=Coke Oven
recipemap.research_station.name=Research Station
+recipemap.heat_exchanger.name=Heat Exchanger
+recipemap.gas_centrifuge.name=Gas Centrifuge
+recipemap.spent_fuel_pool.name=Spent Fuel Pool
gregtech.recipe.category.arc_furnace_recycling=Arc Furnace Recycling
gregtech.recipe.category.macerator_recycling=Macerator Recycling
@@ -2601,6 +2608,23 @@ tile.studs.green.name=Green Studs
tile.studs.red.name=Red Studs
tile.studs.black.name=Black Studs
+tile.panelling.white.name=White Panelling
+tile.panelling.orange.name=Orange Panelling
+tile.panelling.magenta.name=Magenta Panelling
+tile.panelling.light_blue.name=Light Blue Panelling
+tile.panelling.yellow.name=Yellow Panelling
+tile.panelling.lime.name=Lime Panelling
+tile.panelling.pink.name=Pink Panelling
+tile.panelling.gray.name=Gray Panelling
+tile.panelling.light_gray.name=Light Gray Panelling
+tile.panelling.cyan.name=Cyan Panelling
+tile.panelling.purple.name=Purple Panelling
+tile.panelling.blue.name=Blue Panelling
+tile.panelling.brown.name=Brown Panelling
+tile.panelling.green.name=Green Panelling
+tile.panelling.red.name=Red Panelling
+tile.panelling.black.name=Black Panelling
+
# Lamps(ON)
tile.gregtech_lamp.white.name=White Lamp
tile.gregtech_lamp.orange.name=Orange Lamp
@@ -2743,6 +2767,11 @@ tile.battery_block.tooltip_empty=For filling space in your Power Substation
tile.long_distance_item_pipeline.name=Long Distance Item Pipe
tile.long_distance_fluid_pipeline.name=Long Distance Fluid Pipe
+# Nuclear Blocks
+tile.nuclear_casing.spent_fuel_casing.name=Spent Fuel Casing
+tile.nuclear_casing.gas_centrifuge_heater.name=Gas Centrifuge Heater
+tile.nuclear_casing.gas_centrifuge_column.name=Gas Centrifuge Column
+
# Creative tabs
itemGroup.gregtech.main=GregTech
itemGroup.gregtech.machines=Machines (GT)
@@ -4921,6 +4950,16 @@ metaitem.cover.digital.mode.fluid.enabled=Fluid Mode enabled
gregtech.machine.monitor_screen.name=Monitor Screen
+gregtech.machine.fission_reactor.name=Fission Reactor
+gregtech.machine.fission_reactor.tooltip.1=Check preview for allowed shapes.
+gregtech.machine.fission_reactor.tooltip.2=§cMay meltdown/explode if the temperature/pressure gets too high!
+gregtech.machine.fission_reactor.tooltip.3=§cPlease read the JEI info page! It is very important!
+
+
+gregtech.machine.heat_exchanger.name=Heat Exchanger
+gregtech.machine.spent_fuel_pool.name=Spent Fuel Pool
+gregtech.machine.gas_centrifuge.name=Gas Centrifuge
+
# Multiblock Tooltips
gregtech.machine.primitive_water_pump.tooltip=Endervoir at Home
@@ -4960,6 +4999,8 @@ gregtech.machine.fluid_drilling_rig.hv.tooltip=Does not perform Fracking
gregtech.machine.fluid_drilling_rig.ev.tooltip=Well Drainer
gregtech.machine.cleanroom.tooltip=Keeping those pesky particles out
gregtech.machine.charcoal_pile.tooltip=Underground fuel bakery
+gregtech.machine.fission_reactor.tooltip=Blowy-uppy yumyum generator
+gregtech.machine.heat_exchanger.tooltip=Molecular hot potato player
# Multiblock machine parts
gregtech.machine.item_bus.import.tooltip=Item Input for Multiblocks
@@ -5363,6 +5404,10 @@ gregtech.universal.tooltip.produces_fluid=§eProduces: §f%,d L/t
gregtech.universal.tooltip.terrain_resist=This Machine will not explode when exposed to the Elements
gregtech.universal.tooltip.requires_redstone=§4Requires Redstone power
+# Nuclear supporting multiblock special tooltips
+gregtech.spent_fuel_pool.tooltip.parallel=32 per block of pool length
+gregtech.gas_centrifuge.tooltip.parallel=1 + number of added columns
+
gregtech.block.tooltip.no_mob_spawning=§bMobs cannot spawn on this block
gregtech.recipe.total=Total: %,d EU
diff --git a/src/main/resources/assets/gregtech/models/block/gas_centrifuge.json b/src/main/resources/assets/gregtech/models/block/gas_centrifuge.json
new file mode 100644
index 00000000000..39d000cbd89
--- /dev/null
+++ b/src/main/resources/assets/gregtech/models/block/gas_centrifuge.json
@@ -0,0 +1,19 @@
+{
+ "parent": "block/block",
+ "credit": "Made with Blockbench",
+ "elements": [
+ {
+ "from": [3, 0, 3],
+ "to": [13, 16, 13],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 10, 16], "texture": "#0"},
+ "east": {"uv": [0, 0, 10, 16], "texture": "#0"},
+ "south": {"uv": [0, 0, 10, 16], "texture": "#0"},
+ "west": {"uv": [0, 0, 10, 16], "texture": "#0"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#1"},
+ "down": {"uv": [0, 0, 16, 16], "texture": "#1"}
+ }
+ }
+ ]
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_end.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_end.png
new file mode 100644
index 00000000000..abbd8bfbcd5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_end.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_side.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_side.png
new file mode 100644
index 00000000000..b5bf39ba6d1
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_side.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_side_bloom.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_side_bloom.png
new file mode 100644
index 00000000000..9bbab34148d
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_side_bloom.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_top.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_top.png
new file mode 100644
index 00000000000..6330cdea626
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_top.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_top_bloom.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_top_bloom.png
new file mode 100644
index 00000000000..36e65e7bd98
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_heater_top_bloom.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_side.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_side.png
new file mode 100644
index 00000000000..e0e687c0a94
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/gas_centrifuge_side.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_empty_side.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_empty_side.png
new file mode 100644
index 00000000000..344dda81d06
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_empty_side.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_empty_top.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_empty_top.png
new file mode 100644
index 00000000000..7cd9c07afb6
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_empty_top.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_side.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_side.png
new file mode 100644
index 00000000000..10b7d26f8c5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_side.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_side_bloom.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_side_bloom.png
new file mode 100644
index 00000000000..7bed8529d7f
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_side_bloom.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_top.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_top.png
new file mode 100644
index 00000000000..a9d9df04762
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_top.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_top_bloom.png b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_top_bloom.png
new file mode 100644
index 00000000000..d21358d7527
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/casings/nuclear/spent_fuel_casing_top_bloom.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front.png
new file mode 100644
index 00000000000..72bbef85af9
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_active.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_active.png
new file mode 100644
index 00000000000..94a4416b1f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_active.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_active_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_active_emissive.png
new file mode 100644
index 00000000000..822fa52e130
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_active_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_emissive.png
new file mode 100644
index 00000000000..00bcc3b5185
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_paused.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_paused.png
new file mode 100644
index 00000000000..8f139ba6ab3
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_paused.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_paused_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_paused_emissive.png
new file mode 100644
index 00000000000..577f0815c1d
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/gas_centrifuge/overlay_front_paused_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front.png
new file mode 100644
index 00000000000..72bbef85af9
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_active.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_active.png
new file mode 100644
index 00000000000..94a4416b1f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_active.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_active_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_active_emissive.png
new file mode 100644
index 00000000000..822fa52e130
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_active_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_emissive.png
new file mode 100644
index 00000000000..00bcc3b5185
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_paused.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_paused.png
new file mode 100644
index 00000000000..8f139ba6ab3
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_paused.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_paused_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_paused_emissive.png
new file mode 100644
index 00000000000..577f0815c1d
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/heat_exchanger/overlay_front_paused_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back.png
new file mode 100644
index 00000000000..a265b3bbace
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_active.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_active.png
new file mode 100644
index 00000000000..cba59fa3935
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_active.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_active_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_active_emissive.png
new file mode 100644
index 00000000000..19114daf4f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_active_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_emissive.png
new file mode 100644
index 00000000000..19114daf4f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_back_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front.png
new file mode 100644
index 00000000000..a265b3bbace
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_active.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_active.png
new file mode 100644
index 00000000000..cba59fa3935
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_active.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_active_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_active_emissive.png
new file mode 100644
index 00000000000..19114daf4f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_active_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_emissive.png
new file mode 100644
index 00000000000..19114daf4f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_front_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side.png
new file mode 100644
index 00000000000..c4d67c201a7
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_active.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_active.png
new file mode 100644
index 00000000000..6eb0165c340
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_active.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_active_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_active_emissive.png
new file mode 100644
index 00000000000..19114daf4f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_active_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_emissive.png
new file mode 100644
index 00000000000..19114daf4f5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_side_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top.png
new file mode 100644
index 00000000000..a00ea6ee4e8
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_active.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_active.png
new file mode 100644
index 00000000000..8cace5651b8
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_active.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_active_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_active_emissive.png
new file mode 100644
index 00000000000..48b5a3c360c
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_active_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_emissive.png
new file mode 100644
index 00000000000..4f275316358
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_paused.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_paused.png
new file mode 100644
index 00000000000..e8ab4a755ba
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_paused.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_paused_emissive.png b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_paused_emissive.png
new file mode 100644
index 00000000000..d1df3858ba2
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/multiblock/spent_fuel_pool/overlay_top_paused_emissive.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_black.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_black.png
new file mode 100644
index 00000000000..0ab0e5ca3b5
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_black.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_black.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_black.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_black.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_blue.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_blue.png
new file mode 100644
index 00000000000..732a4a4a0e7
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_blue.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_blue.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_blue.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_blue.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_brown.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_brown.png
new file mode 100644
index 00000000000..e960139fedf
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_brown.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_brown.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_brown.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_brown.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_cyan.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_cyan.png
new file mode 100644
index 00000000000..a843391ae06
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_cyan.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_cyan.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_cyan.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_cyan.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_gray.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_gray.png
new file mode 100644
index 00000000000..1dda4668252
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_gray.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_gray.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_gray.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_gray.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_green.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_green.png
new file mode 100644
index 00000000000..8024c38601d
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_green.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_green.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_green.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_green.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_blue.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_blue.png
new file mode 100644
index 00000000000..11a7a0bead7
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_blue.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_blue.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_blue.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_blue.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_gray.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_gray.png
new file mode 100644
index 00000000000..168556ba072
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_gray.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_gray.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_gray.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_light_gray.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_lime.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_lime.png
new file mode 100644
index 00000000000..c32fd730670
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_lime.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_lime.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_lime.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_lime.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_magenta.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_magenta.png
new file mode 100644
index 00000000000..304db0a6a29
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_magenta.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_magenta.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_magenta.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_magenta.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_orange.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_orange.png
new file mode 100644
index 00000000000..716fa6a7f1e
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_orange.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_orange.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_orange.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_orange.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_pink.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_pink.png
new file mode 100644
index 00000000000..c4f959b6a83
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_pink.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_pink.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_pink.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_pink.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_purple.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_purple.png
new file mode 100644
index 00000000000..8ef9ea56bdd
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_purple.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_purple.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_purple.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_purple.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_red.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_red.png
new file mode 100644
index 00000000000..52af19d4b4c
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_red.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_red.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_red.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_red.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_white.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_white.png
new file mode 100644
index 00000000000..a9edf8421dc
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_white.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_white.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_white.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_white.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_yellow.png b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_yellow.png
new file mode 100644
index 00000000000..36a6fbc8a6b
Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_yellow.png differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_yellow.png.mcmeta b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_yellow.png.mcmeta
new file mode 100644
index 00000000000..9be26b2b4a4
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/panelling/panelling_yellow.png.mcmeta
@@ -0,0 +1,9 @@
+{
+ "ctm": {
+ "ctm_version": 1,
+ "type": "pattern",
+ "extra": {
+ "size": 2
+ }
+ }
+}