aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorGDCloud <gdcloudstrike@gmail.com>2023-03-23 19:46:33 +0100
committerGDCloud <gdcloudstrike@gmail.com>2023-03-23 19:46:33 +0100
commit5df3a710c2a415b9cf8abd5fbdfb697ecbb73ac8 (patch)
treeb9781fa8db6908985cd62ece4421a4e36fbc3858 /src/main/java
parent5f8bf75372f99b5e5545567c7da77797cb14d251 (diff)
downloadGT5-Unofficial-5df3a710c2a415b9cf8abd5fbdfb697ecbb73ac8.tar.gz
GT5-Unofficial-5df3a710c2a415b9cf8abd5fbdfb697ecbb73ac8.tar.bz2
GT5-Unofficial-5df3a710c2a415b9cf8abd5fbdfb697ecbb73ac8.zip
multi-amp wireless
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java234
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java205
2 files changed, 439 insertions, 0 deletions
diff --git a/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java b/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java
index 300b193dc6..99844a034b 100644
--- a/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java
@@ -418,6 +418,240 @@ public class MachineLoader implements Runnable {
"UXV 64A Energy Hatch",
13,
64).getStackForm(1L));
+ // ===================================================================================================
+ // Multi AMP Wireless INPUTS
+ // ===================================================================================================
+ eM_energyWirelessMulti4_EV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15065,
+ "hatch.energywirelessmulti04.tier.04",
+ "EV 4A Wireless Energy Hatch",
+ 4,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_EV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15066,
+ "hatch.energywirelessmulti16.tier.04",
+ "EV 16A Wireless Energy Hatch",
+ 4,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_EV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15067,
+ "hatch.energywirelessmulti64.tier.04",
+ "EV 64A Wireless Energy Hatch",
+ 4,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_IV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15068,
+ "hatch.energywirelessmulti04.tier.05",
+ "IV 4A Wireless Energy Hatch",
+ 5,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_IV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15069,
+ "hatch.energywirelessmulti16.tier.05",
+ "IV 16A Wireless Energy Hatch",
+ 5,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_IV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15070,
+ "hatch.energywirelessmulti64.tier.05",
+ "IV 64A Wireless Energy Hatch",
+ 5,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_LuV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15071,
+ "hatch.energywirelessmulti04.tier.06",
+ "LuV 4A Wireless Energy Hatch",
+ 6,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_LuV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15072,
+ "hatch.energywirelessmulti16.tier.06",
+ "LuV 16A Wireless Energy Hatch",
+ 6,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_LuV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15073,
+ "hatch.energywirelessmulti64.tier.06",
+ "LuV 64A Wireless Energy Hatch",
+ 6,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_ZPM.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15074,
+ "hatch.energywirelessmulti04.tier.07",
+ "ZPM 4A Wireless Energy Hatch",
+ 7,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_ZPM.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15075,
+ "hatch.energywirelessmulti16.tier.07",
+ "ZPM 16A Wireless Energy Hatch",
+ 7,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_ZPM.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15076,
+ "hatch.energywirelessmulti64.tier.07",
+ "ZPM 64A Wireless Energy Hatch",
+ 7,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_UV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15077,
+ "hatch.energywirelessmulti04.tier.08",
+ "UV 4A Wireless Energy Hatch",
+ 8,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_UV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15078,
+ "hatch.energywirelessmulti16.tier.08",
+ "UV 16A Wireless Energy Hatch",
+ 8,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_UV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15079,
+ "hatch.energywirelessmulti64.tier.08",
+ "UV 64A Wireless Energy Hatch",
+ 8,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_UHV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15080,
+ "hatch.energywirelessmulti04.tier.09",
+ "UHV 4A Wireless Energy Hatch",
+ 9,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_UHV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15081,
+ "hatch.energywirelessmulti16.tier.09",
+ "UHV 16A Wireless Energy Hatch",
+ 9,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_UHV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15082,
+ "hatch.energywirelessmulti64.tier.09",
+ "UHV 64A Wireless Energy Hatch",
+ 9,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_UEV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15083,
+ "hatch.energywirelessmulti04.tier.10",
+ "UEV 4A Wireless Energy Hatch",
+ 10,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_UEV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15084,
+ "hatch.energywirelessmulti16.tier.10",
+ "UEV 16A Wireless Energy Hatch",
+ 10,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_UEV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15085,
+ "hatch.energywirelessmulti64.tier.10",
+ "UEV 64A Wireless Energy Hatch",
+ 10,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_UIV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15086,
+ "hatch.energywirelessmulti04.tier.11",
+ "UIV 4A Wireless Energy Hatch",
+ 11,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_UIV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15087,
+ "hatch.energywirelessmulti16.tier.11",
+ "UIV 16A Wireless Energy Hatch",
+ 11,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_UIV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15088,
+ "hatch.energywirelessmulti64.tier.11",
+ "UIV 64A Wireless Energy Hatch",
+ 11,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_UMV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15089,
+ "hatch.energywirelessmulti04.tier.12",
+ "UMV 4A Wireless Energy Hatch",
+ 12,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_UMV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15090,
+ "hatch.energywirelessmulti16.tier.12",
+ "UMV 16A Wireless Energy Hatch",
+ 12,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_UMV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15091,
+ "hatch.energywirelessmulti64.tier.12",
+ "UMV 64A Wireless Energy Hatch",
+ 12,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_UXV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15092,
+ "hatch.energywirelessmulti04.tier.13",
+ "UXV 4A Wireless Energy Hatch",
+ 13,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_UXV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15093,
+ "hatch.energywirelessmulti16.tier.13",
+ "UXV 16A Wireless Energy Hatch",
+ 13,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_UXV.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15094,
+ "hatch.energywirelessmulti64.tier.13",
+ "UXV 64A Wireless Energy Hatch",
+ 13,
+ 64).getStackForm(1L));
+ eM_energyWirelessMulti4_MAX.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15095,
+ "hatch.energywirelessmulti04.tier.14",
+ "MAX 4A Wireless Energy Hatch",
+ 14,
+ 4).getStackForm(1L));
+ eM_energyWirelessMulti16_MAX.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15096,
+ "hatch.energywirelessmulti16.tier.14",
+ "MAX 16A Wireless Energy Hatch",
+ 14,
+ 16).getStackForm(1L));
+ eM_energyWirelessMulti64_MAX.set(
+ new GT_MetaTileEntity_Hatch_WirelessMulti(
+ 15097,
+ "hatch.energywirelessmulti64.tier.14",
+ "MAX 64A Wireless Energy Hatch",
+ 14,
+ 64).getStackForm(1L));
// ===================================================================================================
// Multi AMP Laser INPUTS
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java
new file mode 100644
index 0000000000..a6de130c38
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java
@@ -0,0 +1,205 @@
+package com.github.technus.tectech.thing.metaTileEntity.hatch;
+
+import static com.github.technus.tectech.thing.metaTileEntity.Textures.*;
+import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.*;
+import static gregtech.api.enums.GT_Values.AuthorColen;
+import static gregtech.api.enums.GT_Values.V;
+import static net.minecraft.util.StatCollector.translateToLocal;
+
+import java.math.BigInteger;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+import com.github.technus.tectech.util.TT_Utility;
+
+import gregtech.api.interfaces.IGlobalWirelessEnergy;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.interfaces.tileentity.IWirelessEnergyHatchInformation;
+import gregtech.api.metatileentity.MetaTileEntity;
+
+public class GT_MetaTileEntity_Hatch_WirelessMulti extends GT_MetaTileEntity_Hatch_EnergyMulti
+ implements IGlobalWirelessEnergy, IWirelessEnergyHatchInformation {
+
+ private final BigInteger eu_transferred_per_operation = BigInteger
+ .valueOf(Amperes * 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;
+
+ public GT_MetaTileEntity_Hatch_WirelessMulti(int aID, String aName, String aNameRegional, int aTier, int aAmp) {
+ super(
+ aID,
+ aName,
+ aNameRegional,
+ aTier,
+ 0,
+ translateToLocal("gt.blockmachines.hatch.energymulti.desc.0"), // Multiple
+ // Ampere
+ // Energy
+ // Injector
+ // for
+ // Multiblocks
+ aAmp);
+ TT_Utility.setTier(aTier, this);
+ }
+
+ public GT_MetaTileEntity_Hatch_WirelessMulti(String aName, int aTier, int aAmp, String aDescription,
+ ITexture[][][] aTextures) {
+ super(aName, aTier, aAmp, aDescription, aTextures);
+ }
+
+ private ITexture[] TEXTURE_OVERLAY;
+
+ @Override
+ public ITexture[] getTexturesActive(ITexture aBaseTexture) {
+ switch (Amperes) {
+ case 4:
+ TEXTURE_OVERLAY = OVERLAYS_ENERGY_IN_WIRELESS_MULTI_4A;
+ break;
+ case 16:
+ TEXTURE_OVERLAY = OVERLAYS_ENERGY_IN_WIRELESS_MULTI_16A;
+ break;
+ case 64:
+ TEXTURE_OVERLAY = OVERLAYS_ENERGY_IN_WIRELESS_MULTI_64A;
+ break;
+ }
+ return new ITexture[] { aBaseTexture, TEXTURE_OVERLAY[mTier] };
+ }
+
+ @Override
+ public ITexture[] getTexturesInactive(ITexture aBaseTexture) {
+ switch (Amperes) {
+ case 4:
+ TEXTURE_OVERLAY = OVERLAYS_ENERGY_IN_WIRELESS_MULTI_4A;
+ break;
+ case 16:
+ TEXTURE_OVERLAY = OVERLAYS_ENERGY_IN_WIRELESS_MULTI_16A;
+ break;
+ case 64:
+ TEXTURE_OVERLAY = OVERLAYS_ENERGY_IN_WIRELESS_MULTI_64A;
+ break;
+ }
+ return new ITexture[] { aBaseTexture, TEXTURE_OVERLAY[mTier] };
+ }
+
+ @Override
+ public boolean isSimpleMachine() {
+ return true;
+ }
+
+ @Override
+ public boolean isFacingValid(byte aFacing) {
+ return true;
+ }
+
+ @Override
+ public boolean isAccessAllowed(EntityPlayer aPlayer) {
+ return true;
+ }
+
+ @Override
+ public boolean isEnetInput() {
+ return false;
+ }
+
+ @Override
+ public boolean isInputFacing(byte aSide) {
+ return aSide == getBaseMetaTileEntity().getFrontFacing();
+ }
+
+ @Override
+ public boolean isValidSlot(int aIndex) {
+ return false;
+ }
+
+ @Override
+ public long getMinimumStoredEU() {
+ return Amperes * V[mTier];
+ }
+
+ @Override
+ public long maxEUInput() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxEUStore() {
+ return totalStorage(V[mTier]) * Amperes / 2;
+ }
+
+ @Override
+ public long maxAmperesIn() {
+ return Amperes;
+ }
+
+ @Override
+ public long maxWorkingAmperesIn() {
+ return Amperes;
+ }
+
+ @Override
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_Hatch_WirelessMulti(mName, mTier, Amperes, mDescription, mTextures);
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[] { GRAY + "Stores energy globally in a network, up to 2^(2^31) EU.",
+ GRAY + "Does not connect to wires. This block withdraws EU from the network.",
+ AuthorColen + GRAY + BOLD + " & " + BLUE + BOLD + "Cloud" };
+ }
+
+ @Override
+ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+
+ super.onPreTick(aBaseMetaTileEntity, aTick);
+
+ if (aBaseMetaTileEntity.isServerSide()) {
+
+ // On first tick find the player name and attempt to add them to the map.
+ if (aTick == 1) {
+
+ // UUID and username of the owner.
+ owner_uuid = aBaseMetaTileEntity.getOwnerUuid().toString();
+ owner_name = aBaseMetaTileEntity.getOwnerName();
+
+ strongCheckOrAddUser(owner_uuid, owner_name);
+
+ if (addEUToGlobalEnergyMap(owner_uuid, eu_transferred_per_operation.negate()))
+ setEUVar(eu_transferred_per_operation_long);
+ }
+
+ // This is set up in a way to be as optimised as possible. If a user has a relatively plentiful energy
+ // network
+ // it should make no difference to them. Minimising the number of operations on BigInteger is essential.
+
+ // Every ticks_between_energy_addition add eu_transferred_per_operation to internal EU storage from network.
+ if (aTick % ticks_between_energy_addition == 0L) {
+ long total_eu = getBaseMetaTileEntity().getStoredEU();
+
+ // Can the machine store the EU being added?
+ long new_eu_storage = total_eu + eu_transferred_per_operation_long;
+ if (new_eu_storage <= maxEUStore()) {
+
+ // Attempt to remove energy from the network and add it to the internal buffer of the machine.
+ if (addEUToGlobalEnergyMap(owner_uuid, eu_transferred_per_operation.negate())) {
+ setEUVar(new_eu_storage);
+ }
+ }
+ }
+ }
+ }
+}