aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-02-20 14:07:55 +0900
committermiozune <miozune@gmail.com>2023-02-20 14:07:55 +0900
commit5847ecfd38737ad49e483c1d8b197f27f89124b5 (patch)
tree4c6c5a8854a1eba8a72e26a476bf804386a31064
parentf1f15c9297538e07f79944fe434aad33c4da193f (diff)
downloadGT5-Unofficial-5847ecfd38737ad49e483c1d8b197f27f89124b5.tar.gz
GT5-Unofficial-5847ecfd38737ad49e483c1d8b197f27f89124b5.tar.bz2
GT5-Unofficial-5847ecfd38737ad49e483c1d8b197f27f89124b5.zip
Use ModularUI method for sending Ender Fluid Link Cover message
-rw-r--r--src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java7
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java136
-rw-r--r--src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java106
3 files changed, 34 insertions, 215 deletions
diff --git a/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java b/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java
index 105452f3d2..1f53928360 100644
--- a/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java
+++ b/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java
@@ -4,7 +4,6 @@ import static com.github.technus.tectech.Reference.MODID;
import com.github.technus.tectech.mechanics.data.ChunkDataMessage;
import com.github.technus.tectech.mechanics.data.PlayerDataMessage;
-import com.github.technus.tectech.mechanics.enderStorage.EnderLinkCoverMessage;
import com.github.technus.tectech.mechanics.pipe.PipeActivityMessage;
import com.github.technus.tectech.mechanics.spark.RendererMessage;
@@ -30,11 +29,5 @@ public class NetworkDispatcher extends eu.usrv.yamcore.network.PacketDispatcher
registerMessage(PlayerDataMessage.ClientHandler.class, PlayerDataMessage.PlayerDataData.class);
registerMessage(RendererMessage.ClientHandler.class, RendererMessage.RendererData.class);
-
- registerMessage(EnderLinkCoverMessage.ServerHandler.class, EnderLinkCoverMessage.EnderLinkCoverQuery.class);
- registerMessage(
- EnderLinkCoverMessage.ServerUpdateHandler.class,
- EnderLinkCoverMessage.EnderLinkCoverUpdate.class);
- registerMessage(EnderLinkCoverMessage.ClientHandler.class, EnderLinkCoverMessage.EnderLinkCoverData.class);
}
}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java b/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java
deleted file mode 100644
index e1484d566f..0000000000
--- a/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package com.github.technus.tectech.mechanics.enderStorage;
-
-import static com.github.technus.tectech.mechanics.enderStorage.EnderWorldSavedData.bindEnderLinkTag;
-import static com.github.technus.tectech.mechanics.enderStorage.EnderWorldSavedData.getEnderLinkTag;
-import static com.github.technus.tectech.thing.cover.GT_Cover_TM_EnderFluidLink.setEnderLinkTag;
-
-import java.io.*;
-import java.util.Arrays;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraftforge.fluids.IFluidHandler;
-
-import cpw.mods.fml.common.network.simpleimpl.IMessage;
-import cpw.mods.fml.common.network.simpleimpl.MessageContext;
-import eu.usrv.yamcore.network.client.AbstractClientMessageHandler;
-import eu.usrv.yamcore.network.server.AbstractServerMessageHandler;
-import gregtech.api.metatileentity.BaseMetaTileEntity;
-import io.netty.buffer.ByteBuf;
-
-public class EnderLinkCoverMessage implements IMessage {
-
- EnderLinkTankWithTag messageData;
-
- public EnderLinkCoverMessage() {}
-
- @Override
- public void fromBytes(ByteBuf pBuffer) {
- try {
- // I'd love to know why I need to offset by one byte for this to work
- byte[] boop = pBuffer.array();
- boop = Arrays.copyOfRange(boop, 1, boop.length);
- InputStream is = new ByteArrayInputStream(boop);
- ObjectInputStream ois = new ObjectInputStream(is);
- Object data = ois.readObject();
- messageData = (EnderLinkTankWithTag) data;
- } catch (Exception ignore) {}
- }
-
- @Override
- public void toBytes(ByteBuf pBuffer) {
- try {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(baos);
- oos.writeObject(messageData);
- oos.flush();
- InputStream is = new ByteArrayInputStream(baos.toByteArray());
- pBuffer.writeBytes(is, baos.toByteArray().length);
- } catch (Exception ignore) {}
- }
-
- public static class EnderLinkCoverQuery extends EnderLinkCoverMessage {
-
- public EnderLinkCoverQuery() {}
-
- public EnderLinkCoverQuery(EnderLinkTag tag, IFluidHandler fluidHandler) {
- messageData = new EnderLinkTankWithTag(tag, fluidHandler);
- }
- }
-
- public static class EnderLinkCoverUpdate extends EnderLinkCoverMessage {
-
- public EnderLinkCoverUpdate() {}
-
- public EnderLinkCoverUpdate(EnderLinkTag tag, IFluidHandler fluidHandler) {
- messageData = new EnderLinkTankWithTag(tag, fluidHandler);
- }
- }
-
- public static class EnderLinkCoverData extends EnderLinkCoverMessage {
-
- public EnderLinkCoverData() {}
-
- public EnderLinkCoverData(EnderLinkTag tag, IFluidHandler fluidHandler) {
- messageData = new EnderLinkTankWithTag(tag, fluidHandler);
- }
- }
-
- public static class ServerHandler extends AbstractServerMessageHandler<EnderLinkCoverQuery> {
-
- @Override
- public IMessage handleServerMessage(EntityPlayer pPlayer, EnderLinkCoverQuery pMessage, MessageContext pCtx) {
- IMessage reply = null;
- if (pMessage.messageData != null) {
- reply = new EnderLinkCoverData(
- getEnderLinkTag(pMessage.messageData.getFluidHandler()),
- pMessage.messageData.getFluidHandler());
- }
- return reply;
- }
- }
-
- public static class ServerUpdateHandler extends AbstractServerMessageHandler<EnderLinkCoverUpdate> {
-
- @Override
- public IMessage handleServerMessage(EntityPlayer pPlayer, EnderLinkCoverUpdate pMessage, MessageContext pCtx) {
- if (pMessage.messageData != null) {
- EnderLinkTag tag = pMessage.messageData.getTag();
- IFluidHandler handler = pMessage.messageData.getFluidHandler();
- if (tag.getUUID() == null) {
- bindEnderLinkTag(handler, tag);
- } else if (handler instanceof BaseMetaTileEntity) {
- BaseMetaTileEntity baseTile = (BaseMetaTileEntity) handler;
- if (tag.getUUID().equals(baseTile.getOwnerUuid())) {
- bindEnderLinkTag(handler, tag);
- }
- }
- }
- return null;
- }
- }
-
- public static class ClientHandler extends AbstractClientMessageHandler<EnderLinkCoverData> {
-
- @Override
- public IMessage handleClientMessage(EntityPlayer pPlayer, EnderLinkCoverData pMessage, MessageContext pCtx) {
- if (pMessage.messageData != null) {
- setEnderLinkTag(pMessage.messageData.getTag());
- }
- return null;
- }
- }
-
- private static class EnderLinkTankWithTag extends EnderLinkTank {
-
- private final EnderLinkTag tag;
-
- public EnderLinkTankWithTag(EnderLinkTag tag, IFluidHandler fluidHandler) {
- super(fluidHandler);
- this.tag = tag;
- }
-
- public EnderLinkTag getTag() {
- return tag;
- }
- }
-}
diff --git a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java
index 53500c683e..8baabd7683 100644
--- a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java
+++ b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java
@@ -11,9 +11,8 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
-import com.github.technus.tectech.loader.NetworkDispatcher;
-import com.github.technus.tectech.mechanics.enderStorage.EnderLinkCoverMessage;
import com.github.technus.tectech.mechanics.enderStorage.EnderLinkTag;
+import com.github.technus.tectech.mechanics.enderStorage.EnderWorldSavedData;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.math.Color;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
@@ -24,6 +23,7 @@ import eu.usrv.yamcore.auxiliary.PlayerChatHelper;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.tileentity.ICoverable;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
@@ -35,18 +35,9 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior {
private static final int L_PER_TICK = 8000;
private static final int IMPORT_EXPORT_MASK = 0b0001;
private static final int PUBLIC_PRIVATE_MASK = 0b0010;
- private static EnderLinkTag tag = new EnderLinkTag("", null); // Client-Sided
public GT_Cover_TM_EnderFluidLink() {}
- public static void setEnderLinkTag(EnderLinkTag inputTag) {
- if (inputTag != null) {
- tag = inputTag;
- // Hacky Way to update the gui
- GUI_INSTANCE.resetTextField();
- }
- }
-
private void transferFluid(IFluidHandler source, byte sSide, IFluidHandler target, byte tSide, int amount) {
FluidStack fluidStack = source.drain(ForgeDirection.getOrientation(sSide), amount, false);
@@ -116,8 +107,6 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior {
// region GUI
- private static EnderFluidLinkUIFactory GUI_INSTANCE;
-
@Override
public boolean hasCoverGUI() {
return true;
@@ -148,8 +137,6 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior {
private static final int IMPORT_BUTTON_ID = 2;
private static final int EXPORT_BUTTON_ID = 3;
- private TextFieldWidget frequencyField;
-
public EnderFluidLinkUIFactory(GT_CoverUIBuildContext buildContext) {
super(buildContext);
}
@@ -157,31 +144,29 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior {
@SuppressWarnings("PointlessArithmeticExpression")
@Override
protected void addUIWidgets(ModularWindow.Builder builder) {
- NetworkDispatcher.INSTANCE.sendToServer(
- new EnderLinkCoverMessage.EnderLinkCoverQuery(tag, (IFluidHandler) getUIBuildContext().getTile()));
- GUI_INSTANCE = this;
- frequencyField = new TextFieldWidget() {
-
- @Override
- public void onRemoveFocus() {
- super.onRemoveFocus();
- try {
- String string = getText();
- tag = new EnderLinkTag(string, tag.getUUID());
- NetworkDispatcher.INSTANCE.sendToServer(
- new EnderLinkCoverMessage.EnderLinkCoverUpdate(
- tag,
- (IFluidHandler) getUIBuildContext().getTile()));
- } catch (NumberFormatException ignored) {}
- resetTextField();
+ TextFieldWidget frequencyField = new TextFieldWidget();
+ builder.widget(frequencyField.setGetter(() -> {
+ ICoverable te = getUIBuildContext().getTile();
+ if (!frequencyField.isClient() && te instanceof IFluidHandler) {
+ return EnderWorldSavedData.getEnderLinkTag((IFluidHandler) te).getFrequency();
}
- };
-
- builder.widget(
- frequencyField.setTextColor(Color.WHITE.dark(1)).setTextAlignment(Alignment.CenterLeft)
- .setFocusOnGuiOpen(true)
- .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2))
- .setPos(START_X + SPACE_X * 0, START_Y + SPACE_Y * 0).setSize(SPACE_X * 5 - 8, 12))
+ return "";
+ }).setSetter(val -> {
+ ICoverable te = getUIBuildContext().getTile();
+ if (!frequencyField.isClient() && te instanceof IFluidHandler) {
+ UUID uuid;
+ if (testBit(convert(getCoverData()), PUBLIC_PRIVATE_MASK)) {
+ uuid = getUUID();
+ if (!(te instanceof IGregTechTileEntity)) return;
+ if (!uuid.equals(((IGregTechTileEntity) te).getOwnerUuid())) return;
+ } else {
+ uuid = null;
+ }
+ EnderWorldSavedData.bindEnderLinkTag((IFluidHandler) te, new EnderLinkTag(val, uuid));
+ }
+ }).setTextColor(Color.WHITE.dark(1)).setTextAlignment(Alignment.CenterLeft).setFocusOnGuiOpen(true)
+ .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2))
+ .setPos(START_X + SPACE_X * 0, START_Y + SPACE_Y * 0).setSize(SPACE_X * 5 - 8, 12))
.widget(
new CoverDataControllerWidget.CoverDataIndexedControllerWidget_ToggleButtons<>(
this::getCoverData,
@@ -237,59 +222,36 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior {
new TextWidget(GT_Utility.trans("229", "Import/Export"))
.setDefaultColor(COLOR_TEXT_GRAY.get())
.setPos(START_X + SPACE_X * 2, 4 + START_Y + SPACE_Y * 3));
-
- resetTextField();
}
private int getNewCoverVariable(int id, int coverVariable) {
- int tempCoverVariable = coverVariable;
switch (id) {
case PUBLIC_BUTTON_ID:
case PRIVATE_BUTTON_ID:
- tempCoverVariable = toggleBit(tempCoverVariable, PUBLIC_PRIVATE_MASK);
- switchPrivatePublic(tempCoverVariable);
- break;
+ return toggleBit(coverVariable, PUBLIC_PRIVATE_MASK);
case IMPORT_BUTTON_ID:
case EXPORT_BUTTON_ID:
- tempCoverVariable = toggleBit(tempCoverVariable, IMPORT_EXPORT_MASK);
+ return toggleBit(coverVariable, IMPORT_EXPORT_MASK);
}
- return tempCoverVariable;
+ return coverVariable;
}
private boolean getClickable(int id, int coverVariable) {
- boolean canBeClicked = false;
switch (id) {
case PUBLIC_BUTTON_ID:
- canBeClicked = testBit(coverVariable, PUBLIC_PRIVATE_MASK);
- break;
+ return testBit(coverVariable, PUBLIC_PRIVATE_MASK);
case PRIVATE_BUTTON_ID:
- canBeClicked = !testBit(coverVariable, PUBLIC_PRIVATE_MASK);
- break;
+ return !testBit(coverVariable, PUBLIC_PRIVATE_MASK);
case IMPORT_BUTTON_ID:
- canBeClicked = testBit(coverVariable, IMPORT_EXPORT_MASK);
- break;
+ return testBit(coverVariable, IMPORT_EXPORT_MASK);
case EXPORT_BUTTON_ID:
- canBeClicked = !testBit(coverVariable, IMPORT_EXPORT_MASK);
+ return !testBit(coverVariable, IMPORT_EXPORT_MASK);
}
- return canBeClicked;
- }
-
- private void resetTextField() {
- frequencyField.setText(tag.getFrequency());
+ return false;
}
- private void switchPrivatePublic(int coverVar) {
- UUID ownerUUID;
- if (testBit(coverVar, PUBLIC_PRIVATE_MASK)) {
- ownerUUID = getUIBuildContext().getPlayer().getUniqueID();
- } else {
- ownerUUID = null;
- }
- EnderLinkTag newTag = new EnderLinkTag(tag.getFrequency(), ownerUUID);
- NetworkDispatcher.INSTANCE.sendToServer(
- new EnderLinkCoverMessage.EnderLinkCoverUpdate(
- newTag,
- (IFluidHandler) getUIBuildContext().getTile()));
+ private UUID getUUID() {
+ return getUIBuildContext().getPlayer().getUniqueID();
}
}
}