diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java index 7fd71c2..35576a3 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java @@ -69,8 +69,6 @@ public class MidnightControlsClient extends MidnightControls { public static final Identifier CONTROLLER_BUTTONS = id("textures/gui/controller_buttons.png"); public static final Identifier CONTROLLER_EXPANDED = id("textures/gui/controller_expanded.png"); public static final Identifier CONTROLLER_AXIS = id("textures/gui/controller_axis.png"); - public static final Identifier WAYLAND_CURSOR_TEXTURE_LIGHT = id("cursor/light/mouse_pointer"); - public static final Identifier WAYLAND_CURSOR_TEXTURE_DARK = id("cursor/dark/mouse_pointer"); public static final File MAPPINGS_FILE = new File("config/gamecontrollercustommappings.txt"); public static MinecraftClient client = MinecraftClient.getInstance(); public static final MidnightInput input = new MidnightInput(); diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java index 4db2c66..04cfae9 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java @@ -58,9 +58,6 @@ import net.minecraft.client.gui.screen.advancement.AdvancementTab; import net.minecraft.client.gui.screen.advancement.AdvancementsScreen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.gui.screen.ingame.MerchantScreen; -import net.minecraft.client.gui.screen.ingame.StonecutterScreen; -import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; import net.minecraft.client.gui.screen.multiplayer.MultiplayerServerListWidget; import net.minecraft.client.gui.screen.world.WorldListWidget; import net.minecraft.text.TranslatableTextContent; diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsRenderer.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsRenderer.java index b9d3b28..d1fc1ff 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsRenderer.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsRenderer.java @@ -9,44 +9,25 @@ package eu.midnightdust.midnightcontrols.client.gui; -import com.mojang.blaze3d.pipeline.RenderPipeline; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.textures.GpuTextureView; -import eu.midnightdust.midnightcontrols.ControlsMode; import eu.midnightdust.midnightcontrols.client.enums.ControllerType; import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; import eu.midnightdust.midnightcontrols.client.MidnightInput; import eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat; import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding; -import eu.midnightdust.midnightcontrols.client.enums.VirtualMouseSkin; -import eu.midnightdust.midnightcontrols.client.gui.render.UnalignedTexturedQuadGuiElementRenderState; -import eu.midnightdust.midnightcontrols.client.mixin.DrawContextAccessor; import eu.midnightdust.midnightcontrols.client.util.HandledScreenAccessor; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gl.RenderPipelines; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.render.state.TexturedQuadGuiElementRenderState; -import net.minecraft.client.render.*; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.texture.Sprite; -import net.minecraft.client.texture.TextureSetup; -import net.minecraft.client.util.SpriteIdentifier; import net.minecraft.screen.slot.Slot; -import net.minecraft.text.Text; import net.minecraft.util.Atlases; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.ColorHelper; import org.jetbrains.annotations.NotNull; -import org.joml.Matrix3x2f; -import org.joml.Matrix4f; import org.lwjgl.glfw.GLFW; -import java.util.function.Function; - import static eu.midnightdust.midnightcontrols.MidnightControls.id; -import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client; /** * Represents the midnightcontrols renderer. @@ -213,69 +194,6 @@ public class MidnightControlsRenderer { private static int getButtonTipWidth(@NotNull String action, @NotNull TextRenderer textRenderer) { return 15 + 5 + textRenderer.getWidth(action); } - public static void renderWaylandCursor(@NotNull DrawContext context, @NotNull MinecraftClient client) { - if (MidnightControlsConfig.virtualMouse || client.currentScreen == null || MidnightControlsConfig.controlsMode != ControlsMode.CONTROLLER) return; - - float mouseX = (float) client.mouse.getX() * client.getWindow().getScaledWidth() / client.getWindow().getWidth(); - float mouseY = (float) client.mouse.getY() * client.getWindow().getScaledHeight() / client.getWindow().getHeight(); - - try { - Identifier spritePath = MidnightControlsClient.WAYLAND_CURSOR_TEXTURE_LIGHT; - if (MidnightControlsConfig.virtualMouseSkin == VirtualMouseSkin.DEFAULT_DARK || MidnightControlsConfig.virtualMouseSkin == VirtualMouseSkin.SECOND_DARK) - spritePath = MidnightControlsClient.WAYLAND_CURSOR_TEXTURE_DARK; - - Sprite sprite = client.getAtlasManager().getAtlasTexture(Atlases.GUI).getSprite(spritePath); - drawUnalignedTexturedQuad(RenderPipelines.GUI_TEXTURED, sprite.getAtlasId(), context, mouseX, mouseX + 8, mouseY, mouseY + 8, sprite.getMinU(), sprite.getMaxU(), sprite.getMinV(), sprite.getMaxV()); - } catch (IllegalStateException ignored) {} - } - - public static void renderVirtualCursor(@NotNull DrawContext context, @NotNull MinecraftClient client) { - if (!MidnightControlsConfig.virtualMouse || (client.currentScreen == null - || MidnightInput.isScreenInteractive(client.currentScreen))) - return; - - float mouseX = (float) client.mouse.getX() * client.getWindow().getScaledWidth() / client.getWindow().getWidth(); - float mouseY = (float) client.mouse.getY() * client.getWindow().getScaledHeight() / client.getWindow().getHeight(); - - boolean hoverSlot = false; - - if (client.currentScreen instanceof HandledScreenAccessor inventoryScreen) { - int guiLeft = inventoryScreen.getX(); - int guiTop = inventoryScreen.getY(); - - Slot slot = inventoryScreen.midnightcontrols$getSlotAt(mouseX, mouseY); - - if (slot != null) { - mouseX = guiLeft + slot.x; - mouseY = guiTop + slot.y; - hoverSlot = true; - } - } - - if (!hoverSlot && client.currentScreen != null) { - var slot = MidnightControlsCompat.getSlotAt(client.currentScreen, (int) mouseX, (int) mouseY); - - if (slot != null) { - mouseX = slot.x(); - mouseY = slot.y(); - hoverSlot = true; - } - } - - if (!hoverSlot) { - mouseX -= 8; - mouseY -= 8; - } - - try { - Sprite sprite = client.getAtlasManager().getAtlasTexture(Atlases.GUI).getSprite(id(MidnightControlsConfig.virtualMouseSkin.getSpritePath() + (hoverSlot ? "_slot" : ""))); - drawUnalignedTexturedQuad(RenderPipelines.GUI_TEXTURED, sprite.getAtlasId(), context, mouseX, mouseX + 16, mouseY, mouseY + 16, sprite.getMinU(), sprite.getMaxU(), sprite.getMinV(), sprite.getMaxV()); - } catch (IllegalStateException ignored) {} - } - private static void drawUnalignedTexturedQuad(RenderPipeline pipeline, Identifier texture, DrawContext context, float x1, float x2, float y1, float y2, float u1, float u2, float v1, float v2) { - DrawContextAccessor accessor = (DrawContextAccessor) context; - accessor.getState().addSimpleElement(new UnalignedTexturedQuadGuiElementRenderState(pipeline, TextureSetup.withoutGlTexture(client.getTextureManager().getTexture(texture).getGlTextureView()), new Matrix3x2f(context.getMatrices()), x1, y1, x2, y2, u1, u2, v1, v2, 0xffffffff, accessor.getScissorStack().peekLast())); - } public record ButtonSize(int length, int height) { } diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/CursorRenderer.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/CursorRenderer.java new file mode 100644 index 0000000..9cf03ed --- /dev/null +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/CursorRenderer.java @@ -0,0 +1,24 @@ +package eu.midnightdust.midnightcontrols.client.gui.cursor; + +import com.mojang.blaze3d.pipeline.RenderPipeline; +import eu.midnightdust.midnightcontrols.client.mixin.DrawContextAccessor; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.Cursor; +import net.minecraft.client.texture.TextureSetup; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.NotNull; +import org.joml.Matrix3x2f; + +import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client; + +public abstract class CursorRenderer { + public static Cursor currentCursorStyle = Cursor.DEFAULT; + + public abstract void renderCursor(@NotNull DrawContext context, @NotNull MinecraftClient client); + + public static void drawUnalignedTexturedQuad(RenderPipeline pipeline, Identifier texture, DrawContext context, float x1, float x2, float y1, float y2, float u1, float u2, float v1, float v2) { + DrawContextAccessor accessor = (DrawContextAccessor) context; + accessor.getState().addSimpleElement(new UnalignedTexturedQuadGuiElementRenderState(pipeline, TextureSetup.withoutGlTexture(client.getTextureManager().getTexture(texture).getGlTextureView()), new Matrix3x2f(context.getMatrices()), x1, y1, x2, y2, u1, u2, v1, v2, 0xffffffff, accessor.getScissorStack().peekLast())); + } +} diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/render/UnalignedTexturedQuadGuiElementRenderState.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/UnalignedTexturedQuadGuiElementRenderState.java similarity index 96% rename from common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/render/UnalignedTexturedQuadGuiElementRenderState.java rename to common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/UnalignedTexturedQuadGuiElementRenderState.java index 7246030..78e36fa 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/render/UnalignedTexturedQuadGuiElementRenderState.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/UnalignedTexturedQuadGuiElementRenderState.java @@ -1,4 +1,4 @@ -package eu.midnightdust.midnightcontrols.client.gui.render; +package eu.midnightdust.midnightcontrols.client.gui.cursor; import com.mojang.blaze3d.pipeline.RenderPipeline; import net.fabricmc.api.EnvType; diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/VirtualCursorRenderer.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/VirtualCursorRenderer.java new file mode 100644 index 0000000..c0ae1e9 --- /dev/null +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/VirtualCursorRenderer.java @@ -0,0 +1,67 @@ +package eu.midnightdust.midnightcontrols.client.gui.cursor; + +import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; +import eu.midnightdust.midnightcontrols.client.MidnightInput; +import eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat; +import eu.midnightdust.midnightcontrols.client.util.HandledScreenAccessor; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.RenderPipelines; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.texture.Sprite; +import net.minecraft.screen.slot.Slot; +import net.minecraft.util.Atlases; +import org.jetbrains.annotations.NotNull; + +import static eu.midnightdust.midnightcontrols.MidnightControls.id; + +public class VirtualCursorRenderer extends CursorRenderer { + private static final VirtualCursorRenderer INSTANCE = new VirtualCursorRenderer(); + + public static VirtualCursorRenderer getInstance() { + return INSTANCE; + } + + public void renderCursor(@NotNull DrawContext context, @NotNull MinecraftClient client) { + if (!MidnightControlsConfig.virtualMouse || (client.currentScreen == null + || MidnightInput.isScreenInteractive(client.currentScreen))) + return; + + float mouseX = (float) client.mouse.getX() * client.getWindow().getScaledWidth() / client.getWindow().getWidth(); + float mouseY = (float) client.mouse.getY() * client.getWindow().getScaledHeight() / client.getWindow().getHeight(); + + boolean hoverSlot = false; + + if (client.currentScreen instanceof HandledScreenAccessor inventoryScreen) { + int guiLeft = inventoryScreen.getX(); + int guiTop = inventoryScreen.getY(); + + Slot slot = inventoryScreen.midnightcontrols$getSlotAt(mouseX, mouseY); + + if (slot != null) { + mouseX = guiLeft + slot.x; + mouseY = guiTop + slot.y; + hoverSlot = true; + } + } + + if (!hoverSlot && client.currentScreen != null) { + var slot = MidnightControlsCompat.getSlotAt(client.currentScreen, (int) mouseX, (int) mouseY); + + if (slot != null) { + mouseX = slot.x(); + mouseY = slot.y(); + hoverSlot = true; + } + } + + if (!hoverSlot) { + mouseX -= 8; + mouseY -= 8; + } + + try { + Sprite sprite = client.getAtlasManager().getAtlasTexture(Atlases.GUI).getSprite(id(MidnightControlsConfig.virtualMouseSkin.getSpritePath() + (hoverSlot ? "_slot" : ""))); + drawUnalignedTexturedQuad(RenderPipelines.GUI_TEXTURED, sprite.getAtlasId(), context, mouseX, mouseX + 16, mouseY, mouseY + 16, sprite.getMinU(), sprite.getMaxU(), sprite.getMinV(), sprite.getMaxV()); + } catch (IllegalStateException ignored) {} + } +} diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/WaylandCursorRenderer.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/WaylandCursorRenderer.java new file mode 100644 index 0000000..52723eb --- /dev/null +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/cursor/WaylandCursorRenderer.java @@ -0,0 +1,52 @@ +package eu.midnightdust.midnightcontrols.client.gui.cursor; + +import eu.midnightdust.midnightcontrols.ControlsMode; +import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; +import eu.midnightdust.midnightcontrols.client.enums.VirtualMouseSkin; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.RenderPipelines; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.StandardCursors; +import net.minecraft.client.texture.Sprite; +import net.minecraft.util.Atlases; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.NotNull; + +import static eu.midnightdust.midnightcontrols.MidnightControls.id; + +public class WaylandCursorRenderer extends CursorRenderer { + private static final WaylandCursorRenderer INSTANCE = new WaylandCursorRenderer(); + + public static final Identifier WAYLAND_CURSOR_ARROW_LIGHT = id("cursor/light/mouse_arrow"); + public static final Identifier WAYLAND_CURSOR_ARROW_DARK = id("cursor/dark/mouse_arrow"); + public static final Identifier WAYLAND_CURSOR_POINTING_LIGHT = id("cursor/light/mouse_pointing_hand"); + public static final Identifier WAYLAND_CURSOR_POINTING_DARK = id("cursor/dark/mouse_pointing_hand"); + public static final Identifier WAYLAND_CURSOR_IBEAM_LIGHT = id("cursor/light/mouse_ibeam"); + public static final Identifier WAYLAND_CURSOR_IBEAM_DARK = id("cursor/dark/mouse_ibeam"); + + public static WaylandCursorRenderer getInstance() { + return INSTANCE; + } + + public void renderCursor(@NotNull DrawContext context, @NotNull MinecraftClient client) { + if (MidnightControlsConfig.virtualMouse || client.currentScreen == null || MidnightControlsConfig.controlsMode != ControlsMode.CONTROLLER) return; + + float mouseX = (float) client.mouse.getX() * client.getWindow().getScaledWidth() / client.getWindow().getWidth(); + float mouseY = (float) client.mouse.getY() * client.getWindow().getScaledHeight() / client.getWindow().getHeight(); + + try { + Sprite sprite = getSprite(client); + drawUnalignedTexturedQuad(RenderPipelines.GUI_TEXTURED, sprite.getAtlasId(), context, mouseX - 2, mouseX + 6, mouseY - 2, mouseY + 6, sprite.getMinU(), sprite.getMaxU(), sprite.getMinV(), sprite.getMaxV()); + } catch (IllegalStateException ignored) {} + } + + private static Sprite getSprite(@NotNull MinecraftClient client) { + boolean isDark = MidnightControlsConfig.virtualMouseSkin == VirtualMouseSkin.DEFAULT_DARK || MidnightControlsConfig.virtualMouseSkin == VirtualMouseSkin.SECOND_DARK; + Identifier spritePath; + if (CursorRenderer.currentCursorStyle == StandardCursors.POINTING_HAND) spritePath = isDark ? WAYLAND_CURSOR_POINTING_DARK : WAYLAND_CURSOR_POINTING_LIGHT; + else if (CursorRenderer.currentCursorStyle == StandardCursors.IBEAM) spritePath = isDark ? WAYLAND_CURSOR_IBEAM_DARK : WAYLAND_CURSOR_IBEAM_LIGHT; + else spritePath = isDark ? WAYLAND_CURSOR_ARROW_DARK : WAYLAND_CURSOR_ARROW_LIGHT; + + return client.getAtlasManager().getAtlasTexture(Atlases.GUI).getSprite(spritePath); + } +} diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/CursorMixin.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/CursorMixin.java new file mode 100644 index 0000000..9965589 --- /dev/null +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/CursorMixin.java @@ -0,0 +1,17 @@ +package eu.midnightdust.midnightcontrols.client.mixin; + +import eu.midnightdust.midnightcontrols.client.gui.cursor.CursorRenderer; +import net.minecraft.client.gui.cursor.Cursor; +import net.minecraft.client.util.Window; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Cursor.class) +public abstract class CursorMixin { + @Inject(method = "applyTo", at = @At("TAIL")) + public void midnightcontrols$applyCursorStyle(Window window, CallbackInfo ci) { + CursorRenderer.currentCursorStyle = ((Cursor) (Object) this); + } +} diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java index ff8faee..a6fdfce 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java @@ -15,6 +15,8 @@ import eu.midnightdust.midnightcontrols.ControlsMode; import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; import eu.midnightdust.midnightcontrols.client.gui.MidnightControlsRenderer; +import eu.midnightdust.midnightcontrols.client.gui.cursor.VirtualCursorRenderer; +import eu.midnightdust.midnightcontrols.client.gui.cursor.WaylandCursorRenderer; import eu.midnightdust.midnightcontrols.client.touch.TouchUtils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; @@ -39,8 +41,8 @@ public abstract class GameRendererMixin { } @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;renderWithTooltip(Lnet/minecraft/client/gui/DrawContext;IIF)V", shift = At.Shift.AFTER)) private void midnightcontrols$renderVirtualCursor(RenderTickCounter tickCounter, boolean tick, CallbackInfo ci, @Local DrawContext drawContext) { - MidnightControlsRenderer.renderVirtualCursor(drawContext, client); - if (MidnightControlsClient.isWayland) MidnightControlsRenderer.renderWaylandCursor(drawContext, client); + VirtualCursorRenderer.getInstance().renderCursor(drawContext, client); + if (MidnightControlsClient.isWayland) WaylandCursorRenderer.getInstance().renderCursor(drawContext, client); //drawContext.draw(); } @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;renderHand(FZLorg/joml/Matrix4f;)V"), method = "renderWorld") diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_arrow.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_arrow.png new file mode 100644 index 0000000..0bdd447 Binary files /dev/null and b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_arrow.png differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_ibeam.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_ibeam.png new file mode 100644 index 0000000..0254390 Binary files /dev/null and b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_ibeam.png differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_pointer.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_pointer.png deleted file mode 100644 index dd957f0..0000000 Binary files a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_pointer.png and /dev/null differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_pointing_hand.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_pointing_hand.png new file mode 100644 index 0000000..f3ce8aa Binary files /dev/null and b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/dark/mouse_pointing_hand.png differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_arrow.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_arrow.png new file mode 100644 index 0000000..ec832d9 Binary files /dev/null and b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_arrow.png differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_ibeam.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_ibeam.png new file mode 100644 index 0000000..df1cdaa Binary files /dev/null and b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_ibeam.png differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_pointer.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_pointer.png deleted file mode 100644 index c12dff5..0000000 Binary files a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_pointer.png and /dev/null differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_pointing_hand.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_pointing_hand.png new file mode 100644 index 0000000..b5f89db Binary files /dev/null and b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/cursor/light/mouse_pointing_hand.png differ diff --git a/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/icon/unbind.png b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/icon/unbind.png new file mode 100644 index 0000000..5f37eb3 Binary files /dev/null and b/common/src/main/resources/assets/midnightcontrols/textures/gui/sprites/icon/unbind.png differ diff --git a/common/src/main/resources/midnightcontrols.mixins.json b/common/src/main/resources/midnightcontrols.mixins.json index cdd9a8b..812f294 100644 --- a/common/src/main/resources/midnightcontrols.mixins.json +++ b/common/src/main/resources/midnightcontrols.mixins.json @@ -12,6 +12,7 @@ "ClickableWidgetAccessor", "ClientPlayerEntityMixin", "CreativeInventoryScreenAccessor", + "CursorMixin", "DrawContextAccessor", "GameOptionsScreenMixin", "GameRendererMixin", @@ -20,6 +21,7 @@ "InputUtilMixin", "KeyBindingIDAccessor", "KeyBindingMixin", + "KeyboardAccessor", "KeyboardMixin", "MinecraftClientMixin", "MouseAccessor",