aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
authorConnor-Colenso <52056774+Connor-Colenso@users.noreply.github.com>2022-07-31 07:23:05 +0100
committerGitHub <noreply@github.com>2022-07-31 13:23:05 +0700
commitb9fea1be881fa1e21d3385f8c378dca636f885bf (patch)
treed5d1d46a42554ef9c80f04147e5ec2a82a68f782 /src/main/java/gregtech/common
parent445003d9f1b9f57fd8dc1b597be5ba529e558202 (diff)
downloadGT5-Unofficial-b9fea1be881fa1e21d3385f8c378dca636f885bf.tar.gz
GT5-Unofficial-b9fea1be881fa1e21d3385f8c378dca636f885bf.tar.bz2
GT5-Unofficial-b9fea1be881fa1e21d3385f8c378dca636f885bf.zip
Better Endgame Wireless EU (#1144)
* Basis of changes * Adjust voltage tiers to remove OpV * Better textures, move IDs around etc. * Format cleanup * Log level change * Dynamos * More stuff * More OpV purging. * Fixes * Remove wire support. * Textures * IDs * Update hatch/dynamo * New number formatter * Add default method * Add save method on world close * Cleanup old comments/debug * Author * Author * Author * Author * Restructuring of code * Unit tests * More unit tests + cleanup * Fix ID shift + add spares Co-authored-by: GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/GT_Proxy.java6
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Item_Machines.java2
-rw-r--r--src/main/java/gregtech/common/misc/GT_Command.java104
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PlasmaForge.java10
4 files changed, 95 insertions, 27 deletions
diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java
index 26ed6f155c..f15970a965 100644
--- a/src/main/java/gregtech/common/GT_Proxy.java
+++ b/src/main/java/gregtech/common/GT_Proxy.java
@@ -26,6 +26,7 @@ import gregtech.api.enums.SubTag;
import gregtech.api.enums.TC_Aspects.TC_AspectStack;
import gregtech.api.enums.ToolDictNames;
import gregtech.api.interfaces.IBlockOnWalkOver;
+import gregtech.api.interfaces.IGlobalWirelessEnergy;
import gregtech.api.interfaces.IProjectileItem;
import gregtech.api.interfaces.internal.IGT_Mod;
import gregtech.api.interfaces.internal.IThaumcraftCompat;
@@ -139,7 +140,7 @@ import static gregtech.api.enums.GT_Values.debugEntityCramming;
import static gregtech.api.util.GT_Util.LAST_BROKEN_TILEENTITY;
-public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
+public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IGlobalWirelessEnergy {
private static final EnumSet<OreGenEvent.GenerateMinable.EventType> PREVENTED_ORES = EnumSet.of(OreGenEvent.GenerateMinable.EventType.COAL,
OreGenEvent.GenerateMinable.EventType.IRON, OreGenEvent.GenerateMinable.EventType.GOLD,
OreGenEvent.GenerateMinable.EventType.DIAMOND, OreGenEvent.GenerateMinable.EventType.REDSTONE, OreGenEvent.GenerateMinable.EventType.LAPIS,
@@ -903,6 +904,8 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
public void onServerStopping() {
File tSaveDirectory = getSaveDirectory();
GregTech_API.sWirelessRedstone.clear();
+ IGlobalWirelessEnergy.super.SaveGlobalEnergyInfo(mUniverse.getWorldInfo().getWorldName());
+ IGlobalWirelessEnergy.super.ClearMaps();
if (tSaveDirectory != null) {
try {
for (int i = 1; i < GregTech_API.METATILEENTITIES.length; i++) {
@@ -916,6 +919,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
}
this.mUniverse = null;
//GT_ChunkAssociatedData.saveAll(); todo: figure out if this is needed
+
}
@SubscribeEvent
diff --git a/src/main/java/gregtech/common/blocks/GT_Item_Machines.java b/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
index 2a108aca71..9cf4029934 100644
--- a/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
+++ b/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
@@ -89,7 +89,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem {
if (tTileEntity.getOutputAmperage() > 1L) {
aList.add(GT_LanguageManager.addStringLocalization("TileEntity_EUp_AMOUNT", "Amperage: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.YELLOW + GT_Utility.formatNumbers(tTileEntity.getOutputAmperage()) + EnumChatFormatting.GRAY);
}
- aList.add(GT_LanguageManager.addStringLocalization("TileEntity_EUp_STORE", "Capacity: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.BLUE + GT_Utility.formatNumbers(tTileEntity.getEUCapacity()) + EnumChatFormatting.GRAY);
+ aList.add(GT_LanguageManager.addStringLocalization("TileEntity_EUp_STORE", "Capacity: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.BLUE + GT_Utility.formatNumbers(tTileEntity.getEUCapacity()) + EnumChatFormatting.GRAY + " EU");
}
if (GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumTank || GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_SuperTank) {
if (aStack.hasTagCompound() && aStack.stackTagCompound.hasKey("mFluid")) {
diff --git a/src/main/java/gregtech/common/misc/GT_Command.java b/src/main/java/gregtech/common/misc/GT_Command.java
index 4f6f77ea70..a91a696d37 100644
--- a/src/main/java/gregtech/common/misc/GT_Command.java
+++ b/src/main/java/gregtech/common/misc/GT_Command.java
@@ -3,20 +3,21 @@ package gregtech.common.misc;
import com.gtnewhorizon.structurelib.StructureLib;
import gregtech.GT_Mod;
import gregtech.api.enums.GT_Values;
+import gregtech.api.interfaces.IGlobalWirelessEnergy;
import gregtech.api.objects.GT_ChunkManager;
import gregtech.common.GT_Pollution;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.util.EnumChatFormatting;
import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.math.BigInteger;
+import java.util.*;
import java.util.stream.Stream;
-public final class GT_Command extends CommandBase {
+public final class GT_Command extends CommandBase implements IGlobalWirelessEnergy {
@Override
public String getCommandName() {
@@ -27,8 +28,9 @@ public final class GT_Command extends CommandBase {
public String getCommandUsage(ICommandSender sender) {
return "Usage: gt <subcommand>. Valid subcommands are: toggle, chunks, pollution.";
}
+
private void printHelp(ICommandSender sender) {
- sender.addChatMessage(new ChatComponentText("Usage: gt <toggle|chunks|pollution>"));
+ sender.addChatMessage(new ChatComponentText("Usage: gt <toggle|chunks|pollution|global_energy_add|global_energy_set|global_energy_join>"));
sender.addChatMessage(new ChatComponentText("\"toggle D1\" - toggles general.Debug (D1)"));
sender.addChatMessage(new ChatComponentText("\"toggle D2\" - toggles general.Debug2 (D2)"));
sender.addChatMessage(new ChatComponentText("\"toggle debugCleanroom\" - toggles cleanroom debug log"));
@@ -47,15 +49,21 @@ public final class GT_Command extends CommandBase {
"\"pollution <amount>\" - adds the <amount> of the pollution to the current chunk, " +
"\n if <amount> isnt specified, will add" + GT_Mod.gregtechproxy.mPollutionSmogLimit + "gibbl."
));
+ sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + " --- Global wireless EU controls ---"));
+ sender.addChatMessage(new ChatComponentText("Allows you to set the amount of EU in a users wireless network."));
+ sender.addChatMessage(new ChatComponentText("Usage: global_energy_set [Name] [EU]"));
+ sender.addChatMessage(new ChatComponentText("Allows you to add EU to a users wireless network. Also accepts negative numbers."));
+ sender.addChatMessage(new ChatComponentText("Usage: global_energy_add [Name] [EU]"));
+ sender.addChatMessage(new ChatComponentText("Allows you to join two users together into one network. Can be undone by writing the users name twice."));
+ sender.addChatMessage(new ChatComponentText("Usage: global_energy_join [User joining] [User to join]"));
}
@Override
public List addTabCompletionOptions(ICommandSender sender, String[] ss) {
List<String> l = new ArrayList<>();
- Stream<String> keywords = Arrays.stream(new String[]{"toggle", "chunks"});
String test = ss.length == 0 ? "" : ss[0].trim();
- if (ss.length == 0 || ss.length == 1 && (test.isEmpty() || Stream.of("toggle", "chunks", "pollution").anyMatch(s -> s.startsWith(test)))) {
- Stream.of("toggle", "chunks", "pollution")
+ 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")
.filter(s -> test.isEmpty() || s.startsWith(test))
.forEach(l::add);
} else if (test.equals("toggle")) {
@@ -64,7 +72,6 @@ public final class GT_Command extends CommandBase {
"debugOrevein", "debugSmallOres", "debugStones", "debugChunkloaders", "debugMulti", "debugWorldData")
.filter(s -> test1.isEmpty() || s.startsWith(test1))
.forEach(l::add);
-
}
return l;
}
@@ -75,6 +82,10 @@ public final class GT_Command extends CommandBase {
printHelp(sender);
return;
}
+
+ String username;
+ String uuid;
+
switch (strings[0]) {
case "toggle":
if (strings.length < 2) {
@@ -103,20 +114,79 @@ public final class GT_Command extends CommandBase {
GT_ChunkManager.printTickets();
sender.addChatMessage(new ChatComponentText("Forced chunks logged to GregTech.log"));
break;
- case "pollution": {
+ case "pollution":
ChunkCoordinates coordinates = sender.getPlayerCoordinates();
int amount = (strings.length < 2) ? GT_Mod.gregtechproxy.mPollutionSmogLimit : Integer.parseInt(strings[1]);
GT_Pollution.addPollution(sender
- .getEntityWorld()
- .getChunkFromBlockCoords(
- coordinates.posX,
- coordinates.posZ
- ),
- amount
+ .getEntityWorld()
+ .getChunkFromBlockCoords(
+ coordinates.posX,
+ coordinates.posZ
+ ),
+ amount
);
break;
- }
+ case "global_energy_add":
+
+ username = strings[1];
+ uuid = IGlobalWirelessEnergy.super.GetUUIDFromUsername(username);
+
+ String EU_String = strings[2];
+
+ // Usage is /gt global_energy_add username EU
+
+ if (uuid.equals("")) {
+ sender.addChatMessage(new ChatComponentText("User " + username + " has no global energy network."));
+ break;
+ }
+
+ if (addEUToGlobalEnergyMap(uuid, new BigInteger(EU_String)))
+ sender.addChatMessage(new ChatComponentText("Successfully added " + EU_String + "EU to the global energy network of " + username + "."));
+ else
+ sender.addChatMessage(new ChatComponentText("Failed to add " + EU_String + "EU to the global energy map of " + username +
+ ". Insufficient energy in network. " + username + "currently has " + IGlobalWirelessEnergy.super.GetUserEU(uuid).toString() + " in their network."));
+
+ break;
+ case "global_energy_set":
+
+ // Usage is /gt global_energy_set username EU
+
+ username = strings[1];
+ uuid = IGlobalWirelessEnergy.super.GetUUIDFromUsername(username);
+
+ String EU_String_0 = strings[2];
+
+ IGlobalWirelessEnergy.super.SetUserEU(uuid, new BigInteger(EU_String_0));
+ break;
+
+ case "global_energy_join":
+
+ // Usage is /gt global_energy_join username_of_you username_to_join
+
+ String username_0 = strings[1];
+ String username_1 = strings[2];
+
+ String uuid_0 = IGlobalWirelessEnergy.super.GetUUIDFromUsername(username_0);
+ String uuid_1 = IGlobalWirelessEnergy.super.GetUUIDFromUsername(username_1);
+
+ if (uuid_0.equals("")) {
+ sender.addChatMessage(new ChatComponentText("User " + username_0 + " has no global energy network."));
+ break;
+ }
+
+ if (uuid_0.equals("")) {
+ sender.addChatMessage(new ChatComponentText("User " + username_1 + " has no global energy network."));
+ break;
+ }
+
+ IGlobalWirelessEnergy.super.JoinUserNetwork(uuid_0, uuid_1);
+
+ sender.addChatMessage(new ChatComponentText("Success! " + username_0 + " has joined " + username_1 + "."));
+ sender.addChatMessage(new ChatComponentText("To undo this simply join your own network again with /gt global_energy_join " + username_0 + " " + username_0 + "."));
+
+ break;
default:
+ sender.addChatMessage(new ChatComponentText( EnumChatFormatting.RED + "Invalid command/syntax detected."));
printHelp(sender);
}
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PlasmaForge.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PlasmaForge.java
index 3f7405931b..6c88d7c203 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PlasmaForge.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PlasmaForge.java
@@ -31,8 +31,7 @@ import java.util.List;
import java.util.ArrayList;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
-import static gregtech.api.enums.GT_Values.TIER_COLORS;
-import static gregtech.api.enums.GT_Values.VN;
+import static gregtech.api.enums.GT_Values.*;
import static gregtech.api.enums.Textures.BlockIcons.*;
import static gregtech.api.util.GT_StructureUtility.ofCoil;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
@@ -152,12 +151,7 @@ public class GT_MetaTileEntity_PlasmaForge extends GT_MetaTileEntity_AbstractMul
.addInfo("Takes " + EnumChatFormatting.RED + GT_Utility.formatNumbers(max_efficiency_time_in_ticks/(3600*20)) + EnumChatFormatting.GRAY + " hours of continuous run time to fully breach dimensional")
.addInfo("boundaries and achieve maximum efficiency. This reduces fuel")
.addInfo("consumption by up to " + EnumChatFormatting.RED + GT_Utility.formatNumbers(100*maximum_discount) + "%" + EnumChatFormatting.GRAY + ". Supports overclocking beyond MAX voltage.")
- .addInfo("Author: " +
- EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + EnumChatFormatting.ITALIC + EnumChatFormatting.UNDERLINE + "C" +
- EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + EnumChatFormatting.ITALIC + EnumChatFormatting.UNDERLINE + "o" +
- EnumChatFormatting.GREEN + EnumChatFormatting.BOLD + EnumChatFormatting.ITALIC + EnumChatFormatting.UNDERLINE + "l" +
- EnumChatFormatting.DARK_AQUA + EnumChatFormatting.BOLD + EnumChatFormatting.ITALIC + EnumChatFormatting.UNDERLINE + "e" +
- EnumChatFormatting.DARK_PURPLE + EnumChatFormatting.BOLD + EnumChatFormatting.ITALIC + EnumChatFormatting.UNDERLINE + "n")
+ .addInfo(AuthorColen)
.addSeparator()
.beginStructureBlock(33, 24, 33, false)
.addStructureInfo("DTPF Structure is too complex! See schematic for details.")