diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java | 25 | ||||
-rw-r--r-- | src/main/java/gregtech/common/misc/GT_Command.java | 13 |
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); |