From 4f41d134a7afd331112507328bdb80ac4004d24f Mon Sep 17 00:00:00 2001 From: SpaceToad Date: Mon, 18 Aug 2014 09:07:57 +0200 Subject: [PATCH] added control of wether an AI can be loaded from NBT --- api/buildcraft/api/boards/RedstoneBoardRobot.java | 5 +++++ api/buildcraft/api/robots/AIRobot.java | 13 ++++++++++--- common/buildcraft/core/robots/AIRobotGotoBlock.java | 5 +++++ common/buildcraft/core/robots/AIRobotGotoSleep.java | 5 +++++ .../buildcraft/core/robots/AIRobotGotoStation.java | 5 +++++ common/buildcraft/core/robots/AIRobotMain.java | 5 +++++ 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/api/buildcraft/api/boards/RedstoneBoardRobot.java b/api/buildcraft/api/boards/RedstoneBoardRobot.java index f084cc71..cdfaa592 100755 --- a/api/buildcraft/api/boards/RedstoneBoardRobot.java +++ b/api/buildcraft/api/boards/RedstoneBoardRobot.java @@ -25,4 +25,9 @@ public abstract class RedstoneBoardRobot extends AIRobot implements IRedstoneBoa } + @Override + public boolean canLoadFromNBT() { + return true; + } + } diff --git a/api/buildcraft/api/robots/AIRobot.java b/api/buildcraft/api/robots/AIRobot.java index 779e291c..13ce1713 100755 --- a/api/buildcraft/api/robots/AIRobot.java +++ b/api/buildcraft/api/robots/AIRobot.java @@ -64,6 +64,10 @@ public class AIRobot { return 0.1; } + public boolean canLoadFromNBT() { + return false; + } + /** * Tries to receive items in parameters, return items that are left after * the operation. @@ -150,7 +154,7 @@ public class AIRobot { writeSelfToNBT(data); nbt.setTag("data", data); - if (delegateAI != null) { + if (delegateAI != null && delegateAI.canLoadFromNBT()) { NBTTagCompound sub = new NBTTagCompound(); delegateAI.writeToNBT(sub); @@ -167,8 +171,11 @@ public class AIRobot { try { delegateAI = (AIRobot) Class.forName(sub.getString("class")).getConstructor(EntityRobotBase.class) .newInstance(robot); - delegateAI.parentAI = this; - delegateAI.loadFromNBT(sub); + + if (delegateAI.canLoadFromNBT()) { + delegateAI.parentAI = this; + delegateAI.loadFromNBT(sub); + } } catch (Throwable e) { e.printStackTrace(); } diff --git a/common/buildcraft/core/robots/AIRobotGotoBlock.java b/common/buildcraft/core/robots/AIRobotGotoBlock.java index bf9ea8c9..26f54cfb 100755 --- a/common/buildcraft/core/robots/AIRobotGotoBlock.java +++ b/common/buildcraft/core/robots/AIRobotGotoBlock.java @@ -133,6 +133,11 @@ public class AIRobotGotoBlock extends AIRobotGoto { } } + @Override + public boolean canLoadFromNBT() { + return true; + } + @Override public void writeSelfToNBT(NBTTagCompound nbt) { super.writeSelfToNBT(nbt); diff --git a/common/buildcraft/core/robots/AIRobotGotoSleep.java b/common/buildcraft/core/robots/AIRobotGotoSleep.java index ab7cb7ca..a918a9ac 100755 --- a/common/buildcraft/core/robots/AIRobotGotoSleep.java +++ b/common/buildcraft/core/robots/AIRobotGotoSleep.java @@ -31,4 +31,9 @@ public class AIRobotGotoSleep extends AIRobot { terminate(); } } + + @Override + public boolean canLoadFromNBT() { + return true; + } } diff --git a/common/buildcraft/core/robots/AIRobotGotoStation.java b/common/buildcraft/core/robots/AIRobotGotoStation.java index ad50f0a6..8dd99ce6 100755 --- a/common/buildcraft/core/robots/AIRobotGotoStation.java +++ b/common/buildcraft/core/robots/AIRobotGotoStation.java @@ -79,6 +79,11 @@ public class AIRobotGotoStation extends AIRobot { return docked; } + @Override + public boolean canLoadFromNBT() { + return true; + } + @Override public void writeSelfToNBT(NBTTagCompound nbt) { NBTTagCompound indexNBT = new NBTTagCompound(); diff --git a/common/buildcraft/core/robots/AIRobotMain.java b/common/buildcraft/core/robots/AIRobotMain.java index 6ca4b8be..071114b3 100755 --- a/common/buildcraft/core/robots/AIRobotMain.java +++ b/common/buildcraft/core/robots/AIRobotMain.java @@ -55,4 +55,9 @@ public class AIRobotMain extends AIRobot { public AIRobot getOverridingAI() { return overridingAI; } + + @Override + public boolean canLoadFromNBT() { + return true; + } }