[Aide]Appliquer un effet a un bloc selectionné

ResNox

P'tit moddeur
27 Décembre 2011
15
0
1
28
La ou je suis! x)
Bonjour j'ai un problème qui me chagrine...
J'ai créer un bloc mais lorsque je l'active tout les bloc de la meme ID font l'action...
Il y a t-il une commande ou autre pour pouvoir appliquer l'action au bloc séléctionné?
Voici mon code ou le problème persiste:
Code:
public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)
    {
        int l = world.getBlockMetadata(i, j, k);
        {
            if(world.multiplayerWorld)
            {
                return true;
            }
            ItemStack currentItemStack = entityplayer.inventory.getCurrentItem();
            if(currentItemStack != null)
            {
                if(currentItemStack.itemID == mod_coloriz.pinceau.shiftedIndex)
                {
                    color = GuiPalette.colorT;
                    //appliquer l'action au dessus qu'au bloc selectionné
                }
            }
            return true;
        }
    }
PS:J'ai chercher dans les bloc mais je ne comprend pas quelle partie dois-je prendre pour réglé ce problème.
 
Les classes étendant Block ne sont instanciés qu'une seule fois (ex : Block.wood est l'instance du block de planches) et sont une sorte de model. Par conséquent votre champs "color" est commun à tous les blocks de ce type. Pour arriver à vos fins, il vous faut soit utiliser la metadata, un entier codé sur 4 bits donc avec [0;15] comme valeurs possibles dans lequel vous pouvez stocker la couleur actuelle du block s'il existe 16 types de couleur ou moins. Sinon, vous pouvez utiliser les Tile Entities, pour comprendre leur fonctionnement analysez TileEntitySign.java et les endroits où cette classe est utilisée.
 
public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)
{
int l = world.getBlockMetadata(i, j, k);
{
if(world.multiplayerWorld)
{
return true;
}
ItemStack currentItemStack = entityplayer.inventory.getCurrentItem();
if(currentItemStack != null)
{
if(currentItemStack.itemID == mod_coloriz.pinceau.shiftedIndex)
{
color = GuiPalette.colorT;
//appliquer l'action au dessus qu'au bloc selectionné
}
}
return true;
}
}

Les paranthese ne serve a rien ! pas de condition. Donc sa retourne que true et ton int l n'est pas utilisé.
 
public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)
{
int l = world.getBlockMetadata(i, j, k);
{
if(world.multiplayerWorld)
{
return true;
}
ItemStack currentItemStack = entityplayer.inventory.getCurrentItem();
if(currentItemStack != null)
{
if(currentItemStack.itemID == mod_coloriz.pinceau.shiftedIndex)
{
color = GuiPalette.colorT;
//appliquer l'action au dessus qu'au bloc selectionné
}
}
return true;
}
}

Les paranthese ne serve a rien ! pas de condition. Donc sa retourne que true et ton int l n'est pas utilisé.
Les "parenthèses" dont tu parles étant premièrement des accolades servent peut être a rien ici mais n'impliquent en aucun cas une condition et n’altèrent pas le fonctionnement du code. La variable l n'est pas utilisée mais ce n'est pas non plus un problème. Le problème, je l'ai moi même démontré sur mon premier post sur ce sujet :)