package gregtech.common.tileentities.machines.multi; import static gregtech.api.enums.HatchElement.Energy; import static gregtech.api.enums.HatchElement.InputBus; import static gregtech.api.enums.HatchElement.InputHatch; import static gregtech.api.enums.HatchElement.Maintenance; import static gregtech.api.enums.HatchElement.OutputBus; import static gregtech.api.enums.HatchElement.OutputHatch; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_VACUUM_FREEZER; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_VACUUM_FREEZER_ACTIVE; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_VACUUM_FREEZER_ACTIVE_GLOW; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_VACUUM_FREEZER_GLOW; import static gregtech.api.enums.Textures.BlockIcons.casingTexturePages; import java.util.List; import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.ForgeDirection; import com.google.common.collect.ImmutableList; import com.gtnewhorizon.structurelib.structure.IStructureElement; import com.gtnewhorizon.structurelib.structure.StructureUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.IHatchElement; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.logic.ProcessingLogic; import gregtech.api.metatileentity.implementations.MTECubicMultiBlockBase; import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.RecipeMaps; import gregtech.api.render.TextureFactory; import gregtech.api.util.MultiblockTooltipBuilder; public class MTEVacuumFreezer extends MTECubicMultiBlockBase { public MTEVacuumFreezer(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); } public MTEVacuumFreezer(String aName) { super(aName); } @Override public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { return new MTEVacuumFreezer(this.mName); } @Override protected MultiblockTooltipBuilder createTooltip() { final MultiblockTooltipBuilder tt = new MultiblockTooltipBuilder(); tt.addMachineType("Vacuum Freezer") .addInfo("Cools hot ingots and cells") .beginStructureBlock(3, 3, 3, true) .addController("Front center") .addCasingInfoRange("Frost Proof Machine Casing", 16, 24, false) .addEnergyHatch("Any casing", 1) .addMaintenanceHatch("Any casing", 1) .addInputHatch("Any casing", 1) .addOutputHatch("Any casing", 1) .addInputBus("Any casing", 1) .addOutputBus("Any casing", 1) .toolTipFinisher(); return tt; } @Override public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing, int colorIndex, boolean aActive, boolean redstoneLevel) { ITexture[] rTexture; if (side == aFacing) { if (aActive) { rTexture = new ITexture[] { casingTexturePages[0][17], TextureFactory.builder() .addIcon(OVERLAY_FRONT_VACUUM_FREEZER_ACTIVE) .extFacing() .build(), TextureFactory.builder() .addIcon(OVERLAY_FRONT_VACUUM_FREEZER_ACTIVE_GLOW) .extFacing() .glow() .build() }; } else { rTexture = new ITexture[] { casingTexturePages[0][17], TextureFactory.builder() .addIcon(OVERLAY_FRONT_VACUUM_FREEZER) .extFacing() .build(), TextureFactory.builder() .addIcon(OVERLAY_FRONT_VACUUM_FREEZER_GLOW) .extFacing() .glow() .build() }; } } else { rTexture = new ITexture[] { casingTexturePages[0][17] }; } return rTexture; } @Override public RecipeMap getRecipeMap() { return RecipeMaps.vacuumFreezerRecipes; } @Override public boolean isCorrectMachinePart(ItemStack aStack) { return true; } @Override protected ProcessingLogic createProcessingLogic() { return new ProcessingLogic(); } @Override protected IStructureElement> getCasingElement() { return StructureUtility.ofBlock(GregTechAPI.sBlockCasings2, 1); } @Override protected List>> getAllowedHatches() { return ImmutableList.of(InputHatch, OutputHatch, InputBus, OutputBus, Maintenance, Energy); } @Override protected int getHatchTextureIndex() { return 17; } @Override protected int getRequiredCasingCount() { return 16; } @Override public int getMaxEfficiency(ItemStack aStack) { return 10000; } @Override public int getDamageToComponent(ItemStack aStack) { return 0; } @Override public boolean explodesOnComponentBreak(ItemStack aStack) { return false; } @Override public boolean supportsVoidProtection() { return true; } @Override public boolean supportsBatchMode() { return true; } @SideOnly(Side.CLIENT) @Override protected SoundResource getActivitySoundLoop() { return SoundResource.GT_MACHINES_MULTI_VACUUM_FREEZER_LOOP; } }