From e49a886b31e826a32b973ba3f2324063f6fe66a3 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Fri, 25 Jun 2021 14:49:25 +0800 Subject: Fix redstone cover UX being weird Signed-off-by: Glease <4586901+Glease@users.noreply.github.com> --- .../java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main/java/gregtech/common/covers') 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 7070b7ad18..93a729d0c2 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java @@ -222,7 +222,7 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { @Override public void resetTextBox(GT_GuiIntegerTextBox box) { - box.setText(String.valueOf(0)); + box.setText(String.valueOf(coverVariable & PUBLIC_MASK)); } @Override @@ -256,7 +256,8 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { public boolean textboxKeyTyped(char c, int key) { int tValue = 0; - super.textboxKeyTyped(c, key); + if(!super.textboxKeyTyped(c, key)) + return false; int cursorPos = this.getCursorPosition(); -- cgit From 5d7ce33879dcfe28783bcc8ad75d965cdf266196 Mon Sep 17 00:00:00 2001 From: GlodBlock <60341015+GlodBlock@users.noreply.github.com> Date: Fri, 25 Jun 2021 22:25:24 +0800 Subject: add item filter cover This stuff will be rewritten when cover supports NBT. --- .../common/covers/GT_Cover_ItemFilter.java | 222 +++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java (limited to 'src/main/java/gregtech/common/covers') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java new file mode 100644 index 0000000000..9a21fdb378 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java @@ -0,0 +1,222 @@ +package gregtech.common.covers; + +import gregtech.api.enums.GT_Values; +import gregtech.api.gui.GT_GUICover; +import gregtech.api.gui.widgets.GT_GuiFakeItemButton; +import gregtech.api.gui.widgets.GT_GuiIcon; +import gregtech.api.gui.widgets.GT_GuiIconButton; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.net.GT_Packet_TileEntityCover; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fluids.Fluid; + +import java.util.LinkedList; +import java.util.List; + +import static gregtech.api.util.GT_Utility.*; + +public class GT_Cover_ItemFilter extends GT_CoverBehavior { + + private final boolean mExport; + + public GT_Cover_ItemFilter(boolean isExport){ + this.mExport = isExport; + } + + @Override + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { + TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide); + Object fromEntity = mExport ? aTileEntity : tTileEntity, + toEntity = !mExport ? aTileEntity : tTileEntity; + byte fromSide = !mExport ? GT_Utility.getOppositeSide(aSide) : aSide, + toSide = mExport ? GT_Utility.getOppositeSide(aSide) : aSide; + + int FilterId = aCoverVariable >> 1; + List Filter = new LinkedList() {{add(intToStack(FilterId));}}; + + boolean isWhiteList = (aCoverVariable & 1) != 0; + + moveMultipleItemStacks(fromEntity, toEntity, fromSide , toSide, Filter, isWhiteList, (byte) 64, (byte) 1, (byte) 64, (byte) 1,64); + + return aCoverVariable; + } + + @Override + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ){ + ItemStack tStack = aPlayer.inventory.getCurrentItem(); + if (tStack != null){ + aCoverVariable = (stackToInt(tStack) << 1) + (aCoverVariable & 1); + aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); + GT_Utility.sendChatToPlayer(aPlayer, trans("301", "Item Filter: ") + tStack.getDisplayName()); + } + else{ + aCoverVariable = aCoverVariable & 1; + aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); + GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Clear Filter!")); + } + return true; + } + + @Override + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { + int model = aCoverVariable & 1; + if (model == 1) model = 0; + else model = 1; + if (model == 1){ + GT_Utility.sendChatToPlayer(aPlayer, trans("124", "Black List Model")); + } + else{ + GT_Utility.sendChatToPlayer(aPlayer, trans("125", "White List Model")); + } + aCoverVariable = (aCoverVariable & ~0x1) + model; + return aCoverVariable; + } + + @Override + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return false; + } + + @Override + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return false; + } + + @Override + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return 1; + } + + /** + * GUI Stuff + */ + + @Override + public boolean hasCoverGUI() { + return true; + } + + @Override + public Object getClientGUI(byte aSide, int aCoverID, int coverData, ICoverable aTileEntity) { + return new GT_Cover_ItemFilter.GUI(aSide, aCoverID, coverData, aTileEntity); + } + + private class GUI extends GT_GUICover { + private final byte side; + private final int coverID; + private int coverVariable; + private final GT_GuiFakeItemButton itemFilterButtons; + + private static final int startX = 10; + private static final int startY = 25; + private static final int spaceX = 18; + private static final int spaceY = 18; + + public GUI(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID)); + this.side = aSide; + this.coverID = aCoverID; + this.coverVariable = aCoverVariable; + + GT_GuiIconButton b; + b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.WHITELIST).setTooltipText(trans("125","White List")); + b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.BLACKLIST).setTooltipText(trans("124","Black List")); + + itemFilterButtons = new GT_GuiFakeItemButton(this ,startX + spaceX*0, startY+spaceY*3, GT_GuiIcon.SLOT_GRAY); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.fontRendererObj.drawString(trans("302", "Check Model"), startX + spaceX*2, 3+startY+spaceY*0, 0xFF555555); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + updateButtons(); + } + + @Override + public void buttonClicked(GuiButton btn){ + if (getClickable(btn.id)){ + coverVariable = getNewCoverVariable(btn.id); + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + } + updateButtons(); + } + + private void updateButtons(){ + GuiButton b; + for (Object o : buttonList) { + b = (GuiButton) o; + b.enabled = getClickable(b.id); + } + ItemStack tItemStack = intToStack(coverVariable >> 1); + if (tItemStack != null){ + itemFilterButtons.setItem(tItemStack); + return; + } + itemFilterButtons.setItem(null); + } + + private int getNewCoverVariable(int id) { + switch (id) { + case 0: + return coverVariable & ~0x1; + case 1: + return coverVariable | 0x1; + } + return coverVariable; + } + + private boolean getClickable(int id) { + switch (id) { + case 0: + return (0x1 & coverVariable) != 0; + case 1: + return (0x1 & coverVariable) == 0; + } + return false; + } + } +} -- cgit From 652369d6e9b80db6ba4e417fea138efaf3f7356d Mon Sep 17 00:00:00 2001 From: GlodBlock <60341015+GlodBlock@users.noreply.github.com> Date: Sat, 26 Jun 2021 12:40:08 +0800 Subject: fix the typo --- .../common/covers/GT_Cover_ItemFilter.java | 36 +++++++++++----------- 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'src/main/java/gregtech/common/covers') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java index 9a21fdb378..6ad9332a52 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.Fluid; -import java.util.LinkedList; +import java.util.Collections; import java.util.List; import static gregtech.api.util.GT_Utility.*; @@ -36,11 +36,9 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior { byte fromSide = !mExport ? GT_Utility.getOppositeSide(aSide) : aSide, toSide = mExport ? GT_Utility.getOppositeSide(aSide) : aSide; - int FilterId = aCoverVariable >> 1; - List Filter = new LinkedList() {{add(intToStack(FilterId));}}; - + int FilterId = aCoverVariable >>> 1; + List Filter = Collections.singletonList(intToStack(FilterId)); boolean isWhiteList = (aCoverVariable & 1) != 0; - moveMultipleItemStacks(fromEntity, toEntity, fromSide , toSide, Filter, isWhiteList, (byte) 64, (byte) 1, (byte) 64, (byte) 1,64); return aCoverVariable; @@ -57,23 +55,24 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior { else{ aCoverVariable = aCoverVariable & 1; aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); - GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Clear Filter!")); + GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Filter Cleared!")); } + GT_Utility.sendChatToPlayer(aPlayer, ""+aCoverVariable); return true; } @Override public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { - int model = aCoverVariable & 1; - if (model == 1) model = 0; - else model = 1; - if (model == 1){ - GT_Utility.sendChatToPlayer(aPlayer, trans("124", "Black List Model")); + int mode = aCoverVariable & 1; + if (mode == 1) mode = 0; + else mode = 1; + if (mode == 1){ + GT_Utility.sendChatToPlayer(aPlayer, trans("124", "Blacklist Mode")); } else{ - GT_Utility.sendChatToPlayer(aPlayer, trans("125", "White List Model")); + GT_Utility.sendChatToPlayer(aPlayer, trans("125", "Whitelist Mode")); } - aCoverVariable = (aCoverVariable & ~0x1) + model; + aCoverVariable = (aCoverVariable & ~0x1) + mode; return aCoverVariable; } @@ -159,16 +158,17 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior { this.coverVariable = aCoverVariable; GT_GuiIconButton b; - b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.WHITELIST).setTooltipText(trans("125","White List")); - b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.BLACKLIST).setTooltipText(trans("124","Black List")); + b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.WHITELIST).setTooltipText(trans("125","Whitelist")); + b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.BLACKLIST).setTooltipText(trans("124","Blacklist")); - itemFilterButtons = new GT_GuiFakeItemButton(this ,startX + spaceX*0, startY+spaceY*3, GT_GuiIcon.SLOT_GRAY); + itemFilterButtons = new GT_GuiFakeItemButton(this ,startX + spaceX*0, startY+spaceY*2, GT_GuiIcon.SLOT_GRAY); } @Override public void drawExtras(int mouseX, int mouseY, float parTicks) { super.drawExtras(mouseX, mouseY, parTicks); - this.fontRendererObj.drawString(trans("302", "Check Model"), startX + spaceX*2, 3+startY+spaceY*0, 0xFF555555); + this.fontRendererObj.drawString(trans("303", "Filter: "), startX + spaceX*0, 3+startY+spaceY*1, 0xFF555555); + this.fontRendererObj.drawString(trans("302", "Check Mode"), startX + spaceX*2, 3+startY+spaceY*0, 0xFF555555); } @Override @@ -191,7 +191,7 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior { b = (GuiButton) o; b.enabled = getClickable(b.id); } - ItemStack tItemStack = intToStack(coverVariable >> 1); + ItemStack tItemStack = intToStack(coverVariable >>> 1); if (tItemStack != null){ itemFilterButtons.setItem(tItemStack); return; -- cgit From 2628636c4110e0a97ccd93f67f0e4d89d070666d Mon Sep 17 00:00:00 2001 From: GlodBlock <60341015+GlodBlock@users.noreply.github.com> Date: Sat, 26 Jun 2021 13:50:22 +0800 Subject: remove debug message and fix the tooltip --- src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/main/java/gregtech/common/covers') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java index 6ad9332a52..90c09f8168 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java @@ -38,7 +38,9 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior { int FilterId = aCoverVariable >>> 1; List Filter = Collections.singletonList(intToStack(FilterId)); + boolean isWhiteList = (aCoverVariable & 1) != 0; + moveMultipleItemStacks(fromEntity, toEntity, fromSide , toSide, Filter, isWhiteList, (byte) 64, (byte) 1, (byte) 64, (byte) 1,64); return aCoverVariable; @@ -57,7 +59,6 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior { aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Filter Cleared!")); } - GT_Utility.sendChatToPlayer(aPlayer, ""+aCoverVariable); return true; } @@ -158,8 +159,8 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior { this.coverVariable = aCoverVariable; GT_GuiIconButton b; - b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.WHITELIST).setTooltipText(trans("125","Whitelist")); - b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.BLACKLIST).setTooltipText(trans("124","Blacklist")); + b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.WHITELIST).setTooltipText(trans("125","Whitelist Mode")); + b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.BLACKLIST).setTooltipText(trans("124","Blacklist Mode")); itemFilterButtons = new GT_GuiFakeItemButton(this ,startX + spaceX*0, startY+spaceY*2, GT_GuiIcon.SLOT_GRAY); } -- cgit