move StatementManager parameter handling to use getUniqueTag, for #2107
This commit is contained in:
parent
56dd1a6bdd
commit
489a3cc6f7
4 changed files with 16 additions and 18 deletions
|
@ -22,8 +22,7 @@ import buildcraft.api.transport.IPipeTile;
|
|||
public final class StatementManager {
|
||||
|
||||
public static Map<String, IStatement> statements = new HashMap<String, IStatement>();
|
||||
public static Map<String, Class<? extends IStatementParameter>> idToParameter = new HashMap<String, Class<? extends IStatementParameter>>();
|
||||
public static Map<Class<? extends IStatementParameter>, String> parameterToId = new HashMap<Class<? extends IStatementParameter>, String>();
|
||||
public static Map<String, Class<? extends IStatementParameter>> parameters = new HashMap<String, Class<? extends IStatementParameter>>();
|
||||
private static List<ITriggerProvider> triggerProviders = new LinkedList<ITriggerProvider>();
|
||||
private static List<IActionProvider> actionProviders = new LinkedList<IActionProvider>();
|
||||
|
||||
|
@ -49,9 +48,8 @@ public final class StatementManager {
|
|||
statements.put(statement.getUniqueTag(), statement);
|
||||
}
|
||||
|
||||
public static void registerParameterClass(String name, Class<? extends IStatementParameter> param) {
|
||||
idToParameter.put(name, param);
|
||||
parameterToId.put(param, name);
|
||||
public static void registerParameterClass(Class<? extends IStatementParameter> param) {
|
||||
parameters.put(createParameter(param).getUniqueTag(), param);
|
||||
}
|
||||
|
||||
public static List<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity entity) {
|
||||
|
@ -126,13 +124,13 @@ public final class StatementManager {
|
|||
return result;
|
||||
}
|
||||
|
||||
public static String getParameterKind(IStatementParameter param) {
|
||||
return parameterToId.get(param.getClass());
|
||||
public static IStatementParameter createParameter(String kind) {
|
||||
return createParameter(parameters.get(kind));
|
||||
}
|
||||
|
||||
public static IStatementParameter createParameter(String kind) {
|
||||
private static IStatementParameter createParameter(Class<? extends IStatementParameter> param) {
|
||||
try {
|
||||
return idToParameter.get(kind).newInstance();
|
||||
return param.newInstance();
|
||||
} catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
|
|
|
@ -344,10 +344,10 @@ public class BuildCraftCore extends BuildCraftMod {
|
|||
|
||||
NetworkIdRegistry.instance = new NetworkIdRegistry();
|
||||
|
||||
StatementManager.registerParameterClass("buildcraft:stackTrigger", TriggerParameterItemStack.class);
|
||||
StatementManager.registerParameterClass("buildcraft:stackAction", ActionParameterItemStack.class);
|
||||
StatementManager.registerParameterClass("buildcraft:pipeActionDirection", StatementParameterDirection.class);
|
||||
StatementManager.registerParameterClass("buildcraft:redstoneGateSideOnly", StatementParameterRedstoneGateSideOnly.class);
|
||||
StatementManager.registerParameterClass(TriggerParameterItemStack.class);
|
||||
StatementManager.registerParameterClass(ActionParameterItemStack.class);
|
||||
StatementManager.registerParameterClass(StatementParameterDirection.class);
|
||||
StatementManager.registerParameterClass(StatementParameterRedstoneGateSideOnly.class);
|
||||
StatementManager.registerTriggerProvider(new DefaultTriggerProvider());
|
||||
StatementManager.registerActionProvider(new DefaultActionProvider());
|
||||
|
||||
|
|
|
@ -484,8 +484,8 @@ public class BuildCraftTransport extends BuildCraftMod {
|
|||
|
||||
new BptItemPipeFilters(pipeItemsDiamond);
|
||||
|
||||
StatementManager.registerParameterClass("buildcraft:pipeWireTrigger", TriggerParameterSignal.class);
|
||||
StatementManager.registerParameterClass("buildcraft:pipeWireAction", ActionParameterSignal.class);
|
||||
StatementManager.registerParameterClass(TriggerParameterSignal.class);
|
||||
StatementManager.registerParameterClass(ActionParameterSignal.class);
|
||||
StatementManager.registerTriggerProvider(new PipeTriggerProvider());
|
||||
StatementManager.registerActionProvider(new PipeActionProvider());
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ public final class Gate implements IGate {
|
|||
for (int j = 0; j < material.numTriggerParameters; ++j) {
|
||||
if (triggerParameters[i][j] != null) {
|
||||
NBTTagCompound cpt = new NBTTagCompound();
|
||||
cpt.setString("kind", StatementManager.getParameterKind(triggerParameters[i][j]));
|
||||
cpt.setString("kind", triggerParameters[i][j].getUniqueTag());
|
||||
triggerParameters[i][j].writeToNBT(cpt);
|
||||
data.setTag("triggerParameters[" + i + "][" + j + "]", cpt);
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ public final class Gate implements IGate {
|
|||
for (int j = 0; j < material.numActionParameters; ++j) {
|
||||
if (actionParameters[i][j] != null) {
|
||||
NBTTagCompound cpt = new NBTTagCompound();
|
||||
cpt.setString("kind", StatementManager.getParameterKind(actionParameters[i][j]));
|
||||
cpt.setString("kind", actionParameters[i][j].getUniqueTag());
|
||||
actionParameters[i][j].writeToNBT(cpt);
|
||||
data.setTag("actionParameters[" + i + "][" + j + "]", cpt);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue