aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/misc/spaceprojects
diff options
context:
space:
mode:
authorBlueWeabo <ilia.iliev2005@gmail.com>2024-02-17 00:12:40 +0200
committerGitHub <noreply@github.com>2024-02-16 23:12:40 +0100
commit985a6c94cae0cb895a09ef06c85ec7759132a06c (patch)
tree34beeec33a7dbe00c6791e214eec3ebb0f5ee003 /src/main/java/gregtech/common/misc/spaceprojects
parentd827dad0a671b79b1c42915b23d365398fd63733 (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java16
-rw-r--r--src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java5
-rw-r--r--src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java50
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 };
+ }
+
}