aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers/redstone
diff options
context:
space:
mode:
authorMatej Dipčár <492666@mail.muni.cz>2022-09-21 18:50:50 +0200
committerMatej Dipčár <492666@mail.muni.cz>2022-09-23 02:15:52 +0200
commitbb4e90ecb495ba4f6b03ac450c7401ebcc5408f3 (patch)
treec328820aa598c753a86d4f59e29e0d5681b76b8e /src/main/java/gregtech/common/covers/redstone
parent8491230594480a2fefc8f2b8df7d5f379fd35054 (diff)
downloadGT5-Unofficial-bb4e90ecb495ba4f6b03ac450c7401ebcc5408f3.tar.gz
GT5-Unofficial-bb4e90ecb495ba4f6b03ac450c7401ebcc5408f3.tar.bz2
GT5-Unofficial-bb4e90ecb495ba4f6b03ac450c7401ebcc5408f3.zip
Add Wireless Fluid Detector Cover
Diffstat (limited to 'src/main/java/gregtech/common/covers/redstone')
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java54
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java171
2 files changed, 198 insertions, 27 deletions
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<T extends GT_Cover_A
return true;
}
- protected abstract class WirelessGUI<X extends WirelessData> extends GT_GUICover {
+ protected abstract static class WirelessGUI<X extends WirelessData> extends GT_GUICover {
protected final byte side;
protected final int coverID;
@@ -251,17 +251,21 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase<T extends GT_Cover_A
frequencyBox.setFocused(true);
}
+ protected void genericMouseWheel(GT_GuiIntegerTextBox box, int delta, int maxValue, int minValue) {
+ long step = Math.max(1, Math.abs(delta / 120));
+ step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 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<T extends GT_Cover_A
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;
+ 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<GT_Cover_WirelessFluidDetector.FluidTransmitterData> {
+
+ 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<FluidTransmitterData> {
+ 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);
+ }
+ }
+}