From 489a3cc6f7f6d55009a4bba66e16ba4bc7541429 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Tue, 28 Oct 2014 07:22:43 +0100 Subject: [PATCH] move StatementManager parameter handling to use getUniqueTag, for #2107 --- api/buildcraft/api/gates/StatementManager.java | 18 ++++++++---------- common/buildcraft/BuildCraftCore.java | 8 ++++---- common/buildcraft/BuildCraftTransport.java | 4 ++-- common/buildcraft/transport/Gate.java | 4 ++-- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/api/buildcraft/api/gates/StatementManager.java b/api/buildcraft/api/gates/StatementManager.java index eafb3d96..c29bbfa2 100644 --- a/api/buildcraft/api/gates/StatementManager.java +++ b/api/buildcraft/api/gates/StatementManager.java @@ -22,8 +22,7 @@ import buildcraft.api.transport.IPipeTile; public final class StatementManager { public static Map statements = new HashMap(); - public static Map> idToParameter = new HashMap>(); - public static Map, String> parameterToId = new HashMap, String>(); + public static Map> parameters = new HashMap>(); private static List triggerProviders = new LinkedList(); private static List actionProviders = new LinkedList(); @@ -49,9 +48,8 @@ public final class StatementManager { statements.put(statement.getUniqueTag(), statement); } - public static void registerParameterClass(String name, Class param) { - idToParameter.put(name, param); - parameterToId.put(param, name); + public static void registerParameterClass(Class param) { + parameters.put(createParameter(param).getUniqueTag(), param); } public static List 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)); + } + + private static IStatementParameter createParameter(Class param) { try { - return idToParameter.get(kind).newInstance(); + return param.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { diff --git a/common/buildcraft/BuildCraftCore.java b/common/buildcraft/BuildCraftCore.java index 1a0b47d1..52e37c68 100644 --- a/common/buildcraft/BuildCraftCore.java +++ b/common/buildcraft/BuildCraftCore.java @@ -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()); diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java index 2ea83c00..9c518cb2 100644 --- a/common/buildcraft/BuildCraftTransport.java +++ b/common/buildcraft/BuildCraftTransport.java @@ -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()); diff --git a/common/buildcraft/transport/Gate.java b/common/buildcraft/transport/Gate.java index 7462691c..7a18c08d 100644 --- a/common/buildcraft/transport/Gate.java +++ b/common/buildcraft/transport/Gate.java @@ -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); }