From 300f36ca0f219f0f7828bc5abcb0abfb9de1e29f Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Mon, 19 Sep 2022 19:38:19 +0200 Subject: Add missing space --- src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java index aa54520d02..fd4d64d363 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java @@ -4637,25 +4637,25 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { ItemList.Cover_RedstoneTransmitterExternal.set(addItem( tLastID = 741, "Redstone Transmitter (Out)", - "Transfers Redstonesignals wireless", + "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); ItemList.Cover_RedstoneTransmitterInternal.set(addItem( tLastID = 742, "Redstone Transmitter (In)", - "Transfers Redstonesignals wireless", + "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); ItemList.Cover_RedstoneReceiverExternal.set(addItem( tLastID = 746, "Redstone Receiver (Out)", - "Transfers Redstonesignals wireless", + "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); ItemList.Cover_RedstoneReceiverInternal.set(addItem( tLastID = 747, "Redstone Receiver (In)", - "Transfers Redstonesignals wireless", + "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); -- cgit From dc511e64e2ffeb47fd0357eca0598f946704cb2a Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Tue, 20 Sep 2022 22:02:17 +0200 Subject: Add Advanced Wireless Redstone Covers --- src/main/java/gregtech/api/GregTech_API.java | 24 ++ src/main/java/gregtech/api/enums/ItemList.java | 5 + src/main/java/gregtech/api/gui/GT_GUIScreen.java | 2 +- .../GT_Cover_AdvancedRedstoneReceiverBase.java | 319 +++++++++++++++++++ .../GT_Cover_AdvancedRedstoneReceiverExternal.java | 30 ++ .../GT_Cover_AdvancedRedstoneReceiverInternal.java | 34 ++ .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 342 +++++++++++++++++++++ ..._Cover_AdvancedRedstoneTransmitterExternal.java | 30 ++ ..._Cover_AdvancedRedstoneTransmitterInternal.java | 37 +++ .../common/items/GT_MetaGenerated_Item_02.java | 70 +++++ .../assets/gregtech/textures/gui/GuiCover.png | Bin 6998 -> 3026 bytes .../assets/gregtech/textures/gui/GuiCoverLong.png | Bin 0 -> 644 bytes .../gregtech/textures/items/gt.metaitem.02/577.png | Bin 0 -> 17987 bytes .../gregtech/textures/items/gt.metaitem.02/578.png | Bin 0 -> 17987 bytes .../gregtech/textures/items/gt.metaitem.02/579.png | Bin 0 -> 17995 bytes .../gregtech/textures/items/gt.metaitem.02/580.png | Bin 0 -> 17995 bytes 16 files changed, 892 insertions(+), 1 deletion(-) create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverExternal.java create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverInternal.java create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterExternal.java create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterInternal.java create mode 100644 src/main/resources/assets/gregtech/textures/gui/GuiCoverLong.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png (limited to 'src') diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index 7a52021eea..fefbe06518 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -53,6 +53,7 @@ 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; @@ -172,6 +173,29 @@ public class GregTech_API { * The Redstone Frequencies */ public static final Map sWirelessRedstone = new ConcurrentHashMap<>(); + /** + * The Advanced Redstone Frequencies + */ + public static final Map> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); + + public static Byte getAdvancedRedstone(UUID uuid, int frequency) { + Map frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + if (frequencies == null) return 0; + return frequencies.getOrDefault(frequency, (byte) 0); + } + + public static void removeAdvancedRedstone(UUID uuid, int frequency) { + Map frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + if (frequencies == null) return; + frequencies.remove(frequency); + } + + public static void setAdvancedRedstone(UUID uuid, int frequency, byte value) { + String key = String.valueOf(uuid); + Map frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(key, k -> new ConcurrentHashMap<>()); + frequencies.put(frequency, value); + } + /** * The IDSU Frequencies */ diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java index 279233d101..b8b457ad16 100644 --- a/src/main/java/gregtech/api/enums/ItemList.java +++ b/src/main/java/gregtech/api/enums/ItemList.java @@ -1529,6 +1529,11 @@ public enum ItemList implements IItemContainer { Hatch_Output_Bus_ME, NULL, + Cover_AdvancedRedstoneTransmitterExternal, + Cover_AdvancedRedstoneTransmitterInternal, + Cover_AdvancedRedstoneReceiverExternal, + Cover_AdvancedRedstoneReceiverInternal, + Cover_RedstoneTransmitterExternal, Cover_RedstoneTransmitterInternal, Cover_RedstoneReceiverExternal, diff --git a/src/main/java/gregtech/api/gui/GT_GUIScreen.java b/src/main/java/gregtech/api/gui/GT_GUIScreen.java index 281be1e55d..d39a6b738e 100644 --- a/src/main/java/gregtech/api/gui/GT_GUIScreen.java +++ b/src/main/java/gregtech/api/gui/GT_GUIScreen.java @@ -28,8 +28,8 @@ public abstract class GT_GUIScreen extends GuiScreen implements GT_IToolTipRende protected int gui_height = 107; protected int guiTop, guiLeft; protected boolean drawButtons = true; + protected ResourceLocation mGUIbackgroundLocation; - private ResourceLocation mGUIbackgroundLocation; private GuiButton selectedButton; private GT_GUIColorOverride colorOverride; private final int textColor; diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java new file mode 100644 index 0000000000..ccd0ea0b8f --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -0,0 +1,319 @@ +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; +import gregtech.api.gui.widgets.GT_GuiIconCheckButton; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; +import gregtech.api.interfaces.IGuiScreen; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.net.GT_Packet_TileEntityCoverNew; +import gregtech.api.util.GT_CoverBehaviorBase; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.ISerializableObject; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; + +import javax.annotation.Nonnull; +import java.util.UUID; + +public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase { + + public GT_Cover_AdvancedRedstoneReceiverBase(ITexture coverTexture) { + super(ReceiverData.class, coverTexture); + } + + @Override + public ReceiverData createDataObject() { + return new ReceiverData(); + } + + @Override + public ReceiverData createDataObject(int aLegacyData) { + return createDataObject(); + } + + @Override + public boolean onCoverRemovalImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, + boolean aForced) { + GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency); + return true; + } + + @Override + public boolean letsEnergyInImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsEnergyOutImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsFluidInImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsFluidOutImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsItemsInImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsItemsOutImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public String getDescriptionImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + return GT_Utility.trans("081", "Frequency: ") + aCoverVariable.frequency + ", Transmission: " + (aCoverVariable.uuid == null ? "Public" : "Private"); + } + + @Override + public int getTickRateImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + return 5; + } + + /** + * GUI Stuff + */ + @Override + public boolean hasCoverGUI() { + return true; + } + + @Override + public Object getClientGUIImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, + EntityPlayer aPlayer, World aWorld) { + return new GT_Cover_AdvancedRedstoneReceiverBase.GUI(aSide, aCoverID, aCoverVariable, aTileEntity); + } + + public static class ReceiverData implements ISerializableObject { + private int frequency; + + /** + * If UUID is set to null, the cover frequency is public, rather than private + **/ + private UUID uuid; + + public ReceiverData(int frequency, UUID uuid) { + this.frequency = frequency; + this.uuid = uuid; + } + + public ReceiverData() { + this(0, null); + } + + public UUID getUuid() { + return uuid; + } + + public int getFrequency() { + return frequency; + } + + @Nonnull + @Override + public ISerializableObject copy() { + return new ReceiverData(frequency, uuid); + } + + @Nonnull + @Override + public NBTBase saveDataToNBT() { + NBTTagCompound tag = new NBTTagCompound(); + tag.setInteger("frequency", frequency); + if (uuid != null) { + tag.setString("uuid", uuid.toString()); + } + + return tag; + } + + @Override + public void writeToByteBuf(ByteBuf aBuf) { + aBuf.writeInt(frequency); + aBuf.writeBoolean(uuid != null); + if (uuid != null) { + aBuf.writeLong(uuid.getLeastSignificantBits()); + aBuf.writeLong(uuid.getMostSignificantBits()); + } + } + + @Override + public void loadDataFromNBT(NBTBase aNBT) { + NBTTagCompound tag = (NBTTagCompound) aNBT; + frequency = tag.getInteger("frequency"); + if (tag.hasKey("uuid")) { + uuid = UUID.fromString(tag.getString("uuid")); + } + } + + @Nonnull + @Override + public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { + frequency = aBuf.readInt(); + if (aBuf.readBoolean()) { + uuid = new UUID(aBuf.readLong(), aBuf.readLong()); + } + + return this; + } + } + + private class GUI extends GT_GUICover { + + private final byte side; + private final int coverID; + private final GT_GuiIntegerTextBox frequencyBox; + private final GT_GuiIconCheckButton privateButton; + private final ReceiverData coverVariable; + + private static final int startX = 10; + private static final int startY = 25; + private static final int spaceX = 18; + private static final int spaceY = 18; + + private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png"; + + private final int textColor = this.getTextColorOrDefault("text", 0xFF555555); + + public GUI(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + super(aTileEntity, 250, 107, GT_Utility.intToStack(aCoverID)); + this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); + this.side = aSide; + this.coverID = aCoverID; + this.coverVariable = aCoverVariable; + + frequencyBox = new GT_Cover_AdvancedRedstoneReceiverBase.GUI.GT_GuiShortTextBox(this, 2, startX, startY + 2, spaceX * 5 - 3, 12); + privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.getFontRenderer().drawString( + GT_Utility.trans("246", "Frequency"), + startX + spaceX * 5, + 4 + startY, + textColor); + this.getFontRenderer().drawString( + GT_Utility.trans("601", "Use Private Frequency"), + startX + spaceX, + startY + spaceY * 1 + 4, + textColor); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + update(); + frequencyBox.setFocused(true); + } + + @Override + public void onMouseWheel(int x, int y, int delta) { + if (frequencyBox.isFocused()) { + long step = Math.max(1, Math.abs(delta / 120)); + step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); + + long frequency = parseTextBox(frequencyBox) + step; + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + frequencyBox.setText(Long.toString(frequency)); + } + } + + @Override + public void applyTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + coverVariable.frequency = parseTextBox(frequencyBox); + } + + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); + update(); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + frequencyBox.setText(Integer.toString(coverVariable.frequency)); + } + } + + private void update() { + privateButton.setChecked(coverVariable.uuid != null); + resetTextBox(frequencyBox); + } + + @Override + public void buttonClicked(GuiButton btn) { + if (btn == privateButton) { + coverVariable.uuid = coverVariable.uuid == null ? Minecraft.getMinecraft().thePlayer.getUniqueID() : null; + } + + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); + update(); + } + + private int parseTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + String text = box.getText(); + if (text == null) { + return 0; + } + + long frequency; + try { + frequency = Long.parseLong(text.trim()); + } catch (NumberFormatException e) { + return 0; + } + + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + return (int) frequency; + } + + throw new UnsupportedOperationException("Unknown text box: " + box); + } + + private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { + + public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { + super(gui, id, x, y, width, height); + } + + @Override + public boolean textboxKeyTyped(char c, int key) { + if (!super.textboxKeyTyped(c, key)) return false; + + String text = getText().trim(); + if (text.length() > 0) { + setText(String.valueOf(parseTextBox(this))); + } + + return true; + } + } + } +} 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 new file mode 100644 index 0000000000..bedb878295 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverExternal.java @@ -0,0 +1,30 @@ +package gregtech.common.covers.redstone; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; + +public class GT_Cover_AdvancedRedstoneReceiverExternal extends GT_Cover_AdvancedRedstoneReceiverBase { + + public GT_Cover_AdvancedRedstoneReceiverExternal(ITexture coverTexture) { + super(coverTexture); + } + + @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())); + + return aCoverVariable; + } + + @Override + protected boolean isRedstoneSensitiveImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, long aTimer) { + return false; + } + + @Override + protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + return true; + } +} 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 new file mode 100644 index 0000000000..7a4d498059 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverInternal.java @@ -0,0 +1,34 @@ +package gregtech.common.covers.redstone; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; + +public class GT_Cover_AdvancedRedstoneReceiverInternal extends GT_Cover_AdvancedRedstoneReceiverBase { + + public GT_Cover_AdvancedRedstoneReceiverInternal(ITexture coverTexture) { + super(coverTexture); + } + + @Override + public ReceiverData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, long aTimer) { + if (aTileEntity instanceof IMachineProgress) { + IMachineProgress machine = ((IMachineProgress) aTileEntity); + if (getRedstoneInput(aSide, aInputRedstone, aCoverID, aCoverVariable, aTileEntity) > 0) { + machine.enableWorking(); + } else { + machine.disableWorking();; + } + + machine.setWorkDataValue(aInputRedstone); + } + + return aCoverVariable; + } + + @Override + protected byte getRedstoneInputImpl(byte aSide, byte aInputRedstone, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + return GregTech_API.getAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency()); + } +} 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 new file mode 100644 index 0000000000..a71cea094a --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java @@ -0,0 +1,342 @@ +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; +import gregtech.api.gui.widgets.GT_GuiIconCheckButton; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; +import gregtech.api.interfaces.IGuiScreen; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.net.GT_Packet_TileEntityCoverNew; +import gregtech.api.util.GT_CoverBehaviorBase; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.ISerializableObject; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; + +import javax.annotation.Nonnull; +import java.util.UUID; + +public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBase { + + public GT_Cover_AdvancedRedstoneTransmitterBase(ITexture coverTexture) { + super(TransmitterData.class, coverTexture); + } + + @Override + public TransmitterData createDataObject() { + return new TransmitterData(); + } + + @Override + public TransmitterData createDataObject(int aLegacyData) { + return createDataObject(); + } + + @Override + public boolean onCoverRemovalImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, + boolean aForced) { + GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency); + return true; + } + + @Override + public boolean letsEnergyInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsEnergyOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsFluidInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsFluidOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsItemsInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsItemsOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public String getDescriptionImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + return GT_Utility.trans("081", "Frequency: ") + aCoverVariable.frequency + ", Transmission: " + (aCoverVariable.uuid == null ? "Public" : "Private"); + } + + @Override + public int getTickRateImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + return 5; + } + + /** + * GUI Stuff + */ + @Override + public boolean hasCoverGUI() { + return true; + } + + @Override + public Object getClientGUIImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, + EntityPlayer aPlayer, World aWorld) { + return new GT_Cover_AdvancedRedstoneTransmitterBase.GUI(aSide, aCoverID, aCoverVariable, aTileEntity); + } + + public static class TransmitterData implements ISerializableObject { + private int frequency; + + /** + * If UUID is set to null, the cover frequency is public, rather than private + **/ + private UUID uuid; + private boolean invert; + + public TransmitterData(int frequency, UUID uuid, boolean invert) { + this.frequency = frequency; + this.uuid = uuid; + this.invert = invert; + } + + public TransmitterData() { + this(0, null, false); + } + + public UUID getUuid() { + return uuid; + } + + public int getFrequency() { + return frequency; + } + + public boolean isInvert() { + return invert; + } + + @Nonnull + @Override + public ISerializableObject copy() { + return new TransmitterData(frequency, uuid, invert); + } + + @Nonnull + @Override + public NBTBase saveDataToNBT() { + NBTTagCompound tag = new NBTTagCompound(); + tag.setInteger("frequency", frequency); + if (uuid != null) { + tag.setString("uuid", uuid.toString()); + } + tag.setBoolean("invert", invert); + + return tag; + } + + @Override + public void writeToByteBuf(ByteBuf aBuf) { + aBuf.writeInt(frequency); + aBuf.writeBoolean(uuid != null); + if (uuid != null) { + aBuf.writeLong(uuid.getLeastSignificantBits()); + aBuf.writeLong(uuid.getMostSignificantBits()); + } + aBuf.writeBoolean(invert); + } + + @Override + public void loadDataFromNBT(NBTBase aNBT) { + NBTTagCompound tag = (NBTTagCompound) aNBT; + frequency = tag.getInteger("frequency"); + if (tag.hasKey("uuid")) { + uuid = UUID.fromString(tag.getString("uuid")); + } + invert = tag.getBoolean("invert"); + } + + @Nonnull + @Override + public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { + frequency = aBuf.readInt(); + if (aBuf.readBoolean()) { + uuid = new UUID(aBuf.readLong(), aBuf.readLong()); + } + invert = aBuf.readBoolean(); + + return this; + } + } + + private class GUI extends GT_GUICover { + + private final byte side; + private final int coverID; + private final GT_GuiIntegerTextBox frequencyBox; + private final GT_GuiIconCheckButton privateButton; + private final GT_GuiIconCheckButton invertButton; + private final TransmitterData coverVariable; + + private static final int startX = 10; + private static final int startY = 25; + private static final int spaceX = 18; + private static final int spaceY = 18; + + private final String INVERTED = GT_Utility.trans("INVERTED", "Inverted"); + private final String NORMAL = GT_Utility.trans("NORMAL", "Normal"); + + private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png"; + + private final int textColor = this.getTextColorOrDefault("text", 0xFF555555); + + public GUI(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + super(aTileEntity, 250, 107, GT_Utility.intToStack(aCoverID)); + this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); + this.side = aSide; + this.coverID = aCoverID; + this.coverVariable = aCoverVariable; + + privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); + invertButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 2, GT_GuiIcon.REDSTONE_ON, GT_GuiIcon.REDSTONE_OFF, INVERTED, NORMAL); + frequencyBox = new GT_Cover_AdvancedRedstoneTransmitterBase.GUI.GT_GuiShortTextBox(this, 2, startX, startY + 2, spaceX * 5 - 3, 12); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.getFontRenderer().drawString( + GT_Utility.trans("246", "Frequency"), + startX + spaceX * 5, + 4 + startY, + textColor); + this.getFontRenderer().drawString( + GT_Utility.trans("601", "Use Private Frequency"), + startX + spaceX, + startY + spaceY * 1 + 4, + textColor); + this.getFontRenderer().drawString( + coverVariable.invert ? INVERTED : NORMAL, + startX + spaceX, + startY + spaceY * 2 + 4, + textColor); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + update(); + frequencyBox.setFocused(true); + } + + @Override + public void onMouseWheel(int x, int y, int delta) { + if (frequencyBox.isFocused()) { + long step = Math.max(1, Math.abs(delta / 120)); + step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); + + long frequency = parseTextBox(frequencyBox) + step; + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + frequencyBox.setText(Long.toString(frequency)); + } + } + + @Override + public void applyTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + coverVariable.frequency = parseTextBox(frequencyBox); + } + + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); + update(); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + frequencyBox.setText(Integer.toString(coverVariable.frequency)); + } + } + + private void update() { + privateButton.setChecked(coverVariable.uuid != null); + invertButton.setChecked(coverVariable.invert); + resetTextBox(frequencyBox); + } + + @Override + public void buttonClicked(GuiButton btn) { + if (btn == privateButton) { + coverVariable.uuid = coverVariable.uuid == null ? Minecraft.getMinecraft().thePlayer.getUniqueID() : null; + } else if (btn == invertButton) { + coverVariable.invert = !coverVariable.invert; + } + + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); + update(); + } + + private int parseTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + String text = box.getText(); + if (text == null) { + return 0; + } + + long frequency; + try { + frequency = Long.parseLong(text.trim()); + } catch (NumberFormatException e) { + return 0; + } + + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + return (int) frequency; + } + + throw new UnsupportedOperationException("Unknown text box: " + box); + } + + private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { + + public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { + super(gui, id, x, y, width, height); + } + + @Override + public boolean textboxKeyTyped(char c, int key) { + if (!super.textboxKeyTyped(c, key)) return false; + + String text = getText().trim(); + if (text.length() > 0) { + setText(String.valueOf(parseTextBox(this))); + } + + return true; + } + } + } +} 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 new file mode 100644 index 0000000000..51533c2b98 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterExternal.java @@ -0,0 +1,30 @@ +package gregtech.common.covers.redstone; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; + +public class GT_Cover_AdvancedRedstoneTransmitterExternal extends GT_Cover_AdvancedRedstoneTransmitterBase { + + public GT_Cover_AdvancedRedstoneTransmitterExternal(ITexture coverTexture) { + super(coverTexture); + } + + @Override + public TransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, + TransmitterData aCoverVariable, ICoverable tile, long aTimer) { + byte outputRedstone = aInputRedstone; + if (aCoverVariable.isInvert()) { + if (outputRedstone > 0) outputRedstone = 0; + else outputRedstone = 15; + } + + GregTech_API.setAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), outputRedstone); + return aCoverVariable; + } + + @Override + public boolean letsRedstoneGoInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + return true; + } +} 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 new file mode 100644 index 0000000000..058081fd13 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterInternal.java @@ -0,0 +1,37 @@ +package gregtech.common.covers.redstone; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; + +public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_AdvancedRedstoneTransmitterBase { + + public GT_Cover_AdvancedRedstoneTransmitterInternal(ITexture coverTexture) { + super(coverTexture); + } + + @Override + public TransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, + TransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + byte outputRedstone = aTileEntity.getOutputRedstoneSignal(aSide); + if (aCoverVariable.isInvert()) { + if (outputRedstone > 0) outputRedstone = 0; + else outputRedstone = 15; + } + + GregTech_API.setAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), outputRedstone); + return aCoverVariable; + } + + @Override + public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } +} diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index af5c1dc457..53ed73ae5a 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -8,6 +8,7 @@ import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.SubTag; import gregtech.api.enums.TC_Aspects; +import gregtech.api.interfaces.ITexture; import gregtech.api.items.GT_MetaGenerated_Item_X32; import gregtech.api.objects.ItemData; import gregtech.api.render.TextureFactory; @@ -16,6 +17,11 @@ 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.common.covers.GT_Cover_RedstoneReceiverExternal; +import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverExternal; +import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverInternal; +import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterExternal; +import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterInternal; import gregtech.common.items.behaviors.Behaviour_Arrow; import net.minecraft.dispenser.IBlockSource; import net.minecraft.enchantment.Enchantment; @@ -32,6 +38,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.world.World; +import static gregtech.api.enums.Textures.BlockIcons.*; + public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { public static GT_MetaGenerated_Item_02 INSTANCE; private static final String aTextCover = "Usable as Cover"; @@ -2297,6 +2305,68 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { new GT_FoodStat(1, 0.1F, EnumAction.eat, null, false, true, false), new TC_Aspects.TC_AspectStack(TC_Aspects.FAMES, 1L))); + + + ItemList.Cover_AdvancedRedstoneTransmitterExternal.set(addItem( + tLastID = 577, + "Advanced Redstone Transmitter (External)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + ItemList.Cover_AdvancedRedstoneTransmitterInternal.set(addItem( + tLastID = 578, + "Advanced Redstone Transmitter (Internal)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + ItemList.Cover_AdvancedRedstoneReceiverExternal.set(addItem( + tLastID = 579, + "Advanced Redstone Receiver (External)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + ItemList.Cover_AdvancedRedstoneReceiverInternal.set(addItem( + tLastID = 580, + "Advanced Redstone Receiver (Internal)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + + final ITexture redstoneTransmitterExternalCoverTexture = TextureFactory.of( + TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), + TextureFactory.builder() + .addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW) + .glow() + .build()); + + final ITexture redstoneTransmitterInternalCoverTexture = TextureFactory.of( + TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), + TextureFactory.builder() + .addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW) + .glow() + .build()); + + GregTech_API.registerCover( + ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], redstoneTransmitterExternalCoverTexture), + new GT_Cover_AdvancedRedstoneTransmitterExternal(redstoneTransmitterExternalCoverTexture)); + + GregTech_API.registerCover( + ItemList.Cover_AdvancedRedstoneTransmitterInternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], redstoneTransmitterInternalCoverTexture), + new GT_Cover_AdvancedRedstoneTransmitterInternal(redstoneTransmitterInternalCoverTexture)); + + GregTech_API.registerCover( + ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), + new GT_Cover_AdvancedRedstoneReceiverExternal(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + + GregTech_API.registerCover( + ItemList.Cover_AdvancedRedstoneReceiverInternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), + new GT_Cover_AdvancedRedstoneReceiverInternal(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + + GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 0), new ItemStack(Items.dye, 2, 1)); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 1), new ItemStack(Items.dye, 2, 12)); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 2), new ItemStack(Items.dye, 2, 13)); diff --git a/src/main/resources/assets/gregtech/textures/gui/GuiCover.png b/src/main/resources/assets/gregtech/textures/gui/GuiCover.png index 95353c79ca..8a3f69e06c 100644 Binary files a/src/main/resources/assets/gregtech/textures/gui/GuiCover.png and b/src/main/resources/assets/gregtech/textures/gui/GuiCover.png differ diff --git a/src/main/resources/assets/gregtech/textures/gui/GuiCoverLong.png b/src/main/resources/assets/gregtech/textures/gui/GuiCoverLong.png new file mode 100644 index 0000000000..1b9a18f691 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/gui/GuiCoverLong.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png new file mode 100644 index 0000000000..7e7f44eba1 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png new file mode 100644 index 0000000000..7e7f44eba1 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png new file mode 100644 index 0000000000..dd0bae6bab Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png new file mode 100644 index 0000000000..dd0bae6bab Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png differ -- cgit From fe4a5eba58bbe30c5114319401c356127fb00263 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Tue, 20 Sep 2022 23:44:45 +0200 Subject: Add handling of multiple sources --- src/main/java/gregtech/api/GregTech_API.java | 47 +++++++++++++++++----- .../GT_Cover_AdvancedRedstoneReceiverBase.java | 3 +- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 3 +- ..._Cover_AdvancedRedstoneTransmitterExternal.java | 6 ++- ..._Cover_AdvancedRedstoneTransmitterInternal.java | 3 +- 5 files changed, 47 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index fefbe06518..d4fd4206cf 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -20,6 +20,7 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.internal.IGT_RecipeAdder; import gregtech.api.interfaces.internal.IThaumcraftCompat; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IMachineBlockUpdateable; import gregtech.api.items.GT_CoolantCellIC_Item; import gregtech.api.items.GT_CoolantCell_Item; @@ -176,24 +177,50 @@ public class GregTech_API { /** * The Advanced Redstone Frequencies */ - public static final Map> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); + public static final Map>> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); public static Byte getAdvancedRedstone(UUID uuid, int frequency) { - Map frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + Map> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); if (frequencies == null) return 0; - return frequencies.getOrDefault(frequency, (byte) 0); + + // TODO: Implement All Modes + Map signals = frequencies.get(frequency); + if (signals == null) return 0; + + return (byte) (signals.values().stream() + .map(signal -> signal > 0) + .reduce(true, (signalA, signalB) -> signalA && signalB) ? 15 : 0); } - public static void removeAdvancedRedstone(UUID uuid, int frequency) { - Map frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + public static void removeAdvancedRedstone(UUID uuid, int frequency, long hash) { + Map> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); if (frequencies == null) return; - frequencies.remove(frequency); + 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> frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(String.valueOf(uuid), k -> new ConcurrentHashMap<>()); + Map signals = frequencies.computeIfAbsent(frequency, k -> new ConcurrentHashMap<>()); + signals.put(hash, value); } - public static void setAdvancedRedstone(UUID uuid, int frequency, byte value) { - String key = String.valueOf(uuid); - Map frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(key, k -> new ConcurrentHashMap<>()); - frequencies.put(frequency, value); + /** + * x hashed into first 20 bytes + * y hashed into second 20 bytes + * z hashed into fifth 10 bytes + * dim hashed into sixth 10 bytes + * side hashed into last 4 bytes + */ + public static long hashCoverCoords(ICoverable tile, byte side) { + return (((((long) + tile.getXCoord() << 20) + + tile.getZCoord() << 10) + + tile.getYCoord() << 10) + + tile.getWorld().provider.dimensionId << 4) + + side; } /** diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index ccd0ea0b8f..bbe43f9c92 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -47,7 +47,8 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< @Override public boolean onCoverRemovalImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, boolean aForced) { - GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency); + long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); + GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency, hash); return true; } 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 a71cea094a..f7f6cc3a40 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 @@ -47,7 +47,8 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa @Override public boolean onCoverRemovalImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, boolean aForced) { - GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency); + long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); + GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency, hash); return true; } 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 51533c2b98..d33ed2d47a 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 @@ -12,14 +12,16 @@ public class GT_Cover_AdvancedRedstoneTransmitterExternal extends GT_Cover_Advan @Override public TransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, - TransmitterData aCoverVariable, ICoverable tile, long aTimer) { + TransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { byte outputRedstone = aInputRedstone; if (aCoverVariable.isInvert()) { if (outputRedstone > 0) outputRedstone = 0; else outputRedstone = 15; } - GregTech_API.setAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), outputRedstone); + long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); + GregTech_API.setAdvancedRedstone(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 058081fd13..93f769c567 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 @@ -19,7 +19,8 @@ public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_Advan else outputRedstone = 15; } - GregTech_API.setAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), outputRedstone); + long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); + GregTech_API.setAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, outputRedstone); return aCoverVariable; } -- cgit From 16cf739469afd1332f6e3bd7c93e081dd60988e5 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Tue, 20 Sep 2022 23:58:31 +0200 Subject: Fix map not updating when transmitter TE gets destroyed The map is reset when player opens cover GUI --- src/main/java/gregtech/api/GregTech_API.java | 6 ++++++ .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 1 + 2 files changed, 7 insertions(+) (limited to 'src') diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index d4fd4206cf..e6bd089027 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -192,6 +192,12 @@ public class GregTech_API { .reduce(true, (signalA, signalB) -> signalA && signalB) ? 15 : 0); } + public static void resetAdvancedRedstoneFrequency(UUID uuid, int frequency) { + Map> 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> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); if (frequencies == null) return; 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 f7f6cc3a40..3e16a4b202 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 @@ -284,6 +284,7 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa privateButton.setChecked(coverVariable.uuid != null); invertButton.setChecked(coverVariable.invert); resetTextBox(frequencyBox); + GregTech_API.resetAdvancedRedstoneFrequency(coverVariable.uuid, coverVariable.frequency); } @Override -- cgit From c138596a6b4b8750832211c781c8763155074614 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 00:11:04 +0200 Subject: Revert GuiCover texture to original --- .../assets/gregtech/textures/gui/GuiCover.png | Bin 3026 -> 957 bytes 1 file changed, 0 insertions(+), 0 deletions(-) (limited to 'src') diff --git a/src/main/resources/assets/gregtech/textures/gui/GuiCover.png b/src/main/resources/assets/gregtech/textures/gui/GuiCover.png index 8a3f69e06c..2706f88de7 100644 Binary files a/src/main/resources/assets/gregtech/textures/gui/GuiCover.png and b/src/main/resources/assets/gregtech/textures/gui/GuiCover.png differ -- cgit From 65fe09f68401bb773651a7a2ca2fcb1d50abc508 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 01:04:24 +0200 Subject: Fix GUI button ids --- .../common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java | 2 +- .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index bbe43f9c92..53a36cadce 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -204,7 +204,7 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< this.coverID = aCoverID; this.coverVariable = aCoverVariable; - frequencyBox = new GT_Cover_AdvancedRedstoneReceiverBase.GUI.GT_GuiShortTextBox(this, 2, startX, startY + 2, spaceX * 5 - 3, 12); + frequencyBox = new GT_Cover_AdvancedRedstoneReceiverBase.GUI.GT_GuiShortTextBox(this, 0, startX, startY + 2, spaceX * 5 - 3, 12); privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); } 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 3e16a4b202..7e5232c59b 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 @@ -218,9 +218,9 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa this.coverID = aCoverID; this.coverVariable = aCoverVariable; + frequencyBox = new GT_Cover_AdvancedRedstoneTransmitterBase.GUI.GT_GuiShortTextBox(this, 0, startX, startY + 2, spaceX * 5 - 3, 12); privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); - invertButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 2, GT_GuiIcon.REDSTONE_ON, GT_GuiIcon.REDSTONE_OFF, INVERTED, NORMAL); - frequencyBox = new GT_Cover_AdvancedRedstoneTransmitterBase.GUI.GT_GuiShortTextBox(this, 2, startX, startY + 2, spaceX * 5 - 3, 12); + invertButton = new GT_GuiIconCheckButton(this, 1, startX, startY + spaceY * 2, GT_GuiIcon.REDSTONE_ON, GT_GuiIcon.REDSTONE_OFF, INVERTED, NORMAL); } @Override -- cgit From 5a3ce692c6da21cb45c12db9076cf344ad4b4f6e Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 02:58:15 +0200 Subject: Implement all advanced receiver modes --- src/main/java/gregtech/api/GregTech_API.java | 31 +++++++++--- .../java/gregtech/api/gui/widgets/GT_GuiIcon.java | 5 ++ .../GT_Cover_AdvancedRedstoneReceiverBase.java | 52 +++++++++++++++++++-- .../GT_Cover_AdvancedRedstoneReceiverExternal.java | 2 +- .../GT_Cover_AdvancedRedstoneReceiverInternal.java | 2 +- .../assets/gregtech/textures/gui/GuiButtons.png | Bin 3814 -> 9078 bytes 6 files changed, 79 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index e6bd089027..053d8c6236 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -42,6 +42,7 @@ 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; @@ -179,17 +180,33 @@ public class GregTech_API { */ public static final Map>> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); - public static Byte getAdvancedRedstone(UUID uuid, int frequency) { + public static Byte getAdvancedRedstone(UUID uuid, int frequency, GT_Cover_AdvancedRedstoneReceiverBase.GateMode mode) { Map> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); if (frequencies == null) return 0; - // TODO: Implement All Modes Map signals = frequencies.get(frequency); - if (signals == null) return 0; - - return (byte) (signals.values().stream() - .map(signal -> signal > 0) - .reduce(true, (signalA, signalB) -> signalA && signalB) ? 15 : 0); + 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) { diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java index 37e1a6d960..2be46dfa14 100644 --- a/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java +++ b/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java @@ -30,6 +30,11 @@ public enum GT_GuiIcon implements IGuiIcon { GREEN_ARROW_DOWN(0, 32 * 5, 32 * 2), CYCLIC(0, 32 * 6, 32 * 2), + AND_GATE(0, 0, 32 * 3), + NAND_GATE(0, 32, 32 * 3), + OR_GATE(0, 32 * 2, 32 * 3), + NOR_GATE(0, 32 * 3, 32 * 3), + SLOT_DARKGRAY(1, 176, 0, 18, 18), SLOT_GRAY(1, 176, 18, 18, 18), diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index 53a36cadce..8befcbfd52 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -5,6 +5,7 @@ import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.gui.GT_GUICover; import gregtech.api.gui.widgets.GT_GuiIcon; +import gregtech.api.gui.widgets.GT_GuiIconButton; import gregtech.api.gui.widgets.GT_GuiIconCheckButton; import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; import gregtech.api.interfaces.IGuiScreen; @@ -106,6 +107,13 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< return new GT_Cover_AdvancedRedstoneReceiverBase.GUI(aSide, aCoverID, aCoverVariable, aTileEntity); } + public enum GateMode { + AND, + NAND, + OR, + NOR + } + public static class ReceiverData implements ISerializableObject { private int frequency; @@ -113,14 +121,16 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< * If UUID is set to null, the cover frequency is public, rather than private **/ private UUID uuid; + private GateMode mode; - public ReceiverData(int frequency, UUID uuid) { + public ReceiverData(int frequency, UUID uuid, GateMode mode) { this.frequency = frequency; this.uuid = uuid; + this.mode = mode; } public ReceiverData() { - this(0, null); + this(0, null, GateMode.AND); } public UUID getUuid() { @@ -131,10 +141,14 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< return frequency; } + public GateMode getGateMode() { + return mode; + } + @Nonnull @Override public ISerializableObject copy() { - return new ReceiverData(frequency, uuid); + return new ReceiverData(frequency, uuid, mode); } @Nonnull @@ -145,6 +159,7 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< if (uuid != null) { tag.setString("uuid", uuid.toString()); } + tag.setByte("mode", (byte) mode.ordinal()); return tag; } @@ -157,6 +172,7 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< aBuf.writeLong(uuid.getLeastSignificantBits()); aBuf.writeLong(uuid.getMostSignificantBits()); } + aBuf.writeByte(mode.ordinal()); } @Override @@ -166,6 +182,7 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< if (tag.hasKey("uuid")) { uuid = UUID.fromString(tag.getString("uuid")); } + mode = GateMode.values()[tag.getByte("mode")]; } @Nonnull @@ -175,6 +192,7 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< if (aBuf.readBoolean()) { uuid = new UUID(aBuf.readLong(), aBuf.readLong()); } + mode = GateMode.values()[aBuf.readByte()]; return this; } @@ -192,6 +210,7 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< private static final int startY = 25; private static final int spaceX = 18; private static final int spaceY = 18; + private static final int gateModeButtonIdStart = 1; private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png"; @@ -206,6 +225,15 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< frequencyBox = new GT_Cover_AdvancedRedstoneReceiverBase.GUI.GT_GuiShortTextBox(this, 0, startX, startY + 2, spaceX * 5 - 3, 12); privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); + + new GT_GuiIconButton(this, gateModeButtonIdStart + 0, startX + spaceX * 0, startY + spaceY * 2, GT_GuiIcon.AND_GATE) + .setTooltipText(GT_Utility.trans("006", "AND Gate")); + new GT_GuiIconButton(this, gateModeButtonIdStart + 1, startX + spaceX * 1, startY + spaceY * 2, GT_GuiIcon.NAND_GATE) + .setTooltipText(GT_Utility.trans("006", "NAND Gate")); + new GT_GuiIconButton(this, gateModeButtonIdStart + 2, startX + spaceX * 2, startY + spaceY * 2, GT_GuiIcon.OR_GATE) + .setTooltipText(GT_Utility.trans("006", "OR Gate")); + new GT_GuiIconButton(this, gateModeButtonIdStart + 3, startX + spaceX * 3, startY + spaceY * 2, GT_GuiIcon.NOR_GATE) + .setTooltipText(GT_Utility.trans("006", "NOR Gate")); } @Override @@ -218,9 +246,14 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< textColor); this.getFontRenderer().drawString( GT_Utility.trans("601", "Use Private Frequency"), - startX + spaceX, + startX + spaceX * 5, startY + spaceY * 1 + 4, textColor); + this.getFontRenderer().drawString( + GT_Utility.trans("601", "Gate Mode"), + startX + spaceX * 5, + startY + spaceY * 2 + 4, + textColor); } @Override @@ -263,12 +296,23 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< private void update() { privateButton.setChecked(coverVariable.uuid != null); resetTextBox(frequencyBox); + updateButtons(); + } + + private void updateButtons() { + GuiButton button; + for (int i = gateModeButtonIdStart; i < gateModeButtonIdStart + 4; ++i) { + button = (GuiButton) this.buttonList.get(i); + button.enabled = (button.id - gateModeButtonIdStart) != coverVariable.mode.ordinal(); + } } @Override public void buttonClicked(GuiButton btn) { if (btn == privateButton) { coverVariable.uuid = coverVariable.uuid == null ? Minecraft.getMinecraft().thePlayer.getUniqueID() : null; + } else if (btn.enabled) { + coverVariable.mode = GateMode.values()[btn.id - gateModeButtonIdStart]; } GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); 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 bedb878295..a8601b15d0 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 @@ -13,7 +13,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())); + GregTech_API.getAdvancedRedstone(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 7a4d498059..ea766e9e89 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 @@ -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()); + return GregTech_API.getAdvancedRedstone(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), aCoverVariable.getGateMode()); } } diff --git a/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png b/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png index ce0652d14a..255bdc2aab 100644 Binary files a/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png and b/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png differ -- cgit From 9a2195ecd420e52e241440d091e59572210e3fb3 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 03:35:49 +0200 Subject: Call reset on server instead of client, and only when something actually changed --- .../redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') 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 7e5232c59b..ade9e2fb80 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 @@ -26,6 +26,7 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import javax.annotation.Nonnull; +import java.util.Objects; import java.util.UUID; public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBase { @@ -180,12 +181,21 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa @Nonnull @Override public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { + int oldFrequency = frequency; + UUID oldUuid = uuid; + boolean oldInvert = invert; + frequency = aBuf.readInt(); if (aBuf.readBoolean()) { uuid = new UUID(aBuf.readLong(), aBuf.readLong()); } invert = aBuf.readBoolean(); + if (oldFrequency != frequency || !Objects.equals(oldUuid, uuid) || oldInvert != invert) { + GregTech_API.resetAdvancedRedstoneFrequency(uuid, frequency); + GregTech_API.resetAdvancedRedstoneFrequency(oldUuid, oldFrequency); + } + return this; } } @@ -284,7 +294,6 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa privateButton.setChecked(coverVariable.uuid != null); invertButton.setChecked(coverVariable.invert); resetTextBox(frequencyBox); - GregTech_API.resetAdvancedRedstoneFrequency(coverVariable.uuid, coverVariable.frequency); } @Override -- cgit From 941235269fef3e6fb72ffc860b5b0f0c78e8d8ed Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 03:48:01 +0200 Subject: Remove unnecessary reset on receiver removal --- .../covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java | 8 -------- 1 file changed, 8 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index 8befcbfd52..2ecff83189 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -45,14 +45,6 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< return createDataObject(); } - @Override - public boolean onCoverRemovalImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, - boolean aForced) { - long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); - GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency, hash); - return true; - } - @Override public boolean letsEnergyInImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { return true; -- cgit From 594b87668a456fb4483a8bf1fa3743763950477b Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 04:18:40 +0200 Subject: Make abstract wireless base --- .../GT_Cover_AdvancedRedstoneReceiverBase.java | 185 +++----------------- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 183 +++----------------- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 192 +++++++++++++++++++++ .../common/covers/redstone/IWirelessObject.java | 14 ++ 4 files changed, 250 insertions(+), 324 deletions(-) create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java create mode 100644 src/main/java/gregtech/common/covers/redstone/IWirelessObject.java (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index 2ecff83189..5eba8a7a85 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -1,35 +1,24 @@ 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; import gregtech.api.gui.widgets.GT_GuiIconButton; -import gregtech.api.gui.widgets.GT_GuiIconCheckButton; -import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; -import gregtech.api.interfaces.IGuiScreen; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; -import gregtech.api.net.GT_Packet_TileEntityCoverNew; -import gregtech.api.util.GT_CoverBehaviorBase; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; import javax.annotation.Nonnull; import java.util.UUID; -public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase { +public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_AdvancedWirelessRedstoneBase { public GT_Cover_AdvancedRedstoneReceiverBase(ITexture coverTexture) { super(ReceiverData.class, coverTexture); @@ -45,58 +34,19 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< return createDataObject(); } - @Override - public boolean letsEnergyInImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsEnergyOutImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsFluidInImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsFluidOutImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsItemsInImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, int aSlot, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsItemsOutImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, int aSlot, ICoverable aTileEntity) { - return true; - } - @Override public String getDescriptionImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { return GT_Utility.trans("081", "Frequency: ") + aCoverVariable.frequency + ", Transmission: " + (aCoverVariable.uuid == null ? "Public" : "Private"); } - @Override - public int getTickRateImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { - return 5; - } - /** * GUI Stuff */ - @Override - public boolean hasCoverGUI() { - return true; - } @Override public Object getClientGUIImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) { - return new GT_Cover_AdvancedRedstoneReceiverBase.GUI(aSide, aCoverID, aCoverVariable, aTileEntity); + return new ReceiverGUI(aSide, aCoverID, aCoverVariable, aTileEntity); } public enum GateMode { @@ -106,7 +56,7 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< NOR } - public static class ReceiverData implements ISerializableObject { + public static class ReceiverData implements IWirelessObject { private int frequency; /** @@ -125,14 +75,26 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< this(0, null, GateMode.AND); } + @Override public UUID getUuid() { return uuid; } + @Override + public void setFrequency(int frequency) { + this.frequency = frequency; + } + + @Override public int getFrequency() { return frequency; } + @Override + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + public GateMode getGateMode() { return mode; } @@ -190,33 +152,12 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< } } - private class GUI extends GT_GUICover { + private class ReceiverGUI extends WirelessGUI { - private final byte side; - private final int coverID; - private final GT_GuiIntegerTextBox frequencyBox; - private final GT_GuiIconCheckButton privateButton; - private final ReceiverData coverVariable; - - private static final int startX = 10; - private static final int startY = 25; - private static final int spaceX = 18; - private static final int spaceY = 18; private static final int gateModeButtonIdStart = 1; - private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png"; - - private final int textColor = this.getTextColorOrDefault("text", 0xFF555555); - - public GUI(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { - super(aTileEntity, 250, 107, GT_Utility.intToStack(aCoverID)); - this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); - this.side = aSide; - this.coverID = aCoverID; - this.coverVariable = aCoverVariable; - - frequencyBox = new GT_Cover_AdvancedRedstoneReceiverBase.GUI.GT_GuiShortTextBox(this, 0, startX, startY + 2, spaceX * 5 - 3, 12); - privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); + public ReceiverGUI(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + super(aSide, aCoverID, aCoverVariable, aTileEntity); new GT_GuiIconButton(this, gateModeButtonIdStart + 0, startX + spaceX * 0, startY + spaceY * 2, GT_GuiIcon.AND_GATE) .setTooltipText(GT_Utility.trans("006", "AND Gate")); @@ -249,45 +190,8 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< } @Override - protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { - update(); - frequencyBox.setFocused(true); - } - - @Override - public void onMouseWheel(int x, int y, int delta) { - if (frequencyBox.isFocused()) { - long step = Math.max(1, Math.abs(delta / 120)); - step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); - - long frequency = parseTextBox(frequencyBox) + step; - if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; - - frequencyBox.setText(Long.toString(frequency)); - } - } - - @Override - public void applyTextBox(GT_GuiIntegerTextBox box) { - if (box == frequencyBox) { - coverVariable.frequency = parseTextBox(frequencyBox); - } - - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); - update(); - } - - @Override - public void resetTextBox(GT_GuiIntegerTextBox box) { - if (box == frequencyBox) { - frequencyBox.setText(Integer.toString(coverVariable.frequency)); - } - } - - private void update() { - privateButton.setChecked(coverVariable.uuid != null); - resetTextBox(frequencyBox); + protected void update() { + super.update(); updateButtons(); } @@ -301,56 +205,11 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase< @Override public void buttonClicked(GuiButton btn) { - if (btn == privateButton) { - coverVariable.uuid = coverVariable.uuid == null ? Minecraft.getMinecraft().thePlayer.getUniqueID() : null; - } else if (btn.enabled) { + if (btn.enabled) { coverVariable.mode = GateMode.values()[btn.id - gateModeButtonIdStart]; } - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); - update(); - } - - private int parseTextBox(GT_GuiIntegerTextBox box) { - if (box == frequencyBox) { - String text = box.getText(); - if (text == null) { - return 0; - } - - long frequency; - try { - frequency = Long.parseLong(text.trim()); - } catch (NumberFormatException e) { - return 0; - } - - if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; - - return (int) frequency; - } - - throw new UnsupportedOperationException("Unknown text box: " + box); - } - - private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { - - public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { - super(gui, id, x, y, width, height); - } - - @Override - public boolean textboxKeyTyped(char c, int key) { - if (!super.textboxKeyTyped(c, key)) return false; - - String text = getText().trim(); - if (text.length() > 0) { - setText(String.valueOf(parseTextBox(this))); - } - - return true; - } + super.buttonClicked(btn); } } } 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 ade9e2fb80..71d3820b2f 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 @@ -2,34 +2,25 @@ 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; import gregtech.api.gui.widgets.GT_GuiIconCheckButton; -import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; -import gregtech.api.interfaces.IGuiScreen; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; -import gregtech.api.net.GT_Packet_TileEntityCoverNew; -import gregtech.api.util.GT_CoverBehaviorBase; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; import javax.annotation.Nonnull; import java.util.Objects; import java.util.UUID; -public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBase { +public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_AdvancedWirelessRedstoneBase { public GT_Cover_AdvancedRedstoneTransmitterBase(ITexture coverTexture) { super(TransmitterData.class, coverTexture); @@ -53,61 +44,22 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa return true; } - @Override - public boolean letsEnergyInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsEnergyOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsFluidInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsFluidOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsItemsInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, int aSlot, ICoverable aTileEntity) { - return true; - } - - @Override - public boolean letsItemsOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, int aSlot, ICoverable aTileEntity) { - return true; - } - @Override public String getDescriptionImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { return GT_Utility.trans("081", "Frequency: ") + aCoverVariable.frequency + ", Transmission: " + (aCoverVariable.uuid == null ? "Public" : "Private"); } - @Override - public int getTickRateImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { - return 5; - } - /** * GUI Stuff */ - @Override - public boolean hasCoverGUI() { - return true; - } @Override public Object getClientGUIImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) { - return new GT_Cover_AdvancedRedstoneTransmitterBase.GUI(aSide, aCoverID, aCoverVariable, aTileEntity); + return new TransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); } - public static class TransmitterData implements ISerializableObject { + public static class TransmitterData implements IWirelessObject { private int frequency; /** @@ -126,14 +78,26 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa this(0, null, false); } + @Override public UUID getUuid() { return uuid; } + @Override + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + @Override public int getFrequency() { return frequency; } + @Override + public void setFrequency(int frequency) { + this.frequency = frequency; + } + public boolean isInvert() { return invert; } @@ -200,36 +164,15 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa } } - private class GUI extends GT_GUICover { + private class TransmitterGUI extends WirelessGUI { - private final byte side; - private final int coverID; - private final GT_GuiIntegerTextBox frequencyBox; - private final GT_GuiIconCheckButton privateButton; private final GT_GuiIconCheckButton invertButton; - private final TransmitterData coverVariable; - - private static final int startX = 10; - private static final int startY = 25; - private static final int spaceX = 18; - private static final int spaceY = 18; private final String INVERTED = GT_Utility.trans("INVERTED", "Inverted"); private final String NORMAL = GT_Utility.trans("NORMAL", "Normal"); - private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png"; - - private final int textColor = this.getTextColorOrDefault("text", 0xFF555555); - - public GUI(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { - super(aTileEntity, 250, 107, GT_Utility.intToStack(aCoverID)); - this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); - this.side = aSide; - this.coverID = aCoverID; - this.coverVariable = aCoverVariable; - - frequencyBox = new GT_Cover_AdvancedRedstoneTransmitterBase.GUI.GT_GuiShortTextBox(this, 0, startX, startY + 2, spaceX * 5 - 3, 12); - privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); + public TransmitterGUI(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + super(aSide, aCoverID, aCoverVariable, aTileEntity); invertButton = new GT_GuiIconCheckButton(this, 1, startX, startY + spaceY * 2, GT_GuiIcon.REDSTONE_ON, GT_GuiIcon.REDSTONE_OFF, INVERTED, NORMAL); } @@ -254,100 +197,18 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa } @Override - protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { - update(); - frequencyBox.setFocused(true); - } - - @Override - public void onMouseWheel(int x, int y, int delta) { - if (frequencyBox.isFocused()) { - long step = Math.max(1, Math.abs(delta / 120)); - step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); - - long frequency = parseTextBox(frequencyBox) + step; - if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; - - frequencyBox.setText(Long.toString(frequency)); - } - } - - @Override - public void applyTextBox(GT_GuiIntegerTextBox box) { - if (box == frequencyBox) { - coverVariable.frequency = parseTextBox(frequencyBox); - } - - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); - update(); - } - - @Override - public void resetTextBox(GT_GuiIntegerTextBox box) { - if (box == frequencyBox) { - frequencyBox.setText(Integer.toString(coverVariable.frequency)); - } - } - - private void update() { - privateButton.setChecked(coverVariable.uuid != null); + protected void update() { + super.update(); invertButton.setChecked(coverVariable.invert); - resetTextBox(frequencyBox); } @Override public void buttonClicked(GuiButton btn) { - if (btn == privateButton) { - coverVariable.uuid = coverVariable.uuid == null ? Minecraft.getMinecraft().thePlayer.getUniqueID() : null; - } else if (btn == invertButton) { + if (btn == invertButton) { coverVariable.invert = !coverVariable.invert; } - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); - update(); - } - - private int parseTextBox(GT_GuiIntegerTextBox box) { - if (box == frequencyBox) { - String text = box.getText(); - if (text == null) { - return 0; - } - - long frequency; - try { - frequency = Long.parseLong(text.trim()); - } catch (NumberFormatException e) { - return 0; - } - - if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; - - return (int) frequency; - } - - throw new UnsupportedOperationException("Unknown text box: " + box); - } - - private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { - - public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { - super(gui, id, x, y, width, height); - } - - @Override - public boolean textboxKeyTyped(char c, int key) { - if (!super.textboxKeyTyped(c, key)) return false; - - String text = getText().trim(); - if (text.length() > 0) { - setText(String.valueOf(parseTextBox(this))); - } - - return true; - } + super.buttonClicked(btn); } } } 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 new file mode 100644 index 0000000000..10e63d1ad3 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java @@ -0,0 +1,192 @@ +package gregtech.common.covers.redstone; + +import gregtech.api.enums.GT_Values; +import gregtech.api.gui.GT_GUICover; +import gregtech.api.gui.widgets.GT_GuiIcon; +import gregtech.api.gui.widgets.GT_GuiIconCheckButton; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; +import gregtech.api.interfaces.IGuiScreen; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.net.GT_Packet_TileEntityCoverNew; +import gregtech.api.util.GT_CoverBehaviorBase; +import gregtech.api.util.GT_Utility; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.Fluid; + +public abstract class GT_Cover_AdvancedWirelessRedstoneBase extends GT_CoverBehaviorBase { + + public GT_Cover_AdvancedWirelessRedstoneBase(Class typeToken, ITexture coverTexture) { + super(typeToken, coverTexture); + } + + @Override + public boolean letsEnergyInImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsEnergyOutImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsFluidInImpl(byte aSide, int aCoverID, T aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsFluidOutImpl(byte aSide, int aCoverID, T aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsItemsInImpl(byte aSide, int aCoverID, T aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsItemsOutImpl(byte aSide, int aCoverID, T aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public int getTickRateImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) { + return 5; + } + + /** + * GUI Stuff + */ + @Override + public boolean hasCoverGUI() { + return true; + } + + protected abstract class WirelessGUI extends GT_GUICover { + + protected final byte side; + protected final int coverID; + protected final GT_GuiIntegerTextBox frequencyBox; + protected final GT_GuiIconCheckButton privateButton; + protected final T coverVariable; + + protected static final int startX = 10; + protected static final int startY = 25; + protected static final int spaceX = 18; + protected static final int spaceY = 18; + + protected final int textColor = this.getTextColorOrDefault("text", 0xFF555555); + + private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png"; + + public WirelessGUI(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) { + super(aTileEntity, 250, 107, GT_Utility.intToStack(aCoverID)); + this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); + this.side = aSide; + this.coverID = aCoverID; + this.coverVariable = aCoverVariable; + + frequencyBox = new WirelessGUI.GT_GuiShortTextBox(this, 0, startX, startY + 2, spaceX * 5 - 3, 12); + privateButton = new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + update(); + frequencyBox.setFocused(true); + } + + @Override + public void onMouseWheel(int x, int y, int delta) { + if (frequencyBox.isFocused()) { + long step = Math.max(1, Math.abs(delta / 120)); + step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); + + long frequency = parseTextBox(frequencyBox) + step; + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + frequencyBox.setText(Long.toString(frequency)); + } + } + + @Override + public void applyTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + coverVariable.setFrequency(parseTextBox(frequencyBox)); + } + + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); + update(); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + frequencyBox.setText(Integer.toString(coverVariable.getFrequency())); + } + } + + protected void update() { + privateButton.setChecked(coverVariable.getUuid() != null); + resetTextBox(frequencyBox); + } + + @Override + public void buttonClicked(GuiButton btn) { + if (btn == privateButton) { + coverVariable.setUuid( + coverVariable.getUuid() == null ? Minecraft.getMinecraft().thePlayer.getUniqueID() : null + ); + } + + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); + update(); + } + + private int parseTextBox(GT_GuiIntegerTextBox box) { + if (box == frequencyBox) { + String text = box.getText(); + if (text == null) { + return 0; + } + + long frequency; + try { + frequency = Long.parseLong(text.trim()); + } catch (NumberFormatException e) { + return 0; + } + + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + return (int) frequency; + } + + throw new UnsupportedOperationException("Unknown text box: " + box); + } + + private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { + + public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { + super(gui, id, x, y, width, height); + } + + @Override + public boolean textboxKeyTyped(char c, int key) { + if (!super.textboxKeyTyped(c, key)) return false; + + String text = getText().trim(); + if (text.length() > 0) { + setText(String.valueOf(parseTextBox(this))); + } + + return true; + } + } + } +} diff --git a/src/main/java/gregtech/common/covers/redstone/IWirelessObject.java b/src/main/java/gregtech/common/covers/redstone/IWirelessObject.java new file mode 100644 index 0000000000..e975a9587e --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/IWirelessObject.java @@ -0,0 +1,14 @@ +package gregtech.common.covers.redstone; + +import gregtech.api.util.ISerializableObject; + +import java.util.UUID; + +public interface IWirelessObject extends ISerializableObject { + + int getFrequency(); + void setFrequency(int frequency); + + UUID getUuid(); + void setUuid(UUID uuid); +} -- cgit From 5c8bdf8dd74464a9de69b1a7c5fed6aaea566a55 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 04:53:08 +0200 Subject: Make also WirelessData abstract --- .../GT_Cover_AdvancedRedstoneReceiverBase.java | 59 +++----------- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 77 +++++------------- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 94 +++++++++++++++++++--- .../common/covers/redstone/IWirelessObject.java | 14 ---- 4 files changed, 110 insertions(+), 134 deletions(-) delete mode 100644 src/main/java/gregtech/common/covers/redstone/IWirelessObject.java (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index 5eba8a7a85..ade97ed25d 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -56,18 +56,11 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv NOR } - public static class ReceiverData implements IWirelessObject { - private int frequency; - - /** - * If UUID is set to null, the cover frequency is public, rather than private - **/ - private UUID uuid; + public static class ReceiverData extends GT_Cover_AdvancedWirelessRedstoneBase.WirelessData { private GateMode mode; public ReceiverData(int frequency, UUID uuid, GateMode mode) { - this.frequency = frequency; - this.uuid = uuid; + super(frequency, uuid); this.mode = mode; } @@ -75,26 +68,6 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv this(0, null, GateMode.AND); } - @Override - public UUID getUuid() { - return uuid; - } - - @Override - public void setFrequency(int frequency) { - this.frequency = frequency; - } - - @Override - public int getFrequency() { - return frequency; - } - - @Override - public void setUuid(UUID uuid) { - this.uuid = uuid; - } - public GateMode getGateMode() { return mode; } @@ -108,11 +81,7 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv @Nonnull @Override public NBTBase saveDataToNBT() { - NBTTagCompound tag = new NBTTagCompound(); - tag.setInteger("frequency", frequency); - if (uuid != null) { - tag.setString("uuid", uuid.toString()); - } + NBTTagCompound tag = (NBTTagCompound) super.saveDataToNBT(); tag.setByte("mode", (byte) mode.ordinal()); return tag; @@ -120,39 +89,29 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv @Override public void writeToByteBuf(ByteBuf aBuf) { - aBuf.writeInt(frequency); - aBuf.writeBoolean(uuid != null); - if (uuid != null) { - aBuf.writeLong(uuid.getLeastSignificantBits()); - aBuf.writeLong(uuid.getMostSignificantBits()); - } + super.writeToByteBuf(aBuf); aBuf.writeByte(mode.ordinal()); } @Override public void loadDataFromNBT(NBTBase aNBT) { + super.loadDataFromNBT(aNBT); + NBTTagCompound tag = (NBTTagCompound) aNBT; - frequency = tag.getInteger("frequency"); - if (tag.hasKey("uuid")) { - uuid = UUID.fromString(tag.getString("uuid")); - } mode = GateMode.values()[tag.getByte("mode")]; } @Nonnull @Override public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { - frequency = aBuf.readInt(); - if (aBuf.readBoolean()) { - uuid = new UUID(aBuf.readLong(), aBuf.readLong()); - } + super.readFromPacket(aBuf, aPlayer); mode = GateMode.values()[aBuf.readByte()]; return this; } } - private class ReceiverGUI extends WirelessGUI { + private class ReceiverGUI extends WirelessGUI { private static final int gateModeButtonIdStart = 1; @@ -205,7 +164,7 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv @Override public void buttonClicked(GuiButton btn) { - if (btn.enabled) { + if (btn.id >= gateModeButtonIdStart && btn.enabled) { coverVariable.mode = GateMode.values()[btn.id - gateModeButtonIdStart]; } 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 71d3820b2f..e5f615e329 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 @@ -49,28 +49,11 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ return GT_Utility.trans("081", "Frequency: ") + aCoverVariable.frequency + ", Transmission: " + (aCoverVariable.uuid == null ? "Public" : "Private"); } - /** - * GUI Stuff - */ - - @Override - public Object getClientGUIImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, - EntityPlayer aPlayer, World aWorld) { - return new TransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); - } - - public static class TransmitterData implements IWirelessObject { - private int frequency; - - /** - * If UUID is set to null, the cover frequency is public, rather than private - **/ - private UUID uuid; + public static class TransmitterData extends GT_Cover_AdvancedWirelessRedstoneBase.WirelessData { private boolean invert; public TransmitterData(int frequency, UUID uuid, boolean invert) { - this.frequency = frequency; - this.uuid = uuid; + super(frequency, uuid); this.invert = invert; } @@ -78,26 +61,6 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ this(0, null, false); } - @Override - public UUID getUuid() { - return uuid; - } - - @Override - public void setUuid(UUID uuid) { - this.uuid = uuid; - } - - @Override - public int getFrequency() { - return frequency; - } - - @Override - public void setFrequency(int frequency) { - this.frequency = frequency; - } - public boolean isInvert() { return invert; } @@ -111,11 +74,7 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ @Nonnull @Override public NBTBase saveDataToNBT() { - NBTTagCompound tag = new NBTTagCompound(); - tag.setInteger("frequency", frequency); - if (uuid != null) { - tag.setString("uuid", uuid.toString()); - } + NBTTagCompound tag = (NBTTagCompound) super.saveDataToNBT(); tag.setBoolean("invert", invert); return tag; @@ -123,22 +82,15 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ @Override public void writeToByteBuf(ByteBuf aBuf) { - aBuf.writeInt(frequency); - aBuf.writeBoolean(uuid != null); - if (uuid != null) { - aBuf.writeLong(uuid.getLeastSignificantBits()); - aBuf.writeLong(uuid.getMostSignificantBits()); - } + super.writeToByteBuf(aBuf); aBuf.writeBoolean(invert); } @Override public void loadDataFromNBT(NBTBase aNBT) { + super.loadDataFromNBT(aNBT); + NBTTagCompound tag = (NBTTagCompound) aNBT; - frequency = tag.getInteger("frequency"); - if (tag.hasKey("uuid")) { - uuid = UUID.fromString(tag.getString("uuid")); - } invert = tag.getBoolean("invert"); } @@ -149,10 +101,7 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ UUID oldUuid = uuid; boolean oldInvert = invert; - frequency = aBuf.readInt(); - if (aBuf.readBoolean()) { - uuid = new UUID(aBuf.readLong(), aBuf.readLong()); - } + super.readFromPacket(aBuf, aPlayer); invert = aBuf.readBoolean(); if (oldFrequency != frequency || !Objects.equals(oldUuid, uuid) || oldInvert != invert) { @@ -164,7 +113,17 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ } } - private class TransmitterGUI extends WirelessGUI { + /** + * GUI Stuff + */ + + @Override + public Object getClientGUIImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, + EntityPlayer aPlayer, World aWorld) { + return new TransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); + } + + private class TransmitterGUI extends WirelessGUI { private final GT_GuiIconCheckButton invertButton; 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 10e63d1ad3..08fa5356c2 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,5 +1,6 @@ package gregtech.common.covers.redstone; +import com.google.common.io.ByteArrayDataInput; import gregtech.api.enums.GT_Values; import gregtech.api.gui.GT_GUICover; import gregtech.api.gui.widgets.GT_GuiIcon; @@ -11,12 +12,20 @@ import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.net.GT_Packet_TileEntityCoverNew; import gregtech.api.util.GT_CoverBehaviorBase; import gregtech.api.util.GT_Utility; +import gregtech.api.util.ISerializableObject; +import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; -public abstract class GT_Cover_AdvancedWirelessRedstoneBase extends GT_CoverBehaviorBase { +import javax.annotation.Nonnull; +import java.util.UUID; + +public abstract class GT_Cover_AdvancedWirelessRedstoneBase extends GT_CoverBehaviorBase { public GT_Cover_AdvancedWirelessRedstoneBase(Class typeToken, ITexture coverTexture) { super(typeToken, coverTexture); @@ -57,6 +66,71 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase extends GT_GUICover { protected final byte side; protected final int coverID; protected final GT_GuiIntegerTextBox frequencyBox; protected final GT_GuiIconCheckButton privateButton; - protected final T coverVariable; + protected final X coverVariable; protected static final int startX = 10; protected static final int startY = 25; @@ -82,14 +156,14 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase Date: Wed, 21 Sep 2022 14:00:15 +0200 Subject: Implement `onBaseTEDestroyed` hook for covers --- .../java/gregtech/api/metatileentity/BaseMetaPipeEntity.java | 2 ++ .../java/gregtech/api/metatileentity/BaseMetaTileEntity.java | 2 ++ .../java/gregtech/api/metatileentity/CoverableTileEntity.java | 8 ++++++++ .../gregtech/api/multitileentity/base/BaseMultiTileEntity.java | 2 ++ src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java | 10 ++++++++++ 5 files changed, 24 insertions(+) (limited to 'src') diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java index 0fdaa90c1a..7c75bb97d4 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java @@ -776,6 +776,8 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity if (hasCover) tNBT.setIntArray("mCoverSides", mCoverSides); if (hasValidMetaTileEntity()) mMetaTileEntity.setItemNBT(tNBT); if (!tNBT.hasNoTags()) rStack.setTagCompound(tNBT); + + onBaseTEDestroyed(); return new ArrayList<>(Collections.singletonList(rStack)); } diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index cdc81220e6..08ead9a946 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -1423,6 +1423,8 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity if (hasValidMetaTileEntity()) mMetaTileEntity.setItemNBT(tNBT); if (!tNBT.hasNoTags()) rStack.setTagCompound(tNBT); + + onBaseTEDestroyed(); return new ArrayList<>(Collections.singletonList(rStack)); } diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index caf3c1b15f..5958b515be 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -320,6 +320,14 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov return false; } + protected void onBaseTEDestroyed() { + for (byte side = 0; side < 6; ++side) { + GT_CoverBehaviorBase behavior = getCoverBehaviorAtSideNew(side); + if (behavior != GregTech_API.sNoBehavior) + behavior.onBaseTEDestroyed(side, getCoverIDAtSide(side), mCoverData[side], this); + } + } + @Override public void setOutputRedstoneSignal(byte aSide, byte aStrength) { aStrength = (byte) Math.min(Math.max(0, aStrength), 15); diff --git a/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java index 18dc310bb7..385ae310f1 100644 --- a/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java @@ -906,6 +906,8 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity final ArrayList rList = new ArrayList<>(); final MultiTileEntityRegistry tRegistry = MultiTileEntityRegistry.getRegistry(getMultiTileEntityRegistryID()); if (tRegistry != null) rList.add(tRegistry.getItem(getMultiTileEntityID(), writeItemNBT(new NBTTagCompound()))); + + onBaseTEDestroyed(); return rList; } diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java index efbff79957..e0879cda86 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java @@ -221,6 +221,14 @@ public abstract class GT_CoverBehaviorBase { return onCoverRemovalImpl(aSide, aCoverID, forceCast(aCoverVariable), aTileEntity, aForced); } + /** + * Called upon Base TE being destroyed (once getDrops is called), + * thus getting called only when destroyed in survival. + */ + public final void onBaseTEDestroyed(byte aSide, int aCoverID, ISerializableObject aCoverVariable, ICoverable aTileEntity) { + onBaseTEDestroyedImpl(aSide, aCoverID, forceCast(aCoverVariable), aTileEntity); + } + /** * Gives a small Text for the status of the Cover. */ @@ -412,6 +420,8 @@ public abstract class GT_CoverBehaviorBase { protected void onDroppedImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) {} + protected void onBaseTEDestroyedImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) {} + protected boolean isRedstoneSensitiveImpl( byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity, long aTimer) { return true; -- cgit From cc5a1189c04cfb7ccc0ae29d9e104c729ac8802b Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 14:15:12 +0200 Subject: Unregister signal also when TE is destroyed --- .../redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') 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 e5f615e329..0d95263fa3 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 @@ -36,14 +36,23 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ return createDataObject(); } + 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); + } + @Override public boolean onCoverRemovalImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, boolean aForced) { - long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); - GregTech_API.removeAdvancedRedstone(aCoverVariable.uuid, aCoverVariable.frequency, hash); + unregisterSignal(aSide, aCoverVariable, aTileEntity); return true; } + @Override + protected void onBaseTEDestroyedImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + unregisterSignal(aSide, aCoverVariable, aTileEntity); + } + @Override public String getDescriptionImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { return GT_Utility.trans("081", "Frequency: ") + aCoverVariable.frequency + ", Transmission: " + (aCoverVariable.uuid == null ? "Public" : "Private"); -- cgit From 44024669c0f76e7c8e453dd4cbd0f36aee409be9 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 15:00:05 +0200 Subject: Move advanced redstone API to Wireless Base --- src/main/java/gregtech/api/GregTech_API.java | 52 --------------------- .../GT_Cover_AdvancedRedstoneReceiverExternal.java | 3 +- .../GT_Cover_AdvancedRedstoneReceiverInternal.java | 4 +- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 6 +-- ..._Cover_AdvancedRedstoneTransmitterExternal.java | 2 +- ..._Cover_AdvancedRedstoneTransmitterInternal.java | 2 +- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 53 ++++++++++++++++++++++ 7 files changed, 61 insertions(+), 61 deletions(-) (limited to 'src') 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>> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); - public static Byte getAdvancedRedstone(UUID uuid, int frequency, GT_Cover_AdvancedRedstoneReceiverBase.GateMode mode) { - Map> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); - if (frequencies == null) return 0; - - Map 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> 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> 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> frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(String.valueOf(uuid), k -> new ConcurrentHashMap<>()); - Map 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 extends GT_CoverBehaviorBase { @@ -31,6 +34,56 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); + if (frequencies == null) return 0; + + Map 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> 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> 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> frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(String.valueOf(uuid), k -> new ConcurrentHashMap<>()); + Map 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; -- cgit From ea514748ca811464f65053c6742a1f047c4c0b43 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 15:02:35 +0200 Subject: Remove now unnecessary resetSignalAt --- .../redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 10 ---------- .../covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 6 ------ 2 files changed, 16 deletions(-) (limited to 'src') 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 8e4829463f..1ce64da189 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 @@ -17,7 +17,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import javax.annotation.Nonnull; -import java.util.Objects; import java.util.UUID; public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_AdvancedWirelessRedstoneBase { @@ -106,18 +105,9 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ @Nonnull @Override public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { - int oldFrequency = frequency; - UUID oldUuid = uuid; - boolean oldInvert = invert; - super.readFromPacket(aBuf, aPlayer); invert = aBuf.readBoolean(); - if (oldFrequency != frequency || !Objects.equals(oldUuid, uuid) || oldInvert != invert) { - resetSignalAt(uuid, frequency); - resetSignalAt(oldUuid, oldFrequency); - } - return this; } } 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 4267d4104d..9c226575b5 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 @@ -63,12 +63,6 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase> 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> frequencies = GregTech_API.sAdvancedWirelessRedstone.get(String.valueOf(uuid)); if (frequencies == null) return; -- cgit From 8e40992a129a70088bbfd12102c30919b1a045c0 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 15:18:24 +0200 Subject: Make TransmitterBase more abstract --- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 24 +++++++--------------- ..._Cover_AdvancedRedstoneTransmitterExternal.java | 14 +++++++++++-- ..._Cover_AdvancedRedstoneTransmitterInternal.java | 14 +++++++++++-- 3 files changed, 31 insertions(+), 21 deletions(-) (limited to 'src') 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 1ce64da189..2a3e3c0152 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 @@ -19,20 +19,10 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; import java.util.UUID; -public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_AdvancedWirelessRedstoneBase { +public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_AdvancedWirelessRedstoneBase { - public GT_Cover_AdvancedRedstoneTransmitterBase(ITexture coverTexture) { - super(TransmitterData.class, coverTexture); - } - - @Override - public TransmitterData createDataObject() { - return new TransmitterData(); - } - - @Override - public TransmitterData createDataObject(int aLegacyData) { - return createDataObject(); + public GT_Cover_AdvancedRedstoneTransmitterBase(Class typeToken, ITexture coverTexture) { + super(typeToken, coverTexture); } private static void unregisterSignal(byte aSide, TransmitterData aCoverVariable, ICoverable aTileEntity) { @@ -58,7 +48,7 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ } public static class TransmitterData extends GT_Cover_AdvancedWirelessRedstoneBase.WirelessData { - private boolean invert; + protected boolean invert; public TransmitterData(int frequency, UUID uuid, boolean invert) { super(frequency, uuid); @@ -119,17 +109,17 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_ @Override public Object getClientGUIImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) { - return new TransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); + return new TransmitterGUI<>(aSide, aCoverID, aCoverVariable, aTileEntity); } - private class TransmitterGUI extends WirelessGUI { + protected class TransmitterGUI extends WirelessGUI { private final GT_GuiIconCheckButton invertButton; private final String INVERTED = GT_Utility.trans("INVERTED", "Inverted"); private final String NORMAL = GT_Utility.trans("NORMAL", "Normal"); - public TransmitterGUI(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + public TransmitterGUI(byte aSide, int aCoverID, X aCoverVariable, ICoverable aTileEntity) { super(aSide, aCoverID, aCoverVariable, aTileEntity); invertButton = new GT_GuiIconCheckButton(this, 1, startX, startY + spaceY * 2, GT_GuiIcon.REDSTONE_ON, GT_GuiIcon.REDSTONE_OFF, INVERTED, NORMAL); } 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 84019efd61..fcfa133032 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 @@ -4,10 +4,20 @@ import gregtech.api.GregTech_API; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; -public class GT_Cover_AdvancedRedstoneTransmitterExternal extends GT_Cover_AdvancedRedstoneTransmitterBase { +public class GT_Cover_AdvancedRedstoneTransmitterExternal extends GT_Cover_AdvancedRedstoneTransmitterBase { public GT_Cover_AdvancedRedstoneTransmitterExternal(ITexture coverTexture) { - super(coverTexture); + super(TransmitterData.class, coverTexture); + } + + @Override + public TransmitterData createDataObject() { + return new TransmitterData(); + } + + @Override + public TransmitterData createDataObject(int aLegacyData) { + return createDataObject(); } @Override 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 1e50891d37..85ee8afafb 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 @@ -4,10 +4,20 @@ import gregtech.api.GregTech_API; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; -public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_AdvancedRedstoneTransmitterBase { +public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_AdvancedRedstoneTransmitterBase { public GT_Cover_AdvancedRedstoneTransmitterInternal(ITexture coverTexture) { - super(coverTexture); + super(TransmitterData.class, coverTexture); + } + + @Override + public TransmitterData createDataObject() { + return new TransmitterData(); + } + + @Override + public TransmitterData createDataObject(int aLegacyData) { + return createDataObject(); } @Override -- cgit From 5477f21d680b58f249e64d0946f59180878badda Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 16:30:57 +0200 Subject: Rearrange Transmitter GUI --- .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') 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 2a3e3c0152..ff6eaa191a 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 @@ -121,7 +121,7 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Wed, 21 Sep 2022 16:35:17 +0200 Subject: Add new cover items --- src/main/java/gregtech/api/enums/ItemList.java | 4 ++++ .../common/items/GT_MetaGenerated_Item_02.java | 25 +++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java index b8b457ad16..a6d93af7a3 100644 --- a/src/main/java/gregtech/api/enums/ItemList.java +++ b/src/main/java/gregtech/api/enums/ItemList.java @@ -1534,6 +1534,10 @@ public enum ItemList implements IItemContainer { Cover_AdvancedRedstoneReceiverExternal, Cover_AdvancedRedstoneReceiverInternal, + Cover_WirelessFluidDetector, + Cover_WirelessItemDetector, + Cover_WirelessNeedsMaintainance, + Cover_RedstoneTransmitterExternal, Cover_RedstoneTransmitterInternal, Cover_RedstoneReceiverExternal, diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index 53ed73ae5a..8b84219967 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -17,7 +17,6 @@ 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.common.covers.GT_Cover_RedstoneReceiverExternal; import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverExternal; import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverInternal; import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterExternal; @@ -2332,6 +2331,30 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + ItemList.Cover_WirelessFluidDetector.set(addItem( + tLastID = 581, + "Wireless Fluid Detector Cover", + "Transfers Fluid Amount as Redstone wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 1L))); + ItemList.Cover_ItemDetector.set(addItem( + tLastID = 582, + "Wireless Item Detector Cover", + "Transfers Item Amount as Redstone wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.TERRA, 1L))); + + ItemList.Cover_NeedsMaintainance.set(addItem( + tLastID = 583, + "Wireless Needs Maintenance Cover", + "Transfers Maintenance Issues as Redstone wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 4L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 3L))); + final ITexture redstoneTransmitterExternalCoverTexture = TextureFactory.of( TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), TextureFactory.builder() -- cgit From 2a42a1f018b0aa5a02bee5dc96b281ef38ea6a70 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 16:41:05 +0200 Subject: Move getDescription to parent class --- .../covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java | 5 ----- .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 5 ----- .../covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 5 +++++ 3 files changed, 5 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index ade97ed25d..07309a7495 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -34,11 +34,6 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv return createDataObject(); } - @Override - public String getDescriptionImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { - return GT_Utility.trans("081", "Frequency: ") + aCoverVariable.frequency + ", Transmission: " + (aCoverVariable.uuid == null ? "Public" : "Private"); - } - /** * GUI Stuff */ 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 ff6eaa191a..cdf80444dc 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 @@ -42,11 +42,6 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Wed, 21 Sep 2022 17:59:05 +0200 Subject: Make GUI more settled and configurable --- .../GT_Cover_AdvancedRedstoneReceiverBase.java | 12 +-------- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 22 ++++++---------- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 30 +++++++++++++++++++--- 3 files changed, 36 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index 07309a7495..a0aee5d908 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -126,20 +126,10 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv @Override public void drawExtras(int mouseX, int mouseY, float parTicks) { super.drawExtras(mouseX, mouseY, parTicks); - this.getFontRenderer().drawString( - GT_Utility.trans("246", "Frequency"), - startX + spaceX * 5, - 4 + startY, - textColor); - this.getFontRenderer().drawString( - GT_Utility.trans("601", "Use Private Frequency"), - startX + spaceX * 5, - startY + spaceY * 1 + 4, - textColor); this.getFontRenderer().drawString( GT_Utility.trans("601", "Gate Mode"), startX + spaceX * 5, - startY + spaceY * 2 + 4, + 4 + startY + spaceY * 2, textColor); } 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 cdf80444dc..e5880373c0 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 @@ -114,28 +114,22 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Wed, 21 Sep 2022 18:11:46 +0200 Subject: Make private text configurable --- .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 2 +- .../covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src') 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 e5880373c0..2a6a6d0916 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 @@ -115,7 +115,7 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Wed, 21 Sep 2022 18:38:58 +0200 Subject: Make screwdriver on transmitter swap between inverted and normal mode --- .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') 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 2a6a6d0916..65cf49b1a7 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 @@ -42,6 +42,14 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Wed, 21 Sep 2022 18:50:50 +0200 Subject: Add Wireless Fluid Detector Cover --- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 54 +++---- .../redstone/GT_Cover_WirelessFluidDetector.java | 171 +++++++++++++++++++++ .../common/items/GT_MetaGenerated_Item_02.java | 6 + 3 files changed, 204 insertions(+), 27 deletions(-) create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java (limited to 'src') 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 4ee53002e3..ccfc691545 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 @@ -191,7 +191,7 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase extends GT_GUICover { + protected abstract static class WirelessGUI extends GT_GUICover { protected final byte side; protected final int coverID; @@ -251,17 +251,21 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase 0 ? step : -step); + + long value = parseTextBox(box) + step; + if (value > maxValue) value = maxValue; + else if (value < minValue) value = minValue; + + box.setText(Long.toString(value)); + } + @Override public void onMouseWheel(int x, int y, int delta) { if (frequencyBox.isFocused()) { - long step = Math.max(1, Math.abs(delta / 120)); - step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); - - long frequency = parseTextBox(frequencyBox) + step; - if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; - - frequencyBox.setText(Long.toString(frequency)); + genericMouseWheel(frequencyBox, delta, Integer.MAX_VALUE, 0); } } @@ -297,27 +301,23 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; + protected int parseTextBox(GT_GuiIntegerTextBox box) { + String text = box.getText(); + if (text == null) { + return 0; + } - return (int) frequency; + long frequency; + try { + frequency = Long.parseLong(text.trim()); + } catch (NumberFormatException e) { + return 0; } - throw new UnsupportedOperationException("Unknown text box: " + box); + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + return (int) frequency; } private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java new file mode 100644 index 0000000000..f7b7444577 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java @@ -0,0 +1,171 @@ +package gregtech.common.covers.redstone; + +import com.google.common.io.ByteArrayDataInput; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.ISerializableObject; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.UUID; + +public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTransmitterBase { + + public GT_Cover_WirelessFluidDetector(ITexture coverTexture) { + super(FluidTransmitterData.class, coverTexture); + } + + @Override + public FluidTransmitterData createDataObject() { + return new FluidTransmitterData(); + } + + @Override + public FluidTransmitterData createDataObject(int aLegacyData) { + return createDataObject(); + } + + @Override + public FluidTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, + FluidTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + return aCoverVariable; + } + + @Override + public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + public static class FluidTransmitterData extends GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData { + private int threshold; + + public FluidTransmitterData(int frequency, UUID uuid, boolean invert, int threshold) { + super(frequency, uuid, invert); + this.threshold = threshold; + } + + public FluidTransmitterData() { + super(); + this.threshold = 0; + } + + @Nonnull + @Override + public ISerializableObject copy() { + return new FluidTransmitterData(frequency, uuid, invert, threshold); + } + + @Nonnull + @Override + public NBTBase saveDataToNBT() { + NBTTagCompound tag = (NBTTagCompound) super.saveDataToNBT(); + tag.setInteger("threshold", threshold); + + return tag; + } + + @Override + public void writeToByteBuf(ByteBuf aBuf) { + super.writeToByteBuf(aBuf); + aBuf.writeInt(threshold); + } + + @Override + public void loadDataFromNBT(NBTBase aNBT) { + super.loadDataFromNBT(aNBT); + + NBTTagCompound tag = (NBTTagCompound) aNBT; + threshold = tag.getInteger("threshold"); + } + + @Nonnull + @Override + public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { + super.readFromPacket(aBuf, aPlayer); + threshold = aBuf.readInt(); + + return this; + } + } + + /** + * GUI Stuff + */ + + @Override + public Object getClientGUIImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity, + EntityPlayer aPlayer, World aWorld) { + return new FluidTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); + } + + private class FluidTransmitterGUI extends TransmitterGUI { + private final GT_GuiIntegerTextBox thresholdBox; + + public FluidTransmitterGUI(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) { + super(aSide, aCoverID, aCoverVariable, aTileEntity, 1, 2); + + thresholdBox = new GT_GuiIntegerTextBox(this,1, 1 + startX, 2 + startY, spaceX * 5 - 4, 12); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.getFontRenderer().drawString( + GT_Utility.trans("222", "Fluid Threshold"), + startX + spaceX * 5, + 4 + startY, + textColor); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + update(); + thresholdBox.setFocused(true); + } + + @Override + public void onMouseWheel(int x, int y, int delta) { + super.onMouseWheel(x, y, delta); + if (thresholdBox.isFocused()) { + genericMouseWheel(thresholdBox, delta, Integer.MAX_VALUE, 0); + } + } + + @Override + public void applyTextBox(GT_GuiIntegerTextBox box) { + if (box == thresholdBox) { + coverVariable.threshold = parseTextBox(thresholdBox); + } + + super.applyTextBox(box); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + super.resetTextBox(box); + if (box == thresholdBox) { + thresholdBox.setText(Integer.toString(coverVariable.threshold)); + } + } + + @Override + protected void update() { + super.update(); + resetTextBox(thresholdBox); + } + } +} diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index 8b84219967..d4e97e7d55 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -21,6 +21,7 @@ import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverExternal import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverInternal; import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterExternal; import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterInternal; +import gregtech.common.covers.redstone.GT_Cover_WirelessFluidDetector; import gregtech.common.items.behaviors.Behaviour_Arrow; import net.minecraft.dispenser.IBlockSource; import net.minecraft.enchantment.Enchantment; @@ -2389,6 +2390,11 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), new GT_Cover_AdvancedRedstoneReceiverInternal(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + GregTech_API.registerCover( + ItemList.Cover_WirelessFluidDetector.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), + new GT_Cover_WirelessFluidDetector(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 0), new ItemStack(Items.dye, 2, 1)); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 1), new ItemStack(Items.dye, 2, 12)); -- cgit From 1f37e091b74e64eb4ff989f60de5924b8d4cb922 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Wed, 21 Sep 2022 21:23:33 +0200 Subject: Implement logic in Wireless Fluid Detector --- src/main/java/gregtech/api/util/GT_Utility.java | 6 ++ .../common/covers/GT_Cover_LiquidMeter.java | 72 ++++++++++------------ .../redstone/GT_Cover_WirelessFluidDetector.java | 7 +++ 3 files changed, 47 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 5898e5fd14..706694d6dd 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -4254,6 +4254,12 @@ public class GT_Utility { return Textures.BlockIcons.ERROR_TEXTURE_INDEX; } + public static byte convertRatioToRedstone(long value, long max) { + if (value <= 0) return 0; // Empty + if (value >= max) return 15; // Full + return (byte) (1 + (14 * value) / max); // Range 1-14 + } + @AutoValue public abstract static class ItemId { /** This method copies NBT, as it is mutable. */ diff --git a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java index ce795bdd09..7816e3dd48 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java @@ -53,58 +53,54 @@ public class GT_Cover_LiquidMeter extends GT_CoverBehaviorBase= tMax) { - // full - redstoneSignal = 15; - } else { - // 1-14 range - redstoneSignal = 1 + (14 * tUsed) / tMax; - } + byte signal = GT_Utility.convertRatioToRedstone(used, max); - if (aCoverVariable.inverted) { - redstoneSignal = 15 - redstoneSignal; + if (inverted) { + signal = (byte) (15 - signal); } - if (aCoverVariable.threshold > 0) { - if (aCoverVariable.inverted && tUsed >= aCoverVariable.threshold) { - redstoneSignal = 0; - } else if (!aCoverVariable.inverted && tUsed < aCoverVariable.threshold) { - redstoneSignal = 0; + if (threshold > 0) { + if (inverted && used >= threshold) { + return 0; + } else if (!inverted && used < threshold) { + return 0; } } - aTileEntity.setOutputRedstoneSignal(aSide, (byte) redstoneSignal); + return signal; } else { - aTileEntity.setOutputRedstoneSignal(aSide, (byte) 0); + return 0; } + } + + @Override + protected LiquidMeterData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + LiquidMeterData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { + byte signal = computeSignalBasedOnFluid(aTileEntity, aCoverVariable.inverted, aCoverVariable.threshold); + aTileEntity.setOutputRedstoneSignal(aSide, signal); + return aCoverVariable; } diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java index f7b7444577..163136cb45 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java @@ -1,11 +1,13 @@ package gregtech.common.covers.redstone; import com.google.common.io.ByteArrayDataInput; +import gregtech.api.GregTech_API; import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; +import gregtech.common.covers.GT_Cover_LiquidMeter; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -35,6 +37,10 @@ public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTra @Override public FluidTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + byte signal = GT_Cover_LiquidMeter.computeSignalBasedOnFluid(aTileEntity, aCoverVariable.invert, aCoverVariable.threshold); + long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); + setSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, signal); + return aCoverVariable; } @@ -51,6 +57,7 @@ public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTra } public static class FluidTransmitterData extends GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData { + /** The special value {@code 0} means threshold check is disabled. */ private int threshold; public FluidTransmitterData(int frequency, UUID uuid, boolean invert, int threshold) { -- cgit From c3b4beadd1bb0c3f7f6cb1c94352f0d86f95c248 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 01:29:55 +0200 Subject: Add more abstract `genericMouseWheel` --- .../covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') 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 ccfc691545..8402d1e793 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 @@ -251,9 +251,10 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase 0 ? step : -step); + step = (isShiftKeyDown() ? shiftStep : isCtrlKeyDown() ? ctrlStep : baseStep) * (delta > 0 ? step : -step); long value = parseTextBox(box) + step; if (value > maxValue) value = maxValue; @@ -262,6 +263,10 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase Date: Thu, 22 Sep 2022 01:45:41 +0200 Subject: Swap min, max --- .../covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 8 ++++---- .../common/covers/redstone/GT_Cover_WirelessFluidDetector.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') 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 8402d1e793..6fd4ab7339 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 @@ -251,7 +251,7 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase 0 ? step : -step); @@ -263,14 +263,14 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase Date: Thu, 22 Sep 2022 02:01:39 +0200 Subject: Make `parseTextBox` and `GT_GuiShortTextBox` more abstract --- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 34 +++++++++++++++------- .../redstone/GT_Cover_WirelessFluidDetector.java | 2 +- 2 files changed, 24 insertions(+), 12 deletions(-) (limited to 'src') 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 6fd4ab7339..1633b2f05e 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 @@ -256,7 +256,7 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase 0 ? step : -step); - long value = parseTextBox(box) + step; + long value = parseTextBox(box, minValue, maxValue) + step; if (value > maxValue) value = maxValue; else if (value < minValue) value = minValue; @@ -306,29 +306,41 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; - - return (int) frequency; + if (value >= max) return max; + else if (value < min) return min; + return (int) value; + } + + protected int parseTextBox(GT_GuiIntegerTextBox box) { + return parseTextBox(box, 0, Integer.MAX_VALUE); } - private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { + protected class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { - public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { + private final int min; + private final int max; + + public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height, int min, int max) { super(gui, id, x, y, width, height); + this.min = min; + this.max = max; + } + + public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { + this(gui, id, x, y, width, height, 0, Integer.MAX_VALUE); } @Override @@ -337,7 +349,7 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase 0) { - setText(String.valueOf(parseTextBox(this))); + setText(String.valueOf(parseTextBox(this, min, max))); } return true; diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java index ea86b79043..8985f24259 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java @@ -125,7 +125,7 @@ public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTra public FluidTransmitterGUI(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) { super(aSide, aCoverID, aCoverVariable, aTileEntity, 1, 2); - thresholdBox = new GT_GuiIntegerTextBox(this,1, 1 + startX, 2 + startY, spaceX * 5 - 4, 12); + thresholdBox = new GT_GuiShortTextBox(this,1, 1 + startX, 2 + startY, spaceX * 5 - 4, 12); } @Override -- cgit From a579d5eefc4af9cdb6f83fdd3ab8e16ed569633b Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 02:43:17 +0200 Subject: Make `GT_GuiShortTextBox` able to map values to different display strings --- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 27 ++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'src') 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 1633b2f05e..2e73ae2094 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 @@ -24,9 +24,11 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; import javax.annotation.Nonnull; +import java.util.HashMap; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; public abstract class GT_Cover_AdvancedWirelessRedstoneBase extends GT_CoverBehaviorBase { @@ -323,7 +325,7 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase translation; + private final Map inverseTranslation; - public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height, int min, int max) { + public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height, int min, int max, + Map translate) { super(gui, id, x, y, width, height); this.min = min; this.max = max; + this.translation = translate; + this.inverseTranslation = translate.entrySet().stream() + .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey)); + } + + public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height, int min, int max) { + this(gui, id, x, y, width, height, min, max, new HashMap<>()); } public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) { @@ -354,6 +366,17 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase Date: Thu, 22 Sep 2022 03:04:28 +0200 Subject: Abstract `computeSignalBasedOnItems` --- .../gregtech/common/covers/GT_Cover_ItemMeter.java | 82 ++++++++++------------ 1 file changed, 38 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java index 82dffaf7a8..953318c455 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java @@ -73,67 +73,61 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase 1 && inv[1] != null) tUsed = inv[1].stackSize; + if (inv != null && inv.length > 1 && inv[1] != null) used = inv[1].stackSize; } else if (GregTech_API.mAE2 && mte instanceof GT_MetaTileEntity_Hatch_OutputBus_ME) { if (((GT_MetaTileEntity_Hatch_OutputBus_ME) mte).isLastOutputFailed()) { - tMax = 64; - tUsed = 64; + max = 64; + used = 64; } } else { - int[] tSlots = aCoverVariable.slot >= 0 - ? new int[] {aCoverVariable.slot} - : aTileEntity.getAccessibleSlotsFromSide(aSide); - - for (int i : tSlots) { - if (i >= 0 && i < aTileEntity.getSizeInventory()) { - tMax += 64; - ItemStack tStack = aTileEntity.getStackInSlot(i); - if (tStack != null) tUsed += (tStack.stackSize << 6) / tStack.getMaxStackSize(); + int[] slots = slot >= 0 ? new int[] {slot} : tileEntity.getAccessibleSlotsFromSide(side); + + for (int i : slots) { + if (i >= 0 && i < tileEntity.getSizeInventory()) { + max += 64; + ItemStack stack = tileEntity.getStackInSlot(i); + if (stack != null) used += ((long) stack.stackSize << 6) / stack.getMaxStackSize(); } } } - long redstoneSignal; - if (tUsed == 0L) { - // nothing - redstoneSignal = 0; - } else if (tUsed >= tMax) { - // full - redstoneSignal = 15; - } else { - // 1-14 range - redstoneSignal = 1 + (14 * tUsed) / tMax; - } + byte signal = GT_Utility.convertRatioToRedstone(used, max); - if (aCoverVariable.inverted) { - redstoneSignal = 15 - redstoneSignal; + if (inverted) { + signal = (byte) (15 - signal); } - if (aCoverVariable.threshold > 0) { - if (aCoverVariable.inverted && tUsed >= aCoverVariable.threshold) { - redstoneSignal = 0; - } else if (!aCoverVariable.inverted && tUsed < aCoverVariable.threshold) { - redstoneSignal = 0; + if (threshold > 0) { + if (inverted && used >= threshold) { + return 0; + } else if (!inverted && used < threshold) { + return 0; } } + + return signal; + } + + @Override + protected ItemMeterData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + ItemMeterData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { + byte signal = computeSignalBasedOnItems(aTileEntity, aCoverVariable.inverted, aCoverVariable.threshold, aCoverVariable.slot, aSide); + aTileEntity.setOutputRedstoneSignal(aSide, signal); - aTileEntity.setOutputRedstoneSignal(aSide, (byte) redstoneSignal); return aCoverVariable; } -- cgit From 16dc222b95a9b45258a678f7b884121c4ba25a8a Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 03:14:01 +0200 Subject: Abstract `convertRatioToRedstone` properly --- src/main/java/gregtech/api/util/GT_Utility.java | 27 ++++++++++++++++++---- .../gregtech/common/covers/GT_Cover_ItemMeter.java | 16 +------------ .../common/covers/GT_Cover_LiquidMeter.java | 16 +------------ 3 files changed, 25 insertions(+), 34 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 706694d6dd..f7fd9ce914 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -4254,10 +4254,29 @@ public class GT_Utility { return Textures.BlockIcons.ERROR_TEXTURE_INDEX; } - public static byte convertRatioToRedstone(long value, long max) { - if (value <= 0) return 0; // Empty - if (value >= max) return 15; // Full - return (byte) (1 + (14 * value) / max); // Range 1-14 + public static byte convertRatioToRedstone(long used, long max, int threshold, boolean inverted) { + byte signal; + if (used <= 0) { // Empty + signal = 0; + } else if (used >= max) { // Full + signal = 15; + } else { // Range 1-14 + signal = (byte) (1 + (14 * used) / max); + } + + if (inverted) { + signal = (byte) (15 - signal); + } + + if (threshold > 0) { + if (inverted && used >= threshold) { + return 0; + } else if (!inverted && used < threshold) { + return 0; + } + } + + return signal; } @AutoValue diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java index 953318c455..e4de13b65d 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java @@ -100,21 +100,7 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase 0) { - if (inverted && used >= threshold) { - return 0; - } else if (!inverted && used < threshold) { - return 0; - } - } - - return signal; + return GT_Utility.convertRatioToRedstone(used, max, threshold, inverted); } @Override diff --git a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java index 7816e3dd48..48304d3fed 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java @@ -70,21 +70,7 @@ public class GT_Cover_LiquidMeter extends GT_CoverBehaviorBase 0) { - if (inverted && used >= threshold) { - return 0; - } else if (!inverted && used < threshold) { - return 0; - } - } - - return signal; + return GT_Utility.convertRatioToRedstone(used, max, threshold, inverted); } else { return 0; } -- cgit From d2c7530665e1bf7929be2f92218df8f7941a8d91 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 04:02:16 +0200 Subject: Add new hook `preDataChanged` --- .../java/gregtech/api/metatileentity/CoverableTileEntity.java | 7 +++++-- src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java | 11 +++++++++++ .../redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 5 +++++ 3 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index 5958b515be..e26d12f311 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -422,10 +422,13 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov public void receiveCoverData( byte aCoverSide, int aCoverID, ISerializableObject aCoverData, EntityPlayerMP aPlayer) { if ((aCoverSide >= 0 && aCoverSide < 6)) { + GT_CoverBehaviorBase behaviorBase = getCoverBehaviorAtSideNew(aCoverSide); + behaviorBase.preDataChanged(aCoverSide, getCoverIDAtSide(aCoverSide), aCoverID, getComplexCoverDataAtSide(aCoverSide), aCoverData, this); + setCoverIDAtSideNoUpdate(aCoverSide, aCoverID); setCoverDataAtSide(aCoverSide, aCoverData); - if (isClientSide()) { - getCoverBehaviorAtSideNew(aCoverSide).onDataChanged(aCoverSide, aCoverID, aCoverData, this); + if (!isClientSide()) { + behaviorBase.onDataChanged(aCoverSide, aCoverID, aCoverData, this); } } } diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java index e0879cda86..47cb866653 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java @@ -130,6 +130,14 @@ public abstract class GT_CoverBehaviorBase { onDataChangedImpl(aSide, aCoverID, forceCast(aCoverVariable), aTileEntity); } + /** + * Called before receiving data from network. Use {@link ICoverable#isClientSide()} to determine the side. + */ + public final void preDataChanged( + byte aSide, int aCoverID, int aNewCoverId, ISerializableObject aCoverVariable, ISerializableObject aNewCoverVariable, ICoverable aTileEntity) { + preDataChangedImpl(aSide, aCoverID, aNewCoverId, forceCast(aCoverVariable), forceCast(aNewCoverVariable), aTileEntity); + } + /** * Called upon cover being removed. Called on both server and client. */ @@ -417,6 +425,9 @@ public abstract class GT_CoverBehaviorBase { } protected void onDataChangedImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) {} + + protected void preDataChangedImpl( + byte aSide, int aCoverID, int aNewCoverId, T aCoverVariable, T aNewCoverVariable, ICoverable aTileEntity) {} protected void onDroppedImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) {} 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 65cf49b1a7..c65e019053 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 @@ -50,6 +50,11 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Thu, 22 Sep 2022 15:49:49 +0200 Subject: Fix calculating super chest content --- src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java index e4de13b65d..abecb00c35 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java @@ -81,8 +81,7 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase 1 && inv[1] != null) used = inv[1].stackSize; + used = dc.getProgresstime(); } else if (GregTech_API.mAE2 && mte instanceof GT_MetaTileEntity_Hatch_OutputBus_ME) { if (((GT_MetaTileEntity_Hatch_OutputBus_ME) mte).isLastOutputFailed()) { max = 64; -- cgit From 648f2b0c2556850131f5b9a86e5d7f11d56f58db Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 15:59:42 +0200 Subject: Reset signal, only when frequency or UUID changed --- .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') 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 c65e019053..7ebb3ed6e4 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 @@ -17,6 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import javax.annotation.Nonnull; +import java.util.Objects; import java.util.UUID; public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_AdvancedWirelessRedstoneBase { @@ -52,7 +53,10 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Thu, 22 Sep 2022 15:59:58 +0200 Subject: Reformat intent --- .../covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') 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 7ebb3ed6e4..dfc4558603 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 @@ -144,10 +144,10 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Thu, 22 Sep 2022 16:07:49 +0200 Subject: Implement Wireless Item Detector --- .../redstone/GT_Cover_WirelessItemDetector.java | 219 +++++++++++++++++++++ .../common/items/GT_MetaGenerated_Item_02.java | 10 +- 2 files changed, 227 insertions(+), 2 deletions(-) create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java new file mode 100644 index 0000000000..7779603937 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java @@ -0,0 +1,219 @@ +package gregtech.common.covers.redstone; + +import com.google.common.io.ByteArrayDataInput; +import gregtech.api.GregTech_API; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.ISerializableObject; +import gregtech.common.covers.GT_Cover_ItemMeter; +import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.Collections; +import java.util.UUID; + +public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTransmitterBase { + + public GT_Cover_WirelessItemDetector(ITexture coverTexture) { + super(ItemTransmitterData.class, coverTexture); + } + + @Override + public ItemTransmitterData createDataObject() { + return new ItemTransmitterData(); + } + + @Override + public ItemTransmitterData createDataObject(int aLegacyData) { + return createDataObject(); + } + + @Override + public ItemTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, + ItemTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + byte signal = GT_Cover_ItemMeter.computeSignalBasedOnItems( + aTileEntity, aCoverVariable.invert, aCoverVariable.threshold, aCoverVariable.slot, aSide); + long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); + setSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, signal); + + return aCoverVariable; + } + + @Override + public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + public static class ItemTransmitterData extends GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData { + /** + * The special value {@code -1} means all slots. + */ + private int slot; + /** + * The special value {@code 0} means threshold check is disabled. + */ + private int threshold; + + public ItemTransmitterData(int frequency, UUID uuid, boolean invert, int threshold, int slot) { + super(frequency, uuid, invert); + this.threshold = threshold; + this.slot = slot; + } + + public ItemTransmitterData() { + super(); + this.threshold = 0; + this.slot = -1; + } + + @Nonnull + @Override + public ISerializableObject copy() { + return new ItemTransmitterData(frequency, uuid, invert, threshold, slot); + } + + @Nonnull + @Override + public NBTBase saveDataToNBT() { + NBTTagCompound tag = (NBTTagCompound) super.saveDataToNBT(); + tag.setInteger("threshold", threshold); + tag.setInteger("slot", slot); + + return tag; + } + + @Override + public void writeToByteBuf(ByteBuf aBuf) { + super.writeToByteBuf(aBuf); + aBuf.writeInt(threshold); + aBuf.writeInt(slot); + } + + @Override + public void loadDataFromNBT(NBTBase aNBT) { + super.loadDataFromNBT(aNBT); + + NBTTagCompound tag = (NBTTagCompound) aNBT; + threshold = tag.getInteger("threshold"); + slot = tag.getInteger("slot"); + } + + @Nonnull + @Override + public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { + super.readFromPacket(aBuf, aPlayer); + threshold = aBuf.readInt(); + slot = aBuf.readInt(); + + return this; + } + } + + /** + * GUI Stuff + */ + + @Override + public Object getClientGUIImpl(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity, + EntityPlayer aPlayer, World aWorld) { + return new ItemTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); + } + + private class ItemTransmitterGUI extends TransmitterGUI { + private final GT_GuiIntegerTextBox thresholdBox; + private final GT_GuiIntegerTextBox slotBox; + + private final int maxSlot; + + public ItemTransmitterGUI(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity) { + super(aSide, aCoverID, aCoverVariable, aTileEntity, 0, 1); + + if (tile instanceof TileEntity && !super.tile.isDead() && tile instanceof IGregTechTileEntity && + !(((IGregTechTileEntity) tile).getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase)) { + maxSlot = tile.getSizeInventory() - 1; + } else { + maxSlot = -1; + } + + thresholdBox = new GT_GuiShortTextBox(this, 1, 1 + startX, 2 + startY + spaceY * 2, spaceX * 5 - 4, 12, 0, getMaxCount()); + slotBox = new GT_GuiShortTextBox(this, 2, 1 + startX, 2 + startY + spaceY * 3, spaceX * 3 - 4, 12, -1, maxSlot, + Collections.singletonMap("-1", "All")); + + slotBox.setEnabled(maxSlot >= 0); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.getFontRenderer().drawString( + GT_Utility.trans("221", "Item Threshold"), + startX + spaceX * 5, + 4 + startY + spaceY * 2, + textColor); + this.getFontRenderer().drawString( + GT_Utility.trans("254", "Detect Slot"), + startX + spaceX * 5, + 4 + startY + spaceY * 3, + textColor); + } + + @Override + public void onMouseWheel(int x, int y, int delta) { + super.onMouseWheel(x, y, delta); + if (thresholdBox.isFocused()) { + genericMouseWheel(thresholdBox, delta, 0, getMaxCount(), 1, 10, 64); + } else if (slotBox.isFocused()) { + genericMouseWheel(slotBox, delta, -1, maxSlot, 1, 5, 50); + } + } + + @Override + public void applyTextBox(GT_GuiIntegerTextBox box) { + if (box == thresholdBox) { + coverVariable.threshold = parseTextBox(thresholdBox, 0, getMaxCount()); + } else if (box == slotBox) { + coverVariable.slot = parseTextBox(slotBox, -1, maxSlot); + } + + super.applyTextBox(box); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + super.resetTextBox(box); + if (box == thresholdBox) { + thresholdBox.setText(Integer.toString(coverVariable.threshold)); + } else if (box == slotBox) { + slotBox.setText(Integer.toString(coverVariable.slot)); + } + } + + @Override + protected void update() { + super.update(); + resetTextBox(thresholdBox); + resetTextBox(slotBox); + } + + private int getMaxCount() { + return maxSlot > 0 ? maxSlot * 64 : Integer.MAX_VALUE; + } + } +} diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index d4e97e7d55..d5bef49992 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -22,6 +22,7 @@ import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneReceiverInternal import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterExternal; import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterInternal; import gregtech.common.covers.redstone.GT_Cover_WirelessFluidDetector; +import gregtech.common.covers.redstone.GT_Cover_WirelessItemDetector; import gregtech.common.items.behaviors.Behaviour_Arrow; import net.minecraft.dispenser.IBlockSource; import net.minecraft.enchantment.Enchantment; @@ -2340,7 +2341,7 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 1L))); - ItemList.Cover_ItemDetector.set(addItem( + ItemList.Cover_WirelessItemDetector.set(addItem( tLastID = 582, "Wireless Item Detector Cover", "Transfers Item Amount as Redstone wirelessly", @@ -2349,7 +2350,7 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.TERRA, 1L))); - ItemList.Cover_NeedsMaintainance.set(addItem( + ItemList.Cover_WirelessNeedsMaintainance.set(addItem( tLastID = 583, "Wireless Needs Maintenance Cover", "Transfers Maintenance Issues as Redstone wirelessly", @@ -2395,6 +2396,11 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), new GT_Cover_WirelessFluidDetector(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + GregTech_API.registerCover( + ItemList.Cover_WirelessItemDetector.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ITEMDETECTOR)), + new GT_Cover_WirelessItemDetector(TextureFactory.of(OVERLAY_ITEMDETECTOR))); + GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 0), new ItemStack(Items.dye, 2, 1)); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 1), new ItemStack(Items.dye, 2, 12)); -- cgit From 03eb1f68ceec53933158985489f9b6d5b6656936 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 16:44:23 +0200 Subject: Add Fake Item Slot to GUI --- .../covers/redstone/GT_Cover_WirelessItemDetector.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java index 7779603937..b1e7f4d0e3 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java @@ -2,6 +2,8 @@ package gregtech.common.covers.redstone; import com.google.common.io.ByteArrayDataInput; import gregtech.api.GregTech_API; +import gregtech.api.gui.widgets.GT_GuiFakeItemButton; +import gregtech.api.gui.widgets.GT_GuiIcon; import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; @@ -13,6 +15,7 @@ import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -140,6 +143,8 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran private final GT_GuiIntegerTextBox thresholdBox; private final GT_GuiIntegerTextBox slotBox; + private final GT_GuiFakeItemButton fakeItemSlot; + private final int maxSlot; public ItemTransmitterGUI(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity) { @@ -153,10 +158,12 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran } thresholdBox = new GT_GuiShortTextBox(this, 1, 1 + startX, 2 + startY + spaceY * 2, spaceX * 5 - 4, 12, 0, getMaxCount()); - slotBox = new GT_GuiShortTextBox(this, 2, 1 + startX, 2 + startY + spaceY * 3, spaceX * 3 - 4, 12, -1, maxSlot, + slotBox = new GT_GuiShortTextBox(this, 2, 1 + startX, 2 + startY + spaceY * 3, spaceX * 4 - 8, 12, -1, maxSlot, Collections.singletonMap("-1", "All")); + fakeItemSlot = new GT_GuiFakeItemButton(this, startX + spaceX * 4 - 1, startY + spaceY * 3, GT_GuiIcon.SLOT_GRAY); slotBox.setEnabled(maxSlot >= 0); + fakeItemSlot.setMimicSlot(true); } @Override @@ -210,6 +217,14 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran super.update(); resetTextBox(thresholdBox); resetTextBox(slotBox); + + if (coverVariable.slot >= 0 && tile instanceof TileEntity && !tile.isDead() && + tile.getSizeInventory() >= coverVariable.slot) { + ItemStack itemStack = tile.getStackInSlot(coverVariable.slot); + fakeItemSlot.setItem(itemStack); + } else { + fakeItemSlot.setItem(null); + } } private int getMaxCount() { -- cgit From 8906b41ac624e32714a0af2f503c82e584dec620 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 19:34:34 +0200 Subject: Add Maintenance Detector Cover --- .../common/covers/GT_Cover_NeedMaintainance.java | 11 +- .../GT_Cover_WirelessMaintenanceDetector.java | 251 +++++++++++++++++++++ .../common/items/GT_MetaGenerated_Item_02.java | 6 + .../assets/gregtech/textures/gui/GuiCoverBig.png | Bin 0 -> 630 bytes 4 files changed, 263 insertions(+), 5 deletions(-) create mode 100644 src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java create mode 100644 src/main/resources/assets/gregtech/textures/gui/GuiCoverBig.png (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java b/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java index 369778ef12..85c98f15a7 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java @@ -32,11 +32,12 @@ public class GT_Cover_NeedMaintainance extends GT_CoverBehavior { super(coverTexture); } - private boolean isRotor(ItemStack aRotor) { - return !(aRotor == null - || !(aRotor.getItem() instanceof GT_MetaGenerated_Tool) - || aRotor.getItemDamage() < 170 - || aRotor.getItemDamage() > 176); + public static boolean isRotor(ItemStack rotor) { + return (rotor != null && + rotor.getItem() instanceof GT_MetaGenerated_Tool && + rotor.getItemDamage() >= 170 && + rotor.getItemDamage() <= 176 + ); } @Override diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java new file mode 100644 index 0000000000..8660856a93 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java @@ -0,0 +1,251 @@ +package gregtech.common.covers.redstone; + +import com.google.common.io.ByteArrayDataInput; +import gregtech.api.GregTech_API; +import gregtech.api.gui.widgets.GT_GuiIcon; +import gregtech.api.gui.widgets.GT_GuiIconCheckButton; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.items.GT_MetaGenerated_Tool; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.util.ISerializableObject; +import gregtech.common.covers.GT_Cover_NeedMaintainance; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.UUID; + +public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedstoneTransmitterBase { + + public GT_Cover_WirelessMaintenanceDetector(ITexture coverTexture) { + super(MaintenanceTransmitterData.class, coverTexture); + } + + @Override + public MaintenanceTransmitterData createDataObject() { + return new MaintenanceTransmitterData(); + } + + @Override + public MaintenanceTransmitterData createDataObject(int aLegacyData) { + return createDataObject(); + } + + private static byte computeSignalBasedOnMaintenance(MaintenanceTransmitterData coverVariable, ICoverable tileEntity) { + boolean signal = false; + + if (tileEntity instanceof IGregTechTileEntity) { + IMetaTileEntity metaTE = ((IGregTechTileEntity) tileEntity).getMetaTileEntity(); + if (metaTE instanceof GT_MetaTileEntity_MultiBlockBase) { + GT_MetaTileEntity_MultiBlockBase multiTE = (GT_MetaTileEntity_MultiBlockBase) metaTE; + int ideal = multiTE.getIdealStatus(); + int real = multiTE.getRepairStatus(); + + switch (coverVariable.mode) { + case NO_ISSUE: + signal = ideal == real; + break; + case ONE_ISSUE: + case TWO_ISSUES: + case THREE_ISSUES: + case FOUR_ISSUES: + case FIVE_ISSUES: + signal = ideal - real >= coverVariable.mode.ordinal(); + break; + case ROTOR_80: + case ROTOR_100: + ItemStack rotor = multiTE.getRealInventory()[1]; + if (GT_Cover_NeedMaintainance.isRotor(rotor)) { + long max = GT_MetaGenerated_Tool.getToolMaxDamage(rotor); + long current = GT_MetaGenerated_Tool.getToolDamage(rotor); + + if (coverVariable.mode == MaintenanceMode.ROTOR_80) { + signal = current >= max * 8 / 10; + } else { + long expectedDamage = Math.round(Math.min( + (double) multiTE.mEUt / multiTE.damageFactorLow, + Math.pow(multiTE.mEUt, multiTE.damageFactorHigh) + )); + signal = current + expectedDamage * 2 >= max; + } + } else { + signal = true; + } + } + } + } + + if (coverVariable.invert) { + signal = !signal; + } + + return (byte) (signal ? 15 : 0); + } + + @Override + public MaintenanceTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, + MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + byte signal = computeSignalBasedOnMaintenance(aCoverVariable, aTileEntity); + long hash = GregTech_API.hashCoverCoords(aTileEntity, aSide); + setSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, signal); + + return aCoverVariable; + } + + @Override + public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + @Override + public int getTickRateImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { + return 60; + } + + public enum MaintenanceMode { + NO_ISSUE, + ONE_ISSUE, + TWO_ISSUES, + THREE_ISSUES, + FOUR_ISSUES, + FIVE_ISSUES, + ROTOR_80, + ROTOR_100 + } + + public static class MaintenanceTransmitterData extends GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData { + private MaintenanceMode mode; + + public MaintenanceTransmitterData(int frequency, UUID uuid, boolean invert, MaintenanceMode mode) { + super(frequency, uuid, invert); + this.mode = mode; + } + + public MaintenanceTransmitterData() { + super(); + this.mode = MaintenanceMode.ONE_ISSUE; + } + + @Nonnull + @Override + public ISerializableObject copy() { + return new MaintenanceTransmitterData(frequency, uuid, invert, mode); + } + + @Nonnull + @Override + public NBTBase saveDataToNBT() { + NBTTagCompound tag = (NBTTagCompound) super.saveDataToNBT(); + tag.setInteger("mode", mode.ordinal()); + + return tag; + } + + @Override + public void writeToByteBuf(ByteBuf aBuf) { + super.writeToByteBuf(aBuf); + aBuf.writeInt(mode.ordinal()); + } + + @Override + public void loadDataFromNBT(NBTBase aNBT) { + super.loadDataFromNBT(aNBT); + + NBTTagCompound tag = (NBTTagCompound) aNBT; + mode = MaintenanceMode.values()[tag.getInteger("mode")]; + } + + @Nonnull + @Override + public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { + super.readFromPacket(aBuf, aPlayer); + mode = MaintenanceMode.values()[aBuf.readInt()]; + + return this; + } + } + + /** + * GUI Stuff + */ + + private static final String[] extraTexts = new String[]{ + "No Issues", ">= 1 Issue", ">= 2 Issues", ">= 3 Issues", + ">= 4 Issues", ">= 5 Issues", "Rotor < 80%", "Rotor < 100%" + }; + + @Override + public Object getClientGUIImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity, + EntityPlayer aPlayer, World aWorld) { + return new MaintenanceTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); + } + + private class MaintenanceTransmitterGUI extends TransmitterGUI { + + private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverBig.png"; + private static final int maintenanceButtonIdStart = 2; + + public MaintenanceTransmitterGUI(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { + super(aSide, aCoverID, aCoverVariable, aTileEntity); + this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); + this.gui_height = 143; + + for (int i = 0; i < 8; ++i) { + new GT_GuiIconCheckButton(this, maintenanceButtonIdStart + i, startX + spaceX * (i % 2 == 0 ? 0 : 6), startY + spaceY * (2 + i / 2), GT_GuiIcon.CHECKMARK, null); + } + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + for (int i = 0; i < 8; ++i) { + this.getFontRenderer().drawString( + extraTexts[i], + startX + spaceX * (i % 2 == 0 ? 1 : 7), + 4 + startY + spaceY * (2 + i / 2), + textColor); + } + } + + @Override + protected void update() { + super.update(); + updateButtons(); + } + + private void updateButtons() { + GT_GuiIconCheckButton button; + for (int i = maintenanceButtonIdStart; i < maintenanceButtonIdStart + 8; ++i) { + button = (GT_GuiIconCheckButton) this.buttonList.get(i); + button.enabled = (button.id - maintenanceButtonIdStart) != coverVariable.mode.ordinal(); + button.setChecked(!button.enabled); + } + } + + @Override + public void buttonClicked(GuiButton btn) { + if (btn.id >= maintenanceButtonIdStart && btn.enabled) { + coverVariable.mode = MaintenanceMode.values()[btn.id - maintenanceButtonIdStart]; + } + + super.buttonClicked(btn); + } + } +} diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index d5bef49992..69e0554aed 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -23,6 +23,7 @@ import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterExter import gregtech.common.covers.redstone.GT_Cover_AdvancedRedstoneTransmitterInternal; import gregtech.common.covers.redstone.GT_Cover_WirelessFluidDetector; import gregtech.common.covers.redstone.GT_Cover_WirelessItemDetector; +import gregtech.common.covers.redstone.GT_Cover_WirelessMaintenanceDetector; import gregtech.common.items.behaviors.Behaviour_Arrow; import net.minecraft.dispenser.IBlockSource; import net.minecraft.enchantment.Enchantment; @@ -2401,6 +2402,11 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ITEMDETECTOR)), new GT_Cover_WirelessItemDetector(TextureFactory.of(OVERLAY_ITEMDETECTOR))); + GregTech_API.registerCover( + ItemList.Cover_WirelessNeedsMaintainance.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_MAINTENANCE)), + new GT_Cover_WirelessMaintenanceDetector(TextureFactory.of(OVERLAY_MAINTENANCE))); + GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 0), new ItemStack(Items.dye, 2, 1)); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 1), new ItemStack(Items.dye, 2, 12)); diff --git a/src/main/resources/assets/gregtech/textures/gui/GuiCoverBig.png b/src/main/resources/assets/gregtech/textures/gui/GuiCoverBig.png new file mode 100644 index 0000000000..e835ea7e12 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/gui/GuiCoverBig.png differ -- cgit From 3b26217a2f98cc9f95bbe6ae335f0be5246ec045 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 21:47:20 +0200 Subject: Add Analog Mode to the receiver --- .../redstone/GT_Cover_AdvancedRedstoneReceiverBase.java | 11 +++++++---- .../redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 6 ++++++ 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index a0aee5d908..371da26102 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -48,7 +48,8 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv AND, NAND, OR, - NOR + NOR, + SINGLE_SOURCE } public static class ReceiverData extends GT_Cover_AdvancedWirelessRedstoneBase.WirelessData { @@ -106,7 +107,7 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv } } - private class ReceiverGUI extends WirelessGUI { + private static class ReceiverGUI extends WirelessGUI { private static final int gateModeButtonIdStart = 1; @@ -120,7 +121,9 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv new GT_GuiIconButton(this, gateModeButtonIdStart + 2, startX + spaceX * 2, startY + spaceY * 2, GT_GuiIcon.OR_GATE) .setTooltipText(GT_Utility.trans("006", "OR Gate")); new GT_GuiIconButton(this, gateModeButtonIdStart + 3, startX + spaceX * 3, startY + spaceY * 2, GT_GuiIcon.NOR_GATE) - .setTooltipText(GT_Utility.trans("006", "NOR Gate")); + .setTooltipText(GT_Utility.trans("006", "NOR Gate")); + new GT_GuiIconButton(this, gateModeButtonIdStart + 4, startX + spaceX * 4, startY + spaceY * 2, GT_GuiIcon.PROGRESS) + .setTooltipText("ANALOG Mode", "Only use this mode with ONE transmitter in total,", "no logic involved"); } @Override @@ -141,7 +144,7 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv private void updateButtons() { GuiButton button; - for (int i = gateModeButtonIdStart; i < gateModeButtonIdStart + 4; ++i) { + for (int i = gateModeButtonIdStart; i < gateModeButtonIdStart + 5; ++i) { button = (GuiButton) this.buttonList.get(i); button.enabled = (button.id - gateModeButtonIdStart) != coverVariable.mode.ordinal(); } 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 2e73ae2094..542496619f 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 @@ -60,6 +60,12 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase signal > 0) .reduce(false, (signalA, signalB) -> signalA || signalB) ? 0 : 15); + case SINGLE_SOURCE: + if (signals.values().isEmpty()) { + return 0; + } + + return (Byte) signals.values().toArray()[0]; default: return 0; } -- cgit From e6a24cc54979933a0b520a1ff7e284ad6f95bb6e Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 22:43:56 +0200 Subject: Update item cover textures --- .../gregtech/textures/items/gt.metaitem.01/741.png | Bin 357 -> 17966 bytes .../gregtech/textures/items/gt.metaitem.01/742.png | Bin 357 -> 17966 bytes .../gregtech/textures/items/gt.metaitem.01/746.png | Bin 363 -> 17985 bytes .../gregtech/textures/items/gt.metaitem.01/747.png | Bin 363 -> 17985 bytes .../gregtech/textures/items/gt.metaitem.01/748.png | Bin 357 -> 17903 bytes .../gregtech/textures/items/gt.metaitem.02/577.png | Bin 17987 -> 18043 bytes .../gregtech/textures/items/gt.metaitem.02/578.png | Bin 17987 -> 18043 bytes .../gregtech/textures/items/gt.metaitem.02/579.png | Bin 17995 -> 18069 bytes .../gregtech/textures/items/gt.metaitem.02/580.png | Bin 17995 -> 18069 bytes .../gregtech/textures/items/gt.metaitem.02/581.png | Bin 0 -> 17999 bytes .../gregtech/textures/items/gt.metaitem.02/582.png | Bin 0 -> 17920 bytes .../gregtech/textures/items/gt.metaitem.02/583.png | Bin 0 -> 18002 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/581.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/582.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/583.png (limited to 'src') diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/741.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/741.png index c986ab738c..d5d8f25f35 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/741.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/741.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/742.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/742.png index c7b141b32b..d5d8f25f35 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/742.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/742.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/746.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/746.png index 14feeb8947..b49d621131 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/746.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/746.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/747.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/747.png index 7f8b3fcb37..b49d621131 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/747.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/747.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/748.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/748.png index c986ab738c..dbd57d68e3 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/748.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/748.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png index 7e7f44eba1..09df66bdeb 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/577.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png index 7e7f44eba1..09df66bdeb 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/578.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png index dd0bae6bab..1d6d781628 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/579.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png index dd0bae6bab..1d6d781628 100644 Binary files a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/580.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/581.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/581.png new file mode 100644 index 0000000000..8f79c8f74a Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/581.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/582.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/582.png new file mode 100644 index 0000000000..13d6380747 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/582.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/583.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/583.png new file mode 100644 index 0000000000..5326a6ed66 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.02/583.png differ -- cgit From 6c9bfa90bc569b5526408c81e33985824af1a31c Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Thu, 22 Sep 2022 23:35:44 +0200 Subject: Rename `In`, `Out` to `Internal`, `External` --- .../gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java | 6 +++++- src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java index a942d39b57..a024400094 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java @@ -15,6 +15,7 @@ import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { @@ -198,10 +199,13 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { private static final int spaceX = 18; private static final int spaceY = 18; + private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png"; + private final int textColor = this.getTextColorOrDefault("text", 0xFF555555); public GUI(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID)); + super(aTileEntity, 250, 107, GT_Utility.intToStack(aCoverID)); + this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); this.side = aSide; this.coverID = aCoverID; this.coverVariable = aCoverVariable; diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java index fd4d64d363..c345cfdc5e 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java @@ -4636,25 +4636,25 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { ItemList.Cover_RedstoneTransmitterExternal.set(addItem( tLastID = 741, - "Redstone Transmitter (Out)", + "Redstone Transmitter (External)", "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); ItemList.Cover_RedstoneTransmitterInternal.set(addItem( tLastID = 742, - "Redstone Transmitter (In)", + "Redstone Transmitter (Internal)", "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); ItemList.Cover_RedstoneReceiverExternal.set(addItem( tLastID = 746, - "Redstone Receiver (Out)", + "Redstone Receiver (External)", "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); ItemList.Cover_RedstoneReceiverInternal.set(addItem( tLastID = 747, - "Redstone Receiver (In)", + "Redstone Receiver (Internal)", "Transfers Redstone signals wireless", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); -- cgit From 3203a9cf7b9b8198bcc97a1e4f3ffdb89991532b Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Fri, 23 Sep 2022 00:53:16 +0200 Subject: Add cover textures --- src/main/java/gregtech/api/enums/Textures.java | 10 +++++ .../common/items/GT_MetaGenerated_Item_01.java | 40 ++++++------------- .../common/items/GT_MetaGenerated_Item_02.java | 43 +++++++-------------- .../OVERLAY_ADVANCED_REDSTONE_RECEIVER.png | Bin 0 -> 457 bytes .../OVERLAY_ADVANCED_REDSTONE_TRANSMITTER.png | Bin 0 -> 458 bytes .../iconsets/OVERLAY_MAINTENANCE_DETECTOR.png | Bin 0 -> 332 bytes .../blocks/iconsets/OVERLAY_REDSTONE_RECEIVER.png | Bin 0 -> 402 bytes .../iconsets/OVERLAY_REDSTONE_TRANSMITTER.png | Bin 0 -> 400 bytes .../iconsets/OVERLAY_WIRELESS_FLUID_DETECTOR.png | Bin 0 -> 421 bytes .../iconsets/OVERLAY_WIRELESS_ITEM_DETECTOR.png | Bin 0 -> 370 bytes .../OVERLAY_WIRELESS_MAINTENANCE_DETECTOR.png | Bin 0 -> 359 bytes 11 files changed, 35 insertions(+), 58 deletions(-) create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_RECEIVER.png create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_TRANSMITTER.png create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_MAINTENANCE_DETECTOR.png create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_RECEIVER.png create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_TRANSMITTER.png create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_FLUID_DETECTOR.png create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_ITEM_DETECTOR.png create mode 100644 src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_MAINTENANCE_DETECTOR.png (limited to 'src') diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java index ee335c749e..2e3a1ac6a8 100644 --- a/src/main/java/gregtech/api/enums/Textures.java +++ b/src/main/java/gregtech/api/enums/Textures.java @@ -490,6 +490,16 @@ public class Textures { OVERLAY_ENERGYDETECTOR, OVERLAY_FLUIDDETECTOR, OVERLAY_ITEMDETECTOR, + + OVERLAY_REDSTONE_TRANSMITTER, + OVERLAY_REDSTONE_RECEIVER, + OVERLAY_MAINTENANCE_DETECTOR, + + OVERLAY_ADVANCED_REDSTONE_TRANSMITTER, + OVERLAY_ADVANCED_REDSTONE_RECEIVER, + OVERLAY_WIRELESS_ITEM_DETECTOR, + OVERLAY_WIRELESS_FLUID_DETECTOR, + OVERLAY_WIRELESS_MAINTENANCE_DETECTOR, OVERLAY_FLUID_STORAGE_MONITOR0, OVERLAY_FLUID_STORAGE_MONITOR1, diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java index c345cfdc5e..49be6aa843 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java @@ -4659,35 +4659,22 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); - final ITexture redstoneTransmitterExternalCoverTexture = TextureFactory.of( - TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), - TextureFactory.builder() - .addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW) - .glow() - .build()); GregTech_API.registerCover( ItemList.Cover_RedstoneTransmitterExternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], redstoneTransmitterExternalCoverTexture), - new GT_Cover_RedstoneTransmitterExternal(redstoneTransmitterExternalCoverTexture)); - - final ITexture redstoneTransmitterInternalCoverTexture = TextureFactory.of( - TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), - TextureFactory.builder() - .addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW) - .glow() - .build()); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_REDSTONE_TRANSMITTER)), + new GT_Cover_RedstoneTransmitterExternal(TextureFactory.of(OVERLAY_REDSTONE_TRANSMITTER))); GregTech_API.registerCover( ItemList.Cover_RedstoneTransmitterInternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], redstoneTransmitterInternalCoverTexture), - new GT_Cover_RedstoneTransmitterInternal(redstoneTransmitterInternalCoverTexture)); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_REDSTONE_TRANSMITTER)), + new GT_Cover_RedstoneTransmitterInternal(TextureFactory.of(OVERLAY_REDSTONE_TRANSMITTER))); GregTech_API.registerCover( ItemList.Cover_RedstoneReceiverExternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), - new GT_Cover_RedstoneReceiverExternal(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_REDSTONE_RECEIVER)), + new GT_Cover_RedstoneReceiverExternal(TextureFactory.of(OVERLAY_REDSTONE_RECEIVER))); GregTech_API.registerCover( ItemList.Cover_RedstoneReceiverInternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), - new GT_Cover_RedstoneReceiverInternal(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_REDSTONE_RECEIVER)), + new GT_Cover_RedstoneReceiverInternal(TextureFactory.of(OVERLAY_REDSTONE_RECEIVER))); GT_Values.RA.addAssemblerRecipe( new ItemStack[] { @@ -4728,16 +4715,11 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { "Attach to Multiblock Controller. Emits Redstone Signal if needs Maintenance", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L))); - final ITexture needMaintenanceCoverTexture = TextureFactory.of( - TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), - TextureFactory.builder() - .addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW) - .glow() - .build()); GregTech_API.registerCover( ItemList.Cover_NeedsMaintainance.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], needMaintenanceCoverTexture), - new GT_Cover_NeedMaintainance(needMaintenanceCoverTexture)); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_MAINTENANCE_DETECTOR)), + new GT_Cover_NeedMaintainance(TextureFactory.of(OVERLAY_MAINTENANCE_DETECTOR))); + GT_Values.RA.addAssemblerRecipe( new ItemStack[] { ItemList.Emitter_MV.get(1L), diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index 69e0554aed..9216e95fb1 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -8,7 +8,6 @@ import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.SubTag; import gregtech.api.enums.TC_Aspects; -import gregtech.api.interfaces.ITexture; import gregtech.api.items.GT_MetaGenerated_Item_X32; import gregtech.api.objects.ItemData; import gregtech.api.render.TextureFactory; @@ -2358,54 +2357,40 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 4L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 3L))); - final ITexture redstoneTransmitterExternalCoverTexture = TextureFactory.of( - TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), - TextureFactory.builder() - .addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW) - .glow() - .build()); - - final ITexture redstoneTransmitterInternalCoverTexture = TextureFactory.of( - TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), - TextureFactory.builder() - .addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW) - .glow() - .build()); - GregTech_API.registerCover( ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], redstoneTransmitterExternalCoverTexture), - new GT_Cover_AdvancedRedstoneTransmitterExternal(redstoneTransmitterExternalCoverTexture)); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER)), + new GT_Cover_AdvancedRedstoneTransmitterExternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER))); GregTech_API.registerCover( ItemList.Cover_AdvancedRedstoneTransmitterInternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], redstoneTransmitterInternalCoverTexture), - new GT_Cover_AdvancedRedstoneTransmitterInternal(redstoneTransmitterInternalCoverTexture)); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER)), + new GT_Cover_AdvancedRedstoneTransmitterInternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER))); GregTech_API.registerCover( ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), - new GT_Cover_AdvancedRedstoneReceiverExternal(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER)), + new GT_Cover_AdvancedRedstoneReceiverExternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER))); GregTech_API.registerCover( ItemList.Cover_AdvancedRedstoneReceiverInternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), - new GT_Cover_AdvancedRedstoneReceiverInternal(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER)), + new GT_Cover_AdvancedRedstoneReceiverInternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER))); GregTech_API.registerCover( ItemList.Cover_WirelessFluidDetector.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_FLUIDDETECTOR)), - new GT_Cover_WirelessFluidDetector(TextureFactory.of(OVERLAY_FLUIDDETECTOR))); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_FLUID_DETECTOR)), + new GT_Cover_WirelessFluidDetector(TextureFactory.of(OVERLAY_WIRELESS_FLUID_DETECTOR))); GregTech_API.registerCover( ItemList.Cover_WirelessItemDetector.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ITEMDETECTOR)), - new GT_Cover_WirelessItemDetector(TextureFactory.of(OVERLAY_ITEMDETECTOR))); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_ITEM_DETECTOR)), + new GT_Cover_WirelessItemDetector(TextureFactory.of(OVERLAY_WIRELESS_ITEM_DETECTOR))); GregTech_API.registerCover( ItemList.Cover_WirelessNeedsMaintainance.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_MAINTENANCE)), - new GT_Cover_WirelessMaintenanceDetector(TextureFactory.of(OVERLAY_MAINTENANCE))); + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_MAINTENANCE_DETECTOR)), + new GT_Cover_WirelessMaintenanceDetector(TextureFactory.of(OVERLAY_WIRELESS_MAINTENANCE_DETECTOR))); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 0), new ItemStack(Items.dye, 2, 1)); diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_RECEIVER.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_RECEIVER.png new file mode 100644 index 0000000000..206047ad36 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_RECEIVER.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_TRANSMITTER.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_TRANSMITTER.png new file mode 100644 index 0000000000..2d2ec5fe79 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_ADVANCED_REDSTONE_TRANSMITTER.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_MAINTENANCE_DETECTOR.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_MAINTENANCE_DETECTOR.png new file mode 100644 index 0000000000..7ed1d9178e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_MAINTENANCE_DETECTOR.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_RECEIVER.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_RECEIVER.png new file mode 100644 index 0000000000..e6ddc3002e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_RECEIVER.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_TRANSMITTER.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_TRANSMITTER.png new file mode 100644 index 0000000000..d7d1c8a4b5 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_REDSTONE_TRANSMITTER.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_FLUID_DETECTOR.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_FLUID_DETECTOR.png new file mode 100644 index 0000000000..766671d5bf Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_FLUID_DETECTOR.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_ITEM_DETECTOR.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_ITEM_DETECTOR.png new file mode 100644 index 0000000000..0fe7a164d6 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_ITEM_DETECTOR.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_MAINTENANCE_DETECTOR.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_MAINTENANCE_DETECTOR.png new file mode 100644 index 0000000000..4cc9679888 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_WIRELESS_MAINTENANCE_DETECTOR.png differ -- cgit From b84e99b5a2f4071c0bd97524380f7aebd01811fe Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Fri, 23 Sep 2022 01:09:13 +0200 Subject: Add new icon for the analog mode --- .../java/gregtech/api/gui/widgets/GT_GuiIcon.java | 1 + .../GT_Cover_AdvancedRedstoneReceiverBase.java | 2 +- .../assets/gregtech/textures/gui/GuiButtons.png | Bin 9078 -> 20373 bytes 3 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java index 2be46dfa14..43fbe0711c 100644 --- a/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java +++ b/src/main/java/gregtech/api/gui/widgets/GT_GuiIcon.java @@ -34,6 +34,7 @@ public enum GT_GuiIcon implements IGuiIcon { NAND_GATE(0, 32, 32 * 3), OR_GATE(0, 32 * 2, 32 * 3), NOR_GATE(0, 32 * 3, 32 * 3), + ANALOG_MODE(0, 32 * 4, 32 * 3), SLOT_DARKGRAY(1, 176, 0, 18, 18), SLOT_GRAY(1, 176, 18, 18, 18), diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index 371da26102..bf56270267 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -122,7 +122,7 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv .setTooltipText(GT_Utility.trans("006", "OR Gate")); new GT_GuiIconButton(this, gateModeButtonIdStart + 3, startX + spaceX * 3, startY + spaceY * 2, GT_GuiIcon.NOR_GATE) .setTooltipText(GT_Utility.trans("006", "NOR Gate")); - new GT_GuiIconButton(this, gateModeButtonIdStart + 4, startX + spaceX * 4, startY + spaceY * 2, GT_GuiIcon.PROGRESS) + new GT_GuiIconButton(this, gateModeButtonIdStart + 4, startX + spaceX * 4, startY + spaceY * 2, GT_GuiIcon.ANALOG_MODE) .setTooltipText("ANALOG Mode", "Only use this mode with ONE transmitter in total,", "no logic involved"); } diff --git a/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png b/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png index 255bdc2aab..d621e199c3 100644 Binary files a/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png and b/src/main/resources/assets/gregtech/textures/gui/GuiButtons.png differ -- cgit From c566030a6c23eb771d26d7d0321c6c195d260fe4 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Fri, 23 Sep 2022 02:11:45 +0200 Subject: Add recipes for the new covers --- .../common/items/GT_MetaGenerated_Item_02.java | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'src') diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index 9216e95fb1..881cbd41c4 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -2393,6 +2393,74 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { new GT_Cover_WirelessMaintenanceDetector(TextureFactory.of(OVERLAY_WIRELESS_MAINTENANCE_DETECTOR))); + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { + ItemList.Cover_RedstoneTransmitterExternal.get(1L), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1L), + GT_Utility.getIntegratedCircuit(1) + }, + GT_Values.NF, + ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L), + 3200, + 128); + + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { + ItemList.Cover_RedstoneReceiverExternal.get(1L), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1L), + GT_Utility.getIntegratedCircuit(1) + }, + GT_Values.NF, + ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L), + 3200, + 128); + + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { + ItemList.Cover_FluidDetector.get(1L), + ItemList.Emitter_EV.get(1L), + GT_Utility.getIntegratedCircuit(1) + }, + GT_Values.NF, + ItemList.Cover_WirelessFluidDetector.get(1L), + 3200, + 128); + + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { + ItemList.Cover_ItemDetector.get(1L), + ItemList.Emitter_EV.get(1L), + GT_Utility.getIntegratedCircuit(1) + }, + GT_Values.NF, + ItemList.Cover_WirelessItemDetector.get(1L), + 3200, + 128); + + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { + ItemList.Cover_NeedsMaintainance.get(1L), + ItemList.Emitter_EV.get(1L), + GT_Utility.getIntegratedCircuit(1) + }, + GT_Values.NF, + ItemList.Cover_WirelessNeedsMaintainance.get(1L), + 3200, + 128); + + GT_ModHandler.addShapelessCraftingRecipe( + ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L), + new Object[] {ItemList.Cover_AdvancedRedstoneReceiverInternal.get(1L)}); + GT_ModHandler.addShapelessCraftingRecipe( + ItemList.Cover_AdvancedRedstoneReceiverInternal.get(1L), + new Object[] {ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L)}); + GT_ModHandler.addShapelessCraftingRecipe( + ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L), + new Object[] {ItemList.Cover_AdvancedRedstoneTransmitterInternal.get(1L)}); + GT_ModHandler.addShapelessCraftingRecipe( + ItemList.Cover_AdvancedRedstoneTransmitterInternal.get(1L), + new Object[] {ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L)}); + GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 0), new ItemStack(Items.dye, 2, 1)); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 1), new ItemStack(Items.dye, 2, 12)); GT_ModHandler.addExtractionRecipe(new ItemStack(Blocks.red_flower, 1, 2), new ItemStack(Items.dye, 2, 13)); -- cgit From b0969c88904bc7465bef4d580d7387e1644f8c7e Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Fri, 23 Sep 2022 02:25:01 +0200 Subject: Move `hashCoverCoords` to WirelessBase --- src/main/java/gregtech/api/GregTech_API.java | 17 ----------------- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 3 +-- .../GT_Cover_AdvancedRedstoneTransmitterExternal.java | 3 +-- .../GT_Cover_AdvancedRedstoneTransmitterInternal.java | 3 +-- .../redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 16 ++++++++++++++++ .../covers/redstone/GT_Cover_WirelessFluidDetector.java | 3 +-- .../covers/redstone/GT_Cover_WirelessItemDetector.java | 3 +-- .../redstone/GT_Cover_WirelessMaintenanceDetector.java | 3 +-- 8 files changed, 22 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index ed8610982d..648c30d930 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -20,7 +20,6 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.internal.IGT_RecipeAdder; import gregtech.api.interfaces.internal.IThaumcraftCompat; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IMachineBlockUpdateable; import gregtech.api.items.GT_CoolantCellIC_Item; import gregtech.api.items.GT_CoolantCell_Item; @@ -178,22 +177,6 @@ public class GregTech_API { */ public static final Map>> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); - /** - * x hashed into first 20 bytes - * y hashed into second 20 bytes - * z hashed into fifth 10 bytes - * dim hashed into sixth 10 bytes - * side hashed into last 4 bytes - */ - public static long hashCoverCoords(ICoverable tile, byte side) { - return (((((long) - tile.getXCoord() << 20) + - tile.getZCoord() << 10) + - tile.getYCoord() << 10) + - tile.getWorld().provider.dimensionId << 4) + - side; - } - /** * The IDSU Frequencies */ 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 dfc4558603..c71194682f 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 @@ -1,7 +1,6 @@ package gregtech.common.covers.redstone; import com.google.common.io.ByteArrayDataInput; -import gregtech.api.GregTech_API; import gregtech.api.gui.widgets.GT_GuiIcon; import gregtech.api.gui.widgets.GT_GuiIconCheckButton; import gregtech.api.interfaces.ITexture; @@ -27,7 +26,7 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase Date: Fri, 23 Sep 2022 02:27:42 +0200 Subject: Fix previous oopsie --- src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index e26d12f311..d3a96efffe 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -427,7 +427,7 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov setCoverIDAtSideNoUpdate(aCoverSide, aCoverID); setCoverDataAtSide(aCoverSide, aCoverData); - if (!isClientSide()) { + if (isClientSide()) { behaviorBase.onDataChanged(aCoverSide, aCoverID, aCoverData, this); } } -- cgit From bf2f61d8736870251c8709462240d8cf3e3b4ff6 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Fri, 23 Sep 2022 02:35:40 +0200 Subject: Properly revert `GuiCover` texture --- .../assets/gregtech/textures/gui/GuiCover.png | Bin 957 -> 6998 bytes 1 file changed, 0 insertions(+), 0 deletions(-) (limited to 'src') diff --git a/src/main/resources/assets/gregtech/textures/gui/GuiCover.png b/src/main/resources/assets/gregtech/textures/gui/GuiCover.png index 2706f88de7..95353c79ca 100644 Binary files a/src/main/resources/assets/gregtech/textures/gui/GuiCover.png and b/src/main/resources/assets/gregtech/textures/gui/GuiCover.png differ -- cgit From a4a4a950d2870ababec7f67f9bed6e69750a6cc4 Mon Sep 17 00:00:00 2001 From: Matej Dipčár <492666@mail.muni.cz> Date: Fri, 23 Sep 2022 08:44:08 +0200 Subject: Spotless apply --- src/main/java/gregtech/api/enums/Textures.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java index 2e3a1ac6a8..77e28482ce 100644 --- a/src/main/java/gregtech/api/enums/Textures.java +++ b/src/main/java/gregtech/api/enums/Textures.java @@ -490,7 +490,7 @@ public class Textures { OVERLAY_ENERGYDETECTOR, OVERLAY_FLUIDDETECTOR, OVERLAY_ITEMDETECTOR, - + OVERLAY_REDSTONE_TRANSMITTER, OVERLAY_REDSTONE_RECEIVER, OVERLAY_MAINTENANCE_DETECTOR, -- cgit From 0268d287a9d165899ff456b674d56ba10d382d81 Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Sat, 1 Oct 2022 12:37:34 +0200 Subject: spotless --- build.gradle | 2 +- src/main/java/gregtech/api/GregTech_API.java | 3 +- .../api/metatileentity/CoverableTileEntity.java | 10 +- .../gregtech/api/util/GT_CoverBehaviorBase.java | 15 +- src/main/java/gregtech/api/util/GT_Utility.java | 6 +- .../gregtech/common/covers/GT_Cover_ItemMeter.java | 10 +- .../common/covers/GT_Cover_NeedMaintainance.java | 9 +- .../GT_Cover_AdvancedRedstoneReceiverBase.java | 73 +++++++--- .../GT_Cover_AdvancedRedstoneReceiverExternal.java | 19 ++- .../GT_Cover_AdvancedRedstoneReceiverInternal.java | 12 +- .../GT_Cover_AdvancedRedstoneTransmitterBase.java | 69 +++++++--- ..._Cover_AdvancedRedstoneTransmitterExternal.java | 15 +- ..._Cover_AdvancedRedstoneTransmitterInternal.java | 20 ++- .../GT_Cover_AdvancedWirelessRedstoneBase.java | 141 ++++++++++++------- .../redstone/GT_Cover_WirelessFluidDetector.java | 50 ++++--- .../redstone/GT_Cover_WirelessItemDetector.java | 91 ++++++++----- .../GT_Cover_WirelessMaintenanceDetector.java | 77 +++++++---- .../common/items/GT_MetaGenerated_Item_01.java | 2 +- .../common/items/GT_MetaGenerated_Item_02.java | 151 ++++++++++----------- 19 files changed, 482 insertions(+), 293 deletions(-) (limited to 'src') diff --git a/build.gradle b/build.gradle index 252dac4ea1..b961a5e176 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1662920829 +//version: 1664372158 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index 648c30d930..9b039409dc 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -175,7 +175,8 @@ public class GregTech_API { /** * The Advanced Redstone Frequencies */ - public static final Map>> sAdvancedWirelessRedstone = new ConcurrentHashMap<>(); + public static final Map>> sAdvancedWirelessRedstone = + new ConcurrentHashMap<>(); /** * The IDSU Frequencies diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index d3a96efffe..9df38b2725 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -423,8 +423,14 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov byte aCoverSide, int aCoverID, ISerializableObject aCoverData, EntityPlayerMP aPlayer) { if ((aCoverSide >= 0 && aCoverSide < 6)) { GT_CoverBehaviorBase behaviorBase = getCoverBehaviorAtSideNew(aCoverSide); - behaviorBase.preDataChanged(aCoverSide, getCoverIDAtSide(aCoverSide), aCoverID, getComplexCoverDataAtSide(aCoverSide), aCoverData, this); - + behaviorBase.preDataChanged( + aCoverSide, + getCoverIDAtSide(aCoverSide), + aCoverID, + getComplexCoverDataAtSide(aCoverSide), + aCoverData, + this); + setCoverIDAtSideNoUpdate(aCoverSide, aCoverID); setCoverDataAtSide(aCoverSide, aCoverData); if (isClientSide()) { diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java index 47cb866653..1092a24307 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java @@ -134,8 +134,14 @@ public abstract class GT_CoverBehaviorBase { * Called before receiving data from network. Use {@link ICoverable#isClientSide()} to determine the side. */ public final void preDataChanged( - byte aSide, int aCoverID, int aNewCoverId, ISerializableObject aCoverVariable, ISerializableObject aNewCoverVariable, ICoverable aTileEntity) { - preDataChangedImpl(aSide, aCoverID, aNewCoverId, forceCast(aCoverVariable), forceCast(aNewCoverVariable), aTileEntity); + byte aSide, + int aCoverID, + int aNewCoverId, + ISerializableObject aCoverVariable, + ISerializableObject aNewCoverVariable, + ICoverable aTileEntity) { + preDataChangedImpl( + aSide, aCoverID, aNewCoverId, forceCast(aCoverVariable), forceCast(aNewCoverVariable), aTileEntity); } /** @@ -233,7 +239,8 @@ public abstract class GT_CoverBehaviorBase { * Called upon Base TE being destroyed (once getDrops is called), * thus getting called only when destroyed in survival. */ - public final void onBaseTEDestroyed(byte aSide, int aCoverID, ISerializableObject aCoverVariable, ICoverable aTileEntity) { + public final void onBaseTEDestroyed( + byte aSide, int aCoverID, ISerializableObject aCoverVariable, ICoverable aTileEntity) { onBaseTEDestroyedImpl(aSide, aCoverID, forceCast(aCoverVariable), aTileEntity); } @@ -425,7 +432,7 @@ public abstract class GT_CoverBehaviorBase { } protected void onDataChangedImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) {} - + protected void preDataChangedImpl( byte aSide, int aCoverID, int aNewCoverId, T aCoverVariable, T aNewCoverVariable, ICoverable aTileEntity) {} diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index f7fd9ce914..4371658b3a 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -4256,11 +4256,11 @@ public class GT_Utility { public static byte convertRatioToRedstone(long used, long max, int threshold, boolean inverted) { byte signal; - if (used <= 0) { // Empty + if (used <= 0) { // Empty signal = 0; - } else if (used >= max) { // Full + } else if (used >= max) { // Full signal = 15; - } else { // Range 1-14 + } else { // Range 1-14 signal = (byte) (1 + (14 * used) / max); } diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java index abecb00c35..c894857b32 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java @@ -73,8 +73,9 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase= 170 && - rotor.getItemDamage() <= 176 - ); + return (rotor != null + && rotor.getItem() instanceof GT_MetaGenerated_Tool + && rotor.getItemDamage() >= 170 + && rotor.getItemDamage() <= 176); } @Override diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java index bf56270267..233be511a3 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java @@ -8,6 +8,8 @@ import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import io.netty.buffer.ByteBuf; +import java.util.UUID; +import javax.annotation.Nonnull; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -15,10 +17,8 @@ import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import javax.annotation.Nonnull; -import java.util.UUID; - -public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_AdvancedWirelessRedstoneBase { +public abstract class GT_Cover_AdvancedRedstoneReceiverBase + extends GT_Cover_AdvancedWirelessRedstoneBase { public GT_Cover_AdvancedRedstoneReceiverBase(ITexture coverTexture) { super(ReceiverData.class, coverTexture); @@ -37,10 +37,14 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv /** * GUI Stuff */ - @Override - public Object getClientGUIImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, - EntityPlayer aPlayer, World aWorld) { + public Object getClientGUIImpl( + byte aSide, + int aCoverID, + ReceiverData aCoverVariable, + ICoverable aTileEntity, + EntityPlayer aPlayer, + World aWorld) { return new ReceiverGUI(aSide, aCoverID, aCoverVariable, aTileEntity); } @@ -114,26 +118,53 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_Adv public ReceiverGUI(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { super(aSide, aCoverID, aCoverVariable, aTileEntity); - new GT_GuiIconButton(this, gateModeButtonIdStart + 0, startX + spaceX * 0, startY + spaceY * 2, GT_GuiIcon.AND_GATE) - .setTooltipText(GT_Utility.trans("006", "AND Gate")); - new GT_GuiIconButton(this, gateModeButtonIdStart + 1, startX + spaceX * 1, startY + spaceY * 2, GT_GuiIcon.NAND_GATE) - .setTooltipText(GT_Utility.trans("006", "NAND Gate")); - new GT_GuiIconButton(this, gateModeButtonIdStart + 2, startX + spaceX * 2, startY + spaceY * 2, GT_GuiIcon.OR_GATE) - .setTooltipText(GT_Utility.trans("006", "OR Gate")); - new GT_GuiIconButton(this, gateModeButtonIdStart + 3, startX + spaceX * 3, startY + spaceY * 2, GT_GuiIcon.NOR_GATE) + new GT_GuiIconButton( + this, + gateModeButtonIdStart + 0, + startX + spaceX * 0, + startY + spaceY * 2, + GT_GuiIcon.AND_GATE) + .setTooltipText(GT_Utility.trans("006", "AND Gate")); + new GT_GuiIconButton( + this, + gateModeButtonIdStart + 1, + startX + spaceX * 1, + startY + spaceY * 2, + GT_GuiIcon.NAND_GATE) + .setTooltipText(GT_Utility.trans("006", "NAND Gate")); + new GT_GuiIconButton( + this, + gateModeButtonIdStart + 2, + startX + spaceX * 2, + startY + spaceY * 2, + GT_GuiIcon.OR_GATE) + .setTooltipText(GT_Utility.trans("006", "OR Gate")); + new GT_GuiIconButton( + this, + gateModeButtonIdStart + 3, + startX + spaceX * 3, + startY + spaceY * 2, + GT_GuiIcon.NOR_GATE) .setTooltipText(GT_Utility.trans("006", "NOR Gate")); - new GT_GuiIconButton(this, gateModeButtonIdStart + 4, startX + spaceX * 4, startY + spaceY * 2, GT_GuiIcon.ANALOG_MODE) - .setTooltipText("ANALOG Mode", "Only use this mode with ONE transmitter in total,", "no logic involved"); + new GT_GuiIconButton( + this, + gateModeButtonIdStart + 4, + startX + spaceX * 4, + startY + spaceY * 2, + GT_GuiIcon.ANALOG_MODE) + .setTooltipText( + "ANALOG Mode", "Only use this mode with ONE transmitter in total,", "no logic involved"); } @Override public void drawExtras(int mouseX, int mouseY, float parTicks) { super.drawExtras(mouseX, mouseY, parTicks); - this.getFontRenderer().drawString( - GT_Utility.trans("601", "Gate Mode"), - startX + spaceX * 5, - 4 + startY + spaceY * 2, - textColor); + this.getFontRenderer() + .drawString( + GT_Utility.trans("601", "Gate Mode"), + startX + spaceX * 5, + 4 + startY + spaceY * 2, + textColor); } @Override 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 3f2db32f7f..56b7fadd24 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 @@ -10,20 +10,29 @@ 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, - getSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), aCoverVariable.getGateMode())); + public ReceiverData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + ReceiverData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { + aTileEntity.setOutputRedstoneSignal( + aSide, + getSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), aCoverVariable.getGateMode())); return aCoverVariable; } @Override - protected boolean isRedstoneSensitiveImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, long aTimer) { + protected boolean isRedstoneSensitiveImpl( + byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, long aTimer) { return false; } @Override - protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + protected boolean manipulatesSidedRedstoneOutputImpl( + byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { return true; } } 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 a8fdf29249..c3537350a6 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 @@ -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; import gregtech.api.interfaces.tileentity.IMachineProgress; @@ -12,7 +11,13 @@ public class GT_Cover_AdvancedRedstoneReceiverInternal extends GT_Cover_Advanced } @Override - public ReceiverData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity, long aTimer) { + public ReceiverData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + ReceiverData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { if (aTileEntity instanceof IMachineProgress) { IMachineProgress machine = ((IMachineProgress) aTileEntity); if (getRedstoneInput(aSide, aInputRedstone, aCoverID, aCoverVariable, aTileEntity) > 0) { @@ -28,7 +33,8 @@ public class GT_Cover_AdvancedRedstoneReceiverInternal extends GT_Cover_Advanced } @Override - protected byte getRedstoneInputImpl(byte aSide, byte aInputRedstone, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { + protected byte getRedstoneInputImpl( + byte aSide, byte aInputRedstone, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) { 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 c71194682f..07592a00dc 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 @@ -8,6 +8,9 @@ import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import io.netty.buffer.ByteBuf; +import java.util.Objects; +import java.util.UUID; +import javax.annotation.Nonnull; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -15,11 +18,9 @@ import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import javax.annotation.Nonnull; -import java.util.Objects; -import java.util.UUID; - -public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_AdvancedWirelessRedstoneBase { +public abstract class GT_Cover_AdvancedRedstoneTransmitterBase< + T extends GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData> + extends GT_Cover_AdvancedWirelessRedstoneBase { public GT_Cover_AdvancedRedstoneTransmitterBase(Class typeToken, ITexture coverTexture) { super(typeToken, coverTexture); @@ -31,19 +32,28 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase(aSide, aCoverID, aCoverVariable, aTileEntity); } @@ -130,9 +145,18 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase { +public class GT_Cover_AdvancedRedstoneTransmitterExternal + extends GT_Cover_AdvancedRedstoneTransmitterBase { public GT_Cover_AdvancedRedstoneTransmitterExternal(ITexture coverTexture) { super(TransmitterData.class, coverTexture); @@ -20,8 +21,13 @@ public class GT_Cover_AdvancedRedstoneTransmitterExternal extends GT_Cover_Advan } @Override - public TransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, - TransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + public TransmitterData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + TransmitterData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { byte outputRedstone = aInputRedstone; if (aCoverVariable.isInvert()) { if (outputRedstone > 0) outputRedstone = 0; @@ -35,7 +41,8 @@ public class GT_Cover_AdvancedRedstoneTransmitterExternal extends GT_Cover_Advan } @Override - public boolean letsRedstoneGoInImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { + public boolean letsRedstoneGoInImpl( + byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } } 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 9e6d1afd36..1d21b7060f 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 @@ -3,7 +3,8 @@ package gregtech.common.covers.redstone; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; -public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_AdvancedRedstoneTransmitterBase { +public class GT_Cover_AdvancedRedstoneTransmitterInternal + extends GT_Cover_AdvancedRedstoneTransmitterBase { public GT_Cover_AdvancedRedstoneTransmitterInternal(ITexture coverTexture) { super(TransmitterData.class, coverTexture); @@ -20,8 +21,13 @@ public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_Advan } @Override - public TransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, - TransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + public TransmitterData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + TransmitterData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { byte outputRedstone = aTileEntity.getOutputRedstoneSignal(aSide); if (aCoverVariable.isInvert()) { if (outputRedstone > 0) outputRedstone = 0; @@ -34,14 +40,14 @@ public class GT_Cover_AdvancedRedstoneTransmitterInternal extends GT_Cover_Advan } @Override - public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, - ICoverable aTileEntity) { + public boolean letsRedstoneGoOutImpl( + byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, TransmitterData aCoverVariable, - ICoverable aTileEntity) { + protected boolean manipulatesSidedRedstoneOutputImpl( + byte aSide, int aCoverID, TransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } } 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 10885c8908..a3f37e5f28 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 @@ -15,6 +15,12 @@ import gregtech.api.util.GT_CoverBehaviorBase; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import io.netty.buffer.ByteBuf; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; +import javax.annotation.Nonnull; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayerMP; @@ -23,14 +29,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; -import javax.annotation.Nonnull; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; - -public abstract class GT_Cover_AdvancedWirelessRedstoneBase extends GT_CoverBehaviorBase { +public abstract class GT_Cover_AdvancedWirelessRedstoneBase< + T extends GT_Cover_AdvancedWirelessRedstoneBase.WirelessData> + extends GT_CoverBehaviorBase { public GT_Cover_AdvancedWirelessRedstoneBase(Class typeToken, ITexture coverTexture) { super(typeToken, coverTexture); @@ -45,26 +46,38 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase signal > 0) - .reduce(true, (signalA, signalB) -> signalA && signalB) ? 15 : 0); + 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); + 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); + 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); + return (byte) + (signals.values().stream() + .map(signal -> signal > 0) + .reduce(false, (signalA, signalB) -> signalA || signalB) + ? 0 + : 15); case SINGLE_SOURCE: if (signals.values().isEmpty()) { return 0; } - + return (Byte) signals.values().toArray()[0]; default: return 0; @@ -81,7 +94,8 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase> frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent(String.valueOf(uuid), k -> new ConcurrentHashMap<>()); + Map> frequencies = GregTech_API.sAdvancedWirelessRedstone.computeIfAbsent( + String.valueOf(uuid), k -> new ConcurrentHashMap<>()); Map signals = frequencies.computeIfAbsent(frequency, k -> new ConcurrentHashMap<>()); signals.put(hash, value); } @@ -94,12 +108,10 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase 0 ? step : -step); @@ -323,7 +352,9 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase translation; private final Map inverseTranslation; - public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height, int min, int max, - Map translate) { + public GT_GuiShortTextBox( + IGuiScreen gui, + int id, + int x, + int y, + int width, + int height, + int min, + int max, + Map translate) { super(gui, id, x, y, width, height); this.min = min; this.max = max; this.translation = translate; - this.inverseTranslation = translate.entrySet().stream() - .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey)); + this.inverseTranslation = + translate.entrySet().stream().collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey)); } public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height, int min, int max) { diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java index eed9923c58..2f4e57647d 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java @@ -8,16 +8,16 @@ import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import gregtech.common.covers.GT_Cover_LiquidMeter; import io.netty.buffer.ByteBuf; +import java.util.UUID; +import javax.annotation.Nonnull; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import javax.annotation.Nonnull; -import java.util.UUID; - -public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTransmitterBase { +public class GT_Cover_WirelessFluidDetector + extends GT_Cover_AdvancedRedstoneTransmitterBase { public GT_Cover_WirelessFluidDetector(ITexture coverTexture) { super(FluidTransmitterData.class, coverTexture); @@ -34,9 +34,15 @@ public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTra } @Override - public FluidTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, - FluidTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { - byte signal = GT_Cover_LiquidMeter.computeSignalBasedOnFluid(aTileEntity, aCoverVariable.invert, aCoverVariable.threshold); + public FluidTransmitterData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + FluidTransmitterData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { + byte signal = GT_Cover_LiquidMeter.computeSignalBasedOnFluid( + aTileEntity, aCoverVariable.invert, aCoverVariable.threshold); long hash = hashCoverCoords(aTileEntity, aSide); setSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, signal); @@ -44,14 +50,14 @@ public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTra } @Override - public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, - ICoverable aTileEntity) { + public boolean letsRedstoneGoOutImpl( + byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, - ICoverable aTileEntity) { + protected boolean manipulatesSidedRedstoneOutputImpl( + byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } @@ -111,30 +117,32 @@ public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTra /** * GUI Stuff */ - @Override - public Object getClientGUIImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity, - EntityPlayer aPlayer, World aWorld) { + public Object getClientGUIImpl( + byte aSide, + int aCoverID, + FluidTransmitterData aCoverVariable, + ICoverable aTileEntity, + EntityPlayer aPlayer, + World aWorld) { return new FluidTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); } private class FluidTransmitterGUI extends TransmitterGUI { private final GT_GuiIntegerTextBox thresholdBox; - public FluidTransmitterGUI(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) { + public FluidTransmitterGUI( + byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) { super(aSide, aCoverID, aCoverVariable, aTileEntity, 1, 2); - thresholdBox = new GT_GuiShortTextBox(this,1, 1 + startX, 2 + startY, spaceX * 5 - 4, 12); + thresholdBox = new GT_GuiShortTextBox(this, 1, 1 + startX, 2 + startY, spaceX * 5 - 4, 12); } @Override public void drawExtras(int mouseX, int mouseY, float parTicks) { super.drawExtras(mouseX, mouseY, parTicks); - this.getFontRenderer().drawString( - GT_Utility.trans("222", "Fluid Threshold"), - startX + spaceX * 5, - 4 + startY, - textColor); + this.getFontRenderer() + .drawString(GT_Utility.trans("222", "Fluid Threshold"), startX + spaceX * 5, 4 + startY, textColor); } @Override diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java index b6970d89e0..2e632f5dd2 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java @@ -12,6 +12,9 @@ import gregtech.api.util.ISerializableObject; import gregtech.common.covers.GT_Cover_ItemMeter; import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase; import io.netty.buffer.ByteBuf; +import java.util.Collections; +import java.util.UUID; +import javax.annotation.Nonnull; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -20,11 +23,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import javax.annotation.Nonnull; -import java.util.Collections; -import java.util.UUID; - -public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTransmitterBase { +public class GT_Cover_WirelessItemDetector + extends GT_Cover_AdvancedRedstoneTransmitterBase { public GT_Cover_WirelessItemDetector(ITexture coverTexture) { super(ItemTransmitterData.class, coverTexture); @@ -41,8 +41,13 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran } @Override - public ItemTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, - ItemTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + public ItemTransmitterData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + ItemTransmitterData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { byte signal = GT_Cover_ItemMeter.computeSignalBasedOnItems( aTileEntity, aCoverVariable.invert, aCoverVariable.threshold, aCoverVariable.slot, aSide); long hash = hashCoverCoords(aTileEntity, aSide); @@ -52,14 +57,14 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran } @Override - public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, - ICoverable aTileEntity) { + public boolean letsRedstoneGoOutImpl( + byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, - ICoverable aTileEntity) { + protected boolean manipulatesSidedRedstoneOutputImpl( + byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } @@ -131,10 +136,14 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran /** * GUI Stuff */ - @Override - public Object getClientGUIImpl(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity, - EntityPlayer aPlayer, World aWorld) { + public Object getClientGUIImpl( + byte aSide, + int aCoverID, + ItemTransmitterData aCoverVariable, + ICoverable aTileEntity, + EntityPlayer aPlayer, + World aWorld) { return new ItemTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); } @@ -146,20 +155,34 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran private final int maxSlot; - public ItemTransmitterGUI(byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity) { + public ItemTransmitterGUI( + byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity) { super(aSide, aCoverID, aCoverVariable, aTileEntity, 0, 1); - if (tile instanceof TileEntity && !super.tile.isDead() && tile instanceof IGregTechTileEntity && - !(((IGregTechTileEntity) tile).getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase)) { + if (tile instanceof TileEntity + && !super.tile.isDead() + && tile instanceof IGregTechTileEntity + && !(((IGregTechTileEntity) tile).getMetaTileEntity() + instanceof GT_MetaTileEntity_DigitalChestBase)) { maxSlot = tile.getSizeInventory() - 1; } else { maxSlot = -1; } - thresholdBox = new GT_GuiShortTextBox(this, 1, 1 + startX, 2 + startY + spaceY * 2, spaceX * 5 - 4, 12, 0, getMaxCount()); - slotBox = new GT_GuiShortTextBox(this, 2, 1 + startX, 2 + startY + spaceY * 3, spaceX * 4 - 8, 12, -1, maxSlot, + thresholdBox = new GT_GuiShortTextBox( + this, 1, 1 + startX, 2 + startY + spaceY * 2, spaceX * 5 - 4, 12, 0, getMaxCount()); + slotBox = new GT_GuiShortTextBox( + this, + 2, + 1 + startX, + 2 + startY + spaceY * 3, + spaceX * 4 - 8, + 12, + -1, + maxSlot, Collections.singletonMap("-1", "All")); - fakeItemSlot = new GT_GuiFakeItemButton(this, startX + spaceX * 4 - 1, startY + spaceY * 3, GT_GuiIcon.SLOT_GRAY); + fakeItemSlot = + new GT_GuiFakeItemButton(this, startX + spaceX * 4 - 1, startY + spaceY * 3, GT_GuiIcon.SLOT_GRAY); slotBox.setEnabled(maxSlot >= 0); fakeItemSlot.setMimicSlot(true); @@ -168,16 +191,18 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran @Override public void drawExtras(int mouseX, int mouseY, float parTicks) { super.drawExtras(mouseX, mouseY, parTicks); - this.getFontRenderer().drawString( - GT_Utility.trans("221", "Item Threshold"), - startX + spaceX * 5, - 4 + startY + spaceY * 2, - textColor); - this.getFontRenderer().drawString( - GT_Utility.trans("254", "Detect Slot"), - startX + spaceX * 5, - 4 + startY + spaceY * 3, - textColor); + this.getFontRenderer() + .drawString( + GT_Utility.trans("221", "Item Threshold"), + startX + spaceX * 5, + 4 + startY + spaceY * 2, + textColor); + this.getFontRenderer() + .drawString( + GT_Utility.trans("254", "Detect Slot"), + startX + spaceX * 5, + 4 + startY + spaceY * 3, + textColor); } @Override @@ -217,8 +242,10 @@ public class GT_Cover_WirelessItemDetector extends GT_Cover_AdvancedRedstoneTran resetTextBox(thresholdBox); resetTextBox(slotBox); - if (coverVariable.slot >= 0 && tile instanceof TileEntity && !tile.isDead() && - tile.getSizeInventory() >= coverVariable.slot) { + if (coverVariable.slot >= 0 + && tile instanceof TileEntity + && !tile.isDead() + && tile.getSizeInventory() >= coverVariable.slot) { ItemStack itemStack = tile.getStackInSlot(coverVariable.slot); fakeItemSlot.setItem(itemStack); } else { diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java index 64ee1bb3bd..2505ce8d80 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java @@ -12,6 +12,8 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockB import gregtech.api.util.ISerializableObject; import gregtech.common.covers.GT_Cover_NeedMaintainance; import io.netty.buffer.ByteBuf; +import java.util.UUID; +import javax.annotation.Nonnull; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -21,10 +23,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import javax.annotation.Nonnull; -import java.util.UUID; - -public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedstoneTransmitterBase { +public class GT_Cover_WirelessMaintenanceDetector + extends GT_Cover_AdvancedRedstoneTransmitterBase< + GT_Cover_WirelessMaintenanceDetector.MaintenanceTransmitterData> { public GT_Cover_WirelessMaintenanceDetector(ITexture coverTexture) { super(MaintenanceTransmitterData.class, coverTexture); @@ -40,7 +41,8 @@ public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedst return createDataObject(); } - private static byte computeSignalBasedOnMaintenance(MaintenanceTransmitterData coverVariable, ICoverable tileEntity) { + private static byte computeSignalBasedOnMaintenance( + MaintenanceTransmitterData coverVariable, ICoverable tileEntity) { boolean signal = false; if (tileEntity instanceof IGregTechTileEntity) { @@ -73,8 +75,7 @@ public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedst } else { long expectedDamage = Math.round(Math.min( (double) multiTE.mEUt / multiTE.damageFactorLow, - Math.pow(multiTE.mEUt, multiTE.damageFactorHigh) - )); + Math.pow(multiTE.mEUt, multiTE.damageFactorHigh))); signal = current + expectedDamage * 2 >= max; } } else { @@ -87,34 +88,40 @@ public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedst if (coverVariable.invert) { signal = !signal; } - + return (byte) (signal ? 15 : 0); } @Override - public MaintenanceTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, - MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + public MaintenanceTransmitterData doCoverThingsImpl( + byte aSide, + byte aInputRedstone, + int aCoverID, + MaintenanceTransmitterData aCoverVariable, + ICoverable aTileEntity, + long aTimer) { byte signal = computeSignalBasedOnMaintenance(aCoverVariable, aTileEntity); long hash = hashCoverCoords(aTileEntity, aSide); setSignalAt(aCoverVariable.getUuid(), aCoverVariable.getFrequency(), hash, signal); - + return aCoverVariable; } @Override - public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, - ICoverable aTileEntity) { + public boolean letsRedstoneGoOutImpl( + byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, - ICoverable aTileEntity) { + protected boolean manipulatesSidedRedstoneOutputImpl( + byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - public int getTickRateImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { + public int getTickRateImpl( + byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { return 60; } @@ -184,15 +191,19 @@ public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedst /** * GUI Stuff */ - - private static final String[] extraTexts = new String[]{ - "No Issues", ">= 1 Issue", ">= 2 Issues", ">= 3 Issues", - ">= 4 Issues", ">= 5 Issues", "Rotor < 80%", "Rotor < 100%" + private static final String[] extraTexts = new String[] { + "No Issues", ">= 1 Issue", ">= 2 Issues", ">= 3 Issues", + ">= 4 Issues", ">= 5 Issues", "Rotor < 80%", "Rotor < 100%" }; @Override - public Object getClientGUIImpl(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity, - EntityPlayer aPlayer, World aWorld) { + public Object getClientGUIImpl( + byte aSide, + int aCoverID, + MaintenanceTransmitterData aCoverVariable, + ICoverable aTileEntity, + EntityPlayer aPlayer, + World aWorld) { return new MaintenanceTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); } @@ -201,13 +212,20 @@ public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedst private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverBig.png"; private static final int maintenanceButtonIdStart = 2; - public MaintenanceTransmitterGUI(byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { + public MaintenanceTransmitterGUI( + byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) { super(aSide, aCoverID, aCoverVariable, aTileEntity); this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath); this.gui_height = 143; for (int i = 0; i < 8; ++i) { - new GT_GuiIconCheckButton(this, maintenanceButtonIdStart + i, startX + spaceX * (i % 2 == 0 ? 0 : 6), startY + spaceY * (2 + i / 2), GT_GuiIcon.CHECKMARK, null); + new GT_GuiIconCheckButton( + this, + maintenanceButtonIdStart + i, + startX + spaceX * (i % 2 == 0 ? 0 : 6), + startY + spaceY * (2 + i / 2), + GT_GuiIcon.CHECKMARK, + null); } } @@ -215,11 +233,12 @@ public class GT_Cover_WirelessMaintenanceDetector extends GT_Cover_AdvancedRedst public void drawExtras(int mouseX, int mouseY, float parTicks) { super.drawExtras(mouseX, mouseY, parTicks); for (int i = 0; i < 8; ++i) { - this.getFontRenderer().drawString( - extraTexts[i], - startX + spaceX * (i % 2 == 0 ? 1 : 7), - 4 + startY + spaceY * (2 + i / 2), - textColor); + this.getFontRenderer() + .drawString( + extraTexts[i], + startX + spaceX * (i % 2 == 0 ? 1 : 7), + 4 + startY + spaceY * (2 + i / 2), + textColor); } } diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java index 49be6aa843..5ec670aea5 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java @@ -4719,7 +4719,7 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { ItemList.Cover_NeedsMaintainance.get(1L), TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_MAINTENANCE_DETECTOR)), new GT_Cover_NeedMaintainance(TextureFactory.of(OVERLAY_MAINTENANCE_DETECTOR))); - + GT_Values.RA.addAssemblerRecipe( new ItemStack[] { ItemList.Emitter_MV.get(1L), diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index 881cbd41c4..a5d8469f8b 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -1,5 +1,7 @@ package gregtech.common.items; +import static gregtech.api.enums.Textures.BlockIcons.*; + import gregtech.api.GregTech_API; import gregtech.api.enums.Dyes; import gregtech.api.enums.GT_Values; @@ -39,8 +41,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.world.World; -import static gregtech.api.enums.Textures.BlockIcons.*; - public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { public static GT_MetaGenerated_Item_02 INSTANCE; private static final String aTextCover = "Usable as Cover"; @@ -2306,98 +2306,97 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { new GT_FoodStat(1, 0.1F, EnumAction.eat, null, false, true, false), new TC_Aspects.TC_AspectStack(TC_Aspects.FAMES, 1L))); - - ItemList.Cover_AdvancedRedstoneTransmitterExternal.set(addItem( - tLastID = 577, - "Advanced Redstone Transmitter (External)", - "Transfers Redstone signals wirelessly", - new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + tLastID = 577, + "Advanced Redstone Transmitter (External)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); ItemList.Cover_AdvancedRedstoneTransmitterInternal.set(addItem( - tLastID = 578, - "Advanced Redstone Transmitter (Internal)", - "Transfers Redstone signals wirelessly", - new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + tLastID = 578, + "Advanced Redstone Transmitter (Internal)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); ItemList.Cover_AdvancedRedstoneReceiverExternal.set(addItem( - tLastID = 579, - "Advanced Redstone Receiver (External)", - "Transfers Redstone signals wirelessly", - new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + tLastID = 579, + "Advanced Redstone Receiver (External)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); ItemList.Cover_AdvancedRedstoneReceiverInternal.set(addItem( - tLastID = 580, - "Advanced Redstone Receiver (Internal)", - "Transfers Redstone signals wirelessly", - new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); + tLastID = 580, + "Advanced Redstone Receiver (Internal)", + "Transfers Redstone signals wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L))); ItemList.Cover_WirelessFluidDetector.set(addItem( - tLastID = 581, - "Wireless Fluid Detector Cover", - "Transfers Fluid Amount as Redstone wirelessly", - new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 1L))); + tLastID = 581, + "Wireless Fluid Detector Cover", + "Transfers Fluid Amount as Redstone wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 1L))); ItemList.Cover_WirelessItemDetector.set(addItem( - tLastID = 582, - "Wireless Item Detector Cover", - "Transfers Item Amount as Redstone wirelessly", - new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), - new TC_Aspects.TC_AspectStack(TC_Aspects.TERRA, 1L))); + tLastID = 582, + "Wireless Item Detector Cover", + "Transfers Item Amount as Redstone wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 2L), + new TC_Aspects.TC_AspectStack(TC_Aspects.TERRA, 1L))); ItemList.Cover_WirelessNeedsMaintainance.set(addItem( - tLastID = 583, - "Wireless Needs Maintenance Cover", - "Transfers Maintenance Issues as Redstone wirelessly", - new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 4L), - new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 3L))); + tLastID = 583, + "Wireless Needs Maintenance Cover", + "Transfers Maintenance Issues as Redstone wirelessly", + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 4L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 3L))); GregTech_API.registerCover( - ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER)), - new GT_Cover_AdvancedRedstoneTransmitterExternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER))); + ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER)), + new GT_Cover_AdvancedRedstoneTransmitterExternal( + TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER))); GregTech_API.registerCover( - ItemList.Cover_AdvancedRedstoneTransmitterInternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER)), - new GT_Cover_AdvancedRedstoneTransmitterInternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER))); + ItemList.Cover_AdvancedRedstoneTransmitterInternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER)), + new GT_Cover_AdvancedRedstoneTransmitterInternal( + TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_TRANSMITTER))); GregTech_API.registerCover( - ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER)), - new GT_Cover_AdvancedRedstoneReceiverExternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER))); + ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER)), + new GT_Cover_AdvancedRedstoneReceiverExternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER))); GregTech_API.registerCover( - ItemList.Cover_AdvancedRedstoneReceiverInternal.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER)), - new GT_Cover_AdvancedRedstoneReceiverInternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER))); + ItemList.Cover_AdvancedRedstoneReceiverInternal.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER)), + new GT_Cover_AdvancedRedstoneReceiverInternal(TextureFactory.of(OVERLAY_ADVANCED_REDSTONE_RECEIVER))); GregTech_API.registerCover( - ItemList.Cover_WirelessFluidDetector.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_FLUID_DETECTOR)), - new GT_Cover_WirelessFluidDetector(TextureFactory.of(OVERLAY_WIRELESS_FLUID_DETECTOR))); + ItemList.Cover_WirelessFluidDetector.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_FLUID_DETECTOR)), + new GT_Cover_WirelessFluidDetector(TextureFactory.of(OVERLAY_WIRELESS_FLUID_DETECTOR))); GregTech_API.registerCover( - ItemList.Cover_WirelessItemDetector.get(1L), - TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_ITEM_DETECTOR)), - new GT_Cover_WirelessItemDetector(TextureFactory.of(OVERLAY_WIRELESS_ITEM_DETECTOR))); + ItemList.Cover_WirelessItemDetector.get(1L), + TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_ITEM_DETECTOR)), + new GT_Cover_WirelessItemDetector(TextureFactory.of(OVERLAY_WIRELESS_ITEM_DETECTOR))); GregTech_API.registerCover( ItemList.Cover_WirelessNeedsMaintainance.get(1L), TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(OVERLAY_WIRELESS_MAINTENANCE_DETECTOR)), new GT_Cover_WirelessMaintenanceDetector(TextureFactory.of(OVERLAY_WIRELESS_MAINTENANCE_DETECTOR))); - GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - ItemList.Cover_RedstoneTransmitterExternal.get(1L), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1L), - GT_Utility.getIntegratedCircuit(1) + ItemList.Cover_RedstoneTransmitterExternal.get(1L), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1L), + GT_Utility.getIntegratedCircuit(1) }, GT_Values.NF, ItemList.Cover_AdvancedRedstoneTransmitterExternal.get(1L), @@ -2406,9 +2405,9 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - ItemList.Cover_RedstoneReceiverExternal.get(1L), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1L), - GT_Utility.getIntegratedCircuit(1) + ItemList.Cover_RedstoneReceiverExternal.get(1L), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1L), + GT_Utility.getIntegratedCircuit(1) }, GT_Values.NF, ItemList.Cover_AdvancedRedstoneReceiverExternal.get(1L), @@ -2417,9 +2416,9 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - ItemList.Cover_FluidDetector.get(1L), - ItemList.Emitter_EV.get(1L), - GT_Utility.getIntegratedCircuit(1) + ItemList.Cover_FluidDetector.get(1L), + ItemList.Emitter_EV.get(1L), + GT_Utility.getIntegratedCircuit(1) }, GT_Values.NF, ItemList.Cover_WirelessFluidDetector.get(1L), @@ -2428,9 +2427,7 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - ItemList.Cover_ItemDetector.get(1L), - ItemList.Emitter_EV.get(1L), - GT_Utility.getIntegratedCircuit(1) + ItemList.Cover_ItemDetector.get(1L), ItemList.Emitter_EV.get(1L), GT_Utility.getIntegratedCircuit(1) }, GT_Values.NF, ItemList.Cover_WirelessItemDetector.get(1L), @@ -2439,9 +2436,9 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - ItemList.Cover_NeedsMaintainance.get(1L), - ItemList.Emitter_EV.get(1L), - GT_Utility.getIntegratedCircuit(1) + ItemList.Cover_NeedsMaintainance.get(1L), + ItemList.Emitter_EV.get(1L), + GT_Utility.getIntegratedCircuit(1) }, GT_Values.NF, ItemList.Cover_WirelessNeedsMaintainance.get(1L), -- cgit