Aller au contenu
chaos90

[1.7.x] Créer un bâton/sceptre de soin

Recommended Posts

vous avez toujours eu envis d'un bâton/sceptre de soin ? et bien se tuto est fait pour vous

Bâton/Sceptre de Soin

-[iNTRODUCTION]-

Bonjour à tous !

Dans ce tutoriel, nous allons faire un Bâton/Sceptre de soin

-[sOMMAIRE]-

1]Création de l'item
2]Création du BatonDeSoin.java

3]CraftBukkit

1]Création de l'item

la création d'un item c'est pas quelque chose de compliqué il suffis de faire comme ceci :

Item.java

        itemRegistry.addObject(ID, "NOM", (new BatonDeSoin().setUnlocalizedName("NOM").setTextureName("NOM_TEXTURE")));

Items.java

    public static final Item NOM = (Item)Item.itemRegistry.getObject("NOM");

2] Création du BatonDeSoin.java

alors ici on va commencer par crée notre class normalement vous aurez ceci :

package votre_package;

public class BatonDeSoin {

}

alors tout de suite nous alons faire un extends sur Item et donc ajouter un maxStackSize une Durabilité et un emplacement dans le créatif :

package votre_package;

public class BatonDeSoin extends Item {
    public BatonDeSoin()
    {
        this.maxStackSize = 1; // on lui met un stack de 1
        this.setMaxDamage(15); // on met 15 de durabilité
        this.setCreativeTab(CreativeTabs.tabCombat); // on le met dans le tab Combat du créatif
    }

}

une fois ça fais nous allons ajouter une fonction que quand on fais click droit ça fais une action :

public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
    {
        return par1ItemStack;
    }

dans cette fonction nous alons ajouter un effect de potion qui est le heal et on va aussi déclarer la durabilité :

    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
    {
        par1ItemStack.damageItem(1, par3EntityPlayer); // on déclare la durabilité
        par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.heal.id, 1, 0)); // on met un effet de heal 1 pendant 1 tick
		return par1ItemStack;

    }

et puis on rajoute de la 3D :

    public boolean isFull3D() // on met de la 3D a l'item
    {
    	return true;
    }

ce qui nous donne au final :

package votre_package;

public class BatonDeSoin extends Item{
	public BatonDeSoin()
	{
        this.maxStackSize = 1;
        this.setMaxDamage(10);
        this.setCreativeTab(CreativeTabs.tabCombat);
	}


	
    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
    {
        par1ItemStack.damageItem(1, par3EntityPlayer);
        par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.heal.id, 1, 0));
		return par1ItemStack;

    }

}

et voilà passons au craftbukkit qui est la même chose

3] CraftBukkit

Item.java

    REGISTRY.a(ID, "NOM", (new BatonDeSoin()).c("NOM").f("NOM_TEXTURE"));

Items.java (Pour 1.7.2)

    public static final Item NOM = (Item)Item.REGISTRY.a("NOM");

Items.java (Pour 1.7.10)

    public static final Item NOM = (Item)Item.REGISTRY.get("NOM");

BatonDeSoin.java

package net.minecraft.server;

import net.minecraft.server.EntityHuman;
import net.minecraft.server.Item;
import net.minecraft.server.ItemStack;
import net.minecraft.server.MobEffect;
import net.minecraft.server.MobEffectList;
import net.minecraft.server.World;


public class BatonDeSoin extends Item {
	
	public BatonDeSoin()
	{
        this.maxStackSize = 1;
        this.setMaxDurability(15);
	}
   
    
    public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) {
        entityhuman.addEffect(new MobEffect(MobEffectList.HEAL.id, 1, 0));
        itemstack.damage(1, entityhuman);
        return itemstack;
    }

}

et voilà bon jeu avec votre bâton de soin :)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
chaos90, je me permet aujourd'hui une petite correction pour Spigot (minuscule)

Items.java

public static final Item NOM = (Item)Item.REGISTRY.get("NOM"); // Remplacer le REGISTRY.a par REGISTRY.get pour Spigot :P

et voilà bon jeu avec votre bâton de soin :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Pas de besoin particulier, on peut directement ajouter l'enchantement avec un livre ou avec /enchant unbreaking 3 en suivant le tutoriel.

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour speed : 

    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
    {
        par1ItemStack.damageItem(1, par3EntityPlayer); // on déclare la durabilité
        par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.speed.id, 1, 0)); // on met un effet de heal 1 pendant 1 tick
		return par1ItemStack;

    }

Pour Strengh

 

    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
    {
        par1ItemStack.damageItem(1, par3EntityPlayer); // on déclare la durabilité
        par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.strengh.id, 1, 0)); // on met un effet de heal 1 pendant 1 tick
		return par1ItemStack;

    }

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Disons que si ton effet de potion ne dure que 1 tick, ça m'étonnerait que ça plaise beaucoup au joueur d'avoir consommé 1 de dura de l'item juste pour un vingtième de seconde d'effet ^^'

Une seconde = 20 ticks, du coup si il veut un effet de 10 secondes, faut mieux faire comme ça 10 * 20.

Modifié par Plaigon

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 19/09/2016 à 18:58, Plaigon a dit :

Disons que si ton effet de potion ne dure que 1 tick, ça m'étonnerait que ça plaise beaucoup au joueur d'avoir consommé 1 de dura de l'item juste pour un vingtième de seconde d'effet ^^'

Une seconde = 20 ticks, du coup si il veut un effet de 10 secondes, faut mieux faire comme ça 10 * 20.

On a rien vu x)

(Fail d'edition, ratacher ce message au précédent svp)

Modifié par Procyx

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×