From b7c7252fadc5b85f6d0e738be21b5925775597ef Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Tue, 21 Sep 2021 18:28:18 +0200 Subject: [PATCH] Improves the differentiation between portals (stargates) and gates --- .../java/net/knarcraft/stargate/Stargate.java | 8 +- .../listener/PlayerEventListener.java | 2 +- .../stargate/listener/WorldEventListener.java | 4 +- .../stargate/portal/PortalHandler.java | 197 ++++++++---------- .../stargate/utility/BungeeHelper.java | 2 +- 5 files changed, 97 insertions(+), 116 deletions(-) diff --git a/src/main/java/net/knarcraft/stargate/Stargate.java b/src/main/java/net/knarcraft/stargate/Stargate.java index 2a07a44..cfccea8 100644 --- a/src/main/java/net/knarcraft/stargate/Stargate.java +++ b/src/main/java/net/knarcraft/stargate/Stargate.java @@ -282,8 +282,8 @@ public class Stargate extends JavaPlugin { @Override public void onDisable() { - PortalHandler.closeAllGates(); - PortalHandler.clearGates(); + PortalHandler.closeAllPortals(); + PortalHandler.clearPortals(); managedWorlds.clear(); getServer().getScheduler().cancelTasks(this); } @@ -466,7 +466,7 @@ public class Stargate extends JavaPlugin { public void loadAllPortals() { for (World world : getServer().getWorlds()) { if (!managedWorlds.contains(world.getName())) { - PortalHandler.loadAllGates(world); + PortalHandler.loadAllPortals(world); managedWorlds.add(world.getName()); } } @@ -506,7 +506,7 @@ public class Stargate extends JavaPlugin { activePortalsQueue.clear(); openPortalsQueue.clear(); managedWorlds.clear(); - PortalHandler.clearGates(); + PortalHandler.clearPortals(); GateHandler.clearGates(); // Store the old Bungee enabled value diff --git a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java index bea32d7..8416b9f 100644 --- a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java @@ -56,7 +56,7 @@ public class PlayerEventListener implements Listener { return; } - Portal portal = PortalHandler.getBungeeGate(destination); + Portal portal = PortalHandler.getBungeePortal(destination); if (portal == null) { Stargate.debug("PlayerJoin", "Error fetching destination portal: " + destination); return; diff --git a/src/main/java/net/knarcraft/stargate/listener/WorldEventListener.java b/src/main/java/net/knarcraft/stargate/listener/WorldEventListener.java index 64cb5fa..f729fda 100644 --- a/src/main/java/net/knarcraft/stargate/listener/WorldEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/WorldEventListener.java @@ -22,7 +22,7 @@ public class WorldEventListener implements Listener { @EventHandler public void onWorldLoad(WorldLoadEvent event) { if (!Stargate.managedWorlds.contains(event.getWorld().getName()) && - PortalHandler.loadAllGates(event.getWorld())) { + PortalHandler.loadAllPortals(event.getWorld())) { Stargate.managedWorlds.add(event.getWorld().getName()); } } @@ -38,7 +38,7 @@ public class WorldEventListener implements Listener { World world = event.getWorld(); if (Stargate.managedWorlds.contains(world.getName())) { Stargate.managedWorlds.remove(world.getName()); - PortalHandler.clearGates(world); + PortalHandler.clearPortals(world); } } } diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java b/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java index f12cf3d..8eac971 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java @@ -72,33 +72,33 @@ public class PortalHandler { if (portal == null) { continue; } - // Check if destination is a random gate + //Check if destination is a random portal if (portal.isRandom()) { continue; } - // Check if destination is always open (Don't show if so) + //Check if destination is always open (Don't show if so) if (portal.isAlwaysOn() && !portal.isShown()) { continue; } - // Check if destination is this portal + //Check if destination is this portal if (destination.equalsIgnoreCase(entrancePortal.getName())) { continue; } - // Check if destination is a fixed gate not pointing to this gate + //Check if destination is a fixed portal not pointing to this portal if (portal.isFixed() && !portal.getDestinationName().equalsIgnoreCase(entrancePortal.getName())) { continue; } - // Allow random use by non-players (Minecarts) + //Allow random use by non-players (Minecarts) if (player == null) { destinations.add(portal.getName()); continue; } - // Check if this player can access the dest world + //Check if this player can access the dest world if (PermissionHelper.cannotAccessWorld(player, portal.getWorld().getName())) { Stargate.logger.info("cannot access world"); continue; } - // Visible to this player. + //Visible to this player. if (PermissionHelper.canSeePortal(player, portal)) { destinations.add(portal.getName()); } @@ -177,7 +177,7 @@ public class PortalHandler { sign.update(); } - saveAllGates(portal.getWorld()); + saveAllPortals(portal.getWorld()); } /** @@ -191,7 +191,7 @@ public class PortalHandler { String portalName = portal.getName().toLowerCase(); String networkName = portal.getNetwork().toLowerCase(); - // Bungee gates are stored in their own list + //Bungee portals are stored in their own list if (portal.isBungee()) { bungeePortals.put(portalName, portal); } else { @@ -250,7 +250,7 @@ public class PortalHandler { } if (getByBlock(idParent) != null) { - Stargate.debug("createPortal", "idParent belongs to existing gate"); + Stargate.debug("createPortal", "idParent belongs to existing stargate"); return null; } @@ -316,7 +316,7 @@ public class PortalHandler { return null; } - //If the player is trying to create a Bungee gate without permissions, drop out here + //If the player is trying to create a Bungee portal without permissions, drop out here if (options.indexOf(PortalOption.BUNGEE.getCharacterRepresentation()) != -1) { if (!PermissionHelper.hasPermission(player, "stargate.admin.bungee")) { Stargate.sendErrorMessage(player, Stargate.getString("bungeeDeny")); @@ -347,7 +347,7 @@ public class PortalHandler { boolean deny = false; String denyMsg = ""; - // Check if the player can create gates on this network + // Check if the player can create portals on this network if (!portalOptions.get(PortalOption.BUNGEE) && !PermissionHelper.canCreateNetworkGate(player, network)) { Stargate.debug("createPortal", "Player doesn't have create permissions on network. Trying personal"); if (PermissionHelper.canCreatePersonalGate(player)) { @@ -372,11 +372,11 @@ public class PortalHandler { denyMsg = Stargate.getString("createGateDeny"); } - // Check if the user can create gates to this world. + //Check if the user can create portals to this world. if (!portalOptions.get(PortalOption.BUNGEE) && !deny && destinationName.length() > 0) { - Portal p = getByName(destinationName, network); - if (p != null) { - String world = p.getWorld().getName(); + Portal portal = getByName(destinationName, network); + if (portal != null) { + String world = portal.getWorld().getName(); if (PermissionHelper.cannotAccessWorld(player, world)) { Stargate.debug("canCreateNetworkGate", "Player does not have access to destination world"); deny = true; @@ -386,9 +386,9 @@ public class PortalHandler { } // Bleh, gotta check to make sure none of this gate belongs to another gate. Boo slow. - for (RelativeBlockVector v : gate.getLayout().getBorder()) { - BlockLocation b = topLeft.modRelative(v.getRight(), v.getDepth(), v.getDistance(), modX, 1, modZ); - if (getByBlock(b.getBlock()) != null) { + for (RelativeBlockVector vector : gate.getLayout().getBorder()) { + BlockLocation blockLocation = topLeft.modRelative(vector.getRight(), vector.getDepth(), vector.getDistance(), modX, 1, modZ); + if (getByBlock(blockLocation.getBlock()) != null) { Stargate.debug("createPortal", "Gate conflicts with existing gate"); Stargate.sendErrorMessage(player, Stargate.getString("createConflict")); return null; @@ -422,7 +422,7 @@ public class PortalHandler { return null; } - // Don't do network checks for bungee gates + //Don't do network checks for bungee portals if (portal.isBungee()) { if (bungeePortals.get(portal.getName().toLowerCase()) != null) { Stargate.debug("createPortal::Bungee", "Gate Exists"); @@ -436,7 +436,7 @@ public class PortalHandler { return null; } - // Check if there are too many gates in this network + //Check if there are too many gates in this network List netList = allPortalNetworks.get(portal.getNetwork().toLowerCase()); if (Stargate.maxGatesEachNetwork > 0 && netList != null && netList.size() >= Stargate.maxGatesEachNetwork) { Stargate.sendErrorMessage(player, Stargate.getString("createFull")); @@ -453,7 +453,7 @@ public class PortalHandler { EconomyHelper.sendDeductMessage(name, player, cost); } - // No button on an always-open gate. + //No button on an always-open portal. if (!portalOptions.get(PortalOption.ALWAYS_ON)) { button = topLeft.modRelative(buttonVector.getRight(), buttonVector.getDepth(), buttonVector.getDistance() + 1, modX, 1, modZ); Directional buttonData = (Directional) Bukkit.createBlockData(gate.getPortalButton()); @@ -464,7 +464,7 @@ public class PortalHandler { registerPortal(portal); portal.drawSign(); - // Open always on gate + //Open an always on portal if (portal.isRandom() || portal.isBungee()) { portal.open(true); } else if (portal.isAlwaysOn()) { @@ -480,9 +480,9 @@ public class PortalHandler { } } - // Don't do network stuff for bungee gates + //Don't do network stuff for bungee portals if (!portal.isBungee()) { - // Open any always on gate pointing at this gate + //Open any always on portal pointing at this portal for (String originName : allPortalNetworks.get(portal.getNetwork().toLowerCase())) { Portal origin = getByName(originName, portal.getNetwork()); if (origin == null) continue; @@ -493,13 +493,13 @@ public class PortalHandler { } } - saveAllGates(portal.getWorld()); + saveAllPortals(portal.getWorld()); return portal; } /** - * Gets all portal options to be applied to a new gate + * Gets all portal options to be applied to a new portal * * @param player

The player creating the portal

* @param destinationName

The destination of the portal

@@ -513,23 +513,23 @@ public class PortalHandler { PermissionHelper.canUseOption(player, option)); } - // Can not create a non-fixed always-on gate. + //Can not create a non-fixed always-on portal if (portalOptions.get(PortalOption.ALWAYS_ON) && destinationName.length() == 0) { portalOptions.put(PortalOption.ALWAYS_ON, false); } - // Show isn't useful if always on is false + //Show isn't useful if always on is false if (portalOptions.get(PortalOption.SHOW) && !portalOptions.get(PortalOption.ALWAYS_ON)) { portalOptions.put(PortalOption.SHOW, false); } - // Random gates are always on and can't be shown + //Random portals are always on and can't be shown if (portalOptions.get(PortalOption.RANDOM)) { portalOptions.put(PortalOption.ALWAYS_ON, true); portalOptions.put(PortalOption.SHOW, false); } - // Bungee gates are always on and don't support Random + //Bungee portals are always on and don't support Random if (portalOptions.get(PortalOption.BUNGEE)) { portalOptions.put(PortalOption.ALWAYS_ON, true); portalOptions.put(PortalOption.RANDOM, false); @@ -621,7 +621,7 @@ public class PortalHandler { * Gets a portal given its control block (the block type used for the sign and button) * * @param block

The portal's control block

- * @return

The gate with the given control block

+ * @return

The portal with the given control block

*/ public static Portal getByControl(Block block) { return lookupControls.get(new BlockLocation(block)); @@ -638,21 +638,21 @@ public class PortalHandler { } /** - * Gets a bungee gate given its name + * Gets a bungee portal given its name * - * @param name

The name of the bungee gate to get

- * @return

A bungee gate

+ * @param name

The name of the bungee portal to get

+ * @return

A bungee portal

*/ - public static Portal getBungeeGate(String name) { + public static Portal getBungeePortal(String name) { return bungeePortals.get(name.toLowerCase()); } /** - * Saves all gates for the given world + * Saves all portals for the given world * - * @param world

The world to save gates for

+ * @param world

The world to save portals for

*/ - public static void saveAllGates(World world) { + public static void saveAllPortals(World world) { Stargate.managedWorlds.add(world.getName()); String loc = Stargate.getSaveLocation() + "/" + world.getName() + ".db"; @@ -665,26 +665,16 @@ public class PortalHandler { StringBuilder builder = new StringBuilder(); BlockLocation button = portal.getButton(); - builder.append(portal.getName()); - builder.append(':'); - builder.append(portal.getId().toString()); - builder.append(':'); - builder.append((button != null) ? button.toString() : ""); - builder.append(':'); - builder.append(portal.getModX()); - builder.append(':'); - builder.append(portal.getModZ()); - builder.append(':'); - builder.append(portal.getYaw()); - builder.append(':'); - builder.append(portal.getTopLeft().toString()); - builder.append(':'); - builder.append(portal.getGate().getFilename()); - builder.append(':'); - builder.append(portal.isFixed() ? portal.getDestinationName() : ""); - builder.append(':'); - builder.append(portal.getNetwork()); - builder.append(':'); + builder.append(portal.getName()).append(':'); + builder.append(portal.getId().toString()).append(':'); + builder.append((button != null) ? button.toString() : "").append(':'); + builder.append(portal.getModX()).append(':'); + builder.append(portal.getModZ()).append(':'); + builder.append(portal.getYaw()).append(':'); + builder.append(portal.getTopLeft().toString()).append(':'); + builder.append(portal.getGate().getFilename()).append(':'); + builder.append(portal.isFixed() ? portal.getDestinationName() : "").append(':'); + builder.append(portal.getNetwork()).append(':'); UUID owner = portal.getOwnerUUID(); if (owner != null) { builder.append(portal.getOwnerUUID().toString()); @@ -692,24 +682,15 @@ public class PortalHandler { builder.append(portal.getOwnerName()); } builder.append(':'); - builder.append(portal.isHidden()); - builder.append(':'); - builder.append(portal.isAlwaysOn()); - builder.append(':'); - builder.append(portal.isPrivate()); - builder.append(':'); - builder.append(portal.getWorld().getName()); - builder.append(':'); - builder.append(portal.isFree()); - builder.append(':'); - builder.append(portal.isBackwards()); - builder.append(':'); - builder.append(portal.isShown()); - builder.append(':'); - builder.append(portal.isNoNetwork()); - builder.append(':'); - builder.append(portal.isRandom()); - builder.append(':'); + builder.append(portal.isHidden()).append(':'); + builder.append(portal.isAlwaysOn()).append(':'); + builder.append(portal.isPrivate()).append(':'); + builder.append(portal.getWorld().getName()).append(':'); + builder.append(portal.isFree()).append(':'); + builder.append(portal.isBackwards()).append(':'); + builder.append(portal.isShown()).append(':'); + builder.append(portal.isNoNetwork()).append(':'); + builder.append(portal.isRandom()).append(':'); builder.append(portal.isBungee()); bw.append(builder.toString()); @@ -723,9 +704,9 @@ public class PortalHandler { } /** - * Clears all loaded gates and gate data from all worlds + * Clears all loaded portals and portal data from all worlds */ - public static void clearGates() { + public static void clearPortals() { lookupBlocks.clear(); portalLookupByNetwork.clear(); lookupEntrances.clear(); @@ -735,11 +716,11 @@ public class PortalHandler { } /** - * Clears all gates loaded in a given world + * Clears all portals loaded in a given world * * @param world

The world containing the portals to clear

*/ - public static void clearGates(World world) { + public static void clearPortals(World world) { //This is necessary List portalsToRemove = new ArrayList<>(); allPortals.forEach((portal) -> { @@ -748,7 +729,7 @@ public class PortalHandler { } }); - clearGates(portalsToRemove); + clearPortals(portalsToRemove); } /** @@ -756,7 +737,7 @@ public class PortalHandler { * * @param portalsToRemove

A list of portals to remove

*/ - private static void clearGates(List portalsToRemove) { + private static void clearPortals(List portalsToRemove) { List portalNames = new ArrayList<>(); portalsToRemove.forEach((portal) -> portalNames.add(portal.getName())); lookupBlocks.keySet().removeIf((key) -> portalsToRemove.contains(lookupBlocks.get(key))); @@ -773,18 +754,18 @@ public class PortalHandler { } /** - * Loads all gates for the given world + * Loads all portals for the given world * - * @param world

The world to load gates for

- * @return

True if gates could be loaded

+ * @param world

The world to load portals for

+ * @return

True if portals could be loaded

*/ - public static boolean loadAllGates(World world) { + public static boolean loadAllPortals(World world) { String location = Stargate.getSaveLocation(); File database = new File(location, world.getName() + ".db"); if (database.exists()) { - return loadStarGates(world, database); + return loadPortals(world, database); } else { Stargate.logger.info(Stargate.getString("prefix") + "{" + world.getName() + "} No stargates for world "); } @@ -792,13 +773,13 @@ public class PortalHandler { } /** - * Loads all the given gates + * Loads all the given portals * - * @param world

The world to load gates for

- * @param database

The database file containing the gates

- * @return

True if the gates were loaded successfully

+ * @param world

The world to load portals for

+ * @param database

The database file containing the portals

+ * @return

True if the portals were loaded successfully

*/ - private static boolean loadStarGates(World world, File database) { + private static boolean loadPortals(World world, File database) { int lineIndex = 0; try { Scanner scanner = new Scanner(database); @@ -818,12 +799,12 @@ public class PortalHandler { continue; } - loadStarGate(portalData, world, lineIndex); + loadPortal(portalData, world, lineIndex); } scanner.close(); // Open any always-on gates. Do this here as it should be more efficient than in the loop. - TwoTuple portalCounts = openAlwaysOpenGates(); + TwoTuple portalCounts = openAlwaysOpenPortals(); Stargate.logger.info(String.format("%s{%s} Loaded %d stargates with %d set as always-on", Stargate.getString("prefix"), world.getName(), portalCounts.getSecondValue(), @@ -837,13 +818,13 @@ public class PortalHandler { } /** - * Loads one gate from a data array + * Loads one portal from a data array * * @param portalData

The array describing the portal

* @param world

The world to create the portal in

* @param lineIndex

The line index to report in case the user needs to fix an error

*/ - private static void loadStarGate(String[] portalData, World world, int lineIndex) { + private static void loadPortal(String[] portalData, World world, int lineIndex) { //Load min. required portal data String name = portalData[0]; BlockLocation sign = new BlockLocation(world, portalData[1]); @@ -878,7 +859,7 @@ public class PortalHandler { } catch (IllegalArgumentException ex) { // neither name nor UUID, so keep it as-is ownerName = ownerString; - Stargate.debug("loadAllGates", "Invalid stargate owner string: " + ownerString); + Stargate.debug("loadAllPortals", "Invalid stargate owner string: " + ownerString); } } else { ownerName = ownerString; @@ -908,11 +889,11 @@ public class PortalHandler { } /** - * Opens all always open gates + * Opens all always open portals * - * @return

A TwoTuple where the first value is the number of always open gates and the second value is the total number of gates

+ * @return

A TwoTuple where the first value is the number of always open portals and the second value is the total number of portals

*/ - private static TwoTuple openAlwaysOpenGates() { + private static TwoTuple openAlwaysOpenPortals() { int portalCount = 0; int openCount = 0; for (Iterator iterator = allPortals.iterator(); iterator.hasNext(); ) { @@ -923,7 +904,7 @@ public class PortalHandler { // Verify portal integrity/register portal if (!portal.wasVerified() && (!portal.isVerified() || !portal.checkIntegrity())) { - destroyInvalidStarGate(portal); + destroyInvalidPortal(portal); iterator.remove(); continue; } @@ -940,15 +921,15 @@ public class PortalHandler { } /** - * Destroys a star gate which has failed its integrity test + * Destroys a portal which has failed its integrity test * - * @param portal

The portal of the star gate

+ * @param portal

The portal of the star portal

*/ - private static void destroyInvalidStarGate(Portal portal) { + private static void destroyInvalidPortal(Portal portal) { // DEBUG for (RelativeBlockVector control : portal.getGate().getLayout().getControls()) { if (!portal.getBlockAt(control).getBlock().getType().equals(portal.getGate().getControlBlock())) { - Stargate.debug("loadAllGates", "Control Block Type == " + portal.getBlockAt(control).getBlock().getType().name()); + Stargate.debug("loadAllPortals", "Control Block Type == " + portal.getBlockAt(control).getBlock().getType().name()); } } PortalHandler.unregisterPortal(portal, false); @@ -956,9 +937,9 @@ public class PortalHandler { } /** - * Closes all star gate portals + * Closes all portals */ - public static void closeAllGates() { + public static void closeAllPortals() { Stargate.logger.info("Closing all stargates."); for (Portal portal : allPortals) { if (portal != null) { diff --git a/src/main/java/net/knarcraft/stargate/utility/BungeeHelper.java b/src/main/java/net/knarcraft/stargate/utility/BungeeHelper.java index 2939bae..a894503 100644 --- a/src/main/java/net/knarcraft/stargate/utility/BungeeHelper.java +++ b/src/main/java/net/knarcraft/stargate/utility/BungeeHelper.java @@ -124,7 +124,7 @@ public final class BungeeHelper { if (player == null) { Stargate.bungeeQueue.put(playerName.toLowerCase(), destination); } else { - Portal destinationPortal = PortalHandler.getBungeeGate(destination); + Portal destinationPortal = PortalHandler.getBungeePortal(destination); // Specified an invalid gate. For now we'll just let them connect at their current location if (destinationPortal == null) { Stargate.logger.info(Stargate.getString("prefix") + "Bungee gate " + destination + " does not exist");