aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/GregTech_API.java5
-rw-r--r--src/main/java/gregtech/api/enums/GT_Values.java12
-rw-r--r--src/main/java/gregtech/api/enums/InventoryType.java7
-rw-r--r--src/main/java/gregtech/api/gui/GUIHost.java56
-rw-r--r--src/main/java/gregtech/api/gui/GUIProvider.java38
-rw-r--r--src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java92
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java104
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IMachineProgress.java10
-rw-r--r--src/main/java/gregtech/api/logic/AbstractProcessingLogic.java346
-rw-r--r--src/main/java/gregtech/api/logic/ComplexParallelProcessingLogic.java219
-rw-r--r--src/main/java/gregtech/api/logic/ControllerFluidLogic.java152
-rw-r--r--src/main/java/gregtech/api/logic/ControllerItemLogic.java148
-rw-r--r--src/main/java/gregtech/api/logic/FluidInventoryLogic.java269
-rw-r--r--src/main/java/gregtech/api/logic/ItemInventoryLogic.java314
-rw-r--r--src/main/java/gregtech/api/logic/MuTEProcessingLogic.java256
-rw-r--r--src/main/java/gregtech/api/logic/NullPowerLogic.java5
-rw-r--r--src/main/java/gregtech/api/logic/PollutionLogic.java17
-rw-r--r--src/main/java/gregtech/api/logic/PowerLogic.java129
-rw-r--r--src/main/java/gregtech/api/logic/ProcessingLogic.java323
-rw-r--r--src/main/java/gregtech/api/logic/interfaces/FluidInventoryLogicHost.java95
-rw-r--r--src/main/java/gregtech/api/logic/interfaces/ItemInventoryLogicHost.java172
-rw-r--r--src/main/java/gregtech/api/logic/interfaces/PollutionLogicHost.java8
-rw-r--r--src/main/java/gregtech/api/logic/interfaces/PowerLogicHost.java48
-rw-r--r--src/main/java/gregtech/api/logic/interfaces/ProcessingLogicHost.java80
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseTileEntity.java32
-rw-r--r--src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java23
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java2
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Dynamo.java5
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java5
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java70
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java18
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java168
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java12
-rw-r--r--src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java182
-rw-r--r--src/main/java/gregtech/api/multitileentity/base/TickableMultiTileEntity.java81
-rw-r--r--src/main/java/gregtech/api/multitileentity/enums/GT_MultiTileCasing.java23
-rw-r--r--src/main/java/gregtech/api/multitileentity/enums/GT_MultiTileUpgradeCasing.java71
-rw-r--r--src/main/java/gregtech/api/multitileentity/enums/MultiTileCasingPurpose.java13
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java45
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockPart.java11
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java19
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/UpgradableModularMuTE.java10
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/UpgradableMuTE.java12
-rw-r--r--src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java821
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/ComplexParallelController.java198
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/Controller.java2013
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java688
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/PowerController.java92
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/StackableController.java43
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/StackableModularController.java77
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/base/WallShareablePart.java32
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/casing/UpgradeCasing.java10
-rw-r--r--src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java96
-rw-r--r--src/main/java/gregtech/api/objects/GT_ItemStack.java4
-rw-r--r--src/main/java/gregtech/api/recipe/check/CheckRecipeResult.java7
-rw-r--r--src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java16
-rw-r--r--src/main/java/gregtech/api/recipe/check/ResultInsufficientHeat.java20
-rw-r--r--src/main/java/gregtech/api/recipe/check/ResultInsufficientMachineTier.java17
-rw-r--r--src/main/java/gregtech/api/recipe/check/ResultInsufficientPower.java20
-rw-r--r--src/main/java/gregtech/api/recipe/check/ResultInsufficientStartupPower.java17
-rw-r--r--src/main/java/gregtech/api/recipe/check/SimpleCheckRecipeResult.java12
-rw-r--r--src/main/java/gregtech/api/task/TaskHost.java18
-rw-r--r--src/main/java/gregtech/api/task/TickableTask.java48
-rw-r--r--src/main/java/gregtech/api/task/tasks/PollutionTask.java45
-rw-r--r--src/main/java/gregtech/api/task/tasks/PowerOutputTask.java32
-rw-r--r--src/main/java/gregtech/api/task/tasks/ProcessingTask.java51
-rw-r--r--src/main/java/gregtech/api/util/GT_OverclockCalculator.java25
-rw-r--r--src/main/java/gregtech/api/util/GT_ParallelHelper.java77
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java77
-rw-r--r--src/main/java/gregtech/api/util/GT_StructureUtilityMuTE.java271
-rw-r--r--src/main/java/gregtech/api/util/VoidProtectionHelper.java124
-rw-r--r--src/main/java/gregtech/api/util/item/ItemHolder.java79
-rw-r--r--src/main/java/gregtech/api/util/recipe/RecipeInputRequirements.java77
73 files changed, 5002 insertions, 3812 deletions
diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java
index c5e27aebca..1f936f3119 100644
--- a/src/main/java/gregtech/api/GregTech_API.java
+++ b/src/main/java/gregtech/api/GregTech_API.java
@@ -71,6 +71,7 @@ import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.item.ItemHolder;
import gregtech.api.world.GT_Worldgen;
import gregtech.common.GT_DummyWorld;
import gregtech.common.items.GT_IntegratedCircuit_Item;
@@ -107,8 +108,8 @@ public class GregTech_API {
/**
* Fixes the HashMap Mappings for ItemStacks once the Server started
*/
- public static final Collection<Map<? extends GT_ItemStack, ?>> sItemStackMappings = new ArrayList<>();
- public static final Collection<SetMultimap<? extends GT_ItemStack, ?>> itemStackMultiMaps = new ArrayList<>();
+ public static final Collection<Map<? extends ItemHolder, ?>> sItemStackMappings = new ArrayList<>();
+ public static final Collection<SetMultimap<? extends ItemHolder, ?>> itemStackMultiMaps = new ArrayList<>();
/**
* The MetaTileEntity-ID-List-Length
diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java
index 98d9e5a176..418bf2d14c 100644
--- a/src/main/java/gregtech/api/enums/GT_Values.java
+++ b/src/main/java/gregtech/api/enums/GT_Values.java
@@ -289,7 +289,7 @@ public class GT_Values {
public static final String COLOR = "gt.color", // Integer
COVERS = "gt.covers", // String
CUSTOM_NAME = "name", // String
- DISPAY = "gt.display", // String
+ DISPLAY = "gt.display", // String
TIER = "gt.tier", // Number
FACING = "gt.facing", // Byte
LOCK_UPGRADE = "gt.locked", // Boolean
@@ -322,6 +322,7 @@ public class GT_Values {
BURN_TIME_LEFT = "gt.burn.time.left", // Number
TOTAL_BURN_TIME = "gt.total.burn.time", // Number
ALLOWED_WORK = "gt.allowed.work", // Boolean
+ TASKS = "gt.tasks", // Compound
// MultiBlock
STRUCTURE_OK = "gt.structure.ok", ROTATION = "gt.eRotation", FLIP = "gt.eFlip", TARGET = "gt.target", // Boolean
@@ -337,13 +338,14 @@ public class GT_Values {
UPGRADE_INVENTORIES_INPUT = "gt.invlist.upg.in", // NBT List
UPGRADE_INVENTORIES_OUTPUT = "gt.invlist.upg.out", // NBT List
UPGRADE_TANK_CAPACITY = "gt.tank.cap.upg", // Long
+ UPGRADE_TANK_COUNT = "gt.tank.ct.upg", // Int
UPGRADE_TANK_CAPACITY_MULTIPLIER = "gt.tank.cap.mult.upg", // Long
UPGRADE_TANK_UUID = "gt.tankuuid.upg", // String
UPGRADE_TANK_NAME = "gt.tankname.upg", // String
UPGRADE_TANKS_INPUT = "gt.tanklist.upg.in", // NBT List
UPGRADE_TANKS_OUTPUT = "gt.tanklist.upg.out", // NBT List
- UPGRADE_TANKS_COUNT = "gt.tankcount.upg", // Int
UPGRADE_TANKS_PREFIX = "gt.tank.upg", // NBT Tag
+ UPGRADE_AMPERAGE = "gt.amp.upg", // Long
SEPARATE_INPUTS = "gt.separate.inputs", // Boolean
VOIDING_MODE = "gt.voiding.mode", // String
BATCH_MODE = "gt.batch.mode", // Boolean
@@ -490,6 +492,11 @@ public class GT_Values {
*/
public static boolean debugWorldData = false;
/**
+ * Parameter if multi tile entities (MuTEs) should be enabled in the pack. Turned off by default until
+ * implementation is done.
+ */
+ public static boolean enableMultiTileEntities = false;
+ /**
* Number of ticks between sending sound packets to clients for electric machines. Default is 1.5 seconds. Trying to
* mitigate lag and FPS drops.
*/
@@ -606,6 +613,7 @@ public class GT_Values {
+ "minecraft7771";
public static final String AuthorQuerns = "Author: " + EnumChatFormatting.RED + "Querns";
+ public static final String AuthorTheEpicGamer274 = "Author: " + "TheEpicGamer274";
// 7.5F comes from GT_Tool_Turbine_Large#getBaseDamage() given huge turbines are the most efficient now.
public static double getMaxPlasmaTurbineEfficiencyFromMaterial(Materials material) {
diff --git a/src/main/java/gregtech/api/enums/InventoryType.java b/src/main/java/gregtech/api/enums/InventoryType.java
new file mode 100644
index 0000000000..f8e3c47741
--- /dev/null
+++ b/src/main/java/gregtech/api/enums/InventoryType.java
@@ -0,0 +1,7 @@
+package gregtech.api.enums;
+
+public enum InventoryType {
+ Input,
+ Output,
+ Both;
+}
diff --git a/src/main/java/gregtech/api/gui/GUIHost.java b/src/main/java/gregtech/api/gui/GUIHost.java
new file mode 100644
index 0000000000..bbb94317c4
--- /dev/null
+++ b/src/main/java/gregtech/api/gui/GUIHost.java
@@ -0,0 +1,56 @@
+package gregtech.api.gui;
+
+import java.util.Objects;
+
+import javax.annotation.Nonnull;
+
+import net.minecraft.item.ItemStack;
+
+import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+
+public interface GUIHost extends ITileWithModularUI {
+
+ @Nonnull
+ @Override
+ default ModularWindow createWindow(UIBuildContext uiContext) {
+ Objects.requireNonNull(uiContext);
+ GUIProvider<?> gui = getGUI(uiContext);
+ return gui.openGUI(uiContext);
+ }
+
+ /**
+ * Width of the GUI when its being displayed
+ */
+ default int getWidth() {
+ return 170;
+ }
+
+ default int getHeight() {
+ return 192;
+ }
+
+ @Nonnull
+ GUIProvider<?> getGUI(@Nonnull UIBuildContext uiContext);
+
+ ItemStack getAsItem();
+
+ String getMachineName();
+
+ default boolean hasItemInput() {
+ return true;
+ }
+
+ default boolean hasItemOutput() {
+ return true;
+ }
+
+ default boolean hasFluidInput() {
+ return true;
+ }
+
+ default boolean hasFluidOutput() {
+ return true;
+ }
+}
diff --git a/src/main/java/gregtech/api/gui/GUIProvider.java b/src/main/java/gregtech/api/gui/GUIProvider.java
new file mode 100644
index 0000000000..6fec4aa52a
--- /dev/null
+++ b/src/main/java/gregtech/api/gui/GUIProvider.java
@@ -0,0 +1,38 @@
+package gregtech.api.gui;
+
+import java.util.Objects;
+
+import javax.annotation.Nonnull;
+
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow.Builder;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+
+public abstract class GUIProvider<T extends GUIHost> {
+
+ @Nonnull
+ protected final T host;
+
+ public GUIProvider(@Nonnull T host) {
+ this.host = host;
+ }
+
+ @Nonnull
+ public ModularWindow openGUI(@Nonnull UIBuildContext uiContext) {
+ Builder builder = Objects.requireNonNull(ModularWindow.builder(host.getWidth(), host.getHeight()));
+ if (shouldBindPlayerInventory()) {
+ builder.bindPlayerInventory(uiContext.getPlayer());
+ }
+ attachSynchHandlers(builder, uiContext);
+ addWidgets(builder, uiContext);
+ return Objects.requireNonNull(builder.build());
+ }
+
+ protected abstract void attachSynchHandlers(@Nonnull Builder builder, @Nonnull UIBuildContext uiContext);
+
+ protected abstract void addWidgets(@Nonnull Builder builder, @Nonnull UIBuildContext uiContext);
+
+ protected boolean shouldBindPlayerInventory() {
+ return true;
+ }
+}
diff --git a/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java b/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
index be4db5412a..47c03743a5 100644
--- a/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
+++ b/src/main/java/gregtech/api/interfaces/IGlobalWirelessEnergy.java
@@ -1,25 +1,25 @@
package gregtech.api.interfaces;
-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.GlobalEnergyWorldSavedData;
+import gregtech.common.misc.WirelessNetworkManager;
// 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
// multi-blocks directly into the users network.
+/**
+ * Use WirelessNetworkManager instead
+ */
+@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) {
- GlobalEnergyTeam.put(user_uuid_0, 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
@@ -27,35 +27,18 @@ public interface IGlobalWirelessEnergy {
// tick of a machine being placed only.
default void strongCheckOrAddUser(EntityPlayer user) {
- strongCheckOrAddUser(
+ WirelessNetworkManager.strongCheckOrAddUser(
user.getUniqueID()
.toString(),
user.getDisplayName());
}
default void strongCheckOrAddUser(UUID user_uuid, String user_name) {
- strongCheckOrAddUser(user_uuid.toString(), user_name);
+ WirelessNetworkManager.strongCheckOrAddUser(user_uuid.toString(), user_name);
}
default 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);
- }
-
- // Add UUID -> Name, Name -> UUID.
- GlobalEnergyName.put(user_name, user_uuid);
- GlobalEnergyName.put(user_uuid, user_name);
+ WirelessNetworkManager.strongCheckOrAddUser(user_uuid, user_name);
}
// ------------------------------------------------------------------------------------
@@ -64,30 +47,7 @@ public interface IGlobalWirelessEnergy {
// 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) {
-
- // Mark the data as dirty and in need of saving.
- try {
- GlobalEnergyWorldSavedData.INSTANCE.markDirty();
- } catch (Exception exception) {
- System.out.println("COULD NOT MARK GLOBAL ENERGY AS DIRTY IN ADD EU");
- exception.printStackTrace();
- }
-
- // 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);
-
- // Get the teams total energy stored. If they are not in the map, return 0 EU.
- BigInteger totalEU = GlobalEnergy.getOrDefault(teamUUID, BigInteger.ZERO);
- totalEU = totalEU.add(EU);
-
- // If there is sufficient EU then complete the operation and return true.
- if (totalEU.signum() >= 0) {
- GlobalEnergy.put(teamUUID, totalEU);
- return true;
- }
-
- // There is insufficient EU so cancel the operation and return false.
- return false;
+ return WirelessNetworkManager.addEUToGlobalEnergyMap(userUUID, EU);
}
default boolean addEUToGlobalEnergyMap(UUID user_uuid, BigInteger EU) {
@@ -113,28 +73,20 @@ public interface IGlobalWirelessEnergy {
// ------------------------------------------------------------------------------------
default BigInteger getUserEU(String user_uuid) {
- return GlobalEnergy.getOrDefault(GlobalEnergyTeam.getOrDefault(user_uuid, user_uuid), BigInteger.ZERO);
+ return WirelessNetworkManager.getUserEU(user_uuid);
}
// 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) {
- // Mark the data as dirty and in need of saving.
- try {
- GlobalEnergyWorldSavedData.INSTANCE.markDirty();
- } catch (Exception exception) {
- System.out.println("COULD NOT MARK GLOBAL ENERGY AS DIRTY IN SET EU");
- exception.printStackTrace();
- }
-
- GlobalEnergy.put(GlobalEnergyTeam.get(user_uuid), EU);
+ WirelessNetworkManager.setUserEU(user_uuid, EU);
}
default String GetUsernameFromUUID(String uuid) {
- return GlobalEnergyName.getOrDefault(GlobalEnergyTeam.getOrDefault(uuid, ""), "");
+ return WirelessNetworkManager.getUsernameFromUUID(uuid);
}
default String getUUIDFromUsername(String username) {
- return GlobalEnergyTeam.getOrDefault(GlobalEnergyName.getOrDefault(username, ""), "");
+ return WirelessNetworkManager.getUUIDFromUsername(username);
}
/**
@@ -143,24 +95,14 @@ public interface IGlobalWirelessEnergy {
* @return
*/
default String getRawUUIDFromUsername(String username) {
- return GlobalEnergyName.getOrDefault(username, "");
+ return WirelessNetworkManager.getRawUUIDFromUsername(username);
}
static void clearGlobalEnergyInformationMaps() {
- // Do not use this unless you are 100% certain you know what you are doing.
- GlobalEn