99
1010package eu .midnightdust .midnightcontrols .client ;
1111
12+ import com .mojang .blaze3d .platform .InputConstants ;
1213import eu .midnightdust .lib .util .PlatformFunctions ;
1314import eu .midnightdust .midnightcontrols .ControlsMode ;
1415import eu .midnightdust .midnightcontrols .MidnightControls ;
2728import eu .midnightdust .midnightcontrols .client .ring .MidnightRing ;
2829import eu .midnightdust .midnightcontrols .client .util .platform .NetworkUtil ;
2930import eu .midnightdust .midnightcontrols .client .virtualkeyboard .MouseClickInterceptor ;
30- import net .minecraft .client .gui .screen .Screen ;
3131import eu .midnightdust .midnightcontrols .client .touch .TouchInput ;
3232import eu .midnightdust .midnightcontrols .client .util .RainbowColor ;
3333import eu .midnightdust .midnightcontrols .packet .ControlsModePayload ;
34- import net .minecraft .client .MinecraftClient ;
35- import net .minecraft .client .option .KeyBinding ;
36- import net .minecraft .client .toast .SystemToast ;
37- import net .minecraft .client .util .InputUtil ;
38- import net .minecraft .text .Text ;
39- import net .minecraft .util .Identifier ;
4034import org .jetbrains .annotations .NotNull ;
4135import org .lwjgl .glfw .GLFW ;
4236
4539import java .util .Timer ;
4640import java .util .TimerTask ;
4741import java .util .concurrent .atomic .AtomicReference ;
42+ import net .minecraft .client .KeyMapping ;
43+ import net .minecraft .client .Minecraft ;
44+ import net .minecraft .client .gui .components .toasts .SystemToast ;
45+ import net .minecraft .client .gui .screens .Screen ;
46+ import net .minecraft .network .chat .Component ;
47+ import net .minecraft .resources .Identifier ;
4848
4949/**
5050 * Represents the midnightcontrols client mod.
5555 */
5656public class MidnightControlsClient extends MidnightControls {
5757 public static boolean lateInitDone = false ;
58- public static final KeyBinding .Category MIDNIGHTCONTROLS_CATEGORY = KeyBinding .Category .create (Identifier .of ("midnightcontrols" , "keybinds" ));
59- public static final KeyBinding BINDING_LOOK_UP = InputManager .makeKeyBinding (id ("look_up" ),
60- InputUtil .Type .KEYSYM , GLFW .GLFW_KEY_KP_8 , MIDNIGHTCONTROLS_CATEGORY );
61- public static final KeyBinding BINDING_LOOK_RIGHT = InputManager .makeKeyBinding (id ("look_right" ),
62- InputUtil .Type .KEYSYM , GLFW .GLFW_KEY_KP_6 , MIDNIGHTCONTROLS_CATEGORY );
63- public static final KeyBinding BINDING_LOOK_DOWN = InputManager .makeKeyBinding (id ("look_down" ),
64- InputUtil .Type .KEYSYM , GLFW .GLFW_KEY_KP_2 , MIDNIGHTCONTROLS_CATEGORY );
65- public static final KeyBinding BINDING_LOOK_LEFT = InputManager .makeKeyBinding (id ("look_left" ),
66- InputUtil .Type .KEYSYM , GLFW .GLFW_KEY_KP_4 , MIDNIGHTCONTROLS_CATEGORY );
67- public static final KeyBinding BINDING_RING = InputManager .makeKeyBinding (id ("ring" ),
68- InputUtil .Type .KEYSYM , InputUtil . UNKNOWN_KEY . getCode (), MIDNIGHTCONTROLS_CATEGORY );
58+ public static final KeyMapping .Category MIDNIGHTCONTROLS_CATEGORY = KeyMapping .Category .register (Identifier .fromNamespaceAndPath ("midnightcontrols" , "keybinds" ));
59+ public static final KeyMapping BINDING_LOOK_UP = InputManager .makeKeyBinding (id ("look_up" ),
60+ InputConstants .Type .KEYSYM , GLFW .GLFW_KEY_KP_8 , MIDNIGHTCONTROLS_CATEGORY );
61+ public static final KeyMapping BINDING_LOOK_RIGHT = InputManager .makeKeyBinding (id ("look_right" ),
62+ InputConstants .Type .KEYSYM , GLFW .GLFW_KEY_KP_6 , MIDNIGHTCONTROLS_CATEGORY );
63+ public static final KeyMapping BINDING_LOOK_DOWN = InputManager .makeKeyBinding (id ("look_down" ),
64+ InputConstants .Type .KEYSYM , GLFW .GLFW_KEY_KP_2 , MIDNIGHTCONTROLS_CATEGORY );
65+ public static final KeyMapping BINDING_LOOK_LEFT = InputManager .makeKeyBinding (id ("look_left" ),
66+ InputConstants .Type .KEYSYM , GLFW .GLFW_KEY_KP_4 , MIDNIGHTCONTROLS_CATEGORY );
67+ public static final KeyMapping BINDING_RING = InputManager .makeKeyBinding (id ("ring" ),
68+ InputConstants .Type .KEYSYM , InputConstants . UNKNOWN . getValue (), MIDNIGHTCONTROLS_CATEGORY );
6969 public static final Identifier CONTROLLER_BUTTONS = id ("textures/gui/controller_buttons.png" );
7070 public static final Identifier CONTROLLER_EXPANDED = id ("textures/gui/controller_expanded.png" );
7171 public static final Identifier CONTROLLER_AXIS = id ("textures/gui/controller_axis.png" );
7272 public static final File MAPPINGS_FILE = new File ("config/gamecontrollercustommappings.txt" );
73- public static MinecraftClient client = MinecraftClient .getInstance ();
73+ public static Minecraft client = Minecraft .getInstance ();
7474 public static final MidnightInput input = new MidnightInput ();
7575 public static final MidnightRing ring = new MidnightRing ();
7676 public static final MidnightReacharound reacharound = new MidnightReacharound ();
@@ -80,7 +80,7 @@ public class MidnightControlsClient extends MidnightControls {
8080 private static ControlsMode previousControlsMode ;
8181
8282 public static void initClient () {
83- client = MinecraftClient .getInstance ();
83+ client = Minecraft .getInstance ();
8484 ring .registerAction ("buttonbinding" , ButtonBindingRingAction .FACTORY );
8585
8686 int delay = 0 ; // delay for 0 sec.
@@ -90,7 +90,7 @@ public static void initClient() {
9090 public void run () {
9191 try {
9292 if (lateInitDone && client .isRunning ()) {
93- if (MidnightControlsConfig .controlsMode != ControlsMode .DEFAULT && (client .isWindowFocused () || MidnightControlsConfig .unfocusedInput )) {
93+ if (MidnightControlsConfig .controlsMode != ControlsMode .DEFAULT && (client .isWindowActive () || MidnightControlsConfig .unfocusedInput )) {
9494 if (MidnightControlsConfig .controlsMode == ControlsMode .CONTROLLER ) input .tickCameraStick ();
9595 input .updateCamera ();
9696 }
@@ -107,7 +107,7 @@ public void run() {
107107 /**
108108 * This method is called when Minecraft is initializing.
109109 */
110- public static void onMcInit (@ NotNull MinecraftClient client ) {
110+ public static void onMcInit (@ NotNull Minecraft client ) {
111111 ButtonBinding .init (client .options );
112112 MidnightControlsConfig .load ();
113113 if (MidnightControlsConfig .configVersion < 2 ) {
@@ -124,10 +124,10 @@ public static void onMcInit(@NotNull MinecraftClient client) {
124124 GLFW .glfwSetJoystickCallback ((jid , event ) -> {
125125 if (event == GLFW .GLFW_CONNECTED ) {
126126 var controller = Controller .byId (jid );
127- client .getToastManager ().add (new SystemToast (SystemToast .Type .PERIODIC_NOTIFICATION , Text .translatable ("midnightcontrols.controller.connected" , jid ),
128- Text .literal (controller .getName ())));
127+ client .getToastManager ().addToast (new SystemToast (SystemToast .SystemToastId .PERIODIC_NOTIFICATION , Component .translatable ("midnightcontrols.controller.connected" , jid ),
128+ Component .literal (controller .getName ())));
129129 } else if (event == GLFW .GLFW_DISCONNECTED ) {
130- client .getToastManager ().add (new SystemToast (SystemToast .Type .PERIODIC_NOTIFICATION , Text .translatable ("midnightcontrols.controller.disconnected" , jid ),
130+ client .getToastManager ().addToast (new SystemToast (SystemToast .SystemToastId .PERIODIC_NOTIFICATION , Component .translatable ("midnightcontrols.controller.disconnected" , jid ),
131131 null ));
132132 }
133133
@@ -142,13 +142,13 @@ public static void onMcInit(@NotNull MinecraftClient client) {
142142 */
143143 public static void initKeybindings () {
144144 if (lateInitDone ) return ;
145- if (KeyBindingIDAccessor .getKEYS_BY_ID () == null || KeyBindingIDAccessor .getKEYS_BY_ID ().isEmpty ()) return ;
146- if (PlatformFunctions .isModLoaded ("voxelmap" ) && !KeyBindingIDAccessor .getKEYS_BY_ID ().containsKey ("key.minimap.toggleingamewaypoints" )) return ;
147- if (PlatformFunctions .isModLoaded ("wynntils" ) && KeyBindingIDAccessor .getKEYS_BY_ID ().entrySet ().stream ().noneMatch (b -> Objects .equals (b .getValue ().getCategory (), "Wynntils" ))) return ;
148- for (int i = 0 ; i < KeyBindingIDAccessor .getKEYS_BY_ID ().size (); ++i ) {
149- KeyBinding keyBinding = KeyBindingIDAccessor .getKEYS_BY_ID ().entrySet ().stream ().toList ().get (i ).getValue ();
150- if (MidnightControlsConfig .excludedKeybindings .stream ().noneMatch (excluded -> keyBinding .getId ().startsWith (excluded ))) {
151- if (!keyBinding .getId ().contains (MidnightControlsConstants .NAMESPACE )) {
145+ if (KeyBindingIDAccessor .getALL () == null || KeyBindingIDAccessor .getALL ().isEmpty ()) return ;
146+ if (PlatformFunctions .isModLoaded ("voxelmap" ) && !KeyBindingIDAccessor .getALL ().containsKey ("key.minimap.toggleingamewaypoints" )) return ;
147+ if (PlatformFunctions .isModLoaded ("wynntils" ) && KeyBindingIDAccessor .getALL ().entrySet ().stream ().noneMatch (b -> Objects .equals (b .getValue ().getCategory (), "Wynntils" ))) return ;
148+ for (int i = 0 ; i < KeyBindingIDAccessor .getALL ().size (); ++i ) {
149+ KeyMapping keyBinding = KeyBindingIDAccessor .getALL ().entrySet ().stream ().toList ().get (i ).getValue ();
150+ if (MidnightControlsConfig .excludedKeybindings .stream ().noneMatch (excluded -> keyBinding .getName ().startsWith (excluded ))) {
151+ if (!keyBinding .getName ().contains (MidnightControlsConstants .NAMESPACE )) {
152152 AtomicReference <ButtonCategory > category = new AtomicReference <>();
153153 InputManager .streamCategories ().forEach (buttonCategory -> {
154154 if (buttonCategory .getIdentifier ().equals (keyBinding .getCategory ().id ()))
@@ -158,9 +158,9 @@ public static void initKeybindings() {
158158 category .set (new ButtonCategory (keyBinding .getCategory ().id ()));
159159 InputManager .registerCategory (category .get ());
160160 }
161- ButtonBinding buttonBinding = new ButtonBinding .Builder (keyBinding .getId ()).category (category .get ()).linkKeybind (keyBinding ).register ();
161+ ButtonBinding buttonBinding = new ButtonBinding .Builder (keyBinding .getName ()).category (category .get ()).linkKeybind (keyBinding ).register ();
162162 if (MidnightControlsConfig .debug ) {
163- MidnightControls .log (keyBinding .getId ());
163+ MidnightControls .log (keyBinding .getName ());
164164 MidnightControls .log (String .valueOf (buttonBinding ));
165165 }
166166 }
@@ -175,21 +175,21 @@ public static void initKeybindings() {
175175 *
176176 * @param client the client instance
177177 */
178- public static void onTick (@ NotNull MinecraftClient client ) {
178+ public static void onTick (@ NotNull Minecraft client ) {
179179 initKeybindings ();
180180 input .tick ();
181181 reacharound .tick ();
182- if (MidnightControlsConfig .controlsMode == ControlsMode .CONTROLLER && (client .isWindowFocused () || MidnightControlsConfig .unfocusedInput ))
182+ if (MidnightControlsConfig .controlsMode == ControlsMode .CONTROLLER && (client .isWindowActive () || MidnightControlsConfig .unfocusedInput ))
183183 input .tickController ();
184184
185- if (BINDING_RING .wasPressed ()) {
185+ if (BINDING_RING .consumeClick ()) {
186186 ring .loadFromUnbound ();
187187 client .setScreen (new RingScreen ());
188188 }
189- if (client .world != null && MidnightControlsConfig .enableHints && !MidnightControlsConfig .autoSwitchMode && MidnightControlsConfig .controlsMode == ControlsMode .DEFAULT && MidnightControlsConfig .getController ().isGamepad ()) {
190- client .getToastManager ().add (SystemToast .create (client , SystemToast .Type .PERIODIC_NOTIFICATION , Text .translatable ("midnightcontrols.controller.tutorial.title" ),
191- Text .translatable ("midnightcontrols.controller.tutorial.description" , Text .translatable ("options.title" ), Text .translatable ("controls.title" ),
192- Text .translatable ("midnightcontrols.menu.title.controller" ))));
189+ if (client .level != null && MidnightControlsConfig .enableHints && !MidnightControlsConfig .autoSwitchMode && MidnightControlsConfig .controlsMode == ControlsMode .DEFAULT && MidnightControlsConfig .getController ().isGamepad ()) {
190+ client .getToastManager ().addToast (SystemToast .multiline (client , SystemToast .SystemToastId .PERIODIC_NOTIFICATION , Component .translatable ("midnightcontrols.controller.tutorial.title" ),
191+ Component .translatable ("midnightcontrols.controller.tutorial.description" , Component .translatable ("options.title" ), Component .translatable ("controls.title" ),
192+ Component .translatable ("midnightcontrols.menu.title.controller" ))));
193193 MidnightControlsConfig .enableHints = false ;
194194 MidnightControlsConfig .save ();
195195 }
@@ -201,14 +201,14 @@ public static void onTick(@NotNull MinecraftClient client) {
201201 * Called when opening a screen.
202202 */
203203 public static void onScreenOpen (Screen screen ) {
204- client = MinecraftClient .getInstance ();
204+ client = Minecraft .getInstance ();
205205 if (screen == null && MidnightControlsConfig .controlsMode == ControlsMode .TOUCHSCREEN ) {
206206 screen = new TouchscreenOverlay ();
207- screen .init (client .getWindow ().getScaledWidth (), client .getWindow ().getScaledHeight ());
208- client .skipGameRender = false ;
209- client .currentScreen = screen ;
207+ screen .init (client .getWindow ().getGuiScaledWidth (), client .getWindow ().getGuiScaledHeight ());
208+ client .noRender = false ;
209+ client .screen = screen ;
210210 } else if (screen != null ) {
211- MidnightControlsClient .input .onScreenOpen (client .getWindow ().getWidth (), client .getWindow ().getHeight ());
211+ MidnightControlsClient .input .onScreenOpen (client .getWindow ().getScreenWidth (), client .getWindow ().getScreenHeight ());
212212 }
213213 }
214214
0 commit comments