extrated MjAPI from core

This commit is contained in:
SpaceToad 2014-05-01 19:34:01 +02:00
parent 1edde4b1e2
commit ae1003aaf7
9 changed files with 83 additions and 74 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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