Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.innofly.minigame.zombie;
- import java.lang.reflect.Field;
- import java.util.List;
- import org.bukkit.craftbukkit.v1_7_R3.CraftWorld;
- import net.minecraft.server.v1_7_R3.EntityHuman;
- import net.minecraft.server.v1_7_R3.EntityIronGolem;
- import net.minecraft.server.v1_7_R3.EntitySpider;
- import net.minecraft.server.v1_7_R3.EntityZombie;
- import net.minecraft.server.v1_7_R3.PathfinderGoalFloat;
- import net.minecraft.server.v1_7_R3.PathfinderGoalHurtByTarget;
- import net.minecraft.server.v1_7_R3.PathfinderGoalLookAtPlayer;
- import net.minecraft.server.v1_7_R3.PathfinderGoalMeleeAttack;
- import net.minecraft.server.v1_7_R3.PathfinderGoalMoveThroughVillage;
- import net.minecraft.server.v1_7_R3.PathfinderGoalMoveTowardsRestriction;
- import net.minecraft.server.v1_7_R3.PathfinderGoalNearestAttackableTarget;
- import net.minecraft.server.v1_7_R3.PathfinderGoalRandomLookaround;
- import net.minecraft.server.v1_7_R3.PathfinderGoalRandomStroll;
- import net.minecraft.server.v1_7_R3.PathfinderGoalSelector;
- public class CustomZombie extends EntityZombie
- {
- public CustomZombie(org.bukkit.World world)
- {
- super(((CraftWorld)world).getHandle());
- List goalB = (List)getPrivateField("b", PathfinderGoalSelector.class, goalSelector); goalB.clear();
- List goalC = (List)getPrivateField("c", PathfinderGoalSelector.class, goalSelector); goalC.clear();
- List targetB = (List)getPrivateField("b", PathfinderGoalSelector.class, targetSelector); targetB.clear();
- List targetC = (List)getPrivateField("c", PathfinderGoalSelector.class, targetSelector); targetC.clear();
- this.goalSelector.a(0, new PathfinderGoalFloat(this));
- this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityIronGolem.class, 1.0D, false));
- this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, EntitySpider.class, 1.0D, true));
- this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D));
- this.goalSelector.a(6, new PathfinderGoalMoveThroughVillage(this, 1.0D, false));
- this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.0D));
- this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
- this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
- this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true));
- this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntitySpider.class, 0, true));
- this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityIronGolem.class, 0, false));
- }
- public static Object getPrivateField(String fieldName, Class clazz, Object object)
- {
- Field field;
- Object o = null;
- try
- {
- field = clazz.getDeclaredField(fieldName);
- field.setAccessible(true);
- o = field.get(object);
- }
- catch(NoSuchFieldException e)
- {
- e.printStackTrace();
- }
- catch(IllegalAccessException e)
- {
- e.printStackTrace();
- }
- return o;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement