Box Key



  • Bonjour aujourd'hui j'ai éssayé de faire une  box que quand tu fais un clique droit avec un item sa va te donné une récompense,tu en a plusieurs  récompenses et certaine ont plus de chance de l'avoir que d'autre

    voila ce que j'ai commencé:
    public class BoxKey extends Block
    {

    protected BoxKey() {
    super(Material.rock);
    this.setBlockTextureName(enderdeath.MODID + "BoxKey");
    this.setBlockName("BoxKey");
    this.setCreativeTab(enderdeath.enderdeathTabLegendary);
    }
    public void RightClickBoxCley(ItemStack itemstack,EntityPlayer player,World world)
    {
    if(player.isUsingItem())
    {

    }
    }
    }



  • Et…quelle est la question ?!?!?
    "RightClickBoxCley" : c'est quoi cette fonction ? Il faut mettre la fonction onBlockActivated (à copier à partir de la classe Block).



  • ok je vais éssayé x) et la question c'est comment faire pour que quand on click avec un item spéciale sa nous donnent certaines récompenses



  • Tu fais un tableau qui contient les différents items et quand on click sur le block, tu choisis un item au hasard avec un random.
    Exemple, dans onBlockActivated :

    
    Random rand = new Random();
    Item tonItem = tonTableau[rand.nextInt(tonTableau.lenght)];
    
    

    Et pour vérifier l'item du joueur :

    if(player.getHeldItem() != null && player.getHeldItem().getItem() == itemATester
    


  • Excusez-moi je m'était mal exprimé ce que je voulais faire c'était une sorte de boite que quand tu fait clique droit avec une clé sa te fait un item aléatoire mais que c'est item soient défini donc bien un random



  • C'est exactement ce qu'il t'as fait ^^



  • Ha OK xD



  • Je ne comprend pas comment faire j'ai chercher et je n'arrive toujours pas

    (Et dsl du double poste) et comment faire pour définir les items (faire le tableau)



  • Attention au double post. Explique ce que tu ne comprends pas 🙂



  • Je ne comprend pas comment faire j'ai chercher et je n'arrive toujours pas

    (Et dsl du double poste) et comment faire pour définir les items (faire le tableau)


  • Rédacteurs

    
    public class TonBloc extends Block{
    
    private ItemStack[] prices = new ItemStack[]{new ItemStack(Items.apple), new ItemStack(Items.stick)};
    
    public TonBloc() {
    super(Material.rock);
    }
    
    @Override
    public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) {
    if(player.getHeldItem() != null && player.getHeldItem().getItem() == TaClé) {
    Random rand = new Random();
    ItemStack price = prices[rand.nextInt(prices.length)];
    player.inventory.addItemStackToInventory(price);
    }
    }
    }
    
    


  • Le BlockPos et le IBlockState est en 1.8


  • Administrateurs

    En même temps si tu ne mets pas la balise de version dans le titre comment veux-tu qu'on sache en quelle version tu codes ? On est sensé le deviner ?



  • Ha oui excusez moi c'est en 17.10 ^^


  • Rédacteurs

    Bah après c'est pas compliqué tu fait un CTRL + CLIC sur Block, ça t'ouvre la classe Block et tu cherche la fonction onBlockActivated, tu copy la fonction avec ces arguments et tu met le code que je t'ai donné à l'intérieur



  • public boolean onBlockActivated(World p_149727_1_, int p_149727_2_, int p_149727_3_, int p_149727_4_, EntityPlayer p_149727_5_, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
       {
    if(p_149727_5_.getHeldItem() != null && p_149727_5_.getHeldItem().getItem() == enderdeath.Rubis) {
                    Random rand = new Random();
                    ItemStack price = prices[rand.nextInt(prices.length)];
                    p_149727_5_.inventory.addItemStackToInventory(price);
        }
           return false;
       }

    j'ai mi sa il me fait une erreur à price ^^



  • Quoi comme erreur ? T'a bien importé ItemStack ?
    Et je te conseille de mettre return true



  • oui je l'ai bien import et sa fait une error a price il veut une constant


  • Rédacteurs

    Met ta classe entière et renomme-moi ces arguments je t'en prie

    EDIT : utilise le ALT + MAJ + R pour renommer tes arguments
    EDIT 2 : Et mes des balises [java]


  • Administrateurs

    Peut-être car il te manque cette ligne ?
    private ItemStack[] prices = new ItemStack[]{new ItemStack(Items.apple), new ItemStack(Items.stick)};


Log in to reply