diff --git a/README.md b/README.md
index 15b2377..ee76c38 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Roundaround's Armor Stands
-
+
Place, pose, and dress armor stands with an easy-to-use UI.
diff --git a/build.gradle.kts b/build.gradle.kts
index facab2c..2895d60 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -9,4 +9,5 @@ repositories {
dependencies {
implementation("com.github.LlamaLad7:MixinExtras:0.1.1")
annotationProcessor("com.github.LlamaLad7:MixinExtras:0.1.1")
+ include("com.github.LlamaLad7:MixinExtras:0.1.1")
}
diff --git a/src/main/java/me/roundaround/armorstands/ArmorStandsPreLaunch.java b/src/main/java/me/roundaround/armorstands/ArmorStandsPreLaunch.java
new file mode 100644
index 0000000..2e0a8e6
--- /dev/null
+++ b/src/main/java/me/roundaround/armorstands/ArmorStandsPreLaunch.java
@@ -0,0 +1,10 @@
+package me.roundaround.armorstands;
+
+import com.llamalad7.mixinextras.MixinExtrasBootstrap;
+import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint;
+
+public class ArmorStandsPreLaunch implements PreLaunchEntrypoint {
+ public void onPreLaunch() {
+ MixinExtrasBootstrap.init();
+ }
+}
diff --git a/src/main/java/me/roundaround/armorstands/client/gui/screen/AbstractArmorStandScreen.java b/src/main/java/me/roundaround/armorstands/client/gui/screen/AbstractArmorStandScreen.java
index 5a11980..969e35d 100644
--- a/src/main/java/me/roundaround/armorstands/client/gui/screen/AbstractArmorStandScreen.java
+++ b/src/main/java/me/roundaround/armorstands/client/gui/screen/AbstractArmorStandScreen.java
@@ -259,15 +259,14 @@ public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
lockCursor();
return true;
case GLFW.GLFW_KEY_LEFT:
- if (this.client.options.leftKey.matchesKey(keyCode, scanCode) && !Screen.hasControlDown()) {
+ if (!Screen.hasControlDown()) {
break;
}
playClickSound();
goToPreviousScreen();
return true;
case GLFW.GLFW_KEY_RIGHT:
- if (this.client.options.rightKey.matchesKey(keyCode, scanCode) &&
- !Screen.hasControlDown()) {
+ if (!Screen.hasControlDown()) {
break;
}
playClickSound();
diff --git a/src/main/java/me/roundaround/armorstands/mixin/HandledScreenMixin.java b/src/main/java/me/roundaround/armorstands/mixin/HandledScreenMixin.java
new file mode 100644
index 0000000..859a157
--- /dev/null
+++ b/src/main/java/me/roundaround/armorstands/mixin/HandledScreenMixin.java
@@ -0,0 +1,25 @@
+package me.roundaround.armorstands.mixin;
+
+import me.roundaround.armorstands.client.gui.screen.PassesEventsThrough;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.client.gui.screen.ingame.HandledScreen;
+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.CallbackInfoReturnable;
+
+@Mixin(HandledScreen.class)
+public abstract class HandledScreenMixin extends Screen {
+ protected HandledScreenMixin() {
+ super(null);
+ }
+
+ @Inject(method = "keyPressed", at = @At(value = "HEAD"), cancellable = true)
+ public void keyPressed(
+ int keyCode, int scanCode, int modifiers, CallbackInfoReturnable info) {
+ if (this instanceof PassesEventsThrough passesEventsThrough &&
+ passesEventsThrough.shouldPassEvents()) {
+ info.setReturnValue(super.keyPressed(keyCode, scanCode, modifiers));
+ }
+ }
+}
diff --git a/src/main/java/me/roundaround/armorstands/mixin/KeyboardMixin.java b/src/main/java/me/roundaround/armorstands/mixin/KeyboardMixin.java
index dc40b91..6f13bf7 100644
--- a/src/main/java/me/roundaround/armorstands/mixin/KeyboardMixin.java
+++ b/src/main/java/me/roundaround/armorstands/mixin/KeyboardMixin.java
@@ -1,41 +1,23 @@
package me.roundaround.armorstands.mixin;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
-import me.roundaround.armorstands.ArmorStandsMod;
-import me.roundaround.armorstands.client.gui.screen.AbstractArmorStandScreen;
import me.roundaround.armorstands.client.gui.screen.PassesEventsThrough;
import net.minecraft.client.Keyboard;
import net.minecraft.client.gui.screen.Screen;
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(Keyboard.class)
public class KeyboardMixin {
@ModifyExpressionValue(
- method = "onKey",
- at = @At(
- value = "FIELD",
- target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;",
- ordinal = 2
- )
+ method = "onKey", at = @At(
+ value = "FIELD",
+ target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;",
+ ordinal = 2
+ )
)
private Screen modifyCurrentScreen(Screen screen) {
- if (screen instanceof AbstractArmorStandScreen) {
- ArmorStandsMod.LOGGER.info("We're in the armor stand screen!");
- }
- if (screen instanceof PassesEventsThrough && ((PassesEventsThrough) screen).shouldPassEvents()) {
- ArmorStandsMod.LOGGER.info("We're in a screen that passes events through!");
- }
- return
- screen instanceof PassesEventsThrough && ((PassesEventsThrough) screen).shouldPassEvents()
- ? null
- : screen;
- }
-
- @Inject(method = "onKey", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/InputUtil;fromKeyCode(II)Lnet/minecraft/client/util/InputUtil$Key;", shift = At.Shift.AFTER))
- private void afterScreenCheck(long window, int key, int scancode, int action, int modifiers, CallbackInfo info) {
- ArmorStandsMod.LOGGER.info("We've made it!");
+ return screen instanceof PassesEventsThrough passesEventsThrough &&
+ passesEventsThrough.shouldPassEvents() ? null : screen;
}
}
diff --git a/src/main/resources/armorstands.mixins.json b/src/main/resources/armorstands.mixins.json
index cfd61e3..3fc5e8d 100644
--- a/src/main/resources/armorstands.mixins.json
+++ b/src/main/resources/armorstands.mixins.json
@@ -12,6 +12,7 @@
],
"client": [
"ArmorStandEntityClientMixin",
+ "HandledScreenMixin",
"InGameHudAccessor",
"InGameHudMixin",
"KeyBindingAccessor",
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index 4a98100..76da07a 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -3,7 +3,7 @@
"id": "armorstands",
"version": "${version}",
"name": "Armor Stands",
- "description": "Place, pose, and dress armor stands with an easy-to-use UI.",
+ "description": "Place, pose, and dress armor stands with an easy-to-use UI.\n${library}",
"authors": [
"Roundaround"
],
@@ -16,6 +16,9 @@
"icon": "assets/armorstands/icon.png",
"environment": "*",
"entrypoints": {
+ "preLaunch": [
+ "me.roundaround.armorstands.ArmorStandsPreLaunch"
+ ],
"client": [
"me.roundaround.armorstands.client.ArmorStandsClientMod"
],