aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java')
-rw-r--r--src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java242
1 files changed, 242 insertions, 0 deletions
diff --git a/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java
new file mode 100644
index 0000000000..eac1ac67c9
--- /dev/null
+++ b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java
@@ -0,0 +1,242 @@
+package GoodGenerator.Blocks.TEs;
+
+import GoodGenerator.Loader.Loaders;
+import GoodGenerator.Main.GoodGenerator;
+import cpw.mods.fml.common.FMLCommonHandler;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.IIconContainer;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
+import gregtech.api.objects.GT_RenderedTexture;
+import ic2.core.Ic2Fluid;
+import ic2.core.init.InternalName;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import java.util.ArrayList;
+
+public class MultiNqGenerator extends GT_MetaTileEntity_MultiBlockBase {
+
+ @SideOnly(Side.CLIENT)
+ protected IIcon[] texture;
+ protected String textureNames;
+ protected String name;
+ private static final IIcon[] iIcons = new IIcon[4];
+ private static final IIconContainer[] iIconContainers = new IIconContainer[4];
+ private static final ITexture[][] iTextures = new ITexture[4][1];
+ public ItemStack[] circuits = new ItemStack[5];
+ private long mStorage;
+
+ public MultiNqGenerator(String name){super(name);}
+
+ public MultiNqGenerator(int id, String name, String nameRegional){
+ super(id,name,nameRegional);
+ this.name = name;
+ textureNames = GoodGenerator.MOD_ID+":"+name;
+ }
+
+
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister aBlockIconRegister) {
+
+ for (int i = 0; i < MultiNqGenerator.iTextures.length; i++) {
+ MultiNqGenerator.iIcons[i] = aBlockIconRegister.registerIcon(GoodGenerator.MOD_ID + ":test");
+ int finalI = i;
+ MultiNqGenerator.iIconContainers[i] = new IIconContainer() {
+ @Override
+ public IIcon getIcon() {
+ return MultiNqGenerator.iIcons[finalI];
+ }
+
+ @Override
+ public IIcon getOverlayIcon() {
+ return MultiNqGenerator.iIcons[finalI];
+ }
+
+ @Override
+ public ResourceLocation getTextureFile() {
+ return new ResourceLocation(GoodGenerator.MOD_ID + ":test");
+ }
+ };
+ }
+
+ }
+
+ @Override
+ public boolean isCorrectMachinePart(ItemStack aStack) {
+ return true;
+ }
+
+ @Override
+ public boolean checkRecipe(ItemStack aStack) {
+
+ ArrayList<FluidStack> tFluids = getStoredFluids();
+
+ FluidStack f1=null,f2=null;
+ float booster = 1.0f;
+ int times = 1;
+ if(tFluids.size() > 0){
+ if(tFluids.contains(Materials.Cryotheum.getFluid(2L))){
+ booster = 2.75f;
+ f1=Materials.Cryotheum.getFluid(2L);
+ }
+ else if(tFluids.contains(Materials.SuperCoolant.getFluid(2L))){
+ booster = 1.5f;
+ f1=Materials.SuperCoolant.getFluid(2L);
+ }
+ else if(tFluids.contains(FluidRegistry.getFluidStack("ic2coolant",2))){
+ booster = 1.05f;
+ f1=FluidRegistry.getFluidStack("ic2coolant",2);
+ }
+ }
+
+ if(tFluids.size() > 0){
+ if (tFluids.contains(Materials.Caesium.getMolten(9L))){
+ times = 2;
+ f2=Materials.Caesium.getMolten(9L);
+ }
+ else if(tFluids.contains(Materials.Uranium235.getMolten(9L))){
+ times = 3;
+ f2=Materials.Uranium235.getMolten(9L);
+ }
+ else if(tFluids.contains(Materials.Naquadah.getMolten(1L))){
+ times = 4;
+ f2=Materials.Naquadah.getMolten(1L);
+ }
+ }
+
+ if(tFluids.size()>0){
+ if(tFluids.contains(Materials.NaquadahEnriched.getMolten(times))){
+ if(f1 != null)
+ depleteInput(f1);
+ if(f2 != null)
+ depleteInput(f2);
+ if(mRuntime == 0 || mRuntime%1200 == 0){
+ depleteInput(Materials.NaquadahEnriched.getMolten(times));
+ this.mOutputFluids = new FluidStack[]{Materials.Naquadah.getMolten(times)};
+ }
+ else this.mOutputFluids = null;
+ addEnergyOutput((long)(32768*times*booster));
+ this.mEUt = (int)(32768*times*booster);
+ this.mProgresstime = 1;
+ this.mMaxProgresstime = 1;
+ return true;
+ }
+ if(tFluids.contains(Materials.Naquadria.getMolten(times))){
+ if(f1 != null)
+ depleteInput(f1);
+ if(f2 != null)
+ depleteInput(f2);
+ if(mRuntime == 0 || mRuntime%300 == 0){
+ depleteInput(Materials.Naquadria.getMolten(times));
+ this.mOutputFluids = new FluidStack[]{Materials.Naquadah.getMolten(times)};
+ }
+ else this.mOutputFluids = null;
+ addEnergyOutput((long)(524288*times*booster));
+ this.mEUt = (int)(524288*times*booster);
+ this.mProgresstime = 1;
+ this.mMaxProgresstime = 1;
+ return true;
+ }
+ }
+
+ this.mEUt = 0;
+ return false;
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 2;
+ int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 2;
+ int casingAmount = 0;
+ for (int x = -2; x <= 2; x++) {
+ for (int z = -2; z <= 2; z++) {
+ for (int y = 0; y <= 8; y++) {
+ if (x + xDir == 0 && y == 0 && z + zDir == 0) {
+ continue;
+ }
+ IGregTechTileEntity tileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(x + xDir, y, z + zDir);
+ Block block = aBaseMetaTileEntity.getBlockOffset(x + xDir, y, z + zDir);
+
+ if (y != 0 && y != 8 && x != -2 && x != 2 && z != -2 && z != 2) {
+ if (block == Blocks.air) continue;
+ else return false;
+ }
+
+ if (y != 0){
+ if(block == Loaders.MAR_Casing) continue;
+ else return false;
+ }
+
+ if (!addInputToMachineList(tileEntity, 44) && !addOutputToMachineList(tileEntity, 44)
+ && !addMaintenanceToMachineList(tileEntity, 44)
+ && !addDynamoToMachineList(tileEntity,44)) {
+ if (block == GregTech_API.sBlockCasings3 && aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z) == 12) {
+ casingAmount++;
+ } else {
+ return false;
+ }
+ }
+ }
+ }
+ }
+ return casingAmount >= 10 && mDynamoHatches.size() == 1 ;
+ }
+
+ @Override
+ public int getMaxEfficiency(ItemStack aStack) {
+ return 0;
+ }
+
+ @Override
+ public int getPollutionPerTick(ItemStack aStack) {
+ return 0;
+ }
+
+ @Override
+ public int getDamageToComponent(ItemStack aStack) {
+ return 0;
+ }
+
+ @Override
+ public boolean explodesOnComponentBreak(ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new MultiNqGenerator(this.mName);
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[0];
+ }
+
+ @Override
+ @SuppressWarnings("ALL")
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
+ if(aSide == aFacing){
+ if(aActive) return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[44],new GT_RenderedTexture(Textures.BlockIcons.NAQUADAH_REACTOR_SOLID_FRONT_ACTIVE)};
+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[44],new GT_RenderedTexture(Textures.BlockIcons.NAQUADAH_REACTOR_SOLID_FRONT)};
+ }
+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[44]};
+ }
+}