Voilà un petit tuto sur les différentes fonctions qui existent sur les blocs, en Modding.
Il est requit d'avoir un minimum de connaissances en java ( ou un autre language informatique, le tout c'est de comprendre ).
J'explique ici les différentes fonctions appelés et suciptibles d'être utilisé dans vos mods.
Il y a certaines fonctions que je ne comprenais pas, mais grâce aux forums anglais et à Google, certaines explications sont tirées de codes de mods.
Ce qui suit ne sera peut-être pas exactement exact, mais cela pourra aider -j'espère- dans les débuts de moddeur.
J'essaye de simplifier au maximum pour éviter un cours sur Java, mais un minimum de théorie n'a jamais fait de mal à personne .
Choses à savoir, suivies d'un exemple :
1. une fonction "void" ne renvoit rien.
une fonction "int" renvoit un nombre non-décimal (3321)
une fonction "double" renvoit un nombre décimal (12.43)
une fonction "bool" renvoit un booléen ( true/false)
2. Si une soi disant fonction n'est précédé d'aucun des types des lignes d'au dessus, c'est une méthode :
C'est à dire qu'elle permettra de modifier un objet, mais elle ne sera jamais appelée.
Par exemple, la fonction "void onNeighborBlockChange()" sera appelée quand un bloc adjacent sera modifié, mais la méthode "stackSize" ne sera jamais appelée automatiquement. Il faudra l'utilser dans une fonction, toujours précédée du nom de l'objet.
Exemple : Item.stackSize++
Cela rajoute 1 item dans le stack.
Sachez que si vous voyez un objet suivi d'un point, ce qui suivera sera toujours une méthode.
La différence aussi entre une méthode et une fonction et que la méthode n'a pas d'accolades {}.
Une fonction, dans minecraft, n'a quasiment jamais besoin d'être appelée car c'est automatique.
Chaque classe à toujours des méthodes qui lui sont propres.
Quand vous créez un objet Item, vous créez par la même occasion .stackSize, .maxStickSize, et tout ce qui va avec !
3. Utilisé comme au dessus, l'utilisation de "++" (= l'incrémentation )et de "--" ( = décrémentation ) permettent après un nom d'objet, de rajouter 1 ou de retirer 1 si c'est un nombre.
Je ne m'aventurerai pas plus loin, sinon ça commencerait à devenir compliqué et une page entière ne suffierait pas à tout expliquer^^.
Blocs
Cette fonction sert à éviter les trous de vide dans le bloc.Comment dire.... si votre bloc à des morceaux transparents, éviter de faire un effet "X-ray" sur les faces transparentes de bloc.
Cette fonction renvoit un booléen ( false/true ).
Retourner "false" pour éviter l'effet X-ray.
Savoir se qu'il tombe au seul quand le block est cassé.
Retourne un nombre, qui est l'ID de votre block à retourner.
Utilisez "return 0" pour qu'il ne tombe rien au sol.
L'objet random est un nombre aléatoire, bien utile pour libérer un nombre aléatoire de poudres à canons lors de la mort d'un creeper, par exemple.
Fonction très aléatoire, vu qu'elle peut être appelé n'importe quand.
Elle peut permettre de changer la texture ( pour les torches), générer des monstres, mais elle sera extrêment souvent appelée.
Cette fonction en renvoit rien.
Cette fonction est utilisée quand l'entitée Joueur détruit le bloc.
Elle vous permet de prendre en paramètres les coordonnées du monde ainsi, que pour le "l", comme l'a si bien dit Sormweaker, réprésente MetaData, par exemple pour le blé ça représente l'état de maturation.
Fonction très utilisée que j'ai eu beaucoup de mal à comprendre, elle permet d'être appelée quand un des blocs adjacent est modifié.
Le "l" est l'ID du bloc adjacent modifié.
Est appelé lorsque le joueur utilise le clic droit.
Un conseil : ignorer le fait qu'elle renvoit un booléen true/false, exécutez ici ce que vous voulez faire ( elle prend un paramettre le joueur et le monde... ) et rajoutez un "return true" pour expliquer que tout s'est passé normalement.
Est appelée lorsque quelqu'un essaye de détruire le bloc.
Cette fonction ne renvoit rien, d'ou le "void".
Est appelé si le bloc est alimenté par de la redstone, mais peut être utilisé que si vous aviez bien définit que le bloc pouvait en recevoir en retournant true avec cette fonction :
Items
Permet de contrôler la valeur du stack dans l'inventaire.Attention, pas la taille maximal, juste celle que le joueur possède.
Utile pour retirer 1 quand l'objet est utilisé.
Fonction utilisée quand le joueur utilise le clique droit.
Cette fonction return un item, et toutes ses fonctions membres
( le stack, le nom, etc ).
Joueur
Pas très compliqué; permet d'envoyer une valeur qui s'ajoute à la vie du joueur. Sachant que 1 = 1/2 coeur.Exemple : EntityPlayer.heal(10)
Guérit 5 coeurs
World
Je n'ai pas retrouvé le prototype exacte, donc j'ai mis un exemple tiré de l'interrupteur.
Cette fonction permet de jouer un son, et peut être très pratique lors d'un clic droit, vu que l'on peut prendre en paramètres les coordonnées du monde... vous voyez, tous ses paramètres sont bien utiles tout copte fait
Sûrement LA fonction la plus importante du monde : elle permet de modifier un bloc en prenant en paramètres les coordonnées i, j, k par rapport à la position du joueur ou par rapport au bloc qui utilise cette fonction.
i = largeur
j = profondeur ( par rapport au niveau zéro, au fond à la bedrock )
k = hauteur
l'ID sera l'id du bloc placé aux coordonnées correspondantes
Choses à savoir : souvent, les noms avec une majuscule sont les noms d'une classe ( ex. : World ) et et sans majuscules le nom donné à l'objet ( ex. : world ).
Donc si vous voulez changer un bloc, utilisez
world.setBlockWithNotify(i, j, k, Block.dirt.blockID)
et non pas
World.setBlockWithNotify(i, j, k, Block.dirt.blockID).
Permet de savoir s'il fait jour.
Cela voudrait dire que vous voudriez changer la classe entière !
Voilà, pour l'instant c'est tout, mais je continuerais dès que possible avec encore plus de fonctions
Il est requit d'avoir un minimum de connaissances en java ( ou un autre language informatique, le tout c'est de comprendre ).
J'explique ici les différentes fonctions appelés et suciptibles d'être utilisé dans vos mods.
Il y a certaines fonctions que je ne comprenais pas, mais grâce aux forums anglais et à Google, certaines explications sont tirées de codes de mods.
Ce qui suit ne sera peut-être pas exactement exact, mais cela pourra aider -j'espère- dans les débuts de moddeur.
J'essaye de simplifier au maximum pour éviter un cours sur Java, mais un minimum de théorie n'a jamais fait de mal à personne .
Choses à savoir, suivies d'un exemple :
1. une fonction "void" ne renvoit rien.
une fonction "int" renvoit un nombre non-décimal (3321)
une fonction "double" renvoit un nombre décimal (12.43)
une fonction "bool" renvoit un booléen ( true/false)
2. Si une soi disant fonction n'est précédé d'aucun des types des lignes d'au dessus, c'est une méthode :
C'est à dire qu'elle permettra de modifier un objet, mais elle ne sera jamais appelée.
Par exemple, la fonction "void onNeighborBlockChange()" sera appelée quand un bloc adjacent sera modifié, mais la méthode "stackSize" ne sera jamais appelée automatiquement. Il faudra l'utilser dans une fonction, toujours précédée du nom de l'objet.
Exemple : Item.stackSize++
Cela rajoute 1 item dans le stack.
Sachez que si vous voyez un objet suivi d'un point, ce qui suivera sera toujours une méthode.
La différence aussi entre une méthode et une fonction et que la méthode n'a pas d'accolades {}.
Une fonction, dans minecraft, n'a quasiment jamais besoin d'être appelée car c'est automatique.
Chaque classe à toujours des méthodes qui lui sont propres.
Quand vous créez un objet Item, vous créez par la même occasion .stackSize, .maxStickSize, et tout ce qui va avec !
3. Utilisé comme au dessus, l'utilisation de "++" (= l'incrémentation )et de "--" ( = décrémentation ) permettent après un nom d'objet, de rajouter 1 ou de retirer 1 si c'est un nombre.
Je ne m'aventurerai pas plus loin, sinon ça commencerait à devenir compliqué et une page entière ne suffierait pas à tout expliquer^^.
Blocs
Code:
public boolean isOpaqueCube()
Cette fonction sert à éviter les trous de vide dans le bloc.Comment dire.... si votre bloc à des morceaux transparents, éviter de faire un effet "X-ray" sur les faces transparentes de bloc.
Cette fonction renvoit un booléen ( false/true ).
Retourner "false" pour éviter l'effet X-ray.
Code:
public int idDropped(int i, Random random)
Savoir se qu'il tombe au seul quand le block est cassé.
Retourne un nombre, qui est l'ID de votre block à retourner.
Utilisez "return 0" pour qu'il ne tombe rien au sol.
L'objet random est un nombre aléatoire, bien utile pour libérer un nombre aléatoire de poudres à canons lors de la mort d'un creeper, par exemple.
Code:
public void randomDisplayTick(World world, int i, int j, int k, Random random)
Fonction très aléatoire, vu qu'elle peut être appelé n'importe quand.
Elle peut permettre de changer la texture ( pour les torches), générer des monstres, mais elle sera extrêment souvent appelée.
Cette fonction en renvoit rien.
Code:
public void onBlockDestroyedByPlayer(World world, int i, int j, int k, int l)
Cette fonction est utilisée quand l'entitée Joueur détruit le bloc.
Elle vous permet de prendre en paramètres les coordonnées du monde ainsi, que pour le "l", comme l'a si bien dit Sormweaker, réprésente MetaData, par exemple pour le blé ça représente l'état de maturation.
Code:
public void onNeighborBlockChange(World world, int i, int j, int k, int l)
Fonction très utilisée que j'ai eu beaucoup de mal à comprendre, elle permet d'être appelée quand un des blocs adjacent est modifié.
Le "l" est l'ID du bloc adjacent modifié.
Code:
public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)
Est appelé lorsque le joueur utilise le clic droit.
Un conseil : ignorer le fait qu'elle renvoit un booléen true/false, exécutez ici ce que vous voulez faire ( elle prend un paramettre le joueur et le monde... ) et rajoutez un "return true" pour expliquer que tout s'est passé normalement.
Code:
public void onBlockClicked(World world, int i, int j, int k, EntityPlayer entityplayer
Est appelée lorsque quelqu'un essaye de détruire le bloc.
Cette fonction ne renvoit rien, d'ou le "void".
Code:
public boolean isIndirectlyPoweringTo(World world, int i, int j, int k, int l)
Est appelé si le bloc est alimenté par de la redstone, mais peut être utilisé que si vous aviez bien définit que le bloc pouvait en recevoir en retournant true avec cette fonction :
Code:
public boolean canProvidePower()
{
return true;
}
Items
Code:
stackSize()
Permet de contrôler la valeur du stack dans l'inventaire.Attention, pas la taille maximal, juste celle que le joueur possède.
Utile pour retirer 1 quand l'objet est utilisé.
Code:
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
Fonction utilisée quand le joueur utilise le clique droit.
Cette fonction return un item, et toutes ses fonctions membres
( le stack, le nom, etc ).
Joueur
Code:
heal()
Pas très compliqué; permet d'envoyer une valeur qui s'ajoute à la vie du joueur. Sachant que 1 = 1/2 coeur.Exemple : EntityPlayer.heal(10)
Guérit 5 coeurs
World
Code:
playSoundEffect((double) i + 0.5D, (double)j + 0.5D, (double)k + 0.5D, "random.click", 0.3F, 0.5F)
Je n'ai pas retrouvé le prototype exacte, donc j'ai mis un exemple tiré de l'interrupteur.
Cette fonction permet de jouer un son, et peut être très pratique lors d'un clic droit, vu que l'on peut prendre en paramètres les coordonnées du monde... vous voyez, tous ses paramètres sont bien utiles tout copte fait
Code:
setBlockWithNotify( int i, int j, int k, int blockID)
Sûrement LA fonction la plus importante du monde : elle permet de modifier un bloc en prenant en paramètres les coordonnées i, j, k par rapport à la position du joueur ou par rapport au bloc qui utilise cette fonction.
i = largeur
j = profondeur ( par rapport au niveau zéro, au fond à la bedrock )
k = hauteur
l'ID sera l'id du bloc placé aux coordonnées correspondantes
Choses à savoir : souvent, les noms avec une majuscule sont les noms d'une classe ( ex. : World ) et et sans majuscules le nom donné à l'objet ( ex. : world ).
Donc si vous voulez changer un bloc, utilisez
world.setBlockWithNotify(i, j, k, Block.dirt.blockID)
et non pas
World.setBlockWithNotify(i, j, k, Block.dirt.blockID).
Code:
isDayTime()
Permet de savoir s'il fait jour.
Cela voudrait dire que vous voudriez changer la classe entière !
Voilà, pour l'instant c'est tout, mais je continuerais dès que possible avec encore plus de fonctions