Créer un mob basique
-
@‘robin4002’:
Ou as-tu placé les textures ?
En passant, utilise plutôt :protected static final ResourceLocation minerTexture = new ResourceLocation("modmohumans2", "mob/mineur.png");Merci, ça marche :D. Par contre je n’arrive pas à mettre plusieurs textures pour le même mob :(.
Si quelqu’un pouvait m’aider
D’ailleurs j’ai fait quelques tests mais mes mobs ne m’attaquent pas, même en survival. Une solution :D?
EDIT :
La texture de mon chevalier est invisible, pouvez-vous m’aider ?Mon code :
RenderKnight :package fr.MrBlockTNT.MoHumans; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.util.ResourceLocation; public class RenderKnight extends RenderBiped { protected static final ResourceLocation texture = new ResourceLocation("modmohumans2", "mob/knight1.png"); public RenderKnight(ModelBiped base, float tailleOmbre) { super(base, tailleOmbre); } protected ResourceLocation getTextures(EntityAssassin miner) { return texture; } protected ResourceLocation getEntityTexture(Entity par1Entity) { return this.getTextures((EntityAssassin)par1Entity); } }ClientProxy :
package MrBlockTNT.Proxy; import cpw.mods.fml.client.registry.RenderingRegistry; import fr.MrBlockTNT.MoHumans.*; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.MinecraftForgeClient; public class ClientProxy extends CommonProxy { @Override public void registerRender() { RenderingRegistry.registerEntityRenderingHandler(EntityMiner.class, new RenderMiner(new ModelBiped(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityAssassin.class, new RenderAssassin(new ModelBiped(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityKnight.class, new RenderKnight(new ModelBiped(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityWoodCuter.class, new RenderWoodCuter(new ModelBiped(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityHunter.class, new RenderHunter(new ModelBiped(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityBarbarian.class, new RenderBarbarian(new ModelBiped(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityPirate.class, new RenderPirate(new ModelBiped(), 0.5F)); } }ModMoHumans2 :
package fr.MrBlockTNT.MoHumans; import net.minecraft.entity.EnumCreatureType; import MrBlockTNT.Proxy.CommonProxy; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid = "ModMoHumans2", name = "Mo'Humans 2", version = "1.0.0") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class ModMoHumans { @SidedProxy(clientSide = "MrBlockTNT.Proxy.ClientProxy", serverSide = "MrBlockTNT.Proxy.CommonProxy") public static CommonProxy proxy; @Instance("ModMoHumans2") public static ModMoHumans instance; @EventHandler public void PreInit(FMLPreInitializationEvent event) { } @EventHandler public void Init(FMLInitializationEvent event) { proxy.registerRender(); EntityRegistry.registerGlobalEntityID(EntityMiner.class, "Miner", EntityRegistry.findGlobalUniqueEntityId(), 0x6A7372, 0x78807F); EntityRegistry.registerModEntity(EntityMiner.class, "Miner", 500, this, 40, 1, true); EntityRegistry.addSpawn(EntityMiner.class, 1, 1, 2, EnumCreatureType.ambient); LanguageRegistry.instance().addStringLocalization("entity.Miner.name", "Miner"); EntityRegistry.registerGlobalEntityID(EntityAssassin.class, "Assassin", EntityRegistry.findGlobalUniqueEntityId(), 0xF00000, 0x9E9292); EntityRegistry.registerModEntity(EntityAssassin.class, "Assassin", 501, this, 40, 1, true); EntityRegistry.addSpawn(EntityAssassin.class, 1, 1, 1, EnumCreatureType.monster); LanguageRegistry.instance().addStringLocalization("entity.Assassin.name", "Assassin"); EntityRegistry.registerGlobalEntityID(EntityKnight.class, "Knight", EntityRegistry.findGlobalUniqueEntityId(), 0x131514, 0xC6DCD9); EntityRegistry.registerModEntity(EntityKnight.class, "Knight", 502, this, 40, 1, true); EntityRegistry.addSpawn(EntityKnight.class, 1, 3, 1, EnumCreatureType.ambient); LanguageRegistry.instance().addStringLocalization("entity.Knight.name", "Knight"); EntityRegistry.registerGlobalEntityID(EntityWoodCuter.class, "WoodCuter", EntityRegistry.findGlobalUniqueEntityId(), 0x261801, 0x674306); EntityRegistry.registerModEntity(EntityWoodCuter.class, "WoodCuter", 503, this, 40, 1, true); EntityRegistry.addSpawn(EntityWoodCuter.class, 1, 1, 1, EnumCreatureType.ambient); LanguageRegistry.instance().addStringLocalization("entity.WoodCuter.name", "Woodcuter"); EntityRegistry.registerGlobalEntityID(EntityHunter.class, "Hunter", EntityRegistry.findGlobalUniqueEntityId(), 0x261811, 0xC7C3BC); EntityRegistry.registerModEntity(EntityHunter.class, "Hunter", 504, this, 40, 1, true); EntityRegistry.addSpawn(EntityHunter.class, 1, 1, 1, EnumCreatureType.ambient); LanguageRegistry.instance().addStringLocalization("entity.Hunter.name", "Hunter"); EntityRegistry.registerGlobalEntityID(EntityBarbarian.class, "Barbarian", EntityRegistry.findGlobalUniqueEntityId(), 0x231300, 0x000000); EntityRegistry.registerModEntity(EntityBarbarian.class, "Barbarian", 505, this, 40, 1, true); EntityRegistry.addSpawn(EntityBarbarian.class, 1, 1, 1, EnumCreatureType.monster); LanguageRegistry.instance().addStringLocalization("entity.Barbarian.name", "Barbarian"); EntityRegistry.registerGlobalEntityID(EntityPirate.class, "Pirate", EntityRegistry.findGlobalUniqueEntityId(), 0x0F19AF, 0xDB0000); EntityRegistry.registerModEntity(EntityPirate.class, "Pirate", 506, this, 40, 1, true); EntityRegistry.addSpawn(EntityPirate.class, 1, 1, 1, EnumCreatureType.monster); LanguageRegistry.instance().addStringLocalization("entity.Pirate.name", "Pirate"); } @EventHandler public void PostInit(FMLPostInitializationEvent event) { } }EDIT 2 :
En fait j’ai trouvé mon erreur, qui était due à un oubli de modification après copié/collé x) . -
Tu veux faire quoi pour provoquer le changement de texture?
-
Une texture aléatoire parmi les disponibles pour le mob à son spawn (ex: mineur1/mineur2) comme pour les anciennes versions de forge.
-
Essaye de mettre du Random dans une condition. Sinon, regarde le code des Chevaux ou des villageois.
-
Ok merci, mais je me sert pas trop des Random donc… disons que ça va être légèrement compliqué

EDIT :
Il n’existerai pas un event de Forge fait exprès ? :huh: -
Comment fait-on pour faire tenir un objet à un mob ? J’ai cherché dans les classes des mobs de base comme le squelette mais tout ce que j’ai testé ne marche pas.
PS :
Existe-t-il une page web concernant les degrés de fréquence de spawn Minecraft ? (Je sais pas si c’est la rareté qui est trop élevée ou si c’est mes mobs qui buguent :() -
@‘MrBlockTNT’:
Ok merci, mais je me sert pas trop des Random donc… disons que ça va être légèrement compliqué

EDIT :
Il n’existerai pas un event de Forge fait exprès ? :huh:Pourquoi il y aurait un event pour un truc aussi simple o_O
Tu déclare deux resourceLocation, et ensuite :protected ResourceLocation getAniZobTextures(EntityAnizob anizob) { if(anizob.worldObj.rand.nextInt(1) == 0) { return texture; } else { return texture2; } }Rien de compliqué.
Pour faire tenir un objet en main, il y a une fonction dans le mob, mais aussi dans le rendu. -
Ok merci, par contre je crois que tu as répondu après mon edit x) donc si quelqu’un pouvait m’aider à ce niveau là (fréquence de spawn)
-
Hum, pour ta question dans le ton édit, je sais pas.
-
C’est ```java
EntityRegistry.addSpawn(Anyzoo.class, 5, 2, 4, EnumCreatureType.monster, BiomeGenBase.plains); -
Salut !
Merci pour ce tutoriel
Petit problème : mon mob ne fait pas planter le client (c’est déjà ça) mais il génère des erreurs quand j’essaye de le faire pop ::::
Client> 2013-10-26 19:04:31 [INFO] [STDERR] java.lang.reflect.InvocationTargetException
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.entity.EntityList.func_75616_a(EntityList.java:205)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.item.ItemMonsterPlacer.func_77840_a(SourceFile:139)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.item.ItemMonsterPlacer.func_77648_a(SourceFile:86)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.item.ItemStack.func_77943_a(ItemStack.java:152)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.item.ItemInWorldManager.func_73078_a(ItemInWorldManager.java:429)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.network.NetServerHandler.func_72472_a(NetServerHandler.java:554)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.network.packet.Packet15Place.func_73279_a(SourceFile:58)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.network.MemoryConnection.func_74428_b(MemoryConnection.java:89)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.network.NetServerHandler.func_72570_d(NetServerHandler.java:141)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.network.NetworkListenThread.func_71747_b(NetworkListenThread.java:54)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.func_71747_b(IntegratedServerListenThread.java:109)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:689)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:585)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:129)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:582)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] Caused by: java.lang.NullPointerException
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at Yseriu.Test.EntityAntiZob.func_110147_ax(EntityAntiZob.java:19)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:193)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:85)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at net.minecraft.entity.EntityCreature.<init>(SourceFile:22)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] at Yseriu.Test.EntityAntiZob.<init>(EntityAntiZob.java:10)
Client> 2013-10-26 19:04:31 [INFO] [STDERR] … 20 more
Client> 2013-10-26 19:04:31 [WARNING] [Minecraft-Server] Skipping Entity with id 25:::
Et voilà, juste ça dans les logs, rien de visible IG
Mon code :
Entity
:::package Yseriu.Test; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.world.World; public class EntityAntiZob extends EntityCreature { public EntityAntiZob(World par1World) { super(par1World); this.tasks.addTask(1, new EntityAISwimming(this)); } protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(40D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setAttribute(0.7D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(8D); } }:::
Render
:::package Yseriu.Test; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderAntiZob extends RenderBiped { protected static final ResourceLocation texture = new ResourceLocation("ytestmod:alex.png"); public RenderAntiZob(ModelBiped biped, float tailleOmbre) { super(biped, tailleOmbre); } protected ResourceLocation getAntiZobTextures(EntityAntiZob anizob) { return texture; } protected ResourceLocation getEntityTexture(Entity par1Entity) { return this.getAntiZobTextures((EntityAntiZob)par1Entity); } }:::
Merci !</init></init></init></init>
-
Supprime la ligne
this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(8D);
Les mobs extends EntityCreature ne sont pas agressif, et donc ne fond pas de dégât. Il faut faire un extends EntityMob si tu veux qu’il soit agressif. -
ça marche, merci

enfin, mon mob a pas de texture … j’ai mis le fichier de texture un peu partout, j’ai regardé le fichier du squelette, du coup j’ai changé le : en / toujours rien (le mob est là, je vois sa barre de vie de TukMC) sur les logs, j’ai des NPE, et des ReportedException: Registering texture.
Je sais pas quoi faire. -
Tu as placés où ta texture ?
-
assets/ytsetmod/alex.png
ytestmod, c’est mon modid sans majuscules
alex, c’est un skin.
Je l’ai aussi copié/collé un peu partout, sans résultat. <- Technique du boulet
-
tu dois le mettre dans “assets/ytsetmod/entity/alex.png”
-
Non, essaye avec :
protected static final ResourceLocation texture = new ResourceLocation("ytsetmod:textures/entity/alex.png");et place la texture dans :
assets/ytsetmod/textures/entity/alex.png -
ça marche merci

-
Salut,
J’ai aussi un problème avec la texture du mob qui ne s’affiche pas:protected static final ResourceLocation texture = new ResourceLocation("terracraft:textures/entity/test.png"); -
Où as-tu placé la texture ?
