22
33import com .mattsmeets .macrokey .MacroKey ;
44import com .mattsmeets .macrokey .config .ModConfig ;
5+ import com .mattsmeets .macrokey .event .ExecuteOnTickEvent ;
56import com .mattsmeets .macrokey .model .LayerInterface ;
7+ import com .mattsmeets .macrokey .model .lambda .ExecuteOnTickInterface ;
68import net .minecraft .client .gui .GuiButton ;
79import net .minecraft .client .gui .GuiIngameMenu ;
810import net .minecraft .client .gui .GuiScreen ;
911import net .minecraft .client .resources .I18n ;
1012import net .minecraftforge .client .event .GuiScreenEvent ;
13+ import net .minecraftforge .common .MinecraftForge ;
1114import net .minecraftforge .fml .common .eventhandler .SubscribeEvent ;
1215import net .minecraftforge .fml .relauncher .Side ;
1316import net .minecraftforge .fml .relauncher .SideOnly ;
17+ import org .lwjgl .input .Mouse ;
1418
1519import java .io .IOException ;
16- import java .util .List ;
1720
1821import static com .mattsmeets .macrokey .MacroKey .instance ;
1922
@@ -22,6 +25,8 @@ public class GuiEventHandler {
2225 private String
2326 layerMasterText = I18n .format ("text.layer.master" );
2427
28+ private GuiButton switchButton = null ;
29+
2530 @ SideOnly (Side .CLIENT )
2631 @ SubscribeEvent
2732 public void event (GuiScreenEvent .InitGuiEvent event ) {
@@ -35,7 +40,7 @@ public void event(GuiScreenEvent.InitGuiEvent event) {
3540 LayerInterface layer = instance .modState .getActiveLayer ();
3641 // render the layer switcher button
3742 event .getButtonList ().add (
38- new GuiButton (
43+ switchButton = new GuiButton (
3944 ModConfig .buttonLayerSwitcherId ,
4045 gui .width / 2 + ModConfig .buttonLayerSwitchSettings [0 ],
4146 gui .height / 4 + ModConfig .buttonLayerSwitchSettings [1 ],
@@ -62,4 +67,39 @@ public void postActionPerformed(GuiScreenEvent.ActionPerformedEvent.Post event)
6267 );
6368 }
6469
70+ @ SubscribeEvent (receiveCanceled = true )
71+ @ SideOnly (Side .CLIENT )
72+ public void mouseInputEvent (GuiScreenEvent .MouseInputEvent .Post event ) {
73+ if (!(event .getGui () instanceof GuiIngameMenu ) ||
74+ ModConfig .buttonLayerSwitcherId == -1 ||
75+ switchButton == null ||
76+ !switchButton .isMouseOver ()) {
77+ return ;
78+ }
79+
80+ if (Mouse .getEventButton () != 1 && !Mouse .isButtonDown (1 )) {
81+ return ;
82+ }
83+
84+ MinecraftForge .EVENT_BUS .post (new ExecuteOnTickEvent (ExecuteOnTickInterface .openMacroKeyGUI ));
85+ }
86+
87+ @ SubscribeEvent (receiveCanceled = true )
88+ @ SideOnly (Side .CLIENT )
89+ public void render (GuiScreenEvent .DrawScreenEvent .Post event ) {
90+ if (!(event .getGui () instanceof GuiIngameMenu ) ||
91+ ModConfig .buttonLayerSwitcherId == -1 ||
92+ switchButton == null ||
93+ !switchButton .isMouseOver ()) {
94+ return ;
95+ }
96+
97+ GuiScreen screen = event .getGui ();
98+
99+ screen .drawHoveringText (
100+ I18n .format ("text.layer.hover.right_click" ),
101+ Mouse .getEventX () / 2 ,
102+ screen .height - (Mouse .getY () / 2 )
103+ );
104+ }
65105}
0 commit comments