Advertisement
Guest User

net.minecraft.entity.ai.EntityAIHurtByTarget.alertOthers()

a guest
Feb 12th, 2018
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.62 KB | None | 0 0
  1. protected void alertOthers()
  2. {
  3.     double d0 = this.getTargetDistance();
  4.  
  5.     for (EntityCreature entitycreature : this.taskOwner.world.getEntitiesWithinAABB(this.taskOwner.getClass(), (new AxisAlignedBB(this.taskOwner.posX, this.taskOwner.posY, this.taskOwner.posZ, this.taskOwner.posX + 1.0D, this.taskOwner.posY + 1.0D, this.taskOwner.posZ + 1.0D)).grow(d0, 10.0D, d0)))
  6.     {
  7.         if (this.taskOwner != entitycreature && entitycreature.getAttackTarget() == null && (!(this.taskOwner instanceof EntityTameable) || ((EntityTameable)this.taskOwner).getOwner() == ((EntityTameable)entitycreature).getOwner()) && !entitycreature.isOnSameTeam(this.taskOwner.getRevengeTarget()))
  8.         {
  9.             boolean flag = false;
  10.            
  11.             int xdiff = (int) (entitycreature.posX - this.taskOwner.getRevengeTarget().posX);
  12.             int ydiff = (int) (entitycreature.posY - this.taskOwner.getRevengeTarget().posY);
  13.             int zdiff = (int) (entitycreature.posZ - this.taskOwner.getRevengeTarget().posZ);
  14.             int x = (int)entitycreature.posX;
  15.             int y = (int)entitycreature.posY;
  16.             int z = (int)entitycreature.posZ;
  17.             boolean sincX = true;
  18.             boolean sincY = true;
  19.             boolean sincZ = true;
  20.             if(xdiff == 0) {
  21.                 sincX = false;
  22.             }
  23.             if(ydiff == 0) {
  24.                 sincY = false;
  25.             }
  26.             if(zdiff == 0) {
  27.                 sincZ = false;
  28.             }
  29.             for(;;) {
  30.                 if(sincX) {
  31.                     if(xdiff < 0) {
  32.                         x++;
  33.                     } else {
  34.                         x--;
  35.                     }
  36.                 }
  37.                 if(sincY) {
  38.                     if(ydiff < 0) {
  39.                         y++;
  40.                     } else {
  41.                         y--;
  42.                     }
  43.                 }
  44.                 if(sincZ) {
  45.                     if(zdiff < 0) {
  46.                         z++;
  47.                     } else {
  48.                         z--;
  49.                     }
  50.                 }
  51.                
  52.                 IBlockState bs = this.taskOwner.world.getBlockState(new BlockPos(x, y, z));
  53.                
  54.                 if(bs.getMaterial() != Material.AIR) {
  55.                     // TODO: Debug message
  56.                     System.out.println("Block at X" + x + ", Y" + y + ", Z" + z + " is " + bs.getBlock().getLocalizedName() + ", aborting...");
  57.                     flag = true;
  58.                     break;
  59.                 } else {
  60.                     // TODO: Debug message
  61.                     System.out.println("Block at X" + x + ", Y" + y + ", Z" + z + " is air, continuing...");
  62.                 }
  63.  
  64.                 if(x == (int)this.taskOwner.getRevengeTarget().posX) {
  65.                     sincX = false;
  66.                 }
  67.                 if(y == (int)this.taskOwner.getRevengeTarget().posY) {
  68.                     sincY = false;
  69.                 }
  70.                 if(z == (int)this.taskOwner.getRevengeTarget().posZ) {
  71.                     sincZ = false;
  72.                 }
  73.                 if(!sincX && !sincY && !sincZ) {
  74.                     break;
  75.                 }
  76.             }
  77.            
  78.             for (Class<?> oclass : this.excludedReinforcementTypes)
  79.             {
  80.                 if (entitycreature.getClass() == oclass)
  81.                 {
  82.                     flag = true;
  83.                     break;
  84.                 }
  85.             }
  86.  
  87.             if (!flag)
  88.             {
  89.                 this.setEntityAttackTarget(entitycreature, this.taskOwner.getRevengeTarget());
  90.             }
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement