Créer un mob basique
-
Créer un mob basique :
Dans ce tutoriel, je vais vous apprendre à faire un mob BASIQUE (je précise :D) !
Un mob basique ? C’est à dire ?
-Un mob qui ne fait rien, qui se balade, juste.Aaaaaah, ok ! Mais… pourquoi un mob basique et pas avancé ?
-Il est important de savoir la base d’un mob avant d’enchaîner sur ce qui est “avancé”. Croyez moi, cela en vaut la peine.Pour commencez, vous devez :
-Créer la classe du mob.
-Ajouter les lignes d’enregistrement de l’entité dans votre classe principale.Et c’est tout. ^^ Le mob sera vraiment simple, vous verrez.
Nous allons donc créer une class qui va s’appeler “EntityAniZob” et nous allons définir sa class parente qui va s’appeler EntityCreature.
N’OUBLIEZ PAS D’AJOUTER LES DÉCLARATIONS DE PACKAGES ! package net.minecraft.src; par exemple !
Exemple de ce que je viens d’expliquer en code :public class EntityAniZob extends EntityCreature
Inutile d’expliquer le code que je viens de citer, il est déjà expliqué. x)
Je ne vais pas vous apprendre à mettre des accolades où il faut, vous devez avoir un minimum de connaissances en Java.
Une fois notre belle classe créer, elle doit avoir cette tronche là :
package votre.package; public class EntityAniZob extends EntityCreature { }
Vous allez me dire :
Pourquoi est-ce que EntityAniZob est souligné en rouge ?
-Tout simplement qu’il faut ajouter le constructeur de la super class (de la classe parente de EntityAniZob, donc EntityCreature)Passez donc le curseur là où c’est souligné. Il vous proposera donc d’ajouter le constructeur.
Oui mais… j’ai beau ajouter le constructeur, c’est encore souligné… Pourquoi ?
-Et bien cela signifie que la class parente (donc EntityCreature) contient une fonction Abstract qui est OBLIGATOIRE pour les classes héritant de EntityCreature.Il faut donc repasser de nouveau le curseur sur ce qui est souligné, pour ensuite cliquer sur “Add unimplemented methods”. Une fois fait, vous allez voir apparaître ce que la classe nécessite pour être reconnu (avec le constructeur). Pour les mobs, c’est getMaxHealth() donc une fonction de type int qui retourne le nombre de DEMI-CŒURS que le mob contient. Si vous mettez 20, le mob aura donc 10 cœurs, comme le joueur.Normalement, vous n’êtes plus censé avoir d’erreurs + getMaxHealth() n’existe plus !!! Nous allons voir plus bas comment configurer tout cela !
Donc maintenant, notre class doit ressembler à ça :
package votre.package; public class EntityAniZob extends EntityCreature { public EntityAniZob(World world) { super(world); } }
Lexique :
super(world); -> Une ligne obligatoire dans un constructeur héritant d’une class.
Le système de point de vies en 1.6 :
Comme vous auriez pu le constater, en 1.6, le système de point de vies a complètement été refait ! Il ne s’agit plus d’un simple field “health” ou d’une fonction getMaxHealth()… De même pour la vitesse du mob !
Mais comment utiliser ce nouveau système ?
-C’est simple !Créez une nouvelle méthode en dessous du constructeur :
@Override protected void func_110147_ax() { super.func_110147_ax(); }
SI VOUS UTILISEZ UNE BUILD DE FORGE À PARTIR DE 849, LA MÉTHODE A CHANGÉ (de nom) ! VOICI LA NOUVELLE :
protected void applyEntityAttributes() { super.applyEntityAttributes(); }
Alors ne me demandez pas pourquoi c’est sous forme de “func_ blablabla” c’est (apparement) un problème de mappings ! (Réglé à partir de la build 849 !!!)
On n’oublie pas le super et le @Override pour que la méthode soit reconnue !
Et en dessous du super.func_110147_ax(); ou super.applyEntityAttributes(); ajoutez ces lignes :
[POUR LES BUILDS EN DESSOUS DE 849] :
this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(40D); this.func_110148_a(SharedMonsterAttributes.field_111265_b).func_111128_a(40.0D); this.func_110148_a(SharedMonsterAttributes.field_111263_d).func_111128_a(0.699999988079071D); this.func_110148_a(SharedMonsterAttributes.field_111264_e).func_111128_a(8.0D);
[POUR LES BUILDS À PARTIR DE 849] :
this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(40D); this.getEntityAttribute(SharedMonsterAttributes.followRange).setAttribute(40.0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setAttribute(0.699999988079071D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(8.0D);
Vous voyez le gros changement ? xDD
Pas de panique ! Je vais vous expliquer en détail ce qu’elles veulent dire !
La première ligne va servir à attribuer la vie au mob ! (donc remplace le getMaxHealth())
La deuxième signifie la portée de détection d’entités ! (??)
La troisième ligne permet d’attribuer la vitesse du mob ! (donc remplace le float “moveSpeed”, là il est reglé à la vitesse par défaut)
Et enfin la dernière ligne permet d’attribuer la force d’attaque du mob !(donc remplace le INT getAttackStrength(), qui était anciennement : attackStrength)*
Comme vous l’auriez remarqué, les lignes ont le même début et fin, juste les fields au milieu qui changent, donc voici une lexique de TOUS les fields de la classe SharedMonsterAttributes :
- field_111267_a = pour la vie du mob
- field_111265_b = follow range ou portée de détection si vous préferez !
- field_111266_c = knockback resistance ! (utile pour un mob custom)
- field_111263_d = vitesse du mob !
- field_111264_e = field qui remplace **getAttackStrength() **(anciennement “attackStrngth”) NE L’UTILISEZ PAS POUR L’INSTANT, CE FIELD SEMBLE BUGGÉ !!
Voilà pour ce qui est du changement 1.6aire !(UnPointSixaire, c’est très français ! xD)
–
Notre mob est enfin prêt… OU PAS ! Il reste encore à l’enregistrer dans votre class principale !
Dans la fonction d’INITIALISATION (donc pas dans la pré init, ni dans la post init), vous allez insérer ces 4 lignes :
EntityRegistry.registerGlobalEntityID(EntityAniZob.class, “AniZob”, EntityRegistry.findGlobalUniqueEntityId(), 24, 30);
EntityRegistry.registerModEntity(EntityAniZob.class, “AniZob”, 250, this, 40, 1, true);
EntityRegistry.addSpawn(EntityAniZob.class, 1, 4, 4, EnumCreatureType.creature);
LanguageRegistry.instance().addStringLocalization(“entity.AniZob.name”, “AniZob”);Explications (dans l’ordre) de ces 4 lignes :
La première ligne permet d’enreigstrer l’oeuf et l’entité associé, le nom, l’ID de l’oeuf (je vous conseil de mettre comme j’ai mis, donc EntityRegistry.findGlobalUniqueEntityId() UNIQUEMENT POUR L’OEUF)
et enfin les deux autres nombres sont la couleurs de fond et celle des taches de l’oeuf. (background color, foreground color)La deuxième ligne permet d’enregistrer l’entité du mod. Dans l’ordre croissant : La class de l’entité, le nom, l’id, l’instance du mod (mettez this), la valeur “trackingRange” mettez un nombre élevé comme moi j’ai mis, le nombre d’update par tick (20 ticks = 1 seconde) et enfin, un boolean qui nous demande d’envoyer les updates de velocités ou pas, je vous conseil de mettre “true”
La troisième ligne va vous permettre d’enregistrer les paramètre de spawn du mob, donc par ordre croissant : La class de l’entité, la chance d’apparition, le nombre mini par groupe, le nombre maxi par groupe et enfin on finit par ce fameux EnumCreatureType… Pour ce tuto, nous allons utiliser EnumCreatureType.creature (cela permet de définir quel type de mob il s’agit).
Et pour finir donc, la dernière ligne permet d’attribuer un nom à l’entité. Je vous la recommande fortement cette ligne ! Si vous ne la mettez pas, si vous vous faites tuer par l’entité, le message dans le tchat affichera :
“…was slain by entity.AniZob.name” et ce entity.AniZob.name sera affiché sur le nom de l’oeuf aussi, donc je vous conseil d’utiliser la ligne que je vous mets à disposition pour ne pas avoir ce bug chiant. ^^Parmi ces lignes, dans la première, vous retrouverez au bout de celle ci : 24, 30
Détails :
-24 : couleur du BACKGROUND de l’oeuf
-30 : couleur du FOREGROUND de l’œuf (des taches de l’œuf)
Pour des couleurs personnalisé de l’œuf, je vous invite à aller sur ce site : http://code-couleur.com
si vous avez trouvé votre couleur, ne prenez pas le #, mais ce qu’il y a après !!! Et dans le code, ajoutez un 0x avant d’ajouter le code couleur. par exemple pour le blanc 0xFFFFF :EntityRegistry.registerGlobalEntityID(EntityAniZob.class, “AniZob”, EntityRegistry.findGlobalUniqueEntityId(), 0xFFFFF, 0xFFFFF);
Là, l’oeuf sera entièrement BLANC !
Voilà, notre mob est fin prêt à être testé… MAIS ! Il reste une chose !
Encore ?!..
-Ne vous en faites pas, ce n’est pas long ! Juste une ligne à rajouter dans le ClientProxy !Donc, dans votre client proxy, vous devez avoir votre méthode qui permet d’initialiser vos render non ? Et bien nous allons en profiter pour y ajouter cette ligne :
RenderingRegistry.registerEntityRenderingHandler(EntityAniZob.class, new RenderAnizob(new ModelBiped(), 0.5f));
Cette ligne est OBLIGATOIRE si vous ne voulez pas que votre mob soit buggé ! Cela permet de faire le rendu de votre mob !
Explications de la ligne :
Premièrement, nous avons la classe de l’entity, ensuite nous avons “new RenderBiped(new ModelBiped(), 0.5f)”
Mais… à quoi sert ce passage ?
-A définir quel model et render que l’entity va utiliser, là, c’est : RenderBiped et ModelBiped.Hum, je comprend mieux maintenant… Mais il reste ce 0.5f là… à quoi sert-il ?
-Roooh c’est facile ! Il s’agit de la taille de l’ombre du mob !PS : Pour ajouter une texture à votre mob, ajoutez ceci dans votre constructeur :texture = "/le/chemin/de/votre/texture.png";
Depuis la 1.6, pour ajouter la texture, cela se passe dans le RENDER !!!
Donc dans votre render, ajoutez cette ligne avant le constructeur :
protected static final ResourceLocation texture = new ResourceLocation("ModID:texture.png");
Alors pareil pour les mobs, le système de détection de texture est devenu comme les blocks/items !! MAIS, vous devez ajouter le .png à la fin ! ^^
Là par exemple, j’ai mis “ModID:texture.png”Mais où est-ce que je vais placer ma texture ?
Dans asset(anciennement nommé “mods”) :/assets/modid/texture.png
le dossier modid DOIT ÊTRE EN MINUSCULE !
Ensuite, ajoutez ces deux fonctions :
protected ResourceLocation func_110870_a(EntityAniZob entity) { return texture; } @Override protected ResourceLocation func_110775_a(Entity par1Entity) { return this.func_110870_a((EntityAniZob)par1Entity); }
(Build 849 et + de forge uniquement)
protected ResourceLocation getAniZobTextures(EntityAnizob anizob) { return texture; } protected ResourceLocation getEntityTexture(Entity par1Entity) { return this.getAniZobTextures((EntityAnizob)par1Entity); }
Elles permettent l’enregistrement de la ligne que nous avons ajouté au dessus du constructeur !
Voici la class render en intégralité :
Build en dessous de 849 :
package votre.package.client; public class RenderAnizob extends RenderBiped { protected static final ResourceLocation texture = new ResourceLocation("ModID:texture.png"); public RenderAnizob(ModelBiped biped, float tailleOmbre) { super(biped, tailleOmbre); } protected ResourceLocation func_110870_a(EntityAniZob entity) { return texture; } @Override protected ResourceLocation func_110775_a(Entity par1Entity) { return this.func_110870_a((EntityAniZob)par1Entity); } }
Maintenant, rendez-vous dans votre ClientProxy, et mettez cette ligne dans une de vos méthodes :
RenderingRegistry.registerEntityRenderingHandler(EntityAnizob.class, new RenderAnizob(new ModelBiped(), 0.5F);
–----------------
Voilà voilà, j’espère que ce tutoriel vous a plu, n’hésitez pas à me dire ce que vous en pensez; si j’ai oublié un truc, etc…Plus tard nous verrons les différents mobs avancés !
Je ne peux malheureusement pas vous donner le code source java du tuto, je l’ai fait à la main xD…Sur ce, good luck !
-
J’ai fais un petit edit, pour rendre un peu mieux la présentation, j’avais oublié un truc important. x)
-
Salut, il y a juste une toute petite chose qui me tracasse :
La classe du mob doit être :- dans le package principal ?
- dans le package client ?
- dans un nouveau package ?
Merci de répondre à ma question, et bonne continuation !
-
Une nouvelle classe, peu importe le package.
-
D’accord, merci beaucoup pour l’info !
-
L’entité doit être dans le package principal, donc “TonMod.common” et le render/model de ton mob -> dans le package client, donc “TonMod.client”
-
Le tuto va être mis à jour bientôt ! Je travail un peu le nouveau système des mobs (oui, à cause des ressources packs mojang a tout changé… --')
-
Tutoriel disponible 1.6.2 !
-
Ou est le render? (Je suis nouveau xD)
-
Ba bravo elias, c’est quoi ces tutoriels incomplet ! (non je plaisante, mais il faudrait corriger)
Le render est une nouvelle classe à créer, il faut aussi mettre ce code dans ton client proxy dans la parti “registerrender” :
RenderingRegistry.registerEntityRenderingHandler(TonMob.class, new TonRender(new TonModel(), 0.5F));
Il est également possible d’utiliser un rendu vanilla. 0.5 est la taille l’ombre
Et sinon, ceci :LanguageRegistry.instance().addStringLocalization("entity.AniZob.name", "AniZob");
n’est plus à utiliser, il faut mettre dans le fichier de lang
entity.AniZob.name=AniZob -
Pour le render, il faut le créer sois même. Mais je te conseil de voir la class du squeulette (pas celle du zombie, car c’est un vrai bordel pour s’y retrouver pour les personnes de bas niveau en modding ^^)
-
Salut, tout d’abord merci pour le tuto mais chez moi ça ne fonctionne pas T_T
Déjà j’ai une erreur sur :
this.func_110148_a(SharedMonsterAttributes.field_111263_d).func_111128_a(0.69999?9988079071D);
=> The method func_111128_a(double) in the type AttributeInstance is not applicable for the arguments (double, double)
Donc je remplace par :
this.func_110148_a(SharedMonsterAttributes.field_111263_d).func_111128_a(0.69999D);
J’ai voulu utilisé un modèle de sanglier au lieu du modèle biped du tuto alors je crois que ça a un peu tout chamboulé, quand je fais clic droit avec mon oeuf j’ai un message d’erreur sur Eclipse (mais le jeu continue de tourner).
2013-08-13 09:37:05 [SEVERE] [Minecraft-Client] Realms: Invalid session id 2013-08-13 09:37:06 [INFO] [Minecraft-Server] Starting integrated minecraft server version 1.6.2 2013-08-13 09:37:06 [INFO] [Minecraft-Server] Generating keypair 2013-08-13 09:37:07 [INFO] [ForgeModLoader] Loading dimension 0 (Nouveau monde) (net.minecraft.server.integrated.IntegratedServer@13d95a7d) 2013-08-13 09:37:07 [INFO] [ForgeModLoader] Loading dimension 1 (Nouveau monde) (net.minecraft.server.integrated.IntegratedServer@13d95a7d) 2013-08-13 09:37:07 [INFO] [ForgeModLoader] Loading dimension -1 (Nouveau monde) (net.minecraft.server.integrated.IntegratedServer@13d95a7d) 2013-08-13 09:37:07 [INFO] [Minecraft-Server] Preparing start region for level 0 2013-08-13 09:37:07 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:162) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:409) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:103) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:83) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.safeLoadChunk(ChunkProviderServer.java:182) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:118) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:292) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:90) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 09:37:07 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 09:37:07 [INFO] [STDERR] … 15 more 2013-08-13 09:37:07 [WARNING] [Minecraft-Server] Skipping Entity with id Sanglier 2013-08-13 09:37:07 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:162) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:409) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:103) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:83) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.safeLoadChunk(ChunkProviderServer.java:182) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:118) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:292) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:90) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 09:37:07 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 09:37:07 [INFO] [STDERR] … 15 more 2013-08-13 09:37:07 [WARNING] [Minecraft-Server] Skipping Entity with id Sanglier 2013-08-13 09:37:07 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:162) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:409) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:103) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:83) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.safeLoadChunk(ChunkProviderServer.java:182) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:118) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:292) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:90) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 09:37:07 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 09:37:07 [INFO] [STDERR] … 15 more 2013-08-13 09:37:07 [WARNING] [Minecraft-Server] Skipping Entity with id Sanglier 2013-08-13 09:37:07 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:162) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:409) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:103) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:83) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.safeLoadChunk(ChunkProviderServer.java:182) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:118) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:292) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:90) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 09:37:07 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 09:37:07 [INFO] [STDERR] … 15 more 2013-08-13 09:37:07 [WARNING] [Minecraft-Server] Skipping Entity with id Sanglier 2013-08-13 09:37:07 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:162) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:409) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:103) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:83) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.safeLoadChunk(ChunkProviderServer.java:182) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:118) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:292) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:90) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 09:37:07 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 09:37:07 [INFO] [STDERR] … 15 more 2013-08-13 09:37:07 [WARNING] [Minecraft-Server] Skipping Entity with id Sanglier 2013-08-13 09:37:07 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityFromNBT(EntityList.java:162) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:409) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:103) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:83) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.safeLoadChunk(ChunkProviderServer.java:182) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:118) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:292) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:90) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 09:37:07 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 09:37:07 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 09:37:07 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 09:37:07 [INFO] [STDERR] … 15 more 2013-08-13 09:37:07 [WARNING] [Minecraft-Server] Skipping Entity with id Sanglier 2013-08-13 09:37:08 [INFO] [STDOUT] loading single player 2013-08-13 09:37:08 [INFO] [Minecraft-Server] Player773[/127.0.0.1:0] logged in with entity id 195 at (64.36923009921423, 65.0, 237.22023656185002) 2013-08-13 09:37:08 [INFO] [Minecraft-Server] Player773 joined the game 2013-08-13 09:37:08 [INFO] [STDOUT] Setting up custom skins 2013-08-13 09:37:11 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 09:37:11 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 09:37:11 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:11 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 09:37:11 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityByID(EntityList.java:205) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.item.ItemMonsterPlacer.spawnCreature(ItemMonsterPlacer.java:175) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.item.ItemMonsterPlacer.onItemUse(ItemMonsterPlacer.java:81) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.item.ItemStack.tryPlaceItemIntoWorld(ItemStack.java:152) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:429) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:554) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:141) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:54) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:689) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:585) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:129) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 09:37:11 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 09:37:11 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 09:37:11 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 09:37:11 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 09:37:11 [INFO] [STDERR] … 20 more 2013-08-13 09:37:11 [WARNING] [Minecraft-Server] Skipping Entity with id 3
Voici mes codes :
Dans <maclasseprincipale>.common :
• Ma classe principale : http://pastebin.com/QjK5AQr0
• Mon mob Sanglier : http://pastebin.com/q0yHCEezDans <maclasseprincipale>.proxy :
• Ma classe principale proxy : http://pastebin.com/nzHCh1Wr
• Mon model Sanglier : http://pastebin.com/GYR7P3V2
• Mon render Sanglier : http://pastebin.com/i8x0RhhHJ’ai mis la texture dans /assets/nyvelia/ModelSanglier.png.</maclasseprincipale></maclasseprincipale></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init></init>
-
Il y avait certaines choses dans le render qui ne semblait pas correct.
Nouvelle classe du render : http://pastebin.com/BehnmqYd
Voilà. Réessaie.
-
Merci mais il y a plusieurs erreurs :
-
super(modelBase, tailleOmbre); => The constructor Render(ModelBase, float) is undefined
-
super.doRenderLiving(mobSanglier, d, d1, d2, f, f1); => The method doRenderLiving(MobSanglier, double, double, double, float, float) is undefined for the type Render
-
public void doRenderLiving(EntityLiving entityliving, double d, double d1, double d2, float f, float f1) => The method doRenderLiving(EntityLiving, double, double, double, float, float) of type RenderSanglier must override or implement a supertype method
T_T
-
-
Aaaaaah ! Tu as extends à Render au lieu de RenderLiving. x) (je viens de voir ça.)
-
Bon maintenant il n’y a plus d’erreurs mais ça ne marche toujours pas x) j’ai du faire une connerie quelque part T_T
2013-08-13 13:21:39 [INFO] [STDERR] java.lang.reflect.InvocationTargetException 2013-08-13 13:21:39 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-08-13 13:21:39 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 13:21:39 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-08-13 13:21:39 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.entity.EntityList.createEntityByID(EntityList.java:205) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.item.ItemMonsterPlacer.spawnCreature(ItemMonsterPlacer.java:175) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.item.ItemMonsterPlacer.onItemUse(ItemMonsterPlacer.java:81) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.item.ItemStack.tryPlaceItemIntoWorld(ItemStack.java:152) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:429) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:554) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:141) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:54) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:689) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:585) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:129) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2013-08-13 13:21:39 [INFO] [STDERR] Caused by: java.lang.NullPointerException 2013-08-13 13:21:39 [INFO] [STDERR] at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:187) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:81) 2013-08-13 13:21:39 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(EntityCreature.java:40) 2013-08-13 13:21:39 [INFO] [STDERR] at nyvelia.common.MobSanglier.<init>(MobSanglier.java:11) 2013-08-13 13:21:39 [INFO] [STDERR] … 20 more 2013-08-13 13:21:39 [WARNING] [Minecraft-Server] Skipping Entity with id 3 ```</init></init></init></init>
-
at nyvelia.common.MobSanglier.func_110147_ax(MobSanglier.java:28)
Oui.
-
Franchement je vois pas, j’ai regardé les lignes avec les erreurs et je vois pas ce qui cloche 0_o
La ligne 11 c’est super(world); => je vois pas où est l’erreur?
La ligne 28 c’est this.func_110148_a(SharedMonsterAttributes.field_111264_e).func_111128_a(8.0D); => j’ai modifié plein de fois la valeur aucun changement.J’ai tenté de modifier pas mal de valeurs mais ça ne change rien …
-
Essaye de mettre la ligne en commentaire pour voir ? (avec // )
-
Damn c’est incroyable… je l’avais fais et ça ne marchait pas, et la je remets en commentaire et ça marche… WTF?! En tout cas merci !