Mob incompréhensible
-
Bonjour, j’ai essayé de coder un mob entièrement modulable:
package fr.oeilomega.wozcontent.common; import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAIAvoidEntity; import net.minecraft.entity.ai.EntityAIHurtByTarget; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAIMoveThroughVillage; import net.minecraft.entity.ai.EntityAIMoveTowardsRestriction; import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class wozzombie extends EntityMob { public wozzombie(World world) { super(world); this.getNavigator().setBreakDoors(true); this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); this.tasks.addTask(4, new EntityAIMoveTowardsRestriction(this, 1.0D)); this.tasks.addTask(5, new EntityAIMoveThroughVillage(this, 1.0D, false)); this.tasks.addTask(6, new EntityAIWander(this, 1.0D)); this.tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 0.0F)); this.tasks.addTask(7, new EntityAILookIdle(this)); this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); } public void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(1D); this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); } }
Donc normalement il fait bien un coeur de dégâts non ?
Il est censé me voir à 40 bloc non ?
il est censé allez aussi vite qu’une tortue ayant la gastro-entérite non ?Alors pourquoi, il me three-shot, a des yeux de sniper et cours aussi vite q’un sprinteur enragé ?
Second problème:
package fr.oeilomega.wozcontent.proxy; import net.minecraft.client.model.ModelBiped; import cpw.mods.fml.client.registry.RenderingRegistry; import fr.oeilomega.wozcontent.client.Modelwozombie; import fr.oeilomega.wozcontent.common.wozzombie; public class ClientProxy extends CommonProxy { public void registerRender() {} { RenderingRegistry.registerEntityRenderingHandler(wozzombie.class, new renderwozzombie(new Modelwozombie(), 0.5F)); } }
J’ai essayé de faire mon rendu avec techne comme dans le tutoriel sauf que…Il me barre la ligne
Merci d’avance !
-
c’est bien d’avoir des ia dans le constructeur encore faut-il cette méthode pour les activer
/** * Returns true if the newer Entity AI code should be run */ protected boolean isAIEnabled() { return true; }
-
Wait…Me dit pas que parce que j’ai pas utiliser la méthode que les attributs de l’entité ne fonctionne pas
-
Pour ce qui est de la vitesse de déplacement, la vitesse de base(si on ne met pas la fonction movementSpeed) est de 0.6999… Donc ton mob avance plus vite que la moyenne si tu veux vraiment qu’il soit lent met 0.2 ou moins à toi de voir.
-
Je veux juste qu’il ai les mêmes attributs qu’un zombie.
-
public void registerRender() {} { RenderingRegistry.registerEntityRenderingHandler(wozzombie.class, new renderwozzombie(new Modelwozombie(), 0.5F)); }
Si tu as des accolades qui ne servent à rien, normal que ça ne fonctionne pas
↓↓↓↓↓public void registerRender() { RenderingRegistry.registerEntityRenderingHandler(wozzombie.class, new renderwozzombie(new Modelwozombie(), 0.5F)); }
-
Toujours le même problème en fait
-
Il te barre quelle ligne ?
-
celle ci: new renderwozzombie(new Modelwozombie(), 0.5F));
Ps: mtn, c’est plus un sprinteur enragé, c’est Usain Bolt dans 28 jours plus tard
-
@‘Oeilomega’:
celle ci: new renderwozzombie(new Modelwozombie(), 0.5F));
Ps: mtn, c’est plus un sprinteur enragé, c’est Usain Bolt dans 28 jours plus tard
Souvent quand un mob est aussi rapide que ça c’est un problème d’ia
As-tu bien mis ma méthode de mon message ci-dessus, dans la classe de ton entity ? -
Eclipse te donne quoi comme erreur ?
-
mon nouveau code:
package fr.oeilomega.wozcontent.common; import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAIAvoidEntity; import net.minecraft.entity.ai.EntityAIHurtByTarget; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAIMoveThroughVillage; import net.minecraft.entity.ai.EntityAIMoveTowardsRestriction; import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class wozzombie extends EntityMob { public wozzombie(World world) { super(world); this.getNavigator().setBreakDoors(true); this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); this.tasks.addTask(4, new EntityAIMoveTowardsRestriction(this, 1.0D)); this.tasks.addTask(5, new EntityAIMoveThroughVillage(this, 1.0D, false)); this.tasks.addTask(6, new EntityAIWander(this, 1.0D)); this.tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 0.0F)); this.tasks.addTask(7, new EntityAILookIdle(this)); this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); } public void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(1D); this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.1D); } protected boolean isAIEnabled() { return true; } }
et pour robin:
new renderwozzombie(new Modelwozombie(), 0.5F));
The constructor renderwozzombie(Modelwozombie, float) is undefined
-
envoie ta classe renderwozzombie
(d’ailleurs ta classe devrait être nommé RenderWozzombie pour respecter la convention Java). -
package fr.oeilomega.wozcontent.proxy; import fr.oeilomega.wozcontent.common.wozcontent; import fr.oeilomega.wozcontent.common.wozzombie; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.entity.EntityLiving; import net.minecraft.util.ResourceLocation; public class renderwozzombie extends RenderBiped { public final ResourceLocation texture = new ResourceLocation(wozcontent.MODID, "textures/entity/wozzombie1.png"); public renderwozzombie(ModelBiped model, float shadow) { super(model, shadow); } protected ResourceLocation getEntityTexture(EntityLiving living) { return this.getwozzombieTexture((wozzombie)living); } private ResourceLocation getwozzombieTexture(wozzombie wozzombie) { return texture; } }
Et voila !
-
Si ton modèle n’est pas extends ModelBiped, il faut que tu change le code de ton rendu, il faut faire un rendu extends RenderLiving
-
Je viens de le faire et il y a aucune amélioration…
-
Renvoie ta classe après modification.
-
le model:
package fr.oeilomega.wozcontent.client; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class Modelwozombie extends ModelBase { //fields ModelRenderer head; ModelRenderer body; ModelRenderer rightarm; ModelRenderer leftarm; ModelRenderer rightleg; ModelRenderer leftleg; public Modelwozombie() { textureWidth = 64; textureHeight = 32; head = new ModelRenderer(this, 0, 0); head.addBox(-4F, -8F, -4F, 8, 8, 8); head.setRotationPoint(0F, 0F, 0F); head.setTextureSize(64, 32); head.mirror = true; setRotation(head, 0F, 0F, 0F); body = new ModelRenderer(this, 16, 16); body.addBox(-4F, 0F, -2F, 8, 12, 4); body.setRotationPoint(0F, 0F, 0F); body.setTextureSize(64, 32); body.mirror = true; setRotation(body, 0F, 0F, 0F); rightarm = new ModelRenderer(this, 40, 16); rightarm.addBox(-3F, -2F, -2F, 4, 12, 4); rightarm.setRotationPoint(-5F, 2F, 0F); rightarm.setTextureSize(64, 32); rightarm.mirror = true; setRotation(rightarm, 0F, 0F, 0F); leftarm = new ModelRenderer(this, 40, 16); leftarm.addBox(-1F, -2F, -2F, 4, 12, 4); leftarm.setRotationPoint(5F, 2F, 0F); leftarm.setTextureSize(64, 32); leftarm.mirror = true; setRotation(leftarm, 0F, 0F, 0F); rightleg = new ModelRenderer(this, 0, 16); rightleg.addBox(-2F, 0F, -2F, 4, 12, 4); rightleg.setRotationPoint(-2F, 12F, 0F); rightleg.setTextureSize(64, 32); rightleg.mirror = true; setRotation(rightleg, 0F, 0F, 0F); leftleg = new ModelRenderer(this, 0, 16); leftleg.addBox(-2F, 0F, -2F, 4, 12, 4); leftleg.setRotationPoint(2F, 12F, 0F); leftleg.setTextureSize(64, 32); leftleg.mirror = true; setRotation(leftleg, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); head.render(f5); body.render(f5); rightarm.render(f5); leftarm.render(f5); rightleg.render(f5); leftleg.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } }
Le rendu:
package fr.oeilomega.wozcontent.proxy; import fr.oeilomega.wozcontent.common.wozcontent; import fr.oeilomega.wozcontent.common.wozzombie; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.util.ResourceLocation; public class renderwozzombie extends RenderLiving { public final ResourceLocation texture = new ResourceLocation(wozcontent.MODID, "textures/entity/wozzombie1.png"); public renderwozzombie(ModelBiped model, float shadow) { super(model, shadow); } protected ResourceLocation getEntityTexture(EntityLiving living) { return this.getMobTutorielTexture((wozzombie)living); } private ResourceLocation getMobTutorielTexture(wozzombie wozzombie) { return texture; } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { // TODO Auto-generated method stub return null; } }
-
Remplace
public renderwozzombie(ModelBiped model, float shadow)par
public renderwozzombie(ModelBase model, float shadow)
-
OK, y’a plus d’erreurs mais le model apparait pas