From 50359db0f274b46ec15c9dec487d98c29d629b54 Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Thu, 25 Feb 2021 05:15:57 +0000 Subject: [PATCH] mes: make more friendly for multi-plugin swapping --- .../MenuEntrySwapperPlugin.java | 28 +++++++++++++------ .../client/plugins/menuentryswapper/Swap.java | 2 +- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java index 7d3c941014..355e499342 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java @@ -33,6 +33,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; import com.google.inject.Provides; import java.util.Arrays; import java.util.Collection; @@ -152,7 +153,7 @@ public class MenuEntrySwapperPlugin extends Plugin @Getter private boolean configuringShiftClick = false; - private final Multimap swaps = LinkedHashMultimap.create(); + private final Multimap swaps = Multimaps.synchronizedSetMultimap(LinkedHashMultimap.create()); private final ArrayListMultimap optionIndexes = ArrayListMultimap.create(); @Provides @@ -377,24 +378,33 @@ public class MenuEntrySwapperPlugin extends Plugin swap("travel", "dive", config::swapRowboatDive); } - public void swap(String option, String swappedOption, Supplier enabled) + public Swap swap(String option, String swappedOption, Supplier enabled) { - swap(option, alwaysTrue(), swappedOption, enabled); + return swap(option, alwaysTrue(), swappedOption, enabled); } - public void swap(String option, String target, String swappedOption, Supplier enabled) + public Swap swap(String option, String target, String swappedOption, Supplier enabled) { - swap(option, equalTo(target), swappedOption, enabled); + return swap(option, equalTo(target), swappedOption, enabled); } - public void swap(String option, Predicate targetPredicate, String swappedOption, Supplier enabled) + public Swap swap(String option, Predicate targetPredicate, String swappedOption, Supplier enabled) { - swaps.put(option, new Swap(alwaysTrue(), targetPredicate, swappedOption, enabled, true)); + Swap swap = new Swap(alwaysTrue(), targetPredicate, swappedOption, enabled, true); + swaps.put(option, swap); + return swap; } - public void swapContains(String option, Predicate targetPredicate, String swappedOption, Supplier enabled) + public Swap swapContains(String option, Predicate targetPredicate, String swappedOption, Supplier enabled) { - swaps.put(option, new Swap(alwaysTrue(), targetPredicate, swappedOption, enabled, false)); + Swap swap = new Swap(alwaysTrue(), targetPredicate, swappedOption, enabled, false); + swaps.put(option, swap); + return swap; + } + + public void remove(String option, Swap swap) + { + swaps.remove(option, swap); } private void swapTeleport(String option, String swappedOption) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/Swap.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/Swap.java index 5cfa0a52ba..4bd96dea28 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/Swap.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/Swap.java @@ -29,7 +29,7 @@ import java.util.function.Supplier; import lombok.Value; @Value -class Swap +public class Swap { private Predicate optionPredicate; private Predicate targetPredicate;