5 votes

Comment faire pour ne plus voir la cape de migration sur les autres joueurs ?

Contexte

La cape de migration a été distribuée à tous les joueurs éligibles qui ont acheté Minecraft avant le 1er décembre 2020 et qui ont migré leur compte Mojang ou leur ancien compte vers un compte Microsoft. Minecraft Migration cape

Désactiver la cape de l'immigration

Je veux arrêter de voir la cape de migration sur les autres joueurs.

Vous pouvez désactiver votre propre cape grâce à ce paramètre dans la rubrique Options > Skin Customization : Disable your cape via Options

...mais il n'y a pas d'option pour arrêter de voir la cape de migration allumée autres les joueurs.

Quelqu'un a-t-il une solution à ce problème ?

L'édition de packs de textures et/ou les mods sont deux solutions acceptables, à condition qu'ils remettent les élytres dans leur design d'origine. Si une solution nécessite la désactivation de la capacité à voir les tous capes, c'est indésirable mais acceptable.

Merci de votre attention !

2voto

ginkgo Points 2439

Les capes peuvent être supprimées en modifiant les shaders de base du jeu via une commande pack de ressources (possible à partir de la version 1.17).


En rendertype_entity_solid.fsh contrôle le rendu de la cape. La cape peut être rendue entièrement transparente en insérant ce bout de code :

if (hasCape){
    discard;
}

Comme cela :

#version 150

#moj_import <fog.glsl>

uniform sampler2D Sampler0;

uniform vec4 ColorModulator;
uniform float FogStart;
uniform float FogEnd;
uniform vec4 FogColor;

in float vertexDistance;
in vec4 vertexColor;
in vec4 lightMapColor;
in vec4 overlayColor;
in vec2 texCoord0;
in vec4 normal;

out vec4 fragColor;

void main() {

    vec4 color = texture(Sampler0, texCoord0) * vertexColor * ColorModulator;
    bool hasCape = textureSize(Sampler0, 0) == ivec2(64,32);
    if (hasCape){
        discard;
    }
    color.rgb = mix(overlayColor.rgb, color.rgb, overlayColor.a);
    color *= lightMapColor;
    fragColor = linear_fog(color, vertexDistance, FogStart, FogEnd, FogColor);
}

En rendertype_armor_cutout_no_cull.vsh Le shader contrôle le rendu de l'armure, y compris l'élytre. La texture de la cape peut être retirée de l'élytre en insérant le code suivant par McTsts :

    // removes cape elytras
    vec2 texSize = textureSize(Sampler0,0);
    if( texSize.x == 64 && texSize.y == 32 && // check if size matches a cape
            texture(Sampler0, vec2(0.0, 1.0/32.0)).a == 1.0 && texture(Sampler0, vec2(12.0/64.0, 16.0/32.0)).a == 1.0 && // check if skin transparent pixels have color
            (   // support both types of cape texture
                (texture(Sampler0, vec2(0.0, 18.0/32.0)) == vec4(1.0) && texture(Sampler0, vec2(0.99, 0.99)) == vec4(1.0) && texture(Sampler0, vec2(0.99, 0.0)) == vec4(1.0)) // for capes filled with white, check for white pixels
                || (texture(Sampler0, vec2(25.0/64.0, 25.0/32.0)).a == 0.0 || texture(Sampler0, vec2(30.0/64.0, 10.0/32.0)).a == 0.0 || texture(Sampler0, vec2(9.0/64.0, 25.0/32.0)).a == 0.0)  // otherwise check of transparent pixels
            )
    ) gl_Position = vec4(0.0);

Comme cela :

#version 150

#moj_import <light.glsl>

in vec3 Position;
in vec4 Color;
in vec2 UV0;
in vec2 UV1;
in ivec2 UV2;
in vec3 Normal;

uniform sampler2D Sampler0;
uniform sampler2D Sampler2;

uniform mat4 ModelViewMat;
uniform mat4 ProjMat;

uniform vec3 Light0_Direction;
uniform vec3 Light1_Direction;

out float vertexDistance;
out vec4 vertexColor;
out vec2 texCoord0;
out vec2 texCoord1;
out vec4 normal;

void main() {
    gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);

    vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz);
    vertexColor = minecraft_mix_light(Light0_Direction, Light1_Direction, Normal, Color) * texelFetch(Sampler2, UV2 / 16, 0);
    texCoord0 = UV0;
    texCoord1 = UV1;
    normal = ProjMat * ModelViewMat * vec4(Normal, 0.0);

    // removes cape elytras
    vec2 texSize = textureSize(Sampler0,0);
    if( texSize.x == 64 && texSize.y == 32 && // check if size matches a cape
            texture(Sampler0, vec2(0.0, 1.0/32.0)).a == 1.0 && texture(Sampler0, vec2(12.0/64.0, 16.0/32.0)).a == 1.0 && // check if skin transparent pixels have color
            (   // support both types of cape texture
                (texture(Sampler0, vec2(0.0, 18.0/32.0)) == vec4(1.0) && texture(Sampler0, vec2(0.99, 0.99)) == vec4(1.0) && texture(Sampler0, vec2(0.99, 0.0)) == vec4(1.0)) // for capes filled with white, check for white pixels
                || (texture(Sampler0, vec2(25.0/64.0, 25.0/32.0)).a == 0.0 || texture(Sampler0, vec2(30.0/64.0, 10.0/32.0)).a == 0.0 || texture(Sampler0, vec2(9.0/64.0, 25.0/32.0)).a == 0.0)  // otherwise check of transparent pixels
            )
    ) gl_Position = vec4(0.0);
}

Téléchargement du pack de ressources

1voto

ultratf Points 79

Malheureusement, cette ne semble pas possible dès à présent. Après quelques recherches, je n'ai trouvé aucun mod pour le faire et, comme les capes des migrateurs sont données officiellement par Mojang (et qu'elles s'affichent donc sur n'importe quel client), je doute fortement qu'il y en ait toujours de manière officielle non plus. Cependant, il est assez facile de créer un mod pour faire cela, il est donc possible que quelqu'un finisse par en faire un qui fasse ce que vous voulez.

Je m'excuse si cela ne répond pas vraiment à votre question, mais il n'y a pas grand-chose d'autre à dire.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X