hibiscus/src/main/java/codes/som/hibiscus/mixins/MixinKeyboard.java

37 lines
1.2 KiB
Java

package codes.som.hibiscus.mixins;
import codes.som.hibiscus.HibiscusMod;
import codes.som.hibiscus.events.CharEvent;
import codes.som.hibiscus.events.KeyEvent;
import net.minecraft.client.Keyboard;
import net.minecraft.client.MinecraftClient;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
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 abstract class MixinKeyboard {
@Shadow
@Final
private MinecraftClient client;
@Inject(method = "onKey", at = @At("HEAD"))
public void onKey(long window, int key, int scancode, int action, int mods, CallbackInfo ci) {
if (window != this.client.getWindow().getHandle())
return; // Just in case
HibiscusMod.bus().fire(new KeyEvent(key, action));
}
@Inject(method = "onChar", at = @At("HEAD"))
public void onChar(long window, int character, int mods, CallbackInfo ci) {
if (window != this.client.getWindow().getHandle())
return;
HibiscusMod.bus().fire(new CharEvent((char) character));
}
}