forked from Clones/Controlify
button guide hud
This commit is contained in:
@ -0,0 +1,36 @@
|
||||
package dev.isxander.controlify.mixins.feature.guide;
|
||||
|
||||
import dev.isxander.controlify.Controlify;
|
||||
import dev.isxander.controlify.InputMode;
|
||||
import dev.isxander.controlify.ingame.guide.InGameButtonGuide;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundRespawnPacket;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
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(ClientPacketListener.class)
|
||||
public class ClientPacketListenerMixin {
|
||||
@Shadow @Final private Minecraft minecraft;
|
||||
|
||||
@Inject(method = "handleLogin", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;input:Lnet/minecraft/client/player/Input;", opcode = Opcodes.ASTORE, shift = At.Shift.AFTER))
|
||||
private void buttonGuideLogin(ClientboundLoginPacket packet, CallbackInfo ci) {
|
||||
initButtonGuide();
|
||||
}
|
||||
|
||||
@Inject(method = "handleRespawn", at = @At("RETURN"))
|
||||
private void buttonGuideRespawn(ClientboundRespawnPacket packet, CallbackInfo ci) {
|
||||
initButtonGuide();
|
||||
}
|
||||
|
||||
private void initButtonGuide() {
|
||||
if (Controlify.instance().currentInputMode() == InputMode.CONTROLLER && minecraft.player != null)
|
||||
Controlify.instance().inGameButtonGuide = new InGameButtonGuide(Controlify.instance().currentController(), minecraft.player);
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package dev.isxander.controlify.mixins.feature.guide;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import dev.isxander.controlify.Controlify;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
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(Gui.class)
|
||||
public class GuiMixin {
|
||||
@Shadow private int screenWidth;
|
||||
@Shadow private int screenHeight;
|
||||
|
||||
@Shadow @Final private Minecraft minecraft;
|
||||
|
||||
@Inject(method = "render", at = @At(value = "CONSTANT", args = "stringValue=chat"))
|
||||
private void renderButtonGuide(PoseStack matrices, float tickDelta, CallbackInfo ci) {
|
||||
if (Controlify.instance().inGameButtonGuide() != null) {
|
||||
minecraft.getProfiler().push("controlify_button_guide");
|
||||
Controlify.instance().inGameButtonGuide().renderHud(matrices, tickDelta, screenWidth, screenHeight);
|
||||
minecraft.getProfiler().pop();
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "tick()V", at = @At("RETURN"))
|
||||
private void tickButtonGuide(CallbackInfo ci) {
|
||||
if (Controlify.instance().inGameButtonGuide() != null) {
|
||||
Controlify.instance().inGameButtonGuide().tick();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user