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