aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r--src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java52
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Dynamo.java11
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java14
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java2
-rw-r--r--src/main/java/gregtech/common/GT_Proxy.java2
-rw-r--r--src/main/java/gregtech/common/misc/GT_Command.java67
-rw-r--r--src/main/java/gregtech/common/misc/GlobalEnergyWorldSavedData.java60
-rw-r--r--src/main/java/gregtech/common/misc/GlobalVariableStorage.java10
-rw-r--r--src/main/java/gregtech/common/misc/WirelessNetworkManager.java101
-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
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_TranscendentPlasmaMixer.java3
13 files changed, 152 insertions, 241 deletions
diff --git a/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java b/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
index 47c03743a5..b931549a07 100644
--- a/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
+++ b/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
@@ -7,6 +7,7 @@ import net.minecraft.entity.player.EntityPlayer;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.common.misc.WirelessNetworkManager;
+import gregtech.common.misc.spaceprojects.SpaceProjectManager;
// If you are adding very late-game content feel free to tap into this interface.
// The eventual goal is to bypass laser/dynamo stuff and have energy deposited directly from ultra-endgame
@@ -17,37 +18,33 @@ import gregtech.common.misc.WirelessNetworkManager;
@Deprecated
public interface IGlobalWirelessEnergy {
- // User 0 will join user 1 by calling this function. They will share the same energy network.
- default void joinUserNetwork(String user_uuid_0, String user_uuid_1) {
- WirelessNetworkManager.joinUserNetwork(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
+ // 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.
default void strongCheckOrAddUser(EntityPlayer user) {
- WirelessNetworkManager.strongCheckOrAddUser(
- user.getUniqueID()
- .toString(),
- user.getDisplayName());
+ WirelessNetworkManager.strongCheckOrAddUser(user.getUniqueID());
}
default void strongCheckOrAddUser(UUID user_uuid, String user_name) {
- WirelessNetworkManager.strongCheckOrAddUser(user_uuid.toString(), user_name);
+ WirelessNetworkManager.strongCheckOrAddUser(user_uuid);
}
default void strongCheckOrAddUser(String user_uuid, String user_name) {
- WirelessNetworkManager.strongCheckOrAddUser(user_uuid, user_name);
+ WirelessNetworkManager.strongCheckOrAddUser(UUID.fromString(user_uuid));
}
// ------------------------------------------------------------------------------------
- // Add EU to the users global energy. You can enter a negative number to subtract it.
+ // Add EU to the users global energy. You can enter a negative number to
+ // subtract it.
// 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
+ // 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.
default boolean addEUToGlobalEnergyMap(String userUUID, BigInteger EU) {
- return WirelessNetworkManager.addEUToGlobalEnergyMap(userUUID, EU);
+ return WirelessNetworkManager.addEUToGlobalEnergyMap(UUID.fromString(userUUID), EU);
}
default boolean addEUToGlobalEnergyMap(UUID user_uuid, BigInteger EU) {
@@ -73,36 +70,29 @@ public interface IGlobalWirelessEnergy {
// ------------------------------------------------------------------------------------
default BigInteger getUserEU(String user_uuid) {
- return WirelessNetworkManager.getUserEU(user_uuid);
+ return WirelessNetworkManager.getUserEU(UUID.fromString(user_uuid));
}
- // This overwrites the EU in the network. Only use this if you are absolutely sure you know what you are doing.
+ // This overwrites the EU in the network. Only use this if you are absolutely
+ // sure you know what you are doing.
default void setUserEU(String user_uuid, BigInteger EU) {
- WirelessNetworkManager.setUserEU(user_uuid, EU);
+ WirelessNetworkManager.setUserEU(UUID.fromString(user_uuid), EU);
}
default String GetUsernameFromUUID(String uuid) {
- return WirelessNetworkManager.getUsernameFromUUID(uuid);
+ return SpaceProjectManager.getPlayerNameFromUUID(UUID.fromString(uuid));
}
default String getUUIDFromUsername(String username) {
- return WirelessNetworkManager.getUUIDFromUsername(username);
- }
-
- /**
- *
- * @param username
- * @return
- */
- default String getRawUUIDFromUsername(String username) {
- return WirelessNetworkManager.getRawUUIDFromUsername(username);
+ return SpaceProjectManager.getPlayerUUIDFromName(username)
+ .toString();
}
static void clearGlobalEnergyInformationMaps() {
WirelessNetworkManager.clearGlobalEnergyInformationMaps();
}
- default String processInitialSettings(final IGregTechTileEntity machine) {
+ default UUID processInitialSettings(final IGregTechTileEntity machine) {
return WirelessNetworkManager.processInitialSettings(machine);
}
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Dynamo.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Dynamo.java
index 4b73210afd..a04f5cd986 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Dynamo.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Dynamo.java
@@ -5,6 +5,8 @@ import static gregtech.api.enums.GT_Values.V;
import static gregtech.common.misc.WirelessNetworkManager.addEUToGlobalEnergyMap;
import static gregtech.common.misc.WirelessNetworkManager.strongCheckOrAddUser;
+import java.util.UUID;
+
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
@@ -19,8 +21,7 @@ import gregtech.api.metatileentity.MetaTileEntity;
public class GT_MetaTileEntity_Wireless_Dynamo extends GT_MetaTileEntity_Hatch_Dynamo
implements IWirelessEnergyHatchInformation {
- private String owner_uuid;
- private String owner_name;
+ private UUID owner_uuid;
public GT_MetaTileEntity_Wireless_Dynamo(String aName, byte aTier, String[] aDescription,
ITexture[][][] aTextures) {
@@ -130,11 +131,9 @@ public class GT_MetaTileEntity_Wireless_Dynamo extends GT_MetaTileEntity_Hatch_D
if (aTick == 1) {
// UUID and username of the owner.
- owner_uuid = aBaseMetaTileEntity.getOwnerUuid()
- .toString();
- owner_name = aBaseMetaTileEntity.getOwnerName();
+ owner_uuid = aBaseMetaTileEntity.getOwnerUuid();
- strongCheckOrAddUser(owner_uuid, owner_name);
+ strongCheckOrAddUser(owner_uuid);
}
// Every ticks_between_energy_addition ticks change the energy content of the machine.
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java
index 251a9dfcec..bf624eadd7 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java
@@ -3,10 +3,10 @@ package gregtech.api.metatileentity.implementations;
import static gregtech.api.enums.GT_Values.AuthorColen;
import static gregtech.api.enums.GT_Values.V;
import static gregtech.common.misc.WirelessNetworkManager.addEUToGlobalEnergyMap;
-import static gregtech.common.misc.WirelessNetworkManager.strongCheckOrAddUser;
import static java.lang.Long.min;
import java.math.BigInteger;
+import java.util.UUID;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -18,6 +18,7 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.IWirelessEnergyHatchInformation;
import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.common.misc.spaceprojects.SpaceProjectManager;
public class GT_MetaTileEntity_Wireless_Hatch extends GT_MetaTileEntity_Hatch_Energy
implements IWirelessEnergyHatchInformation {
@@ -26,8 +27,7 @@ public class GT_MetaTileEntity_Wireless_Hatch extends GT_MetaTileEntity_Hatch_En
.valueOf(2 * V[mTier] * ticks_between_energy_addition);
private final long eu_transferred_per_operation_long = eu_transferred_per_operation.longValue();
- private String owner_uuid;
- private String owner_name;
+ private UUID owner_uuid;
public GT_MetaTileEntity_Wireless_Hatch(String aName, byte aTier, String[] aDescription, ITexture[][][] aTextures) {
super(aName, aTier, 0, aDescription, aTextures);
@@ -132,12 +132,10 @@ public class GT_MetaTileEntity_Wireless_Hatch extends GT_MetaTileEntity_Hatch_En
if (!aBaseMetaTileEntity.isServerSide()) return;
- // UUID and username of the owner.
- owner_uuid = aBaseMetaTileEntity.getOwnerUuid()
- .toString();
- owner_name = aBaseMetaTileEntity.getOwnerName();
+ // UUID of the owner.
+ owner_uuid = aBaseMetaTileEntity.getOwnerUuid();
- strongCheckOrAddUser(owner_uuid, owner_name);
+ SpaceProjectManager.checkOrCreateTeam(owner_uuid);;
tryFetchingEnergy();
}
diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java b/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java
index 8ac908be12..7ffdc4fb60 100644
--- a/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java
+++ b/src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java
@@ -1066,7 +1066,7 @@ public abstract class Controller<C extends Controller<C, P>, P extends MuTEProce
@Override
public void setWirelessSupport(boolean canUse) {
if (canUse) {
- strongCheckOrAddUser(getOwnerUuid(), getOwnerName());
+ strongCheckOrAddUser(getOwnerUuid());
}
power.setCanUseWireless(canUse, getOwnerUuid());
}
diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java
index 13f5939e38..2f9643c35d 100644
--- a/src/main/java/gregtech/common/GT_Proxy.java
+++ b/src/main/java/gregtech/common/GT_Proxy.java
@@ -1127,8 +1127,8 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
if (!GT_Mod.gregtechproxy.enableUndergroundDirtGen)
PREVENTED_ORES.add(OreGenEvent.GenerateMinable.EventType.DIRT);
- MinecraftForge.EVENT_BUS.register(new GlobalEnergyWorldSavedData(""));
MinecraftForge.EVENT_BUS.register(new SpaceProjectWorldSavedData());
+ MinecraftForge.EVENT_BUS.register(new GlobalEnergyWorldSavedData(""));
MinecraftForge.EVENT_BUS.register(new GT_Worldgenerator.OregenPatternSavedData(""));
MinecraftForge.EVENT_BUS.register(new GlobalMetricsCoverDatabase());
FMLCommonHandler.instance()
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 };
+ }
+
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_TranscendentPlasmaMixer.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_TranscendentPlasmaMixer.java
index 58b42eca7f..7d038666d6 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_TranscendentPlasmaMixer.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_TranscendentPlasmaMixer.java
@@ -22,6 +22,7 @@ import static net.minecraft.util.EnumChatFormatting.GOLD;
import static net.minecraft.util.EnumChatFormatting.GRAY;
import java.math.BigInteger;
+import java.util.UUID;
import javax.annotation.Nonnull;
@@ -78,7 +79,7 @@ public class GT_MetaTileEntity_TranscendentPlasmaMixer
.addElement('C', ofBlock(GregTech_API.sBlockCasings1, DIM_BRIDGE_CASING))
.build();
- private String ownerUUID;
+ private UUID ownerUUID;
public GT_MetaTileEntity_TranscendentPlasmaMixer(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);