diff --git a/build.gradle b/build.gradle index 9401804d..cfd5cec2 100644 --- a/build.gradle +++ b/build.gradle @@ -39,10 +39,6 @@ repositories { name "ProfMobius" url "http://mobiusstrip.eu/maven" } - maven { - name "OC" - url "http://maven.cil.li/" - } } dependencies { @@ -52,12 +48,14 @@ dependencies { compile codeChickenLibVersion compile argoVersion compile wailaVersion - compile openCVersion + compile files(openCVersion) + compile files(rcVersion) compile files(aeVersion) compile files(cofhCoreVersion) compile files(brVersion) compile files(mekVersion) compile files(buildcraftVersion) + compile files(gregtechVersion) } diff --git a/gradle.properties b/gradle.properties index 4ec68187..e7adeedc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,17 +1,19 @@ -forgeVersion=1.7.10-10.13.4.1558-1.7.10 -ic2Version=net.industrial-craft:industrialcraft-2:2.2.817-experimental:dev +forgeVersion=1.7.10-10.13.4.1614-1.7.10 +ic2Version=net.industrial-craft:industrialcraft-2:2.2.827-experimental:dev codeChickenCoreVersion=codechicken:CodeChickenCore:1.7.10-1.0.7.47:dev notEnoughItemsVersion=codechicken:NotEnoughItems:1.7.10-1.0.5.120:dev codeChickenLibVersion=codechicken:CodeChickenLib:1.7.10-1.1.3.138:dev argoVersion=net.sourceforge.argo:argo:3.19 wailaVersion=mcp.mobius.waila:Waila:1.5.10_1.7.10 -openCVersion=li.cil.oc:OpenComputers:MC1.7.10-1.6.0.883-dev:dev cofhCoreVersion=lib/CoFHCore-[1.7.10]3.1.2-325-dev.jar brVersion=lib/BigReactors-0.4.3A.jar aeVersion=lib/appliedenergistics2-rv3-beta-5-dev.jar buildcraftVersion=lib/buildcraft-7.1.16-dev.jar mekVersion=lib/Mekanism-1.7.10-8.1.7.252.jar +openCVersion=lib/OpenComputers-MC1.7.10-1.7.2.1166-universal.jar +rcVersion=lib/RotaryCraft1.7.10V19c.jar +gregtechVersion=lib/gregtech-5.09.32pre3stable.jar -newNuclearControlVersion=2.4.3a +newNuclearControlVersion=2.4.4a \ No newline at end of file diff --git a/lib/OpenComputers-MC1.7.10-1.7.2.1166-universal.jar b/lib/OpenComputers-MC1.7.10-1.7.2.1166-universal.jar new file mode 100644 index 00000000..bf2e0566 Binary files /dev/null and b/lib/OpenComputers-MC1.7.10-1.7.2.1166-universal.jar differ diff --git a/lib/RotaryCraft1.7.10V19c.jar b/lib/RotaryCraft1.7.10V19c.jar new file mode 100644 index 00000000..a08fe381 Binary files /dev/null and b/lib/RotaryCraft1.7.10V19c.jar differ diff --git a/lib/gregtech-5.09.32pre3stable.jar b/lib/gregtech-5.09.32pre3stable.jar new file mode 100644 index 00000000..d2b89578 Binary files /dev/null and b/lib/gregtech-5.09.32pre3stable.jar differ diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/ConfigurationHandler.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/ConfigurationHandler.java index ee98a04c..37ce60fc 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/ConfigurationHandler.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/ConfigurationHandler.java @@ -5,50 +5,51 @@ import net.minecraftforge.common.config.Configuration; import java.io.File; -import java.util.UUID; +//import java.util.UUID; public class ConfigurationHandler { - public Configuration configuration; + public Configuration configuration; - public void init(File configFile) { - if (configuration == null) { - configuration = new Configuration(configFile); - } - loadConfiguration(); - } + public void init(File configFile) { + if (configuration == null) { + configuration = new Configuration(configFile); + } + loadConfiguration(); + } - private void loadConfiguration() { - try { - IC2NuclearControl.instance.alarmRange = configuration.get(Configuration.CATEGORY_GENERAL, "alarmRange", 64).getInt(); - IC2NuclearControl.instance.maxAlarmRange = configuration.get(Configuration.CATEGORY_GENERAL, "maxAlarmRange", 128).getInt(); - IC2NuclearControl.instance.allowedAlarms = configuration.get(Configuration.CATEGORY_GENERAL, "allowedAlarms", "default,sci-fi").getString().replaceAll(" ", ""); - IC2NuclearControl.instance.remoteThermalMonitorEnergyConsumption = configuration.get(Configuration.CATEGORY_GENERAL, "remoteThermalMonitorEnergyConsumption", 1).getInt(); - IC2NuclearControl.instance.screenRefreshPeriod = configuration.get(Configuration.CATEGORY_GENERAL, "infoPanelRefreshPeriod",20).getInt(); - IC2NuclearControl.instance.rangeTriggerRefreshPeriod = configuration.get(Configuration.CATEGORY_GENERAL, "rangeTriggerRefreshPeriod", 20).getInt(); - IC2NuclearControl.instance.SMPMaxAlarmRange = configuration.get(Configuration.CATEGORY_GENERAL, "SMPMaxAlarmRange", 256).getInt(); - IC2NuclearControl.instance.disableCapes = configuration.get(Configuration.CATEGORY_GENERAL, "disableCapes", false).getBoolean(false); - //IC2NuclearControl.isHttpSensorAvailableClient = configuration.getBoolean("isHttpSensorAvailableClient", Configuration.CATEGORY_GENERAL, false, "Turns on/off the recipes for the web upgrade client side"); - //IC2NuclearControl.isHttpSensorAvailableServer = configuration.getBoolean("isHttpSensorAvailableServer", Configuration.CATEGORY_GENERAL, true, "Turns on/off the recipes for the web upgrade server side"); - //IC2NuclearControl.instance.httpSensorKey = configuration.get(Configuration.CATEGORY_GENERAL, "httpSensorKey", UUID.randomUUID().toString().replace("-", "")).getString(); - IC2NuclearControl.instance.recipes = configuration.getString("recipes", Configuration.CATEGORY_GENERAL, "normal", "Valid inputs: normal, old or gregtech"); - }catch(Exception e) { - IC2NuclearControl.logger.error( - "Mod has a problem loading it's configuration", e); - }finally { - if(configuration.hasChanged()) { - configuration.save(); - } - } - } + private void loadConfiguration() { + try { + IC2NuclearControl.instance.alarmRange = configuration.get(Configuration.CATEGORY_GENERAL, "alarmRange", 64).getInt(); + IC2NuclearControl.instance.maxAlarmRange = configuration.get(Configuration.CATEGORY_GENERAL, "maxAlarmRange", 128).getInt(); + IC2NuclearControl.instance.allowedAlarms = configuration.get(Configuration.CATEGORY_GENERAL, "allowedAlarms", "default,sci-fi").getString().replaceAll(" ", ""); + IC2NuclearControl.instance.remoteThermalMonitorEnergyConsumption = configuration.get(Configuration.CATEGORY_GENERAL, "remoteThermalMonitorEnergyConsumption", 1).getInt(); + IC2NuclearControl.instance.screenRefreshPeriod = configuration.get(Configuration.CATEGORY_GENERAL, "infoPanelRefreshPeriod", 20).getInt(); + IC2NuclearControl.instance.dataRefreshPeriod = configuration.get(Configuration.CATEGORY_GENERAL, "sensorDataRefreshPeriod", 4, "can not be longer than infoPanelRefreshPeriod [default: 4]").getInt(); + IC2NuclearControl.instance.rangeTriggerRefreshPeriod = configuration.get(Configuration.CATEGORY_GENERAL, "rangeTriggerRefreshPeriod", 20).getInt(); + IC2NuclearControl.instance.SMPMaxAlarmRange = configuration.get(Configuration.CATEGORY_GENERAL, "SMPMaxAlarmRange", 256).getInt(); + IC2NuclearControl.instance.disableCapes = configuration.get(Configuration.CATEGORY_GENERAL, "disableCapes", false).getBoolean(false); + //IC2NuclearControl.isHttpSensorAvailableClient = configuration.getBoolean("isHttpSensorAvailableClient", Configuration.CATEGORY_GENERAL, false, "Turns on/off the recipes for the web upgrade client side"); + //IC2NuclearControl.isHttpSensorAvailableServer = configuration.getBoolean("isHttpSensorAvailableServer", Configuration.CATEGORY_GENERAL, true, "Turns on/off the recipes for the web upgrade server side"); + //IC2NuclearControl.instance.httpSensorKey = configuration.get(Configuration.CATEGORY_GENERAL, "httpSensorKey", UUID.randomUUID().toString().replace("-", "")).getString(); + IC2NuclearControl.instance.recipes = configuration.getString("recipes", Configuration.CATEGORY_GENERAL, "normal", "Valid inputs: normal, old or gregtech"); + } catch (Exception e) { + IC2NuclearControl.logger.error( + "Mod has a problem loading it's configuration", e); + } finally { + if (configuration.hasChanged()) { + configuration.save(); + } + } + } - public void save(){ - if (configuration.hasChanged()) { - configuration.save(); - } - } + public void save() { + if (configuration.hasChanged()) { + configuration.save(); + } + } - @SubscribeEvent - public void onConfigurationChangedEvent(ConfigChangedEvent.OnConfigChangedEvent event) { - loadConfiguration(); - } + @SubscribeEvent + public void onConfigurationChangedEvent(ConfigChangedEvent.OnConfigChangedEvent event) { + loadConfiguration(); + } } diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/IC2NuclearControl.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/IC2NuclearControl.java index 739b043e..c0035b1e 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/IC2NuclearControl.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/IC2NuclearControl.java @@ -23,8 +23,10 @@ import shedar.mods.ic2.nuclearcontrol.blocks.BlockNuclearControlLight; import shedar.mods.ic2.nuclearcontrol.blocks.BlockNuclearControlMain; import shedar.mods.ic2.nuclearcontrol.crossmod.CrossModLoader; +import shedar.mods.ic2.nuclearcontrol.crossmod.ModLib; import shedar.mods.ic2.nuclearcontrol.crossmod.RF.CrossBuildcraft; import shedar.mods.ic2.nuclearcontrol.crossmod.RF.CrossRF; +import shedar.mods.ic2.nuclearcontrol.crossmod.gregtech.CrossGregTech; import shedar.mods.ic2.nuclearcontrol.crossmod.gregtech.GregtechRecipes; import shedar.mods.ic2.nuclearcontrol.crossmod.ic2.IC2Cross; import shedar.mods.ic2.nuclearcontrol.crossmod.ic2.IC2Type; @@ -54,7 +56,7 @@ -@Mod(modid = "IC2NuclearControl", name = "Nuclear Control 2", version = "@VERSION@", dependencies = "required-after:IC2", guiFactory = "shedar.mods.ic2.nuclearcontrol.gui.GuiFactory") +@Mod(modid = "IC2NuclearControl", name = "Nuclear Control 2", version = "@VERSION@", dependencies = "required-after:IC2; after:gregtech;", guiFactory = "shedar.mods.ic2.nuclearcontrol.gui.GuiFactory") public class IC2NuclearControl { // The instance of your mod forge uses @@ -108,6 +110,7 @@ public class IC2NuclearControl { public int remoteThermalMonitorEnergyConsumption; public ScreenManager screenManager = new ScreenManager(); public int screenRefreshPeriod; + public int dataRefreshPeriod; public int rangeTriggerRefreshPeriod; public boolean disableCapes; public String recipes; @@ -117,6 +120,7 @@ public class IC2NuclearControl { public CrossRF crossRF; public CrossOpenComputers crossOC; public IC2Cross crossIc2; + public CrossGregTech crossGT; protected void initBlocks() { blockNuclearControlMain = new BlockNuclearControlMain(); @@ -227,6 +231,7 @@ public void postInit(FMLPostInitializationEvent event) { } else { RecipesNew.addRecipes(); } + crossGT = new CrossGregTech(); /* //I thought about doing this, but I didn't :P ItemStack dBlock = new ItemStack(Blocks.diamond_block); diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ModLib.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ModLib.java index 88836c26..58f12692 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ModLib.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ModLib.java @@ -9,4 +9,5 @@ public class ModLib { public static final String BIG_REACTORS = "BigReactors"; public static final String ENDER_IO = "EnderIO"; public static final String MEKANISM = "Mekanism"; + public static final String GT = "gregtech"; } diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/gregtech/CrossGregTech.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/gregtech/CrossGregTech.java new file mode 100644 index 00000000..d11ed7ad --- /dev/null +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/gregtech/CrossGregTech.java @@ -0,0 +1,49 @@ +package shedar.mods.ic2.nuclearcontrol.crossmod.gregtech; + +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.items.GT_RadioactiveCell_Item; +import net.minecraft.item.ItemStack; + +import gregtech.api.items.GT_RadioactiveCellIC_Item; +import shedar.mods.ic2.nuclearcontrol.IC2NuclearControl; +import shedar.mods.ic2.nuclearcontrol.crossmod.ModLib; + +public class CrossGregTech { + private boolean _isApiAvailable; + + public CrossGregTech() { + if(Loader.isModLoaded(ModLib.GT)) { + _isApiAvailable = true; + IC2NuclearControl.logger.info("[IC2NuclearControl] find GregTech"); + } else { + _isApiAvailable = false; + } + + } + public boolean isApiAvailable() + { + return _isApiAvailable; + } + + public int getNuclearCellTimeLeft(ItemStack stack) { + if (!_isApiAvailable || stack == null) { + return 0; + } + try { + if (stack.getItem() instanceof GT_RadioactiveCellIC_Item) { + String rodName = stack.getUnlocalizedName(); + GT_RadioactiveCell_Item rod = (GT_RadioactiveCell_Item) GameRegistry.findItem(ModLib.GT, rodName); + int maxDamage = rod.getMaxDamageEx(); + int currentDmg = GT_RadioactiveCellIC_Item.getDurabilityOfStack(stack); + int dmg = maxDamage - currentDmg; + return (dmg > 0) ? dmg : 0; + } else { + return -1; + } + } catch (Exception e) { + IC2NuclearControl.logger.error(e); + return -1; + } + } +} \ No newline at end of file diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ClassicCross.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ClassicCross.java index 1c837215..18b2d3ea 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ClassicCross.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ClassicCross.java @@ -23,7 +23,7 @@ public int getNuclearCellTimeLeft(ItemStack par1) { if (par1.getItem() instanceof ItemReactorUranium) { return 10000 - par1.getItemDamage(); } - return 0; + return -1; } @Override diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ExpCross.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ExpCross.java index ec5c7f34..6d353e4b 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ExpCross.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/crossmod/ic2/IC2ExpCross.java @@ -27,10 +27,11 @@ public int getNuclearCellTimeLeft(ItemStack par1) { } if (par1.getItem() instanceof ItemReactorUranium || par1.getItem() instanceof ItemReactorLithiumCell || par1.getItem() instanceof ItemReactorMOX) { - return par1.getMaxDamage() - par1.getItemDamage(); + int dmg = par1.getMaxDamage() - par1.getItemDamage(); + return (dmg > 0) ? dmg : 0; } - return 0; + return -1; } @Override diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java index 3a626ac1..95204783 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java @@ -70,6 +70,8 @@ public class TileEntityInfoPanel extends TileEntity implements ISlotItemFilter, protected int updateTicker; protected int dataTicker; protected int tickRate; + protected int dt; + protected int updatedataTicker; public boolean init; public ItemStack inventory[]; public NBTTagCompound screenData; @@ -315,7 +317,9 @@ public TileEntityInfoPanel(int inventorySize) { cardData = new HashMap>(); tickRate = IC2NuclearControl.instance.screenRefreshPeriod; updateTicker = tickRate; - dataTicker = 4; + dt = IC2NuclearControl.instance.dataRefreshPeriod; + dataTicker = (dt > tickRate) ? tickRate : dt; + updatedataTicker = dataTicker; displaySettings = new HashMap>(1); displaySettings.put((byte) 0, new HashMap()); powered = false; @@ -394,10 +398,10 @@ public void updateEntity() { if (!init) { initData(); } - dataTicker--; - if (dataTicker <= 0) { + updatedataTicker--; + if (updatedataTicker <= 0) { resetCardData(); - dataTicker = 4; + updatedataTicker = dataTicker; } if (!worldObj.isRemote) { if (updateTicker-- > 0) diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/utils/NuclearHelper.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/utils/NuclearHelper.java index 26f6dce1..a6353a98 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/utils/NuclearHelper.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/utils/NuclearHelper.java @@ -1,5 +1,6 @@ package shedar.mods.ic2.nuclearcontrol.utils; +import cpw.mods.fml.common.Loader; import ic2.api.reactor.IReactor; import ic2.api.reactor.IReactorChamber; import net.minecraft.item.ItemStack; @@ -78,7 +79,16 @@ public static boolean isProducing(IReactor reactor) { } public static int getNuclearCellTimeLeft(ItemStack rStack) { - return IC2NuclearControl.instance.crossIc2.getNuclearCellTimeLeft(rStack); + int val; + if (IC2NuclearControl.instance.crossGT.isApiAvailable()) { + val = IC2NuclearControl.instance.crossGT.getNuclearCellTimeLeft(rStack); + if (val == -1) + { + val = IC2NuclearControl.instance.crossIc2.getNuclearCellTimeLeft(rStack); + } + } else { + val = IC2NuclearControl.instance.crossIc2.getNuclearCellTimeLeft(rStack); + } + return val; } - }