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..a345798 100644 --- a/src/main/java/com/bvengo/soundcontroller/Utils.java +++ b/src/main/java/com/bvengo/soundcontroller/Utils.java @@ -9,6 +9,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(SoundCategory.AMBIENT, 1.0f); + soundSystem.invokeUpdateSoundVolume(SoundCategory.AMBIENT); } } 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..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,9 +53,9 @@ 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, 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..c452b28 100644 --- a/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java +++ b/src/main/java/com/bvengo/soundcontroller/mixin/SoundSystemAccessor.java @@ -8,8 +8,5 @@ @Mixin(SoundSystem.class) public interface SoundSystemAccessor { @Invoker("updateSoundVolume") - void invokeUpdateSoundVolume(SoundCategory category, float volume); - - @Invoker("method_72233") - float invokeGetSoundVolume(SoundCategory category); + void invokeUpdateSoundVolume(SoundCategory category); } 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(); } 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": "*" },