From 36d359cf95743fc4fdfec8b8dec808d2afecc8aa Mon Sep 17 00:00:00 2001 From: xbony2 Date: Wed, 11 Feb 2015 17:33:00 -0500 Subject: [PATCH] that was quite easy --- build.gradle | 54 ++++++ gradle.properties | 4 + gradlew | 164 ++++++++++++++++++ gradlew.bat | 90 ++++++++++ .../AdvPowerMan/AdvancedPowerManagement.java | 2 +- .../tileentities/TEAdjustableTransformer.java | 28 +-- .../tileentities/TEAdvEmitter.java | 5 + .../tileentities/TEBatteryStation.java | 66 +++---- .../tileentities/TEChargingBench.java | 107 ++++-------- src/main/resources/mcmod.info | 6 +- 10 files changed, 400 insertions(+), 126 deletions(-) create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100755 gradlew create mode 100644 gradlew.bat diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..956b812 --- /dev/null +++ b/build.gradle @@ -0,0 +1,54 @@ +buildscript { + repositories { + mavenCentral() + maven { + name = "forge" + url = "http://files.minecraftforge.net/maven" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/repositories/snapshots/" + } + } + dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + } +} + +apply plugin: 'forge' + +version = newAPMVersion +group= "com.kaijin.AdvPowerMan" +archivesBaseName = "AdvPowerMan" +minecraft { + version = forgeVersion + runDir = "eclipse" + replace "@VERSION@", project.version +} + +repositories { + maven { + name = "ic2" + url = "http://maven.ic2.player.to/" + } +} + +dependencies { + compile ic2Version +} + + +processResources { + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + expand 'version':project.version, 'mcversion':project.minecraft.version + } + + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..c2b9b65 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,4 @@ +forgeVersion=1.7.10-10.13.2.1236 +ic2Version=net.industrial-craft:industrialcraft-2:2.2.660-experimental:dev + +newAPMVersion=2.0.0a diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/com/kaijin/AdvPowerMan/AdvancedPowerManagement.java b/src/main/java/com/kaijin/AdvPowerMan/AdvancedPowerManagement.java index a515c9e..8a29a00 100755 --- a/src/main/java/com/kaijin/AdvPowerMan/AdvancedPowerManagement.java +++ b/src/main/java/com/kaijin/AdvPowerMan/AdvancedPowerManagement.java @@ -49,7 +49,7 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; -@Mod(modid = "AdvancedPowerManagement", name="Advanced Power Management", version="1.7.2.02", dependencies = "required-after:IC2") +@Mod(modid = "AdvancedPowerManagement", name="Advanced Power Management", version="2.0.0a", dependencies = "required-after:IC2") public class AdvancedPowerManagement // implements ICraftingHandler { diff --git a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdjustableTransformer.java b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdjustableTransformer.java index 311beee..c2227a5 100755 --- a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdjustableTransformer.java +++ b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdjustableTransformer.java @@ -204,10 +204,15 @@ public class TEAdjustableTransformer extends TECommon implements IEnergySource, } @Override - public int getMaxSafeInput() + public int getSinkTier() { return maxInput; } + + @Override + public int getSourceTier() { + return maxInput; + } @Override public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) @@ -218,10 +223,8 @@ public class TEAdjustableTransformer extends TECommon implements IEnergySource, } @Override - public double demandedEnergyUnits() - { - if(!receivingRedstoneSignal()) - { + public double getDemandedEnergy(){ + if(!receivingRedstoneSignal()){ final int tickAmt = Math.max(outputRate - energyReceived, 0); final int capAmt = Math.max(energyCap - energyBuffer, 0); //System.out.println("demandsEnergy: " + amt); @@ -231,13 +234,12 @@ public class TEAdjustableTransformer extends TECommon implements IEnergySource, } @Override - public double injectEnergyUnits(ForgeDirection directionFrom, double supply) - { + public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) { //System.out.println("energyBuffer: " + energyBuffer); if (AdvancedPowerManagement.proxy.isServer()) { // if supply is greater than the max we can take per tick - if (supply > maxInput) + if (amount > maxInput) { //If the supplied EU is over the baseMaxInput, we're getting //supplied higher than acceptable current. Pop ourselves off @@ -245,16 +247,16 @@ public class TEAdjustableTransformer extends TECommon implements IEnergySource, //somehow was 1EU, return zero to keep IC2 from spitting out //massive errors in the log selfDestroy(); - if (supply <= 1) + if (amount <= 1) return 0; else - return supply - 1; + return amount - 1; } else { - energyReceived += supply; - energyBuffer += supply; - inputTracker.tick((int)supply); + energyReceived += amount; + energyBuffer += amount; + inputTracker.tick((int)amount); } } return 0; diff --git a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdvEmitter.java b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdvEmitter.java index 879b0a0..4c35354 100755 --- a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdvEmitter.java +++ b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEAdvEmitter.java @@ -194,6 +194,11 @@ public class TEAdvEmitter extends TECommon implements IEnergySource energyBuffer -= packetSize; } } + + @Override + public int getSourceTier() { + return 4; //XXX: cause I dunno what to put... + } // Networking stuff diff --git a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEBatteryStation.java b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEBatteryStation.java index bb2eb93..9ad72c2 100755 --- a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEBatteryStation.java +++ b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEBatteryStation.java @@ -35,8 +35,7 @@ import net.minecraftforge.common.util.Constants; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class TEBatteryStation extends TECommonBench implements IEnergySource, IInventory, ISidedInventory -{ +public class TEBatteryStation extends TECommonBench implements IEnergySource, IInventory, ISidedInventory{ public int opMode; // Base values @@ -103,6 +102,11 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II currentEnergy -= amount; } } + + @Override + public int getSourceTier() { + return 4; //XXX: cause I dunno what to put... + } // End IC2 API @@ -204,7 +208,7 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II } @Override - public void updateEntity() //TODO Marked for easy access + public void updateEntity() { if (AdvancedPowerManagement.proxy.isClient()) return; @@ -247,45 +251,37 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II } } - private void drainPowerSource() - { + private void drainPowerSource(){ hasEnoughItems = false; - for (int i = Info.BS_SLOT_POWER_START; i < Info.BS_SLOT_POWER_START + 12; i++) - { + for (int i = Info.BS_SLOT_POWER_START; i < Info.BS_SLOT_POWER_START + 12; i++){ //if (ChargingBench.isDebugging) System.out.println("currentEnergy: " + currentEnergy + " baseMaxOutput: " + baseMaxOutput); - if (currentEnergy >= packetSize) - { + if (currentEnergy >= packetSize){ hasEnoughItems = true; break; } ItemStack stack = contents[i]; - if (stack != null && stack.getItem() instanceof IElectricItem && stack.stackSize == 1) - { + if (stack != null && stack.getItem() instanceof IElectricItem && stack.stackSize == 1){ IElectricItem item = (IElectricItem)(stack.getItem()); - if (item.getTier(stack) <= powerTier && item.canProvideEnergy(stack)) - { + if (item.getTier(stack) <= powerTier && item.canProvideEnergy(stack)){ Item emptyItem = item.getEmptyItem(stack); int chargedItemID = Item.getIdFromItem(item.getChargedItem(stack)); - if (Item.getIdFromItem(stack.getItem()) == chargedItemID) - { - int transferLimit = item.getTransferLimit(stack); + if (Item.getIdFromItem(stack.getItem()) == chargedItemID){ + double transferLimit = item.getTransferLimit(stack); //int amountNeeded = baseMaxOutput - currentEnergy; if (transferLimit == 0) transferLimit = packetSize; //if (transferLimit > amountNeeded) transferLimit = amountNeeded; - int chargeReturned = ElectricItem.manager.discharge(stack, transferLimit, powerTier, false, false); - if (chargeReturned > 0) - { + double chargeReturned = ElectricItem.manager.discharge(stack, transferLimit, powerTier, false, false, false); + if (chargeReturned > 0){ // Add the energy we received to our current energy level currentEnergy += chargeReturned; doingWork = true; } // Workaround for buggy IC2 API .discharge that automatically switches stack to emptyItemID but leaves a stackTagCompound on it, so it can't be stacked with never-used empties - if (chargedItemID != Item.getIdFromItem(emptyItem) && (chargeReturned < transferLimit || ElectricItem.manager.discharge(stack, 1, powerTier, false, true) == 0)) - { + if (chargedItemID != Item.getIdFromItem(emptyItem) && (chargeReturned < transferLimit || ElectricItem.manager.discharge(stack, 1, powerTier, false, true, false) == 0)){ //if (ChargingBench.isDebugging) System.out.println("Switching to emptyItemID: " + emptyItemID + " from stack.itemID: " + stack.itemID + " - chargedItemID: " + chargedItemID); setInventorySlotContents(i, new ItemStack(emptyItem, 1, 0)); } @@ -343,7 +339,7 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II } else if (outputStack == null) { - boolean empty = ElectricItem.manager.discharge(currentStack, 1, powerTier, true, true) == 0; + boolean empty = ElectricItem.manager.discharge(currentStack, 1, powerTier, true, true, false) == 0; if (empty) { // Pick Me @@ -438,7 +434,7 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II final IElectricItem item = (IElectricItem)(stack.getItem()); if (item.getTier(stack) <= powerTier && item.canProvideEnergy(stack) && Item.getIdFromItem(stack.getItem()) == Item.getIdFromItem(item.getChargedItem(stack))) { - final int chargeReturned = ElectricItem.manager.discharge(stack, Integer.MAX_VALUE, powerTier, true, true); + final double chargeReturned = ElectricItem.manager.discharge(stack, Integer.MAX_VALUE, powerTier, true, true, false); if (chargeReturned > 0) { // Add the energy we received to our current energy level @@ -459,15 +455,13 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II } @Override - protected void addUniqueDescriptionData(ByteBuf data) throws IOException - { + protected void addUniqueDescriptionData(ByteBuf data) throws IOException{ data.writeBoolean(doingWork); } @SideOnly(Side.CLIENT) @Override - public void receiveDescriptionData(int packetID, ByteBuf stream) - { + public void receiveDescriptionData(int packetID, ByteBuf stream){ boolean b = doingWork; //try //{ @@ -538,8 +532,7 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II // Returns true if automation can extract the given item in the given slot from the given side. Args: Slot, item, side @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) // canExtractItem - { + public boolean canExtractItem(int i, ItemStack itemstack, int j){ // canExtractItem if (i == Info.BS_SLOT_OUTPUT) return true; return false; } @@ -547,17 +540,14 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II // IInventory @Override - public int getSizeInventory() - { + public int getSizeInventory(){ // Only input/output slots are accessible to machines return 2; } @Override - public String getInventoryName() - { - switch (baseTier) - { + public String getInventoryName(){ + switch (baseTier){ case 1: return Info.KEY_BLOCK_NAMES[8] + Info.KEY_NAME_SUFFIX; case 2: @@ -569,10 +559,8 @@ public class TEBatteryStation extends TECommonBench implements IEnergySource, II } @Override - public void markDirty(int slot) - { - if (slot == Info.BS_SLOT_INPUT || slot == Info.BS_SLOT_OUTPUT) - { + public void markDirty(int slot){ + if (slot == Info.BS_SLOT_INPUT || slot == Info.BS_SLOT_OUTPUT){ rejectInvalidInput(); } super.markDirty(); diff --git a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEChargingBench.java b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEChargingBench.java index 78ebf74..a941403 100755 --- a/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEChargingBench.java +++ b/src/main/java/com/kaijin/AdvPowerMan/tileentities/TEChargingBench.java @@ -151,8 +151,7 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner } @Override - public int getMaxSafeInput() - { + public int getSinkTier() { return adjustedMaxInput; } @@ -414,7 +413,7 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner */ private void drainPowerSource() { - int chargeReturned = 0; + double chargeReturned = 0; ItemStack stack = getStackInSlot(Info.CB_SLOT_POWER_SOURCE); if (stack != null && stack.getItem() instanceof IElectricItem && currentEnergy < adjustedStorage) @@ -428,8 +427,8 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner { if (powerSource.getTier(stack) <= powerTier && powerSource.canProvideEnergy(stack)) { - int itemTransferLimit = powerSource.getTransferLimit(stack); - int energyNeeded = adjustedStorage - currentEnergy; + double itemTransferLimit = powerSource.getTransferLimit(stack); + double energyNeeded = adjustedStorage - currentEnergy; // Test if the amount of energy we have room for is greater than what the item can transfer per tick. if (energyNeeded > itemTransferLimit) @@ -441,7 +440,7 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner if (energyNeeded > 0) { - chargeReturned = ElectricItem.manager.discharge(stack, energyNeeded, powerTier, false, false); + chargeReturned = ElectricItem.manager.discharge(stack, energyNeeded, powerTier, false, false, false); // Add the energy we received to our current energy level, currentEnergy += chargeReturned; if (chargeReturned > 0) doingWork = true; @@ -451,8 +450,7 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner } // Workaround for buggy IC2 API .discharge that automatically switches stack to emptyItemID but leaves a stackTagCompound on it, so it can't be stacked with never-used empties - if (chargedItemID != Item.getIdFromItem(emptyItem) && ElectricItem.manager.discharge(stack, 1, powerTier, false, true) == 0) - { + if (chargedItemID != Item.getIdFromItem(emptyItem) && ElectricItem.manager.discharge(stack, 1, powerTier, false, true, true) == 0){ //if (ChargingBench.isDebugging) System.out.println("Switching to emptyItemID: " + emptyItemID + " from stack.itemID: " + stack.itemID + " - chargedItemID: " + chargedItemID); setInventorySlotContents(Info.CB_SLOT_POWER_SOURCE, new ItemStack(emptyItem, 1, 0)); //ItemStack newStack = new ItemStack(emptyItemID, 1, 0); @@ -470,41 +468,31 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner * item. Continue doing this for all items in the inventory until we reach the end of the main * inventory or run out of internal EU storage. */ - private void chargeItems() - { - for (int i = Info.CB_SLOT_CHARGING; i < Info.CB_SLOT_CHARGING + 12; i++) - { + private void chargeItems(){ + for (int i = Info.CB_SLOT_CHARGING; i < Info.CB_SLOT_CHARGING + 12; i++){ ItemStack stack = contents[i]; - if (stack != null && stack.getItem() instanceof IElectricItem && stack.stackSize == 1) - { + if (stack != null && stack.getItem() instanceof IElectricItem && stack.stackSize == 1){ IElectricItem item = (IElectricItem)(stack.getItem()); - if (item.getTier(stack) <= baseTier) - { - int itemTransferLimit = item.getTransferLimit(stack); + if (item.getTier(stack) <= baseTier){ + double itemTransferLimit = item.getTransferLimit(stack); if (itemTransferLimit == 0) itemTransferLimit = baseMaxInput; int adjustedTransferLimit = (int)Math.ceil(chargeFactor * itemTransferLimit); - int amountNeeded; - int missing; + double amountNeeded; + double missing; int consumption; - if (Item.getIdFromItem(item.getChargedItem(stack)) != Item.getIdFromItem(item.getEmptyItem(stack)) || stack.isStackable()) - { + if (Item.getIdFromItem(item.getChargedItem(stack)) != Item.getIdFromItem(item.getEmptyItem(stack)) || stack.isStackable()){ // Running stack.copy() on every item every tick would be a horrible thing for performance, but the workaround is needed // for ElectricItem.charge adding stackTagCompounds for charge level to EmptyItemID batteries even when run in simulate mode. // Limiting its use by what is hopefully a broad enough test to catch all cases where it's necessary in order to avoid problems. // Using it for any item types listed as stackable and for any items where the charged and empty item IDs differ. final ItemStack stackCopy = stack.copy(); amountNeeded = ElectricItem.manager.charge(stackCopy, adjustedTransferLimit, baseTier, true, true); - if (amountNeeded == adjustedTransferLimit) - { + if (amountNeeded == adjustedTransferLimit){ missing = ElectricItem.manager.charge(stackCopy, item.getMaxCharge(stackCopy), baseTier, true, true); - } - else missing = amountNeeded; - } - else - { + }else missing = amountNeeded; + }else{ amountNeeded = ElectricItem.manager.charge(stack, adjustedTransferLimit, baseTier, true, true); - if (amountNeeded == adjustedTransferLimit) - { + if (amountNeeded == adjustedTransferLimit){ missing = ElectricItem.manager.charge(stack, item.getMaxCharge(stack), baseTier, true, true); } else missing = amountNeeded; @@ -516,10 +504,8 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner energyRequired += (int)Math.ceil((drainFactor / chargeFactor) * missing); int adjustedEnergyUse = (int)Math.ceil((drainFactor / chargeFactor) * amountNeeded); - if (adjustedEnergyUse > 0 && currentEnergy > 0) - { - if (adjustedEnergyUse > currentEnergy) - { + if (adjustedEnergyUse > 0 && currentEnergy > 0){ + if (adjustedEnergyUse > currentEnergy){ // Allow that last trickle of energy to be transferred out of the bench adjustedTransferLimit = (adjustedTransferLimit * currentEnergy) / adjustedEnergyUse; adjustedEnergyUse = currentEnergy; @@ -717,10 +703,8 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner } @Override - public String getInventoryName() - { - switch (baseTier) - { + public String getInventoryName(){ + switch (baseTier){ case 1: return Info.KEY_BLOCK_NAMES[0] + Info.KEY_NAME_SUFFIX; case 2: @@ -732,32 +716,22 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner } @Override - public void markDirty(int slot) - { - if (slot == Info.CB_SLOT_INPUT || slot == Info.CB_SLOT_OUTPUT) - { + public void markDirty(int slot){ + if (slot == Info.CB_SLOT_INPUT || slot == Info.CB_SLOT_OUTPUT){ // Move item from input to output if not valid. (Wrong tier or not electric item.) - if (contents[Info.CB_SLOT_INPUT] != null && contents[Info.CB_SLOT_OUTPUT] == null) - { - if (!isItemValid(Info.CB_SLOT_INPUT, contents[Info.CB_SLOT_INPUT])) - { + if (contents[Info.CB_SLOT_INPUT] != null && contents[Info.CB_SLOT_OUTPUT] == null){ + if (!isItemValid(Info.CB_SLOT_INPUT, contents[Info.CB_SLOT_INPUT])){ contents[Info.CB_SLOT_OUTPUT] = contents[Info.CB_SLOT_INPUT]; contents[Info.CB_SLOT_INPUT] = null; } } - } - else if (slot >= Info.CB_SLOT_UPGRADE && slot < Info.CB_SLOT_UPGRADE + 4) - { + }else if (slot >= Info.CB_SLOT_UPGRADE && slot < Info.CB_SLOT_UPGRADE + 4){ // One of the upgrade slots was touched, so we need to recalculate. doUpgradeEffects(); - } - else if (slot >= Info.CB_SLOT_CHARGING && slot < Info.CB_SLOT_CHARGING + 12) - { + }else if (slot >= Info.CB_SLOT_CHARGING && slot < Info.CB_SLOT_CHARGING + 12){ // Make sure it's not fully charged already? Not sure, full items will be output in updateEntity - } - else if (slot == Info.CB_SLOT_POWER_SOURCE) - { + }else if (slot == Info.CB_SLOT_POWER_SOURCE){ // Perhaps eject the item if it's not valid? No, just leave it alone. // If machinery added it the player can figure out the problem by trying to remove and replace it and realizing it won't fit. } @@ -765,8 +739,7 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner } @Override - public void markDirty() - { + public void markDirty(){ // We're not sure what called this or what slot was altered, so make sure the upgrade effects are correct just in case and then pass the call on. doUpgradeEffects(); super.markDirty(); @@ -788,23 +761,20 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner } @Override - public double demandedEnergyUnits() { + public double getDemandedEnergy() { // return (currentEnergy < adjustedStorage && !receivingRedstoneSignal()); - if(!receivingRedstoneSignal()) - { + if(!receivingRedstoneSignal()){ return adjustedStorage - currentEnergy; } return 0; } @Override - public double injectEnergyUnits(ForgeDirection directionFrom, double amount) { + public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) { int surplus = 0; - if (AdvancedPowerManagement.proxy.isServer()) - { + if (AdvancedPowerManagement.proxy.isServer()){ // if supply is greater than the max we can take per tick - if (amount > adjustedMaxInput) - { + if (amount > adjustedMaxInput){ //If the supplied EU is over the baseMaxInput, we're getting //supplied higher than acceptable current. Pop ourselves off //into the world and return all but 1 EU, or if the supply @@ -815,15 +785,12 @@ public class TEChargingBench extends TECommonBench implements IEnergySink, IEner return 0; else return amount - 1; - } - else - { + }else{ if (currentEnergy > adjustedStorage) currentEnergy = adjustedStorage; currentEnergy += amount; energyReceived += amount; // check if our current energy level is now over the max energy level - if (currentEnergy > adjustedStorage) - { + if (currentEnergy > adjustedStorage){ //if so, our surplus to return is equal to that amount over surplus = currentEnergy - adjustedStorage; //and set our current energy level TO our max energy level diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index a9a6067..c67bba0 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,14 +3,14 @@ "modid": "AdvancedPowerManagement", "name": "Advanced Power Management", "description": "This mod adds a Charging Bench, Battery Station, Storage Monitor, and Adjustable Transformer to Industrial Craft 2. Charge or drain up to 12 items at once, and easily automate your IC2 power generation and storage systems!", - "mcversion": "1.7.2", - "version": "1.7.2.02", + "mcversion": "1.7.10", + "version": "2.0.0a", "logoFile": "", "screenshots": [ "" ], "url": "http://www.kaijin.com/", "updateUrl": "", "authorList": [ "Pantheis", "Tallinu" ], - "credits": "Charging Bench: Drashian, Starlight, Zuxelus", + "credits": "Charging Bench: Drashian, Starlight, Zuxelus, Xbony2", "dependencies": [ "IC2" ] } ] \ No newline at end of file