that was quite easy

This commit is contained in:
xbony2 2015-02-11 17:33:00 -05:00
parent 5e18fc37be
commit 36d359cf95
10 changed files with 400 additions and 126 deletions

54
build.gradle Normal file
View File

@ -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'
}
}

4
gradle.properties Normal file
View File

@ -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

164
gradlew vendored Executable file
View File

@ -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 "$@"

90
gradlew.bat vendored Normal file
View File

@ -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

View File

@ -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
{

View File

@ -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;

View File

@ -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

View File

@ -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();

View File

@ -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

View File

@ -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" ]
}
]