Pour faire ce tuto il vous faut savoir comment faire un objet/item (avec ModLoader , le nom de l'objet sera MonObjet)
[ALL]Un objet (item) #3 Un pistolet
Sommaire:
I. situer ce qu'il faut changer
II. ajouter classes
III. Configurer
I : situer ce qu'il faut changer
Dans la classe ItemMonObjet vous remplacez tout par :
Code (java):
package net.minecraft.src ;
public class ItemMonObjet extends Item
{
public ItemMonObjet( int par1)
{
super ( par1) ;
this .maxStackSize = 1 ; //dit qu'il ne peut avoir que 1 pistolet
}
public ItemStack onItemRightClick( ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
EntityBalle balle = new EntityBalle( par2World, par3EntityPlayer) ;
if ( ! par3EntityPlayer.capabilities .isCreativeMode && par3EntityPlayer.inventory .hasItem ( mod_x.chargeur .itemID ) )
{
ItemStack chargeurPistoler = new ItemStack( mod_x.chargeur ) ;
chargeur.damageItem ( 1 , par3EntityPlayer) ;
if ( ! par2World.isRemote )
{
par2World.spawnEntityInWorld ( balle) ;
}
}
if ( par3EntityPlayer.capabilities .isCreativeMode )
{
if ( ! par2World.isRemote )
{
par2World.spawnEntityInWorld ( balle) ;
}
}
return par1ItemStack;
}
}
Des erreurs ? Normal.
Créez un Item nommé ''ItemChargeur" relié à la classe "ItemChargeur".
sous
Code (java):
public static final Item MonObjet= new ItemMonObjet( 12060 ) .setItemName ( "MonObjet" ) ;
dans mod_x
vous ajoutez :
Code (java):
public static final Item chargeurPistoler = new ItemChargeur( 1002 ) .setItemName ( "chargeur" ) ;
(n'oubliez pas de rajouter son nom)
II : Ajouter classes
Vous allez créer une nouvelle classe nommée "ItemChargeur" et dedans écrivez :
Code (java):
package net.minecraft.src ;
public class ItemChargeurPistoler extends Item
{
public ItemChargeur( int par1)
{
super ( par1) ;
maxStackSize = 8 ; //max dans chargeur
setMaxDamage( 30 ) ; //durabilité
}
}
Informations:
maxStackSize = 8; : le nombre de balle dans un chargeur
setMaxDamage(30); : la durabilité du chargeur
ensuite une classe "EntityBalle" et dedans écrivez :
Code (java):
package net.minecraft.src ;
public class EntityBalle extends EntityThrowable
{
public EntityBalle( World par1World)
{
super ( par1World) ;
}
public EntityBalle( World par1World, EntityLiving par2EntityLiving)
{
super ( par1World, par2EntityLiving) ;
}
public EntityBalle( World par1World, double par2, double par4, double par6)
{
super ( par1World, par2, par4, par6) ;
}
public void setVelocity( )
{
this .motionX *= 0.0D;
this .motionY *= - 0.0D;
this .motionZ *= - 0.0D;
}
protected void onImpact( MovingObjectPosition par1MovingObjectPosition)
{
if ( par1MovingObjectPosition.entityHit != null )
{
par1MovingObjectPosition.entityHit .attackEntityFrom ( DamageSource.causeThrownDamage ( this , this .getThrower ( ) ) , 5 ) ; //5 = nombre de point perdu
}
if ( ! this .worldObj .isRemote )
{
this .setDead ( ) ;
}
}
}
Informations :
à la ligne
Code (java):
par1MovingObjectPosition.entityHit .attackEntityFrom ( DamageSource.causeThrownDamage ( this , this .getThrower ( ) ) , 5 ) ;
), 5); => 5 : le nombre de point perdu
Maintenant le tuto est fini mais avant de partir lisez ça :
---- /!\ ---- /!\ ---- erreurs ---- /!\ ---- /!\ ----
1- La balle est tirée mais est invisible
2- Le chargeur ne se vide pas
---- /!\ ---- /!\ ---- erreurs ---- /!\ ---- /!\ ----
Fin
Contactez-moi par MP pour m'aider.
j'ai tenté de :
- prendre le render d'une flèche pour la 1 (1)
- prendre le delete de l'arc (2)
mais rien