1
0
forked from Clones/Controlify

ui sounds

This commit is contained in:
isXander
2023-04-16 17:44:39 +01:00
parent 6eaf16d8c3
commit 800f219fa6
12 changed files with 62 additions and 6 deletions

View File

@ -73,12 +73,17 @@ dependencies {
"fabric-resource-loader-v0",
"fabric-lifecycle-events-v1",
"fabric-key-binding-api-v1",
"fabric-registry-sync-v0",
).forEach {
modImplementation(fabricApi.module(it, libs.versions.fabric.api.get()))
}
listOf(
// sodium requirements
"fabric-rendering-data-attachment-v1",
"fabric-rendering-fluids-v1",
).forEach {
modImplementation(fabricApi.module(it, libs.versions.fabric.api.get()))
modRuntimeOnly(fabricApi.module(it, libs.versions.fabric.api.get()))
}
modImplementation(libs.yet.another.config.lib)

View File

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

View File

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

View File

@ -18,4 +18,5 @@ public class GlobalSettings {
public boolean loadVibrationNatives = false;
public boolean vibrationOnboarded = false;
public ReachAroundMode reachAround = ReachAroundMode.OFF;
public boolean uiSounds = false;
}

View File

@ -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"))

View File

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

View File

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

View File

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

View File

@ -13,6 +13,8 @@
"controlify.reach_around.singleplayer_only": "Singleplayer Only",
"controlify.reach_around.singleplayer_and_lan": "Singleplayer and LAN",
"controlify.reach_around.everywhere": "Everywhere",
"controlify.gui.ui_sounds": "UI Sounds",
"controlify.gui.ui_sounds.tooltip": "If enabled, Controlify will play UI sounds when you interact with the UI, like in legacy console editions of Minecraft.",
"controlify.gui.out_of_focus_input": "Out of Focus Input",
"controlify.gui.out_of_focus_input.tooltip": "If enabled, Controlify will still receive input even if the game window is not focused.",
"controlify.gui.keyboard_movement": "Keyboard-like Movement",

View File

@ -0,0 +1,7 @@
{
"controlify.ui.focus": {
"sounds": [
"controlify:ui_focus"
]
}
}

View File

@ -20,6 +20,9 @@
],
"modmenu": [
"dev.isxander.controlify.config.gui.ModMenuIntegration"
],
"client": [
"dev.isxander.controlify.ControlifyEntrypoint"
]
},
"mixins": [