forked from BVengo/sound-controller
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSubtitleOverlayMixin.java
More file actions
40 lines (36 loc) · 1.91 KB
/
SubtitleOverlayMixin.java
File metadata and controls
40 lines (36 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.bvengo.soundcontroller.mixin;
import com.bvengo.soundcontroller.SoundController;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.minecraft.client.OptionInstance;
import net.minecraft.client.gui.components.SubtitleOverlay;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.client.sounds.WeighedSoundEvents;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(SubtitleOverlay.class)
public class SubtitleOverlayMixin {
@WrapOperation(method = "onPlaySound", at=@At(value = "INVOKE", target= "Lnet/minecraft/client/sounds/WeighedSoundEvents;getSubtitle()Lnet/minecraft/network/chat/Component;"))
private Component replaceSubtitleText(WeighedSoundEvents instance, Operation<Component> original, SoundInstance sound) {
return SoundController.CONFIG.areSubtitlesEnabled() ? Component.translationArg(sound.getIdentifier()) : original.call(instance);
}
@WrapOperation(
method = "extractRenderState",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/OptionInstance;get()Ljava/lang/Object;",
ordinal = 0) // Targets the first getShowSubtitles().getValue() call
)
private Object modifyFirstShowSubtitlesCheck(OptionInstance instance, Operation<Object> original) {
return (Boolean)(original.call(instance)) || SoundController.CONFIG.areSubtitlesEnabled();
}
@WrapOperation(
method = "extractRenderState",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/OptionInstance;get()Ljava/lang/Object;",
ordinal = 1) // Targets the first getShowSubtitles().getValue() call
)
private Object modifySecondShowSubtitlesCheck(OptionInstance instance, Operation<Object> original) {
return (Boolean)(original.call(instance)) || SoundController.CONFIG.areSubtitlesEnabled();
}
}