Skip to content
This repository was archived by the owner on May 11, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import gregicality.science.api.recipes.builders.NoCoilTemperatureRecipeBuilder;
import gregicality.science.api.recipes.builders.PressureRecipeBuilder;
import gregicality.science.api.recipes.builders.TemperaturePressureRecipeBuilder;
import gregicality.science.api.recipes.machines.RecipeMapSuprachronalAssembler;
import gregicality.science.client.render.GCYSGuiTextures;
import gregtech.api.GTValues;
import gregtech.api.gui.GuiTextures;
Expand Down Expand Up @@ -97,6 +98,10 @@ public class GCYSRecipeMaps {
.setSlotOverlay(true, false, true, GuiTextures.DUST_OVERLAY)
.setSound(GTSounds.MACERATOR);

public static final RecipeMapSuprachronalAssembler<SimpleRecipeBuilder> SUPRACHRONAL_ASSEMBLER_RECIPES = (RecipeMapSuprachronalAssembler<SimpleRecipeBuilder>) new RecipeMapSuprachronalAssembler<>("suprachronal_assembler_recipes", 1, 16, 0, 1, 0, 4, 0, 0, new SimpleRecipeBuilder(), false)
.setProgressBar(GuiTextures.PROGRESS_BAR_ASSEMBLY_LINE, ProgressWidget.MoveType.HORIZONTAL)
.setSound(GTSounds.REPLICATOR);

// Generators

public static final RecipeMap<FuelRecipeBuilder> TARANIUM_REACTOR_MK1_RECIPES = new RecipeMap<>("taranium_reactor_mk1_recipes", 0, 0, 0, 0, 1, 1, 0, 0, new FuelRecipeBuilder(), false)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package gregicality.science.api.recipes.machines;

import gregtech.api.capability.impl.FluidTankList;
import gregtech.api.gui.GuiTextures;
import gregtech.api.gui.ModularUI;
import gregtech.api.gui.widgets.ProgressWidget;
import gregtech.api.recipes.RecipeBuilder;
import gregtech.api.recipes.RecipeMap;
import net.minecraftforge.items.IItemHandlerModifiable;

import javax.annotation.Nonnull;

public class RecipeMapSuprachronalAssembler<R extends RecipeBuilder<R>> extends RecipeMap<R> {

public RecipeMapSuprachronalAssembler(String unlocalizedName,
int minInputs, int maxInputs, int minOutputs, int maxOutputs,
int minFluidInputs, int maxFluidInputs, int minFluidOutputs, int maxFluidOutputs,
R defaultRecipe, boolean isHidden) {
super(unlocalizedName, minInputs, maxInputs, minOutputs, maxOutputs, minFluidInputs, maxFluidInputs, minFluidOutputs, maxFluidOutputs, defaultRecipe, isHidden);
}

@Override
@Nonnull
public ModularUI.Builder createJeiUITemplate(IItemHandlerModifiable importItems, IItemHandlerModifiable exportItems, FluidTankList importFluids, FluidTankList exportFluids, int yOffset) {
ModularUI.Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, 176)
.widget(new ProgressWidget(200, 80, 1, 54, 72, GuiTextures.PROGRESS_BAR_ASSEMBLY_LINE, ProgressWidget.MoveType.HORIZONTAL));
this.addInventorySlotGroup(builder, importItems, importFluids, false, yOffset);
this.addInventorySlotGroup(builder, exportItems, exportFluids, true, yOffset);
return builder;
}

@Override
protected void addInventorySlotGroup(ModularUI.Builder builder, @Nonnull IItemHandlerModifiable itemHandler, @Nonnull FluidTankList fluidHandler, boolean isOutputs, int yOffset) {
int itemInputsCount = itemHandler.getSlots();
int fluidInputsCount = fluidHandler.getTanks();
boolean invertFluids = false;
if (itemInputsCount == 0) {
int tmp = itemInputsCount;
itemInputsCount = fluidInputsCount;
fluidInputsCount = tmp;
invertFluids = true;
}
int[] inputSlotGrid = determineSlotsGrid(itemInputsCount);
int itemSlotsToLeft = inputSlotGrid[0];
int itemSlotsToDown = inputSlotGrid[1];
int startInputsX = 80 - itemSlotsToLeft * 18;
int startInputsY = 37 - (int) (itemSlotsToDown / 2.0 * 18);

if (!isOutputs) {
for (int i = 0; i < itemSlotsToDown; i++) {
for (int j = 0; j < itemSlotsToLeft; j++) {
int slotIndex = i * itemSlotsToLeft + j/* + 1*/; // needed for data slot
addSlot(builder, startInputsX + 18 * j, startInputsY + 18 * i, slotIndex, itemHandler, fluidHandler, invertFluids, false);
}
}
if (fluidInputsCount > 0 || invertFluids) {
if (itemSlotsToDown >= fluidInputsCount) {
int startSpecX = startInputsX + 18 * 5;
for (int i = 0; i < fluidInputsCount; i++) {
addSlot(builder, startSpecX, startInputsY + 18 * i, i, itemHandler, fluidHandler, true, false);
}
}
}
} else {
addSlot(builder, startInputsX + 18 * 4, 1, 0/*18*/, itemHandler, fluidHandler, invertFluids, true); // Output Slot - 18 for data slot
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public static void init() {
.build();

Taranium = new Material.Builder(3106, "taranium")
.dust()
.ingot().fluid()
.color(0x4F404F).iconSet(METALLIC)
.element(GCYSElements.Tn)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,9 @@ public class GCYSMaterials {
public static Material LightHyperFuel;
public static Material MediumHyperFuel;
public static Material HeavyHyperFuel;
public static Material QCDConfinedMatter;
public static Material ReissnerNordstromMatrix;
public static Material SentientMetal;


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import static gregicality.science.api.unification.materials.GCYSMaterials.*;
import static gregtech.api.unification.material.Materials.*;
import static gregtech.api.unification.material.info.MaterialFlags.DISABLE_DECOMPOSITION;
import static gregtech.api.unification.material.info.MaterialFlags.*;
import static gregtech.api.unification.material.info.MaterialIconSet.FINE;
import static gregtech.api.unification.material.info.MaterialIconSet.ROUGH;

Expand Down Expand Up @@ -128,5 +128,22 @@ public static void init() {
MediumHyperFuel = new Material.Builder(18055, "medium_hyper_fuel").fluid().color(0xDC0A0A).build();

HeavyHyperFuel = new Material.Builder(18056, "heavy_hyper_fuel").fluid().color(0x1E5064).build();

QCDConfinedMatter = new Material.Builder(18057, "qcd_confined_matter")
.ingot()
.color(0xc82828)
.flags(NO_UNIFICATION, GENERATE_PLATE, GENERATE_ROD)
.build();

ReissnerNordstromMatrix = new Material.Builder(18058, "reissner_nordstrom_matrix")
.ingot()
.color(0x0a0a0a)
.flags(NO_UNIFICATION, GENERATE_PLATE, GENERATE_FRAME)
.build();

SentientMetal = new Material.Builder(18059, "sentient_metal")
.fluid()
.color(0x0c0c0c)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import gregicality.science.GregicalityScience;
import gregtech.client.renderer.texture.cube.OrientedOverlayRenderer;
import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.ResourceLocation;
Expand Down Expand Up @@ -29,6 +30,9 @@ public class GCYSTextures {
public static OrientedOverlayRenderer SUPERSONIC_AXIAL_COMPRESSOR_OVERLAY = new OrientedOverlayRenderer("multiblock/supersonic_axial_compressor", FRONT);
public static OrientedOverlayRenderer LOW_POWER_TURBOMOLECULAR_PUMP = new OrientedOverlayRenderer("multiblock/low_power_turbomolecular_pump", TOP);
public static OrientedOverlayRenderer HIGH_POWER_TURBOMOLECULAR_PUMP = new OrientedOverlayRenderer("multiblock/high_power_turbomolecular_pump", TOP);
public static OrientedOverlayRenderer SUPRACHRONAL_OVERLAY = new OrientedOverlayRenderer("multiblock/suprachronal_assembler", FRONT);

public static SimpleOverlayRenderer SUPRACHRONAL_CASING = new SimpleOverlayRenderer("casings/solid/suprachronal_casing");

public static TextureAtlasSprite PRESSURE_PIPE_SIDE;
public static TextureAtlasSprite PRESSURE_PIPE_OPEN;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public BlockGCYSMultiblockCasing() {
public enum CasingType implements IStringSerializable {
SUBSTRATE("substrate"),
ADVANCED_SUBSTRATE("advanced_substrate"),
DRILL_HEAD("drill_head");
DRILL_HEAD("drill_head"),
SUPRACHRONAL_CASING("suprachronal_casing");

private final String name;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,12 @@ public class GCYSMetaItems {
public static MetaItem<?>.MetaValueItem BOSE_EINSTEIN_CONDENSATE;
public static MetaItem<?>.MetaValueItem ESR_COMPUTATION_UNIT;

// Supra-Causal Circuit Components
public static MetaItem<?>.MetaValueItem EIGENFOLDED_KERR_MANIFOLD;

// Supra-Chronal Circuit Components
public static MetaItem<?>.MetaValueItem HYPERDIMENSIONAL_DRONE;

// Voltage Coils
public static MetaItem<?>.MetaValueItem VOLTAGE_COIL_UHV;
public static MetaItem<?>.MetaValueItem VOLTAGE_COIL_UEV;
Expand Down Expand Up @@ -254,9 +260,11 @@ private static void initMetaItem1() {


// Supra-Causal Circuit Components: ID 260-299
EIGENFOLDED_KERR_MANIFOLD = metaItem1.addItem(260, "eigenfolded.kerr.manifold");


// Supra-Chronal Circuit Components: ID 300-349
HYPERDIMENSIONAL_DRONE = metaItem1.addItem(300, "hyperdimensional.drone");


// Voltage Coils: ID 350-355
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import gregicality.science.common.metatileentities.singleblock.MetaTileEntityCreativePressurePump;
import gregicality.science.common.metatileentities.singleblock.MetaTileEntitySteamEjector;
import gregicality.science.common.metatileentities.singleblock.MetaTileEntitySteamVacuumChamber;
import gregicality.science.loaders.recipe.circuits.SuprachronalCircuits;
import gregtech.api.GTValues;
import gregtech.api.metatileentity.SimpleMachineMetaTileEntity;
import gregtech.api.util.GTUtility;
Expand Down Expand Up @@ -45,6 +46,7 @@ public class GCYSMetaTileEntities {
public static MetaTileEntityAxialCompressor SUPERSONIC_AXIAL_COMPRESSOR;
public static MetaTileEntityTurbomolecularPump LOW_POWER_TURBOMOLECULAR_PUMP;
public static MetaTileEntityTurbomolecularPump HIGH_POWER_TURBOMOLECULAR_PUMP;
public static MetaTileEntitySuprachronalAssembler SUPRACHRONAL_ASSEMBLER;

public static void init() {
// GCYM Machines: ID 2000-2099
Expand Down Expand Up @@ -86,6 +88,7 @@ public static void init() {
SUPERSONIC_AXIAL_COMPRESSOR = registerMetaTileEntity(3912, new MetaTileEntityAxialCompressor(gcysId("axial_compressor.supersonic"), GTValues.LuV, 18E9, 50_000.0));
LOW_POWER_TURBOMOLECULAR_PUMP = registerMetaTileEntity(3913, new MetaTileEntityTurbomolecularPump(gcysId("turbomolecular_pump.low_power"), GTValues.EV, 1E-4, 10_000.0));
HIGH_POWER_TURBOMOLECULAR_PUMP = registerMetaTileEntity(3914, new MetaTileEntityTurbomolecularPump(gcysId("turbomolecular_pump.high_power"), GTValues.LuV, 1E-7, 50_000.0));
SUPRACHRONAL_ASSEMBLER = registerMetaTileEntity(3915, new MetaTileEntitySuprachronalAssembler(gcysId("suprachronal_assembler")));
}

@Nonnull
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package gregicality.science.common.metatileentities.multiblock;

import gregicality.science.api.recipes.GCYSRecipeMaps;
import gregicality.science.client.render.GCYSTextures;
import gregicality.science.common.block.GCYSMetaBlocks;
import gregicality.science.common.block.blocks.BlockGCYSMultiblockCasing;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
import gregtech.api.metatileentity.multiblock.IMultiblockPart;
import gregtech.api.metatileentity.multiblock.MultiblockAbility;
import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController;
import gregtech.api.pattern.BlockPattern;
import gregtech.api.pattern.FactoryBlockPattern;
import gregtech.client.renderer.ICubeRenderer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.ResourceLocation;

import javax.annotation.Nonnull;

public class MetaTileEntitySuprachronalAssembler extends RecipeMapMultiblockController {


public MetaTileEntitySuprachronalAssembler(ResourceLocation metaTileEntityId) {
super(metaTileEntityId, GCYSRecipeMaps.SUPRACHRONAL_ASSEMBLER_RECIPES);
}

@Override
protected BlockPattern createStructurePattern() {
return FactoryBlockPattern.start()
.aisle("##XXXXDDDXXXX##", "######DDD######", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "######DDD######", "##XXXXDDDXXXX##")
.aisle("#XXXXXXXXXXXXX#", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#XXXXXXXXXXXXX#")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "######XXX######", "#####XXXXX#####", "#####XXXXX#####", "#####XXXXX#####", "######XXX######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "#######X#######", "#######X#######", "#####XXXXX#####", "####XXAAAXX####", "####XAAAAAX####", "####XAAAAAX####", "####XAAAAAX####", "####XXAAAXX####", "#####XXXXX#####", "#######X#######", "#######X#######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "#######X#######", "#####XXXXX#####", "####XAAAAAX####", "###XAAAAAAAX###", "###XAAAAAAAX###", "###XAAAAAAAX###", "###XAAAAAAAX###", "###XAAAAAAAX###", "####XAAAAAX####", "#####XXXXX#####", "#######X#######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "######XXX######", "####XXAAAXX####", "###XAAAAAAAX###", "###XAAAAAAAX###", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "###XAAAAAAAX###", "###XAAAAAAAX###", "####XXAAAXX####", "######XXX######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("DXXXXXXXXXXXXXD", "D#####XXX#####D", "#####XXXXX#####", "####XAAAAAX####", "###XAAAAAAAX###", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "###XAAAAAAAX###", "####XAAAAAX####", "#####XXXXX#####", "D#####XXX#####D", "DXXXXXXXXXXXXXD")
.aisle("DXXXXXXXXXXXXXD", "DXXXXXXXXXXXXXD", "#XXXXXXXXXXXXX#", "#XXXXAAAAAXXXX#", "#XXXAAAAAAAXXX#", "#XXAAAAAAAAAXX#", "#XXAAAAAAAAAXX#", "#XXAAAAAAAAAXX#", "#XXAAAAAAAAAXX#", "#XXAAAAAAAAAXX#", "#XXXAAAAAAAXXX#", "#XXXXAAAAAXXXX#", "#XXXXXXXXXXXXX#", "DXXXXXXXXXXXXXD", "DXXXXXXXXXXXXXD")
.aisle("DXXXXXXXXXXXXXD", "D#####XXX#####D", "#####XXXXX#####", "####XAAAAAX####", "###XAAAAAAAX###", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "###XAAAAAAAX###", "####XAAAAAX####", "#####XXXXX#####", "D#####XXX#####D", "DXXXXXXXXXXXXXD")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "######XXX######", "####XXAAAXX####", "###XAAAAAAAX###", "###XAAAAAAAX###", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "##XAAAAAAAAAX##", "###XAAAAAAAX###", "###XAAAAAAAX###", "####XXAAAXX####", "######XXX######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "#######X#######", "#####XXXXX#####", "####XAAAAAX####", "###XAAAAAAAX###", "###XAAAAAAAX###", "###XAAAAAAAX###", "###XAAAAAAAX###", "###XAAAAAAAX###", "####XAAAAAX####", "#####XXXXX#####", "#######X#######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "#######X#######", "#######X#######", "#####XXXXX#####", "####XXAAAXX####", "####XAAAAAX####", "####XAAAAAX####", "####XAAAAAX####", "####XXAAAXX####", "#####XXXXX#####", "#######X#######", "#######X#######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("XXXXXXXXXXXXXXX", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "######XXX######", "#####XXXXX#####", "#####XXXXX#####", "#####XXXXX#####", "######XXX######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "XXXXXXXXXXXXXXX")
.aisle("#XXXXXXXXXXXXX#", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#######X#######", "#XXXXXXXXXXXXX#")
.aisle("##XXXXDDDXXXX##", "######DSD######", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "###############", "######DDD######", "##XXXXDDDXXXX##")
.where('S', selfPredicate())
.where('X', states(getCasingState()))
.where('D', states(getCasingState()).or(
autoAbilities(true, true, true, true, true, false, false)
))
.where('C', heatingCoils())
.where('M', abilities(MultiblockAbility.MUFFLER_HATCH))
.where('A', air())
.where('#', any())
.build();
}

@Nonnull
private static IBlockState getCasingState() {
return GCYSMetaBlocks.MULTIBLOCK_CASING.getState(BlockGCYSMultiblockCasing.CasingType.SUPRACHRONAL_CASING);
}

@Override
public ICubeRenderer getBaseTexture(IMultiblockPart iMultiblockPart) {
return GCYSTextures.SUPRACHRONAL_CASING;
}

@Nonnull
@Override
protected ICubeRenderer getFrontOverlay() {
return GCYSTextures.SUPRACHRONAL_OVERLAY;
}

@Override
public MetaTileEntity createMetaTileEntity(IGregTechTileEntity iGregTechTileEntity) {
return new MetaTileEntitySuprachronalAssembler(metaTileEntityId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,6 @@ private static void initCircuits() {
GoowareCircuits.init();
OpticalCircuits.init();
SpintronicCircuits.init();
SuprachronalCircuits.init();
}
}
Loading