37 lines
1.2 KiB
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));
|
|
}
|
|
}
|