diff options
author | BlueWeabo <ilia.iliev2005@gmail.com> | 2024-02-17 00:12:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-16 23:12:40 +0100 |
commit | 985a6c94cae0cb895a09ef06c85ec7759132a06c (patch) | |
tree | 34beeec33a7dbe00c6791e214eec3ebb0f5ee003 /src/main/java/gregtech/common/misc/spaceprojects | |
parent | d827dad0a671b79b1c42915b23d365398fd63733 (diff) | |
download | GT5-Unofficial-985a6c94cae0cb895a09ef06c85ec7759132a06c.tar.gz GT5-Unofficial-985a6c94cae0cb895a09ef06c85ec7759132a06c.tar.bz2 GT5-Unofficial-985a6c94cae0cb895a09ef06c85ec7759132a06c.zip |
Change over wireless teams to use SP teams (#2493)
* Change over wireless teams to use SP teams
* spotless
* null checks
* fix unit test being wrong
* update
* add tab autocomplete
* spotless
* make sure teams are transfered over correctly
* spotless
* do not delete space teams data when two world saves put something into it
* spotless
* go away from a stream
* make wireless networks load later
---------
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/common/misc/spaceprojects')
3 files changed, 67 insertions, 4 deletions
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 }; + } + } |