Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@ dependencies {
implementation(plugin("dev.isxander.modstitch.base", "0.8.4"))
implementation(plugin("dev.isxander.secrets", "0.1.0"))
implementation(plugin("dev.kikugie.stonecutter", "0.8.2"))
implementation(plugin("fabric-loom", "1.14.9"))
implementation(plugin("fabric-loom", "1.16.1"))
implementation(plugin("net.neoforged.moddev", "2.0.137"))
}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pub.curseforgeSlug=controlify
pub.modrinthId=DOUdJVEm
githubProject=isXander/Controlify

deps.fabricLoader=0.18.6
deps.fabricLoader=0.19.1
deps.sdl3Target=3.2.18.release-3.2.18
deps.sdl34jBuild=79
deps.hid4java=0.8.0
Expand Down
32 changes: 16 additions & 16 deletions src/main/java/dev/isxander/controlify/Controlify.java
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ public void preInitialiseControlify() {
});

PlatformClientUtil.addHudLayer(CUtil.rl("button_guide"), (graphics, deltaTracker) ->
inGameButtonGuide().ifPresent(guide -> guide.renderHud(graphics, deltaTracker.getGameTimeDeltaPartialTick(false))));
inGameButtonGuide().ifPresent(guide -> guide.extractRenderState(graphics, deltaTracker.getGameTimeDeltaPartialTick(false))));

PlatformMainUtil.applyToControlifyEntrypoint(entrypoint -> {
try {
Expand Down Expand Up @@ -386,7 +386,7 @@ private void onControllerAdded(ControllerEntity controller, boolean hotplugged)
);

if (hotplugged) {
ToastUtils.sendToast(
MinecraftUtil.sendToast(
Component.translatable("controlify.toast.controller_connected.title"),
Component.translatable("controlify.toast.controller_connected.description", controller.name()),
false
Expand All @@ -410,7 +410,7 @@ private void onControllerRemoved(ControllerEntity controller) {
this.selectFirstConnectedController();
}

ToastUtils.sendToast(
MinecraftUtil.sendToast(
Component.translatable("controlify.toast.controller_disconnected.title"),
Component.translatable("controlify.toast.controller_disconnected.description", controller.name()),
false
Expand All @@ -429,14 +429,14 @@ private void selectFirstConnectedController() {
* Only the current controller ticks.
*/
public void tick(Minecraft client) {
if (minecraft.getOverlay() == null) {
if (MinecraftUtil.getOverlay() == null) {
if (currentSetupWizard != null && currentSetupWizard.isDone()) {
currentSetupWizard = null;
}

if (!setupWizards.isEmpty() && !(minecraft.screen instanceof DontInteruptScreen)) {
if (!setupWizards.isEmpty() && !(MinecraftUtil.getScreen() instanceof DontInteruptScreen)) {
currentSetupWizard = setupWizards.poll();
minecraft.setScreen(currentSetupWizard.start(minecraft.screen));
MinecraftUtil.setScreen(currentSetupWizard.start(MinecraftUtil.getScreen()));
}
}

Expand Down Expand Up @@ -493,8 +493,8 @@ private void tickActiveController(ControllerEntity controller, boolean outOfFocu
ControllerStateView state = input.stateNow();
Optional<RumbleManager> rumbleManager = controller.rumble().map(RumbleComponent::rumbleManager);

boolean isPaused = minecraft.isPaused() || minecraft.screen instanceof PauseScreen;
boolean isConfigScreen = minecraft.screen instanceof YACLScreen;
boolean isPaused = minecraft.isPaused() || MinecraftUtil.getScreen() instanceof PauseScreen;
boolean isConfigScreen = MinecraftUtil.getScreen() instanceof YACLScreen;

rumbleManager.ifPresent(rumble -> rumble.setSilent(outOfFocus || (isPaused && !isConfigScreen) || currentInputMode() == InputMode.KEYBOARD_MOUSE));
if (outOfFocus) {
Expand All @@ -515,7 +515,7 @@ private void tickActiveController(ControllerEntity controller, boolean outOfFocu

if (consecutiveInputSwitches > 100) {
CUtil.LOGGER.warn("Controlify detected current controller to be constantly giving input and has been disabled.");
ToastUtils.sendToast(
MinecraftUtil.sendToast(
Component.translatable("controlify.toast.faulty_input.title"),
Component.translatable("controlify.toast.faulty_input.description"),
true
Expand All @@ -530,8 +530,8 @@ private void tickActiveController(ControllerEntity controller, boolean outOfFocu
}

if (this.currentInputMode().isController()) {
if (minecraft.screen != null) {
ScreenProcessorProvider.provide(minecraft.screen).onControllerUpdate(controller);
if (MinecraftUtil.getScreen() != null) {
ScreenProcessorProvider.provide(MinecraftUtil.getScreen()).onControllerUpdate(controller);
}

ControlifyEvents.ACTIVE_CONTROLLER_TICKED.invoke(new ControlifyEvents.ControllerStateUpdate(controller));
Expand Down Expand Up @@ -611,8 +611,8 @@ public boolean setInputMode(@NotNull InputMode newInputMode) {
}

// notify current screen of input mode change
if (minecraft.screen != null) {
ScreenProcessorProvider.provide(minecraft.screen).onInputModeChanged(newInputMode);
if (MinecraftUtil.getScreen() != null) {
ScreenProcessorProvider.provide(MinecraftUtil.getScreen()).onInputModeChanged(newInputMode);
}

// notify event listeners of input mode change
Expand Down Expand Up @@ -673,12 +673,12 @@ public void hideMouse(boolean hide, boolean moveMouse) {
? GLFW.GLFW_CURSOR_HIDDEN
: GLFW.GLFW_CURSOR_NORMAL
);
if (minecraft.screen != null) {
if (MinecraftUtil.getScreen() != null) {
var mouseHandlerAccessor = (MouseHandlerAccessor) minecraft.mouseHandler;
if (hide && !virtualMouseHandler().isVirtualMouseEnabled() && moveMouse) {
// stop mouse hovering over last element before hiding cursor but don't actually move it
// so when the user switches back to mouse it will be in the same place
mouseHandlerAccessor.invokeOnMove(handle, -50, -50);
mouseHandlerAccessor.controlify$invokeOnMove(handle, -50, -50);
}
}
}
Expand Down Expand Up @@ -722,7 +722,7 @@ public void notifyNewServer(ServerData data) {
return;

if (config().getSettings().globalSettings().seenServers.add(data.ip)) {
ToastUtils.sendToast(
MinecraftUtil.sendToast(
Component.translatable("controlify.toast.new_server.title"),
Component.translatable("controlify.toast.new_server.description", data.name),
true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private InGameFacts() {}
/** When the player is in a state where pressing jump will cause the elytra to deploy */
public static final Fact<InGameCtx> CAN_ELYTRA_FLY = register(
CUtil.rl("can_elytra_fly"),
ctx -> ((PlayerAccessor) ctx.player()).callCanGlide()
ctx -> ((PlayerAccessor) ctx.player()).controlify$callCanGlide()
&& !ctx.player().onClimbable()
&& !ctx.player().onGround()
&& !ctx.player().isInLiquid()
Expand Down
19 changes: 10 additions & 9 deletions src/main/java/dev/isxander/controlify/bindings/BindContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import dev.isxander.controlify.gui.screen.RadialMenuScreen;
import dev.isxander.controlify.screenop.ScreenProcessorProvider;
import dev.isxander.controlify.utils.CUtil;
import dev.isxander.controlify.utils.MinecraftUtil;
import dev.isxander.controlify.virtualmouse.VirtualMouseBehaviour;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
Expand All @@ -23,42 +24,42 @@ public record BindContext(Identifier id, Function<Minecraft, Boolean> isApplicab

public static final BindContext IN_GAME = register(
"in_game",
mc -> mc.screen == null && mc.level != null && mc.player != null
mc -> MinecraftUtil.getScreen() == null && mc.level != null && mc.player != null
);

public static final BindContext ANY_SCREEN = register(
"screen",
mc -> mc.screen != null
mc -> MinecraftUtil.getScreen() != null
);

public static final BindContext REGULAR_SCREEN = register(
"regular_screen",
mc -> mc.screen != null
mc -> MinecraftUtil.getScreen() != null
&& !Controlify.instance().virtualMouseHandler().isVirtualMouseEnabled()
);

public static final BindContext CONTAINER = register(
"container",
mc -> mc.screen instanceof AbstractContainerScreen<?>
mc -> MinecraftUtil.getScreen() instanceof AbstractContainerScreen<?>
);

public static final BindContext V_MOUSE_CURSOR = register(
"vmouse_cursor",
mc -> mc.screen != null
&& ScreenProcessorProvider.provide(mc.screen).virtualMouseBehaviour().hasCursor()
mc -> MinecraftUtil.getScreen() != null
&& ScreenProcessorProvider.provide(MinecraftUtil.getScreen()).virtualMouseBehaviour().hasCursor()
&& Controlify.instance().virtualMouseHandler().isVirtualMouseEnabled()
);

public static final BindContext V_MOUSE_COMPAT = register(
"vmouse_compat",
mc -> mc.screen != null
&& ScreenProcessorProvider.provide(mc.screen).virtualMouseBehaviour() == VirtualMouseBehaviour.ENABLED
mc -> MinecraftUtil.getScreen() != null
&& ScreenProcessorProvider.provide(MinecraftUtil.getScreen()).virtualMouseBehaviour() == VirtualMouseBehaviour.ENABLED
&& Controlify.instance().virtualMouseHandler().isVirtualMouseEnabled()
);

public static final BindContext RADIAL_MENU = register(
"radial_menu",
mc -> mc.screen instanceof RadialMenuScreen
mc -> MinecraftUtil.getScreen() instanceof RadialMenuScreen
);

private static BindContext register(String path, Function<Minecraft, Boolean> predicate) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import dev.isxander.controlify.utils.CUtil;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.RenderPipelines;
import net.minecraft.core.Holder;
import net.minecraft.core.registries.BuiltInRegistries;
Expand Down Expand Up @@ -70,7 +69,11 @@ private static void addPotionEffects(Map<Identifier, RadialIcon> map) {

Holder<MobEffect> effect = BuiltInRegistries.MOB_EFFECT.wrapAsHolder(entry.getValue());

Identifier sprite = Gui.getMobEffectSprite(effect);
//? if >=26.2 {
Identifier sprite = net.minecraft.client.gui.Hud.getMobEffectSprite(effect);
//?} else {
/*Identifier sprite = net.minecraft.client.gui.Gui.getMobEffectSprite(effect);
*///?}

map.put(key.identifier().withPrefix("effect/"), (graphics, x, y, a) -> {
var pose = graphics.pose().pushMatrix();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import dev.isxander.controlify.bindings.KeyMappingHandle;
import dev.isxander.controlify.bindings.StateAccess;
import dev.isxander.controlify.controller.ControllerEntity;
import dev.isxander.controlify.utils.MinecraftUtil;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;

Expand Down Expand Up @@ -37,7 +38,7 @@ private void push() {
if (ControlifyApi.get().getCurrentController().orElse(null) != controller)
return; // only emulate current controller

if (Minecraft.getInstance().screen != null)
if (MinecraftUtil.getScreen() != null)
return; // minecraft keybinds don't work in gui screens it conflicts

KeyMappingHandle handle = (KeyMappingHandle) keyMapping;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import de.keksuccino.fancymenu.customization.action.Action;
import dev.isxander.controlify.gui.screen.ControlifySettingsScreen;
import dev.isxander.controlify.utils.MinecraftUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.NotNull;
Expand All @@ -20,7 +21,7 @@ public boolean hasValue() {

@Override
public void execute(@Nullable String s) {
ControlifySettingsScreen.openScreen(Minecraft.getInstance().screen);
ControlifySettingsScreen.openScreen(MinecraftUtil.getScreen());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import dev.isxander.controlify.api.bind.InputBindingSupplier;
import dev.isxander.controlify.compatibility.simplevoicechat.mixins.KeyEventsAccessor;
import dev.isxander.controlify.controller.ControllerEntity;
import dev.isxander.controlify.utils.MinecraftUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderPipelines;
import net.minecraft.network.chat.CommonComponents;
Expand Down Expand Up @@ -98,7 +99,7 @@ public static boolean isWhisperDown() {
}

private static void checkConnected() {
if (Minecraft.getInstance().getOverlay() == null && Minecraft.getInstance().screen == null) {
if (MinecraftUtil.getOverlay() == null && MinecraftUtil.getScreen() == null) {
((KeyEventsAccessor) ClientManager.instance().getKeyEvents()).invokeCheckConnected();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,15 @@

@Mixin(VideoSettingsScreen.class)
public abstract class VideoSettingsScreenMixin extends Screen implements ScreenProcessorProvider, SodiumScreenOperations {
@Shadow private FlatButtonWidget applyButton;
//? if >=26.2 {
@Shadow private net.caffeinemc.mods.sodium.client.gui.widgets.KeyBoundButtonWidget applyButton;
@Shadow private net.caffeinemc.mods.sodium.client.gui.widgets.KeyBoundButtonWidget closeButton;
@Shadow private net.caffeinemc.mods.sodium.client.gui.widgets.KeyBoundButtonWidget undoButton;
//?} else {
/*@Shadow private FlatButtonWidget applyButton;
@Shadow private FlatButtonWidget closeButton;
@Shadow private FlatButtonWidget undoButton;
*///?}
@Shadow private OptionListWidget optionList;

@Unique private Page controlify$currentPage = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ public void playHaptic(SoundEvent sound) {
.getSound(randomSource).getLocation();

SoundManager soundManager = Minecraft.getInstance().getSoundManager();
SoundEngine soundEngine = ((SoundManagerAccessor) soundManager).getSoundEngine();
SoundBufferLibrary bufferLibrary = ((SoundEngineAccessor) soundEngine).getSoundBuffers();
SoundEngine soundEngine = ((SoundManagerAccessor) soundManager).controlify$getSoundEngine();
SoundBufferLibrary bufferLibrary = ((SoundEngineAccessor) soundEngine).controlify$getSoundBuffers();

Identifier soundId = location.withPrefix("sounds/").withSuffix(".ogg");

Expand All @@ -75,8 +75,8 @@ private CompletableFuture<CompleteSoundData> getSoundData(Identifier id, Complet
return sound
.thenApply(soundBuffer -> hapticData.computeIfAbsent(id, key -> {
var accessor = (SoundBufferAccessor) soundBuffer;
ByteBuffer bytes = accessor.getData();
AudioFormat format = accessor.getFormat();
ByteBuffer bytes = accessor.controlify$getData();
AudioFormat format = accessor.controlify$getFormat();

if (bytes == null) {
return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package dev.isxander.controlify.fixes.boatfix;

import dev.isxander.controlify.mixins.feature.patches.analogueboat.BoatMixin;
import dev.isxander.controlify.mixins.feature.patches.analogueboat.AbstractBoatMixin;

/**
* @see BoatMixin
* @see AbstractBoatMixin
*/
public interface AnalogBoatInput {
void controlify$setAnalogInput(float forward, float right);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import dev.isxander.controlify.gui.screen.BindConsumerScreen;
import dev.isxander.controlify.screenop.ComponentProcessor;
import dev.isxander.controlify.screenop.ScreenProcessor;
import dev.isxander.controlify.utils.MinecraftUtil;
import dev.isxander.yacl3.api.Controller;
import dev.isxander.yacl3.api.Option;
import dev.isxander.yacl3.api.utils.Dimension;
Expand Down Expand Up @@ -105,7 +106,7 @@ public boolean mouseClicked(MouseButtonEvent mouseButtonEvent, boolean doubleCli

private void openConsumerScreen() {
awaitingControllerInput = true;
Minecraft.getInstance().setScreen(new BindConsumerScreen(this::getPressedBind, control.option(), this, Minecraft.getInstance().screen));
MinecraftUtil.setScreen(new BindConsumerScreen(this::getPressedBind, control.option(), this, MinecraftUtil.getScreen()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ public void registerDynamicRule(Rule rule) {

@Override
public void render(GuiGraphicsExtractor graphics, boolean bottomAligned, boolean textContrast) {
GuideRenderer.render(graphics, this, Minecraft.getInstance(), bottomAligned, textContrast);
GuideRenderer.extractRenderState(graphics, this, Minecraft.getInstance(), bottomAligned, textContrast);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
public final class GuideRenderer {
private GuideRenderer() {}

public static void render(GuiGraphicsExtractor graphics, GuideDomain<?> domain, Minecraft minecraft, boolean bottomAligned, boolean textContrast) {
public static void extractRenderState(GuiGraphicsExtractor graphics, GuideDomain<?> domain, Minecraft minecraft, boolean bottomAligned, boolean textContrast) {
int width = minecraft.getWindow().getGuiScaledWidth();
int height = minecraft.getWindow().getGuiScaledHeight();

Expand Down Expand Up @@ -61,7 +61,7 @@ public Renderable(GuideDomain<?> domain, Minecraft minecraft, boolean bottomAlig

@Override
public void extractRenderState(@NonNull GuiGraphicsExtractor graphics, int mouseX, int mouseY, float a) {
GuideRenderer.render(graphics, domain, minecraft, bottomAligned, textContrast);
GuideRenderer.extractRenderState(graphics, domain, minecraft, bottomAligned, textContrast);
}

public void setBottomAligned(boolean bottomAligned) {
Expand Down
Loading
Loading