package mekanism.generators.common; import mekanism.api.MekanismConfig.generators; import mekanism.common.Mekanism; import mekanism.common.inventory.container.ContainerNull; import mekanism.common.tile.TileEntityContainerBlock; import mekanism.generators.common.inventory.container.ContainerBioGenerator; import mekanism.generators.common.inventory.container.ContainerGasGenerator; import mekanism.generators.common.inventory.container.ContainerHeatGenerator; import mekanism.generators.common.inventory.container.ContainerNeutronCapture; import mekanism.generators.common.inventory.container.ContainerReactorController; import mekanism.generators.common.inventory.container.ContainerSolarGenerator; import mekanism.generators.common.inventory.container.ContainerWindTurbine; import mekanism.generators.common.tile.TileEntityAdvancedSolarGenerator; import mekanism.generators.common.tile.TileEntityBioGenerator; import mekanism.generators.common.tile.TileEntityGasGenerator; import mekanism.generators.common.tile.TileEntityHeatGenerator; import mekanism.generators.common.tile.TileEntitySolarGenerator; import mekanism.generators.common.tile.TileEntityWindTurbine; import mekanism.generators.common.tile.reactor.TileEntityReactorController; import mekanism.generators.common.tile.reactor.TileEntityReactorFrame; import mekanism.generators.common.tile.reactor.TileEntityReactorGlass; import mekanism.generators.common.tile.reactor.TileEntityReactorLaserFocusMatrix; import mekanism.generators.common.tile.reactor.TileEntityReactorLogicAdapter; import mekanism.generators.common.tile.reactor.TileEntityReactorNeutronCapture; import mekanism.generators.common.tile.reactor.TileEntityReactorPort; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.registry.GameRegistry; /** * Common proxy for the Mekanism Generators module. * @author AidanBrady * */ public class GeneratorsCommonProxy { public static int GENERATOR_RENDER_ID = RenderingRegistry.getNextAvailableRenderId(); /** * Register normal tile entities */ public void registerRegularTileEntities() { GameRegistry.registerTileEntity(TileEntityReactorFrame.class, "ReactorFrame"); GameRegistry.registerTileEntity(TileEntityReactorGlass.class, "ReactorGlass"); GameRegistry.registerTileEntity(TileEntityReactorLaserFocusMatrix.class, "ReactorLaserFocus"); GameRegistry.registerTileEntity(TileEntityReactorNeutronCapture.class, "ReactorNeutronCapture"); GameRegistry.registerTileEntity(TileEntityReactorPort.class, "ReactorPort"); GameRegistry.registerTileEntity(TileEntityReactorLogicAdapter.class, "ReactorLogicAdapter"); } /** * Register tile entities that have special models. Overwritten in client to register TESRs. */ public void registerSpecialTileEntities() { GameRegistry.registerTileEntity(TileEntityAdvancedSolarGenerator.class, "AdvancedSolarGenerator"); GameRegistry.registerTileEntity(TileEntitySolarGenerator.class, "SolarGenerator"); GameRegistry.registerTileEntity(TileEntityBioGenerator.class, "BioGenerator"); GameRegistry.registerTileEntity(TileEntityHeatGenerator.class, "HeatGenerator"); GameRegistry.registerTileEntity(TileEntityGasGenerator.class, "GasGenerator"); GameRegistry.registerTileEntity(TileEntityWindTurbine.class, "WindTurbine"); GameRegistry.registerTileEntity(TileEntityReactorController.class, "ReactorController"); } /** * Register and load client-only render information. */ public void registerRenderInformation() {} /** * Set and load the mod's common configuration properties. */ public void loadConfiguration() { generators.advancedSolarGeneration = Mekanism.configuration.get("generation", "AdvancedSolarGeneration", 300D).getDouble(300D); generators.bioGeneration = Mekanism.configuration.get("generation", "BioGeneration", 350D).getDouble(350D); generators.heatGeneration = Mekanism.configuration.get("generation", "HeatGeneration", 150D).getDouble(150D); generators.heatGenerationLava = Mekanism.configuration.get("generation", "HeatGenerationLava", 5D).getDouble(5D); generators.heatGenerationNether = Mekanism.configuration.get("generation", "HeatGenerationNether", 100D).getDouble(100D); generators.solarGeneration = Mekanism.configuration.get("generation", "SolarGeneration", 50D).getDouble(50D); loadWindConfiguration(); if(Mekanism.configuration.hasChanged()) { Mekanism.configuration.save(); } } private void loadWindConfiguration() { if(Mekanism.configuration.hasKey("generation", "WindGeneration")) { //Migrate the old wind generation config final double legacyWindGeneration = Mekanism.configuration.get("generation", "WindGeneration", 60D).getDouble(60D); final double windGenerationMax = legacyWindGeneration * 8D; Mekanism.configuration.getCategory("generation").remove("WindGeneration"); generators.windGenerationMin = Mekanism.configuration.get("generation", "WindGenerationMin", legacyWindGeneration).getDouble(legacyWindGeneration); generators.windGenerationMax = Mekanism.configuration.get("generation", "WindGenerationMax", windGenerationMax).getDouble(windGenerationMax); } else { generators.windGenerationMin = Mekanism.configuration.get("generation", "WindGenerationMin", 60D).getDouble(60D); generators.windGenerationMax = Mekanism.configuration.get("generation", "WindGenerationMax", 480D).getDouble(480D); } //Ensure max > min to avoid division by zero later final int minY = Mekanism.configuration.get("generation", "WindGenerationMinY", 24).getInt(24); final int maxY = Mekanism.configuration.get("generation", "WindGenerationMaxY", 255).getInt(255); generators.windGenerationMinY = minY; generators.windGenerationMaxY = Math.max(minY + 1, maxY); } /** * Get the actual interface for a GUI. Client-only. * @param ID - gui ID * @param player - player that opened the GUI * @param world - world the GUI was opened in * @param x - gui's x position * @param y - gui's y position * @param z - gui's z position * @return the GuiScreen of the GUI */ public Object getClientGui(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } /** * Get the container for a GUI. Common. * @param ID - gui ID * @param player - player that opened the GUI * @param world - world the GUI was opened in * @param x - gui's x position * @param y - gui's y position * @param z - gui's z position * @return the Container of the GUI */ public Container getServerGui(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tileEntity = world.getTileEntity(x, y, z); switch(ID) { case 0: return new ContainerHeatGenerator(player.inventory, (TileEntityHeatGenerator)tileEntity); case 1: return new ContainerSolarGenerator(player.inventory, (TileEntitySolarGenerator)tileEntity); case 3: return new ContainerGasGenerator(player.inventory, (TileEntityGasGenerator)tileEntity); case 4: return new ContainerBioGenerator(player.inventory, (TileEntityBioGenerator)tileEntity); case 5: return new ContainerWindTurbine(player.inventory, (TileEntityWindTurbine)tileEntity); case 10: return new ContainerReactorController(player.inventory, (TileEntityReactorController)tileEntity); case 11: case 12: case 13: return new ContainerNull(player, (TileEntityContainerBlock)tileEntity); case 14: return new ContainerNeutronCapture(player.inventory, (TileEntityReactorNeutronCapture)tileEntity); case 15: return new ContainerNull(player, (TileEntityContainerBlock)tileEntity); } return null; } }