extrated MjAPI from core
This commit is contained in:
parent
1edde4b1e2
commit
ae1003aaf7
9 changed files with 83 additions and 74 deletions
|
@ -8,7 +8,12 @@
|
|||
*/
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class JavaTools {
|
||||
|
||||
|
@ -30,4 +35,47 @@ public class JavaTools {
|
|||
return result;
|
||||
}
|
||||
|
||||
public <T> T[] concatenate (T[] A, T[] B) {
|
||||
int aLen = A.length;
|
||||
int bLen = B.length;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
T[] C = (T[]) Array.newInstance(A.getClass().getComponentType(), aLen+bLen);
|
||||
System.arraycopy(A, 0, C, 0, aLen);
|
||||
System.arraycopy(B, 0, C, aLen, bLen);
|
||||
|
||||
return C;
|
||||
}
|
||||
|
||||
public static List<Field> getAllFields(Class clas) {
|
||||
List<Field> result = new ArrayList<Field>();
|
||||
|
||||
Class current = clas;
|
||||
|
||||
while (current != null && current != Object.class) {
|
||||
for (Field f : current.getDeclaredFields()) {
|
||||
result.add(f);
|
||||
}
|
||||
|
||||
current = current.getSuperclass();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<Method> getAllMethods(Class clas) {
|
||||
List<Method> result = new ArrayList<Method>();
|
||||
|
||||
Class current = clas;
|
||||
|
||||
while (current != null && current != Object.class) {
|
||||
for (Method m : current.getDeclaredMethods()) {
|
||||
result.add(m);
|
||||
}
|
||||
|
||||
current = current.getSuperclass();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,22 @@
|
|||
package buildcraft.core;
|
||||
/**
|
||||
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
package buildcraft.api.mj;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import buildcraft.api.mj.MjBattery;
|
||||
import buildcraft.core.utils.Utils;
|
||||
import buildcraft.api.core.JavaTools;
|
||||
|
||||
public class ReflectMjAPI {
|
||||
public class MjAPI {
|
||||
|
||||
enum BatteryKind {
|
||||
private enum BatteryKind {
|
||||
Value, Container
|
||||
}
|
||||
|
||||
|
@ -115,7 +122,7 @@ public class ReflectMjAPI {
|
|||
|
||||
private static BatteryField getMjBattery (Class c) {
|
||||
if (!MjBatteries.containsKey(c)) {
|
||||
for (Field f : Utils.getAllFields(c)) {
|
||||
for (Field f : JavaTools.getAllFields(c)) {
|
||||
MjBattery battery = f.getAnnotation (MjBattery.class);
|
||||
|
||||
if (battery != null) {
|
|
@ -17,11 +17,11 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import buildcraft.BuildCraftCore;
|
||||
import buildcraft.api.core.JavaTools;
|
||||
import buildcraft.core.DefaultProps;
|
||||
import buildcraft.core.network.serializers.ClassMapping;
|
||||
import buildcraft.core.network.serializers.ClassSerializer;
|
||||
import buildcraft.core.network.serializers.SerializationContext;
|
||||
import buildcraft.core.utils.Utils;
|
||||
import buildcraft.transport.Pipe;
|
||||
|
||||
/**
|
||||
|
@ -48,7 +48,7 @@ public class RPCHandler {
|
|||
private MethodMapping [] methods;
|
||||
|
||||
public RPCHandler (Class c) {
|
||||
Method [] sortedMethods = Utils.getAllMethods (c).toArray(new Method [0]);
|
||||
Method [] sortedMethods = JavaTools.getAllMethods (c).toArray(new Method [0]);
|
||||
|
||||
LinkedList <MethodMapping> mappings = new LinkedList<MethodMapping>();
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ import net.minecraft.item.Item;
|
|||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import buildcraft.api.core.JavaTools;
|
||||
import buildcraft.api.core.NetworkData;
|
||||
import buildcraft.core.utils.Utils;
|
||||
|
||||
|
@ -124,7 +125,7 @@ public class ClassMapping extends ClassSerializer {
|
|||
cptMapping = get (cptClass);
|
||||
}
|
||||
} else {
|
||||
List <Field> fields = Utils.getAllFields(c);
|
||||
List <Field> fields = JavaTools.getAllFields(c);
|
||||
|
||||
for (Field f : fields) {
|
||||
if (!isSynchronizedField(f)) {
|
||||
|
|
|
@ -13,9 +13,6 @@ import io.netty.buffer.Unpooled;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -540,48 +537,4 @@ public class Utils {
|
|||
|
||||
nbt.setTag(name, nbttaglist);
|
||||
}
|
||||
|
||||
public <T> T[] concatenate (T[] A, T[] B) {
|
||||
int aLen = A.length;
|
||||
int bLen = B.length;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
T[] C = (T[]) Array.newInstance(A.getClass().getComponentType(), aLen+bLen);
|
||||
System.arraycopy(A, 0, C, 0, aLen);
|
||||
System.arraycopy(B, 0, C, aLen, bLen);
|
||||
|
||||
return C;
|
||||
}
|
||||
|
||||
public static List<Field> getAllFields(Class clas) {
|
||||
List<Field> result = new ArrayList<Field>();
|
||||
|
||||
Class current = clas;
|
||||
|
||||
while (current != null && current != Object.class) {
|
||||
for (Field f : current.getDeclaredFields()) {
|
||||
result.add(f);
|
||||
}
|
||||
|
||||
current = current.getSuperclass();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<Method> getAllMethods(Class clas) {
|
||||
List<Method> result = new ArrayList<Method>();
|
||||
|
||||
Class current = clas;
|
||||
|
||||
while (current != null && current != Object.class) {
|
||||
for (Method m : current.getDeclaredMethods()) {
|
||||
result.add(m);
|
||||
}
|
||||
|
||||
current = current.getSuperclass();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,14 +12,14 @@ import java.util.LinkedList;
|
|||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import buildcraft.api.mj.MjAPI;
|
||||
import buildcraft.api.mj.MjAPI.BatteryObject;
|
||||
import buildcraft.api.power.IPowerEmitter;
|
||||
import buildcraft.api.power.IPowerReceptor;
|
||||
import buildcraft.api.power.PowerHandler;
|
||||
import buildcraft.api.power.PowerHandler.PowerReceiver;
|
||||
import buildcraft.api.transport.IPipeConnection;
|
||||
import buildcraft.api.transport.IPipeTile.PipeType;
|
||||
import buildcraft.core.ReflectMjAPI;
|
||||
import buildcraft.core.ReflectMjAPI.BatteryObject;
|
||||
import buildcraft.core.TileBuffer;
|
||||
import buildcraft.core.TileBuildCraft;
|
||||
|
||||
|
@ -50,7 +50,7 @@ public class TileEnergyReceiver extends TileBuildCraft implements IPipeConnectio
|
|||
public boolean isPoweredTile(TileEntity tile, ForgeDirection side) {
|
||||
if (tile instanceof IPowerReceptor) {
|
||||
return ((IPowerReceptor) tile).getPowerReceiver(side.getOpposite()) != null;
|
||||
} else if (ReflectMjAPI.getMjBattery(tile) != null) {
|
||||
} else if (MjAPI.getMjBattery(tile) != null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ public class TileEnergyReceiver extends TileBuildCraft implements IPipeConnectio
|
|||
energyStored = 0;
|
||||
}
|
||||
} else if (tile != null) {
|
||||
BatteryObject battery = ReflectMjAPI.getMjBattery(tile);
|
||||
BatteryObject battery = MjAPI.getMjBattery(tile);
|
||||
|
||||
if (battery != null) {
|
||||
battery.addEnergy(energyStored);
|
||||
|
|
|
@ -12,6 +12,8 @@ import buildcraft.BuildCraftEnergy;
|
|||
import buildcraft.api.core.NetworkData;
|
||||
import buildcraft.api.gates.IOverrideDefaultTriggers;
|
||||
import buildcraft.api.gates.ITrigger;
|
||||
import buildcraft.api.mj.MjAPI;
|
||||
import buildcraft.api.mj.MjAPI.BatteryObject;
|
||||
import buildcraft.api.power.IPowerEmitter;
|
||||
import buildcraft.api.power.IPowerReceptor;
|
||||
import buildcraft.api.power.PowerHandler;
|
||||
|
@ -21,8 +23,6 @@ import buildcraft.api.transport.IPipeConnection;
|
|||
import buildcraft.api.transport.IPipeTile;
|
||||
import buildcraft.api.transport.IPipeTile.PipeType;
|
||||
import buildcraft.core.DefaultProps;
|
||||
import buildcraft.core.ReflectMjAPI;
|
||||
import buildcraft.core.ReflectMjAPI.BatteryObject;
|
||||
import buildcraft.core.TileBuffer;
|
||||
import buildcraft.core.TileBuildCraft;
|
||||
import buildcraft.energy.gui.ContainerEngine;
|
||||
|
@ -283,7 +283,7 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto
|
|||
return extractEnergy(receptor.getMinEnergyReceived(),
|
||||
receptor.getMaxEnergyReceived(), false);
|
||||
} else {
|
||||
return extractEnergy(0, ReflectMjAPI.getMjBattery(tile)
|
||||
return extractEnergy(0, MjAPI.getMjBattery(tile)
|
||||
.getEnergyRequested(), false);
|
||||
}
|
||||
}
|
||||
|
@ -305,7 +305,7 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto
|
|||
extractEnergy(receptor.getMinEnergyReceived(), needed, true);
|
||||
}
|
||||
} else {
|
||||
BatteryObject battery = ReflectMjAPI.getMjBattery(tile);
|
||||
BatteryObject battery = MjAPI.getMjBattery(tile);
|
||||
|
||||
battery.addEnergy(extractEnergy(0, battery.maxReceivedPerCycle(),
|
||||
true));
|
||||
|
@ -519,7 +519,7 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto
|
|||
return false;
|
||||
} else if (tile instanceof IPowerReceptor) {
|
||||
return ((IPowerReceptor) tile).getPowerReceiver(side.getOpposite()) != null;
|
||||
} else if (ReflectMjAPI.getMjBattery(tile) != null) {
|
||||
} else if (MjAPI.getMjBattery(tile) != null) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
|
|
@ -19,14 +19,14 @@ import buildcraft.BuildCraftCore;
|
|||
import buildcraft.BuildCraftTransport;
|
||||
import buildcraft.api.core.SafeTimeTracker;
|
||||
import buildcraft.api.gates.ITrigger;
|
||||
import buildcraft.api.mj.MjAPI;
|
||||
import buildcraft.api.mj.MjAPI.BatteryObject;
|
||||
import buildcraft.api.power.IPowerEmitter;
|
||||
import buildcraft.api.power.IPowerReceptor;
|
||||
import buildcraft.api.power.PowerHandler.PowerReceiver;
|
||||
import buildcraft.api.power.PowerHandler.Type;
|
||||
import buildcraft.api.transport.IPipeTile.PipeType;
|
||||
import buildcraft.core.DefaultProps;
|
||||
import buildcraft.core.ReflectMjAPI;
|
||||
import buildcraft.core.ReflectMjAPI.BatteryObject;
|
||||
import buildcraft.transport.network.PacketPowerUpdate;
|
||||
import buildcraft.transport.pipes.PipePowerCobblestone;
|
||||
import buildcraft.transport.pipes.PipePowerDiamond;
|
||||
|
@ -115,7 +115,7 @@ public class PipeTransportPower extends PipeTransport {
|
|||
}
|
||||
}
|
||||
|
||||
if (ReflectMjAPI.getMjBattery(tile) != null) {
|
||||
if (MjAPI.getMjBattery(tile) != null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -179,7 +179,7 @@ public class PipeTransportPower extends PipeTransport {
|
|||
if (j != i && powerQuery[j] > 0) {
|
||||
if (tiles[j] != null
|
||||
&& (tiles[j] instanceof TileGenericPipe
|
||||
|| tiles[j] instanceof IPowerReceptor || ReflectMjAPI
|
||||
|| tiles[j] instanceof IPowerReceptor || MjAPI
|
||||
.getMjBattery(tiles[j]) != null)) {
|
||||
totalPowerQuery += powerQuery[j];
|
||||
}
|
||||
|
@ -205,7 +205,7 @@ public class PipeTransportPower extends PipeTransport {
|
|||
internalPower[i] -= watts;
|
||||
} else if (tiles[j] != null) {
|
||||
// Look for the simplified power framework
|
||||
BatteryObject battery = ReflectMjAPI.getMjBattery(tiles [j]);
|
||||
BatteryObject battery = MjAPI.getMjBattery(tiles [j]);
|
||||
|
||||
if (battery != null) {
|
||||
watts = (internalPower[i] / totalPowerQuery)
|
||||
|
@ -253,7 +253,7 @@ public class PipeTransportPower extends PipeTransport {
|
|||
}
|
||||
|
||||
if (tile != null) {
|
||||
BatteryObject battery = ReflectMjAPI.getMjBattery(tile);
|
||||
BatteryObject battery = MjAPI.getMjBattery(tile);
|
||||
|
||||
if (battery != null) {
|
||||
requestEnergy(dir, battery.getEnergyRequested());
|
||||
|
|
|
@ -16,8 +16,8 @@ import buildcraft.BuildCraftTransport;
|
|||
import buildcraft.api.gates.GateExpansionController;
|
||||
import buildcraft.api.gates.IAction;
|
||||
import buildcraft.api.gates.IGateExpansion;
|
||||
import buildcraft.core.ReflectMjAPI;
|
||||
import buildcraft.core.ReflectMjAPI.BatteryObject;
|
||||
import buildcraft.api.mj.MjAPI;
|
||||
import buildcraft.api.mj.MjAPI.BatteryObject;
|
||||
import buildcraft.transport.TileGenericPipe;
|
||||
import buildcraft.transport.triggers.ActionEnergyPulsar;
|
||||
import buildcraft.transport.triggers.ActionSingleEnergyPulse;
|
||||
|
@ -96,7 +96,7 @@ public class GateExpansionPulsar extends GateExpansionBuildcraft implements IGat
|
|||
return;
|
||||
}
|
||||
|
||||
BatteryObject battery = ReflectMjAPI.getMjBattery(pipeTile);
|
||||
BatteryObject battery = MjAPI.getMjBattery(pipeTile);
|
||||
|
||||
if (battery != null && (!singlePulse || !hasPulsed)) {
|
||||
((TileGenericPipe) pipeTile).pipe.gate.setPulsing(true);
|
||||
|
|
Loading…
Reference in a new issue