Skip to content

Instantly share code, notes, and snippets.

@Densamisten
Forked from Ensamisten/PlayerIsTyping.java
Last active March 24, 2024 20:20
Show Gist options
  • Select an option

  • Save Densamisten/104cdc3569a4865293eeca8ded41cfa2 to your computer and use it in GitHub Desktop.

Select an option

Save Densamisten/104cdc3569a4865293eeca8ded41cfa2 to your computer and use it in GitHub Desktop.
A Mixin in Java for Fabric (Minecraft 1.20.1) which prints "Player is typing: <output>" each time a letter is written manually in the chat box.
package io.github.densamisten.mixin.client;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(TextFieldWidget.class)
public class TextFieldWidgetMixin {
@Inject(at = @At("RETURN"), method = "charTyped")
private void onCharTyped(char chr, int modifiers, CallbackInfoReturnable<Boolean> cir) {
TextFieldWidget textField = (TextFieldWidget)(Object)this; // Cast to TextFieldWidget
String text = textField.getText(); // Get the text from the widget
MinecraftClient client = MinecraftClient.getInstance();
if (client.player != null) {
String message = client.player.getName().getString() + " is typing: " + text;
client.player.sendMessage(Text.of(message));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment