Adds a small workaround to handle Networks and Portals with spaces #8

This commit is contained in:
2022-06-01 04:50:04 +02:00
parent 95a996ff9c
commit a4d3ce47dc
5 changed files with 33 additions and 21 deletions

View File

@@ -57,6 +57,15 @@ public class StargateCommand extends JavaPlugin {
//Currently, nothing needs to be disabled //Currently, nothing needs to be disabled
} }
/**
* Gets the character used to replace spaces in portal and network names
*
* @return <p>The character used to replace spaces</p>
*/
public static char getSpaceReplacementCharacter() {
return '⚊';
}
/** /**
* Gets an instance of this plugin * Gets an instance of this plugin
* *

View File

@@ -5,6 +5,7 @@ import net.TheDgtl.Stargate.manager.PermissionManager;
import net.TheDgtl.Stargate.network.Network; import net.TheDgtl.Stargate.network.Network;
import net.TheDgtl.Stargate.network.RegistryAPI; import net.TheDgtl.Stargate.network.RegistryAPI;
import net.TheDgtl.Stargate.network.portal.RealPortal; import net.TheDgtl.Stargate.network.portal.RealPortal;
import net.knarcraft.stargatecommand.StargateCommand;
import net.knarcraft.stargatecommand.manager.OverrideManager; import net.knarcraft.stargatecommand.manager.OverrideManager;
import net.knarcraft.stargatecommand.util.PortalFinderHelper; import net.knarcraft.stargatecommand.util.PortalFinderHelper;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -18,6 +19,7 @@ import org.jetbrains.annotations.NotNull;
*/ */
public class CommandDial implements CommandExecutor { public class CommandDial implements CommandExecutor {
private final char spaceReplacement = StargateCommand.getSpaceReplacementCharacter();
private final StargateAPI stargateAPI; private final StargateAPI stargateAPI;
private final RegistryAPI registryAPI; private final RegistryAPI registryAPI;
@@ -49,8 +51,8 @@ public class CommandDial implements CommandExecutor {
} }
PermissionManager permissionManager = stargateAPI.getPermissionManager(player); PermissionManager permissionManager = stargateAPI.getPermissionManager(player);
String networkName = args[0]; String networkName = args[0].replace(spaceReplacement, ' ');
String portalName = args[1]; String portalName = args[1].replace(spaceReplacement, ' ');
Network network = registryAPI.getNetwork(networkName, false); Network network = registryAPI.getNetwork(networkName, false);
if (network == null) { if (network == null) {
commandSender.sendMessage("Invalid network selected"); commandSender.sendMessage("Invalid network selected");

View File

@@ -5,6 +5,7 @@ import net.TheDgtl.Stargate.network.RegistryAPI;
import net.TheDgtl.Stargate.network.portal.FixedPortal; import net.TheDgtl.Stargate.network.portal.FixedPortal;
import net.TheDgtl.Stargate.network.portal.Portal; import net.TheDgtl.Stargate.network.portal.Portal;
import net.TheDgtl.Stargate.network.portal.PortalFlag; import net.TheDgtl.Stargate.network.portal.PortalFlag;
import net.knarcraft.stargatecommand.StargateCommand;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -15,6 +16,7 @@ import org.jetbrains.annotations.NotNull;
*/ */
public class CommandVisualizer implements CommandExecutor { public class CommandVisualizer implements CommandExecutor {
private final char spaceReplacement = StargateCommand.getSpaceReplacementCharacter();
private final RegistryAPI registryAPI; private final RegistryAPI registryAPI;
/** /**
@@ -39,7 +41,7 @@ public class CommandVisualizer implements CommandExecutor {
return true; return true;
} }
Network network = registryAPI.getNetwork(args[0], false); Network network = registryAPI.getNetwork(args[0].replace(spaceReplacement, ' '), false);
if (network == null) { if (network == null) {
commandSender.sendMessage("You must provide a valid network to visualize"); commandSender.sendMessage("You must provide a valid network to visualize");
return true; return true;
@@ -49,29 +51,23 @@ public class CommandVisualizer implements CommandExecutor {
stringBuilder.append("All portals in network: ").append(network.getName()).append("\n"); stringBuilder.append("All portals in network: ").append(network.getName()).append("\n");
stringBuilder.append("Symbol explanation: ").append("\n"); stringBuilder.append("Symbol explanation: ").append("\n");
stringBuilder.append("# = hidden, ¤ = not hidden").append("\n"); stringBuilder.append(" = hidden, = not hidden").append("\n");
stringBuilder.append("O = always on, - = not always on").append("\n"); stringBuilder.append(" = always on, = not always on").append("\n");
stringBuilder.append("| = fixed, > = destination choose-able");
//Print info about all portals in the network //Print info about all portals in the network
for (Portal portal : network.getAllPortals()) { for (Portal portal : network.getAllPortals()) {
stringBuilder.append("\n"); stringBuilder.append("\n");
if (portal.hasFlag(PortalFlag.HIDDEN)) { if (portal.hasFlag(PortalFlag.HIDDEN)) {
stringBuilder.append('#'); stringBuilder.append('');
} else { } else {
stringBuilder.append('¤'); stringBuilder.append('');
} }
if (portal.hasFlag(PortalFlag.ALWAYS_ON)) { if (portal.hasFlag(PortalFlag.ALWAYS_ON)) {
stringBuilder.append('O'); stringBuilder.append('');
} else { } else {
stringBuilder.append('-'); stringBuilder.append('');
} }
//TODO: Look for the fixed flag instead of FixedPortal once it's fixed //TODO: Look for the fixed flag instead of FixedPortal once it's fixed
if (portal instanceof FixedPortal) {
stringBuilder.append('|');
} else {
stringBuilder.append('>');
}
stringBuilder.append(" ").append(portal.getName()); stringBuilder.append(" ").append(portal.getName());
if (portal instanceof FixedPortal) { if (portal instanceof FixedPortal) {
stringBuilder.append(" -> "); stringBuilder.append(" -> ");

View File

@@ -6,6 +6,7 @@ import net.TheDgtl.Stargate.network.Network;
import net.TheDgtl.Stargate.network.RegistryAPI; import net.TheDgtl.Stargate.network.RegistryAPI;
import net.TheDgtl.Stargate.network.portal.Portal; import net.TheDgtl.Stargate.network.portal.Portal;
import net.TheDgtl.Stargate.network.portal.RealPortal; import net.TheDgtl.Stargate.network.portal.RealPortal;
import net.knarcraft.stargatecommand.StargateCommand;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
@@ -27,6 +28,7 @@ import static net.knarcraft.stargatecommand.util.TabCompleterHelper.filterMatchi
*/ */
public class DialTabCompleter implements TabCompleter { public class DialTabCompleter implements TabCompleter {
private final char spaceReplacement = StargateCommand.getSpaceReplacementCharacter();
private final StargateAPI stargateAPI; private final StargateAPI stargateAPI;
/** /**
@@ -56,14 +58,14 @@ public class DialTabCompleter implements TabCompleter {
populateNetworksAndPortals(permissionManager, availableNetworks, availablePortals); populateNetworksAndPortals(permissionManager, availableNetworks, availablePortals);
if (args.length > 1) { if (args.length > 1) {
Network network = registryAPI.getNetwork(args[0], false); Network network = registryAPI.getNetwork(args[0].replace(spaceReplacement, ' '), false);
if (network != null && availablePortals.containsKey(network)) { if (network != null && availablePortals.containsKey(network)) {
return filterMatching(availablePortals.get(network), args[1]); return filterMatching(availablePortals.get(network), args[1].replace(spaceReplacement, ' '));
} else { } else {
return new ArrayList<>(); return new ArrayList<>();
} }
} else { } else {
return filterMatching(availableNetworks, args[0]); return filterMatching(availableNetworks, args[0].replace(spaceReplacement, ' '));
} }
} }
@@ -86,12 +88,13 @@ public class DialTabCompleter implements TabCompleter {
if (!availablePortals.containsKey(network)) { if (!availablePortals.containsKey(network)) {
availablePortals.put(network, new LinkedList<>()); availablePortals.put(network, new LinkedList<>());
} }
availablePortals.get(network).add(portal.getName()); availablePortals.get(network).add(portal.getName().replace(' ', spaceReplacement));
} }
} }
} }
//Add only the network names with portals available to the player //Add only the network names with portals available to the player
availablePortals.keySet().forEach((item) -> availableNetworks.add(item.getName())); availablePortals.keySet().forEach((item) -> availableNetworks.add(item.getName().replace(' ',
spaceReplacement)));
} }
} }

View File

@@ -1,6 +1,7 @@
package net.knarcraft.stargatecommand.command; package net.knarcraft.stargatecommand.command;
import net.TheDgtl.Stargate.network.RegistryAPI; import net.TheDgtl.Stargate.network.RegistryAPI;
import net.knarcraft.stargatecommand.StargateCommand;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
@@ -34,7 +35,8 @@ public class VisualizerTabCompleter implements TabCompleter {
@NotNull String[] args) { @NotNull String[] args) {
if (args.length < 2) { if (args.length < 2) {
List<String> networkNames = new ArrayList<>(); List<String> networkNames = new ArrayList<>();
registryAPI.getNetworkMap().values().forEach(item -> networkNames.add(item.getName())); registryAPI.getNetworkMap().values().forEach(item -> networkNames.add(item.getName().replace(' ',
StargateCommand.getSpaceReplacementCharacter())));
return filterMatching(networkNames, args[0]); return filterMatching(networkNames, args[0]);
} else { } else {
return new ArrayList<>(); return new ArrayList<>();