diff options
Diffstat (limited to 'src/main/java')
7 files changed, 61 insertions, 61 deletions
diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index 053d8c6236..ed8610982d 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -42,7 +42,6 @@ import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; import gregtech.api.world.GT_Worldgen; -import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverBase; import gregtech.common.items.GT_IntegratedCircuit_Item; import java.util.ArrayList; import java.util.Collection; @@ -55,7 +54,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.TreeMap; -import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiFunction; import java.util.function.IntFunction; @@ -180,56 +178,6 @@ public class GregTech_API { */ public static final Map<String, Map<Integer, Map<Long, Byte>>> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); - public static Byte getAdvancedRedstone(UUID uuid, int frequency, GT_Cover_AdvancedRedstoneReceiverBase.GateMode mode) { - Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); - if (frequencies == null) return 0; - - Map<Long, Byte> signals = frequencies.get(frequency); - if (signals == null) signals = new ConcurrentHashMap<>(); - - switch (mode) { - case AND: - return (byte) (signals.values().stream() - .map(signal -> signal > 0) - .reduce(true, (signalA, signalB) -> signalA && signalB) ? 15 : 0); - case NAND: - return (byte) (signals.values().stream() - .map(signal -> signal > 0) - .reduce(true, (signalA, signalB) -> signalA && signalB) ? 0 : 15); - case OR: - return (byte) (signals.values().stream() - .map(signal -> signal > 0) - .reduce(false, (signalA, signalB) -> signalA || signalB) ? 15 : 0); - case NOR: - return (byte) (signals.values().stream() - .map(signal -> signal > 0) - .reduce(false, (signalA, signalB) -> signalA || signalB) ? 0 : 15); - default: - return 0; - } - } - - public static void resetAdvancedRedstoneFrequency(UUID uuid, int frequency) { - Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); - if (frequencies == null) return; - frequencies.computeIfPresent(frequency, (k, longByteMap) -> new ConcurrentHashMap<>()); - } - - public static void removeAdvancedRedstone(UUID uuid, int frequency, long hash) { - Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); - if (frequencies == null) return; - frequencies.computeIfPresent(frequency, (freq, longByteMap) -> { - longByteMap.remove(hash); - return longByteMap.isEmpty() ? null : longByteMap; - }); - } - - public static void setAdvancedRedstone(UUID uuid, int frequency, long hash, byte value) { - Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(String.valueOf(uuid), k -> new ConcurrentHashMap<>()); - Map<Long, Byte> signals = frequencies.computeIfAbsent(frequency, k -> new ConcurrentHashMap<>()); - signals.put(hash, value); - } - /** * x hashed into first 20 bytes * y hashed into second 20 bytes diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverExternal.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverExternal.java index a8601b15d0..3f2db32f7f 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverExternal.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverExternal.java @@ -1,6 +1,5 @@ package gregtech.common.covers.redstone; -import gregtech.api.GregTech_API; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; @@ -13,7 +12,7 @@ public class GT_Cover_AdvancedRedstoneReceiverExternal extends GT_Cover_Advanced @Override public ReceiverData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, long aTimer) { aTileEntity.setOutputRedstoneSignal(aSide, - GregTech_API.getAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), aCoverVariable.getGateMode())); + getSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), aCoverVariable.getGateMode())); return aCoverVariable; } diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverInternal.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverInternal.java index ea766e9e89..a8fdf29249 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverInternal.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverInternal.java @@ -18,7 +18,7 @@ public class GT_Cover_AdvancedRedstoneReceiverInternal extends GT_Cover_Advanced if (getRedstoneInput(aSide, aInputRedstone, aCoverID, aCoverVariable, aTileEntity) > 0) { machine.enableWorking(); } else { - machine.disableWorking();; + machine.disableWorking(); } machine.setWorkDataValue(aInputRedstone); @@ -29,6 +29,6 @@ public class GT_Cover_AdvancedRedstoneReceiverInternal extends GT_Cover_Advanced @Override protected byte getRedstoneInputImpl(byte aSide, byte aInputRedstone, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { - return GregTech_API.getAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), aCoverVariable.getGateMode()); + return getSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), aCoverVariable.getGateMode()); } } diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java index 0d95263fa3..8e4829463f 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java @@ -38,7 +38,7 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ private static void unregisterSignal(byte aSide, TransmitterData aCoverVariable, ICoverable aTileEntity) { long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); - GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency, hash); + removeSignalAt(aCoverVariable.uuid, aCoverVariable.frequency, hash); } @Override @@ -114,8 +114,8 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ invert = aBuf.readBoolean(); if (oldFrequency != frequency || !Objects.equals(oldUuid, uuid) || oldInvert != invert) { - GregTech_API.resetAdvancedRedstoneFrequency(uuid, frequency); - GregTech_API.resetAdvancedRedstoneFrequency(oldUuid, oldFrequency); + resetSignalAt(uuid, frequency); + resetSignalAt(oldUuid, oldFrequency); } return this; diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterExternal.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterExternal.java index d33ed2d47a..84019efd61 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterExternal.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterExternal.java @@ -20,7 +20,7 @@ public class GT_Cover_AdvancedRedstoneTransmitterExternal extends GT_Cover_Advan } long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); - GregTech_API.setAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, outputRedstone); + setSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, outputRedstone); return aCoverVariable; } diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterInternal.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterInternal.java index 93f769c567..1e50891d37 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterInternal.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterInternal.java @@ -20,7 +20,7 @@ public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_Advan } long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); - GregTech_API.setAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, outputRedstone); + setSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, outputRedstone); return aCoverVariable; } diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java index 08fa5356c2..4267d4104d 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java @@ -1,6 +1,7 @@ package gregtech.common.covers.redstone; import com.google.common.io.ByteArrayDataInput; +import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.gui.GT_GUICover; import gregtech.api.gui.widgets.GT_GuiIcon; @@ -23,7 +24,9 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; import javax.annotation.Nonnull; +import java.util.Map; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; public abstract class GT_Cover_AdvancedWirelessRedstoneBase<T extends GT_Cover_AdvancedWirelessRedstoneBase.WirelessData> extends GT_CoverBehaviorBase<T> { @@ -31,6 +34,56 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase<T extends GT_Cover_A super(typeToken, coverTexture); } + public static Byte getSignalAt(UUID uuid, int frequency, GT_Cover_AdvancedRedstoneReceiverBase.GateMode mode) { + Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + if (frequencies == null) return 0; + + Map<Long, Byte> signals = frequencies.get(frequency); + if (signals == null) signals = new ConcurrentHashMap<>(); + + switch (mode) { + case AND: + return (byte) (signals.values().stream() + .map(signal -> signal > 0) + .reduce(true, (signalA, signalB) -> signalA && signalB) ? 15 : 0); + case NAND: + return (byte) (signals.values().stream() + .map(signal -> signal > 0) + .reduce(true, (signalA, signalB) -> signalA && signalB) ? 0 : 15); + case OR: + return (byte) (signals.values().stream() + .map(signal -> signal > 0) + .reduce(false, (signalA, signalB) -> signalA || signalB) ? 15 : 0); + case NOR: + return (byte) (signals.values().stream() + .map(signal -> signal > 0) + .reduce(false, (signalA, signalB) -> signalA || signalB) ? 0 : 15); + default: + return 0; + } + } + + public static void resetSignalAt(UUID uuid, int frequency) { + Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + if (frequencies == null) return; + frequencies.computeIfPresent(frequency, (k, longByteMap) -> new ConcurrentHashMap<>()); + } + + public static void removeSignalAt(UUID uuid, int frequency, long hash) { + Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + if (frequencies == null) return; + frequencies.computeIfPresent(frequency, (freq, longByteMap) -> { + longByteMap.remove(hash); + return longByteMap.isEmpty() ? null : longByteMap; + }); + } + + public static void setSignalAt(UUID uuid, int frequency, long hash, byte value) { + Map<Integer, Map<Long, Byte>> frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(String.valueOf(uuid), k -> new ConcurrentHashMap<>()); + Map<Long, Byte> signals = frequencies.computeIfAbsent(frequency, k -> new ConcurrentHashMap<>()); + signals.put(hash, value); + } + @Override public boolean letsEnergyInImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) { return true; |