Aide pour un Block qui supprime les objets.

MajinGoku

Aventurier
21 Mars 2011
42
0
1
Voili voilou, je suis face à un petit problème et je cherche depuis quelque jours. Mon but est lors du clique sur le bloc, l'objet dans la main disparait (un seul à la fois si il y a un stack). J'avais alors penser à ça (un peu fouiner partout :hap:) :
Code:
public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)
{
    ItemStack.stackSize--;
    return ItemStack;
}

Mais ça marche pas :(

Merci de voter aide :ok:
 

jimeowan

Aventurier
5 Juillet 2011
37
0
1
De mémoire, tu peux faire quelque chose du genre :

Code:
entityPlayer.inventory.setItemStack(null)

(pas sûr de la fonction)

Dans tous les cas ce que tu fais n'est pas logique au sens du Java, car en faisant "ItemStack.stackSize--" tu essaie de modifier la classe ItemStack et non pas un objet de cette classe! Tu devrais réviser un peu les notions de classes et d'instances ^^
 

MajinGoku

Aventurier
21 Mars 2011
42
0
1
Il ne se passe rien :S
Voici le code que j'ai :
Code:
package net.minecraft.src;
import java.util.Random;
public class BlockBin extends Block
{
public BlockBin(int i, int j)
{
super(i, j, Material.rock);
}
public void onBlockClicked(World world, int i, int j, int k, EntityPlayer entityplayer)
{
entityplayer.inventory.setItemStack(null);
}
public int idDropped(int i, Random random)
{
return mod_Bin.Bin.blockID;
}
}
 

jimeowan

Aventurier
5 Juillet 2011
37
0
1
La syntaxe me semble correcte, si ça fait rien c'est que c'est pas la bonne fonction. Essaie de fouiller un peu dans la classe InventoryPlayer pour chercher celle ce que tu veux ! Faut dire que pour modder sur Minecraft, au début 90% du temps est passé à fouiller, vu qu'y'a pas de documentation ni même de commentaires... Mais on fait avec =P
 

jimeowan

Aventurier
5 Juillet 2011
37
0
1
Ok je jetterai un coup d'oeil sur ton problème la prochaine fois que je travaillerai sur mon mod, j'te tiens au courant.
 

kifkif43

Bucheron
29 Avril 2011
173
2
13
A la place de "entityplayer.inventory.setItemStack(null);", il faut mettre :
entityplayer.inventory.setCurrentItem(null)
Je ne suis pas sure de setCurrentItem comme orthographe, aissaye de retrouver la fonction dans InventoryPlayer.java
 

MajinGoku

Aventurier
21 Mars 2011
42
0
1
Ouais c'était la bonne orthagraphe sauf qu'il faut un int et un booléan. J'ai mit 1 et true pour voir. donc aucune erreur mais bon, il me faudrait, quelque chose pour supprimer l'item quoi. Donc j'ai testé -1 x). Sans succès.
 

MajinGoku

Aventurier
21 Mars 2011
42
0
1
Cela ne marche aps non plus :/. J'vous envoie tous les codes :
Code:
package net.minecraft.src;
import java.util.Random;
public class BlockBin extends Block
{
public BlockBin(int i, int j)
{
super(i, j, Material.rock);
}
public void onBlockClicked(World world, int i, int j, int k, EntityPlayer entityplayer)
{
entityplayer.inventory.setCurrentItem(0,true);
}
public int idDropped(int i, Random random)
{
return mod_Bin.Bin.blockID;
}
}

Code:
package net.minecraft.src;
public class mod_Bin extends BaseMod
{
    public mod_Bin()
    {
        ModLoader.AddName(Bin, "Bin");
        ModLoader.RegisterBlock(Bin);
        ModLoader.AddRecipe(new ItemStack(Bin, 1), new Object[]
    {"# #", "#X#", "###", Character.valueOf('#'), Block.stone, Character.valueOf('X'), Block.cactus});
        
    }
     
    public static final Block Bin = (new BlockBin(201,ModLoader.addOverride("/terrain.png", "/mod/Beton.png"))).setHardness(0.5F).setResistance(10F).setStepSound(Block.soundStoneFootstep).setBlockName("Bin");
    
    public String Version()   
    {
        return "1.7.2;
    }
    
}

Merci :hap: