88import net .runelite .api .MenuAction ;
99import net .runelite .api .SoundEffectID ;
1010import net .runelite .api .events .MenuOptionClicked ;
11+ import net .runelite .api .events .MenuEntryAdded ;
1112import net .runelite .client .config .ConfigManager ;
1213import net .runelite .client .eventbus .Subscribe ;
1314import net .runelite .client .plugins .Plugin ;
1415import net .runelite .client .plugins .PluginDescriptor ;
16+ import net .runelite .api .MenuEntry ;
17+ import org .apache .commons .lang3 .ArrayUtils ;
1518
1619@ Slf4j
1720@ PluginDescriptor (
@@ -32,24 +35,56 @@ public class CompassCameraControlPlugin extends Plugin
3235 private static final int EAST_YAW = 512 ;
3336 private static final int WEST_YAW = 1536 ;
3437
38+ private static final String SNAP_CARDINAL = "Snap Cardinal" ;
39+ private static final String CYCLE_CARDINAL = "Cycle Cardinal" ;
40+
3541 @ Subscribe
36- public void onMenuOptionClicked ( MenuOptionClicked event )
42+ public void onMenuEntryAdded ( MenuEntryAdded event )
3743 {
38- if (event .getMenuAction () == MenuAction . CC_OP && event . getMenuOption ().equals ("Look North" ))
44+ if (event .getOption ().equals ("Look North" ))
3945 {
46+ String newOption ;
4047 switch (config .controlMode ())
4148 {
4249 case SNAP_TO_CLOSEST :
43- alignYaw () ;
50+ newOption = SNAP_CARDINAL ;
4451 break ;
4552
4653 case CYCLE :
4754 default :
55+ newOption = CYCLE_CARDINAL ;
56+ break ;
57+ }
58+
59+ MenuEntry [] menuEntries = client .getMenu ().getMenuEntries ();
60+ MenuEntry newEntry = client .getMenu ().createMenuEntry (menuEntries .length - 1 )
61+ .setOption (newOption )
62+ .setType (MenuAction .CC_OP );
63+
64+ menuEntries = ArrayUtils .add (menuEntries , newEntry );
65+ client .getMenu ().setMenuEntries (menuEntries );
66+ }
67+ }
68+
69+ @ Subscribe
70+ public void onMenuOptionClicked (MenuOptionClicked event )
71+ {
72+ if (event .getMenuAction () == MenuAction .CC_OP )
73+ {
74+ switch (event .getMenuOption ())
75+ {
76+ case SNAP_CARDINAL :
77+ alignYaw ();
78+ event .consume ();
79+ client .playSoundEffect (SoundEffectID .UI_BOOP );
80+ break ;
81+
82+ case CYCLE_CARDINAL :
4883 cycleYaw ();
84+ event .consume ();
85+ client .playSoundEffect (SoundEffectID .UI_BOOP );
4986 break ;
5087 }
51- event .consume ();
52- client .playSoundEffect (SoundEffectID .UI_BOOP );
5388 }
5489 }
5590
0 commit comments