Merge branch 'master' of https://github.com/runelite/runelite
# Conflicts: # runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java # runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java # runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java # runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java # runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java # runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListItem.java # runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java # runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/HitpointsDisplayStyle.java # runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java # runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTracker.java # runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ProgressBarComponent.java
This commit is contained in:
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>cache-client</artifactId>
|
<artifactId>cache-client</artifactId>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<name>Cache Updater</name>
|
<name>Cache Updater</name>
|
||||||
|
|||||||
Vendored
+1
-1
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>cache</artifactId>
|
<artifactId>cache</artifactId>
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<name>Web API</name>
|
<name>Web API</name>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<name>Web Service</name>
|
<name>Web Service</name>
|
||||||
|
|||||||
@@ -184,9 +184,9 @@ public class XteaService
|
|||||||
try (Connection con = sql2o.open())
|
try (Connection con = sql2o.open())
|
||||||
{
|
{
|
||||||
return con.createQuery(
|
return con.createQuery(
|
||||||
"select t1.region, t1.time, t2.rev, t2.key1, t2.key2, t2.key3, t2.key4 from " +
|
"select t1.region, t2.time, t2.rev, t2.key1, t2.key2, t2.key3, t2.key4 from " +
|
||||||
"(select region,max(time) as time from xtea group by region) t1 " +
|
"(select region,max(id) as id from xtea group by region) t1 " +
|
||||||
"join xtea t2 on t1.region = t2.region and t1.time = t2.time")
|
"join xtea t2 on t1.id = t2.id")
|
||||||
.executeAndFetch(XteaEntry.class);
|
.executeAndFetch(XteaEntry.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<name>RuneLite</name>
|
<name>RuneLite</name>
|
||||||
@@ -115,8 +115,8 @@
|
|||||||
<module>cache</module>
|
<module>cache</module>
|
||||||
<module>cache-client</module>
|
<module>cache-client</module>
|
||||||
<module>cache-updater</module>
|
<module>cache-updater</module>
|
||||||
<module>extended-mixin-processor</module>
|
<!-- <module>extended-mixin-processor</module>
|
||||||
<module>extended-mixins</module>
|
<module>extended-mixins</module>-->
|
||||||
<module>runelite-api</module>
|
<module>runelite-api</module>
|
||||||
<module>runelite-client</module>
|
<module>runelite-client</module>
|
||||||
<module>runelite-mixins</module>
|
<module>runelite-mixins</module>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>protocol-api</artifactId>
|
<artifactId>protocol-api</artifactId>
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>protocol</artifactId>
|
<artifactId>protocol</artifactId>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>runelite-api</artifactId>
|
<artifactId>runelite-api</artifactId>
|
||||||
|
|||||||
@@ -6618,6 +6618,7 @@ public final class ItemID
|
|||||||
public static final int NO_EGGS = 10563;
|
public static final int NO_EGGS = 10563;
|
||||||
public static final int GRANITE_BODY = 10564;
|
public static final int GRANITE_BODY = 10564;
|
||||||
public static final int FIRE_CAPE_10566 = 10566;
|
public static final int FIRE_CAPE_10566 = 10566;
|
||||||
|
public static final int HEALER_ICON_10567 = 10567;
|
||||||
public static final int KERIS = 10581;
|
public static final int KERIS = 10581;
|
||||||
public static final int KERISP = 10582;
|
public static final int KERISP = 10582;
|
||||||
public static final int KERISP_10583 = 10583;
|
public static final int KERISP_10583 = 10583;
|
||||||
@@ -9483,6 +9484,7 @@ public final class ItemID
|
|||||||
public static final int KINDLING_20799 = 20799;
|
public static final int KINDLING_20799 = 20799;
|
||||||
public static final int EMPTY_GOURD_VIAL = 20800;
|
public static final int EMPTY_GOURD_VIAL = 20800;
|
||||||
public static final int WATERFILLED_GOURD_VIAL = 20801;
|
public static final int WATERFILLED_GOURD_VIAL = 20801;
|
||||||
|
public static final int HEALER_ICON_20802 = 20802;
|
||||||
public static final int SNOW_GLOBE = 20832;
|
public static final int SNOW_GLOBE = 20832;
|
||||||
public static final int SACK_OF_PRESENTS = 20834;
|
public static final int SACK_OF_PRESENTS = 20834;
|
||||||
public static final int GIANT_PRESENT = 20836;
|
public static final int GIANT_PRESENT = 20836;
|
||||||
@@ -10305,6 +10307,14 @@ public final class ItemID
|
|||||||
public static final int ANCIENT_MEDALLION = 22299;
|
public static final int ANCIENT_MEDALLION = 22299;
|
||||||
public static final int ANCIENT_EFFIGY = 22302;
|
public static final int ANCIENT_EFFIGY = 22302;
|
||||||
public static final int ANCIENT_RELIC = 22305;
|
public static final int ANCIENT_RELIC = 22305;
|
||||||
|
public static final int HEALER_ICON_22308 = 22308;
|
||||||
|
public static final int HEALER_ICON_22309 = 22309;
|
||||||
|
public static final int HEALER_ICON_22310 = 22310;
|
||||||
|
public static final int HEALER_ICON_22311 = 22311;
|
||||||
|
public static final int COLLECTOR_ICON_22312 = 22312;
|
||||||
|
public static final int COLLECTOR_ICON_22313 = 22313;
|
||||||
|
public static final int COLLECTOR_ICON_22314 = 22314;
|
||||||
|
public static final int COLLECTOR_ICON_22315 = 22315;
|
||||||
public static final int PROP_SWORD = 22316;
|
public static final int PROP_SWORD = 22316;
|
||||||
public static final int PET_CORPOREAL_CRITTER = 22318;
|
public static final int PET_CORPOREAL_CRITTER = 22318;
|
||||||
public static final int TZREKZUK = 22319;
|
public static final int TZREKZUK = 22319;
|
||||||
@@ -10321,6 +10331,19 @@ public final class ItemID
|
|||||||
public static final int STARTER_SWORD = 22331;
|
public static final int STARTER_SWORD = 22331;
|
||||||
public static final int STARTER_BOW = 22333;
|
public static final int STARTER_BOW = 22333;
|
||||||
public static final int STARTER_STAFF = 22335;
|
public static final int STARTER_STAFF = 22335;
|
||||||
|
public static final int COLLECTOR_ICON_22337 = 22337;
|
||||||
|
public static final int COLLECTOR_ICON_22338 = 22338;
|
||||||
|
public static final int COLLECTOR_ICON_22339 = 22339;
|
||||||
|
public static final int DEFENDER_ICON_22340 = 22340;
|
||||||
|
public static final int DEFENDER_ICON_22341 = 22341;
|
||||||
|
public static final int DEFENDER_ICON_22342 = 22342;
|
||||||
|
public static final int DEFENDER_ICON_22343 = 22343;
|
||||||
|
public static final int DEFENDER_ICON_22344 = 22344;
|
||||||
|
public static final int DEFENDER_ICON_22345 = 22345;
|
||||||
|
public static final int ATTACKER_ICON_22346 = 22346;
|
||||||
|
public static final int ATTACKER_ICON_22347 = 22347;
|
||||||
|
public static final int ATTACKER_ICON_22348 = 22348;
|
||||||
|
public static final int ATTACKER_ICON_22349 = 22349;
|
||||||
public static final int EGGSHELL_PLATEBODY = 22351;
|
public static final int EGGSHELL_PLATEBODY = 22351;
|
||||||
public static final int EGGSHELL_PLATELEGS = 22353;
|
public static final int EGGSHELL_PLATELEGS = 22353;
|
||||||
public static final int HOLY_HANDEGG = 22355;
|
public static final int HOLY_HANDEGG = 22355;
|
||||||
@@ -10487,6 +10510,16 @@ public final class ItemID
|
|||||||
public static final int TREE_TOP = 22715;
|
public static final int TREE_TOP = 22715;
|
||||||
public static final int TREE_SKIRT = 22717;
|
public static final int TREE_SKIRT = 22717;
|
||||||
public static final int CANDY_CANE = 22719;
|
public static final int CANDY_CANE = 22719;
|
||||||
|
public static final int ATTACKER_ICON_22721 = 22721;
|
||||||
|
public static final int ATTACKER_ICON_22722 = 22722;
|
||||||
|
public static final int ATTACKER_ICON_22723 = 22723;
|
||||||
|
public static final int COLLECTOR_ICON_22724 = 22724;
|
||||||
|
public static final int DEFENDER_ICON_22725 = 22725;
|
||||||
|
public static final int DEFENDER_ICON_22726 = 22726;
|
||||||
|
public static final int DEFENDER_ICON_22727 = 22727;
|
||||||
|
public static final int DEFENDER_ICON_22728 = 22728;
|
||||||
|
public static final int ATTACKER_ICON_22729 = 22729;
|
||||||
|
public static final int ATTACKER_ICON_22730 = 22730;
|
||||||
public static final int DRAGON_HASTA = 22731;
|
public static final int DRAGON_HASTA = 22731;
|
||||||
public static final int DRAGON_HASTAP = 22734;
|
public static final int DRAGON_HASTAP = 22734;
|
||||||
public static final int DRAGON_HASTAP_22737 = 22737;
|
public static final int DRAGON_HASTAP_22737 = 22737;
|
||||||
@@ -10791,5 +10824,33 @@ public final class ItemID
|
|||||||
public static final int TORMENTED_BRACELET_OR = 23444;
|
public static final int TORMENTED_BRACELET_OR = 23444;
|
||||||
public static final int GIANT_EASTER_EGG = 23446;
|
public static final int GIANT_EASTER_EGG = 23446;
|
||||||
public static final int BUNNYMAN_MASK = 23448;
|
public static final int BUNNYMAN_MASK = 23448;
|
||||||
|
public static final int ENCHANTED_LYREI = 23458;
|
||||||
|
public static final int ATTACKER_ICON_23460 = 23460;
|
||||||
|
public static final int ATTACKER_ICON_23461 = 23461;
|
||||||
|
public static final int ATTACKER_ICON_23462 = 23462;
|
||||||
|
public static final int ATTACKER_ICON_23463 = 23463;
|
||||||
|
public static final int ATTACKER_ICON_23464 = 23464;
|
||||||
|
public static final int ATTACKER_ICON_23465 = 23465;
|
||||||
|
public static final int DEFENDER_ICON_23466 = 23466;
|
||||||
|
public static final int DEFENDER_ICON_23467 = 23467;
|
||||||
|
public static final int DEFENDER_ICON_23468 = 23468;
|
||||||
|
public static final int DEFENDER_ICON_23469 = 23469;
|
||||||
|
public static final int DEFENDER_ICON_23470 = 23470;
|
||||||
|
public static final int COLLECTOR_ICON_23471 = 23471;
|
||||||
|
public static final int COLLECTOR_ICON_23472 = 23472;
|
||||||
|
public static final int COLLECTOR_ICON_23473 = 23473;
|
||||||
|
public static final int COLLECTOR_ICON_23474 = 23474;
|
||||||
|
public static final int COLLECTOR_ICON_23475 = 23475;
|
||||||
|
public static final int COLLECTOR_ICON_23476 = 23476;
|
||||||
|
public static final int COLLECTOR_ICON_23477 = 23477;
|
||||||
|
public static final int HEALER_ICON_23478 = 23478;
|
||||||
|
public static final int HEALER_ICON_23479 = 23479;
|
||||||
|
public static final int HEALER_ICON_23480 = 23480;
|
||||||
|
public static final int HEALER_ICON_23481 = 23481;
|
||||||
|
public static final int HEALER_ICON_23482 = 23482;
|
||||||
|
public static final int HEALER_ICON_23483 = 23483;
|
||||||
|
public static final int HEALER_ICON_23484 = 23484;
|
||||||
|
public static final int HEALER_ICON_23485 = 23485;
|
||||||
|
public static final int HEALER_ICON_23486 = 23486;
|
||||||
/* This file is automatically generated. Do not edit. */
|
/* This file is automatically generated. Do not edit. */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3834,7 +3834,6 @@ public final class NullItemID
|
|||||||
public static final int NULL_10509 = 10509;
|
public static final int NULL_10509 = 10509;
|
||||||
public static final int NULL_10511 = 10511;
|
public static final int NULL_10511 = 10511;
|
||||||
public static final int NULL_10565 = 10565;
|
public static final int NULL_10565 = 10565;
|
||||||
public static final int NULL_10567 = 10567;
|
|
||||||
public static final int NULL_10568 = 10568;
|
public static final int NULL_10568 = 10568;
|
||||||
public static final int NULL_10569 = 10569;
|
public static final int NULL_10569 = 10569;
|
||||||
public static final int NULL_10570 = 10570;
|
public static final int NULL_10570 = 10570;
|
||||||
@@ -11132,7 +11131,6 @@ public final class NullItemID
|
|||||||
public static final int NULL_20793 = 20793;
|
public static final int NULL_20793 = 20793;
|
||||||
public static final int NULL_20795 = 20795;
|
public static final int NULL_20795 = 20795;
|
||||||
public static final int NULL_20797 = 20797;
|
public static final int NULL_20797 = 20797;
|
||||||
public static final int NULL_20802 = 20802;
|
|
||||||
public static final int NULL_20803 = 20803;
|
public static final int NULL_20803 = 20803;
|
||||||
public static final int NULL_20804 = 20804;
|
public static final int NULL_20804 = 20804;
|
||||||
public static final int NULL_20805 = 20805;
|
public static final int NULL_20805 = 20805;
|
||||||
@@ -11816,32 +11814,11 @@ public final class NullItemID
|
|||||||
public static final int NULL_22304 = 22304;
|
public static final int NULL_22304 = 22304;
|
||||||
public static final int NULL_22306 = 22306;
|
public static final int NULL_22306 = 22306;
|
||||||
public static final int NULL_22307 = 22307;
|
public static final int NULL_22307 = 22307;
|
||||||
public static final int NULL_22308 = 22308;
|
|
||||||
public static final int NULL_22309 = 22309;
|
|
||||||
public static final int NULL_22310 = 22310;
|
|
||||||
public static final int NULL_22311 = 22311;
|
|
||||||
public static final int NULL_22312 = 22312;
|
|
||||||
public static final int NULL_22313 = 22313;
|
|
||||||
public static final int NULL_22314 = 22314;
|
|
||||||
public static final int NULL_22315 = 22315;
|
|
||||||
public static final int NULL_22317 = 22317;
|
public static final int NULL_22317 = 22317;
|
||||||
public static final int NULL_22329 = 22329;
|
public static final int NULL_22329 = 22329;
|
||||||
public static final int NULL_22332 = 22332;
|
public static final int NULL_22332 = 22332;
|
||||||
public static final int NULL_22334 = 22334;
|
public static final int NULL_22334 = 22334;
|
||||||
public static final int NULL_22336 = 22336;
|
public static final int NULL_22336 = 22336;
|
||||||
public static final int NULL_22337 = 22337;
|
|
||||||
public static final int NULL_22338 = 22338;
|
|
||||||
public static final int NULL_22339 = 22339;
|
|
||||||
public static final int NULL_22340 = 22340;
|
|
||||||
public static final int NULL_22341 = 22341;
|
|
||||||
public static final int NULL_22342 = 22342;
|
|
||||||
public static final int NULL_22343 = 22343;
|
|
||||||
public static final int NULL_22344 = 22344;
|
|
||||||
public static final int NULL_22345 = 22345;
|
|
||||||
public static final int NULL_22346 = 22346;
|
|
||||||
public static final int NULL_22347 = 22347;
|
|
||||||
public static final int NULL_22348 = 22348;
|
|
||||||
public static final int NULL_22349 = 22349;
|
|
||||||
public static final int NULL_22350 = 22350;
|
public static final int NULL_22350 = 22350;
|
||||||
public static final int NULL_22352 = 22352;
|
public static final int NULL_22352 = 22352;
|
||||||
public static final int NULL_22354 = 22354;
|
public static final int NULL_22354 = 22354;
|
||||||
@@ -12047,16 +12024,6 @@ public final class NullItemID
|
|||||||
public static final int NULL_22716 = 22716;
|
public static final int NULL_22716 = 22716;
|
||||||
public static final int NULL_22718 = 22718;
|
public static final int NULL_22718 = 22718;
|
||||||
public static final int NULL_22720 = 22720;
|
public static final int NULL_22720 = 22720;
|
||||||
public static final int NULL_22721 = 22721;
|
|
||||||
public static final int NULL_22722 = 22722;
|
|
||||||
public static final int NULL_22723 = 22723;
|
|
||||||
public static final int NULL_22724 = 22724;
|
|
||||||
public static final int NULL_22725 = 22725;
|
|
||||||
public static final int NULL_22726 = 22726;
|
|
||||||
public static final int NULL_22727 = 22727;
|
|
||||||
public static final int NULL_22728 = 22728;
|
|
||||||
public static final int NULL_22729 = 22729;
|
|
||||||
public static final int NULL_22730 = 22730;
|
|
||||||
public static final int NULL_22732 = 22732;
|
public static final int NULL_22732 = 22732;
|
||||||
public static final int NULL_22733 = 22733;
|
public static final int NULL_22733 = 22733;
|
||||||
public static final int NULL_22735 = 22735;
|
public static final int NULL_22735 = 22735;
|
||||||
@@ -12456,5 +12423,6 @@ public final class NullItemID
|
|||||||
public static final int NULL_23455 = 23455;
|
public static final int NULL_23455 = 23455;
|
||||||
public static final int NULL_23456 = 23456;
|
public static final int NULL_23456 = 23456;
|
||||||
public static final int NULL_23457 = 23457;
|
public static final int NULL_23457 = 23457;
|
||||||
|
public static final int NULL_23459 = 23459;
|
||||||
/* This file is automatically generated. Do not edit. */
|
/* This file is automatically generated. Do not edit. */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,6 +110,19 @@ public final class ScriptID
|
|||||||
*/
|
*/
|
||||||
public static final int KEPT_LOST_ITEM_EXAMINE = 1603;
|
public static final int KEPT_LOST_ITEM_EXAMINE = 1603;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the state of the given stash unit.
|
||||||
|
* <ul>
|
||||||
|
* <li>int (loc) The stash unit object id</li>
|
||||||
|
* <li>int Bitpacked stash unit states</li>
|
||||||
|
* <li>int Bitpacked stash unit states 2</li>
|
||||||
|
* <li>int Bitpacked stash unit states 3</li>
|
||||||
|
* </ul>
|
||||||
|
* <p>
|
||||||
|
* Returns a pair of booleans indicating if the stash unit is built and if it is filled
|
||||||
|
*/
|
||||||
|
public static final int WATSON_STASH_UNIT_CHECK = 1479;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Queries the completion state of a quest by its struct id
|
* Queries the completion state of a quest by its struct id
|
||||||
* <ul>
|
* <ul>
|
||||||
|
|||||||
@@ -25,28 +25,33 @@
|
|||||||
package net.runelite.api;
|
package net.runelite.api;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the wall of a tile, which is an un-passable boundary.
|
* Represents one or two walls on a tile
|
||||||
*/
|
*/
|
||||||
public interface WallObject extends TileObject
|
public interface WallObject extends TileObject
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Gets the first orientation of the wall.
|
* A bitfield with the orientation of a wall
|
||||||
*
|
* 1 = East
|
||||||
* @return the first orientation, 0-2048 where 0 is north
|
* 2 = North
|
||||||
|
* 4 = West
|
||||||
|
* 8 = South
|
||||||
*/
|
*/
|
||||||
int getOrientationA();
|
int getOrientationA();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the second orientation value of the wall.
|
* A bitfield containing the orientation of the second wall on this tile,
|
||||||
*
|
* or 0 if there is no second wall.
|
||||||
* @return the second orientation, 0-2048 where 0 is north
|
* @see #getOrientationA
|
||||||
*/
|
*/
|
||||||
int getOrientationB();
|
int getOrientationB();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the boundary configuration of the wall.
|
* A bitfield containing various flags:
|
||||||
*
|
* <pre>{@code
|
||||||
* @return the boundary configuration
|
* object type id = bits & 0x20
|
||||||
|
* orientation (0-3) = bits >>> 6 & 3
|
||||||
|
* supports items = bits >>> 8 & 1
|
||||||
|
* }</pre>
|
||||||
*/
|
*/
|
||||||
int getConfig();
|
int getConfig();
|
||||||
|
|
||||||
|
|||||||
@@ -140,6 +140,11 @@ public class WidgetID
|
|||||||
public static final int KEPT_ON_DEATH_GROUP_ID = 4;
|
public static final int KEPT_ON_DEATH_GROUP_ID = 4;
|
||||||
public static final int GUIDE_PRICE_GROUP_ID = 464;
|
public static final int GUIDE_PRICE_GROUP_ID = 464;
|
||||||
public static final int SEED_VAULT_INVENTORY_GROUP_ID = 630;
|
public static final int SEED_VAULT_INVENTORY_GROUP_ID = 630;
|
||||||
|
public static final int BEGINNER_CLUE_MAP_CHAMPIONS_GUILD = 346;
|
||||||
|
public static final int BEGINNER_CLUE_MAP_VARROCK_EAST_MINE = 347;
|
||||||
|
public static final int BEGINNER_CLUE_MAP_DRAYNOR = 348;
|
||||||
|
public static final int BEGINNER_CLUE_MAP_NORTH_OF_FALADOR = 351;
|
||||||
|
public static final int BEGINNER_CLUE_MAP_WIZARDS_TOWER = 356;
|
||||||
|
|
||||||
static class WorldMap
|
static class WorldMap
|
||||||
{
|
{
|
||||||
@@ -546,20 +551,20 @@ public class WidgetID
|
|||||||
static class Combat
|
static class Combat
|
||||||
{
|
{
|
||||||
static final int WEAPON_NAME = 1;
|
static final int WEAPON_NAME = 1;
|
||||||
static final int LEVEL = 2;
|
static final int LEVEL = 3;
|
||||||
static final int STYLE_ONE = 3;
|
static final int STYLE_ONE = 4;
|
||||||
static final int STYLE_TWO = 7;
|
static final int STYLE_TWO = 8;
|
||||||
static final int STYLE_THREE = 11;
|
static final int STYLE_THREE = 12;
|
||||||
static final int STYLE_FOUR = 15;
|
static final int STYLE_FOUR = 16;
|
||||||
static final int SPELLS = 19;
|
static final int SPELLS = 20;
|
||||||
static final int DEFENSIVE_SPELL_BOX = 20;
|
static final int DEFENSIVE_SPELL_BOX = 21;
|
||||||
static final int DEFENSIVE_SPELL_ICON = 22;
|
static final int DEFENSIVE_SPELL_ICON = 23;
|
||||||
static final int DEFENSIVE_SPELL_SHIELD = 23;
|
static final int DEFENSIVE_SPELL_SHIELD = 24;
|
||||||
static final int DEFENSIVE_SPELL_TEXT = 24;
|
static final int DEFENSIVE_SPELL_TEXT = 25;
|
||||||
static final int SPELL_BOX = 25;
|
static final int SPELL_BOX = 26;
|
||||||
static final int SPELL_ICON = 27;
|
static final int SPELL_ICON = 28;
|
||||||
static final int SPELL_TEXT = 28;
|
static final int SPELL_TEXT = 29;
|
||||||
static final int AUTO_RETALIATE = 29;
|
static final int AUTO_RETALIATE = 30;
|
||||||
static final int SPECIAL_ATTACK_BAR = 34;
|
static final int SPECIAL_ATTACK_BAR = 34;
|
||||||
static final int TOOLTIP = 41;
|
static final int TOOLTIP = 41;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>client</artifactId>
|
<artifactId>client</artifactId>
|
||||||
@@ -215,11 +215,11 @@
|
|||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<!-- <dependency>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>extended-mixins</artifactId>
|
<artifactId>extended-mixins</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import com.google.common.collect.HashMultimap;
|
|||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
import static net.runelite.api.ItemID.*;
|
import static net.runelite.api.ItemID.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,8 +101,8 @@ public enum ItemMapping
|
|||||||
ITEM_ANGUISH_ORNAMENT_KIT(ANGUISH_ORNAMENT_KIT, NECKLACE_OF_ANGUISH_OR),
|
ITEM_ANGUISH_ORNAMENT_KIT(ANGUISH_ORNAMENT_KIT, NECKLACE_OF_ANGUISH_OR),
|
||||||
ITEM_OCCULT_NECKLACE(OCCULT_NECKLACE, OCCULT_NECKLACE_OR),
|
ITEM_OCCULT_NECKLACE(OCCULT_NECKLACE, OCCULT_NECKLACE_OR),
|
||||||
ITEM_OCCULT_ORNAMENT_KIT(OCCULT_ORNAMENT_KIT, OCCULT_NECKLACE_OR),
|
ITEM_OCCULT_ORNAMENT_KIT(OCCULT_ORNAMENT_KIT, OCCULT_NECKLACE_OR),
|
||||||
ITE_AMULET_OF_FURY(AMULET_OF_FURY, AMULET_OF_FURY_OR),
|
ITEM_AMULET_OF_FURY(AMULET_OF_FURY, AMULET_OF_FURY_OR),
|
||||||
ITE_FURY_ORNAMENT_KIT(FURY_ORNAMENT_KIT, AMULET_OF_FURY_OR),
|
ITEM_FURY_ORNAMENT_KIT(FURY_ORNAMENT_KIT, AMULET_OF_FURY_OR),
|
||||||
ITEM_TORMENTED_BRACELET(TORMENTED_BRACELET, TORMENTED_BRACELET_OR),
|
ITEM_TORMENTED_BRACELET(TORMENTED_BRACELET, TORMENTED_BRACELET_OR),
|
||||||
ITEM_TORMENTED_ORNAMENT_KIT(TORMENTED_ORNAMENT_KIT, TORMENTED_BRACELET_OR),
|
ITEM_TORMENTED_ORNAMENT_KIT(TORMENTED_ORNAMENT_KIT, TORMENTED_BRACELET_OR),
|
||||||
|
|
||||||
|
|||||||
+23
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Magic fTail
|
* Copyright (c) 2018, Magic fTail
|
||||||
|
* Copyright (c) 2019, osrs-music-map <osrs-music-map@users.noreply.github.com>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -63,4 +64,26 @@ public interface ChatFilterConfig extends Config
|
|||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "filterFriends",
|
||||||
|
name = "Filter Friends",
|
||||||
|
description = "Filter your friends' messages",
|
||||||
|
position = 4
|
||||||
|
)
|
||||||
|
default boolean filterFriends()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "filterClan",
|
||||||
|
name = "Filter Clan Chat Members",
|
||||||
|
description = "Filter your clan chat members' messages",
|
||||||
|
position = 5
|
||||||
|
)
|
||||||
|
default boolean filterClan()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+23
-3
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Magic fTail
|
* Copyright (c) 2018, Magic fTail
|
||||||
|
* Copyright (c) 2019, osrs-music-map <osrs-music-map@users.noreply.github.com>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -35,6 +36,7 @@ import java.util.regex.PatternSyntaxException;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.MessageNode;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.api.events.OverheadTextChanged;
|
import net.runelite.api.events.OverheadTextChanged;
|
||||||
@@ -97,7 +99,10 @@ public class ChatFilterPlugin extends Plugin
|
|||||||
|
|
||||||
int[] intStack = client.getIntStack();
|
int[] intStack = client.getIntStack();
|
||||||
int intStackSize = client.getIntStackSize();
|
int intStackSize = client.getIntStackSize();
|
||||||
ChatMessageType chatMessageType = ChatMessageType.of(intStack[intStackSize - 1]);
|
int messageType = intStack[intStackSize - 2];
|
||||||
|
int messageId = intStack[intStackSize - 1];
|
||||||
|
|
||||||
|
ChatMessageType chatMessageType = ChatMessageType.of(messageType);
|
||||||
|
|
||||||
// Only filter public chat and private messages
|
// Only filter public chat and private messages
|
||||||
switch (chatMessageType)
|
switch (chatMessageType)
|
||||||
@@ -114,6 +119,13 @@ public class ChatFilterPlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessageNode messageNode = (MessageNode) client.getMessages().get(messageId);
|
||||||
|
String name = messageNode.getName();
|
||||||
|
if (!shouldFilterPlayerMessage(name))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
String[] stringStack = client.getStringStack();
|
String[] stringStack = client.getStringStack();
|
||||||
int stringStackSize = client.getStringStackSize();
|
int stringStackSize = client.getStringStackSize();
|
||||||
|
|
||||||
@@ -123,7 +135,7 @@ public class ChatFilterPlugin extends Plugin
|
|||||||
if (censoredMessage == null)
|
if (censoredMessage == null)
|
||||||
{
|
{
|
||||||
// Block the message
|
// Block the message
|
||||||
intStack[intStackSize - 2] = 0;
|
intStack[intStackSize - 3] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -135,7 +147,7 @@ public class ChatFilterPlugin extends Plugin
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onOverheadTextChanged(OverheadTextChanged event)
|
public void onOverheadTextChanged(OverheadTextChanged event)
|
||||||
{
|
{
|
||||||
if (!(event.getActor() instanceof Player))
|
if (!(event.getActor() instanceof Player) || !shouldFilterPlayerMessage(event.getActor().getName()))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -150,6 +162,14 @@ public class ChatFilterPlugin extends Plugin
|
|||||||
event.getActor().setOverheadText(message);
|
event.getActor().setOverheadText(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean shouldFilterPlayerMessage(String playerName)
|
||||||
|
{
|
||||||
|
boolean isMessageFromSelf = playerName.equals(client.getLocalPlayer().getName());
|
||||||
|
return !isMessageFromSelf &&
|
||||||
|
(config.filterFriends() || !client.isFriended(playerName, false)) &&
|
||||||
|
(config.filterClan() || !client.isClanMember(playerName));
|
||||||
|
}
|
||||||
|
|
||||||
String censorMessage(final String message)
|
String censorMessage(final String message)
|
||||||
{
|
{
|
||||||
String strippedMessage = jagexPrintableCharMatcher.retainFrom(message)
|
String strippedMessage = jagexPrintableCharMatcher.retainFrom(message)
|
||||||
|
|||||||
+11
@@ -126,4 +126,15 @@ public interface ClanChatConfig extends Config
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "clanTabChat",
|
||||||
|
name = "Clan Tab Chat",
|
||||||
|
description = "Allows clan chat without prepending '/' to messages when on clan tab",
|
||||||
|
position = 8
|
||||||
|
)
|
||||||
|
default boolean clanTabChat()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+14
@@ -61,6 +61,7 @@ import net.runelite.api.events.GameStateChanged;
|
|||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.PlayerDespawned;
|
import net.runelite.api.events.PlayerDespawned;
|
||||||
import net.runelite.api.events.PlayerSpawned;
|
import net.runelite.api.events.PlayerSpawned;
|
||||||
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
import net.runelite.api.events.VarClientStrChanged;
|
import net.runelite.api.events.VarClientStrChanged;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
@@ -498,6 +499,19 @@ public class ClanChatPlugin extends Plugin
|
|||||||
activityBuffer.clear();
|
activityBuffer.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent)
|
||||||
|
{
|
||||||
|
if (!scriptCallbackEvent.getEventName().equalsIgnoreCase("clanchatInput"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int[] intStack = client.getIntStack();
|
||||||
|
final int size = client.getIntStackSize();
|
||||||
|
intStack[size - 1] = config.clanTabChat() ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
int getClanAmount()
|
int getClanAmount()
|
||||||
{
|
{
|
||||||
return clanMembers.size();
|
return clanMembers.size();
|
||||||
|
|||||||
+15
@@ -66,7 +66,9 @@ import net.runelite.api.events.ItemContainerChanged;
|
|||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
import net.runelite.api.events.NpcDespawned;
|
import net.runelite.api.events.NpcDespawned;
|
||||||
import net.runelite.api.events.NpcSpawned;
|
import net.runelite.api.events.NpcSpawned;
|
||||||
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
|
import net.runelite.api.widgets.WidgetID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
@@ -74,6 +76,7 @@ import net.runelite.client.game.ItemManager;
|
|||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.AnagramClue;
|
import net.runelite.client.plugins.cluescrolls.clues.AnagramClue;
|
||||||
|
import net.runelite.client.plugins.cluescrolls.clues.BeginnerMapClue;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.CipherClue;
|
import net.runelite.client.plugins.cluescrolls.clues.CipherClue;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.ClueScroll;
|
import net.runelite.client.plugins.cluescrolls.clues.ClueScroll;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.CoordinateClue;
|
import net.runelite.client.plugins.cluescrolls.clues.CoordinateClue;
|
||||||
@@ -386,6 +389,18 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
updateClue(findClueScroll());
|
updateClue(findClueScroll());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onWidgetLoaded(WidgetLoaded event)
|
||||||
|
{
|
||||||
|
if (event.getGroupId() < WidgetID.BEGINNER_CLUE_MAP_CHAMPIONS_GUILD
|
||||||
|
|| event.getGroupId() > WidgetID.BEGINNER_CLUE_MAP_WIZARDS_TOWER)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateClue(BeginnerMapClue.forWidgetID(event.getGroupId()));
|
||||||
|
}
|
||||||
|
|
||||||
public BufferedImage getClueScrollImage()
|
public BufferedImage getClueScrollImage()
|
||||||
{
|
{
|
||||||
return itemManager.getImage(ItemID.CLUE_SCROLL_MASTER);
|
return itemManager.getImage(ItemID.CLUE_SCROLL_MASTER);
|
||||||
|
|||||||
+66
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Hydrox6 <ikada@protonmail.ch>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package net.runelite.client.plugins.cluescrolls.clues;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import lombok.Getter;
|
||||||
|
import net.runelite.api.coords.WorldPoint;
|
||||||
|
import net.runelite.api.widgets.WidgetID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class BeginnerMapClue extends MapClue implements LocationClueScroll
|
||||||
|
{
|
||||||
|
private static final ImmutableList<BeginnerMapClue> CLUES = ImmutableList.of(
|
||||||
|
new BeginnerMapClue(WidgetID.BEGINNER_CLUE_MAP_CHAMPIONS_GUILD, new WorldPoint(3166, 3361, 0), "South West of the Champion's Guild"),
|
||||||
|
new BeginnerMapClue(WidgetID.BEGINNER_CLUE_MAP_VARROCK_EAST_MINE, new WorldPoint(3290, 3374, 0), "Outside Varrock East Mine"),
|
||||||
|
new BeginnerMapClue(WidgetID.BEGINNER_CLUE_MAP_DRAYNOR, new WorldPoint(3093, 3226, 0), "South of Draynor Village Bank"),
|
||||||
|
new BeginnerMapClue(WidgetID.BEGINNER_CLUE_MAP_NORTH_OF_FALADOR, new WorldPoint(3043, 3398, 0), "In the standing stones north of Falador"),
|
||||||
|
new BeginnerMapClue(WidgetID.BEGINNER_CLUE_MAP_WIZARDS_TOWER, new WorldPoint(3110, 3152, 0), "On the south side of the Wizard's Tower")
|
||||||
|
);
|
||||||
|
|
||||||
|
private final int widgetGroupID;
|
||||||
|
|
||||||
|
private BeginnerMapClue(int widgetGroupID, WorldPoint location, String description)
|
||||||
|
{
|
||||||
|
super(-1, location, description);
|
||||||
|
this.widgetGroupID = widgetGroupID;
|
||||||
|
setRequiresSpade(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Beginner Map Clues all use the same ItemID, but the WidgetID used to display them is unique
|
||||||
|
public static BeginnerMapClue forWidgetID(int widgetGroupID)
|
||||||
|
{
|
||||||
|
for (BeginnerMapClue clue : CLUES)
|
||||||
|
{
|
||||||
|
if (clue.widgetGroupID == widgetGroupID)
|
||||||
|
{
|
||||||
|
return clue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+1
-1
@@ -148,7 +148,7 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati
|
|||||||
.put(new WorldPoint(3573, 3425, 0), "North of Dessous's tomb from Desert Treasure.")
|
.put(new WorldPoint(3573, 3425, 0), "North of Dessous's tomb from Desert Treasure.")
|
||||||
.put(new WorldPoint(3828, 2848, 0), "East of Harmony Island.")
|
.put(new WorldPoint(3828, 2848, 0), "East of Harmony Island.")
|
||||||
.put(new WorldPoint(3225, 2838, 0), "South of Desert Treasure pyramid.")
|
.put(new WorldPoint(3225, 2838, 0), "South of Desert Treasure pyramid.")
|
||||||
.put(new WorldPoint(1773, 3510, 0), "Between magic trees South of Tithe Farm.")
|
.put(new WorldPoint(1773, 3510, 0), "Ruins north of the Hosidius mine.")
|
||||||
.put(new WorldPoint(3822, 3562, 0), "North-east of Dragontooth Island.")
|
.put(new WorldPoint(3822, 3562, 0), "North-east of Dragontooth Island.")
|
||||||
.put(new WorldPoint(3603, 3564, 0), "North of the wrecked ship, outside of Port Phasmatys.")
|
.put(new WorldPoint(3603, 3564, 0), "North of the wrecked ship, outside of Port Phasmatys.")
|
||||||
.put(new WorldPoint(2936, 2721, 0), "Eastern shore of Crash Island.")
|
.put(new WorldPoint(2936, 2721, 0), "Eastern shore of Crash Island.")
|
||||||
|
|||||||
+2
-51
@@ -32,56 +32,7 @@ import lombok.Getter;
|
|||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
import static net.runelite.api.NullObjectID.NULL_1293;
|
import static net.runelite.api.NullObjectID.NULL_1293;
|
||||||
import net.runelite.api.ObjectComposition;
|
import net.runelite.api.ObjectComposition;
|
||||||
import static net.runelite.api.ObjectID.BOOKCASE_12539;
|
import static net.runelite.api.ObjectID.*;
|
||||||
import static net.runelite.api.ObjectID.BOOKCASE_380;
|
|
||||||
import static net.runelite.api.ObjectID.BOOKCASE_394;
|
|
||||||
import static net.runelite.api.ObjectID.BOOKCASE_9523;
|
|
||||||
import static net.runelite.api.ObjectID.BOXES;
|
|
||||||
import static net.runelite.api.ObjectID.BOXES_360;
|
|
||||||
import static net.runelite.api.ObjectID.BOXES_361;
|
|
||||||
import static net.runelite.api.ObjectID.BOXES_3686;
|
|
||||||
import static net.runelite.api.ObjectID.BOXES_5111;
|
|
||||||
import static net.runelite.api.ObjectID.BOXES_6176;
|
|
||||||
import static net.runelite.api.ObjectID.BUCKET_9568;
|
|
||||||
import static net.runelite.api.ObjectID.BUSH_2357;
|
|
||||||
import static net.runelite.api.ObjectID.CLOSED_CHEST_25592;
|
|
||||||
import static net.runelite.api.ObjectID.CLOSED_CHEST_375;
|
|
||||||
import static net.runelite.api.ObjectID.CLOSED_CHEST_5108;
|
|
||||||
import static net.runelite.api.ObjectID.COFFIN;
|
|
||||||
import static net.runelite.api.ObjectID.CRATES_11600;
|
|
||||||
import static net.runelite.api.ObjectID.CRATES_24088;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_11485;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_12963;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_14934;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_18204;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_18506;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_18889;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_24344;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_25775;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_27532;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_27533;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_354;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_355;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_356;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_357;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_358;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_366;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_5106;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_5107;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_5113;
|
|
||||||
import static net.runelite.api.ObjectID.CRATE_9534;
|
|
||||||
import static net.runelite.api.ObjectID.DRAWERS;
|
|
||||||
import static net.runelite.api.ObjectID.DRAWERS_25766;
|
|
||||||
import static net.runelite.api.ObjectID.DRAWERS_350;
|
|
||||||
import static net.runelite.api.ObjectID.DRAWERS_352;
|
|
||||||
import static net.runelite.api.ObjectID.DRAWERS_5618;
|
|
||||||
import static net.runelite.api.ObjectID.DRAWERS_7194;
|
|
||||||
import static net.runelite.api.ObjectID.HAYSTACK;
|
|
||||||
import static net.runelite.api.ObjectID.JUNA;
|
|
||||||
import static net.runelite.api.ObjectID.MINE_CART_6045;
|
|
||||||
import static net.runelite.api.ObjectID.STONES_26633;
|
|
||||||
import static net.runelite.api.ObjectID.WARDROBE_5622;
|
|
||||||
import static net.runelite.api.ObjectID.WHEELBARROW_9625;
|
|
||||||
import net.runelite.api.TileObject;
|
import net.runelite.api.TileObject;
|
||||||
import net.runelite.api.coords.LocalPoint;
|
import net.runelite.api.coords.LocalPoint;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
@@ -347,7 +298,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc
|
|||||||
new CrypticClue("I would make a chemistry joke, but I'm afraid I wouldn't get a reaction.", "Chemist", new WorldPoint(2932, 3212, 0), "Talk to the Chemist in Rimmington"),
|
new CrypticClue("I would make a chemistry joke, but I'm afraid I wouldn't get a reaction.", "Chemist", new WorldPoint(2932, 3212, 0), "Talk to the Chemist in Rimmington"),
|
||||||
new CrypticClue("Show this to Hazelmere.", "Hazelmere", new WorldPoint(2677, 3088, 1), "Hazelmere is found upstairs on the island located just east of Yanille."),
|
new CrypticClue("Show this to Hazelmere.", "Hazelmere", new WorldPoint(2677, 3088, 1), "Hazelmere is found upstairs on the island located just east of Yanille."),
|
||||||
new CrypticClue("Does one really need a fire to stay warm here?", new WorldPoint(3816, 3810, 0), "Dig next to the fire near the Volcanic Mine entrance."),
|
new CrypticClue("Does one really need a fire to stay warm here?", new WorldPoint(3816, 3810, 0), "Dig next to the fire near the Volcanic Mine entrance."),
|
||||||
new CrypticClue("Search the open crate found in a small farmhouse in Hosidius. Cabbages grow outside.", CRATE_27533, new WorldPoint(1687, 3628, 0), "The house is north-east of the general store in Hosidius."),
|
new CrypticClue("Search the open crate found in the Hosidius kitchens.", CRATE_27533, new WorldPoint(1683, 3616, 0), "The kitchens are north-west of the town in Hosidius."),
|
||||||
new CrypticClue("Dig under Ithoi's cabin.", new WorldPoint(2529, 2838, 0), "Dig under Ithoi's cabin in the Corsair Cove."),
|
new CrypticClue("Dig under Ithoi's cabin.", new WorldPoint(2529, 2838, 0), "Dig under Ithoi's cabin in the Corsair Cove."),
|
||||||
new CrypticClue("Search the drawers, upstairs in the bank to the East of Varrock.", DRAWERS_7194, new WorldPoint(3250, 3420, 1), "Search the drawers upstairs in Varrock east bank."),
|
new CrypticClue("Search the drawers, upstairs in the bank to the East of Varrock.", DRAWERS_7194, new WorldPoint(3250, 3420, 1), "Search the drawers upstairs in Varrock east bank."),
|
||||||
new CrypticClue("Speak to Hazelmere.", "Hazelmere", new WorldPoint(2677, 3088, 1), "Located upstairs in the house to the north of fairy ring CLS. Answer: 6859"),
|
new CrypticClue("Speak to Hazelmere.", "Hazelmere", new WorldPoint(2677, 3088, 1), "Located upstairs in the house to the north of fairy ring CLS. Answer: 6859"),
|
||||||
|
|||||||
+46
-529
@@ -27,399 +27,19 @@ package net.runelite.client.plugins.cluescrolls.clues;
|
|||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.Polygon;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.EquipmentInventorySlot;
|
import net.runelite.api.EquipmentInventorySlot;
|
||||||
import static net.runelite.api.EquipmentInventorySlot.AMMO;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.AMULET;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.BODY;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.BOOTS;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.CAPE;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.GLOVES;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.HEAD;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.LEGS;
|
import static net.runelite.api.EquipmentInventorySlot.LEGS;
|
||||||
import static net.runelite.api.EquipmentInventorySlot.RING;
|
import static net.runelite.api.EquipmentInventorySlot.*;
|
||||||
import static net.runelite.api.EquipmentInventorySlot.SHIELD;
|
|
||||||
import static net.runelite.api.EquipmentInventorySlot.WEAPON;
|
|
||||||
import net.runelite.api.Item;
|
import net.runelite.api.Item;
|
||||||
import net.runelite.api.ItemID;
|
import net.runelite.api.ItemID;
|
||||||
import static net.runelite.api.ItemID.ABYSSAL_WHIP;
|
import static net.runelite.api.ItemID.*;
|
||||||
import static net.runelite.api.ItemID.ADAMANT_2H_SWORD;
|
import net.runelite.api.Perspective;
|
||||||
import static net.runelite.api.ItemID.ADAMANT_BOOTS;
|
import net.runelite.api.ScriptID;
|
||||||
import static net.runelite.api.ItemID.ADAMANT_DAGGER;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_FULL_HELM;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_HALBERD;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_MED_HELM;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_PLATEBODY;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_PLATELEGS;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_PLATESKIRT;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_SQ_SHIELD;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_SWORD;
|
|
||||||
import static net.runelite.api.ItemID.ADAMANT_WARHAMMER;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_HOOD_0;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_HOOD_100;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_ROBESKIRT_0;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_ROBESKIRT_100;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_ROBETOP_0;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_ROBETOP_100;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_STAFF_0;
|
|
||||||
import static net.runelite.api.ItemID.AHRIMS_STAFF_100;
|
|
||||||
import static net.runelite.api.ItemID.AIR_TIARA;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_GLORY;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_GLORY1;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_GLORY2;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_GLORY3;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_GLORY4;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_GLORY5;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_GLORY6;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_POWER;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_STRENGTH;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_THE_DAMNED;
|
|
||||||
import static net.runelite.api.ItemID.AMULET_OF_THE_DAMNED_FULL;
|
|
||||||
import static net.runelite.api.ItemID.ANCIENT_CROZIER;
|
|
||||||
import static net.runelite.api.ItemID.ANCIENT_MITRE;
|
|
||||||
import static net.runelite.api.ItemID.ANCIENT_STOLE;
|
|
||||||
import static net.runelite.api.ItemID.ARCLIGHT;
|
|
||||||
import static net.runelite.api.ItemID.ARMADYL_CROZIER;
|
|
||||||
import static net.runelite.api.ItemID.ARMADYL_MITRE;
|
|
||||||
import static net.runelite.api.ItemID.ARMADYL_STOLE;
|
|
||||||
import static net.runelite.api.ItemID.BANDOS_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.BANDOS_CLOAK;
|
|
||||||
import static net.runelite.api.ItemID.BANDOS_CROZIER;
|
|
||||||
import static net.runelite.api.ItemID.BANDOS_GODSWORD;
|
|
||||||
import static net.runelite.api.ItemID.BANDOS_MITRE;
|
|
||||||
import static net.runelite.api.ItemID.BANDOS_PLATEBODY;
|
|
||||||
import static net.runelite.api.ItemID.BANDOS_STOLE;
|
|
||||||
import static net.runelite.api.ItemID.BARROWS_GLOVES;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_AXE;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_DHIDE_BODY;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_DHIDE_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_DHIDE_VAMB;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_DRAGON_MASK;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_PLATEBODY;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_SALAMANDER;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_SLAYER_HELMET;
|
|
||||||
import static net.runelite.api.ItemID.BLACK_SLAYER_HELMET_I;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_DHIDE_BODY;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_DHIDE_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_DHIDE_VAMB;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_ROBE_TOP;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_WIZARD_HAT;
|
|
||||||
import static net.runelite.api.ItemID.BLUE_WIZARD_ROBE;
|
|
||||||
import static net.runelite.api.ItemID.BOBS_PURPLE_SHIRT;
|
|
||||||
import static net.runelite.api.ItemID.BOBS_RED_SHIRT;
|
|
||||||
import static net.runelite.api.ItemID.BODY_TIARA;
|
|
||||||
import static net.runelite.api.ItemID.BONE_DAGGER;
|
|
||||||
import static net.runelite.api.ItemID.BONE_SPEAR;
|
|
||||||
import static net.runelite.api.ItemID.BOOK_OF_BALANCE;
|
|
||||||
import static net.runelite.api.ItemID.BOOK_OF_DARKNESS;
|
|
||||||
import static net.runelite.api.ItemID.BOOK_OF_LAW;
|
|
||||||
import static net.runelite.api.ItemID.BOOK_OF_WAR;
|
|
||||||
import static net.runelite.api.ItemID.BRINE_SABRE;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_2H_SWORD;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_AXE;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_CHAINBODY;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_DAGGER;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_FULL_HELM;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_PLATELEGS;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_SPEAR;
|
|
||||||
import static net.runelite.api.ItemID.BRONZE_SQ_SHIELD;
|
|
||||||
import static net.runelite.api.ItemID.BROWN_APRON;
|
|
||||||
import static net.runelite.api.ItemID.BROWN_HEADBAND;
|
|
||||||
import static net.runelite.api.ItemID.BRUISE_BLUE_SNELM_3343;
|
|
||||||
import static net.runelite.api.ItemID.CAPE_OF_LEGENDS;
|
|
||||||
import static net.runelite.api.ItemID.CASTLE_WARS_BRACELET1;
|
|
||||||
import static net.runelite.api.ItemID.CASTLE_WARS_BRACELET3;
|
|
||||||
import static net.runelite.api.ItemID.CHEFS_HAT;
|
|
||||||
import static net.runelite.api.ItemID.CLIMBING_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.COIF;
|
|
||||||
import static net.runelite.api.ItemID.COMBAT_BRACELET;
|
|
||||||
import static net.runelite.api.ItemID.COMBAT_BRACELET4;
|
|
||||||
import static net.runelite.api.ItemID.CREAM_ROBE_TOP;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_110_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_210_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_310_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_410_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_510_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_610_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_710_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_810_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_910_I;
|
|
||||||
import static net.runelite.api.ItemID.CRYSTAL_BOW_FULL_I;
|
|
||||||
import static net.runelite.api.ItemID.DEATH_TIARA;
|
|
||||||
import static net.runelite.api.ItemID.DESERT_SHIRT;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_GREATAXE_0;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_GREATAXE_100;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_HELM_0;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_HELM_100;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_PLATEBODY_0;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_PLATEBODY_100;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_PLATELEGS_0;
|
|
||||||
import static net.runelite.api.ItemID.DHAROKS_PLATELEGS_100;
|
|
||||||
import static net.runelite.api.ItemID.DIAMOND_BRACELET;
|
|
||||||
import static net.runelite.api.ItemID.DIAMOND_RING;
|
|
||||||
import static net.runelite.api.ItemID.DRAGONSTONE_AMULET;
|
|
||||||
import static net.runelite.api.ItemID.DRAGONSTONE_RING;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_2H_SWORD;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_AXE;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_BATTLEAXE;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_CHAINBODY_3140;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_DEFENDER;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_MED_HELM;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_NECKLACE;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_PICKAXE;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_PICKAXE_12797;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_PLATESKIRT;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_SPEAR;
|
|
||||||
import static net.runelite.api.ItemID.DRAGON_SQ_SHIELD;
|
|
||||||
import static net.runelite.api.ItemID.ELEMENTAL_SHIELD;
|
|
||||||
import static net.runelite.api.ItemID.EMERALD_AMULET;
|
|
||||||
import static net.runelite.api.ItemID.EMERALD_RING;
|
|
||||||
import static net.runelite.api.ItemID.FIRE_BATTLESTAFF;
|
|
||||||
import static net.runelite.api.ItemID.FIRE_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.FIRE_MAX_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.FLARED_TROUSERS;
|
|
||||||
import static net.runelite.api.ItemID.FROZEN_ABYSSAL_WHIP;
|
|
||||||
import static net.runelite.api.ItemID.GOLD_NECKLACE;
|
|
||||||
import static net.runelite.api.ItemID.GOLD_RING;
|
|
||||||
import static net.runelite.api.ItemID.GRANITE_SHIELD;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_DHIDE_BODY;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_DHIDE_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_HAT;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_HEADBAND;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_ROBE_BOTTOMS;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_ROBE_TOP;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_SLAYER_HELMET;
|
|
||||||
import static net.runelite.api.ItemID.GREEN_SLAYER_HELMET_I;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_CHAINSKIRT_0;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_CHAINSKIRT_100;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_HELM_0;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_HELM_100;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_PLATEBODY_0;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_PLATEBODY_100;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_WARSPEAR_0;
|
|
||||||
import static net.runelite.api.ItemID.GUTHANS_WARSPEAR_100;
|
|
||||||
import static net.runelite.api.ItemID.GUTHIX_MITRE;
|
|
||||||
import static net.runelite.api.ItemID.GUTHIX_STOLE;
|
|
||||||
import static net.runelite.api.ItemID.HAM_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.HAM_ROBE;
|
|
||||||
import static net.runelite.api.ItemID.HARDLEATHER_BODY;
|
|
||||||
import static net.runelite.api.ItemID.HELM_OF_NEITIZNOT;
|
|
||||||
import static net.runelite.api.ItemID.HOLY_BOOK;
|
|
||||||
import static net.runelite.api.ItemID.HYDRA_SLAYER_HELMET;
|
|
||||||
import static net.runelite.api.ItemID.HYDRA_SLAYER_HELMET_I;
|
|
||||||
import static net.runelite.api.ItemID.IBANS_STAFF;
|
|
||||||
import static net.runelite.api.ItemID.IBANS_STAFF_U;
|
|
||||||
import static net.runelite.api.ItemID.INFERNAL_PICKAXE;
|
|
||||||
import static net.runelite.api.ItemID.INFERNAL_PICKAXE_UNCHARGED;
|
|
||||||
import static net.runelite.api.ItemID.IRON_2H_SWORD;
|
|
||||||
import static net.runelite.api.ItemID.IRON_CHAINBODY;
|
|
||||||
import static net.runelite.api.ItemID.IRON_FULL_HELM;
|
|
||||||
import static net.runelite.api.ItemID.IRON_KITESHIELD;
|
|
||||||
import static net.runelite.api.ItemID.IRON_MED_HELM;
|
|
||||||
import static net.runelite.api.ItemID.IRON_PICKAXE;
|
|
||||||
import static net.runelite.api.ItemID.IRON_PLATEBODY;
|
|
||||||
import static net.runelite.api.ItemID.IRON_PLATELEGS;
|
|
||||||
import static net.runelite.api.ItemID.IRON_PLATESKIRT;
|
|
||||||
import static net.runelite.api.ItemID.IRON_SCIMITAR;
|
|
||||||
import static net.runelite.api.ItemID.IRON_WARHAMMER;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_COIF_0;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_COIF_100;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_CROSSBOW_0;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_CROSSBOW_100;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_LEATHERSKIRT_0;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_LEATHERSKIRT_100;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_LEATHERTOP_0;
|
|
||||||
import static net.runelite.api.ItemID.KARILS_LEATHERTOP_100;
|
|
||||||
import static net.runelite.api.ItemID.LAVA_BATTLESTAFF;
|
|
||||||
import static net.runelite.api.ItemID.LEATHER_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.LEATHER_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.LEATHER_COWL;
|
|
||||||
import static net.runelite.api.ItemID.LEATHER_GLOVES;
|
|
||||||
import static net.runelite.api.ItemID.LOCKPICK;
|
|
||||||
import static net.runelite.api.ItemID.LONGBOW;
|
|
||||||
import static net.runelite.api.ItemID.MAGIC_LONGBOW;
|
|
||||||
import static net.runelite.api.ItemID.MAPLE_LONGBOW;
|
|
||||||
import static net.runelite.api.ItemID.MAPLE_SHORTBOW;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_PURPLE_HAT;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_PURPLE_KILT;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_PURPLE_ROBE;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_PURPLE_TOP;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_RED_HAT;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_RED_KILT;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_RED_ROBE;
|
|
||||||
import static net.runelite.api.ItemID.MENAPHITE_RED_TOP;
|
|
||||||
import static net.runelite.api.ItemID.MIND_SHIELD;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_CHAINBODY;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_FULL_HELM;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_MED_HELM;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_PICKAXE;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_PLATEBODY;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_PLATELEGS;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_PLATESKIRT;
|
|
||||||
import static net.runelite.api.ItemID.MITHRIL_SCIMITAR;
|
|
||||||
import static net.runelite.api.ItemID.MYSTIC_FIRE_STAFF;
|
|
||||||
import static net.runelite.api.ItemID.MYSTIC_GLOVES;
|
|
||||||
import static net.runelite.api.ItemID.MYSTIC_HAT;
|
|
||||||
import static net.runelite.api.ItemID.MYSTIC_ROBE_BOTTOM;
|
|
||||||
import static net.runelite.api.ItemID.MYSTIC_ROBE_BOTTOM_DARK;
|
|
||||||
import static net.runelite.api.ItemID.MYSTIC_ROBE_TOP;
|
|
||||||
import static net.runelite.api.ItemID.MYSTIC_ROBE_TOP_DARK;
|
|
||||||
import static net.runelite.api.ItemID.NEW_CRYSTAL_BOW_I;
|
|
||||||
import static net.runelite.api.ItemID.OAK_LONGBOW;
|
|
||||||
import static net.runelite.api.ItemID.OAK_SHORTBOW;
|
|
||||||
import static net.runelite.api.ItemID.OBSIDIAN_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.ORANGE_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_1;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_2;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_3;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_4;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_5;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_6;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_7;
|
|
||||||
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_8;
|
|
||||||
import static net.runelite.api.ItemID.PINK_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.PINK_ROBE_TOP;
|
|
||||||
import static net.runelite.api.ItemID.PINK_SKIRT;
|
|
||||||
import static net.runelite.api.ItemID.PIRATE_BANDANA;
|
|
||||||
import static net.runelite.api.ItemID.PIRATE_BANDANA_7124;
|
|
||||||
import static net.runelite.api.ItemID.PIRATE_BANDANA_7130;
|
|
||||||
import static net.runelite.api.ItemID.PIRATE_BANDANA_7136;
|
|
||||||
import static net.runelite.api.ItemID.PROSELYTE_HAUBERK;
|
|
||||||
import static net.runelite.api.ItemID.PURPLE_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.PURPLE_GLOVES;
|
|
||||||
import static net.runelite.api.ItemID.PURPLE_SLAYER_HELMET;
|
|
||||||
import static net.runelite.api.ItemID.PURPLE_SLAYER_HELMET_I;
|
|
||||||
import static net.runelite.api.ItemID.RED_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.RED_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.RED_DHIDE_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.RED_HEADBAND;
|
|
||||||
import static net.runelite.api.ItemID.RED_SLAYER_HELMET;
|
|
||||||
import static net.runelite.api.ItemID.RED_SLAYER_HELMET_I;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING1;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING2;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING3;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING4;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING5;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING6;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING7;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_DUELING8;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_FORGING;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_LIFE;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_VISIBILITY;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_1;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_2;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_3;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_4;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_5;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_I;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_I1;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_I2;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_I3;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_I4;
|
|
||||||
import static net.runelite.api.ItemID.RING_OF_WEALTH_I5;
|
|
||||||
import static net.runelite.api.ItemID.ROLLING_PIN;
|
|
||||||
import static net.runelite.api.ItemID.RUBY_AMULET;
|
|
||||||
import static net.runelite.api.ItemID.RUBY_RING;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_AXE;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_CROSSBOW;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_FULL_HELM;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_HALBERD;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_HELM_H1;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_HELM_H5;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_KITESHIELD;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_LONGSWORD;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_PICKAXE;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_PLATEBODY;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_PLATELEGS;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_PLATESKIRT;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_SHIELD_H1;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_SHIELD_H2;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_SHIELD_H3;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_SHIELD_H4;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_SHIELD_H5;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_SPEAR;
|
|
||||||
import static net.runelite.api.ItemID.RUNE_WARHAMMER;
|
|
||||||
import static net.runelite.api.ItemID.SAPPHIRE_AMULET;
|
|
||||||
import static net.runelite.api.ItemID.SAPPHIRE_NECKLACE;
|
|
||||||
import static net.runelite.api.ItemID.SAPPHIRE_RING;
|
|
||||||
import static net.runelite.api.ItemID.SARADOMIN_CROZIER;
|
|
||||||
import static net.runelite.api.ItemID.SARADOMIN_MITRE;
|
|
||||||
import static net.runelite.api.ItemID.SARADOMIN_STOLE;
|
|
||||||
import static net.runelite.api.ItemID.SEERCULL;
|
|
||||||
import static net.runelite.api.ItemID.SHADOW_SWORD;
|
|
||||||
import static net.runelite.api.ItemID.SILVER_SICKLE;
|
|
||||||
import static net.runelite.api.ItemID.SLAYER_HELMET;
|
|
||||||
import static net.runelite.api.ItemID.SLAYER_HELMET_I;
|
|
||||||
import static net.runelite.api.ItemID.SLED_4084;
|
|
||||||
import static net.runelite.api.ItemID.SNAKESKIN_BOOTS;
|
|
||||||
import static net.runelite.api.ItemID.SNAKESKIN_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.SPINED_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.SPLITBARK_BODY;
|
|
||||||
import static net.runelite.api.ItemID.SPLITBARK_LEGS;
|
|
||||||
import static net.runelite.api.ItemID.SPOTTED_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.SPOTTED_CAPE_10073;
|
|
||||||
import static net.runelite.api.ItemID.STAFF;
|
|
||||||
import static net.runelite.api.ItemID.STAFF_OF_AIR;
|
|
||||||
import static net.runelite.api.ItemID.STAFF_OF_WATER;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_AXE;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_FULL_HELM;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_KITESHIELD;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_LONGSWORD;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_MACE;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_MED_HELM;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_PICKAXE;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_PLATEBODY;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_PLATESKIRT;
|
|
||||||
import static net.runelite.api.ItemID.STEEL_SQ_SHIELD;
|
|
||||||
import static net.runelite.api.ItemID.STUDDED_BODY;
|
|
||||||
import static net.runelite.api.ItemID.STUDDED_CHAPS;
|
|
||||||
import static net.runelite.api.ItemID.TEAM1_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.TEAM50_CAPE;
|
|
||||||
import static net.runelite.api.ItemID.TIARA;
|
|
||||||
import static net.runelite.api.ItemID.TOKTZKETXIL;
|
|
||||||
import static net.runelite.api.ItemID.TOKTZXILUL;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_HAMMERS_0;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_HAMMERS_100;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_HELM_0;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_HELM_100;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_PLATEBODY_0;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_PLATEBODY_100;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_PLATELEGS_0;
|
|
||||||
import static net.runelite.api.ItemID.TORAGS_PLATELEGS_100;
|
|
||||||
import static net.runelite.api.ItemID.TURQUOISE_ROBE_BOTTOMS;
|
|
||||||
import static net.runelite.api.ItemID.TURQUOISE_SLAYER_HELMET;
|
|
||||||
import static net.runelite.api.ItemID.TURQUOISE_SLAYER_HELMET_I;
|
|
||||||
import static net.runelite.api.ItemID.UNHOLY_BOOK;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_BRASSARD_0;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_BRASSARD_100;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_FLAIL_0;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_FLAIL_100;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_HELM_0;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_HELM_100;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_PLATESKIRT_0;
|
|
||||||
import static net.runelite.api.ItemID.VERACS_PLATESKIRT_100;
|
|
||||||
import static net.runelite.api.ItemID.VOLCANIC_ABYSSAL_WHIP;
|
|
||||||
import static net.runelite.api.ItemID.WHITE_APRON;
|
|
||||||
import static net.runelite.api.ItemID.WHITE_BOATER;
|
|
||||||
import static net.runelite.api.ItemID.WHITE_HEADBAND;
|
|
||||||
import static net.runelite.api.ItemID.ZAMORAK_CROZIER;
|
|
||||||
import static net.runelite.api.ItemID.ZAMORAK_FULL_HELM;
|
|
||||||
import static net.runelite.api.ItemID.ZAMORAK_GODSWORD;
|
|
||||||
import static net.runelite.api.ItemID.ZAMORAK_MITRE;
|
|
||||||
import static net.runelite.api.ItemID.ZAMORAK_STOLE;
|
|
||||||
import net.runelite.api.coords.LocalPoint;
|
import net.runelite.api.coords.LocalPoint;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR;
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR;
|
||||||
@@ -427,143 +47,13 @@ import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
|
|||||||
import net.runelite.client.plugins.cluescrolls.clues.emote.AllRequirementsCollection;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.AllRequirementsCollection;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.emote.AnyRequirementCollection;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.AnyRequirementCollection;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.emote.Emote;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.Emote;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.ANGRY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BECKON;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BLOW_KISS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BOW;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BULL_ROARER;
|
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BULL_ROARER;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.CHEER;
|
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.*;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.CLAP;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.CRY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.DANCE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.FLAP;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.GOBLIN_SALUTE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.HEADBANG;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.JIG;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.JUMP_FOR_JOY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.LAUGH;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.NO;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.PANIC;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.PUSH_UP;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.RASPBERRY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SALUTE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SHRUG;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SLAP_HEAD;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SPIN;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.STOMP;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.THINK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.WAVE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.YAWN;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.YES;
|
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.emote.RangeItemRequirement;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.RangeItemRequirement;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.AGILITY_PYRAMID;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.AL_KHARID_SCORPION_MINE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.AUBURYS_SHOP_IN_VARROCK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.BARBARIAN_OUTPOST_OBSTACLE_COURSE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.BARROWS_CHEST;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.BEHIND_MISS_SCHISM_IN_DRAYNOR_VILLAGE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.BOB_AXES_ENTRANCE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.BY_THE_BEAR_CAGE_IN_VARROCK_PALACE_GARDENS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.CASTLE_WARS_BANK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.CATHERBY_BEEHIVE_FIELD;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.CENTRE_OF_CANIFIS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.CENTRE_OF_THE_CATACOMBS_OF_KOUREND;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.CHAOS_TEMPLE_IN_THE_SOUTHEASTERN_WILDERNESS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.CHAPEL_IN_WEST_ARDOUGNE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.CROSSROADS_NORTH_OF_DRAYNOR_VILLAGE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.DEATH_ALTAR;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.DIGSITE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.DRAYNOR_MANOR_BY_THE_FOUNTAIN;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.DRAYNOR_VILLAGE_MARKET;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.EAST_OF_THE_BARBARIAN_VILLAGE_BRIDGE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ENTRANA_CHAPEL;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ENTRANCE_OF_THE_ARCEUUS_LIBRARY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ENTRANCE_OF_THE_CAVERN_UNDER_THE_WHIRLPOOL;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ENTRANCE_OF_THE_CAVE_OF_DAMIS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.FINE_CLOTHES_ENTRANCE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.FISHING_GUILD_BANK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.FOUNTAIN_OF_HEROES;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.GNOME_GLIDER_ON_WHITE_WOLF_MOUNTAIN;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.GNOME_STRONGHOLD_BALANCING_ROPE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.GYPSY_TENT_ENTRANCE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.HALFWAY_DOWN_TROLLWEISS_MOUNTAIN;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.HICKTONS_ARCHERY_EMPORIUM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.HOSIDIUS_MESS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.INSIDE_THE_DIGSITE_EXAM_CENTRE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.IN_THE_MIDDLE_OF_JIGGIG;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.KING_BLACK_DRAGONS_LAIR;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.LIMESTONE_MINE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.LUMBRIDGE_SWAMP_CAVES;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.MAUSOLEUM_OFF_THE_MORYTANIA_COAST;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.MOUNTAIN_CAMP_GOAT_ENCLOSURE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.MUBARIZS_ROOM_AT_THE_DUEL_ARENA;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.MUDSKIPPER_POINT;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_A_LADDER_IN_THE_WILDERNESS_LAVA_MAZE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_A_RUNITE_ROCK_IN_THE_FREMENNIK_ISLES;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_A_SHED_IN_LUMBRIDGE_SWAMP;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_HERQUINS_SHOP_IN_FALADOR;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_THE_ENTRANA_FERRY_IN_PORT_SARIM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_THE_GEM_STALL_IN_ARDOUGNE_MARKET;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_THE_PARROTS_IN_ARDOUGNE_ZOO;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_THE_PIER_IN_ZULANDRA;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NEAR_THE_SAWMILL_OPERATORS_BOOTH;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NORTHEAST_CORNER_OF_THE_KHARAZI_JUNGLE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NORTHERN_WALL_OF_CASTLE_DRAKAN;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NORTHWESTERN_CORNER_OF_THE_ENCHANTED_VALLEY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NORTH_OF_EVIL_DAVES_HOUSE_IN_EDGEVILLE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NORTH_OF_MOUNT_KARUULM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.NOTERAZZOS_SHOP_IN_THE_WILDERNESS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OBSERVATORY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OGRE_CAGE_IN_KING_LATHAS_TRAINING_CAMP;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ON_THE_BRIDGE_TO_THE_MISTHALIN_WIZARDS_TOWER;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ON_TOP_OF_TROLLHEIM_MOUNTAIN;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_CATHERBY_BANK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_DRAYNOR_VILLAGE_JAIL;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_HARRYS_FISHING_SHOP_IN_CATHERBY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_KEEP_LE_FAYE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_KRIL_TSUTSAROTHS_ROOM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_MUDKNUCKLES_HUT;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_BAR_BY_THE_FIGHT_ARENA;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_DIGSITE_EXAM_CENTRE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_FALADOR_PARTY_ROOM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_FISHING_GUILD;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_GREAT_PYRAMID_OF_SOPHANEM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_LEGENDS_GUILD_DOOR;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_LEGENDS_GUILD_GATES;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_SEERS_VILLAGE_COURTHOUSE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_SLAYER_TOWER_GARGOYLE_ROOM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_THE_WILDERNESS_AXE_HUT;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_VARROCK_PALACE_COURTYARD;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.OUTSIDE_YANILLE_BANK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.RIMMINGTON_MINE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ROAD_JUNCTION_NORTH_OF_RIMMINGTON;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.ROAD_JUNCTION_SOUTH_OF_SINCLAIR_MANSION;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SHANTAY_PASS;
|
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SHANTAY_PASS;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SHAYZIEN_WAR_TENT;
|
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.*;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SHILO_VILLAGE_BANK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SOUL_ALTAR;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SOUTHEAST_CORNER_OF_LAVA_DRAGON_ISLE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SOUTHEAST_CORNER_OF_THE_FISHING_PLATFORM;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SOUTHEAST_CORNER_OF_THE_MONASTERY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SOUTH_OF_THE_GRAND_EXCHANGE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.SOUTH_OF_THE_SHRINE_IN_TAI_BWO_WANNAI_VILLAGE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.TAVERLEY_STONE_CIRCLE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.TENT_IN_LORD_IORWERTHS_ENCAMPMENT;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.TOP_FLOOR_OF_THE_LIGHTHOUSE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.TOP_FLOOR_OF_THE_YANILLE_WATCHTOWER;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.TZHAAR_GEM_STORE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.TZHAAR_WEAPONS_STORE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.UPSTAIRS_IN_THE_ARDOUGNE_WINDMILL;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.VARROCK_PALACE_LIBRARY;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.VOLCANO_IN_THE_NORTHEASTERN_WILDERNESS;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.WARRIORS_GUILD_BANK;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.WARRIORS_GUILD_BANK_29047;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.WELL_OF_VOYAGE;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.WEST_OF_THE_SHAYZIEN_COMBAT_RING;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.WEST_SIDE_OF_THE_KARAMJA_BANANA_PLANTATION;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit.WHEAT_FIELD_NEAR_THE_LUMBRIDGE_WINDMILL;
|
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.emote.STASHUnit._7TH_CHAMBER_OF_JALSAVRAH;
|
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.emote.SlotLimitationRequirement;
|
import net.runelite.client.plugins.cluescrolls.clues.emote.SlotLimitationRequirement;
|
||||||
import net.runelite.client.ui.overlay.OverlayUtil;
|
import net.runelite.client.ui.overlay.OverlayUtil;
|
||||||
@@ -690,6 +180,9 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu
|
|||||||
new EmoteClue("Panic at Al Kharid mine.", null, new WorldPoint(3300, 3314, 0), PANIC),
|
new EmoteClue("Panic at Al Kharid mine.", null, new WorldPoint(3300, 3314, 0), PANIC),
|
||||||
new EmoteClue("Spin at Flynn's Mace Shop.", null, new WorldPoint(2950, 3387, 0), SPIN));
|
new EmoteClue("Spin at Flynn's Mace Shop.", null, new WorldPoint(2950, 3387, 0), SPIN));
|
||||||
|
|
||||||
|
private static final String UNICODE_CHECK_MARK = "\u2713";
|
||||||
|
private static final String UNICODE_BALLOT_X = "\u2717";
|
||||||
|
|
||||||
private static SingleItemRequirement item(int itemId)
|
private static SingleItemRequirement item(int itemId)
|
||||||
{
|
{
|
||||||
return new SingleItemRequirement(itemId);
|
return new SingleItemRequirement(itemId);
|
||||||
@@ -721,19 +214,18 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final String text;
|
private final String text;
|
||||||
private final Integer stashUnit;
|
private final STASHUnit stashUnit;
|
||||||
private final WorldPoint location;
|
private final WorldPoint location;
|
||||||
private final Emote firstEmote;
|
private final Emote firstEmote;
|
||||||
private final Emote secondEmote;
|
private final Emote secondEmote;
|
||||||
@Nonnull
|
|
||||||
private final ItemRequirement[] itemRequirements;
|
private final ItemRequirement[] itemRequirements;
|
||||||
|
|
||||||
private EmoteClue(String text, Integer stashUnit, WorldPoint location, Emote firstEmote, @Nonnull ItemRequirement... itemRequirements)
|
private EmoteClue(String text, STASHUnit stashUnit, WorldPoint location, Emote firstEmote, @Nonnull ItemRequirement... itemRequirements)
|
||||||
{
|
{
|
||||||
this(text, stashUnit, location, firstEmote, null, itemRequirements);
|
this(text, stashUnit, location, firstEmote, null, itemRequirements);
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmoteClue(String text, Integer stashUnit, WorldPoint location, Emote firstEmote, Emote secondEmote, @Nonnull ItemRequirement... itemRequirements)
|
private EmoteClue(String text, STASHUnit stashUnit, WorldPoint location, Emote firstEmote, Emote secondEmote, @Nonnull ItemRequirement... itemRequirements)
|
||||||
{
|
{
|
||||||
this.text = text;
|
this.text = text;
|
||||||
this.stashUnit = stashUnit;
|
this.stashUnit = stashUnit;
|
||||||
@@ -763,6 +255,17 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu
|
|||||||
|
|
||||||
if (itemRequirements.length > 0)
|
if (itemRequirements.length > 0)
|
||||||
{
|
{
|
||||||
|
Client client = plugin.getClient();
|
||||||
|
client.runScript(ScriptID.WATSON_STASH_UNIT_CHECK, stashUnit.getObjectId(), 0, 0, 0);
|
||||||
|
int[] intStack = client.getIntStack();
|
||||||
|
boolean stashUnitBuilt = intStack[0] == 1;
|
||||||
|
|
||||||
|
panelComponent.getChildren().add(LineComponent.builder()
|
||||||
|
.left("STASH Unit:")
|
||||||
|
.right(stashUnitBuilt ? UNICODE_CHECK_MARK : UNICODE_BALLOT_X)
|
||||||
|
.rightColor(stashUnitBuilt ? Color.GREEN : Color.RED)
|
||||||
|
.build());
|
||||||
|
|
||||||
panelComponent.getChildren().add(LineComponent.builder().left("Equip:").build());
|
panelComponent.getChildren().add(LineComponent.builder().left("Equip:").build());
|
||||||
|
|
||||||
Item[] equipment = plugin.getEquippedItems();
|
Item[] equipment = plugin.getEquippedItems();
|
||||||
@@ -790,9 +293,9 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu
|
|||||||
boolean combinedFulfilled = requirement.fulfilledBy(combined);
|
boolean combinedFulfilled = requirement.fulfilledBy(combined);
|
||||||
|
|
||||||
panelComponent.getChildren().add(LineComponent.builder()
|
panelComponent.getChildren().add(LineComponent.builder()
|
||||||
.left(requirement.getCollectiveName(plugin.getClient()))
|
.left(requirement.getCollectiveName(client))
|
||||||
.leftColor(TITLED_CONTENT_COLOR)
|
.leftColor(TITLED_CONTENT_COLOR)
|
||||||
.right(combinedFulfilled ? "\u2713" : "\u2717")
|
.right(combinedFulfilled ? UNICODE_CHECK_MARK : UNICODE_BALLOT_X)
|
||||||
.rightColor(equipmentFulfilled ? Color.GREEN : (combinedFulfilled ? Color.ORANGE : Color.RED))
|
.rightColor(equipmentFulfilled ? Color.GREEN : (combinedFulfilled ? Color.ORANGE : Color.RED))
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
@@ -802,14 +305,28 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu
|
|||||||
@Override
|
@Override
|
||||||
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
||||||
{
|
{
|
||||||
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
LocalPoint localPoint = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
||||||
|
|
||||||
if (localLocation == null)
|
if (localPoint != null)
|
||||||
{
|
{
|
||||||
return;
|
OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localPoint, plugin.getEmoteImage(), Color.ORANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getEmoteImage(), Color.ORANGE);
|
final WorldPoint[] worldPoints = stashUnit.getWorldPoints();
|
||||||
|
|
||||||
|
for (final WorldPoint worldPoint : worldPoints)
|
||||||
|
{
|
||||||
|
final LocalPoint stashUnitLocalPoint = LocalPoint.fromWorld(plugin.getClient(), worldPoint);
|
||||||
|
|
||||||
|
if (stashUnitLocalPoint != null)
|
||||||
|
{
|
||||||
|
final Polygon poly = Perspective.getCanvasTilePoly(plugin.getClient(), stashUnitLocalPoint);
|
||||||
|
if (poly != null)
|
||||||
|
{
|
||||||
|
OverlayUtil.renderPolygon(graphics, poly, Color.RED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EmoteClue forText(String text)
|
public static EmoteClue forText(String text)
|
||||||
|
|||||||
+2
-33
@@ -29,38 +29,7 @@ import java.awt.Color;
|
|||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_EASY_12179;
|
import static net.runelite.api.ItemID.*;
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_EASY_2713;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_EASY_2716;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_EASY_2719;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_EASY_3516;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_EASY_3518;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_EASY_7236;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_ELITE_12130;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_ELITE_19782;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_ELITE_19783;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_ELITE_19784;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_ELITE_19785;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_ELITE_19786;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD_2729;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD_3520;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD_3522;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD_3524;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD_3525;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD_7239;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_HARD_7241;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_2827;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_3596;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_3598;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_3599;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_3601;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_3602;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_7286;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_7288;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_7290;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_7292;
|
|
||||||
import static net.runelite.api.ItemID.CLUE_SCROLL_MEDIUM_7294;
|
|
||||||
import net.runelite.api.ObjectComposition;
|
import net.runelite.api.ObjectComposition;
|
||||||
import static net.runelite.api.ObjectID.CRATE_18506;
|
import static net.runelite.api.ObjectID.CRATE_18506;
|
||||||
import static net.runelite.api.ObjectID.CRATE_2620;
|
import static net.runelite.api.ObjectID.CRATE_2620;
|
||||||
@@ -133,7 +102,7 @@ public class MapClue extends ClueScroll implements ObjectClueScroll
|
|||||||
this(itemId, location, objectId, null);
|
this(itemId, location, objectId, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private MapClue(int itemId, WorldPoint location, String description)
|
MapClue(int itemId, WorldPoint location, String description)
|
||||||
{
|
{
|
||||||
this(itemId, location, -1, description);
|
this(itemId, location, -1, description);
|
||||||
}
|
}
|
||||||
|
|||||||
+120
-108
@@ -24,115 +24,127 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.cluescrolls.clues.emote;
|
package net.runelite.client.plugins.cluescrolls.clues.emote;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import net.runelite.api.NullObjectID;
|
import net.runelite.api.NullObjectID;
|
||||||
|
import net.runelite.api.coords.WorldPoint;
|
||||||
|
|
||||||
public final class STASHUnit
|
@Getter
|
||||||
|
public enum STASHUnit
|
||||||
{
|
{
|
||||||
public static final int NEAR_A_SHED_IN_LUMBRIDGE_SWAMP = NullObjectID.NULL_28958;
|
NEAR_A_SHED_IN_LUMBRIDGE_SWAMP(NullObjectID.NULL_28958, new WorldPoint(3201, 3171, 0)),
|
||||||
public static final int ON_THE_BRIDGE_TO_THE_MISTHALIN_WIZARDS_TOWER = NullObjectID.NULL_28959;
|
ON_THE_BRIDGE_TO_THE_MISTHALIN_WIZARDS_TOWER(NullObjectID.NULL_28959, new WorldPoint(3115, 3194, 1)),
|
||||||
public static final int DRAYNOR_VILLAGE_MARKET = NullObjectID.NULL_28960;
|
DRAYNOR_VILLAGE_MARKET(NullObjectID.NULL_28960, new WorldPoint(3083, 3254, 0)),
|
||||||
public static final int LIMESTONE_MINE = NullObjectID.NULL_28961;
|
LIMESTONE_MINE(NullObjectID.NULL_28961, new WorldPoint(3373, 3498, 0)),
|
||||||
public static final int OUTSIDE_THE_LEGENDS_GUILD_GATES = NullObjectID.NULL_28962;
|
OUTSIDE_THE_LEGENDS_GUILD_GATES(NullObjectID.NULL_28962, new WorldPoint(2735, 3350, 0)),
|
||||||
public static final int MUDSKIPPER_POINT = NullObjectID.NULL_28963;
|
MUDSKIPPER_POINT(NullObjectID.NULL_28963, new WorldPoint(2988, 3111, 0)),
|
||||||
public static final int NEAR_THE_ENTRANA_FERRY_IN_PORT_SARIM = NullObjectID.NULL_28964;
|
NEAR_THE_ENTRANA_FERRY_IN_PORT_SARIM(NullObjectID.NULL_28964, new WorldPoint(3050, 3237, 1)),
|
||||||
public static final int AL_KHARID_SCORPION_MINE = NullObjectID.NULL_28965;
|
AL_KHARID_SCORPION_MINE(NullObjectID.NULL_28965, new WorldPoint(3303, 3289, 0)),
|
||||||
public static final int DRAYNOR_MANOR_BY_THE_FOUNTAIN = NullObjectID.NULL_28966;
|
DRAYNOR_MANOR_BY_THE_FOUNTAIN(NullObjectID.NULL_28966, new WorldPoint(3089, 3331, 0)),
|
||||||
public static final int WHEAT_FIELD_NEAR_THE_LUMBRIDGE_WINDMILL = NullObjectID.NULL_28967;
|
WHEAT_FIELD_NEAR_THE_LUMBRIDGE_WINDMILL(NullObjectID.NULL_28967, new WorldPoint(3163, 3297, 0)),
|
||||||
public static final int CROSSROADS_NORTH_OF_DRAYNOR_VILLAGE = NullObjectID.NULL_28968;
|
CROSSROADS_NORTH_OF_DRAYNOR_VILLAGE(NullObjectID.NULL_28968, new WorldPoint(3111, 3289, 0)),
|
||||||
public static final int RIMMINGTON_MINE = NullObjectID.NULL_28969;
|
RIMMINGTON_MINE(NullObjectID.NULL_28969, new WorldPoint(2976, 3239, 0)),
|
||||||
public static final int VARROCK_PALACE_LIBRARY = NullObjectID.NULL_28970;
|
VARROCK_PALACE_LIBRARY(NullObjectID.NULL_28970, new WorldPoint(3214, 3490, 0)),
|
||||||
public static final int UPSTAIRS_IN_THE_ARDOUGNE_WINDMILL = NullObjectID.NULL_28971;
|
UPSTAIRS_IN_THE_ARDOUGNE_WINDMILL(NullObjectID.NULL_28971, new WorldPoint(2635, 3386, 2)),
|
||||||
public static final int OUTSIDE_THE_FALADOR_PARTY_ROOM = NullObjectID.NULL_28972;
|
OUTSIDE_THE_FALADOR_PARTY_ROOM(NullObjectID.NULL_28972, new WorldPoint(3043, 3371, 0)),
|
||||||
public static final int TAVERLEY_STONE_CIRCLE = NullObjectID.NULL_28973;
|
TAVERLEY_STONE_CIRCLE(NullObjectID.NULL_28973, new WorldPoint(2924, 3477, 0)),
|
||||||
public static final int CATHERBY_BEEHIVE_FIELD = NullObjectID.NULL_28974;
|
CATHERBY_BEEHIVE_FIELD(NullObjectID.NULL_28974, new WorldPoint(2764, 3438, 0)),
|
||||||
public static final int NEAR_THE_PARROTS_IN_ARDOUGNE_ZOO = NullObjectID.NULL_28975;
|
NEAR_THE_PARROTS_IN_ARDOUGNE_ZOO(NullObjectID.NULL_28975, new WorldPoint(2608, 3284, 0)),
|
||||||
public static final int ROAD_JUNCTION_NORTH_OF_RIMMINGTON = NullObjectID.NULL_28976;
|
ROAD_JUNCTION_NORTH_OF_RIMMINGTON(NullObjectID.NULL_28976, new WorldPoint(2981, 3278, 0)),
|
||||||
public static final int OUTSIDE_THE_FISHING_GUILD = NullObjectID.NULL_28977;
|
OUTSIDE_THE_FISHING_GUILD(NullObjectID.NULL_28977, new WorldPoint(2608, 3393, 0)),
|
||||||
public static final int OUTSIDE_KEEP_LE_FAYE = NullObjectID.NULL_28978;
|
OUTSIDE_KEEP_LE_FAYE(NullObjectID.NULL_28978, new WorldPoint(2756, 3399, 0)),
|
||||||
public static final int ROAD_JUNCTION_SOUTH_OF_SINCLAIR_MANSION = NullObjectID.NULL_28979;
|
ROAD_JUNCTION_SOUTH_OF_SINCLAIR_MANSION(NullObjectID.NULL_28979, new WorldPoint(2735, 3534, 0)),
|
||||||
public static final int OUTSIDE_THE_DIGSITE_EXAM_CENTRE = NullObjectID.NULL_28980;
|
OUTSIDE_THE_DIGSITE_EXAM_CENTRE(NullObjectID.NULL_28980, new WorldPoint(3353, 3343, 0)),
|
||||||
public static final int NEAR_THE_SAWMILL_OPERATORS_BOOTH = NullObjectID.NULL_28981;
|
NEAR_THE_SAWMILL_OPERATORS_BOOTH(NullObjectID.NULL_28981, new WorldPoint(3298, 3490, 0)),
|
||||||
public static final int MUBARIZS_ROOM_AT_THE_DUEL_ARENA = NullObjectID.NULL_28982;
|
MUBARIZS_ROOM_AT_THE_DUEL_ARENA(NullObjectID.NULL_28982, new WorldPoint(3316, 3242, 0)),
|
||||||
public static final int OUTSIDE_VARROCK_PALACE_COURTYARD = NullObjectID.NULL_28983;
|
OUTSIDE_VARROCK_PALACE_COURTYARD(NullObjectID.NULL_28983, new WorldPoint(3211, 3456, 0)),
|
||||||
public static final int NEAR_HERQUINS_SHOP_IN_FALADOR = NullObjectID.NULL_28984;
|
NEAR_HERQUINS_SHOP_IN_FALADOR(NullObjectID.NULL_28984, new WorldPoint(2941, 3339, 0)),
|
||||||
public static final int SOUTH_OF_THE_GRAND_EXCHANGE = NullObjectID.NULL_28985;
|
SOUTH_OF_THE_GRAND_EXCHANGE(NullObjectID.NULL_28985, new WorldPoint(3159, 3464, 0)),
|
||||||
public static final int AUBURYS_SHOP_IN_VARROCK = NullObjectID.NULL_28986;
|
AUBURYS_SHOP_IN_VARROCK(NullObjectID.NULL_28986, new WorldPoint(3252, 3404, 0)),
|
||||||
public static final int CENTRE_OF_CANIFIS = NullObjectID.NULL_28987;
|
CENTRE_OF_CANIFIS(NullObjectID.NULL_28987, new WorldPoint(3491, 3489, 0)),
|
||||||
public static final int MAUSOLEUM_OFF_THE_MORYTANIA_COAST = NullObjectID.NULL_28988;
|
MAUSOLEUM_OFF_THE_MORYTANIA_COAST(NullObjectID.NULL_28988, new WorldPoint(3500, 3575, 0)),
|
||||||
public static final int EAST_OF_THE_BARBARIAN_VILLAGE_BRIDGE = NullObjectID.NULL_28989;
|
EAST_OF_THE_BARBARIAN_VILLAGE_BRIDGE(NullObjectID.NULL_28989, new WorldPoint(3110, 3422, 0)),
|
||||||
public static final int SOUTH_OF_THE_SHRINE_IN_TAI_BWO_WANNAI_VILLAGE = NullObjectID.NULL_28990;
|
SOUTH_OF_THE_SHRINE_IN_TAI_BWO_WANNAI_VILLAGE(NullObjectID.NULL_28990, new WorldPoint(2802, 3081, 0)),
|
||||||
public static final int CASTLE_WARS_BANK = NullObjectID.NULL_28991;
|
CASTLE_WARS_BANK(NullObjectID.NULL_28991, new WorldPoint(2444, 3093, 0)),
|
||||||
public static final int BARBARIAN_OUTPOST_OBSTACLE_COURSE = NullObjectID.NULL_28992;
|
BARBARIAN_OUTPOST_OBSTACLE_COURSE(NullObjectID.NULL_28992, new WorldPoint(2541, 3550, 0)),
|
||||||
public static final int GNOME_STRONGHOLD_BALANCING_ROPE = NullObjectID.NULL_28993;
|
GNOME_STRONGHOLD_BALANCING_ROPE(NullObjectID.NULL_28993, new WorldPoint(2473, 3418, 2)),
|
||||||
public static final int OUTSIDE_YANILLE_BANK = NullObjectID.NULL_28994;
|
OUTSIDE_YANILLE_BANK(NullObjectID.NULL_28994, new WorldPoint(2603, 3091, 0)),
|
||||||
public static final int OBSERVATORY = NullObjectID.NULL_28995;
|
OBSERVATORY(NullObjectID.NULL_28995, new WorldPoint(2439, 3166, 0)),
|
||||||
public static final int OGRE_CAGE_IN_KING_LATHAS_TRAINING_CAMP = NullObjectID.NULL_28996;
|
OGRE_CAGE_IN_KING_LATHAS_TRAINING_CAMP(NullObjectID.NULL_28996, new WorldPoint(2533, 3377, 0)),
|
||||||
public static final int DIGSITE = NullObjectID.NULL_28997;
|
DIGSITE(NullObjectID.NULL_28997, new WorldPoint(3370, 3420, 0)),
|
||||||
public static final int HICKTONS_ARCHERY_EMPORIUM = NullObjectID.NULL_28998;
|
HICKTONS_ARCHERY_EMPORIUM(NullObjectID.NULL_28998, new WorldPoint(2825, 3441, 0)),
|
||||||
public static final int SHANTAY_PASS = NullObjectID.NULL_28999;
|
SHANTAY_PASS(NullObjectID.NULL_28999, new WorldPoint(3308, 3125, 0)),
|
||||||
public static final int LUMBRIDGE_SWAMP_CAVES = NullObjectID.NULL_29000;
|
LUMBRIDGE_SWAMP_CAVES(NullObjectID.NULL_29000, new WorldPoint(3222, 9584, 0), new WorldPoint(3167, 9570, 0)),
|
||||||
public static final int OUTSIDE_CATHERBY_BANK = NullObjectID.NULL_29001;
|
OUTSIDE_CATHERBY_BANK(NullObjectID.NULL_29001, new WorldPoint(2807, 3437, 0)),
|
||||||
public static final int OUTSIDE_THE_SEERS_VILLAGE_COURTHOUSE = NullObjectID.NULL_29002;
|
OUTSIDE_THE_SEERS_VILLAGE_COURTHOUSE(NullObjectID.NULL_29002, new WorldPoint(2731, 3475, 0)),
|
||||||
public static final int OUTSIDE_HARRYS_FISHING_SHOP_IN_CATHERBY = NullObjectID.NULL_29003;
|
OUTSIDE_HARRYS_FISHING_SHOP_IN_CATHERBY(NullObjectID.NULL_29003, new WorldPoint(2837, 3436, 0)),
|
||||||
public static final int TZHAAR_WEAPONS_STORE = NullObjectID.NULL_29004;
|
TZHAAR_WEAPONS_STORE(NullObjectID.NULL_29004, new WorldPoint(2479, 5146, 0)),
|
||||||
public static final int NORTH_OF_EVIL_DAVES_HOUSE_IN_EDGEVILLE = NullObjectID.NULL_29005;
|
NORTH_OF_EVIL_DAVES_HOUSE_IN_EDGEVILLE(NullObjectID.NULL_29005, new WorldPoint(3077, 3503, 0)),
|
||||||
public static final int WEST_OF_THE_SHAYZIEN_COMBAT_RING = NullObjectID.NULL_29006;
|
WEST_OF_THE_SHAYZIEN_COMBAT_RING(NullObjectID.NULL_29006, new WorldPoint(1534, 3591, 0)),
|
||||||
public static final int ENTRANCE_OF_THE_ARCEUUS_LIBRARY = NullObjectID.NULL_29007;
|
ENTRANCE_OF_THE_ARCEUUS_LIBRARY(NullObjectID.NULL_29007, new WorldPoint(1642, 3809, 0)),
|
||||||
public static final int OUTSIDE_DRAYNOR_VILLAGE_JAIL = NullObjectID.NULL_29008;
|
OUTSIDE_DRAYNOR_VILLAGE_JAIL(NullObjectID.NULL_29008, new WorldPoint(3130, 3250, 0)),
|
||||||
public static final int CHAOS_TEMPLE_IN_THE_SOUTHEASTERN_WILDERNESS = NullObjectID.NULL_29009;
|
CHAOS_TEMPLE_IN_THE_SOUTHEASTERN_WILDERNESS(NullObjectID.NULL_29009, new WorldPoint(3245, 3609, 0)),
|
||||||
public static final int FISHING_GUILD_BANK = NullObjectID.NULL_29010;
|
FISHING_GUILD_BANK(NullObjectID.NULL_29010, new WorldPoint(2593, 3409, 0)),
|
||||||
public static final int TOP_FLOOR_OF_THE_LIGHTHOUSE = NullObjectID.NULL_29011;
|
TOP_FLOOR_OF_THE_LIGHTHOUSE(NullObjectID.NULL_29011, new WorldPoint(2512, 3640, 2)),
|
||||||
public static final int OUTSIDE_THE_GREAT_PYRAMID_OF_SOPHANEM = NullObjectID.NULL_29012;
|
OUTSIDE_THE_GREAT_PYRAMID_OF_SOPHANEM(NullObjectID.NULL_29012, new WorldPoint(3291, 2780, 0)),
|
||||||
public static final int NOTERAZZOS_SHOP_IN_THE_WILDERNESS = NullObjectID.NULL_29013;
|
NOTERAZZOS_SHOP_IN_THE_WILDERNESS(NullObjectID.NULL_29013, new WorldPoint(3027, 3699, 0)),
|
||||||
public static final int WEST_SIDE_OF_THE_KARAMJA_BANANA_PLANTATION = NullObjectID.NULL_29014;
|
WEST_SIDE_OF_THE_KARAMJA_BANANA_PLANTATION(NullObjectID.NULL_29014, new WorldPoint(2909, 3169, 0)),
|
||||||
public static final int MOUNTAIN_CAMP_GOAT_ENCLOSURE = NullObjectID.NULL_29015;
|
MOUNTAIN_CAMP_GOAT_ENCLOSURE(NullObjectID.NULL_29015, new WorldPoint(2810, 3677, 0)),
|
||||||
public static final int GNOME_GLIDER_ON_WHITE_WOLF_MOUNTAIN = NullObjectID.NULL_29016;
|
GNOME_GLIDER_ON_WHITE_WOLF_MOUNTAIN(NullObjectID.NULL_29016, new WorldPoint(2849, 3496, 0)),
|
||||||
public static final int SHILO_VILLAGE_BANK = NullObjectID.NULL_29017;
|
SHILO_VILLAGE_BANK(NullObjectID.NULL_29017, new WorldPoint(2853, 2952, 0)),
|
||||||
public static final int INSIDE_THE_DIGSITE_EXAM_CENTRE = NullObjectID.NULL_29018;
|
INSIDE_THE_DIGSITE_EXAM_CENTRE(NullObjectID.NULL_29018, new WorldPoint(3356, 3333, 0)),
|
||||||
public static final int NORTHEAST_CORNER_OF_THE_KHARAZI_JUNGLE = NullObjectID.NULL_29019;
|
NORTHEAST_CORNER_OF_THE_KHARAZI_JUNGLE(NullObjectID.NULL_29019, new WorldPoint(2952, 2932, 0)),
|
||||||
public static final int VOLCANO_IN_THE_NORTHEASTERN_WILDERNESS = NullObjectID.NULL_29020;
|
VOLCANO_IN_THE_NORTHEASTERN_WILDERNESS(NullObjectID.NULL_29020, new WorldPoint(3368, 3930, 0)),
|
||||||
public static final int IN_THE_MIDDLE_OF_JIGGIG = NullObjectID.NULL_29021;
|
IN_THE_MIDDLE_OF_JIGGIG(NullObjectID.NULL_29021, new WorldPoint(2478, 3048, 0)),
|
||||||
public static final int AGILITY_PYRAMID = NullObjectID.NULL_29022;
|
AGILITY_PYRAMID(NullObjectID.NULL_29022, new WorldPoint(3357, 2830, 0)),
|
||||||
public static final int HOSIDIUS_MESS = NullObjectID.NULL_29023;
|
HOSIDIUS_MESS(NullObjectID.NULL_29023, new WorldPoint(1648, 3631, 0)),
|
||||||
public static final int CHAPEL_IN_WEST_ARDOUGNE = NullObjectID.NULL_29024;
|
CHAPEL_IN_WEST_ARDOUGNE(NullObjectID.NULL_29024, new WorldPoint(2527, 3294, 0)),
|
||||||
public static final int NEAR_A_RUNITE_ROCK_IN_THE_FREMENNIK_ISLES = NullObjectID.NULL_29025;
|
NEAR_A_RUNITE_ROCK_IN_THE_FREMENNIK_ISLES(NullObjectID.NULL_29025, new WorldPoint(2374, 3847, 0)),
|
||||||
public static final int NEAR_A_LADDER_IN_THE_WILDERNESS_LAVA_MAZE = NullObjectID.NULL_29026;
|
NEAR_A_LADDER_IN_THE_WILDERNESS_LAVA_MAZE(NullObjectID.NULL_29026, new WorldPoint(3069, 3862, 0)),
|
||||||
public static final int ENTRANCE_OF_THE_CAVE_OF_DAMIS = NullObjectID.NULL_29027;
|
ENTRANCE_OF_THE_CAVE_OF_DAMIS(NullObjectID.NULL_29027, new WorldPoint(2629, 5070, 0)),
|
||||||
public static final int WARRIORS_GUILD_BANK = NullObjectID.NULL_29028;
|
WARRIORS_GUILD_BANK(NullObjectID.NULL_29028, new WorldPoint(2844, 3537, 0)),
|
||||||
public static final int SOUTHEAST_CORNER_OF_THE_MONASTERY = NullObjectID.NULL_29029;
|
SOUTHEAST_CORNER_OF_THE_MONASTERY(NullObjectID.NULL_29029, new WorldPoint(3056, 3482, 0)),
|
||||||
public static final int SOUTHEAST_CORNER_OF_THE_FISHING_PLATFORM = NullObjectID.NULL_29030;
|
SOUTHEAST_CORNER_OF_THE_FISHING_PLATFORM(NullObjectID.NULL_29030, new WorldPoint(2787, 3277, 1)),
|
||||||
public static final int OUTSIDE_THE_SLAYER_TOWER_GARGOYLE_ROOM = NullObjectID.NULL_29031;
|
OUTSIDE_THE_SLAYER_TOWER_GARGOYLE_ROOM(NullObjectID.NULL_29031, new WorldPoint(3423, 3534, 2)),
|
||||||
public static final int ON_TOP_OF_TROLLHEIM_MOUNTAIN = NullObjectID.NULL_29032;
|
ON_TOP_OF_TROLLHEIM_MOUNTAIN(NullObjectID.NULL_29032, new WorldPoint(2886, 3676, 0)),
|
||||||
public static final int FOUNTAIN_OF_HEROES = NullObjectID.NULL_29033;
|
FOUNTAIN_OF_HEROES(NullObjectID.NULL_29033, new WorldPoint(2916, 9891, 0)),
|
||||||
public static final int ENTRANCE_OF_THE_CAVERN_UNDER_THE_WHIRLPOOL = NullObjectID.NULL_29034;
|
ENTRANCE_OF_THE_CAVERN_UNDER_THE_WHIRLPOOL(NullObjectID.NULL_29034, new WorldPoint(1764, 5367, 1), new WorldPoint(1636, 5367, 1)),
|
||||||
public static final int HALFWAY_DOWN_TROLLWEISS_MOUNTAIN = NullObjectID.NULL_29035;
|
HALFWAY_DOWN_TROLLWEISS_MOUNTAIN(NullObjectID.NULL_29035, new WorldPoint(2782, 3787, 0)),
|
||||||
public static final int SHAYZIEN_WAR_TENT = NullObjectID.NULL_29036;
|
SHAYZIEN_WAR_TENT(NullObjectID.NULL_29036, new WorldPoint(1550, 3541, 0)),
|
||||||
public static final int OUTSIDE_THE_LEGENDS_GUILD_DOOR = NullObjectID.NULL_29037;
|
OUTSIDE_THE_LEGENDS_GUILD_DOOR(NullObjectID.NULL_29037, new WorldPoint(2727, 3371, 0)),
|
||||||
public static final int NEAR_THE_GEM_STALL_IN_ARDOUGNE_MARKET = NullObjectID.NULL_29038;
|
NEAR_THE_GEM_STALL_IN_ARDOUGNE_MARKET(NullObjectID.NULL_29038, new WorldPoint(2672, 3302, 0)),
|
||||||
public static final int OUTSIDE_THE_BAR_BY_THE_FIGHT_ARENA = NullObjectID.NULL_29039;
|
OUTSIDE_THE_BAR_BY_THE_FIGHT_ARENA(NullObjectID.NULL_29039, new WorldPoint(2571, 3150, 0)),
|
||||||
public static final int SOUTHEAST_CORNER_OF_LAVA_DRAGON_ISLE = NullObjectID.NULL_29040;
|
SOUTHEAST_CORNER_OF_LAVA_DRAGON_ISLE(NullObjectID.NULL_29040, new WorldPoint(3228, 3830, 0)),
|
||||||
public static final int NEAR_THE_PIER_IN_ZULANDRA = NullObjectID.NULL_29041;
|
NEAR_THE_PIER_IN_ZULANDRA(NullObjectID.NULL_29041, new WorldPoint(2203, 3059, 0)),
|
||||||
public static final int BARROWS_CHEST = NullObjectID.NULL_29042;
|
BARROWS_CHEST(NullObjectID.NULL_29042, new WorldPoint(3547, 9690, 0)),
|
||||||
public static final int WELL_OF_VOYAGE = NullObjectID.NULL_29043;
|
WELL_OF_VOYAGE(NullObjectID.NULL_29043, new WorldPoint(2006, 4709, 1)),
|
||||||
public static final int NORTHERN_WALL_OF_CASTLE_DRAKAN = NullObjectID.NULL_29044;
|
NORTHERN_WALL_OF_CASTLE_DRAKAN(NullObjectID.NULL_29044, new WorldPoint(3559, 3385, 1)),
|
||||||
public static final int _7TH_CHAMBER_OF_JALSAVRAH = NullObjectID.NULL_29045;
|
_7TH_CHAMBER_OF_JALSAVRAH(NullObjectID.NULL_29045, new WorldPoint(1951, 4431, 0)),
|
||||||
public static final int SOUL_ALTAR = NullObjectID.NULL_29046;
|
SOUL_ALTAR(NullObjectID.NULL_29046, new WorldPoint(1810, 3855, 0)),
|
||||||
public static final int WARRIORS_GUILD_BANK_29047 = NullObjectID.NULL_29047;
|
WARRIORS_GUILD_BANK_29047(NullObjectID.NULL_29047, new WorldPoint(2845, 3545, 0)),
|
||||||
public static final int ENTRANA_CHAPEL = NullObjectID.NULL_29048;
|
ENTRANA_CHAPEL(NullObjectID.NULL_29048, new WorldPoint(2851, 3355, 0)),
|
||||||
public static final int TZHAAR_GEM_STORE = NullObjectID.NULL_29049;
|
TZHAAR_GEM_STORE(NullObjectID.NULL_29049, new WorldPoint(2466, 5150, 0)),
|
||||||
public static final int TENT_IN_LORD_IORWERTHS_ENCAMPMENT = NullObjectID.NULL_29050;
|
TENT_IN_LORD_IORWERTHS_ENCAMPMENT(NullObjectID.NULL_29050, new WorldPoint(2198, 3257, 0)),
|
||||||
public static final int OUTSIDE_MUDKNUCKLES_HUT = NullObjectID.NULL_29051;
|
OUTSIDE_MUDKNUCKLES_HUT(NullObjectID.NULL_29051, new WorldPoint(2959, 3502, 0)),
|
||||||
public static final int CENTRE_OF_THE_CATACOMBS_OF_KOUREND = NullObjectID.NULL_29052;
|
CENTRE_OF_THE_CATACOMBS_OF_KOUREND(NullObjectID.NULL_29052, new WorldPoint(1661, 10045, 0)),
|
||||||
public static final int KING_BLACK_DRAGONS_LAIR = NullObjectID.NULL_29053;
|
KING_BLACK_DRAGONS_LAIR(NullObjectID.NULL_29053, new WorldPoint(2286, 4680, 0)),
|
||||||
public static final int OUTSIDE_KRIL_TSUTSAROTHS_ROOM = NullObjectID.NULL_29054;
|
OUTSIDE_KRIL_TSUTSAROTHS_ROOM(NullObjectID.NULL_29054, new WorldPoint(2931, 5337, 2)),
|
||||||
public static final int BY_THE_BEAR_CAGE_IN_VARROCK_PALACE_GARDENS = NullObjectID.NULL_29055;
|
BY_THE_BEAR_CAGE_IN_VARROCK_PALACE_GARDENS(NullObjectID.NULL_29055, new WorldPoint(3232, 3494, 0)),
|
||||||
public static final int OUTSIDE_THE_WILDERNESS_AXE_HUT = NullObjectID.NULL_29056;
|
OUTSIDE_THE_WILDERNESS_AXE_HUT(NullObjectID.NULL_29056, new WorldPoint(3186, 3958, 0)),
|
||||||
public static final int TOP_FLOOR_OF_THE_YANILLE_WATCHTOWER = NullObjectID.NULL_29057;
|
TOP_FLOOR_OF_THE_YANILLE_WATCHTOWER(NullObjectID.NULL_29057, new WorldPoint(2930, 4718, 2)),
|
||||||
public static final int DEATH_ALTAR = NullObjectID.NULL_29058;
|
DEATH_ALTAR(NullObjectID.NULL_29058, new WorldPoint(2210, 4842, 0)),
|
||||||
public static final int BEHIND_MISS_SCHISM_IN_DRAYNOR_VILLAGE = NullObjectID.NULL_29059;
|
BEHIND_MISS_SCHISM_IN_DRAYNOR_VILLAGE(NullObjectID.NULL_29059, new WorldPoint(3095, 3254, 0)),
|
||||||
public static final int NORTHWESTERN_CORNER_OF_THE_ENCHANTED_VALLEY = NullObjectID.NULL_29060;
|
NORTHWESTERN_CORNER_OF_THE_ENCHANTED_VALLEY(NullObjectID.NULL_29060, new WorldPoint(3022, 4517, 0)),
|
||||||
public static final int NORTH_OF_MOUNT_KARUULM = NullObjectID.NULL_34647;
|
NORTH_OF_MOUNT_KARUULM(NullObjectID.NULL_34647, new WorldPoint(1308, 3840, 0)),
|
||||||
public static final int GYPSY_TENT_ENTRANCE = NullObjectID.NULL_34736;
|
GYPSY_TENT_ENTRANCE(NullObjectID.NULL_34736, new WorldPoint(3206, 3422, 0)),
|
||||||
public static final int FINE_CLOTHES_ENTRANCE = NullObjectID.NULL_34737;
|
FINE_CLOTHES_ENTRANCE(NullObjectID.NULL_34737, new WorldPoint(3209, 3416, 0)),
|
||||||
public static final int BOB_AXES_ENTRANCE = NullObjectID.NULL_34738;
|
BOB_AXES_ENTRANCE(NullObjectID.NULL_34738, new WorldPoint(3233, 3200, 0));
|
||||||
|
|
||||||
|
private final int objectId;
|
||||||
|
private final WorldPoint[] worldPoints;
|
||||||
|
|
||||||
|
STASHUnit(int objectId, WorldPoint... worldPoints)
|
||||||
|
{
|
||||||
|
this.objectId = objectId;
|
||||||
|
this.worldPoints = worldPoints;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-13
@@ -31,7 +31,11 @@ import java.time.Instant;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import static net.runelite.api.AnimationID.COOKING_WINE;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.Player;
|
||||||
|
import net.runelite.api.events.AnimationChanged;
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
@@ -50,7 +54,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
|||||||
@PluginDependency(XpTrackerPlugin.class)
|
@PluginDependency(XpTrackerPlugin.class)
|
||||||
public class CookingPlugin extends Plugin
|
public class CookingPlugin extends Plugin
|
||||||
{
|
{
|
||||||
private static final String WINE_MESSAGE = "You squeeze the grapes into the jug";
|
@Inject
|
||||||
|
private Client client;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private CookingConfig config;
|
private CookingConfig config;
|
||||||
@@ -124,6 +129,27 @@ public class CookingPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onAnimationChanged(AnimationChanged animationChanged)
|
||||||
|
{
|
||||||
|
Player localPlayer = client.getLocalPlayer();
|
||||||
|
|
||||||
|
if (localPlayer != animationChanged.getActor())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localPlayer.getAnimation() == COOKING_WINE && config.fermentTimer())
|
||||||
|
{
|
||||||
|
if (fermentTimerSession == null)
|
||||||
|
{
|
||||||
|
fermentTimerSession = new FermentTimerSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
fermentTimerSession.updateLastWineMakingAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onChatMessage(ChatMessage event)
|
public void onChatMessage(ChatMessage event)
|
||||||
{
|
{
|
||||||
@@ -134,22 +160,11 @@ public class CookingPlugin extends Plugin
|
|||||||
|
|
||||||
final String message = event.getMessage();
|
final String message = event.getMessage();
|
||||||
|
|
||||||
if (message.startsWith(WINE_MESSAGE) && config.fermentTimer())
|
|
||||||
{
|
|
||||||
if (fermentTimerSession == null)
|
|
||||||
{
|
|
||||||
fermentTimerSession = new FermentTimerSession();
|
|
||||||
}
|
|
||||||
|
|
||||||
fermentTimerSession.updateLastWineMakingAction();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (message.startsWith("You successfully cook")
|
if (message.startsWith("You successfully cook")
|
||||||
|| message.startsWith("You successfully bake")
|
|| message.startsWith("You successfully bake")
|
||||||
|| message.startsWith("You manage to cook")
|
|| message.startsWith("You manage to cook")
|
||||||
|| message.startsWith("You roast a")
|
|| message.startsWith("You roast a")
|
||||||
|| message.startsWith("You cook")
|
|| message.startsWith("You cook"))
|
||||||
|| message.startsWith(WINE_MESSAGE))
|
|
||||||
{
|
{
|
||||||
if (cookingSession == null)
|
if (cookingSession == null)
|
||||||
{
|
{
|
||||||
|
|||||||
+4
-1
@@ -1008,7 +1008,10 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
swap(client, "pay-toll(10gp)", option, target, true);
|
swap(client, "pay-toll(10gp)", option, target, true);
|
||||||
}
|
}
|
||||||
|
else if (config.swapHardWoodGrove() && option.equals("open") && target.equals("hardwood grove doors"))
|
||||||
|
{
|
||||||
|
swap(client, "quick-pay(100)", option, target, true);
|
||||||
|
}
|
||||||
else if (config.swapTravel() && option.equals("inspect") && target.equals("trapdoor"))
|
else if (config.swapTravel() && option.equals("inspect") && target.equals("trapdoor"))
|
||||||
{
|
{
|
||||||
swap(client, "travel", option, target, true);
|
swap(client, "travel", option, target, true);
|
||||||
|
|||||||
+286
@@ -0,0 +1,286 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Anthony Chen <https://github.com/achencoms>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package net.runelite.client.plugins.musiclist;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.GameState;
|
||||||
|
import net.runelite.api.ScriptID;
|
||||||
|
import net.runelite.api.SoundEffectID;
|
||||||
|
import net.runelite.api.SpriteID;
|
||||||
|
import net.runelite.api.VarClientInt;
|
||||||
|
import net.runelite.api.events.GameStateChanged;
|
||||||
|
import net.runelite.api.events.VarClientIntChanged;
|
||||||
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
|
import net.runelite.api.widgets.JavaScriptCallback;
|
||||||
|
import net.runelite.api.widgets.Widget;
|
||||||
|
import net.runelite.api.widgets.WidgetID;
|
||||||
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
|
import net.runelite.api.widgets.WidgetPositionMode;
|
||||||
|
import net.runelite.api.widgets.WidgetType;
|
||||||
|
import net.runelite.client.callback.ClientThread;
|
||||||
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
|
import net.runelite.client.game.chatbox.ChatboxPanelManager;
|
||||||
|
import net.runelite.client.game.chatbox.ChatboxTextInput;
|
||||||
|
import net.runelite.client.plugins.Plugin;
|
||||||
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
|
|
||||||
|
@PluginDescriptor(
|
||||||
|
name = "Music List",
|
||||||
|
description = "Adds search and filter for the music list"
|
||||||
|
)
|
||||||
|
public class MusicListPlugin extends Plugin
|
||||||
|
{
|
||||||
|
@Inject
|
||||||
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ClientThread clientThread;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ChatboxPanelManager chatboxPanelManager;
|
||||||
|
|
||||||
|
private ChatboxTextInput searchInput;
|
||||||
|
|
||||||
|
private Widget musicSearchButton;
|
||||||
|
private Widget musicFilterButton;
|
||||||
|
|
||||||
|
private Collection<Widget> tracks;
|
||||||
|
|
||||||
|
private MusicState currentMusicFilter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void startUp()
|
||||||
|
{
|
||||||
|
clientThread.invoke(this::addMusicButtons);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void shutDown()
|
||||||
|
{
|
||||||
|
Widget header = client.getWidget(WidgetInfo.MUSIC_WINDOW);
|
||||||
|
if (header != null)
|
||||||
|
{
|
||||||
|
header.deleteAllChildren();
|
||||||
|
}
|
||||||
|
|
||||||
|
tracks = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||||
|
{
|
||||||
|
if (gameStateChanged.getGameState() == GameState.LOGIN_SCREEN)
|
||||||
|
{
|
||||||
|
currentMusicFilter = MusicState.ALL;
|
||||||
|
tracks = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onWidgetLoaded(WidgetLoaded widgetLoaded)
|
||||||
|
{
|
||||||
|
if (widgetLoaded.getGroupId() == WidgetID.MUSIC_GROUP_ID)
|
||||||
|
{
|
||||||
|
addMusicButtons();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addMusicButtons()
|
||||||
|
{
|
||||||
|
Widget header = client.getWidget(WidgetInfo.MUSIC_WINDOW);
|
||||||
|
|
||||||
|
if (header == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Creation of the search and toggle status buttons
|
||||||
|
musicSearchButton = header.createChild(-1, WidgetType.GRAPHIC);
|
||||||
|
musicSearchButton.setSpriteId(SpriteID.GE_SEARCH);
|
||||||
|
musicSearchButton.setOriginalWidth(18);
|
||||||
|
musicSearchButton.setOriginalHeight(17);
|
||||||
|
musicSearchButton.setXPositionMode(WidgetPositionMode.ABSOLUTE_RIGHT);
|
||||||
|
musicSearchButton.setOriginalX(5);
|
||||||
|
musicSearchButton.setOriginalY(32);
|
||||||
|
musicSearchButton.setHasListener(true);
|
||||||
|
musicSearchButton.setAction(1, "Open");
|
||||||
|
musicSearchButton.setOnOpListener((JavaScriptCallback) e -> openSearch());
|
||||||
|
musicSearchButton.setName("Search");
|
||||||
|
musicSearchButton.revalidate();
|
||||||
|
|
||||||
|
musicFilterButton = header.createChild(-1, WidgetType.GRAPHIC);
|
||||||
|
musicFilterButton.setSpriteId(SpriteID.MINIMAP_ORB_HITPOINTS);
|
||||||
|
musicFilterButton.setOriginalWidth(15);
|
||||||
|
musicFilterButton.setOriginalHeight(15);
|
||||||
|
musicFilterButton.setXPositionMode(WidgetPositionMode.ABSOLUTE_RIGHT);
|
||||||
|
musicFilterButton.setOriginalX(25);
|
||||||
|
musicFilterButton.setOriginalY(34);
|
||||||
|
musicFilterButton.setHasListener(true);
|
||||||
|
musicFilterButton.setAction(1, "Toggle");
|
||||||
|
musicFilterButton.setOnOpListener((JavaScriptCallback) e -> toggleStatus());
|
||||||
|
musicFilterButton.setName("All");
|
||||||
|
musicFilterButton.revalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onVarClientIntChanged(VarClientIntChanged varClientIntChanged)
|
||||||
|
{
|
||||||
|
if (isChatboxOpen() && !isOnMusicTab())
|
||||||
|
{
|
||||||
|
chatboxPanelManager.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isOnMusicTab()
|
||||||
|
{
|
||||||
|
return client.getVar(VarClientInt.INVENTORY_TAB) == 13;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isChatboxOpen()
|
||||||
|
{
|
||||||
|
return searchInput != null && chatboxPanelManager.getCurrentInput() == searchInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getChatboxInput()
|
||||||
|
{
|
||||||
|
return isChatboxOpen() ? searchInput.getValue() : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void toggleStatus()
|
||||||
|
{
|
||||||
|
MusicState[] states = MusicState.values();
|
||||||
|
currentMusicFilter = states[(currentMusicFilter.ordinal() + 1) % states.length];
|
||||||
|
musicFilterButton.setSpriteId(currentMusicFilter.getSpriteID());
|
||||||
|
musicFilterButton.setName(currentMusicFilter.getName());
|
||||||
|
updateFilter(getChatboxInput());
|
||||||
|
client.playSoundEffect(SoundEffectID.UI_BOOP);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openSearch()
|
||||||
|
{
|
||||||
|
updateFilter("");
|
||||||
|
client.playSoundEffect(SoundEffectID.UI_BOOP);
|
||||||
|
musicSearchButton.setAction(1, "Close");
|
||||||
|
musicSearchButton.setOnOpListener((JavaScriptCallback) e -> closeSearch());
|
||||||
|
searchInput = chatboxPanelManager.openTextInput("Search music list")
|
||||||
|
.onChanged(s -> clientThread.invokeLater(() -> updateFilter(s.trim())))
|
||||||
|
.onClose(() ->
|
||||||
|
{
|
||||||
|
clientThread.invokeLater(() -> updateFilter(""));
|
||||||
|
musicSearchButton.setOnOpListener((JavaScriptCallback) e -> openSearch());
|
||||||
|
musicSearchButton.setAction(1, "Open");
|
||||||
|
})
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void closeSearch()
|
||||||
|
{
|
||||||
|
updateFilter("");
|
||||||
|
chatboxPanelManager.close();
|
||||||
|
client.playSoundEffect(SoundEffectID.UI_BOOP);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateFilter(String input)
|
||||||
|
{
|
||||||
|
final Widget container = client.getWidget(WidgetInfo.MUSIC_WINDOW);
|
||||||
|
final Widget musicList = client.getWidget(WidgetInfo.MUSIC_TRACK_LIST);
|
||||||
|
|
||||||
|
if (container == null || musicList == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String filter = input.toLowerCase();
|
||||||
|
updateList(musicList, filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateList(Widget musicList, String filter)
|
||||||
|
{
|
||||||
|
if (tracks == null)
|
||||||
|
{
|
||||||
|
tracks = Arrays.stream(musicList.getDynamicChildren())
|
||||||
|
.sorted(Comparator.comparing(Widget::getRelativeY))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
tracks.forEach(w -> w.setHidden(true));
|
||||||
|
|
||||||
|
Collection<Widget> relevantTracks = tracks.stream()
|
||||||
|
.filter(w -> w.getText().toLowerCase().contains(filter))
|
||||||
|
.filter(w -> currentMusicFilter == MusicState.ALL || w.getTextColor() == currentMusicFilter.getColor())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
// Original music track list has a little offset
|
||||||
|
int y = 3;
|
||||||
|
|
||||||
|
for (Widget track : relevantTracks)
|
||||||
|
{
|
||||||
|
track.setHidden(false);
|
||||||
|
track.setOriginalY(y);
|
||||||
|
track.revalidate();
|
||||||
|
|
||||||
|
y += track.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
y += 3;
|
||||||
|
|
||||||
|
int newHeight = 0;
|
||||||
|
|
||||||
|
if (musicList.getScrollHeight() > 0)
|
||||||
|
{
|
||||||
|
newHeight = (musicList.getScrollY() * y) / musicList.getScrollHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
musicList.setScrollHeight(y);
|
||||||
|
musicList.revalidateScroll();
|
||||||
|
|
||||||
|
client.runScript(
|
||||||
|
ScriptID.UPDATE_SCROLLBAR,
|
||||||
|
WidgetInfo.MUSIC_TRACK_SCROLLBAR.getId(),
|
||||||
|
WidgetInfo.MUSIC_TRACK_LIST.getId(),
|
||||||
|
newHeight
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
private enum MusicState
|
||||||
|
{
|
||||||
|
NOT_FOUND(0xff0000, "Locked", SpriteID.MINIMAP_ORB_HITPOINTS),
|
||||||
|
FOUND(0xdc10d, "Unlocked", SpriteID.MINIMAP_ORB_HITPOINTS_POISON),
|
||||||
|
ALL(0, "All", SpriteID.MINIMAP_ORB_PRAYER);
|
||||||
|
|
||||||
|
private final int color;
|
||||||
|
private final String name;
|
||||||
|
private final int spriteID;
|
||||||
|
}
|
||||||
|
}
|
||||||
+21
@@ -93,6 +93,22 @@ public class QuestListPlugin extends Plugin
|
|||||||
|
|
||||||
private QuestState currentFilterState;
|
private QuestState currentFilterState;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void startUp()
|
||||||
|
{
|
||||||
|
clientThread.invoke(this::addQuestButtons);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void shutDown()
|
||||||
|
{
|
||||||
|
Widget header = client.getWidget(WidgetInfo.QUESTLIST_BOX);
|
||||||
|
if (header != null)
|
||||||
|
{
|
||||||
|
header.deleteAllChildren();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onGameStateChanged(GameStateChanged e)
|
public void onGameStateChanged(GameStateChanged e)
|
||||||
{
|
{
|
||||||
@@ -110,6 +126,11 @@ public class QuestListPlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addQuestButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addQuestButtons()
|
||||||
|
{
|
||||||
Widget header = client.getWidget(WidgetInfo.QUESTLIST_BOX);
|
Widget header = client.getWidget(WidgetInfo.QUESTLIST_BOX);
|
||||||
if (header != null)
|
if (header != null)
|
||||||
{
|
{
|
||||||
|
|||||||
+12
-1
@@ -36,6 +36,7 @@ import net.runelite.api.InventoryID;
|
|||||||
import net.runelite.api.Item;
|
import net.runelite.api.Item;
|
||||||
import net.runelite.api.ItemContainer;
|
import net.runelite.api.ItemContainer;
|
||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
|
import net.runelite.api.NPCComposition;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.Skill;
|
import net.runelite.api.Skill;
|
||||||
import net.runelite.api.VarPlayer;
|
import net.runelite.api.VarPlayer;
|
||||||
@@ -51,6 +52,7 @@ import net.runelite.client.plugins.PluginDescriptor;
|
|||||||
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
|
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
|
||||||
import net.runelite.client.ws.PartyService;
|
import net.runelite.client.ws.PartyService;
|
||||||
import net.runelite.client.ws.WSClient;
|
import net.runelite.client.ws.WSClient;
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Special Attack Counter",
|
name = "Special Attack Counter",
|
||||||
@@ -181,7 +183,16 @@ public class SpecialCounterPlugin extends Plugin
|
|||||||
|
|
||||||
if (interacting instanceof NPC)
|
if (interacting instanceof NPC)
|
||||||
{
|
{
|
||||||
int interactingId = ((NPC) interacting).getId();
|
NPC npc = (NPC) interacting;
|
||||||
|
NPCComposition composition = npc.getComposition();
|
||||||
|
int interactingId = npc.getId();
|
||||||
|
|
||||||
|
if (!ArrayUtils.contains(composition.getActions(), "Attack"))
|
||||||
|
{
|
||||||
|
// Skip over non attackable npcs so that eg. talking to bankers doesn't reset
|
||||||
|
// the counters.
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!interactedNpcIds.contains(interactingId))
|
if (!interactedNpcIds.contains(interactingId))
|
||||||
{
|
{
|
||||||
|
|||||||
+6
-1
@@ -60,7 +60,7 @@ public class FarmingTracker
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private FarmingTracker(Client client, ItemManager itemManager, ConfigManager configManager,
|
private FarmingTracker(Client client, ItemManager itemManager, ConfigManager configManager,
|
||||||
TimeTrackingConfig config, FarmingWorld farmingWorld)
|
TimeTrackingConfig config, FarmingWorld farmingWorld)
|
||||||
{
|
{
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.itemManager = itemManager;
|
this.itemManager = itemManager;
|
||||||
@@ -187,6 +187,11 @@ public class FarmingTracker
|
|||||||
|
|
||||||
PatchState state = patch.getImplementation().forVarbitValue(value);
|
PatchState state = patch.getImplementation().forVarbitValue(value);
|
||||||
|
|
||||||
|
if (state == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
int stage = state.getStage();
|
int stage = state.getStage();
|
||||||
int stages = state.getStages();
|
int stages = state.getStages();
|
||||||
int tickrate = state.getTickRate() * 60;
|
int tickrate = state.getTickRate() * 60;
|
||||||
|
|||||||
+14
-14
@@ -139,28 +139,28 @@ class FarmingWorld
|
|||||||
new FarmingPatch("", Varbits.FARMING_4772, PatchImplementation.HERB)
|
new FarmingPatch("", Varbits.FARMING_4772, PatchImplementation.HERB)
|
||||||
));
|
));
|
||||||
|
|
||||||
add(new FarmingRegion("Kourend", 7222,
|
add(new FarmingRegion("Kourend", 6967,
|
||||||
new FarmingPatch("North East", Varbits.FARMING_4771, PatchImplementation.ALLOTMENT),
|
new FarmingPatch("North East", Varbits.FARMING_4771, PatchImplementation.ALLOTMENT),
|
||||||
new FarmingPatch("South West", Varbits.FARMING_4772, PatchImplementation.ALLOTMENT),
|
new FarmingPatch("South West", Varbits.FARMING_4772, PatchImplementation.ALLOTMENT),
|
||||||
new FarmingPatch("", Varbits.FARMING_4773, PatchImplementation.FLOWER),
|
new FarmingPatch("", Varbits.FARMING_4773, PatchImplementation.FLOWER),
|
||||||
new FarmingPatch("", Varbits.FARMING_4774, PatchImplementation.HERB)
|
new FarmingPatch("", Varbits.FARMING_4774, PatchImplementation.HERB)
|
||||||
));
|
));
|
||||||
add(new FarmingRegion("Kourend", 6711,
|
add(new FarmingRegion("Kourend", 6711,
|
||||||
new FarmingPatch("", Varbits.FARMING_4771, PatchImplementation.SPIRIT_TREE)
|
new FarmingPatch("", Varbits.FARMING_7904, PatchImplementation.SPIRIT_TREE)
|
||||||
));
|
));
|
||||||
add(new FarmingRegion("Kourend", 7223,
|
add(new FarmingRegion("Kourend", 7223,
|
||||||
new FarmingPatch("West 1", Varbits.GRAPES_4953, PatchImplementation.GRAPES),
|
new FarmingPatch("East 1", Varbits.GRAPES_4953, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("West 2", Varbits.GRAPES_4954, PatchImplementation.GRAPES),
|
new FarmingPatch("East 2", Varbits.GRAPES_4954, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("West 3", Varbits.GRAPES_4955, PatchImplementation.GRAPES),
|
new FarmingPatch("East 3", Varbits.GRAPES_4955, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("West 4", Varbits.GRAPES_4956, PatchImplementation.GRAPES),
|
new FarmingPatch("East 4", Varbits.GRAPES_4956, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("West 5", Varbits.GRAPES_4957, PatchImplementation.GRAPES),
|
new FarmingPatch("East 5", Varbits.GRAPES_4957, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("West 6", Varbits.GRAPES_4958, PatchImplementation.GRAPES),
|
new FarmingPatch("East 6", Varbits.GRAPES_4958, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("East 1", Varbits.GRAPES_4959, PatchImplementation.GRAPES),
|
new FarmingPatch("West 1", Varbits.GRAPES_4959, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("East 2", Varbits.GRAPES_4960, PatchImplementation.GRAPES),
|
new FarmingPatch("West 2", Varbits.GRAPES_4960, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("East 3", Varbits.GRAPES_4961, PatchImplementation.GRAPES),
|
new FarmingPatch("West 3", Varbits.GRAPES_4961, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("East 4", Varbits.GRAPES_4962, PatchImplementation.GRAPES),
|
new FarmingPatch("West 4", Varbits.GRAPES_4962, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("East 5", Varbits.GRAPES_4963, PatchImplementation.GRAPES),
|
new FarmingPatch("West 5", Varbits.GRAPES_4963, PatchImplementation.GRAPES),
|
||||||
new FarmingPatch("East 6", Varbits.GRAPES_4964, PatchImplementation.GRAPES)
|
new FarmingPatch("West 6", Varbits.GRAPES_4964, PatchImplementation.GRAPES)
|
||||||
));
|
));
|
||||||
|
|
||||||
add(new FarmingRegion("Lletya", 9265,
|
add(new FarmingRegion("Lletya", 9265,
|
||||||
|
|||||||
+2
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.timetracking.farming;
|
package net.runelite.client.plugins.timetracking.farming;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import net.runelite.client.plugins.timetracking.Tab;
|
import net.runelite.client.plugins.timetracking.Tab;
|
||||||
@@ -2576,6 +2577,7 @@ public enum PatchImplementation
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Nullable
|
||||||
abstract PatchState forVarbitValue(int value);
|
abstract PatchState forVarbitValue(int value);
|
||||||
|
|
||||||
private final Tab tab;
|
private final Tab tab;
|
||||||
|
|||||||
+2
-1
@@ -115,7 +115,7 @@ enum TeleportLocationData
|
|||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
XERICS_LOOKOUT(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Lookout", new WorldPoint(1576, 3528, 0), "xerics_talisman_teleport_icon.png"),
|
XERICS_LOOKOUT(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Lookout", new WorldPoint(1576, 3528, 0), "xerics_talisman_teleport_icon.png"),
|
||||||
XERICS_GLADE(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Glade", new WorldPoint(1773, 3502, 0), "xerics_talisman_teleport_icon.png"),
|
XERICS_GLADE(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Glade", new WorldPoint(1754, 3564, 0), "xerics_talisman_teleport_icon.png"),
|
||||||
XERICS_INFERNO(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Inferno", new WorldPoint(1504, 3819, 0), "xerics_talisman_teleport_icon.png"),
|
XERICS_INFERNO(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Inferno", new WorldPoint(1504, 3819, 0), "xerics_talisman_teleport_icon.png"),
|
||||||
XERICS_HEART(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Heart", new WorldPoint(1641, 3670, 0), "xerics_talisman_teleport_icon.png"),
|
XERICS_HEART(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Heart", new WorldPoint(1641, 3670, 0), "xerics_talisman_teleport_icon.png"),
|
||||||
XERICS_HONOUR(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Honour", new WorldPoint(1254, 3559, 0), "xerics_talisman_teleport_icon.png"),
|
XERICS_HONOUR(TeleportType.OTHER, "Xeric's Talisman", "Xeric's Honour", new WorldPoint(1254, 3559, 0), "xerics_talisman_teleport_icon.png"),
|
||||||
@@ -138,6 +138,7 @@ enum TeleportLocationData
|
|||||||
PHARAOHS_SCEPTRE_JALSAVRAH(TeleportType.OTHER, "Pharaoh's Sceptre", "Jalsavrah (Pyramid Plunder)", new WorldPoint(3288, 2795, 0), "pharaohs_sceptre_teleport_icon.png"),
|
PHARAOHS_SCEPTRE_JALSAVRAH(TeleportType.OTHER, "Pharaoh's Sceptre", "Jalsavrah (Pyramid Plunder)", new WorldPoint(3288, 2795, 0), "pharaohs_sceptre_teleport_icon.png"),
|
||||||
PHARAOHS_SCEPTRE_JALEUSTROPHOS(TeleportType.OTHER, "Pharaoh's Sceptre", "Jaleustrophos (Agility Pyramid)", new WorldPoint(3341, 2827, 0), "pharaohs_sceptre_teleport_icon.png"),
|
PHARAOHS_SCEPTRE_JALEUSTROPHOS(TeleportType.OTHER, "Pharaoh's Sceptre", "Jaleustrophos (Agility Pyramid)", new WorldPoint(3341, 2827, 0), "pharaohs_sceptre_teleport_icon.png"),
|
||||||
PHARAOHS_SCEPTRE_JALDRAOCHT(TeleportType.OTHER, "Pharaoh's Sceptre", "Jaldraocht (Desert Treasure Pyramid)", new WorldPoint(3232, 2897, 0), "pharaohs_sceptre_teleport_icon.png"),
|
PHARAOHS_SCEPTRE_JALDRAOCHT(TeleportType.OTHER, "Pharaoh's Sceptre", "Jaldraocht (Desert Treasure Pyramid)", new WorldPoint(3232, 2897, 0), "pharaohs_sceptre_teleport_icon.png"),
|
||||||
|
CAMULET_TEMPLE(TeleportType.OTHER, "Camulet", "Enakhra's Temple", new WorldPoint(3190, 2923, 0), "camulet_teleport_icon.png"),
|
||||||
|
|
||||||
// Wilderness
|
// Wilderness
|
||||||
OBELISK_13(TeleportType.OTHER, "Obelisk", "13", new WorldPoint(3156, 3620, 0), "obelisk_icon.png"),
|
OBELISK_13(TeleportType.OTHER, "Obelisk", "13", new WorldPoint(3156, 3620, 0), "obelisk_icon.png"),
|
||||||
|
|||||||
+31
-5
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.ui.overlay.components;
|
package net.runelite.client.ui.overlay.components;
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
@@ -41,6 +42,7 @@ public class ProgressBarComponent implements LayoutableRenderableEntity
|
|||||||
{
|
{
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
FULL,
|
FULL,
|
||||||
|
TEXT_ONLY,
|
||||||
BOTH
|
BOTH
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,6 +55,7 @@ public class ProgressBarComponent implements LayoutableRenderableEntity
|
|||||||
private long maximum = 100;
|
private long maximum = 100;
|
||||||
private double value;
|
private double value;
|
||||||
private LabelDisplayMode labelDisplayMode = LabelDisplayMode.PERCENTAGE;
|
private LabelDisplayMode labelDisplayMode = LabelDisplayMode.PERCENTAGE;
|
||||||
|
private String centerLabel;
|
||||||
private String leftLabel;
|
private String leftLabel;
|
||||||
private String rightLabel;
|
private String rightLabel;
|
||||||
private Color foregroundColor = new Color(82, 161, 82);
|
private Color foregroundColor = new Color(82, 161, 82);
|
||||||
@@ -75,19 +78,32 @@ public class ProgressBarComponent implements LayoutableRenderableEntity
|
|||||||
final long span = maximum - minimum;
|
final long span = maximum - minimum;
|
||||||
final double currentValue = value - minimum;
|
final double currentValue = value - minimum;
|
||||||
final double pc = currentValue / span;
|
final double pc = currentValue / span;
|
||||||
final String textToWrite;
|
String textToWrite;
|
||||||
|
|
||||||
switch (labelDisplayMode)
|
switch (labelDisplayMode)
|
||||||
{
|
{
|
||||||
|
case TEXT_ONLY:
|
||||||
|
textToWrite = "";
|
||||||
|
break;
|
||||||
case PERCENTAGE:
|
case PERCENTAGE:
|
||||||
textToWrite = DECIMAL_FORMAT.format(pc * 100d) + "%";
|
textToWrite = formatPercentageProgress(pc);
|
||||||
break;
|
break;
|
||||||
case BOTH:
|
case BOTH:
|
||||||
textToWrite = DECIMAL_FORMAT_ABS.format(Math.floor(currentValue)) + "/" + maximum
|
textToWrite = formatFullProgress(currentValue, maximum) + " (" + formatPercentageProgress(pc) + ")";
|
||||||
+ " (" + DECIMAL_FORMAT.format(pc * 100d) + "%)";
|
|
||||||
break;
|
break;
|
||||||
|
case FULL:
|
||||||
default:
|
default:
|
||||||
textToWrite = DECIMAL_FORMAT_ABS.format(Math.floor(currentValue)) + "/" + maximum;
|
textToWrite = formatFullProgress(currentValue, maximum);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(centerLabel))
|
||||||
|
{
|
||||||
|
if (!textToWrite.isEmpty())
|
||||||
|
{
|
||||||
|
textToWrite += " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
textToWrite += centerLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int width = preferredSize.width;
|
final int width = preferredSize.width;
|
||||||
@@ -131,4 +147,14 @@ public class ProgressBarComponent implements LayoutableRenderableEntity
|
|||||||
bounds.setSize(dimension);
|
bounds.setSize(dimension);
|
||||||
return dimension;
|
return dimension;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String formatFullProgress(double current, long maximum)
|
||||||
|
{
|
||||||
|
return DECIMAL_FORMAT_ABS.format(Math.floor(current)) + "/" + maximum;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String formatPercentageProgress(double ratio)
|
||||||
|
{
|
||||||
|
return DECIMAL_FORMAT.format(ratio * 100d) + "%";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3243,7 +3243,8 @@
|
|||||||
6125,
|
6125,
|
||||||
6126,
|
6126,
|
||||||
6127,
|
6127,
|
||||||
13079
|
13079,
|
||||||
|
23458
|
||||||
],
|
],
|
||||||
"branch": [
|
"branch": [
|
||||||
3692,
|
3692,
|
||||||
@@ -6912,6 +6913,78 @@
|
|||||||
10555,
|
10555,
|
||||||
20515
|
20515
|
||||||
],
|
],
|
||||||
|
"attacker icon": [
|
||||||
|
10556,
|
||||||
|
22346,
|
||||||
|
22347,
|
||||||
|
22348,
|
||||||
|
22349,
|
||||||
|
22721,
|
||||||
|
22722,
|
||||||
|
22723,
|
||||||
|
22729,
|
||||||
|
22730,
|
||||||
|
23460,
|
||||||
|
23461,
|
||||||
|
23462,
|
||||||
|
23463,
|
||||||
|
23464,
|
||||||
|
23465
|
||||||
|
],
|
||||||
|
"collector icon": [
|
||||||
|
10557,
|
||||||
|
22312,
|
||||||
|
22313,
|
||||||
|
22314,
|
||||||
|
22315,
|
||||||
|
22337,
|
||||||
|
22338,
|
||||||
|
22339,
|
||||||
|
22724,
|
||||||
|
23471,
|
||||||
|
23472,
|
||||||
|
23473,
|
||||||
|
23474,
|
||||||
|
23475,
|
||||||
|
23476,
|
||||||
|
23477
|
||||||
|
],
|
||||||
|
"defender icon": [
|
||||||
|
10558,
|
||||||
|
22340,
|
||||||
|
22341,
|
||||||
|
22342,
|
||||||
|
22343,
|
||||||
|
22344,
|
||||||
|
22345,
|
||||||
|
22725,
|
||||||
|
22726,
|
||||||
|
22727,
|
||||||
|
22728,
|
||||||
|
23466,
|
||||||
|
23467,
|
||||||
|
23468,
|
||||||
|
23469,
|
||||||
|
23470
|
||||||
|
],
|
||||||
|
"healer icon": [
|
||||||
|
10559,
|
||||||
|
10567,
|
||||||
|
20802,
|
||||||
|
22308,
|
||||||
|
22309,
|
||||||
|
22310,
|
||||||
|
22311,
|
||||||
|
23478,
|
||||||
|
23479,
|
||||||
|
23480,
|
||||||
|
23481,
|
||||||
|
23482,
|
||||||
|
23483,
|
||||||
|
23484,
|
||||||
|
23485,
|
||||||
|
23486
|
||||||
|
],
|
||||||
"keris": [
|
"keris": [
|
||||||
10581,
|
10581,
|
||||||
10582,
|
10582,
|
||||||
|
|||||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 447 B |
@@ -189,8 +189,10 @@ CHAT_FILTER:
|
|||||||
sload 11 ; Load the message
|
sload 11 ; Load the message
|
||||||
iconst 1 ; Gets changed to 0 if message is blocked
|
iconst 1 ; Gets changed to 0 if message is blocked
|
||||||
iload 10 ; Load the messageType
|
iload 10 ; Load the messageType
|
||||||
|
iload 9 ; Load the id of the messageNode
|
||||||
sconst "chatFilterCheck"
|
sconst "chatFilterCheck"
|
||||||
runelite_callback
|
runelite_callback
|
||||||
|
pop_int ; Pop the id of the messageNode
|
||||||
pop_int ; Pop the messageType
|
pop_int ; Pop the messageType
|
||||||
iconst 1 ; 2nd half of conditional
|
iconst 1 ; 2nd half of conditional
|
||||||
sstore 11 ; Override the message with our filtered message
|
sstore 11 ; Override the message with our filtered message
|
||||||
|
|||||||
@@ -359,9 +359,11 @@ CHAT_FILTER:
|
|||||||
sload 0 ; Load the message
|
sload 0 ; Load the message
|
||||||
iconst 1 ; Gets changed to 0 if message is blocked
|
iconst 1 ; Gets changed to 0 if message is blocked
|
||||||
iload 15 ; Load the messageType
|
iload 15 ; Load the messageType
|
||||||
|
iload 12 ; Load the id of the messageNode
|
||||||
sconst "chatFilterCheck"
|
sconst "chatFilterCheck"
|
||||||
runelite_callback
|
runelite_callback
|
||||||
pop_int ; Pop the messageType
|
pop_int ; Pop the id of the messageNode
|
||||||
|
pop_int ; Pop the messageType
|
||||||
iconst 1 ; 2nd half of conditional
|
iconst 1 ; 2nd half of conditional
|
||||||
sstore 0 ; Override the message with our filtered message
|
sstore 0 ; Override the message with our filtered message
|
||||||
if_icmpeq LABEL327 ; Check if we are building this message
|
if_icmpeq LABEL327 ; Check if we are building this message
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
DDFE4E407122EEEAE2C64A233EA937B2CC20E92D66CB66772C31182A6C60820D
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
.id 327
|
||||||
|
.int_stack_count 1
|
||||||
|
.string_stack_count 0
|
||||||
|
.int_var_count 1
|
||||||
|
.string_var_count 0
|
||||||
|
; Attach specbar redraw listeners to the weapon name text instead of to
|
||||||
|
; auto retaliate text (which is var0). Test by enabling "Hide auto retaliate"
|
||||||
|
; and using a spec.
|
||||||
|
iconst 38862849 ; 593.1 - weapon name widget
|
||||||
|
istore 0 ; overwrite script parameter which is the autoretail text
|
||||||
|
iload 0
|
||||||
|
invoke 187
|
||||||
|
iconst 186
|
||||||
|
iload 0
|
||||||
|
iconst 301
|
||||||
|
iconst 300
|
||||||
|
iconst 284
|
||||||
|
iconst 3
|
||||||
|
sconst "IY"
|
||||||
|
iload 0
|
||||||
|
if_setonvartransmit
|
||||||
|
iconst 186
|
||||||
|
iload 0
|
||||||
|
iconst 94
|
||||||
|
iconst 1
|
||||||
|
sconst "IY"
|
||||||
|
iload 0
|
||||||
|
if_setoninvtransmit
|
||||||
|
return
|
||||||
@@ -37,6 +37,11 @@ LABEL20:
|
|||||||
invoke 1972
|
invoke 1972
|
||||||
iconst 1
|
iconst 1
|
||||||
if_icmpeq LABEL31
|
if_icmpeq LABEL31
|
||||||
|
iconst 0 ; Modified to enable clanchat input
|
||||||
|
sconst "clanchatInput"
|
||||||
|
runelite_callback
|
||||||
|
iconst 1
|
||||||
|
if_icmpeq LABEL31 ; Compare to 1
|
||||||
jump LABEL37
|
jump LABEL37
|
||||||
LABEL31:
|
LABEL31:
|
||||||
get_varc_int 41
|
get_varc_int 41
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import java.applet.Applet;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -47,6 +48,8 @@ import java.util.Set;
|
|||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.client.RuneLite;
|
import net.runelite.client.RuneLite;
|
||||||
import net.runelite.client.RuneLiteModule;
|
import net.runelite.client.RuneLiteModule;
|
||||||
|
import net.runelite.client.config.Config;
|
||||||
|
import net.runelite.client.config.ConfigItem;
|
||||||
import net.runelite.client.eventbus.EventBus;
|
import net.runelite.client.eventbus.EventBus;
|
||||||
import net.runelite.client.rs.ClientUpdateCheckMode;
|
import net.runelite.client.rs.ClientUpdateCheckMode;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
@@ -75,6 +78,7 @@ public class PluginManagerTest
|
|||||||
public Client client;
|
public Client client;
|
||||||
|
|
||||||
private Set<Class> pluginClasses;
|
private Set<Class> pluginClasses;
|
||||||
|
private Set<Class> configClasses;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() throws IOException
|
public void before() throws IOException
|
||||||
@@ -85,8 +89,9 @@ public class PluginManagerTest
|
|||||||
|
|
||||||
RuneLite.setInjector(injector);
|
RuneLite.setInjector(injector);
|
||||||
|
|
||||||
// Find plugins we expect to have
|
// Find plugins and configs we expect to have
|
||||||
pluginClasses = new HashSet<>();
|
pluginClasses = new HashSet<>();
|
||||||
|
configClasses = new HashSet<>();
|
||||||
Set<ClassInfo> classes = ClassPath.from(getClass().getClassLoader()).getTopLevelClassesRecursive(PLUGIN_PACKAGE);
|
Set<ClassInfo> classes = ClassPath.from(getClass().getClassLoader()).getTopLevelClassesRecursive(PLUGIN_PACKAGE);
|
||||||
for (ClassInfo classInfo : classes)
|
for (ClassInfo classInfo : classes)
|
||||||
{
|
{
|
||||||
@@ -95,6 +100,12 @@ public class PluginManagerTest
|
|||||||
if (pluginDescriptor != null)
|
if (pluginDescriptor != null)
|
||||||
{
|
{
|
||||||
pluginClasses.add(clazz);
|
pluginClasses.add(clazz);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.class.isAssignableFrom(clazz))
|
||||||
|
{
|
||||||
|
configClasses.add(clazz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,4 +166,37 @@ public class PluginManagerTest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ensureNoDuplicateConfigKeyNames()
|
||||||
|
{
|
||||||
|
for (final Class clazz : configClasses)
|
||||||
|
{
|
||||||
|
final Set<String> configKeyNames = new HashSet<>();
|
||||||
|
|
||||||
|
for (final Method method : clazz.getMethods())
|
||||||
|
{
|
||||||
|
if (!method.isDefault())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
final ConfigItem annotation = method.getAnnotation(ConfigItem.class);
|
||||||
|
|
||||||
|
if (annotation == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String configKeyName = annotation.keyName();
|
||||||
|
|
||||||
|
if (configKeyNames.contains(configKeyName))
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("keyName " + configKeyName + " is duplicated in " + clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
configKeyNames.add(configKeyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+56
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2019, Adam <Adam@sigterm.info>
|
* Copyright (c) 2019, Adam <Adam@sigterm.info>
|
||||||
|
* Copyright (c) 2019, osrs-music-map <osrs-music-map@users.noreply.github.com>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -29,8 +30,11 @@ import com.google.inject.testing.fieldbinder.Bind;
|
|||||||
import com.google.inject.testing.fieldbinder.BoundFieldModule;
|
import com.google.inject.testing.fieldbinder.BoundFieldModule;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.Player;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -49,6 +53,10 @@ public class ChatFilterPluginTest
|
|||||||
@Bind
|
@Bind
|
||||||
private ChatFilterConfig chatFilterConfig;
|
private ChatFilterConfig chatFilterConfig;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
@Bind
|
||||||
|
private Player localPlayer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ChatFilterPlugin chatFilterPlugin;
|
private ChatFilterPlugin chatFilterPlugin;
|
||||||
|
|
||||||
@@ -60,6 +68,7 @@ public class ChatFilterPluginTest
|
|||||||
when(chatFilterConfig.filterType()).thenReturn(ChatFilterType.CENSOR_WORDS);
|
when(chatFilterConfig.filterType()).thenReturn(ChatFilterType.CENSOR_WORDS);
|
||||||
when(chatFilterConfig.filteredWords()).thenReturn("");
|
when(chatFilterConfig.filteredWords()).thenReturn("");
|
||||||
when(chatFilterConfig.filteredRegex()).thenReturn("");
|
when(chatFilterConfig.filteredRegex()).thenReturn("");
|
||||||
|
when(client.getLocalPlayer()).thenReturn(localPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -110,4 +119,51 @@ public class ChatFilterPluginTest
|
|||||||
chatFilterPlugin.updateFilteredPatterns();
|
chatFilterPlugin.updateFilteredPatterns();
|
||||||
assertNull(chatFilterPlugin.censorMessage("te\u008Cst"));
|
assertNull(chatFilterPlugin.censorMessage("te\u008Cst"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMessageFromFriendIsFiltered()
|
||||||
|
{
|
||||||
|
when(client.isFriended("Iron Mammal", false)).thenReturn(true);
|
||||||
|
when(chatFilterConfig.filterFriends()).thenReturn(true);
|
||||||
|
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Iron Mammal"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMessageFromFriendIsNotFiltered()
|
||||||
|
{
|
||||||
|
when(client.isFriended("Iron Mammal", false)).thenReturn(true);
|
||||||
|
when(chatFilterConfig.filterFriends()).thenReturn(false);
|
||||||
|
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("Iron Mammal"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMessageFromClanIsFiltered()
|
||||||
|
{
|
||||||
|
when(client.isClanMember("B0aty")).thenReturn(true);
|
||||||
|
when(chatFilterConfig.filterClan()).thenReturn(true);
|
||||||
|
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("B0aty"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMessageFromClanIsNotFiltered()
|
||||||
|
{
|
||||||
|
when(client.isClanMember("B0aty")).thenReturn(true);
|
||||||
|
when(chatFilterConfig.filterClan()).thenReturn(false);
|
||||||
|
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("B0aty"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMessageFromSelfIsNotFiltered()
|
||||||
|
{
|
||||||
|
when(localPlayer.getName()).thenReturn("Swampletics");
|
||||||
|
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("Swampletics"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMessageFromNonFriendNonClanIsFiltered()
|
||||||
|
{
|
||||||
|
when(client.isFriended("Woox", false)).thenReturn(false);
|
||||||
|
when(client.isClanMember("Woox")).thenReturn(false);
|
||||||
|
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Woox"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+5
-26
@@ -29,13 +29,11 @@ import com.google.inject.testing.fieldbinder.Bind;
|
|||||||
import com.google.inject.testing.fieldbinder.BoundFieldModule;
|
import com.google.inject.testing.fieldbinder.BoundFieldModule;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertNull;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -52,13 +50,16 @@ public class CookingPluginTest
|
|||||||
"You cook the karambwan. It looks delicious.",
|
"You cook the karambwan. It looks delicious.",
|
||||||
"You roast a lobster.",
|
"You roast a lobster.",
|
||||||
"You cook a bass.",
|
"You cook a bass.",
|
||||||
"You squeeze the grapes into the jug. The wine begins to ferment.",
|
|
||||||
"You successfully bake a tasty garden pie."
|
"You successfully bake a tasty garden pie."
|
||||||
};
|
};
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
CookingPlugin cookingPlugin;
|
CookingPlugin cookingPlugin;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
@Bind
|
||||||
|
Client client;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
@Bind
|
@Bind
|
||||||
CookingConfig config;
|
CookingConfig config;
|
||||||
@@ -94,26 +95,4 @@ public class CookingPluginTest
|
|||||||
assertNotNull(cookingSession);
|
assertNotNull(cookingSession);
|
||||||
assertEquals(COOKING_MESSAGES.length, cookingSession.getCookAmount());
|
assertEquals(COOKING_MESSAGES.length, cookingSession.getCookAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testFermentTimerOnChatMessage()
|
|
||||||
{
|
|
||||||
when(config.fermentTimer()).thenReturn(true);
|
|
||||||
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", COOKING_MESSAGES[6], "", 0);
|
|
||||||
cookingPlugin.onChatMessage(chatMessage);
|
|
||||||
FermentTimerSession fermentTimerSession = cookingPlugin.getFermentTimerSession();
|
|
||||||
|
|
||||||
assertNotNull(fermentTimerSession);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testFermentTimerOnChatMessage_pluginDisabled()
|
|
||||||
{
|
|
||||||
when(config.fermentTimer()).thenReturn(false);
|
|
||||||
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", COOKING_MESSAGES[6], "", 0);
|
|
||||||
cookingPlugin.onChatMessage(chatMessage);
|
|
||||||
FermentTimerSession fermentTimerSession = cookingPlugin.getFermentTimerSession();
|
|
||||||
|
|
||||||
assertNull(fermentTimerSession);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>mixins</artifactId>
|
<artifactId>mixins</artifactId>
|
||||||
|
|||||||
@@ -110,7 +110,29 @@ public abstract class RSDecorativeObjectMixin implements RSDecorativeObject
|
|||||||
@Override
|
@Override
|
||||||
public Area getClickbox()
|
public Area getClickbox()
|
||||||
{
|
{
|
||||||
return Perspective.getClickbox(client, getModel(), getOrientation(), getLocalLocation());
|
Area clickbox = new Area();
|
||||||
|
|
||||||
|
LocalPoint lp = getLocalLocation();
|
||||||
|
Area clickboxA = Perspective.getClickbox(client, getModel(), 0,
|
||||||
|
new LocalPoint(lp.getX() + getXOffset(), lp.getY() + getYOffset()));
|
||||||
|
Area clickboxB = Perspective.getClickbox(client, getModel2(), 0, lp);
|
||||||
|
|
||||||
|
if (clickboxA == null && clickboxB == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clickboxA != null)
|
||||||
|
{
|
||||||
|
clickbox.add(clickboxA);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clickboxB != null)
|
||||||
|
{
|
||||||
|
clickbox.add(clickboxB);
|
||||||
|
}
|
||||||
|
|
||||||
|
return clickbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
|||||||
@@ -101,8 +101,8 @@ public abstract class RSWallObjectMixin implements RSWallObject
|
|||||||
{
|
{
|
||||||
Area clickbox = new Area();
|
Area clickbox = new Area();
|
||||||
|
|
||||||
Area clickboxA = Perspective.getClickbox(client, getModelA(), getOrientationA(), getLocalLocation());
|
Area clickboxA = Perspective.getClickbox(client, getModelA(), 0, getLocalLocation());
|
||||||
Area clickboxB = Perspective.getClickbox(client, getModelB(), getOrientationB(), getLocalLocation());
|
Area clickboxB = Perspective.getClickbox(client, getModelB(), 0, getLocalLocation());
|
||||||
|
|
||||||
if (clickboxA == null && clickboxB == null)
|
if (clickboxA == null && clickboxB == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>script-assembler-plugin</artifactId>
|
<artifactId>script-assembler-plugin</artifactId>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>net.runelite</groupId>
|
<groupId>net.runelite</groupId>
|
||||||
<artifactId>runelite-parent</artifactId>
|
<artifactId>runelite-parent</artifactId>
|
||||||
<version>1.5.25-SNAPSHOT</version>
|
<version>1.5.26-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<groupId>net.runelite.rs</groupId>
|
<groupId>net.runelite.rs</groupId>
|
||||||
|
|||||||
Reference in New Issue
Block a user