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..1d02b2974 --- /dev/null +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVillagerClothingFeatureRenderer.java @@ -0,0 +1,44 @@ +/* + * 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 de.florianmichael.viafabricplus.settings.impl.VisualSettings; +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 (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", 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