aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java25
-rw-r--r--src/main/java/gregtech/common/misc/GT_Command.java13
2 files changed, 35 insertions, 3 deletions
diff --git a/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java b/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
index bc0bf4a9e8..3ba59a54a2 100644
--- a/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
+++ b/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
@@ -49,6 +49,8 @@ public interface IGlobalWirelessEnergy {
// --- Save data for global energy network --
default void SaveGlobalEnergyInfo(String world_name) {
+ // Replace chars because of bug in forge that doesn't understand MC converts . to _ upon world creation.
+ world_name = world_name.replace('.','_');
CreateStorageIfNotExist(world_name);
SaveGlobalEnergyMap(world_name);
SaveGlobalEnergyName(world_name);
@@ -104,7 +106,10 @@ public interface IGlobalWirelessEnergy {
// --- Load data for global energy network ---
default void LoadGlobalEnergyInfo(World world) {
- CreateStorageIfNotExist(world.getWorldInfo().getWorldName());
+ // Replace chars because of bug in forge that doesn't understand MC converts . to _ upon world creation.
+ String world_name = world.getWorldInfo().getWorldName().replace('.','_');
+ PrivateGlobalEnergy.WorldName = world_name;
+ CreateStorageIfNotExist(world_name);
LoadGlobalEnergyMap(world);
LoadGlobalEnergyName(world);
LoadGlobalEnergyTeam(world);
@@ -225,6 +230,13 @@ public interface IGlobalWirelessEnergy {
// as infrequently as possible and bulk store values to add to the global map.
default boolean addEUToGlobalEnergyMap(String user_uuid, BigInteger EU) {
+ PrivateGlobalEnergy.EnergyAdds += 1;
+
+ if (PrivateGlobalEnergy.EnergyAddsBeforeSaving >= PrivateGlobalEnergy.EnergyAdds) {
+ SaveGlobalEnergyInfo(PrivateGlobalEnergy.WorldName);
+ PrivateGlobalEnergy.EnergyAdds = 0;
+ }
+
// Get the team UUID. Users are by default in a team with a UUID equal to their player UUID.
String team_uuid = GlobalEnergyTeam.getOrDefault(user_uuid, user_uuid);
@@ -290,4 +302,15 @@ public interface IGlobalWirelessEnergy {
}
+class PrivateGlobalEnergy {
+ // EnergyAdds Counts the number of times energy has been added to the network since the last save.
+ public static long EnergyAdds = 0;
+
+ // EnergyAddsBeforeSaving stores the number of times energy must be added or removed from the network before a save
+ // is initiated. Do not set this number very low, or you may cause lag. If you use a large number of wireless
+ // machines increase this value.
+ public static long EnergyAddsBeforeSaving = 1000;
+ // Name of the folder the world is in.
+ public static String WorldName = "";
+}
diff --git a/src/main/java/gregtech/common/misc/GT_Command.java b/src/main/java/gregtech/common/misc/GT_Command.java
index a91a696d37..c478d219c7 100644
--- a/src/main/java/gregtech/common/misc/GT_Command.java
+++ b/src/main/java/gregtech/common/misc/GT_Command.java
@@ -5,6 +5,7 @@ import gregtech.GT_Mod;
import gregtech.api.enums.GT_Values;
import gregtech.api.interfaces.IGlobalWirelessEnergy;
import gregtech.api.objects.GT_ChunkManager;
+import gregtech.api.util.GT_Utility;
import gregtech.common.GT_Pollution;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
@@ -62,8 +63,8 @@ public final class GT_Command extends CommandBase implements IGlobalWirelessEner
public List addTabCompletionOptions(ICommandSender sender, String[] ss) {
List<String> l = new ArrayList<>();
String test = ss.length == 0 ? "" : ss[0].trim();
- if (ss.length == 0 || ss.length == 1 && (test.isEmpty() || Stream.of("toggle", "chunks", "pollution", "global_energy_add", "global_energy_set", "global_energy_join").anyMatch(s -> s.startsWith(test)))) {
- Stream.of("toggle", "chunks", "pollution", "global_energy_add", "global_energy_set", "global_energy_join")
+ if (ss.length == 0 || ss.length == 1 && (test.isEmpty() || Stream.of("toggle", "chunks", "pollution", "global_energy_add", "global_energy_set", "global_energy_join", "global_energy_display").anyMatch(s -> s.startsWith(test)))) {
+ Stream.of("toggle", "chunks", "pollution", "global_energy_add", "global_energy_set", "global_energy_join", "global_energy_display")
.filter(s -> test.isEmpty() || s.startsWith(test))
.forEach(l::add);
} else if (test.equals("toggle")) {
@@ -185,6 +186,14 @@ public final class GT_Command extends CommandBase implements IGlobalWirelessEner
sender.addChatMessage(new ChatComponentText("To undo this simply join your own network again with /gt global_energy_join " + username_0 + " " + username_0 + "."));
break;
+ case "global_energy_display":
+
+ // Usage is /gt global_energy_display username
+
+ String username_3 = strings[1];
+ sender.addChatMessage(new ChatComponentText("User " + username_3 + " has " + EnumChatFormatting.RED + GT_Utility.formatNumbers(IGlobalWirelessEnergy.super.GetUserEU(IGlobalWirelessEnergy.super.GetUUIDFromUsername(username_3))) + EnumChatFormatting.RESET + "EU in their network."));
+
+ break;
default:
sender.addChatMessage(new ChatComponentText( EnumChatFormatting.RED + "Invalid command/syntax detected."));
printHelp(sender);