From f14f89bf9fda0895b7f53dec2d0282c5afbf246d Mon Sep 17 00:00:00 2001 From: Magnus Date: Thu, 9 Oct 2025 16:23:05 +0000 Subject: [PATCH 1/5] chore: update to 1.21.9/10 --- gradle.properties | 12 ++++---- gradle/wrapper/gradle-wrapper.properties | 2 +- .../com/bvengo/soundcontroller/Utils.java | 7 ++++- .../bvengo/soundcontroller/VolumeData.java | 9 +++--- .../soundcontroller/config/VolumeConfig.java | 2 +- .../gui/AllSoundOptionsScreen.java | 2 +- .../soundcontroller/gui/VolumeListWidget.java | 4 +++ .../gui/VolumeWidgetEntry.java | 28 +++++++++---------- .../gui/buttons/ToggleButtonWidget.java | 3 +- .../gui/buttons/TriggerButtonWidget.java | 6 ++-- .../mixin/SoundSystemAccessor.java | 9 ++---- 11 files changed, 46 insertions(+), 38 deletions(-) diff --git a/gradle.properties b/gradle.properties index f6efdd2..f7c06b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,12 +11,12 @@ archives_base_name = soundcontroller ## Fabric: https://fabricmc.net/develop ## ModMenu: https://maven.terraformersmc.com/com/terraformersmc/modmenu -modmenu_version=15.0.0-beta.3 +modmenu_version=16.0.0-rc.1 -minecraft_version=1.21.6 -yarn_mappings=1.21.6+build.1 -loader_version=0.16.14 -loom_version=1.10-SNAPSHOT +minecraft_version=1.21.10 +yarn_mappings=1.21.10+build.2 +loader_version=0.17.2 +loom_version=1.11-SNAPSHOT # Fabric API -fabric_version=0.127.1+1.21.6 \ No newline at end of file +fabric_version=0.135.0+1.21.10 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a79..ca025c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/com/bvengo/soundcontroller/Utils.java b/src/main/java/com/bvengo/soundcontroller/Utils.java index 43be441..a47bc42 100644 --- a/src/main/java/com/bvengo/soundcontroller/Utils.java +++ b/src/main/java/com/bvengo/soundcontroller/Utils.java @@ -3,12 +3,17 @@ import com.bvengo.soundcontroller.mixin.SoundManagerAccessor; import com.bvengo.soundcontroller.mixin.SoundSystemAccessor; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.sound.AbstractSoundInstance; +import net.minecraft.client.sound.AggressiveBeeSoundInstance; +import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; public class Utils { public static void updateExistingSounds() { SoundSystemAccessor soundSystem = (SoundSystemAccessor) ((SoundManagerAccessor) MinecraftClient.getInstance().getSoundManager()).getSoundSystem(); // Trigger updates for all existing sounds. AMBIENT is an arbitrary category - as long as it isn't MASTER, all existing volumes will be updated. - soundSystem.invokeUpdateSoundVolume(SoundCategory.AMBIENT, 1.0f); + soundSystem.invokeUpdateSoundVolume(PositionedSoundInstance.ambient(SoundEvents.AMBIENT_UNDERWATER_ENTER), 1.0f); } } diff --git a/src/main/java/com/bvengo/soundcontroller/VolumeData.java b/src/main/java/com/bvengo/soundcontroller/VolumeData.java index 123cc89..3a98f60 100644 --- a/src/main/java/com/bvengo/soundcontroller/VolumeData.java +++ b/src/main/java/com/bvengo/soundcontroller/VolumeData.java @@ -1,7 +1,6 @@ package com.bvengo.soundcontroller; -import com.bvengo.soundcontroller.mixin.SoundSystemAccessor; - +import net.minecraft.client.MinecraftClient; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.SoundManager; @@ -31,9 +30,9 @@ public Float getVolume() { return volume; } - public Float getAdjustedVolume(SoundInstance sound, SoundSystemAccessor soundSystem) { - float categoryVolume = soundSystem.invokeGetSoundVolume(sound.getCategory()); - float adjustment = volume * categoryVolume; + public Float getAdjustedVolume(SoundInstance sound) { + float baseCategoryVolume = MinecraftClient.getInstance().options.getSoundVolume(sound.getCategory()); + float adjustment = volume * baseCategoryVolume; return Math.max(adjustment * sound.getVolume(), 0.0F); } diff --git a/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java b/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java index a3fa634..6a89606 100644 --- a/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java +++ b/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java @@ -56,7 +56,7 @@ public VolumeData getVolumeData(Identifier soundId) { public float getAdjustedVolume(SoundInstance sound, SoundSystemAccessor soundSystem) { VolumeData volumeData = getVolumeData(sound.getId()); - return volumeData.getAdjustedVolume(sound, soundSystem); + return volumeData.getAdjustedVolume(sound); } public boolean areSubtitlesEnabled() { diff --git a/src/main/java/com/bvengo/soundcontroller/gui/AllSoundOptionsScreen.java b/src/main/java/com/bvengo/soundcontroller/gui/AllSoundOptionsScreen.java index fd7261e..4c15d80 100644 --- a/src/main/java/com/bvengo/soundcontroller/gui/AllSoundOptionsScreen.java +++ b/src/main/java/com/bvengo/soundcontroller/gui/AllSoundOptionsScreen.java @@ -105,7 +105,7 @@ private void addDoneButton() { } private void loadOptions() { - this.volumeListWidget.children().clear(); + this.volumeListWidget.clearEntriesPublic(); this.volumeListWidget.setScrollY(0); String search = this.searchField.getText().toLowerCase(); diff --git a/src/main/java/com/bvengo/soundcontroller/gui/VolumeListWidget.java b/src/main/java/com/bvengo/soundcontroller/gui/VolumeListWidget.java index 7fcea9a..b46a5a1 100644 --- a/src/main/java/com/bvengo/soundcontroller/gui/VolumeListWidget.java +++ b/src/main/java/com/bvengo/soundcontroller/gui/VolumeListWidget.java @@ -27,5 +27,9 @@ public void addWidgetEntry(VolumeWidgetEntry widget) { public int getRowWidth() { return rowWidth; } + + public void clearEntriesPublic() { + this.clearEntries(); + } } diff --git a/src/main/java/com/bvengo/soundcontroller/gui/VolumeWidgetEntry.java b/src/main/java/com/bvengo/soundcontroller/gui/VolumeWidgetEntry.java index 419960f..d5f5e44 100644 --- a/src/main/java/com/bvengo/soundcontroller/gui/VolumeWidgetEntry.java +++ b/src/main/java/com/bvengo/soundcontroller/gui/VolumeWidgetEntry.java @@ -121,20 +121,6 @@ private void init() { addResetButton(); } - @Override - public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { - int leftSide = (this.screen.width - totalWidth) / 2; - - this.volumeSlider.setPosition(leftSide, y); - this.volumeSlider.render(context, mouseX, mouseY, tickDelta); - - this.playSoundButton.setPosition(volumeSlider.getRight() + paddingAfterSearch, y); - this.playSoundButton.render(context, mouseX, mouseY, tickDelta); - - this.resetButton.setPosition(playSoundButton.getRight() + paddingBetweenButtons, y); - this.resetButton.render(context, mouseX, mouseY, tickDelta); - } - @Override public List children() { return List.of(volumeSlider, playSoundButton, resetButton); @@ -144,4 +130,18 @@ public List children() { public List selectableChildren() { return List.of(volumeSlider, playSoundButton, resetButton); } + + @Override + public void render(DrawContext context, int mouseX, int mouseY, boolean hovered, float tickDelta) { + int leftSide = (this.screen.width - totalWidth) / 2; + + this.volumeSlider.setPosition(leftSide, getY()); + this.volumeSlider.render(context, mouseX, mouseY, tickDelta); + + this.playSoundButton.setPosition(volumeSlider.getRight() + paddingAfterSearch, getY()); + this.playSoundButton.render(context, mouseX, mouseY, tickDelta); + + this.resetButton.setPosition(playSoundButton.getRight() + paddingBetweenButtons, getY()); + this.resetButton.render(context, mouseX, mouseY, tickDelta); + } } diff --git a/src/main/java/com/bvengo/soundcontroller/gui/buttons/ToggleButtonWidget.java b/src/main/java/com/bvengo/soundcontroller/gui/buttons/ToggleButtonWidget.java index b976069..7cf4a3f 100644 --- a/src/main/java/com/bvengo/soundcontroller/gui/buttons/ToggleButtonWidget.java +++ b/src/main/java/com/bvengo/soundcontroller/gui/buttons/ToggleButtonWidget.java @@ -2,6 +2,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.input.AbstractInput; /** * Custom button widget that is used as a trigger rather than a toggle. @@ -16,7 +17,7 @@ public ToggleButtonWidget(String buttonId, int x, int y, int width, int height, } @Override - public void onPress() { + public void onPress(AbstractInput input) { // Natural toggle when button is pressed this.onPress.onPress(this); isPressed = !isPressed; diff --git a/src/main/java/com/bvengo/soundcontroller/gui/buttons/TriggerButtonWidget.java b/src/main/java/com/bvengo/soundcontroller/gui/buttons/TriggerButtonWidget.java index 9aa0823..51827fb 100644 --- a/src/main/java/com/bvengo/soundcontroller/gui/buttons/TriggerButtonWidget.java +++ b/src/main/java/com/bvengo/soundcontroller/gui/buttons/TriggerButtonWidget.java @@ -2,6 +2,8 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gui.Click; +import net.minecraft.client.input.AbstractInput; /** * Custom button widget that is used as a trigger rather than a toggle. @@ -15,12 +17,12 @@ public TriggerButtonWidget(String buttonId, int x, int y, int width, int height, } @Override - public void onPress() { + public void onPress(AbstractInput input) { isPressed = true; } @Override - public void onRelease(double mouseX, double mouseY) { + public void onRelease(Click click) { // Release toggle texture on release, and perform press action. // Only perform press action if button remains hovered. if(hovered) { diff --git a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java index 0e1dc58..8133fe1 100644 --- a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java +++ b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java @@ -1,15 +1,12 @@ package com.bvengo.soundcontroller.mixin; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.SoundSystem; -import net.minecraft.sound.SoundCategory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(SoundSystem.class) public interface SoundSystemAccessor { - @Invoker("updateSoundVolume") - void invokeUpdateSoundVolume(SoundCategory category, float volume); - - @Invoker("method_72233") - float invokeGetSoundVolume(SoundCategory category); + @Invoker("setVolume") + void invokeUpdateSoundVolume(SoundInstance sound, float volume); } From 6fe47a61692c7a2ee221a5643d9aab5ddefd630a Mon Sep 17 00:00:00 2001 From: Magnus Date: Thu, 9 Oct 2025 16:23:51 +0000 Subject: [PATCH 2/5] chore: updaate fabric.mod.json --- src/main/resources/fabric.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 3650923..1049b1a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -28,7 +28,7 @@ ], "depends": { "fabricloader": ">=0.16.0", - "minecraft": ">=1.21.6", + "minecraft": ">=1.21.9", "java": ">=21", "fabric-api": "*" }, From c2e96b86daf4e8b58851ec004c58de0710bddea8 Mon Sep 17 00:00:00 2001 From: Magnus Date: Thu, 9 Oct 2025 16:32:08 +0000 Subject: [PATCH 3/5] fix: remove unused params --- .../java/com/bvengo/soundcontroller/config/VolumeConfig.java | 3 +-- .../com/bvengo/soundcontroller/mixin/SoundSystemMixin.java | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java b/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java index 6a89606..2bb6145 100644 --- a/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java +++ b/src/main/java/com/bvengo/soundcontroller/config/VolumeConfig.java @@ -1,7 +1,6 @@ package com.bvengo.soundcontroller.config; import com.bvengo.soundcontroller.VolumeData; -import com.bvengo.soundcontroller.mixin.SoundSystemAccessor; import net.minecraft.client.sound.SoundInstance; import net.minecraft.registry.Registries; import net.minecraft.sound.SoundEvent; @@ -54,7 +53,7 @@ public VolumeData getVolumeData(Identifier soundId) { return soundVolumes.getOrDefault(soundId, new VolumeData(soundId)); } - public float getAdjustedVolume(SoundInstance sound, SoundSystemAccessor soundSystem) { + public float getAdjustedVolume(SoundInstance sound) { VolumeData volumeData = getVolumeData(sound.getId()); return volumeData.getAdjustedVolume(sound); } diff --git a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemMixin.java b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemMixin.java index 46ed5fd..1b39a12 100644 --- a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemMixin.java +++ b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemMixin.java @@ -17,12 +17,12 @@ public class SoundSystemMixin { @WrapOperation(method = "play(Lnet/minecraft/client/sound/SoundInstance;)Lnet/minecraft/client/sound/SoundSystem$PlayResult;", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/sound/SoundSystem;getAdjustedVolume(FLnet/minecraft/sound/SoundCategory;)F")) private float modifyH(SoundSystem instance, float volume, SoundCategory category, Operation original, SoundInstance sound) { // h comes from getAdjustedVolume(float volume, Category category) - we can't inject there, because no ID is available - return SoundController.CONFIG.getAdjustedVolume(sound, (SoundSystemAccessor) this); + return SoundController.CONFIG.getAdjustedVolume(sound); } @Inject(method = "getAdjustedVolume(Lnet/minecraft/client/sound/SoundInstance;)F", at = @At("HEAD"), cancellable = true) private void modifyGetAdjustedVolume(SoundInstance sound, CallbackInfoReturnable ci) { - float volume = SoundController.CONFIG.getAdjustedVolume(sound, (SoundSystemAccessor) this); + float volume = SoundController.CONFIG.getAdjustedVolume(sound); ci.setReturnValue(volume); ci.cancel(); } From 9163628b796fdbc7e41ca3030eb73c1385bc5b64 Mon Sep 17 00:00:00 2001 From: Magnus Date: Thu, 9 Oct 2025 22:04:22 +0000 Subject: [PATCH 4/5] fix: idk what I was thinking :sob: --- src/main/java/com/bvengo/soundcontroller/Utils.java | 2 +- .../bvengo/soundcontroller/mixin/SoundSystemAccessor.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/bvengo/soundcontroller/Utils.java b/src/main/java/com/bvengo/soundcontroller/Utils.java index a47bc42..68672e1 100644 --- a/src/main/java/com/bvengo/soundcontroller/Utils.java +++ b/src/main/java/com/bvengo/soundcontroller/Utils.java @@ -14,6 +14,6 @@ public class Utils { public static void updateExistingSounds() { SoundSystemAccessor soundSystem = (SoundSystemAccessor) ((SoundManagerAccessor) MinecraftClient.getInstance().getSoundManager()).getSoundSystem(); // Trigger updates for all existing sounds. AMBIENT is an arbitrary category - as long as it isn't MASTER, all existing volumes will be updated. - soundSystem.invokeUpdateSoundVolume(PositionedSoundInstance.ambient(SoundEvents.AMBIENT_UNDERWATER_ENTER), 1.0f); + soundSystem.invokeUpdateSoundVolume(SoundCategory.AMBIENT); } } diff --git a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java index 8133fe1..b5a7662 100644 --- a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java +++ b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java @@ -2,11 +2,12 @@ import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.SoundSystem; +import net.minecraft.sound.SoundCategory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(SoundSystem.class) public interface SoundSystemAccessor { - @Invoker("setVolume") - void invokeUpdateSoundVolume(SoundInstance sound, float volume); + @Invoker("updateSoundVolume") + void invokeUpdateSoundVolume(SoundCategory category); } From 46b3076aad48c69a0f9f7ac25b7957c120972599 Mon Sep 17 00:00:00 2001 From: Magnus Date: Thu, 9 Oct 2025 22:13:20 +0000 Subject: [PATCH 5/5] lint: remove unused imports (oops :3) --- src/main/java/com/bvengo/soundcontroller/Utils.java | 5 ----- .../bvengo/soundcontroller/mixin/SoundSystemAccessor.java | 1 - 2 files changed, 6 deletions(-) diff --git a/src/main/java/com/bvengo/soundcontroller/Utils.java b/src/main/java/com/bvengo/soundcontroller/Utils.java index 68672e1..a345798 100644 --- a/src/main/java/com/bvengo/soundcontroller/Utils.java +++ b/src/main/java/com/bvengo/soundcontroller/Utils.java @@ -3,12 +3,7 @@ import com.bvengo.soundcontroller.mixin.SoundManagerAccessor; import com.bvengo.soundcontroller.mixin.SoundSystemAccessor; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.sound.AbstractSoundInstance; -import net.minecraft.client.sound.AggressiveBeeSoundInstance; -import net.minecraft.client.sound.PositionedSoundInstance; -import net.minecraft.client.sound.SoundInstance; import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; public class Utils { public static void updateExistingSounds() { diff --git a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java index b5a7662..c452b28 100644 --- a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java +++ b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java @@ -1,6 +1,5 @@ package com.bvengo.soundcontroller.mixin; -import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.SoundSystem; import net.minecraft.sound.SoundCategory; import org.spongepowered.asm.mixin.Mixin;