Jump to content

TheOrangeInd

Members
  • Posts

    30
  • Joined

  • Last visited

Everything posted by TheOrangeInd

  1. I trying to create a custom entity with multiple hitboxes (like vanilla Ender Dragon). The problem is that I'm not sure how to properly spawn parts of an entity. All I've found in vanilla code is creating an instances of EnderDragonPartEntity in the EnderDragonEntity constructor. And the parts themselves do not imply the use of the addEntity method on them. So, I want to understand how to correctly create a similar Part entity that inherits the type of the parent entity using forge. Or should I create a separate type for this Part? I would be grateful for any advice. P.S. Sorry for my English.
  2. I have a custom hostile entity, that can grab his attack target. In general, target becomes a passenger of my entity, when AI task is triggered. So, I have a problem with position of this passenger. When my entity grabs, for example, a villager, it all looks fine. But, when this attack applied to player, the last one gets some twitching and usually located above attacker (screenshots are below the text). It's seems like something makes a conflict with a method, which I'm using... Can somebody help me. please? Correct work example: And this is my problem... And, finally, code fragment: @Override public void updatePassenger(Entity passenger) { double offsetX = 0; double offsetZ = 0; if (this.isPassenger(passenger)) { offsetX = Math.sin(-this.rotationYawHead / (180D / Math.PI)) * 0.5F; offsetZ = Math.cos(this.rotationYawHead / (180D / Math.PI)) * 0.5F; } Vec3d pos = new Vec3d(this.posX + offsetX, this.posY, this.posZ + offsetZ); passenger.setPosition(pos.x, pos.y, pos.z); } (It's a one of the latest tries)
  3. I had no model animation experience before. Now, after following your recommendatios, I got a correctly working animation. Thank you very much!
  4. In the last try I did it this way: That is parts of my entity class protected NBTTagCompound compound = new NBTTagCompound(); @Override public void compoundInit() { compound.setByte("attackTime", (byte)0); compound.setBoolean("isAttacking", false); } public void setAttacking(Boolean attacking) { compound.setBoolean("isAttacking", attacking); if(attacking) setAttackTimer((byte)ATTACK_TIME); syncEntityOnClient(); } public boolean isAttacking() { return compound.getBoolean("isAttacking"); } public void setAttackTimer(byte value) { compound.setByte("attackTime", value); syncEntityOnClient(); } public void decreaseAttackTimer() { compound.setByte("attackTime", (byte)(getAttackTimer() - 1)); syncEntityOnClient(); } public byte getAttackTimer() { return compound.getByte("attackTime"); } @Override public void setCompound(NBTTagCompound setTo) { compound = setTo; } @Override public NBTTagCompound getCompound() { return compound; } @Override public void syncEntityOnClient() { Sync.sendEntitySyncToClient(this); } my AI class public boolean shouldExecute() { EntityLivingBase target = this.entityHost.getAttackTarget(); if (target == null) { return false; } else { if(this.entityHost.getDistanceSq(target) < this.maxAttackDistance && this.entityHost.getDistance(target) > 4 && target.getHealth() > 5) { this.attackTarget = target; this.entityHost.setAttacking(true); return true; } else { this.entityHost.setAttacking(false); return false; } } } public boolean shouldContinueExecuting() { if (entityHost.getAttackTimer() > 0) { entityHost.decreaseAttackTimer(); } return this.shouldExecute() || !this.entityHost.getNavigator().noPath(); } my model class @Override public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) { float phase[] = {0.1F, 0.2F, 0.1F, -0.1F, -0.3F, -0.4F, -0.3F, -0.2F, -0.1F, 0.0F}; boolean attacking = ((EntityThrower)entitylivingbaseIn).isAttacking(); int time = ((EntityThrower)entitylivingbaseIn).getAttackTimer(); if(attacking) { if(time > 0) { this.jawL.rotateAngleX = -0.81F + phase[time - 1]; this.jawR.rotateAngleX = -0.81F + phase[time - 1]; } } } So, I tried using NBTTagCompound to save and load information about my entities, but it still doesn't work. What am I doing wrong?
  5. I have a custom entity with model and custom AI task. I want make an attack animation for my model class, that will run when entity performs my custom AI task. I already tried some ways, but ALL my entities always animating, when fighting only one of them. Tell me, please, what is the most correct way to bind an animation to entity tasks.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.