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
}
/**
* 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
*

View File

@@ -5,6 +5,7 @@ import net.TheDgtl.Stargate.manager.PermissionManager;
import net.TheDgtl.Stargate.network.Network;
import net.TheDgtl.Stargate.network.RegistryAPI;
import net.TheDgtl.Stargate.network.portal.RealPortal;
import net.knarcraft.stargatecommand.StargateCommand;
import net.knarcraft.stargatecommand.manager.OverrideManager;
import net.knarcraft.stargatecommand.util.PortalFinderHelper;
import org.bukkit.command.Command;
@@ -18,6 +19,7 @@ import org.jetbrains.annotations.NotNull;
*/
public class CommandDial implements CommandExecutor {
private final char spaceReplacement = StargateCommand.getSpaceReplacementCharacter();
private final StargateAPI stargateAPI;
private final RegistryAPI registryAPI;
@@ -49,8 +51,8 @@ public class CommandDial implements CommandExecutor {
}
PermissionManager permissionManager = stargateAPI.getPermissionManager(player);
String networkName = args[0];
String portalName = args[1];
String networkName = args[0].replace(spaceReplacement, ' ');
String portalName = args[1].replace(spaceReplacement, ' ');
Network network = registryAPI.getNetwork(networkName, false);
if (network == null) {
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.Portal;
import net.TheDgtl.Stargate.network.portal.PortalFlag;
import net.knarcraft.stargatecommand.StargateCommand;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -15,6 +16,7 @@ import org.jetbrains.annotations.NotNull;
*/
public class CommandVisualizer implements CommandExecutor {
private final char spaceReplacement = StargateCommand.getSpaceReplacementCharacter();
private final RegistryAPI registryAPI;
/**
@@ -39,7 +41,7 @@ public class CommandVisualizer implements CommandExecutor {
return true;
}
Network network = registryAPI.getNetwork(args[0], false);
Network network = registryAPI.getNetwork(args[0].replace(spaceReplacement, ' '), false);
if (network == null) {
commandSender.sendMessage("You must provide a valid network to visualize");
return true;
@@ -49,29 +51,23 @@ public class CommandVisualizer implements CommandExecutor {
stringBuilder.append("All portals in network: ").append(network.getName()).append("\n");
stringBuilder.append("Symbol explanation: ").append("\n");
stringBuilder.append("# = hidden, ¤ = not hidden").append("\n");
stringBuilder.append("O = always on, - = not always on").append("\n");
stringBuilder.append("| = fixed, > = destination choose-able");
stringBuilder.append(" = hidden, = not hidden").append("\n");
stringBuilder.append(" = always on, = not always on").append("\n");
//Print info about all portals in the network
for (Portal portal : network.getAllPortals()) {
stringBuilder.append("\n");
if (portal.hasFlag(PortalFlag.HIDDEN)) {
stringBuilder.append('#');
stringBuilder.append('');
} else {
stringBuilder.append('¤');
stringBuilder.append('');
}
if (portal.hasFlag(PortalFlag.ALWAYS_ON)) {
stringBuilder.append('O');
stringBuilder.append('');
} else {
stringBuilder.append('-');
stringBuilder.append('');
}
//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());
if (portal instanceof FixedPortal) {
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.portal.Portal;
import net.TheDgtl.Stargate.network.portal.RealPortal;
import net.knarcraft.stargatecommand.StargateCommand;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
@@ -27,6 +28,7 @@ import static net.knarcraft.stargatecommand.util.TabCompleterHelper.filterMatchi
*/
public class DialTabCompleter implements TabCompleter {
private final char spaceReplacement = StargateCommand.getSpaceReplacementCharacter();
private final StargateAPI stargateAPI;
/**
@@ -56,14 +58,14 @@ public class DialTabCompleter implements TabCompleter {
populateNetworksAndPortals(permissionManager, availableNetworks, availablePortals);
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)) {
return filterMatching(availablePortals.get(network), args[1]);
return filterMatching(availablePortals.get(network), args[1].replace(spaceReplacement, ' '));
} else {
return new ArrayList<>();
}
} 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)) {
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
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;
import net.TheDgtl.Stargate.network.RegistryAPI;
import net.knarcraft.stargatecommand.StargateCommand;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
@@ -34,7 +35,8 @@ public class VisualizerTabCompleter implements TabCompleter {
@NotNull String[] args) {
if (args.length < 2) {
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]);
} else {
return new ArrayList<>();