diff --git a/src/main/java/net/knarcraft/stargate/config/StargateConfig.java b/src/main/java/net/knarcraft/stargate/config/StargateConfig.java index 189b2c7..23cb4b7 100644 --- a/src/main/java/net/knarcraft/stargate/config/StargateConfig.java +++ b/src/main/java/net/knarcraft/stargate/config/StargateConfig.java @@ -464,7 +464,7 @@ public final class StargateConfig { */ @NotNull private String replacePluginFolderPath(@NotNull String input) { - Pattern pattern = Pattern.compile("(?i)^plugins/Stargate"); + Pattern pattern = Pattern.compile("(?i)^plugins[\\\\\\/]Stargate"); Matcher matcher = pattern.matcher(input); if (matcher.matches()) { return dataFolderPath + matcher.replaceAll(""); diff --git a/src/main/java/net/knarcraft/stargate/container/RelativeBlockVector.java b/src/main/java/net/knarcraft/stargate/container/RelativeBlockVector.java index e06d08e..5f904a5 100644 --- a/src/main/java/net/knarcraft/stargate/container/RelativeBlockVector.java +++ b/src/main/java/net/knarcraft/stargate/container/RelativeBlockVector.java @@ -64,36 +64,6 @@ public record RelativeBlockVector(int right, int down, int out) { return new RelativeBlockVector(-this.right, -this.down, -this.out); } - /** - * Gets the distance to the right relative to the origin - * - * @return

The distance to the right relative to the origin

- */ - @Override - public int right() { - return right; - } - - /** - * Gets the distance downward relative to the origin - * - * @return

The distance downward relative to the origin

- */ - @Override - public int down() { - return down; - } - - /** - * Gets the distance outward relative to the origin - * - * @return

The distance outward relative to the origin

- */ - @Override - public int out() { - return out; - } - @Override @NotNull public String toString() { diff --git a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java index 7f8b418..04323e3 100644 --- a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java @@ -353,7 +353,7 @@ public class PlayerEventListener implements Listener { } //Prevent a double click caused by a Spigot bug - if (clickIsBug(event.getPlayer(), block)) { + if (clickIsBug(event.getPlayer())) { return; } @@ -425,10 +425,9 @@ public class PlayerEventListener implements Listener { * clicking once the bug is fixed.

* * @param player

The player performing the right-click

- * @param block

The block to check

* @return

True if the click is a bug and should be cancelled

*/ - private boolean clickIsBug(@NotNull Player player, @NotNull Block block) { + private boolean clickIsBug(@NotNull Player player) { Long previousEventTime = previousEventTimes.get(player); if (previousEventTime != null && previousEventTime + 50 > System.currentTimeMillis()) { previousEventTimes.put(player, null); diff --git a/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java b/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java index b35b978..5de125a 100644 --- a/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java @@ -116,16 +116,32 @@ public class VehicleEventListener implements Listener { return; } + // Perform the teleportation + teleportPlayerAndVehicle(players, vehicle, entrancePortal, destinationPortal); + } + + /** + * Performs the teleportation of one or more players in a vehicle + * + * @param players

The players to be teleported

+ * @param vehicle

The vehicle that triggered the teleportation

+ * @param entrancePortal

The portal the player(s) and vehicle entered from

+ * @param destinationPortal

The portal the player(s) and vehicle are teleporting to

+ */ + private static void teleportPlayerAndVehicle(@NotNull List players, @NotNull Vehicle vehicle, + @NotNull Portal entrancePortal, @NotNull Portal destinationPortal) { //Teleport the vehicle and inform the user if the vehicle was teleported boolean teleported = new VehicleTeleporter(destinationPortal, vehicle).teleportEntity(entrancePortal); - if (teleported) { - if (!entrancePortal.getOptions().isSilent()) { - for (Player player : players) { - Stargate.getMessageSender().sendSuccessMessage(player, Stargate.getString(Message.TELEPORTED)); - } - } - entrancePortal.getPortalOpener().closePortal(false); + if (!teleported) { + return; } + + if (!entrancePortal.getOptions().isSilent()) { + for (Player player : players) { + Stargate.getMessageSender().sendSuccessMessage(player, Stargate.getString(Message.TELEPORTED)); + } + } + entrancePortal.getPortalOpener().closePortal(false); } /** diff --git a/src/main/java/net/knarcraft/stargate/portal/Portal.java b/src/main/java/net/knarcraft/stargate/portal/Portal.java index 304136e..660106a 100644 --- a/src/main/java/net/knarcraft/stargate/portal/Portal.java +++ b/src/main/java/net/knarcraft/stargate/portal/Portal.java @@ -6,6 +6,7 @@ import net.knarcraft.stargate.portal.property.PortalLocation; import net.knarcraft.stargate.portal.property.PortalOption; import net.knarcraft.stargate.portal.property.PortalOptions; import net.knarcraft.stargate.portal.property.PortalOwner; +import net.knarcraft.stargate.portal.property.PortalStrings; import net.knarcraft.stargate.portal.property.PortalStructure; import net.knarcraft.stargate.portal.property.gate.Gate; import net.md_5.bungee.api.ChatColor; @@ -41,23 +42,21 @@ public class Portal { * * @param portalLocation

Object containing locations of all relevant blocks

* @param button

The location of the portal's open button

- * @param destination

The destination defined on the sign's destination line. "" for non-fixed gates

- * @param name

The name of the portal defined on the sign's first line

- * @param network

The network the portal belongs to, defined on the sign's third

+ * @param portalStrings

The portal's string values, such as name, network and destination

* @param gate

The gate type to use for this portal

* @param portalOwner

The portal's owner

* @param options

A map containing all possible portal options, with true for the ones enabled

*/ - public Portal(@NotNull PortalLocation portalLocation, @Nullable BlockLocation button, @NotNull String destination, - @NotNull String name, @NotNull String network, @NotNull Gate gate, @NotNull PortalOwner portalOwner, + public Portal(@NotNull PortalLocation portalLocation, @Nullable BlockLocation button, + @NotNull PortalStrings portalStrings, @NotNull Gate gate, @NotNull PortalOwner portalOwner, @NotNull Map options) { this.location = portalLocation; - this.network = network; - this.name = name; + this.network = portalStrings.network(); + this.name = portalStrings.name(); this.portalOwner = portalOwner; - this.options = new PortalOptions(options, destination.length() > 0); + this.options = new PortalOptions(options, portalStrings.destination().length() > 0); this.signDrawer = new PortalSignDrawer(this); - this.portalOpener = new PortalOpener(this, destination); + this.portalOpener = new PortalOpener(this, portalStrings.destination()); this.structure = new PortalStructure(this, gate, button); this.portalActivator = portalOpener.getPortalActivator(); this.cleanName = cleanString(name); diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java b/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java index 0833f87..4c3e253 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java @@ -78,8 +78,8 @@ public class PortalActivator { return null; } //Get one random destination - String destination = ListHelper.getRandom(destinations); - return PortalHandler.getByName(Portal.cleanString(destination), portalNetwork); + String randomDestination = ListHelper.getRandom(destinations); + return PortalHandler.getByName(Portal.cleanString(randomDestination), portalNetwork); } else { //Just return the normal fixed destination return PortalHandler.getByName(Portal.cleanString(destination), portalNetwork); diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java b/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java index c09d17c..942931f 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java @@ -9,6 +9,7 @@ import net.knarcraft.stargate.portal.property.PortalLocation; import net.knarcraft.stargate.portal.property.PortalOption; import net.knarcraft.stargate.portal.property.PortalOptions; import net.knarcraft.stargate.portal.property.PortalOwner; +import net.knarcraft.stargate.portal.property.PortalStrings; import net.knarcraft.stargate.portal.property.gate.Gate; import net.knarcraft.stargate.portal.property.gate.GateHandler; import net.knarcraft.stargate.utility.DirectionHelper; @@ -167,8 +168,8 @@ public class PortalCreator { } PortalOwner owner = new PortalOwner(player); - this.portal = new Portal(portalLocation, null, destinationName, portalName, network, gate, owner, - portalOptions); + PortalStrings portalStrings = new PortalStrings(portalName, network, destinationName); + this.portal = new Portal(portalLocation, null, portalStrings, gate, owner, portalOptions); return validatePortal(denyMessage, event.getLines(), deny); } diff --git a/src/main/java/net/knarcraft/stargate/portal/property/PortalStrings.java b/src/main/java/net/knarcraft/stargate/portal/property/PortalStrings.java new file mode 100644 index 0000000..839a6e9 --- /dev/null +++ b/src/main/java/net/knarcraft/stargate/portal/property/PortalStrings.java @@ -0,0 +1,13 @@ +package net.knarcraft.stargate.portal.property; + +import org.jetbrains.annotations.NotNull; + +/** + * A record of a portal's string values + * + * @param name

The name of the portal

+ * @param network

The name of the network the portal belongs to

+ * @param destination

The name of the portal's destination

+ */ +public record PortalStrings(@NotNull String name, @NotNull String network, @NotNull String destination) { +} diff --git a/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java b/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java index 98ff915..bfc8d8f 100644 --- a/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java +++ b/src/main/java/net/knarcraft/stargate/utility/PortalFileHelper.java @@ -10,6 +10,7 @@ import net.knarcraft.stargate.portal.PortalRegistry; import net.knarcraft.stargate.portal.property.PortalLocation; import net.knarcraft.stargate.portal.property.PortalOptions; import net.knarcraft.stargate.portal.property.PortalOwner; +import net.knarcraft.stargate.portal.property.PortalStrings; import net.knarcraft.stargate.portal.property.gate.Gate; import net.knarcraft.stargate.portal.property.gate.GateHandler; import org.bukkit.Bukkit; @@ -286,7 +287,8 @@ public final class PortalFileHelper { PortalOwner owner = new PortalOwner(ownerString); //Create the new portal - Portal portal = new Portal(portalLocation, button, destination, name, network, gate, owner, + PortalStrings portalStrings = new PortalStrings(name, network, destination); + Portal portal = new Portal(portalLocation, button, portalStrings, gate, owner, PortalHandler.getPortalOptions(portalData)); //Register the portal, and close it in case it wasn't properly closed when the server stopped