From aa3bb58b33855e6e5e17fafc27e2de708c3359d3 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Sat, 6 Nov 2021 15:33:06 +0100 Subject: [PATCH] Fixes some bugs regarding sign drawing and button updating Fixes a bug displaying a portal as usable even if it's been unregistered Fixes a bug which causes the portal button to be re-generated, even if the portal has been unregistered --- .../net/knarcraft/stargate/portal/Portal.java | 19 +++++++++++++++++++ .../stargate/portal/PortalRegistry.java | 2 ++ .../stargate/utility/PortalFileHelper.java | 15 +++++++++------ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/knarcraft/stargate/portal/Portal.java b/src/main/java/net/knarcraft/stargate/portal/Portal.java index 6447baf..9b5449b 100644 --- a/src/main/java/net/knarcraft/stargate/portal/Portal.java +++ b/src/main/java/net/knarcraft/stargate/portal/Portal.java @@ -21,6 +21,7 @@ public class Portal { private final String name; private final String network; private final PortalOwner portalOwner; + private boolean isRegistered; private final PortalOptions options; private final PortalOpener portalOpener; @@ -54,6 +55,24 @@ public class Portal { this.portalActivator = portalOpener.getPortalActivator(); } + /** + * Checks if this portal is registered + * + * @return

True if this portal is registered

+ */ + public boolean isRegistered() { + return isRegistered; + } + + /** + * Sets whether this portal is registered + * + * @param isRegistered

True if this portal is registered

+ */ + public void setRegistered(boolean isRegistered) { + this.isRegistered = isRegistered; + } + /** * Gets the location data for this portal * diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java b/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java index d8160c4..3311963 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java @@ -231,6 +231,7 @@ public class PortalRegistry { } PortalFileHelper.saveAllPortals(portal.getWorld()); + portal.setRegistered(false); } /** @@ -293,6 +294,7 @@ public class PortalRegistry { } allPortals.add(portal); + portal.setRegistered(true); } } diff --git a/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java b/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java index 40031e4..66ff996 100644 --- a/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java +++ b/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java @@ -218,7 +218,10 @@ public final class PortalFileHelper { //Re-draw the signs in case a bug in the config prevented the portal from loading and has been fixed since for (Portal portal : PortalRegistry.getAllPortals()) { - portal.drawSign(); + if (portal.isRegistered()) { + portal.drawSign(); + updatePortalButton(portal); + } } } @@ -250,7 +253,7 @@ public final class PortalFileHelper { //Load extra portal data String destination = (portalData.length > 8) ? portalData[8] : ""; - String network = (portalData.length > 9 && !portalData[9].isEmpty()) ? portalData[9] : + String network = (portalData.length > 9 && !portalData[9].isEmpty()) ? portalData[9] : Stargate.getDefaultNetwork(); String ownerString = (portalData.length > 10) ? portalData[10] : ""; @@ -261,10 +264,8 @@ public final class PortalFileHelper { Portal portal = new Portal(portalLocation, button, destination, name, network, gate, owner, PortalHandler.getPortalOptions(portalData)); - //Update the portal's button if it's the wrong material - updatePortalButton(portal); - //Register the portal, and close it in case it wasn't properly closed when the server stopped + setButtonVector(portal); PortalHandler.registerPortal(portal); portal.getPortalOpener().closePortal(true); } @@ -275,7 +276,6 @@ public final class PortalFileHelper { * @param portal

The portal update the button of

*/ private static void updatePortalButton(Portal portal) { - setButtonVector(portal); BlockLocation buttonLocation = getButtonLocation(portal); BlockData buttonData = buttonLocation.getBlock().getBlockData(); if (portal.getOptions().isAlwaysOn()) { @@ -305,6 +305,9 @@ public final class PortalFileHelper { portal.getYaw()); if (controlLocation != portal.getLocation().getSignLocation()) { portal.getLocation().setButtonVector(control); + BlockLocation buttonLocation = controlLocation.getRelativeLocation( + new RelativeBlockVector(0, 0, 1), portal.getYaw()); + portal.getStructure().setButton(buttonLocation); } } }