Mod Java 1.7.10 Forge RandomItem Rightclick

  • Auteur de la discussion Auteur de la discussion Retorks
  • Date de début Date de début

Retorks

Bucheron
22 Mai 2018
16
0
12
27
Bonjour,



J'aimerais que lorsque l'on clique droit avec un item, il nous give un item dans notre inventaire au hasard parmi une liste pré-définis.
Avec un pourcentage de chance si possible
Pour le moment j'ai un script fonctionnel mais uniquement avec les items de bases de minecraft (non moddé), et il n'y a pas de pourcentage de chance

(Je débute vraiment dans le java et je ne sais pas aller plus loin)


Voici le code

Code:
package com.mod.exodia.items;

import java.util.Random;
import java.util.Set;

import com.google.common.collect.Sets;
import com.mod.exodia.init.ItemMod;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;
import net.minecraft.world.World;

public class ItemRandom extends Item {



    Item[] items = new Item[] { Items.apple, Items.iron_ingot, Items.bread};

    public ItemStack onItemRightClick(ItemStack itemstack,World world, EntityPlayer player)
    {
    int random = world.rand.nextInt(items.length);
    player.inventory.addItemStackToInventory(new ItemStack(items[random]));
    return itemstack;
    }
   
}

Et le code dans ItemMod.java (Pas très utile)

Code:
        randomItem = new ItemRandom().setUnlocalizedName("randomItem").setCreativeTab(CreativeTabs.tabDecorations).setTextureName(Reference.MOD_ID + ":randomItem");

Les items que j'aimerais mettre par exemple, en voici 2
"gemmeCitrine"
"gemmeAdamantine"
Ils sont définis dans le fichier ItemMod comme le "randomItem"


Merci d'avance pour votre aide
 
C'est ce que je pensais, je l'ai essayé, et non cela ne fonctionne pas
Quand je met 2 non moddé, et 1 moddé, je reçois les non moddé et dès que que je suis censé recevoir le moddé, il n'y a rien qui se passe


Edit+ : J'ai mis le code avec les items moddé, et quand je fais clique droit, rien ne se passe

1527017518-img.png
 
Surement car ton ItemRandom est initialisé avant les gemmeCitrine et gemmeAdamantine donc du-coup la liste items se remplit avec des valeurs null.

Il faut inverser l'ordre d'initialisation, où déclarer tes items comme des constantes, cela t'évitera ce genre de problème de valeur null.
 
  • J'aime
Reactions: Retorks
Oh super ça marche !
Comment j'ai pu me faire avoir avec ça...
Sa viendra avec l'habitude, le java je le découvre là

Et sinon, pour le pourcentage de chance de drop comment faire?
J'aimerais par exemple que le mithril ai 20% de chance, que les 2 autres aient 40% chacun


Merci en tout cas
 
Là le plus simple est d'abandonner la liste et faire des if ou un switch.
Car si tu veux rester une liste, il faut mettre en place un système de poids dans le random (plus compliqué à mettre en place).
 
Un exemple :
Code:
ItemStack stack = null;
switch(world.rand.nextInt(6)) // un nombre entre 0 et 5 inclus
{
    case 0:
        stack = new ItemStack(Blocks.dirt); // va être pris seulement si la valeur est 0, donc 1 chance sur 6.
        break;
    case 2:
        stack = new ItemStack(Blocks.cobblestone); // va être pris si la valeur est 1 ou 2, donc 2 chance sur 6.
        break;
    case 5:
        stack = new ItemStack(ItemMod.gemmeAdamantine); // 3, 4, ou 5, ce qui donne 3 chance sur 6.
        break;
}
player.inventory.addItemStackToInventory(stack));
 
  • J'aime
Reactions: Plaigon et Retorks
Ok merci bien,
Je testerais tout ça en rentrant demain après midi
Je te tiens au courant du résultat

Et encore merci pour ta précieuse aide