diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPanel.java index 98cecb81bf..3c3c1bba95 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPanel.java @@ -105,7 +105,7 @@ class PartyPanel extends PluginPanel if (result == JOptionPane.YES_OPTION) { - party.changeParty(null); + plugin.leaveParty(); } } else diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java index 90e5df9591..789c0740e1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java @@ -46,6 +46,7 @@ import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.KeyCode; +import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; import net.runelite.api.Player; import net.runelite.api.Skill; @@ -65,6 +66,7 @@ import net.runelite.client.config.ConfigManager; import net.runelite.client.discord.DiscordService; import net.runelite.client.discord.events.DiscordJoinRequest; import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.events.OverlayMenuClicked; import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.PartyChanged; import net.runelite.client.events.PartyMemberAvatar; @@ -214,6 +216,37 @@ public class PartyPlugin extends Plugin return configManager.getConfig(PartyConfig.class); } + @Subscribe + public void onOverlayMenuClicked(OverlayMenuClicked event) + { + if (event.getEntry().getMenuAction() == MenuAction.RUNELITE_OVERLAY && + event.getEntry().getTarget().equals("Party") && + event.getEntry().getOption().equals("Leave")) + { + leaveParty(); + } + } + + void leaveParty() + { + party.changeParty(null); + + if (!config.messages()) + { + return; + } + + final String leaveMessage = new ChatMessageBuilder() + .append(ChatColorType.HIGHLIGHT) + .append("You have left the party.") + .build(); + + chatMessageManager.queue(QueuedMessage.builder() + .type(ChatMessageType.FRIENDSCHATNOTIFICATION) + .runeLiteFormattedMessage(leaveMessage) + .build()); + } + @Subscribe public void onConfigChanged(ConfigChanged event) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyStatsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyStatsOverlay.java index 18a1ea41d9..e103649d35 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyStatsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyStatsOverlay.java @@ -33,7 +33,9 @@ import java.awt.Rectangle; import java.util.Map; import java.util.UUID; import javax.inject.Inject; +import net.runelite.api.MenuAction; import net.runelite.client.plugins.party.data.PartyData; +import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayPanel; import net.runelite.client.ui.overlay.components.ComponentConstants; import net.runelite.client.ui.overlay.components.PanelComponent; @@ -61,6 +63,7 @@ public class PartyStatsOverlay extends OverlayPanel this.config = config; panelComponent.setBorder(new Rectangle()); panelComponent.setGap(new Point(0, ComponentConstants.STANDARD_BORDER / 2)); + getMenuEntries().add(new OverlayMenuEntry(MenuAction.RUNELITE_OVERLAY, "Leave", "Party")); } @Override