1
0
forked from Clones/Controlify

button guide hud

This commit is contained in:
isXander
2023-02-09 23:08:28 +00:00
parent ab801e37b4
commit 773aebe04e
60 changed files with 566 additions and 154 deletions

View File

@ -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);
}
}

View File

@ -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();
}
}
}