From b9b71cf015068ac4d19fee2cd7a0e52dacfe0dc5 Mon Sep 17 00:00:00 2001 From: mezz Date: Sat, 21 Feb 2015 00:02:31 -0800 Subject: [PATCH] Fix #518 Trade station crashes when new station is named after a restart --- src/main/java/forestry/mail/PostRegistry.java | 6 +++--- src/main/java/forestry/mail/gadgets/MachineTrader.java | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/forestry/mail/PostRegistry.java b/src/main/java/forestry/mail/PostRegistry.java index 0668e6fd7..54e0239cc 100755 --- a/src/main/java/forestry/mail/PostRegistry.java +++ b/src/main/java/forestry/mail/PostRegistry.java @@ -82,7 +82,7 @@ public class PostRegistry implements IPostRegistry { */ @Override public boolean isValidTradeAddress(World world, IMailAddress address) { - return address.isTrader() && address.getName().matches("^[a-zA-Z0-9]+$"); + return address != null && address.isTrader() && address.getName().matches("^[a-zA-Z0-9]+$"); } /** @@ -92,12 +92,12 @@ public class PostRegistry implements IPostRegistry { */ @Override public boolean isAvailableTradeAddress(World world, IMailAddress address) { - return getTradeStation(world, address) == null; + return address != null && getTradeStation(world, address) == null; } @Override public TradeStation getTradeStation(World world, IMailAddress address) { - if (address.getName() == null) { + if (address == null || address.getName() == null) { return null; } diff --git a/src/main/java/forestry/mail/gadgets/MachineTrader.java b/src/main/java/forestry/mail/gadgets/MachineTrader.java index 701db9c7e..df92ac73a 100755 --- a/src/main/java/forestry/mail/gadgets/MachineTrader.java +++ b/src/main/java/forestry/mail/gadgets/MachineTrader.java @@ -25,6 +25,7 @@ import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.Optional; import forestry.api.core.ForestryAPI; +import forestry.api.core.IErrorState; import forestry.api.mail.IMailAddress; import forestry.api.mail.IStamps; import forestry.api.mail.PostManager; @@ -173,7 +174,12 @@ public class MachineTrader extends TileBase { /* STATE INFORMATION */ public boolean isLinked() { - return address.isValid() && getErrorState() != EnumErrorCode.NOTALPHANUMERIC && getErrorState() != EnumErrorCode.NOTUNIQUE; + if (address == null || !address.isValid()) { + return false; + } + + IErrorState errorState = getErrorState(); + return errorState != EnumErrorCode.NOTALPHANUMERIC && errorState != EnumErrorCode.NOTUNIQUE; } /** @@ -274,7 +280,7 @@ public class MachineTrader extends TileBase { throw new NullPointerException("address must not be null"); } - if (this.address.isValid() && this.address.equals(address)) { + if (this.address != null && this.address.isValid() && this.address.equals(address)) { return; }