From e676086be96906dd21a395f30381e5424f039330 Mon Sep 17 00:00:00 2001 From: lowercasebtw Date: Fri, 6 Dec 2024 19:11:42 -0500 Subject: [PATCH 1/4] Add toggle for bubble pop sound/icons --- .../minecraft/screen/hud/MixinInGameHud.java | 19 +++++++++++++++++++ .../settings/impl/VisualSettings.java | 4 ++++ .../assets/viafabricplus/lang/en_us.json | 2 ++ 3 files changed, 25 insertions(+) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java index 49ce6ddde..21bbcbbd3 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java @@ -20,12 +20,17 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen.hud; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import com.llamalad7.mixinextras.sugar.Local; import de.florianmichael.viafabricplus.settings.impl.VisualSettings; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.option.Perspective; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -37,12 +42,26 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.invoke.arg.Args; +import java.util.function.Function; + @Mixin(InGameHud.class) public abstract class MixinInGameHud { @Unique private static final int viaFabricPlus$ARMOR_ICON_WIDTH = 8; + @Inject(method = "playBurstSound", at = @At("HEAD"), cancellable = true) + private void disableBubblePopSound(int bubble, PlayerEntity player, int burstBubbles, CallbackInfo ci) { + if (VisualSettings.global().removeBubblePopSound.isEnabled()) { + ci.cancel(); + } + } + + @WrapWithCondition(method = "renderAirBubbles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V", ordinal = 2)) + private boolean disableEmptyBubbles(DrawContext instance, Function renderLayers, Identifier sprite, int x, int y, int width, int height) { + return !VisualSettings.global().hideEmptyBubbleIcons.isEnabled(); + } + @Redirect(method = "renderCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/option/Perspective;isFirstPerson()Z")) private boolean alwaysRenderCrosshair(Perspective instance) { if (VisualSettings.global().alwaysRenderCrosshair.isEnabled()) { diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java index 849708e4d..48afc9100 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java @@ -54,6 +54,10 @@ public void onValueChanged() { }; public final BooleanSetting hideModernJigsawScreenFeatures = new BooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_modern_jigsaw_screen_features"), true); + // 1.21.2 -> 1.21.1 + public final VersionedBooleanSetting removeBubblePopSound = new VersionedBooleanSetting(this, Text.translatable("visual_settings.viafabricplus.remove_bubble_pop_sound"), VersionRange.andOlder(ProtocolVersion.v1_21)); + public final VersionedBooleanSetting hideEmptyBubbleIcons = new VersionedBooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_empty_bubble_icons"), VersionRange.andOlder(ProtocolVersion.v1_21)); + // 1.21 -> 1.20.5 public final VersionedBooleanSetting hideDownloadTerrainScreenTransitionEffects = new VersionedBooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_download_terrain_screen_transition_effects"), VersionRange.andOlder(ProtocolVersion.v1_20_5)); diff --git a/src/main/resources/assets/viafabricplus/lang/en_us.json b/src/main/resources/assets/viafabricplus/lang/en_us.json index 6baea6198..a501739e1 100644 --- a/src/main/resources/assets/viafabricplus/lang/en_us.json +++ b/src/main/resources/assets/viafabricplus/lang/en_us.json @@ -86,6 +86,8 @@ "visual_settings.viafabricplus.change_game_menu_screen_layout": "Change game menu screen layout", "visual_settings.viafabricplus.disable_secure_chat_warning": "Disable Secure Chat warning", "visual_settings.viafabricplus.hide_signature_indicator": "Hide signature indicator", + "visual_settings.viafabricplus.remove_bubble_pop_sound": "Remove bubble pop sound", + "visual_settings.viafabricplus.hide_empty_bubble_icons": "Hide empty bubble icons", "visual_settings.viafabricplus.hide_download_terrain_screen_transition_effects": "Hide download terrain screen transition effects", "visual_settings.viafabricplus.replace_petrified_oak_slab": "Replace petrified oak slab texture with the 'unknown' texture", "visual_settings.viafabricplus.always_render_crosshair": "Always render crosshair", From 7bae13b648503f48a5f7d13c710984052f0d15d3 Mon Sep 17 00:00:00 2001 From: lowercasebtw Date: Fri, 6 Dec 2024 19:24:43 -0500 Subject: [PATCH 2/4] Don't apply these settings by default, instead use boolean setting --- .../mixin/fixes/minecraft/screen/hud/MixinInGameHud.java | 4 ++-- .../viafabricplus/settings/impl/VisualSettings.java | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java index 21bbcbbd3..93a971209 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java @@ -52,14 +52,14 @@ public abstract class MixinInGameHud { @Inject(method = "playBurstSound", at = @At("HEAD"), cancellable = true) private void disableBubblePopSound(int bubble, PlayerEntity player, int burstBubbles, CallbackInfo ci) { - if (VisualSettings.global().removeBubblePopSound.isEnabled()) { + if (VisualSettings.global().removeBubblePopSound.getValue()) { ci.cancel(); } } @WrapWithCondition(method = "renderAirBubbles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V", ordinal = 2)) private boolean disableEmptyBubbles(DrawContext instance, Function renderLayers, Identifier sprite, int x, int y, int width, int height) { - return !VisualSettings.global().hideEmptyBubbleIcons.isEnabled(); + return !VisualSettings.global().hideEmptyBubbleIcons.getValue(); } @Redirect(method = "renderCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/option/Perspective;isFirstPerson()Z")) diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java index 48afc9100..5230a2ab3 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java @@ -40,7 +40,6 @@ public class VisualSettings extends SettingGroup { Text.translatable("base.viafabricplus.off") ); public final BooleanSetting filterNonExistingGlyphs = new BooleanSetting(this, Text.translatable("visual_settings.viafabricplus.filter_non_existing_glyphs"), true) { - @Override public void onValueChanged() { final MinecraftClient client = MinecraftClient.getInstance(); @@ -54,9 +53,9 @@ public void onValueChanged() { }; public final BooleanSetting hideModernJigsawScreenFeatures = new BooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_modern_jigsaw_screen_features"), true); - // 1.21.2 -> 1.21.1 - public final VersionedBooleanSetting removeBubblePopSound = new VersionedBooleanSetting(this, Text.translatable("visual_settings.viafabricplus.remove_bubble_pop_sound"), VersionRange.andOlder(ProtocolVersion.v1_21)); - public final VersionedBooleanSetting hideEmptyBubbleIcons = new VersionedBooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_empty_bubble_icons"), VersionRange.andOlder(ProtocolVersion.v1_21)); + public final BooleanSetting removeBubblePopSound = new BooleanSetting(this, Text.translatable("visual_settings.viafabricplus.remove_bubble_pop_sound"), false); + + public final BooleanSetting hideEmptyBubbleIcons = new BooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_empty_bubble_icons"), false); // 1.21 -> 1.20.5 public final VersionedBooleanSetting hideDownloadTerrainScreenTransitionEffects = new VersionedBooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_download_terrain_screen_transition_effects"), VersionRange.andOlder(ProtocolVersion.v1_20_5)); From 6b8ee7436b3e2cc8c60f6e450878de5be636f773 Mon Sep 17 00:00:00 2001 From: lowercasebtw Date: Fri, 6 Dec 2024 20:36:21 -0500 Subject: [PATCH 3/4] Revert how villagers looked prior to 1.14 Undo weird formatting in viafabricplus.mixins.json Try to fix it again Re-add mixin for this PR --- .../MixinVillagerClothingFeatureRenderer.java | 43 +++++++++++++++++++ src/main/resources/viafabricplus.mixins.json | 3 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java new file mode 100644 index 000000000..ba7a3a68e --- /dev/null +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java @@ -0,0 +1,43 @@ +/* + * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus + * Copyright (C) 2021-2024 FlorianMichael/EnZaXD and RK_01/RaphiMC + * Copyright (C) 2023-2024 contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; + +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; +import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator; +import net.minecraft.client.render.entity.feature.VillagerClothingFeatureRenderer; +import net.minecraft.village.VillagerData; +import net.minecraft.village.VillagerProfession; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(VillagerClothingFeatureRenderer.class) +public abstract class MixinVillagerClothingFeatureRenderer { + + @Redirect(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/village/VillagerData;getProfession()Lnet/minecraft/village/VillagerProfession;")) + private VillagerProfession revertVillagerVisual(VillagerData instance) { + if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_13_2)) { + return VillagerProfession.NONE; + } else { + return instance.getProfession(); + } + } + +} diff --git a/src/main/resources/viafabricplus.mixins.json b/src/main/resources/viafabricplus.mixins.json index 22ebeac84..064beef74 100644 --- a/src/main/resources/viafabricplus.mixins.json +++ b/src/main/resources/viafabricplus.mixins.json @@ -122,6 +122,7 @@ "fixes.minecraft.entity.MixinPlayerEntityRenderer", "fixes.minecraft.entity.MixinSkeletonHorseEntity", "fixes.minecraft.entity.MixinSquidEntity", + "fixes.minecraft.entity.MixinVillagerClothingFeatureRenderer", "fixes.minecraft.entity.MixinWolfEntity", "fixes.minecraft.entity.MixinZombieVillagerEntity", "fixes.minecraft.item.MixinAxeItem", @@ -228,4 +229,4 @@ "overwrites": { "requireAnnotations": true } -} +} \ No newline at end of file From c152d7b2bb4f69ba9b6b69da8f4494e380e33e18 Mon Sep 17 00:00:00 2001 From: lowercasebtw Date: Sat, 7 Dec 2024 16:37:07 -0500 Subject: [PATCH 4/4] Add toggle/setting for reverting villager skins to how they looked prior to 1.14 --- .../minecraft/entity/MixinVillagerClothingFeatureRenderer.java | 3 ++- .../viafabricplus/settings/impl/VisualSettings.java | 2 ++ src/main/resources/assets/viafabricplus/lang/en_us.json | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java index ba7a3a68e..1d02b2974 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java @@ -21,6 +21,7 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator; +import de.florianmichael.viafabricplus.settings.impl.VisualSettings; import net.minecraft.client.render.entity.feature.VillagerClothingFeatureRenderer; import net.minecraft.village.VillagerData; import net.minecraft.village.VillagerProfession; @@ -33,7 +34,7 @@ public abstract class MixinVillagerClothingFeatureRenderer { @Redirect(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/village/VillagerData;getProfession()Lnet/minecraft/village/VillagerProfession;")) private VillagerProfession revertVillagerVisual(VillagerData instance) { - if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_13_2)) { + if (VisualSettings.global().revertVillagerSkins.getValue()) { return VillagerProfession.NONE; } else { return instance.getProfession(); diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java index 5230a2ab3..6794e2163 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java @@ -57,6 +57,8 @@ public void onValueChanged() { public final BooleanSetting hideEmptyBubbleIcons = new BooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_empty_bubble_icons"), false); + public final BooleanSetting revertVillagerSkins = new BooleanSetting(this, Text.translatable("visual_settings.viafabricplus.revert_villager_skins"), false); + // 1.21 -> 1.20.5 public final VersionedBooleanSetting hideDownloadTerrainScreenTransitionEffects = new VersionedBooleanSetting(this, Text.translatable("visual_settings.viafabricplus.hide_download_terrain_screen_transition_effects"), VersionRange.andOlder(ProtocolVersion.v1_20_5)); diff --git a/src/main/resources/assets/viafabricplus/lang/en_us.json b/src/main/resources/assets/viafabricplus/lang/en_us.json index a501739e1..6615ded83 100644 --- a/src/main/resources/assets/viafabricplus/lang/en_us.json +++ b/src/main/resources/assets/viafabricplus/lang/en_us.json @@ -88,6 +88,7 @@ "visual_settings.viafabricplus.hide_signature_indicator": "Hide signature indicator", "visual_settings.viafabricplus.remove_bubble_pop_sound": "Remove bubble pop sound", "visual_settings.viafabricplus.hide_empty_bubble_icons": "Hide empty bubble icons", + "visual_settings.viafabricplus.revert_villager_skins": "Revert villager skins", "visual_settings.viafabricplus.hide_download_terrain_screen_transition_effects": "Hide download terrain screen transition effects", "visual_settings.viafabricplus.replace_petrified_oak_slab": "Replace petrified oak slab texture with the 'unknown' texture", "visual_settings.viafabricplus.always_render_crosshair": "Always render crosshair",