Corriger l’ombre sur les demi dalles-inverser [Facile]
Posté dans Modding le

Télécharger le patchPatch ombre source

Simple utilisateur :

Pour l’installer :

Allez dans votre dossier roaming, pour se faire appuyez simultanément sur la touche « Windows » puis « R » , et entrez le texte « %appdata% » avant de valider.
Dirigez-vous dans le dossier « Minecraft » puis allez dans « Bin »
Ouvrez minecraft.jar avec winzip, winrar ou autre et déposer les fichier du patch a la racine; supprimez META-INF
Et le tour est joué

Développeur :

Les sources contiennent aussi les fichier compilé si jamais vous souhaitez seulement patcher votre jeu

Le problème :

2012-04-05_00.11.24-1024x542

Ce bug ce produit quand il y a un bloc opaque au-dessu.

Étude

Le problème est dû  une mauvaise gestion de l’opacité, allons donc voir dans minecraft comment cela est géré :

« BlockStep.java » dans le package « net.minecraft.src » le bloc est crée cette façon :

    public BlockStep(int par1, boolean par2)
    {
        super(par1, 6, Material.rock);
        blockType = par2;

        if (!par2)
        {
            setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
        }
        else
        {
            opaqueCubeLookup[par1] = true;
        }

        setLightOpacity(255);
    }

Cette condition définie si c’est une demi-dalles ou un bloc

 if (!par2)
 {
    setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
 }
 else
 {
     opaqueCubeLookup[par1] = true;
 }

Nous allons l’utiliser pour supprimer l’opacité des demi-dalles.

Développement :

Pour supprimer l’opacité des demi-dalles nous allons définir une variable « opacity » que l’on mettra par défaut a 255 avant

« public BlockStep(int par1, boolean par2) »

et « setLightOpacity( ) » prendra maintenant pour valeur opacity .
Votre début de fichier devrait ressembler à ceci :

    private int opacity=255;

    public BlockStep(int par1, boolean par2)
    {
        super(par1, 6, Material.rock);
        blockType = par2;

        if (!par2)
        {
            setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
        }
        else
        {
            opaqueCubeLookup[par1] = true;
        }
        setLightOpacity(opacity);
    }

Maintenant il suffit de mettre opacity à 0 quand c’est une demi-dalle, si vous avez bien suivi vous devriez avoir ceci.

    private int opacity=255;

    public BlockStep(int par1, boolean par2)
    {
        super(par1, 6, Material.rock);
        blockType = par2;

        if (!par2)
        {
            setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
            opacity=0;
        }
        else
        {
            opaqueCubeLookup[par1] = true;
        }
        setLightOpacity(opacity);
    }

Et voilà c’est tout 😉 vous pouvez reproduire cela sur le serveur bien que je pense que ça ne sert pas vu que la lumière est gérée par le client

Tags