diff options
-rw-r--r-- | src/main/java/kr/syeyoung/dungeonsguide/eventlistener/PacketListener.java | 31 | ||||
-rw-r--r-- | src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/PanelPartyListElement.java | 20 |
2 files changed, 43 insertions, 8 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/PacketListener.java b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/PacketListener.java index afb60168..759ecca9 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/PacketListener.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/PacketListener.java @@ -39,6 +39,8 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.network.FMLNetworkEvent; +import java.util.Arrays; + @ChannelHandler.Sharable public class PacketListener extends ChannelDuplexHandler { private final SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus(); @@ -61,8 +63,11 @@ public class PacketListener extends ChannelDuplexHandler { if (packet instanceof S38PacketPlayerListItem) { packet = new CustomPacketPlayerListItem((S38PacketPlayerListItem) packet); } - if (packet instanceof S30PacketWindowItems || packet instanceof S2FPacketSetSlot) { - MinecraftForge.EVENT_BUS.post(new WindowUpdateEvent(packet instanceof S30PacketWindowItems ? (S30PacketWindowItems)packet : null , packet instanceof S2FPacketSetSlot ? (S2FPacketSetSlot)packet : null)); + if (packet instanceof S30PacketWindowItems) { + packet = new CustomWindowItems((S30PacketWindowItems) packet); + } + if (packet instanceof S2FPacketSetSlot) { + packet = new CustomSetSlot((S2FPacketSetSlot) packet); } if (packet instanceof S23PacketBlockChange) { packet = new SingleBlockChange((S23PacketBlockChange) packet); @@ -72,6 +77,28 @@ public class PacketListener extends ChannelDuplexHandler { super.channelRead(ctx, packet); } + private static class CustomWindowItems extends S30PacketWindowItems { + public CustomWindowItems(S30PacketWindowItems parent) { + super(parent.func_148911_c(), Arrays.asList(parent.getItemStacks())); + } + + @Override + public void processPacket(INetHandlerPlayClient handler) { + super.processPacket(handler); + MinecraftForge.EVENT_BUS.post(new WindowUpdateEvent(this, null)); + } + } + private static class CustomSetSlot extends S2FPacketSetSlot { + public CustomSetSlot(S2FPacketSetSlot parent) { + super(parent.func_149175_c(), parent.func_149173_d(), parent.func_149174_e()); + } + @Override + public void processPacket(INetHandlerPlayClient handler) { + super.processPacket(handler); + MinecraftForge.EVENT_BUS.post(new WindowUpdateEvent(null, this)); + } + } + private static class SingleBlockChange extends S23PacketBlockChange { private S23PacketBlockChange old; public SingleBlockChange(S23PacketBlockChange blockChange) { diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/PanelPartyListElement.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/PanelPartyListElement.java index 1def0528..7ccbdcf9 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/PanelPartyListElement.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/PanelPartyListElement.java @@ -63,20 +63,27 @@ public class PanelPartyListElement extends MPanel { private MTooltip mTooltip; + private ItemStack lastStack; @Override public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) { GuiCustomPartyFinder guiCustomPartyFinder = panelPartyFinder.getGuiCustomPartyFinder(); if (guiCustomPartyFinder.getGuiChest() == null) return; Slot s = guiCustomPartyFinder.getGuiChest().inventorySlots.getSlot(slot); ItemStack itemStack = s.getStack(); - if (itemStack == null) return; - - + if (itemStack == null && lastStack == null) return; + if (itemStack != null) + lastStack = itemStack; + else + itemStack = lastStack; int color = RenderUtils.blendAlpha(0x141414, 0.0f); String note = ""; + boolean notfound = false; boolean cantjoin = false; - if (itemStack.getItem() == Item.getItemFromBlock(Blocks.bedrock)) cantjoin = true; + if (itemStack.getItem() == Item.getItemFromBlock(Blocks.bedrock)) { + cantjoin = true; + notfound = true; + } int minClass = -1, minDungeon = -1; int pplIn = 0; Set<String> dungeonClasses = new HashSet<>(); @@ -159,14 +166,15 @@ public class PanelPartyListElement extends MPanel { name = name.substring(0, name.indexOf("'")); fr.drawString(name, 0,0,-1); - note = "§7("+pplIn+") §f"+note; + if (!notfound) + note = "§7("+pplIn+") §f"+note; fr.drawString(note, fr.getStringWidth("AAAAAAAAAAAAAAAA")+5, 0,-1); GlStateManager.popMatrix(); GlStateManager.pushMatrix(); String sideNote = ""; if (minClass != -1) sideNote += "§7CLv ≥§b"+minClass+" "; if (minDungeon != -1) sideNote += "§7DLv ≥§b"+minDungeon+" "; - if (cantjoin) sideNote = "§cCan't join"; + if (cantjoin && !notfound) sideNote = "§cCan't join"; sideNote = sideNote.trim(); GlStateManager.translate(getBounds().width,(32 - 2*fr.FONT_HEIGHT)/2,0); |