Immobiliser un mob et quelques autres demandes.
-
Je sais j’ai le même problème pour l’animation de course^^ Personnellement Mes mobs sont juste décoratif donc en invulnérable. Mais si tu veux régler le problème il faudrait retirer l’animation de course (je les tues avec un item adapter qui désactive le gode mode avec un click droit).
-
Il y aurait peut être moyen de simplement désactiver leur animation? :3
Je suis curieux, des mobs décoratifs? Des animaux empaillés?? ^^ -
Pour moi cela vient du faite que le mob est projeté en arrière quand il reçoit des dégâts mais vu qu’il ne peut pas être projeter l’animation de mouvement des pieds n’est prend jamais fin. Il faut juste trouver la méthode qui gère ça.
Je te cache pas que c’est très très très très long de fouiller dans les milliers de lignes de code… J’ai trouvé beaucoup de méthode lié au mouvement mais aucune pour le bump quand l’entité reçoit des dégâts…
et pour les entity, c’est juste des pnj décoratif pour embellir un peu les villes sur le serveur
Et d’autre seront relié avec un gui pour une banque, l’achat d’item etc… -
Sinon, tu fais un block avec le model des mobs ?
-
Oui je me doute, plus simplement, on peut pas simplement faire que le mob ne soit pas animé du tout? genre une statue :3
Edit: @Nolan je comprends le code que tu m’as envoyé, mais j’arrive pas à l’utiliser, fin je veux dire: si je le mets dans ma classe principale de mon mod, ilo v a seulement le faire au demarrage du jeu et pas à chaque fois non?
-
II) Il faut vraiment que je fasse des recherche la dessus, ça doit être un code tout con en plus, je vais voir demain si j’oublie pas (faut aussi que je finisse le tuto de merdredi)
III) Mettre en plus le burn time du joueur sur 0 lors de la sortie du bateau ?
IV) Lors de ça mort, tu fais que le boss spawn autre autre entité avec un timer, et au bout d’un certain temps, il repose tout les blocs de la structure et refait pop le boss.
V) Mets un spawn normal, et utilise l’event EntityJoinWorldEvent pour vérifier si event.entity instanceof TonEntité, et si c’est le cas, faire un random du genre
if(event.world.rand.nextInt(1000) < 998)
{
event.setCancel(true);
event.setResult(Result.DENY);
}
avec ça, une chance sur 1000 que ça spawn. -
@Robin: Et pour remédier à la suppression du boss par le /butcher une idée?
En tout cas merci des pistes que tu me donnes, je vais regarder un peu cette nuit
hum j’ai quelques hypothèses, sont elles faisables? trop compliqués? est ce la bonne approche?
- Générer ma structure en x y et z random puis généré le boss en x, y +48 et z?
- Génerer un bloc en x y+47 et z, qui soit incassable, qui toutes les 10h, regen la structure et le boss si il n’y en a pas déja un?
Edit 2: J’ai tenté d’annuler l’event du spawn, cela ne fonctionne pas, par contre le setdead oui mais cela fait ramer énormément je trouve
-
event.setCanceled(true);*
Je l’ai utilisé dans le tutoriel pour les commandes, il fonctionne très bien.Pour la structure, les deux devrait être faisable
Et pour /butcher, je vois vraiment pas comment faire, il faudrait modifier worldedit ou faire en sorte qu’il ne considère pas ton mob comme un monstre.
-
@D’accord merci, pour les structure, mon bloc, je peux le laisser sous forme de bloc ou je dois le faire devenir une Tileentity?
Quand j’ai essayé de cancel, il crash et me disait que je tentais d’annuler quelque chose qui n’est pas annulable
-
Tile entity je pense pour le timer, avec le update tick du bloc tu pourra pas le faire.
C’est étrange, car sur le tuto des commandes j’ai utilisé cette event + un cancel, et ça fonctionne très bien o_O
-
hum et bien je vais regarder mais je vois pas ce que j’avais fais de mal, je retesterai et je te redirai, as tu eu le temps de regarder pour la taille des items en main*?
-
Je vais voir ça dès que je peux, j’aimerai prendre de l’avance sur les tutoriels 1.7 pour laisser plus de temps aux correcteurs.
-
Je comprends.
j’ai ajouté un VI) à mon message principale ^^’VI)En codant ce matin j’ai eu un autre soucis, je cherche à faire que dès que mon mob soit tapé il fasse spawn 2 creeper autour de lui, je ne trouve pas de fonction me permettant de faire cela.
-
LivingHurtEvent pour ça. (ou alors la fonction onEntityHurt dans ton mob, il me semble que ça existe aussi).
-
je cherchais onEntityHurt justement, me semblait l’avoir vu mais j’ai pas trouvé en fouillant dans entity et EntityLiving… Donc j’ai préféré m’assurer savoir si j’étais aveugle ou si elle existe pas x)
-

Ça te va ça ?
Avec ce tutoriel de Kévin : http://www.minecraftforgefrance.fr/showthread.php?tid=130Mon IItemRenderer :
package tutoriel.client; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.IItemRenderer.ItemRenderType; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import cpw.mods.fml.client.FMLClientHandler; public class ItemTutorielRender implements IItemRenderer { private static final ResourceLocation RES_ITEM_GLINT = new ResourceLocation("textures/misc/enchanted_item_glint.png"); @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { switch(type) { case EQUIPPED: return true; default: return false; } } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { EntityLivingBase living = (EntityLivingBase)data[1]; int renderPass = item.getItem().requiresMultipleRenderPasses() ? 1 : 0; GL11.glPushMatrix(); GL11.glScalef(2F, 2F, 2F); GL11.glTranslatef(0.3F, 0.2F, 0F); GL11.glRotatef(-35.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(30.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(30.0F, 0.0F, 1.0F, 0.0F); this.renderItem(living, item, renderPass); GL11.glPopMatrix(); break; } default: break; } } public void renderItem(EntityLivingBase living, ItemStack stack, int pass) { TextureManager texturemanager = FMLClientHandler.instance().getClient().getTextureManager(); GL11.glPushMatrix(); Icon icon = living.getItemIcon(stack, pass); if(icon == null) { GL11.glPopMatrix(); return; } texturemanager.bindTexture(texturemanager.getResourceLocation(stack.getItemSpriteNumber())); Tessellator tessellator = Tessellator.instance; float f = icon.getMinU(); float f1 = icon.getMaxU(); float f2 = icon.getMinV(); float f3 = icon.getMaxV(); float f4 = 0.0F; float f5 = 0.3F; GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glTranslatef(-f4, -f5, 0.0F); float f6 = 1.5F; GL11.glScalef(f6, f6, f6); GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(-0.9375F, -0.0625F, 0.0F); ItemRenderer.renderItemIn2D(tessellator, f1, f2, f, f3, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); if(stack.hasEffect(pass)) { GL11.glDepthFunc(GL11.GL_EQUAL); GL11.glDisable(GL11.GL_LIGHTING); texturemanager.bindTexture(RES_ITEM_GLINT); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); float f7 = 0.76F; GL11.glColor4f(0.5F * f7, 0.25F * f7, 0.8F * f7, 1.0F); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); float f8 = 0.125F; GL11.glScalef(f8, f8, f8); float f9 = (float)(Minecraft.getSystemTime() % 3000L) / 3000.0F * 8.0F; GL11.glTranslatef(f9, 0.0F, 0.0F); GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F); ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F); GL11.glPopMatrix(); GL11.glPushMatrix(); GL11.glScalef(f8, f8, f8); f9 = (float)(Minecraft.getSystemTime() % 4873L) / 4873.0F * 8.0F; GL11.glTranslatef(-f9, 0.0F, 0.0F); GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F); ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDepthFunc(GL11.GL_LEQUAL); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } }Après il faut jouer sur le translate, rotate et le scale
-
Et bien, je vais regarder ça cette nuit, je te redirai demain ou dans la nuit afin de savoir si j’ai réussis, mais bon normalement oui

Au passage, j’ai réussis pour mon VI)
Mais je n’ai pas trouvé la fonction qui gérer le hit directement dans entity, enfin bon je l’ai fais avec un event et cela va tout aussi bien
Je vais au passage envoyer un mp à celui qui cherchait la solution, savoir si il l’a trouvé sinon je l’enverrai vers cette page, si il ne l’a pas déja remarqué

Edit: Je me disais bien que j’avais pas finis mon message, honte à moi:
Merci beaucoup du temps que tu as pris pour rechercher cela et pour me répondre tout au long de ce post robin, par l’aide que tu nous apporte à travers ce forum, certe tu ne sauves pas le monde, mais tu évites bien des tortures cérébrales à des débutants tels que moi :3
Thanks you very much

Bien sur merci aux autres membres permettant l’entraide sur ce forum, mais bon, on ne peut nier que robin est l’un des plus actifs à l’heure actuelle ( je ne sais point si cela à toujours était le cas :3)
-
@‘totos51’:
certe tu ne sauves pas le monde
Pas encore, pas encore

De rien ! -
Après avoir fait quelques trucs, quelques ajouts, et autres, j’ai quelques petits soucis:
Quand je fais spawn mon boss, je ne peux pas le taper, je dois quitter et relancer pour pouvoir le tuer…
la fonction est la suivante:public void updateEntity() { Compteur++; if (Compteur == 10) { CompteurParMillier++; Compteur = 0; } if (CompteurParMillier == 20) { CompteurParMillier = 0; System.out.println("Mommy Creepy Respawn!"); new MommyDungeon(this.worldObj, rand, this.xCoord, this.yCoord, this.zCoord); spawnMommyCreepy(this.worldObj, (double)(this.xCoord + 23), (double)(this.yCoord + 1), (double)(this.zCoord + 24)); } } public void spawnMommyCreepy(World world, double posX, double posY, double posZ) { Entity creepy = new EntityMommyCreepy(world); creepy.setPosition(posX, posY, posZ); world.spawnEntityInWorld(creepy); }Au passage, est ce la bonne méthode pour faire spawn un mob et un donjon toutes les 1020 tick (en réalité c’est 1000864)
De plus, depuis que j’ai fais mon zombie, j’ai un bug et je ne sais comment le régler ni dou il vient, mon zombie est un simple model bipd avec une texture de zombie différente…
Voici son render et le message d’erreur:Edit: Rectification! après tets il semblerait que cela vienne de mon araignée, je paste son render, à la place de celui du zombie:
package Gallad.Mineald; import net.minecraft.client.model.ModelSpider; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderSpider; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.boss.BossStatus; import net.minecraft.entity.monster.EntitySpider; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; public class RenderLittleSpider extends RenderLiving { private static final ResourceLocation LittleSpiderTextures = new ResourceLocation("mineald:textures/entity/LittleSpider.png"); private static final ResourceLocation spiderEyesTextures = new ResourceLocation("textures/entity/spider_eyes.png"); public RenderLittleSpider() { super(new ModelSpider(), 1.0F); this.shadowSize *= 0.25F; } protected void scaleSpider(EntityLittleSpider par1EntityLittleSpider, float par2) { GL11.glScalef(0.25F, 0.25F, 0.25F); } protected ResourceLocation getLittleSpiderTextures(EntityLittleSpider par1EntityLittleSpider) { return LittleSpiderTextures; } protected ResourceLocation getSpiderTextures(EntityLittleSpider par1EntitySpider) { return this.getLittleSpiderTextures((EntityLittleSpider)par1EntitySpider); } /** * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: * entityLiving, partialTickTime */ protected void preRenderCallback(EntityLivingBase par1EntityLivingBase, float par2) { this.scaleSpider((EntityLittleSpider)par1EntityLivingBase, par2); } /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. */ protected ResourceLocation getEntityTexture(Entity par1Entity) { return this.getLittleSpiderTextures((EntityLittleSpider)par1Entity); } protected int shouldRenderPass(EntityLivingBase par1EntityLivingBase, int par2, float par3) { return this.setSpiderEyeBrightness((EntityLittleSpider)par1EntityLivingBase, par2, par3); } protected int setSpiderEyeBrightness(EntityLittleSpider par1EntityGiantSpider, int par2, float par3) { if (par2 != 0) { return -1; } else { this.bindTexture(spiderEyesTextures); float f1 = 1.0F; GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); if (par1EntityGiantSpider.isInvisible()) { GL11.glDepthMask(false); } else { GL11.glDepthMask(true); } char c0 = 61680; int j = c0 % 65536; int k = c0 / 65536; OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, f1); return 1; } } }java.lang.NullPointerException 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.entity.RendererLivingEntity.doRenderLiving(RendererLivingEntity.java:168) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.entity.RenderLiving.doRenderLiving(RenderLiving.java:28) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.entity.RenderLiving.doRender(RenderLiving.java:142) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.entity.RenderManager.renderEntityWithPosYaw(RenderManager.java:312) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:281) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:524) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1160) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1006) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:946) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.Minecraft.run(Minecraft.java:838) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.client.main.Main.main(Main.java:93) 2014-02-21 11:28:00 [Infos] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2014-02-21 11:28:00 [Infos] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 2014-02-21 11:28:00 [Infos] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 2014-02-21 11:28:00 [Infos] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.launchwrapper.Launch.launch(Launch.java:131) 2014-02-21 11:28:00 [Infos] [STDERR] at net.minecraft.launchwrapper.Launch.main(Launch.java:27)Ce qui me trouble, c’est l’absence d’évocation d’un de mes fichiers…
En fait j’ai l’impression que cela ne vient pas de mon zombie… j’ai essayé de voir ce que j’ai rajouté d’autres qui pourrait en être la cause mais je ne vois pas… -
C’est un problème du côté de ton client proxy.
Pour le tile entity, je sais pas, à mon avis il serait mieux de faire un constructeur avec les coordonnées plutôt qu’utiliser setPosition(x, y, z)