forked from Clones/Controlify
ui sounds
This commit is contained in:
@ -19,6 +19,7 @@ import dev.isxander.controlify.api.event.ControlifyEvents;
|
||||
import dev.isxander.controlify.ingame.guide.InGameButtonGuide;
|
||||
import dev.isxander.controlify.ingame.InGameInputHandler;
|
||||
import dev.isxander.controlify.mixins.feature.virtualmouse.MouseHandlerAccessor;
|
||||
import dev.isxander.controlify.sound.ControlifySounds;
|
||||
import dev.isxander.controlify.utils.DebugLog;
|
||||
import dev.isxander.controlify.utils.ToastUtils;
|
||||
import dev.isxander.controlify.virtualmouse.VirtualMouseHandler;
|
||||
@ -156,6 +157,8 @@ public class Controlify implements ControlifyApi {
|
||||
ResourcePackActivationType.DEFAULT_ENABLED
|
||||
);
|
||||
|
||||
ControlifySounds.init();
|
||||
|
||||
this.inGameInputHandler = null;
|
||||
this.virtualMouseHandler = new VirtualMouseHandler();
|
||||
|
||||
|
@ -0,0 +1,10 @@
|
||||
package dev.isxander.controlify;
|
||||
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
|
||||
public class ControlifyEntrypoint implements ClientModInitializer {
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
Controlify.instance().preInitialiseControlify();
|
||||
}
|
||||
}
|
@ -18,4 +18,5 @@ public class GlobalSettings {
|
||||
public boolean loadVibrationNatives = false;
|
||||
public boolean vibrationOnboarded = false;
|
||||
public ReachAroundMode reachAround = ReachAroundMode.OFF;
|
||||
public boolean uiSounds = false;
|
||||
}
|
||||
|
@ -81,6 +81,12 @@ public class YACLHelper {
|
||||
.binding(GlobalSettings.DEFAULT.reachAround, () -> globalSettings.reachAround, v -> globalSettings.reachAround = v)
|
||||
.controller(EnumController::new)
|
||||
.build())
|
||||
.option(Option.createBuilder(boolean.class)
|
||||
.name(Component.translatable("controlify.gui.ui_sounds"))
|
||||
.tooltip(Component.translatable("controlify.gui.ui_sounds.tooltip"))
|
||||
.binding(GlobalSettings.DEFAULT.uiSounds, () -> globalSettings.uiSounds, v -> globalSettings.uiSounds = v)
|
||||
.controller(TickBoxController::new)
|
||||
.build())
|
||||
.option(Option.createBuilder(boolean.class)
|
||||
.name(Component.translatable("controlify.gui.out_of_focus_input"))
|
||||
.tooltip(Component.translatable("controlify.gui.out_of_focus_input.tooltip"))
|
||||
|
@ -43,11 +43,6 @@ public abstract class MinecraftMixin {
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/KeyboardHandler;setup(J)V", shift = At.Shift.AFTER))
|
||||
private void onInputInitialized(CallbackInfo ci) {
|
||||
Controlify.instance().preInitialiseControlify();
|
||||
}
|
||||
|
||||
@Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MouseHandler;turnPlayer()V"))
|
||||
private void doPlayerLook(boolean tick, CallbackInfo ci) {
|
||||
Controlify.instance().inGameInputHandler().ifPresent(ih -> ih.processPlayerLook(getDeltaFrameTime()));
|
||||
|
@ -6,6 +6,7 @@ import dev.isxander.controlify.controller.Controller;
|
||||
import dev.isxander.controlify.api.event.ControlifyEvents;
|
||||
import dev.isxander.controlify.mixins.feature.screenop.vanilla.ScreenAccessor;
|
||||
import dev.isxander.controlify.mixins.feature.screenop.vanilla.TabNavigationBarAccessor;
|
||||
import dev.isxander.controlify.sound.ControlifySounds;
|
||||
import dev.isxander.controlify.utils.NavigationHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.ComponentPath;
|
||||
@ -101,6 +102,9 @@ public class ScreenProcessor<T extends Screen> {
|
||||
|
||||
navigationHelper.onNavigate();
|
||||
|
||||
if (Controlify.instance().config().globalSettings().uiSounds)
|
||||
minecraft.getSoundManager().play(SimpleSoundInstance.forUI(ControlifySounds.SCREEN_FOCUS_CHANGE, 1.0F));
|
||||
|
||||
var newFocusTree = getFocusTree();
|
||||
while (!newFocusTree.isEmpty() && !focuses.contains(newFocusTree.peek())) {
|
||||
ComponentProcessorProvider.provide(newFocusTree.poll()).onFocusGained(this, controller);
|
||||
|
@ -0,0 +1,20 @@
|
||||
package dev.isxander.controlify.sound;
|
||||
|
||||
import dev.isxander.controlify.Controlify;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
|
||||
public final class ControlifySounds {
|
||||
public static final SoundEvent SCREEN_FOCUS_CHANGE = register("controlify.ui.focus");
|
||||
|
||||
private static SoundEvent register(String id) {
|
||||
ResourceLocation location = Controlify.id(id);
|
||||
return Registry.register(BuiltInRegistries.SOUND_EVENT, location, SoundEvent.createVariableRangeEvent(location));
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
// calling init now calls <clinit> which is where the sounds are registered
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user