aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatej Dipčár <492666@mail.muni.cz>2022-09-21 04:18:40 +0200
committerMatej Dipčár <492666@mail.muni.cz>2022-09-23 02:15:47 +0200
commit594b87668a456fb4483a8bf1fa3743763950477b (patch)
tree26cc26851a104031895f23baf171d5014a92e92a /src
parent941235269fef3e6fb72ffc860b5b0f0c78e8d8ed (diff)
downloadGT5-Unofficial-594b87668a456fb4483a8bf1fa3743763950477b.tar.gz
GT5-Unofficial-594b87668a456fb4483a8bf1fa3743763950477b.tar.bz2
GT5-Unofficial-594b87668a456fb4483a8bf1fa3743763950477b.zip
Make abstract wireless base
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java185
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java183
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java192
-rw-r--r--src/main/java/gregtech/common/covers/redstone/IWirelessObject.java14
4 files changed, 250 insertions, 324 deletions
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<GT_Cover_AdvancedRedstoneReceiverBase.ReceiverData> {
+public abstract class GT_Cover_AdvancedRedstoneReceiverBase extends GT_Cover_AdvancedWirelessRedstoneBase<GT_Cover_AdvancedRedstoneReceiverBase.ReceiverData> {
public GT_Cover_AdvancedRedstoneReceiverBase(ITexture coverTexture) {
super(ReceiverData.class, coverTexture);
@@ -46,57 +35,18 @@ public class GT_Cover_AdvancedRedstoneReceiverBase extends GT_CoverBehaviorBase<
}
@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<GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData> {
+public abstract class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_Cover_AdvancedWirelessRedstoneBase<GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData> {
public GT_Cover_AdvancedRedstoneTransmitterBase(ITexture coverTexture) {
super(TransmitterData.class, coverTexture);
@@ -54,60 +45,21 @@ public class GT_Cover_AdvancedRedstoneTransmitterBase extends GT_CoverBehaviorBa
}
@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<T extends IWirelessObject> extends GT_CoverBehaviorBase<T> {
+
+ public GT_Cover_AdvancedWirelessRedstoneBase(Class<T> 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);
+}