diff options
Diffstat (limited to 'src/main/java/gregtech/common/misc')
7 files changed, 116 insertions, 193 deletions
diff --git a/src/main/java/gregtech/common/misc/GT_Command.java b/src/main/java/gregtech/common/misc/GT_Command.java index ad3293be90..3bf73b6300 100644 --- a/src/main/java/gregtech/common/misc/GT_Command.java +++ b/src/main/java/gregtech/common/misc/GT_Command.java @@ -1,17 +1,14 @@ package gregtech.common.misc; import static gregtech.common.misc.WirelessNetworkManager.addEUToGlobalEnergyMap; -import static gregtech.common.misc.WirelessNetworkManager.getRawUUIDFromUsername; -import static gregtech.common.misc.WirelessNetworkManager.getUUIDFromUsername; import static gregtech.common.misc.WirelessNetworkManager.getUserEU; -import static gregtech.common.misc.WirelessNetworkManager.getUsernameFromUUID; -import static gregtech.common.misc.WirelessNetworkManager.joinUserNetwork; import static gregtech.common.misc.WirelessNetworkManager.setUserEU; import java.lang.reflect.Field; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import java.util.stream.Stream; import net.minecraft.command.CommandBase; @@ -27,6 +24,7 @@ import gregtech.api.enums.GT_Values; import gregtech.api.objects.GT_ChunkManager; import gregtech.api.util.GT_Utility; import gregtech.common.GT_Pollution; +import gregtech.common.misc.spaceprojects.SpaceProjectManager; public final class GT_Command extends CommandBase { @@ -196,18 +194,12 @@ public final class GT_Command extends CommandBase { case "global_energy_add" -> { String username = strings[1]; String formatted_username = EnumChatFormatting.BLUE + username + EnumChatFormatting.RESET; - String uuid = getUUIDFromUsername(username); + UUID uuid = SpaceProjectManager.getPlayerUUIDFromName(username); String EU_String = strings[2]; // Usage is /gt global_energy_add username EU - if (uuid.equals("")) { - sender.addChatMessage( - new ChatComponentText("User " + formatted_username + " has no global energy network.")); - break; - } - String EU_string_formatted = EnumChatFormatting.RED + GT_Utility.formatNumbers(new BigInteger(EU_String)) + EnumChatFormatting.RESET; @@ -240,13 +232,7 @@ public final class GT_Command extends CommandBase { String username = strings[1]; String formatted_username = EnumChatFormatting.BLUE + username + EnumChatFormatting.RESET; - String uuid = getUUIDFromUsername(username); - - if (uuid.equals("")) { - sender.addChatMessage( - new ChatComponentText("User " + formatted_username + " has no global energy network.")); - break; - } + UUID uuid = SpaceProjectManager.getPlayerUUIDFromName(username); String EU_String_0 = strings[2]; @@ -278,23 +264,12 @@ public final class GT_Command extends CommandBase { String formattedUsernameSubject = EnumChatFormatting.BLUE + usernameSubject + EnumChatFormatting.RESET; String formattedUsernameTeam = EnumChatFormatting.BLUE + usernameTeam + EnumChatFormatting.RESET; - String uuidSubject = getRawUUIDFromUsername(usernameSubject); - String uuidTeam = getUUIDFromUsername(usernameTeam); + UUID uuidSubject = SpaceProjectManager.getPlayerUUIDFromName(usernameSubject); + UUID uuidTeam = SpaceProjectManager.getLeader(SpaceProjectManager.getPlayerUUIDFromName(usernameTeam)); - if (usernameSubject.equals(usernameTeam)) { + if (uuidSubject.equals(uuidTeam)) { // leave team - if ("".equals(uuidSubject)) { - sender.addChatMessage( - new ChatComponentText( - "User " + formattedUsernameSubject + " has no global energy network.")); - break; - } - if (uuidSubject.equals(uuidTeam)) { - sender.addChatMessage( - new ChatComponentText("User " + formattedUsernameSubject + " is already in his own team!")); - break; - } - joinUserNetwork(uuidSubject, uuidSubject); + SpaceProjectManager.putInTeam(uuidSubject, uuidSubject); sender.addChatMessage( new ChatComponentText( "User " + formattedUsernameSubject + " has rejoined their own global energy network.")); @@ -303,24 +278,12 @@ public final class GT_Command extends CommandBase { // join other's team - List<String> noNetPlayers = new ArrayList<>(); - - if ("".equals(uuidSubject)) noNetPlayers.add(usernameSubject); - if ("".equals(uuidTeam)) noNetPlayers.add(usernameTeam); - - if (!noNetPlayers.isEmpty()) { - sender.addChatMessage( - new ChatComponentText( - "User " + String.join(" and ", noNetPlayers) + " has no global energy network.")); - break; - } - if (uuidSubject.equals(uuidTeam)) { sender.addChatMessage(new ChatComponentText("They are already in the same network!")); break; } - joinUserNetwork(uuidSubject, uuidTeam); + SpaceProjectManager.putInTeam(uuidSubject, uuidTeam); sender.addChatMessage( new ChatComponentText( @@ -340,29 +303,29 @@ public final class GT_Command extends CommandBase { String username = strings[1]; String formatted_username = EnumChatFormatting.BLUE + username + EnumChatFormatting.RESET; - String uuidTeam = getUUIDFromUsername(username); - String uuidSubject = getRawUUIDFromUsername(username); + UUID userUUID = SpaceProjectManager.getPlayerUUIDFromName(username); - if (uuidTeam.equals("")) { + if (!SpaceProjectManager.isInTeam(userUUID)) { sender.addChatMessage( new ChatComponentText("User " + formatted_username + " has no global energy network.")); break; } + UUID teamUUID = SpaceProjectManager.getLeader(userUUID); sender.addChatMessage( new ChatComponentText( "User " + formatted_username + " has " + EnumChatFormatting.RED - + GT_Utility.formatNumbers(getUserEU(uuidTeam)) + + GT_Utility.formatNumbers(getUserEU(userUUID)) + EnumChatFormatting.RESET + "EU in their network.")); - if (!uuidTeam.equals(uuidSubject)) sender.addChatMessage( + if (!userUUID.equals(teamUUID)) sender.addChatMessage( new ChatComponentText( "User " + formatted_username + " is currently in network of " + EnumChatFormatting.BLUE - + getUsernameFromUUID(uuidTeam) + + SpaceProjectManager.getPlayerNameFromUUID(teamUUID) + EnumChatFormatting.RESET + ".")); diff --git a/src/main/java/gregtech/common/misc/GlobalEnergyWorldSavedData.java b/src/main/java/gregtech/common/misc/GlobalEnergyWorldSavedData.java index dc87c3f520..417eef30ad 100644 --- a/src/main/java/gregtech/common/misc/GlobalEnergyWorldSavedData.java +++ b/src/main/java/gregtech/common/misc/GlobalEnergyWorldSavedData.java @@ -1,8 +1,6 @@ package gregtech.common.misc; import static gregtech.common.misc.GlobalVariableStorage.GlobalEnergy; -import static gregtech.common.misc.GlobalVariableStorage.GlobalEnergyName; -import static gregtech.common.misc.GlobalVariableStorage.GlobalEnergyTeam; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -12,6 +10,8 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.math.BigInteger; import java.util.HashMap; +import java.util.Map; +import java.util.UUID; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -20,6 +20,7 @@ import net.minecraft.world.storage.MapStorage; import net.minecraftforge.event.world.WorldEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import gregtech.common.misc.spaceprojects.SpaceProjectManager; public class GlobalEnergyWorldSavedData extends WorldSavedData { @@ -28,14 +29,11 @@ public class GlobalEnergyWorldSavedData extends WorldSavedData { private static final String DATA_NAME = "GregTech_WirelessEUWorldSavedData"; private static final String GlobalEnergyNBTTag = "GregTech_GlobalEnergy_MapNBTTag"; - private static final String GlobalEnergyNameNBTTag = "GregTech_GlobalEnergyName_MapNBTTag"; private static final String GlobalEnergyTeamNBTTag = "GregTech_GlobalEnergyTeam_MapNBTTag"; private static void loadInstance(World world) { GlobalEnergy.clear(); - GlobalEnergyTeam.clear(); - GlobalEnergyName.clear(); MapStorage storage = world.mapStorage; INSTANCE = (GlobalEnergyWorldSavedData) storage.loadData(GlobalEnergyWorldSavedData.class, DATA_NAME); @@ -72,29 +70,29 @@ public class GlobalEnergyWorldSavedData extends WorldSavedData { InputStream byteArrayInputStream = new ByteArrayInputStream(ba); ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); Object data = objectInputStream.readObject(); - GlobalEnergy = (HashMap<String, BigInteger>) data; + HashMap<Object, BigInteger> hashData = (HashMap<Object, BigInteger>) data; + for (Map.Entry<Object, BigInteger> entry : hashData.entrySet()) { + GlobalEnergy.put( + UUID.fromString( + entry.getKey() + .toString()), + entry.getValue()); + } } catch (IOException | ClassNotFoundException exception) { System.out.println(GlobalEnergyNBTTag + " FAILED"); exception.printStackTrace(); } - - try { - byte[] ba = nbtTagCompound.getByteArray(GlobalEnergyNameNBTTag); - InputStream byteArrayInputStream = new ByteArrayInputStream(ba); - ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); - Object data = objectInputStream.readObject(); - GlobalEnergyName = (HashMap<String, String>) data; - } catch (IOException | ClassNotFoundException exception) { - System.out.println(GlobalEnergyNameNBTTag + " FAILED"); - exception.printStackTrace(); - } - try { + if (!nbtTagCompound.hasKey(GlobalEnergyTeamNBTTag)) return; byte[] ba = nbtTagCompound.getByteArray(GlobalEnergyTeamNBTTag); InputStream byteArrayInputStream = new ByteArrayInputStream(ba); ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); Object data = objectInputStream.readObject(); - GlobalEnergyTeam = (HashMap<String, String>) data; + HashMap<String, String> oldTeams = (HashMap<String, String>) data; + for (String member : oldTeams.keySet()) { + String leader = oldTeams.get(member); + SpaceProjectManager.putInTeam(UUID.fromString(member), UUID.fromString(leader)); + } } catch (IOException | ClassNotFoundException exception) { System.out.println(GlobalEnergyTeamNBTTag + " FAILED"); exception.printStackTrace(); @@ -115,29 +113,5 @@ public class GlobalEnergyWorldSavedData extends WorldSavedData { System.out.println(GlobalEnergyNBTTag + " SAVE FAILED"); exception.printStackTrace(); } - - try { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); - objectOutputStream.writeObject(GlobalEnergyName); - objectOutputStream.flush(); - byte[] data = byteArrayOutputStream.toByteArray(); - nbtTagCompound.setByteArray(GlobalEnergyNameNBTTag, data); - } catch (Exception exception) { - System.out.println(GlobalEnergyNameNBTTag + " SAVE FAILED"); - exception.printStackTrace(); - } - - try { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); - objectOutputStream.writeObject(GlobalEnergyTeam); - objectOutputStream.flush(); - byte[] data = byteArrayOutputStream.toByteArray(); - nbtTagCompound.setByteArray(GlobalEnergyTeamNBTTag, data); - } catch (IOException exception) { - System.out.println(GlobalEnergyTeamNBTTag + " SAVE FAILED"); - exception.printStackTrace(); - } } } diff --git a/src/main/java/gregtech/common/misc/GlobalVariableStorage.java b/src/main/java/gregtech/common/misc/GlobalVariableStorage.java index 5ec0ed9c82..27aad0a11f 100644 --- a/src/main/java/gregtech/common/misc/GlobalVariableStorage.java +++ b/src/main/java/gregtech/common/misc/GlobalVariableStorage.java @@ -2,19 +2,13 @@ package gregtech.common.misc; import java.math.BigInteger; import java.util.HashMap; +import java.util.UUID; public abstract class GlobalVariableStorage { // --------------------- NEVER access these maps! Use the methods provided! --------------------- // Global EU map. - public static HashMap<String, BigInteger> GlobalEnergy = new HashMap<>(100, 0.9f); - - // Maps user IDs to usernames and vice versa. Seems redundant but this makes accessing this - // easier in certain locations (like gt commands). - public static HashMap<String, String> GlobalEnergyName = new HashMap<>(100, 0.9f); - - // Maps UUIDs to other UUIDs. This allows users to join a team. - public static HashMap<String, String> GlobalEnergyTeam = new HashMap<>(100, 0.9f); + public static HashMap<UUID, BigInteger> GlobalEnergy = new HashMap<>(100, 0.9f); // ---------------------------------------------------------------------------------------------- diff --git a/src/main/java/gregtech/common/misc/WirelessNetworkManager.java b/src/main/java/gregtech/common/misc/WirelessNetworkManager.java index dc11becdbb..17107b4e50 100644 --- a/src/main/java/gregtech/common/misc/WirelessNetworkManager.java +++ b/src/main/java/gregtech/common/misc/WirelessNetworkManager.java @@ -1,59 +1,22 @@ package gregtech.common.misc; import static gregtech.common.misc.GlobalVariableStorage.GlobalEnergy; -import static gregtech.common.misc.GlobalVariableStorage.GlobalEnergyName; -import static gregtech.common.misc.GlobalVariableStorage.GlobalEnergyTeam; import java.math.BigInteger; import java.util.UUID; -import net.minecraft.entity.player.EntityPlayer; - import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.common.misc.spaceprojects.SpaceProjectManager; public class WirelessNetworkManager { private WirelessNetworkManager() {} - // User 0 will join user 1 by calling this function. They will share the same energy network. - public static void joinUserNetwork(String user_uuid_0, String user_uuid_1) { - GlobalEnergyTeam.put(user_uuid_0, user_uuid_1); - } - - // Adds a user to the energy map if they do not already exist. Otherwise, do nothing. Will also check if the user - // has changed their username and adjust the maps accordingly. This should be called infrequently. Ideally on first - // tick of a machine being placed only. - - public static void strongCheckOrAddUser(EntityPlayer user) { - strongCheckOrAddUser( - user.getUniqueID() - .toString(), - user.getDisplayName()); - } - - public static void strongCheckOrAddUser(UUID user_uuid, String user_name) { - strongCheckOrAddUser(user_uuid.toString(), user_name); - } - - public static void strongCheckOrAddUser(String user_uuid, String user_name) { - - // Check if the user has a team. Add them if not. - GlobalEnergyTeam.putIfAbsent(user_uuid, user_uuid); - - // Check if the user is in the global energy map. - GlobalEnergy.putIfAbsent(user_uuid, BigInteger.ZERO); - - // If the username linked to the users fixed uuid is not equal to their current name then remove it. - // This indicates that their username has changed. - if (!(GlobalEnergyName.getOrDefault(user_uuid, "") - .equals(user_name))) { - String old_name = GlobalEnergyName.get(user_uuid); - GlobalEnergyName.remove(old_name); + public static void strongCheckOrAddUser(UUID user_uuid) { + SpaceProjectManager.checkOrCreateTeam(user_uuid); + if (!GlobalEnergy.containsKey(user_uuid)) { + GlobalEnergy.put(SpaceProjectManager.getLeader(user_uuid), BigInteger.ZERO); } - - // Add UUID -> Name, Name -> UUID. - GlobalEnergyName.put(user_name, user_uuid); - GlobalEnergyName.put(user_uuid, user_name); } // ------------------------------------------------------------------------------------ @@ -61,8 +24,7 @@ public class WirelessNetworkManager { // If the value goes below 0 it will return false and not perform the operation. // BigIntegers have much slower operations than longs/ints. You should call these methods // as infrequently as possible and bulk store values to add to the global map. - public static boolean addEUToGlobalEnergyMap(String userUUID, BigInteger EU) { - + public static boolean addEUToGlobalEnergyMap(UUID user_uuid, BigInteger EU) { // Mark the data as dirty and in need of saving. try { GlobalEnergyWorldSavedData.INSTANCE.markDirty(); @@ -72,7 +34,7 @@ public class WirelessNetworkManager { } // Get the team UUID. Users are by default in a team with a UUID equal to their player UUID. - String teamUUID = GlobalEnergyTeam.getOrDefault(userUUID, userUUID); + UUID teamUUID = SpaceProjectManager.getLeader(user_uuid); // Get the teams total energy stored. If they are not in the map, return 0 EU. BigInteger totalEU = GlobalEnergy.getOrDefault(teamUUID, BigInteger.ZERO); @@ -88,34 +50,22 @@ public class WirelessNetworkManager { return false; } - public static boolean addEUToGlobalEnergyMap(UUID user_uuid, BigInteger EU) { - return addEUToGlobalEnergyMap(user_uuid.toString(), EU); - } - public static boolean addEUToGlobalEnergyMap(UUID user_uuid, long EU) { - return addEUToGlobalEnergyMap(user_uuid.toString(), BigInteger.valueOf(EU)); - } - - public static boolean addEUToGlobalEnergyMap(UUID user_uuid, int EU) { - return addEUToGlobalEnergyMap(user_uuid.toString(), BigInteger.valueOf(EU)); - } - - public static boolean addEUToGlobalEnergyMap(String user_uuid, long EU) { return addEUToGlobalEnergyMap(user_uuid, BigInteger.valueOf(EU)); } - public static boolean addEUToGlobalEnergyMap(String user_uuid, int EU) { + public static boolean addEUToGlobalEnergyMap(UUID user_uuid, int EU) { return addEUToGlobalEnergyMap(user_uuid, BigInteger.valueOf(EU)); } // ------------------------------------------------------------------------------------ - public static BigInteger getUserEU(String user_uuid) { - return GlobalEnergy.getOrDefault(GlobalEnergyTeam.getOrDefault(user_uuid, user_uuid), BigInteger.ZERO); + public static BigInteger getUserEU(UUID user_uuid) { + return GlobalEnergy.getOrDefault(SpaceProjectManager.getLeader(user_uuid), BigInteger.ZERO); } // This overwrites the EU in the network. Only use this if you are absolutely sure you know what you are doing. - public static void setUserEU(String user_uuid, BigInteger EU) { + public static void setUserEU(UUID user_uuid, BigInteger EU) { // Mark the data as dirty and in need of saving. try { GlobalEnergyWorldSavedData.INSTANCE.markDirty(); @@ -124,41 +74,20 @@ public class WirelessNetworkManager { exception.printStackTrace(); } - GlobalEnergy.put(GlobalEnergyTeam.get(user_uuid), EU); - } - - public static String getUsernameFromUUID(String uuid) { - return GlobalEnergyName.getOrDefault(GlobalEnergyTeam.getOrDefault(uuid, ""), ""); - } - - public static String getUUIDFromUsername(String username) { - return GlobalEnergyTeam.getOrDefault(GlobalEnergyName.getOrDefault(username, ""), ""); - } - - /** - * - * @param username - * @return - */ - public static String getRawUUIDFromUsername(String username) { - return GlobalEnergyName.getOrDefault(username, ""); + GlobalEnergy.put(SpaceProjectManager.getLeader(user_uuid), EU); } public static void clearGlobalEnergyInformationMaps() { // Do not use this unless you are 100% certain you know what you are doing. GlobalEnergy.clear(); - GlobalEnergyName.clear(); - GlobalEnergyTeam.clear(); } - public static String processInitialSettings(final IGregTechTileEntity machine) { + public static UUID processInitialSettings(final IGregTechTileEntity machine) { // UUID and username of the owner. - final String UUID = machine.getOwnerUuid() - .toString(); - final String name = machine.getOwnerName(); + final UUID UUID = machine.getOwnerUuid(); - strongCheckOrAddUser(UUID, name); + SpaceProjectManager.checkOrCreateTeam(UUID); return UUID; } } diff --git a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java index 1859249ccd..323b22e20a 100644 --- a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java +++ b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java @@ -76,7 +76,9 @@ public class SpaceProjectManager { project.setProjectLocation(location); map.put(Pair.of(location, projectName), project); - SpaceProjectWorldSavedData.INSTANCE.markDirty(); + if (SpaceProjectWorldSavedData.INSTANCE != null) { + SpaceProjectWorldSavedData.INSTANCE.markDirty(); + } return true; } @@ -113,7 +115,9 @@ public class SpaceProjectManager { spaceTeams.put(teamMember, teamLeader); } - SpaceProjectWorldSavedData.INSTANCE.markDirty(); + if (SpaceProjectWorldSavedData.INSTANCE != null) { + SpaceProjectWorldSavedData.INSTANCE.markDirty(); + } } /** @@ -138,7 +142,13 @@ public class SpaceProjectManager { } spaceTeams.put(teamMember, teamMember); - SpaceProjectWorldSavedData.INSTANCE.markDirty(); + if (SpaceProjectWorldSavedData.INSTANCE != null) { + SpaceProjectWorldSavedData.INSTANCE.markDirty(); + } + } + + public static boolean isInTeam(UUID member) { + return spaceTeams.containsKey(member); } /** diff --git a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java index 4b0be2051a..12f0005aea 100644 --- a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java +++ b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java @@ -107,7 +107,10 @@ public class SpaceProjectWorldSavedData extends WorldSavedData { } try (JsonReader reader = new JsonReader(new FileReader(spaceTeamsFile))) { - spaceTeams = GSON_TEAMS.fromJson(reader, spaceTeams.getClass()); + HashMap<UUID, UUID> jsonMap = GSON_TEAMS.fromJson(reader, spaceTeams.getClass()); + for (UUID member : jsonMap.keySet()) { + spaceTeams.put(member, jsonMap.get(member)); + } } catch (Exception e) { System.out.print("FAILED TO LOAD: " + SPACE_TEAMS_JSON); e.printStackTrace(); diff --git a/src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java b/src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java index c1d965fb22..3c4ad00932 100644 --- a/src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java +++ b/src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java @@ -1,12 +1,18 @@ package gregtech.common.misc.spaceprojects.commands; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; +import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.WeakHashMap; +import java.util.stream.Collectors; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.EnumChatFormatting; import org.apache.commons.lang3.tuple.Pair; @@ -113,4 +119,48 @@ public class SP_Command extends CommandBase { } } + @Override + public List<String> addTabCompletionOptions(ICommandSender sender, String[] arguments) { + List<String> autoComplete = new ArrayList<>(); + String filter = arguments.length == 0 ? "" : arguments[0].trim(); + switch (arguments.length) { + case 1 -> autoComplete.addAll(Arrays.asList(getSubCommands())); + case 2 -> { + filter = arguments[1].trim(); + if (arguments[0].equals(INVITE)) { + autoComplete.addAll(Arrays.asList(getPlayers())); + break; + } + + if (arguments[0].equals(CONFIRM)) { + Optional<Pair<EntityPlayerMP, EntityPlayerMP>> pairOpt = invite.stream() + .filter( + (e) -> e.getKey() + .getUniqueID() == getCommandSenderAsPlayer(sender).getUniqueID()) + .findFirst(); + if (pairOpt.isPresent()) { + autoComplete.add( + SpaceProjectManager.getPlayerNameFromUUID( + pairOpt.get() + .getRight() + .getUniqueID())); + } + } + } + } + String finalFilter = filter; + return autoComplete.stream() + .filter(s -> finalFilter.isEmpty() || s.startsWith(finalFilter)) + .collect(Collectors.toList()); + } + + private String[] getPlayers() { + return MinecraftServer.getServer() + .getAllUsernames(); + } + + private String[] getSubCommands() { + return new String[] { INVITE, ACCEPT, LEAVE, CONFIRM }; + } + } |