summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/space/autistic/uwumode/mixin/UwuMixin.java25
-rw-r--r--src/main/kotlin/space/autistic/uwumode/UwuMode.kt65
-rw-r--r--src/main/resources/fabric.mod.json35
-rw-r--r--src/main/resources/uwumode.mixins.json13
4 files changed, 138 insertions, 0 deletions
diff --git a/src/main/java/space/autistic/uwumode/mixin/UwuMixin.java b/src/main/java/space/autistic/uwumode/mixin/UwuMixin.java
new file mode 100644
index 0000000..6719747
--- /dev/null
+++ b/src/main/java/space/autistic/uwumode/mixin/UwuMixin.java
@@ -0,0 +1,25 @@
+package space.autistic.uwumode.mixin;
+
+import net.minecraft.client.network.ClientPlayerEntity;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.ModifyVariable;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import space.autistic.uwumode.UwuModeKt;
+
+@Mixin(ClientPlayerEntity.class)
+public class UwuMixin {
+    @ModifyVariable(at = @At(value = "HEAD"), method = "sendChatMessage(Ljava/lang/String;)V", argsOnly = true)
+    private String sendChatMessage(String chatMessage) {
+        if (UwuModeKt.getEnabled()) {
+            if (!chatMessage.startsWith("/")) {
+                return chatMessage + " uwu~";
+            }
+        }
+        return chatMessage;
+    }
+}
+
+// vim: expandtab sw=4
diff --git a/src/main/kotlin/space/autistic/uwumode/UwuMode.kt b/src/main/kotlin/space/autistic/uwumode/UwuMode.kt
new file mode 100644
index 0000000..3e98364
--- /dev/null
+++ b/src/main/kotlin/space/autistic/uwumode/UwuMode.kt
@@ -0,0 +1,65 @@
+package space.autistic.uwumode
+
+import com.mojang.brigadier.arguments.BoolArgumentType;
+import com.mojang.brigadier.arguments.IntegerArgumentType;
+import com.mojang.brigadier.context.CommandContext;
+
+import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager;
+import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource;
+import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
+
+// For support join https://discord.gg/v6v4pMv
+
+var enabled = false
+var timer = 0
+
+fun uwutimer(c: CommandContext<FabricClientCommandSource>): Int {
+    val time = IntegerArgumentType.getInteger(c, "seconds");
+    if (timer != time) {
+        timer = time*20;
+        enabled = true;
+        return 1
+    }
+    return 0
+}
+
+fun uwumode(c: CommandContext<FabricClientCommandSource>): Int {
+    val enable = BoolArgumentType.getBool(c, "enable");
+    if (timer > 0 || enabled != enable) {
+        timer = 0;
+        enabled = enable;
+        return 1
+    }
+    return 0
+}
+
+@Suppress("unused")
+fun init() {
+    // This mod is client-only, so this is the client init.
+
+    ClientCommandManager.DISPATCHER.register(
+        ClientCommandManager.literal("uwu")
+        .then(
+            ClientCommandManager.argument(
+                "seconds",
+                IntegerArgumentType.integer(0, 0x7FFFFFFF/20)
+            ).executes(::uwutimer)
+        )
+        .then(
+            ClientCommandManager.argument(
+                "enable",
+                BoolArgumentType.bool()
+            ).executes(::uwumode)
+        )
+    );
+
+    ClientTickEvents.START_CLIENT_TICK.register {
+        if (timer > 0) {
+            --timer;
+            if (timer == 0) {
+                enabled = false;
+            }
+        }
+    };
+}
+
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
new file mode 100644
index 0000000..485459c
--- /dev/null
+++ b/src/main/resources/fabric.mod.json
@@ -0,0 +1,35 @@
+{
+  "schemaVersion": 1,
+  "id": "uwumode",
+  "version": "${version}",
+
+  "name": "UwU Mode",
+  "description": "Makes your messages end in uwu, with consent.",
+  "authors": [
+    "SoniEx2"
+  ],
+  "contact": {
+    "homepage": "https://autistic.space/",
+    "sources": "https://soniex2.autistic.space/git-repos/uwumode.git"
+  },
+
+  "license": "AGPL-3.0-or-later",
+
+  "environment": "*",
+  "entrypoints": {
+    "client": [
+      "space.autistic.uwumode.UwuModeKt::init"
+    ]
+  },
+  "mixins": [
+    "uwumode.mixins.json"
+  ],
+  "depends": {
+    "fabricloader": ">=0.8.7",
+    "fabric": "*",
+    "fabric-language-kotlin": "*",
+    "minecraft": "1.17.x"
+  },
+  "suggests": {
+  }
+}
diff --git a/src/main/resources/uwumode.mixins.json b/src/main/resources/uwumode.mixins.json
new file mode 100644
index 0000000..4eb19dc
--- /dev/null
+++ b/src/main/resources/uwumode.mixins.json
@@ -0,0 +1,13 @@
+{
+  "required": true,
+  "package": "space.autistic.uwumode.mixin",
+  "compatibilityLevel": "JAVA_8",
+  "mixins": [
+  ],
+  "client": [
+    "UwuMixin"
+  ],
+  "injectors": {
+    "defaultRequire": 1
+  }
+}