diff --git a/README.md b/README.md index 8692f37..c631205 100644 --- a/README.md +++ b/README.md @@ -344,7 +344,7 @@ Other special characters include the following: - Spaces/blank characters (` `) will not be checked, and as such, represent any block. - Periods (`.`) represent the portal's *iris* (i.e. the part that opens and closes) -- An asterix (`*`) represents the portals's "exit point" (i.e. the block the player will teleport in front of). +- An asterix (`*`) represents the portals' "exit point" (i.e. the block the player will teleport in front of). ##### Underwater Portals @@ -377,7 +377,7 @@ Gates are not limited to the shape of a standard nether portal -- they can be th In this case, a simple 5x5 square has been used as a gate. Gates are also not limited to [materials](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html) (such -as `OBSIDIAN`); they may also use [tags](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Tag.html)) (such +as `OBSIDIAN`); they may also use [tags](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Tag.html) (such as `#WOOL`).
Note that all tags must be prefaced with a hashtag (`#`), as in `#WOOL`. diff --git a/src/main/java/net/knarcraft/stargate/portal/Portal.java b/src/main/java/net/knarcraft/stargate/portal/Portal.java index 660106a..4e7f5f3 100644 --- a/src/main/java/net/knarcraft/stargate/portal/Portal.java +++ b/src/main/java/net/knarcraft/stargate/portal/Portal.java @@ -54,7 +54,7 @@ public class Portal { this.network = portalStrings.network(); this.name = portalStrings.name(); this.portalOwner = portalOwner; - this.options = new PortalOptions(options, portalStrings.destination().length() > 0); + this.options = new PortalOptions(options, !portalStrings.destination().isEmpty()); this.signDrawer = new PortalSignDrawer(this); this.portalOpener = new PortalOpener(this, portalStrings.destination()); this.structure = new PortalStructure(this, gate, button); diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java b/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java index 4c3e253..718982d 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java @@ -74,7 +74,7 @@ public class PortalActivator { if (portal.getOptions().isRandom()) { //Find possible destinations List destinations = PortalHandler.getDestinations(portal, player, portalNetwork); - if (destinations.size() == 0) { + if (destinations.isEmpty()) { return null; } //Get one random destination @@ -217,7 +217,7 @@ public class PortalActivator { * @return

Whether this portal activator's portal is active

*/ public boolean isActive() { - return portal.getOptions().isFixed() || (destinations.size() > 0); + return portal.getOptions().isFixed() || (!destinations.isEmpty()); } /** @@ -255,7 +255,7 @@ public class PortalActivator { } //If no destinations are available, just tell the player and quit - if (destinations.size() == 0) { + if (destinations.isEmpty()) { if (!portal.getOptions().isSilent()) { Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString(Message.NO_DESTINATION)); } diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java b/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java index cdfffd4..822b012 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java @@ -171,7 +171,7 @@ public class PortalCreator { String route = "PortalCreator::getNetworkName"; //Use default network if a proper alternative is not set - if (portalStrings.network().length() < 1 || portalStrings.network().length() > getMaxNameNetworkLength()) { + if (portalStrings.network().isEmpty() || portalStrings.network().length() > getMaxNameNetworkLength()) { network = Stargate.getDefaultNetwork(); } @@ -207,7 +207,7 @@ public class PortalCreator { } //Check if the user can create portals to this world. - if (!bungee && destinationName.length() > 0) { + if (!bungee && !destinationName.isEmpty()) { Portal destinationPortal = PortalHandler.getByName(destinationName, network); if (destinationPortal != null && destinationPortal.getWorld() != null) { String world = destinationPortal.getWorld().getName(); @@ -294,7 +294,7 @@ public class PortalCreator { String route = "PortalCreator::checkIfNewPortalIsValid"; //Check if the portal name can fit on the sign with padding (>name<) - if (portal.getCleanName().length() < 1 || portal.getCleanName().length() > getMaxNameNetworkLength()) { + if (portal.getCleanName().isEmpty() || portal.getCleanName().length() > getMaxNameNetworkLength()) { Stargate.debug(route, String.format("Name length error. %s is too long.", portal.getCleanName())); Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString(Message.CREATION_NAME_LENGTH)); diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java b/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java index e0cfdd0..9bc56f3 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java @@ -251,7 +251,7 @@ public class PortalHandler { } //Can not create a non-fixed always-on portal - if (portalOptions.get(PortalOption.ALWAYS_ON) && destinationName.length() == 0) { + if (portalOptions.get(PortalOption.ALWAYS_ON) && destinationName.isEmpty()) { portalOptions.put(PortalOption.ALWAYS_ON, false); } diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java b/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java index f2def13..4a4b366 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalRegistry.java @@ -255,7 +255,7 @@ public class PortalRegistry { * @param portal

The portal to register

*/ public static void registerPortal(@NotNull Portal portal) { - portal.getOptions().setFixed(portal.getDestinationName().length() > 0 || portal.getOptions().isRandom() || + portal.getOptions().setFixed(!portal.getDestinationName().isEmpty() || portal.getOptions().isRandom() || portal.getOptions().isBungee()); String portalName = portal.getCleanName(); diff --git a/src/main/java/net/knarcraft/stargate/portal/property/PortalOwner.java b/src/main/java/net/knarcraft/stargate/portal/property/PortalOwner.java index 13b39e1..9bb9389 100644 --- a/src/main/java/net/knarcraft/stargate/portal/property/PortalOwner.java +++ b/src/main/java/net/knarcraft/stargate/portal/property/PortalOwner.java @@ -6,8 +6,6 @@ import org.bukkit.OfflinePlayer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.HashMap; -import java.util.Map; import java.util.UUID; /** @@ -15,7 +13,6 @@ import java.util.UUID; */ public class PortalOwner { - private static final Map fetchedPlayers = new HashMap<>(); private UUID ownerUUID; private String ownerName; @@ -25,13 +22,7 @@ public class PortalOwner { * @param ownerIdentifier

A UUID, or a username for legacy support

*/ public PortalOwner(@NotNull String ownerIdentifier) { - if (fetchedPlayers.containsKey(ownerIdentifier)) { - OfflinePlayer player = fetchedPlayers.get(ownerIdentifier); - this.ownerUUID = player.getUniqueId(); - this.ownerName = player.getName(); - } else { - parseIdentifier(ownerIdentifier); - } + parseIdentifier(ownerIdentifier); } /** @@ -77,6 +68,12 @@ public class PortalOwner { */ @NotNull public String getName() { + if (this.ownerUUID != null && this.ownerName == null) { + this.ownerName = fetchName(); + if (this.ownerName == null) { + this.ownerName = "UNKNOWN!"; + } + } return ownerName; } @@ -108,14 +105,11 @@ public class PortalOwner { */ private void parseIdentifier(@NotNull String ownerIdentifier) { UUID ownerUUID = null; - String ownerName; + String ownerName = null; if (ownerIdentifier.length() > 16) { //If more than 16 characters, the string cannot be a username, so it's probably a UUID try { ownerUUID = UUID.fromString(ownerIdentifier); - OfflinePlayer offlineOwner = Bukkit.getServer().getOfflinePlayer(ownerUUID); - fetchedPlayers.put(ownerIdentifier, offlineOwner); - ownerName = offlineOwner.getName(); } catch (IllegalArgumentException exception) { //Invalid as UUID and username, so just keep it as owner name and hope the server owner fixes it ownerName = ownerIdentifier; @@ -129,4 +123,14 @@ public class PortalOwner { this.ownerUUID = ownerUUID; } + /** + * Gets the name of a player + * + * @return

The player to get the name of

+ */ + @Nullable + private String fetchName() { + return Bukkit.getServer().getOfflinePlayer(ownerUUID).getName(); + } + }