OnCreated non appelé



  • Salut !

    public class ItemSatelliteIdentifier extends Item implements IMedia {
    
    public void onCreated(ItemStack stack, World world, EntityPlayer player) {
    System.out.println("onCreated");
       stack.stackTagCompound = new NBTTagCompound();
       stack.stackTagCompound.setBoolean("hasSatellite", false);
       stack.stackTagCompound.setBoolean("hasLabel", false);
    }
    
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void addInformation(ItemStack stack, EntityPlayer player, List info, boolean par4) {
       if (stack.stackTagCompound != null) {
        if (stack.stackTagCompound.getBoolean("hasLabel")) {
        info.add(EnumChatFormatting.WHITE + stack.stackTagCompound.getString("label"));
        }
        if (stack.stackTagCompound.getBoolean("hasSatellite")) {
        info.add(EnumChatFormatting.DARK_GRAY + stack.stackTagCompound.getString("satellite"));
        }
       }
    }
    
    @Override
    public String getLabel(ItemStack stack) {
    if (stack.stackTagCompound != null) if (stack.stackTagCompound.getBoolean("hasLabel")) return stack.stackTagCompound.getString("label");
    return null;
    }
    
    @Override
    public boolean setLabel(ItemStack stack, String label) {
    if (stack.stackTagCompound != null && label != null) {
    if (label == "") { stack.stackTagCompound.setBoolean("hasLabel", false); return true; }
    if (!stack.stackTagCompound.getBoolean("hasLabel")) stack.stackTagCompound.setBoolean("hasLabel", true);
    stack.stackTagCompound.setString("label", label); return true;
    }
    return false;
    }
    
    @Override
    public String getAudioTitle(ItemStack stack) {
    return null;
    }
    
    @Override
    public String getAudioRecordName(ItemStack stack) {
    return null;
    }
    
    @Override
    public IMount createDataMount(ItemStack stack, World world) {
    return null;
    }
    
    }
    

    Cependant, lorsque je sors mon item du créatif, onCreated n'est pas appelé (inutile d'expliquer les crashs que ça provoque).

    Comment puis-je faire que ça marche, qu'ai-je fait de mal ?

    Merci d'avance !


  • Administrateurs

    onCreated est appelé uniquement lors du craft de l'item, c'est voulu.
    Ce qui faut faire, c'est regardé si stack.getTagCompound() est null, si non tu fais ton action, si oui tu mets la valeur par défaut.



  • Ok c'est bon, merci. J'ai mis un check de stack.stackTagCompound dans onUpdate.