14 mars 2014, 15:58

Sommaire

Introduction

Bonjour tout le monde ! On se retrouve aujourd’hui dans ce tutoriel pour apprendre à créer son propre Item mangeable !
Sans plus tarder, commençons

Pré-Requis

Code

Comme d’habitude pour créer un nouvel item, on le déclare dans la classe au dessus de la méthode “preInit”, je vais faire ici une orange.

public static Item orange;

Tout simplement 😉

Dans la méthode preInit cette fois, nous allons renseigner notre objet, on a le choix de le faire en Programmation Orientée Objet (Avec une classe) ou directement depuis la classe principale, je vais faire ici les deux méthodes.

1ère méthode, Programmation orientée objet (plus complète) :

Dans la méthode preInit, mettez ce code :

votreItemMangeable = new ItemMangeable(faimComblée, Saturation, NourritureDesLoups).setUnlocalizedName("itemmangeable").setTextureName("votremodid:item");

Alors décortiquons ce code :

  • faimComblée (int) signifie le nombre de demis-gigots, je dit bien de demis-gigots, par exemple si vous mettez 2, quand vous mangerez l’item, vous aurez 1 gigot de plus
    PS : Elle se note en nombre entier.

  • Saturation (float) représente la saturation de l’item, cela signifie que plus vous mettrez de saturation, moins les gigots descendront vite
    PS : Elle se note “X.XF”

  • NourritureDesLoups (boolean) est un argument permettant que votre item soit une nourriture que vous donniez aux loups pour qu’ils soient apprivoisés.
    PS : Elle se note “false” si non et “true” si oui

Voilà ! Pour moi cela donne :

orange=new Orange(4,0.3F,false).setTextureName("tuto:orange").setUnlocalizedName("orange");

Une fois cela fait, créez la classe de votre Item, et faite le hériter (extends) de la classe ItemFood que vous importerez, ajoutez ensuite le constructeur (choisissez la deuxième option (int, float, boolean)), vous devriez obtenir ceci :

package votre.package;

import net.minecraft.item.ItemFood;

public class VotreItem extends ItemFood
{
    public VotreItem(int p_i45339_1_, float p_i45339_2_, boolean p_i45339_3_) {
        super(p_i45339_1_, p_i45339_2_, p_i45339_3_);
        // TODO Auto-generated constructor stub
    }
}

Modifier les p_i4… etc par :

  • gigot pour le int
  • saturation pour le float
  • et wolf pour le boolean
    Ce qui doit donner :
public VotreItem(int gigot, float saturation, boolean wolf) {
    super(gigot, saturation, wolf);
}

Voilà votre classe est crée, vous pouvez maintenant ajouter l’item dans un onglet créatif, pour que ce soit plus simple, je vous donne le code 😉 (Mettez le en dessous du constructeur super())

this.setCreativeTab(CreativeTabs.tabFood);

N’oubliez pas d’importer CreativeTabs 😉
Voilà c’est fini pour cette méthode !

2° Méthode : Directement depuis la classe principale (moins complète) :

Dans la méthode preInit, mettez ce code :

votreItem = new ItemFood(faimComblée, Saturation, NourritureDesLoups).setUnlocalizedName("itemmangeable").setTextureName("modid:item");

Alors décortiquons ce code :

  • faimComblée (int) signifie le nombre de demis-gigots, je dit bien de demis-gigots, par exemple si vous mettez 2, quand vous mangerez l’item, vous aurez 1 gigot de plus
    PS : Elle se note en nombre entier.

  • Saturation (float) représente la saturation de l’item, cela signifie que plus vous mettrez de saturation, moins les gigots descendront vite
    PS : Elle se note “X.XF”

  • NourritureDesLoups (boolean) est un argument permettant que votre item soit une nourriture que vous donniez aux loups pour qu’ils soient apprivoisés.
    PS : Elle se note “false” si non et “true” si oui

N’oubliez pas d’importer la classe ItemFood 😉

Voilà ! Pour moi cela donne :

orange=new ItemFood(4,0.3F,false).setTextureName("tuto:orange").setUnlocalizedName("orange");

C’est fini pour cette méthode 😉 Elle est certes plus courte mais moins efficace que la méthode précédente 🙂

Une fois une de ces deux méthodes faite, il ne manque plus qu’a enregistrer votre item 😉

Encore une fois très très simple, placez vous dans la méthode preInit, après la définition des objets et mettez ce code :

GameRegistry.registerItem(Item, "unlocalizedNameDeL'Item");

Remplacez Item par la variable que vous avez définie au début (

public static Item Item;

)
et “unlocalizedNameDeL’item” par la valeur du setUnlocalizedName()
Pour moi, cela donne :

GameRegistry.registerItem(orange, "orange");

Ps : N’oubliez pas d’importer le GameRegistry si ce n’est pas déjà fait 😉

Mettez une texture et un nom à votre item et lancez le jeu !
Si vous ne savez pas comment faire celà, (re)regardez le tuto très bien expliqué de robin4002 😉 -> Créer un item basique

Résultat

Attention c’est beau ! _

Image 1

Image 2

Bonus

  • Si vous voulez que l’item fasse un bruit de liquide :

Cette fonction est disponible que si vous avez effectué la première méthode (POO)
Vous voulez que votre item fasse le même bruit que quand on boit une potion ?

Alors rajouter ce bout de code dans la classe (et non dans le constructeur)

    public EnumAction getItemUseAction(ItemStack par1ItemStack)
    {
        return EnumAction.drink;
    }

N’oubliez pas d’importer les classes EnumAction et ItemStack

  • Ajouter un effet de potion :

Vous voulez que quand on mange votre item, vous ayez un effet de potion ? Pas de souci, la fonction est disponible avec les 2 méthodes :
Dans la définition de votre variable(

orange = new ...

) dans le preInit, ajoutez

.setPotionEffect(Potion.effet.id, 5, 2, 1.0F)

avant le “setUnlocalizedName()”

  • Potion.effet.id correspond à l’id de l’effet de potion, pour voir les autres effets, effacez le “.effet.id” après potion et mettez un point, une liste va s’afficher
  • 30 correspond a la durée de l’effet
  • 2 correspond à l’intensité de l’éffet
  • 1.0F Chance d’obtenir l’effet (1.0F = 100%, 0.5F = 50% etc …)

Crédits

Rédaction :

Tutoriel basé sur l’ancien tutoriel de MrCupCakeMonster