Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2014
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.11 KB | None | 0 0
  1. package me.innofly.minigame.zombie;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.List;
  5.  
  6. import org.bukkit.craftbukkit.v1_7_R3.CraftWorld;
  7.  
  8. import net.minecraft.server.v1_7_R3.EntityHuman;
  9. import net.minecraft.server.v1_7_R3.EntityIronGolem;
  10. import net.minecraft.server.v1_7_R3.EntitySpider;
  11. import net.minecraft.server.v1_7_R3.EntityZombie;
  12. import net.minecraft.server.v1_7_R3.PathfinderGoalFloat;
  13. import net.minecraft.server.v1_7_R3.PathfinderGoalHurtByTarget;
  14. import net.minecraft.server.v1_7_R3.PathfinderGoalLookAtPlayer;
  15. import net.minecraft.server.v1_7_R3.PathfinderGoalMeleeAttack;
  16. import net.minecraft.server.v1_7_R3.PathfinderGoalMoveThroughVillage;
  17. import net.minecraft.server.v1_7_R3.PathfinderGoalMoveTowardsRestriction;
  18. import net.minecraft.server.v1_7_R3.PathfinderGoalNearestAttackableTarget;
  19. import net.minecraft.server.v1_7_R3.PathfinderGoalRandomLookaround;
  20. import net.minecraft.server.v1_7_R3.PathfinderGoalRandomStroll;
  21. import net.minecraft.server.v1_7_R3.PathfinderGoalSelector;
  22.  
  23. public class CustomZombie extends EntityZombie
  24. {
  25.     public CustomZombie(org.bukkit.World world)
  26.     {
  27.         super(((CraftWorld)world).getHandle());
  28.         List goalB = (List)getPrivateField("b", PathfinderGoalSelector.class, goalSelector); goalB.clear();
  29.         List goalC = (List)getPrivateField("c", PathfinderGoalSelector.class, goalSelector); goalC.clear();
  30.         List targetB = (List)getPrivateField("b", PathfinderGoalSelector.class, targetSelector); targetB.clear();
  31.         List targetC = (List)getPrivateField("c", PathfinderGoalSelector.class, targetSelector); targetC.clear();
  32.  
  33.         this.goalSelector.a(0, new PathfinderGoalFloat(this));
  34.         this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityIronGolem.class, 1.0D, false));
  35.         this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, EntitySpider.class, 1.0D, true));
  36.         this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D));
  37.         this.goalSelector.a(6, new PathfinderGoalMoveThroughVillage(this, 1.0D, false));
  38.         this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.0D));
  39.         this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
  40.         this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
  41.         this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true));
  42.         this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntitySpider.class, 0, true));
  43.         this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityIronGolem.class, 0, false));
  44.     }
  45.    
  46.    
  47.     public static Object getPrivateField(String fieldName, Class clazz, Object object)
  48.     {
  49.         Field field;
  50.         Object o = null;
  51.         try
  52.         {
  53.             field = clazz.getDeclaredField(fieldName);
  54.             field.setAccessible(true);
  55.             o = field.get(object);
  56.         }
  57.         catch(NoSuchFieldException e)
  58.         {
  59.             e.printStackTrace();
  60.         }
  61.         catch(IllegalAccessException e)
  62.         {
  63.             e.printStackTrace();
  64.         }
  65.         return o;
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement