Merge pull request #129 from CitizensDev/1.8

1.8
This commit is contained in:
fullwall 2014-11-30 14:22:13 +08:00
commit 20dadc38e8
86 changed files with 3069 additions and 2514 deletions

View File

@ -6,13 +6,13 @@
<groupId>net.citizensnpcs</groupId>
<artifactId>citizens</artifactId>
<version>2.0.13-SNAPSHOT</version>
<version>2.0.14-SNAPSHOT</version>
<name>Citizens</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<craftbukkit.version>1.7.10-R0.1-SNAPSHOT</craftbukkit.version>
<citizensapi.version>2.0.13-SNAPSHOT</citizensapi.version>
<craftbukkit.version>1.8-R0.1-SNAPSHOT</craftbukkit.version>
<citizensapi.version>2.0.14-SNAPSHOT</citizensapi.version>
<vault.version>1.4.1</vault.version>
<powermock.version>1.4.12</powermock.version>
<build.number>Unknown</build.number>

View File

@ -454,5 +454,5 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
return false;
}
private static final String COMPATIBLE_MC_VERSION = "1.7.10";
private static final String COMPATIBLE_MC_VERSION = "1.8";
}

View File

@ -268,7 +268,7 @@ public class NPCCommands {
}
CommandSenderCreateNPCEvent event = sender instanceof Player ? new PlayerCreateNPCEvent((Player) sender, copy)
: new CommandSenderCreateNPCEvent(sender, copy);
: new CommandSenderCreateNPCEvent(sender, copy);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
event.getNPC().destroy();
@ -344,7 +344,7 @@ public class NPCCommands {
spawnLoc = args.getSenderLocation();
}
CommandSenderCreateNPCEvent event = sender instanceof Player ? new PlayerCreateNPCEvent((Player) sender, npc)
: new CommandSenderCreateNPCEvent(sender, npc);
: new CommandSenderCreateNPCEvent(sender, npc);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
npc.destroy();
@ -1021,7 +1021,7 @@ public class NPCCommands {
@Requirements(selected = true, ownership = true, types = { EntityType.CREEPER })
public void power(CommandContext args, CommandSender sender, NPC npc) {
Messaging
.sendTr(sender, npc.getTrait(Powered.class).toggle() ? Messages.POWERED_SET : Messages.POWERED_STOPPED);
.sendTr(sender, npc.getTrait(Powered.class).toggle() ? Messages.POWERED_SET : Messages.POWERED_STOPPED);
}
@Command(
@ -1044,7 +1044,7 @@ public class NPCCommands {
}
@Command(aliases = { "npc" }, usage = "remove|rem (all|id|name)", desc = "Remove a NPC", modifiers = { "remove",
"rem" }, min = 1, max = 2)
"rem" }, min = 1, max = 2)
@Requirements
public void remove(final CommandContext args, final CommandSender sender, NPC npc) throws CommandException {
if (args.argsLength() == 2) {

View File

@ -23,12 +23,12 @@ import net.citizensnpcs.trait.CurrentLocation;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityTeleport;
import net.minecraft.server.v1_8_R1.PacketPlayOutEntityTeleport;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftLivingEntity;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
@ -169,7 +169,7 @@ public class CitizensNPC extends AbstractNPC {
at = at.clone();
getTrait(CurrentLocation.class).setLocation(at);
entityController.spawn(at, this);
net.minecraft.server.v1_7_R4.Entity mcEntity = ((CraftEntity) getEntity()).getHandle();
net.minecraft.server.v1_8_R1.Entity mcEntity = ((CraftEntity) getEntity()).getHandle();
boolean couldSpawn = !Util.isLoaded(at) ? false : mcEntity.world.addEntity(mcEntity, SpawnReason.CUSTOM);
mcEntity.setPositionRotation(at.getX(), at.getY(), at.getZ(), at.getYaw(), at.getPitch());
if (!couldSpawn) {

View File

@ -10,8 +10,10 @@ import net.citizensnpcs.npc.entity.CowController;
import net.citizensnpcs.npc.entity.CreeperController;
import net.citizensnpcs.npc.entity.EnderDragonController;
import net.citizensnpcs.npc.entity.EndermanController;
import net.citizensnpcs.npc.entity.EndermiteController;
import net.citizensnpcs.npc.entity.GhastController;
import net.citizensnpcs.npc.entity.GiantController;
import net.citizensnpcs.npc.entity.GuardianController;
import net.citizensnpcs.npc.entity.HorseController;
import net.citizensnpcs.npc.entity.HumanController;
import net.citizensnpcs.npc.entity.IronGolemController;
@ -20,6 +22,7 @@ import net.citizensnpcs.npc.entity.MushroomCowController;
import net.citizensnpcs.npc.entity.OcelotController;
import net.citizensnpcs.npc.entity.PigController;
import net.citizensnpcs.npc.entity.PigZombieController;
import net.citizensnpcs.npc.entity.RabbitController;
import net.citizensnpcs.npc.entity.SheepController;
import net.citizensnpcs.npc.entity.SilverfishController;
import net.citizensnpcs.npc.entity.SkeletonController;
@ -32,6 +35,7 @@ import net.citizensnpcs.npc.entity.WitchController;
import net.citizensnpcs.npc.entity.WitherController;
import net.citizensnpcs.npc.entity.WolfController;
import net.citizensnpcs.npc.entity.ZombieController;
import net.citizensnpcs.npc.entity.nonliving.ArmorStandController;
import net.citizensnpcs.npc.entity.nonliving.ArrowController;
import net.citizensnpcs.npc.entity.nonliving.BoatController;
import net.citizensnpcs.npc.entity.nonliving.EggController;
@ -89,6 +93,7 @@ public class EntityControllers {
static {
TYPES.put(EntityType.ARROW, ArrowController.class);
TYPES.put(EntityType.ARMOR_STAND, ArmorStandController.class);
TYPES.put(EntityType.BAT, BatController.class);
TYPES.put(EntityType.BLAZE, BlazeController.class);
TYPES.put(EntityType.BOAT, BoatController.class);
@ -103,12 +108,14 @@ public class EntityControllers {
TYPES.put(EntityType.ENDER_PEARL, EnderPearlController.class);
TYPES.put(EntityType.ENDER_SIGNAL, EnderSignalController.class);
TYPES.put(EntityType.ENDERMAN, EndermanController.class);
TYPES.put(EntityType.ENDERMITE, EndermiteController.class);
TYPES.put(EntityType.FALLING_BLOCK, FallingBlockController.class);
TYPES.put(EntityType.FIREWORK, FireworkController.class);
TYPES.put(EntityType.FIREBALL, LargeFireballController.class);
TYPES.put(EntityType.FISHING_HOOK, FishingHookController.class);
TYPES.put(EntityType.GHAST, GhastController.class);
TYPES.put(EntityType.GIANT, GiantController.class);
TYPES.put(EntityType.GUARDIAN, GuardianController.class);
TYPES.put(EntityType.HORSE, HorseController.class);
TYPES.put(EntityType.IRON_GOLEM, IronGolemController.class);
TYPES.put(EntityType.ITEM_FRAME, ItemFrameController.class);
@ -126,6 +133,7 @@ public class EntityControllers {
TYPES.put(EntityType.PIG, PigController.class);
TYPES.put(EntityType.PIG_ZOMBIE, PigZombieController.class);
TYPES.put(EntityType.PLAYER, HumanController.class);
TYPES.put(EntityType.RABBIT, RabbitController.class);
TYPES.put(EntityType.SHEEP, SheepController.class);
TYPES.put(EntityType.SILVERFISH, SilverfishController.class);
TYPES.put(EntityType.SKELETON, SkeletonController.class);

View File

@ -4,11 +4,11 @@ import java.lang.reflect.Constructor;
import java.util.Map;
import net.citizensnpcs.api.npc.NPC;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Location;
import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R1.CraftWorld;
import org.bukkit.entity.Entity;
import com.google.common.collect.Maps;
@ -23,7 +23,7 @@ public abstract class MobEntityController extends AbstractEntityController {
@Override
protected Entity createEntity(Location at, NPC npc) {
net.minecraft.server.v1_7_R4.Entity entity = createEntityFromClass(((CraftWorld) at.getWorld()).getHandle(),
net.minecraft.server.v1_8_R1.Entity entity = createEntityFromClass(((CraftWorld) at.getWorld()).getHandle(),
npc);
entity.setPositionRotation(at.getX(), at.getY(), at.getZ(), at.getYaw(), at.getPitch());
@ -36,9 +36,9 @@ public abstract class MobEntityController extends AbstractEntityController {
return entity.getBukkitEntity();
}
private net.minecraft.server.v1_7_R4.Entity createEntityFromClass(Object... args) {
private net.minecraft.server.v1_8_R1.Entity createEntityFromClass(Object... args) {
try {
return (net.minecraft.server.v1_7_R4.Entity) constructor.newInstance(args);
return (net.minecraft.server.v1_8_R1.Entity) constructor.newInstance(args);
} catch (Exception ex) {
ex.printStackTrace();
return null;

View File

@ -69,7 +69,7 @@ public class AStarNavigationStrategy extends AbstractPathStrategy {
}
vector = plan.getCurrentVector();
}
net.minecraft.server.v1_7_R4.Entity handle = NMS.getHandle(npc.getEntity());
net.minecraft.server.v1_8_R1.Entity handle = NMS.getHandle(npc.getEntity());
double dX = vector.getBlockX() - handle.locX;
double dZ = vector.getBlockZ() - handle.locZ;
double dY = vector.getY() - handle.locY;

View File

@ -5,19 +5,20 @@ import net.citizensnpcs.api.ai.tree.BehaviorStatus;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.Block;
import net.minecraft.server.v1_7_R4.Blocks;
import net.minecraft.server.v1_7_R4.Enchantment;
import net.minecraft.server.v1_7_R4.EnchantmentManager;
import net.minecraft.server.v1_7_R4.EntityLiving;
import net.minecraft.server.v1_7_R4.EntityPlayer;
import net.minecraft.server.v1_7_R4.ItemStack;
import net.minecraft.server.v1_7_R4.Material;
import net.minecraft.server.v1_7_R4.MobEffectList;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.Blocks;
import net.minecraft.server.v1_8_R1.Enchantment;
import net.minecraft.server.v1_8_R1.EnchantmentManager;
import net.minecraft.server.v1_8_R1.EntityLiving;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import net.minecraft.server.v1_8_R1.ItemStack;
import net.minecraft.server.v1_8_R1.Material;
import net.minecraft.server.v1_8_R1.MobEffectList;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity;
import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftLivingEntity;
import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftItemStack;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@ -45,12 +46,12 @@ public class BlockBreaker extends BehaviorGoalAdapter {
return Math.pow(entity.locX - x, 2) + Math.pow(entity.locY - y, 2) + Math.pow(entity.locZ - z, 2);
}
private net.minecraft.server.v1_7_R4.ItemStack getCurrentItem() {
private net.minecraft.server.v1_8_R1.ItemStack getCurrentItem() {
return configuration.item() != null ? CraftItemStack.asNMSCopy(configuration.item()) : entity.getEquipment(0);
}
private float getStrength(Block block) {
float base = block.f(null, 0, 0, 0);
float base = block.g(null, new BlockPosition(0, 0, 0));
return base < 0.0F ? 0.0F : (!isDestroyable(block) ? 1.0F / base / 100.0F : strengthMod(block) / base / 30.0F);
}
@ -100,7 +101,7 @@ public class BlockBreaker extends BehaviorGoalAdapter {
if (entity instanceof EntityPlayer) {
PlayerAnimation.ARM_SWING.play((Player) entity.getBukkitEntity());
}
Block block = entity.world.getType(x, y, z);
Block block = entity.world.getType(new BlockPosition(x, y, z)).getBlock();
if (block == null || block == Blocks.AIR) {
return BehaviorStatus.SUCCESS;
} else {
@ -121,12 +122,12 @@ public class BlockBreaker extends BehaviorGoalAdapter {
}
private void setBlockDamage(int modifiedDamage) {
entity.world.d(entity.getId(), x, y, z, modifiedDamage);
entity.world.c(entity.getId(), new BlockPosition(x, y, z), modifiedDamage);
}
@Override
public boolean shouldExecute() {
return entity.world.getType(x, y, z) != Blocks.AIR;
return entity.world.getType(new BlockPosition(x, y, z)).getBlock() != Blocks.AIR;
}
private float strengthMod(Block block) {
@ -149,7 +150,7 @@ public class BlockBreaker extends BehaviorGoalAdapter {
if (entity.hasEffect(MobEffectList.SLOWER_DIG)) {
strength *= 1.0F - (entity.getEffect(MobEffectList.SLOWER_DIG).getAmplifier() + 1) * 0.2F;
}
if (entity.a(Material.WATER) && !EnchantmentManager.hasWaterWorkerEnchantment(entity)) {
if (entity.a(Material.WATER) && !EnchantmentManager.j(entity)) {
strength /= 5.0F;
}
if (!entity.onGround) {

View File

@ -14,7 +14,7 @@ import net.citizensnpcs.api.astar.pathfinder.VectorNode;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.MathHelper;
import net.minecraft.server.v1_8_R1.MathHelper;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;

View File

@ -5,14 +5,14 @@ import net.citizensnpcs.api.ai.TargetType;
import net.citizensnpcs.api.ai.event.CancelReason;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.util.NMS;
import net.minecraft.server.v1_7_R4.EntityLiving;
import net.minecraft.server.v1_7_R4.Navigation;
import net.minecraft.server.v1_8_R1.EntityLiving;
import net.minecraft.server.v1_8_R1.NavigationAbstract;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftLivingEntity;
public class MCNavigationStrategy extends AbstractPathStrategy {
private final Navigation navigation;
private final NavigationAbstract navigation;
private final NavigatorParameters parameters;
private final Location target;
@ -26,7 +26,6 @@ public class MCNavigationStrategy extends AbstractPathStrategy {
// navigation won't execute, and calling entity.move doesn't
// entirely fix the problem.
navigation = NMS.getNavigation(handle);
navigation.a(parameters.avoidWater());
navigation.a(dest.getX(), dest.getY(), dest.getZ(), parameters.speed());
if (NMS.isNavigationFinished(navigation)) {
setCancelReason(CancelReason.STUCK);
@ -57,7 +56,6 @@ public class MCNavigationStrategy extends AbstractPathStrategy {
public boolean update() {
if (getCancelReason() != null)
return true;
navigation.a(parameters.avoidWater());
navigation.a(parameters.speed());
parameters.run();
return NMS.isNavigationFinished(navigation);

View File

@ -1,7 +1,5 @@
package net.citizensnpcs.npc.ai;
import java.lang.reflect.Field;
import net.citizensnpcs.api.ai.AttackStrategy;
import net.citizensnpcs.api.ai.EntityTarget;
import net.citizensnpcs.api.ai.NavigatorParameters;
@ -10,16 +8,13 @@ import net.citizensnpcs.api.ai.event.CancelReason;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.nms.PlayerNavigation;
import net.minecraft.server.v1_7_R4.AttributeInstance;
import net.minecraft.server.v1_7_R4.Entity;
import net.minecraft.server.v1_7_R4.EntityLiving;
import net.minecraft.server.v1_7_R4.EntityPlayer;
import net.minecraft.server.v1_7_R4.Navigation;
import net.minecraft.server.v1_7_R4.PathEntity;
import net.minecraft.server.v1_8_R1.Entity;
import net.minecraft.server.v1_8_R1.EntityLiving;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import net.minecraft.server.v1_8_R1.NavigationAbstract;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.LivingEntity;
public class MCTargetStrategy implements PathStrategy, EntityTarget {
@ -37,7 +32,7 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
this.parameters = params;
this.handle = ((CraftEntity) npc.getEntity()).getHandle();
this.target = ((CraftEntity) target).getHandle();
Navigation nav = NMS.getNavigation(this.handle);
NavigationAbstract nav = NMS.getNavigation(this.handle);
this.targetNavigator = nav != null && !params.useNewPathfinder() ? new NavigationFieldWrapper(nav)
: new AStarTargeter();
this.aggro = aggro;
@ -45,8 +40,8 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
private boolean canAttack() {
return attackTicks == 0
&& (handle.boundingBox.e > target.boundingBox.b && handle.boundingBox.b < target.boundingBox.e)
&& closeEnough(distanceSquared()) && hasLineOfSight();
&& (handle.getBoundingBox().e > target.getBoundingBox().b && handle.getBoundingBox().b < target
.getBoundingBox().e) && closeEnough(distanceSquared()) && hasLineOfSight();
}
@Override
@ -174,43 +169,15 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
}
private class NavigationFieldWrapper implements TargetNavigator {
boolean j = true, k, l, m;
private final Navigation navigation;
float range;
private final NavigationAbstract navigation;
private NavigationFieldWrapper(Navigation navigation) {
private NavigationFieldWrapper(NavigationAbstract navigation) {
this.navigation = navigation;
this.k = navigation.c();
this.l = navigation.a();
try {
if (navigation instanceof PlayerNavigation) {
if (P_NAV_E != null)
range = (float) ((AttributeInstance) P_NAV_E.get(navigation)).getValue();
if (P_NAV_J != null)
j = P_NAV_J.getBoolean(navigation);
if (P_NAV_M != null)
m = P_NAV_M.getBoolean(navigation);
} else {
if (E_NAV_E != null)
range = (float) ((AttributeInstance) E_NAV_E.get(navigation)).getValue();
if (E_NAV_J != null)
j = E_NAV_J.getBoolean(navigation);
if (E_NAV_M != null)
m = E_NAV_M.getBoolean(navigation);
}
} catch (Exception ex) {
range = parameters.range();
}
}
public PathEntity findPath(Entity from, Entity to) {
return handle.world.findPath(from, to, range, j, k, l, m);
}
@Override
public void setPath() {
navigation.a(parameters.avoidWater());
navigation.a(findPath(handle, target), parameters.speed());
navigation.a(target, parameters.speed());
}
@Override
@ -241,17 +208,6 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
return false;
}
};
private static Field E_NAV_E, E_NAV_J, E_NAV_M;
private static final Location HANDLE_LOCATION = new Location(null, 0, 0, 0);
private static Field P_NAV_E, P_NAV_J, P_NAV_M;
private static final Location TARGET_LOCATION = new Location(null, 0, 0, 0);
static {
E_NAV_E = NMS.getField(Navigation.class, "e");
E_NAV_J = NMS.getField(Navigation.class, "j");
E_NAV_M = NMS.getField(Navigation.class, "m");
P_NAV_E = NMS.getField(PlayerNavigation.class, "e");
P_NAV_J = NMS.getField(PlayerNavigation.class, "j");
P_NAV_M = NMS.getField(PlayerNavigation.class, "m");
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityBat;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityBat;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftBat;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftBat;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Bat;
import org.bukkit.util.Vector;
@ -59,43 +59,33 @@ public class BatController extends MobEntityController {
}
@Override
protected String aT() {
return npc == null || !npc.data().has(NPC.HURT_SOUND_METADATA) ? super.aT() : npc.data().get(
NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null || !npc.data().has(NPC.HURT_SOUND_METADATA) ? super.bn() : npc.data().get(
NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null || !npc.data().has(NPC.DEATH_SOUND_METADATA) ? super.aU() : npc.data().get(
NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null || !npc.data().has(NPC.DEATH_SOUND_METADATA) ? super.bo() : npc.data().get(
NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public void bn() {
public boolean cb() {
if (npc == null) {
super.bn();
} else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public boolean bN() {
if (npc == null) {
return super.bN();
return super.cb();
}
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -108,6 +98,21 @@ public class BatController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void E() {
super.E();
if (npc != null) {
npc.update();
}
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -142,29 +147,14 @@ public class BatController extends MobEntityController {
return npc;
}
@Override
public void h() {
super.h();
if (npc != null) {
npc.update();
}
}
public void setFlying(boolean flying) {
setAsleep(flying);
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityBlaze;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityBlaze;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftBlaze;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftBlaze;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Blaze;
import org.bukkit.util.Vector;
@ -58,40 +58,30 @@ public class BlazeController extends MobEntityController {
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc != null) {
NMS.updateAI(this);
npc.update();
} else {
super.bq();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -105,6 +95,20 @@ public class BlazeController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
if (npc != null) {
npc.update();
}
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -140,16 +144,9 @@ public class BlazeController extends MobEntityController {
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityCaveSpider;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityCaveSpider;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCaveSpider;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftCaveSpider;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.CaveSpider;
import org.bukkit.util.Vector;
@ -58,64 +60,39 @@ public class CaveSpiderController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null) {
return super.bN();
return super.cb();
}
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) {
return super.bN();
return super.cb();
}
if (super.bN()) {
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null) {
super.bq();
} else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -129,12 +106,25 @@ public class CaveSpiderController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -160,6 +150,15 @@ public class CaveSpiderController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -173,25 +172,18 @@ public class CaveSpiderController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityChicken;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityChicken;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftChicken;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftChicken;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Chicken;
import org.bukkit.util.Vector;
@ -69,56 +71,43 @@ public class ChickenController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
if (npc != null)
if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
}
@Override
@ -126,12 +115,25 @@ public class ChickenController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -157,6 +159,15 @@ public class ChickenController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -170,25 +181,18 @@ public class ChickenController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityCow;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityCow;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCow;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftCow;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Cow;
import org.bukkit.util.Vector;
@ -70,52 +72,37 @@ public class CowController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -129,12 +116,25 @@ public class CowController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -160,6 +160,15 @@ public class CowController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -173,25 +182,18 @@ public class CowController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -7,15 +7,17 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityCreeper;
import net.minecraft.server.v1_7_R4.EntityLightning;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityCreeper;
import net.minecraft.server.v1_8_R1.EntityLightning;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCreeper;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftCreeper;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Creeper;
import org.bukkit.util.Vector;
@ -60,58 +62,37 @@ public class CreeperController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
public void a(EntityLightning entitylightning) {
if (npc == null || allowPowered)
super.a(entitylightning);
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -124,12 +105,25 @@ public class CreeperController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -155,6 +149,15 @@ public class CreeperController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -168,29 +171,29 @@ public class CreeperController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
public void onLightningStrike(EntityLightning entitylightning) {
if (npc == null || allowPowered) {
super.onLightningStrike(entitylightning);
}
}
public void setAllowPowered(boolean allowPowered) {
this.allowPowered = allowPowered;
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityEnderDragon;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityEnderDragon;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEnderDragon;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEnderDragon;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.EnderDragon;
import org.bukkit.util.Vector;
@ -58,37 +58,29 @@ public class EnderDragonController extends MobEntityController {
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null) {
super.bq();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -102,7 +94,7 @@ public class EnderDragonController extends MobEntityController {
}
@Override
public void e() {
public void m() {
if (npc != null) {
npc.update();
if (motX != 0 || motY != 0 || motZ != 0) {
@ -113,7 +105,7 @@ public class EnderDragonController extends MobEntityController {
setPosition(locX + motX, locY + motY, locZ + motZ);
}
} else {
super.e();
super.m();
}
}
@ -161,15 +153,15 @@ public class EnderDragonController extends MobEntityController {
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
@Override
protected void w() {
protected void D() {
if (npc == null) {
super.w();
super.D();
}
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityEnderman;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityEnderman;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEnderman;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEnderman;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Enderman;
import org.bukkit.util.Vector;
@ -43,7 +45,6 @@ public class EndermanController extends MobEntityController {
}
public static class EntityEndermanNPC extends EntityEnderman implements NPCHolder {
private int jumpTicks;
private final CitizensNPC npc;
public EntityEndermanNPC(World world) {
@ -59,61 +60,37 @@ public class EndermanController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null)
super.bq();
else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -127,21 +104,23 @@ public class EndermanController extends MobEntityController {
}
@Override
public void e() {
if (npc == null)
super.e();
else {
updateAIWithMovement();
npc.update();
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -167,6 +146,15 @@ public class EndermanController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -180,9 +168,9 @@ public class EndermanController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
@ -197,41 +185,9 @@ public class EndermanController extends MobEntityController {
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
private void updateAIWithMovement() {
NMS.updateAI(this);
// taken from EntityLiving update method
if (bc) {
/* boolean inLiquid = H() || J();
if (inLiquid) {
motY += 0.04;
} else //(handled elsewhere)*/
if (onGround && jumpTicks == 0) {
bj();
jumpTicks = 10;
}
} else {
jumpTicks = 0;
}
bd *= 0.98F;
be *= 0.98F;
bf *= 0.9F;
e(bd, be); // movement method
NMS.setHeadYaw(this, yaw);
if (jumpTicks > 0) {
jumpTicks--;
}
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -0,0 +1,185 @@
package net.citizensnpcs.npc.entity;
import net.citizensnpcs.api.event.NPCPushEvent;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityEndermite;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEndermite;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Endermite;
import org.bukkit.util.Vector;
public class EndermiteController extends MobEntityController {
public EndermiteController() {
super(EntityEndermiteNPC.class);
}
@Override
public Endermite getBukkitEntity() {
return (Endermite) super.getBukkitEntity();
}
public static class EndermiteNPC extends CraftEndermite implements NPCHolder {
private final CitizensNPC npc;
public EndermiteNPC(EntityEndermiteNPC entity) {
super((CraftServer) Bukkit.getServer(), entity);
this.npc = entity.npc;
}
@Override
public NPC getNPC() {
return npc;
}
}
public static class EntityEndermiteNPC extends EntityEndermite implements NPCHolder {
private final CitizensNPC npc;
public EntityEndermiteNPC(World world) {
this(world, null);
}
public EntityEndermiteNPC(World world, NPC npc) {
super(world);
this.npc = (CitizensNPC) npc;
if (npc != null) {
NMS.clearGoals(goalSelector, targetSelector);
}
}
@Override
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public boolean cb() {
if (npc == null)
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
if (npc != null)
Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
}
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
super.g(x, y, z);
return;
}
if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) {
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true))
super.g(x, y, z);
return;
}
Vector vector = new Vector(x, y, z);
NPCPushEvent event = Util.callPushEvent(npc, vector);
if (!event.isCancelled()) {
vector = event.getCollisionVector();
super.g(vector.getX(), vector.getY(), vector.getZ());
}
// when another entity collides, this method is called to push the
// NPC so we prevent it from doing anything if the event is
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
bukkitEntity = new EndermiteNPC(this);
return super.getBukkitEntity();
}
@Override
public NPC getNPC() {
return npc;
}
@Override
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.j_();
} else {
return false;
}
}
@Override
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
}

View File

@ -1,8 +1,6 @@
package net.citizensnpcs.npc.entity;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.net.Socket;
import java.util.List;
@ -21,32 +19,37 @@ import net.citizensnpcs.util.nms.PlayerControllerJump;
import net.citizensnpcs.util.nms.PlayerControllerLook;
import net.citizensnpcs.util.nms.PlayerControllerMove;
import net.citizensnpcs.util.nms.PlayerNavigation;
import net.minecraft.server.v1_7_R4.AttributeInstance;
import net.minecraft.server.v1_7_R4.Entity;
import net.minecraft.server.v1_7_R4.EntityPlayer;
import net.minecraft.server.v1_7_R4.EnumGamemode;
import net.minecraft.server.v1_7_R4.GenericAttributes;
import net.minecraft.server.v1_7_R4.MathHelper;
import net.minecraft.server.v1_7_R4.MinecraftServer;
import net.minecraft.server.v1_7_R4.Navigation;
import net.minecraft.server.v1_7_R4.NetworkManager;
import net.minecraft.server.v1_7_R4.Packet;
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityEquipment;
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityHeadRotation;
import net.minecraft.server.v1_7_R4.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_7_R4.PlayerInteractManager;
import net.minecraft.server.v1_7_R4.WorldServer;
import net.minecraft.util.com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_8_R1.AttributeInstance;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.Entity;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import net.minecraft.server.v1_8_R1.EnumGamemode;
import net.minecraft.server.v1_8_R1.EnumPlayerInfoAction;
import net.minecraft.server.v1_8_R1.EnumProtocolDirection;
import net.minecraft.server.v1_8_R1.GenericAttributes;
import net.minecraft.server.v1_8_R1.MathHelper;
import net.minecraft.server.v1_8_R1.MinecraftServer;
import net.minecraft.server.v1_8_R1.NavigationAbstract;
import net.minecraft.server.v1_8_R1.NetworkManager;
import net.minecraft.server.v1_8_R1.Packet;
import net.minecraft.server.v1_8_R1.PacketPlayOutEntityEquipment;
import net.minecraft.server.v1_8_R1.PacketPlayOutEntityHeadRotation;
import net.minecraft.server.v1_8_R1.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_8_R1.PlayerInteractManager;
import net.minecraft.server.v1_8_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector;
import com.mojang.authlib.GameProfile;
public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
private PlayerControllerJump controllerJump;
private PlayerControllerLook controllerLook;
@ -60,30 +63,23 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
public EntityHumanNPC(MinecraftServer minecraftServer, WorldServer world, GameProfile gameProfile,
PlayerInteractManager playerInteractManager, NPC npc) {
super(minecraftServer, world, gameProfile, playerInteractManager);
playerInteractManager.setGameMode(EnumGamemode.SURVIVAL);
this.npc = (CitizensNPC) npc;
if (npc != null) {
playerInteractManager.setGameMode(EnumGamemode.SURVIVAL);
initialise(minecraftServer);
}
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -96,8 +92,6 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -108,8 +102,9 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
return;
}
if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) {
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true))
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true)) {
super.g(x, y, z);
}
return;
}
Vector vector = new Vector(x, y, z);
@ -123,10 +118,20 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftPlayer getBukkitEntity() {
if (npc != null && bukkitEntity == null)
if (npc != null && bukkitEntity == null) {
bukkitEntity = new PlayerNPC(this);
}
return super.getBukkitEntity();
}
@ -134,25 +139,16 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
return controllerJump;
}
private Packet getListPacket(Player player, boolean removeFromPlayerList) {
if (PLAYER_INFO_CONSTRUCTOR != null) {
try {
return PLAYER_INFO_CONSTRUCTOR.newInstance(player.getPlayerListName(), !removeFromPlayerList,
removeFromPlayerList ? 9999 : ping);
} catch (Exception e) {
}
} else {
try {
return (Packet) (removeFromPlayerList ? PLAYER_INFO_REMOVE_METHOD.invoke(null,
((CraftPlayer) player).getHandle()) : PLAYER_INFO_ADD_METHOD.invoke(null,
((CraftPlayer) player).getHandle()));
} catch (Exception e) {
}
}
return null;
public PlayerControllerMove getControllerMove() {
return controllerMove;
}
public Navigation getNavigation() {
private Packet getListPacket(Player player, boolean removeFromPlayerList) {
return new PacketPlayOutPlayerInfo(removeFromPlayerList ? EnumPlayerInfoAction.REMOVE_PLAYER
: EnumPlayerInfoAction.ADD_PLAYER, ((CraftPlayer) player).getHandle());
}
public NavigationAbstract getNavigation() {
return navigation;
}
@ -161,9 +157,67 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
return npc;
}
private void initialise(MinecraftServer minecraftServer) {
Socket socket = new EmptySocket();
NetworkManager conn = null;
try {
conn = new EmptyNetworkManager(EnumProtocolDirection.CLIENTBOUND);
playerConnection = new EmptyNetHandler(minecraftServer, conn, this);
conn.a(playerConnection);
socket.close();
} catch (IOException e) {
// swallow
}
AttributeInstance range = this.getAttributeInstance(GenericAttributes.b);
if (range == null) {
range = this.getAttributeMap().b(GenericAttributes.b);
}
range.setValue(Setting.DEFAULT_PATHFINDING_RANGE.asDouble());
controllerJump = new PlayerControllerJump(this);
controllerLook = new PlayerControllerLook(this);
controllerMove = new PlayerControllerMove(this);
navigation = new PlayerNavigation(this, world);
NMS.setStepHeight(this, 1); // the default (0) breaks step climbing
}
public boolean isNavigating() {
return npc.getNavigator().isNavigating();
}
@Override
public void h() {
super.h();
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.j_();
} else {
return false;
}
}
private void moveOnCurrentHeading() {
NMS.updateAI(this);
if (aW) {
if (onGround && jumpTicks == 0) {
bE();
jumpTicks = 10;
}
} else {
jumpTicks = 0;
}
aX *= 0.98F;
aY *= 0.98F;
aZ *= 0.9F;
g(aX, aY); // movement method
NMS.setHeadYaw(this, yaw);
if (jumpTicks > 0) {
jumpTicks--;
}
}
@Override
public void s_() {
super.s_();
if (npc == null)
return;
boolean navigating = npc.getNavigator().isNavigating();
@ -175,15 +229,17 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
// (onGround is normally updated by the client)
}
if (Math.abs(motX) < EPSILON && Math.abs(motY) < EPSILON && Math.abs(motZ) < EPSILON)
if (Math.abs(motX) < EPSILON && Math.abs(motY) < EPSILON && Math.abs(motZ) < EPSILON) {
motX = motY = motZ = 0;
}
if (navigating) {
if (!NMS.isNavigationFinished(navigation)) {
NMS.updateNavigation(navigation);
}
moveOnCurrentHeading();
} else if (motX != 0 || motZ != 0 || motY != 0) {
e(0, 0); // is this necessary? it does controllable but sometimes
g(0, 0); // is this necessary? it does controllable but
// sometimes
// players sink into the ground
}
@ -194,69 +250,6 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
npc.update();
}
@Override
public boolean h_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
} else {
return false;
}
}
private void initialise(MinecraftServer minecraftServer) {
Socket socket = new EmptySocket();
NetworkManager conn = null;
try {
conn = new EmptyNetworkManager(false);
playerConnection = new EmptyNetHandler(minecraftServer, conn, this);
conn.a(playerConnection);
} catch (IOException e) {
// swallow
}
NMS.setStepHeight(this, 1); // the default (0) breaks step climbing
try {
socket.close();
} catch (IOException ex) {
// swallow
}
AttributeInstance range = this.getAttributeInstance(GenericAttributes.b);
if (range == null) {
range = this.getAttributeMap().b(GenericAttributes.b);
}
range.setValue(Setting.DEFAULT_PATHFINDING_RANGE.asDouble());
controllerJump = new PlayerControllerJump(this);
controllerLook = new PlayerControllerLook(this);
controllerMove = new PlayerControllerMove(this);
navigation = new PlayerNavigation(this, world);
}
public boolean isNavigating() {
return npc.getNavigator().isNavigating();
}
private void moveOnCurrentHeading() {
NMS.updateAI(this);
if (bc) {
if (onGround && jumpTicks == 0) {
bj();
jumpTicks = 10;
}
} else {
jumpTicks = 0;
}
bd *= 0.98F;
be *= 0.98F;
bf *= 0.9F;
e(bd, be); // movement method
NMS.setHeadYaw(this, yaw);
if (jumpTicks > 0) {
jumpTicks--;
}
}
public void setMoveDestination(double x, double y, double z, double speed) {
controllerMove.a(x, y, z, speed);
}
@ -366,23 +359,4 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
private static final float EPSILON = 0.005F;
private static final Location LOADED_LOCATION = new Location(null, 0, 0, 0);
private static Method PLAYER_INFO_ADD_METHOD;
private static Constructor<PacketPlayOutPlayerInfo> PLAYER_INFO_CONSTRUCTOR;
private static Method PLAYER_INFO_REMOVE_METHOD;
static {
try {
PLAYER_INFO_CONSTRUCTOR = PacketPlayOutPlayerInfo.class.getConstructor(String.class, boolean.class,
int.class);
} catch (Exception e) {
}
try {
PLAYER_INFO_ADD_METHOD = PacketPlayOutPlayerInfo.class.getMethod("addPlayer", EntityPlayer.class);
PLAYER_INFO_REMOVE_METHOD = PacketPlayOutPlayerInfo.class.getMethod("removePlayer", EntityPlayer.class);
PLAYER_INFO_ADD_METHOD.setAccessible(true);
PLAYER_INFO_REMOVE_METHOD.setAccessible(true);
} catch (Exception e) {
}
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityGhast;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityGhast;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftGhast;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftGhast;
import org.bukkit.entity.Ghast;
import org.bukkit.util.Vector;
@ -44,38 +44,30 @@ public class GhastController extends MobEntityController {
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc != null) {
npc.update();
} else
super.bq();
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -88,6 +80,13 @@ public class GhastController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -123,16 +122,9 @@ public class GhastController extends MobEntityController {
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityGiantZombie;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityGiantZombie;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftGiant;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftGiant;
import org.bukkit.entity.Giant;
import org.bukkit.util.Vector;
@ -44,54 +46,37 @@ public class GiantController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null) {
super.bq();
} else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -104,12 +89,17 @@ public class GiantController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -135,6 +125,15 @@ public class GiantController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -148,25 +147,18 @@ public class GiantController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -0,0 +1,199 @@
package net.citizensnpcs.npc.entity;
import net.citizensnpcs.api.event.NPCPushEvent;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityGuardian;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftGuardian;
import org.bukkit.entity.Guardian;
import org.bukkit.util.Vector;
public class GuardianController extends MobEntityController {
public GuardianController() {
super(EntityGuardianNPC.class);
}
@Override
public Guardian getBukkitEntity() {
return (Guardian) super.getBukkitEntity();
}
public static class EntityGuardianNPC extends EntityGuardian implements NPCHolder {
private final CitizensNPC npc;
public EntityGuardianNPC(World world) {
this(world, null);
}
public EntityGuardianNPC(World world, NPC npc) {
super(world);
this.npc = (CitizensNPC) npc;
if (npc != null) {
NMS.clearGoals(goalSelector, targetSelector);
}
}
@Override
public void a(boolean flag) {
float oldw = width;
float oldl = length;
super.a(flag);
if (oldw != width || oldl != length) {
this.setPosition(locX - 0.01, locY, locZ - 0.01);
this.setPosition(locX + 0.01, locY, locZ + 0.01);
}
}
@Override
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public boolean cb() {
if (npc == null)
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
}
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
super.g(x, y, z);
return;
}
if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) {
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true))
super.g(x, y, z);
return;
}
Vector vector = new Vector(x, y, z);
NPCPushEvent event = Util.callPushEvent(npc, vector);
if (!event.isCancelled()) {
vector = event.getCollisionVector();
super.g(vector.getX(), vector.getY(), vector.getZ());
}
// when another entity collides, this method is called to push the
// NPC so we prevent it from doing anything if the event is
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
bukkitEntity = new GuardianNPC(this);
return super.getBukkitEntity();
}
@Override
public NPC getNPC() {
return npc;
}
@Override
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.j_();
} else {
return false;
}
}
@Override
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
public static class GuardianNPC extends CraftGuardian implements NPCHolder {
private final CitizensNPC npc;
public GuardianNPC(EntityGuardianNPC entity) {
super((CraftServer) Bukkit.getServer(), entity);
this.npc = entity.npc;
}
@Override
public NPC getNPC() {
return npc;
}
}
}

View File

@ -8,15 +8,17 @@ import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.trait.HorseModifiers;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityHorse;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityHorse;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftHorse;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftHorse;
import org.bukkit.entity.Horse;
import org.bukkit.util.Vector;
@ -37,7 +39,6 @@ public class HorseController extends MobEntityController {
}
public static class EntityHorseNPC extends EntityHorse implements NPCHolder {
private int jumpTicks;
private final CitizensNPC npc;
public EntityHorseNPC(World world) {
@ -65,44 +66,37 @@ public class HorseController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -117,12 +111,18 @@ public class HorseController extends MobEntityController {
}
@Override
public void e() {
protected void D() {
if (npc == null) {
super.e();
super.D();
}
}
@Override
public void doTick() {
if (npc == null) {
super.doTick();
} else {
NMS.setStepHeight(this, 1);
updateAIWithMovement();
npc.update();
}
}
@ -131,8 +131,6 @@ public class HorseController extends MobEntityController {
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -158,6 +156,15 @@ public class HorseController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -171,51 +178,18 @@ public class HorseController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
private void updateAIWithMovement() {
NMS.updateAI(this);
// taken from EntityLiving update method
if (bc) {
/* boolean inLiquid = H() || J();
if (inLiquid) {
motY += 0.04;
} else //(handled elsewhere)*/
if (onGround && jumpTicks == 0) {
bj();
jumpTicks = 10;
}
} else {
jumpTicks = 0;
}
bd *= 0.98F;
be *= 0.98F;
bf *= 0.9F;
e(bd, be); // movement method
NMS.setHeadYaw(this, yaw);
if (jumpTicks > 0) {
jumpTicks--;
}
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -17,30 +17,32 @@ import net.citizensnpcs.api.util.Colorizer;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.NMS;
import net.minecraft.server.v1_7_R4.PlayerInteractManager;
import net.minecraft.server.v1_7_R4.WorldServer;
import net.minecraft.util.com.google.common.collect.Iterables;
import net.minecraft.util.com.mojang.authlib.Agent;
import net.minecraft.util.com.mojang.authlib.GameProfile;
import net.minecraft.util.com.mojang.authlib.GameProfileRepository;
import net.minecraft.util.com.mojang.authlib.HttpAuthenticationService;
import net.minecraft.util.com.mojang.authlib.ProfileLookupCallback;
import net.minecraft.util.com.mojang.authlib.minecraft.MinecraftSessionService;
import net.minecraft.util.com.mojang.authlib.properties.Property;
import net.minecraft.util.com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
import net.minecraft.util.com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
import net.minecraft.util.com.mojang.authlib.yggdrasil.response.MinecraftProfilePropertiesResponse;
import net.minecraft.util.com.mojang.util.UUIDTypeAdapter;
import net.minecraft.server.v1_8_R1.EnumPlayerInfoAction;
import net.minecraft.server.v1_8_R1.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_8_R1.PlayerInteractManager;
import net.minecraft.server.v1_8_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.CraftWorld;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import com.mojang.authlib.Agent;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.GameProfileRepository;
import com.mojang.authlib.HttpAuthenticationService;
import com.mojang.authlib.ProfileLookupCallback;
import com.mojang.authlib.minecraft.MinecraftSessionService;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
import com.mojang.authlib.yggdrasil.response.MinecraftProfilePropertiesResponse;
import com.mojang.util.UUIDTypeAdapter;
public class HumanController extends AbstractEntityController {
public HumanController() {
@ -81,6 +83,7 @@ public class HumanController extends AbstractEntityController {
npc.data().get("removefromplayerlist", removeFromPlayerList));
}
}, 1);
NMS.sendToOnline(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, handle));
handle.getBukkitEntity().setSleepingIgnored(true);
return handle.getBukkitEntity();
}
@ -105,7 +108,7 @@ public class HumanController extends AbstractEntityController {
if (cached != null) {
profile.getProperties().put("textures", cached);
} else {
SKIN_THREAD.addRunnable(new SkinFetcher(new UUIDFetcher(skinUUID, npc), nmsWorld.getMinecraftServer().av(),
SKIN_THREAD.addRunnable(new SkinFetcher(new UUIDFetcher(skinUUID, npc), nmsWorld.getMinecraftServer().aB(),
npc));
}
}
@ -127,8 +130,8 @@ public class HumanController extends AbstractEntityController {
private GameProfile fillProfileProperties(YggdrasilAuthenticationService auth, GameProfile profile,
boolean requireSecure) throws Exception {
URL url = HttpAuthenticationService.constantURL(new StringBuilder()
.append("https://sessionserver.mojang.com/session/minecraft/profile/")
.append(UUIDTypeAdapter.fromUUID(profile.getId())).toString());
.append("https://sessionserver.mojang.com/session/minecraft/profile/")
.append(UUIDTypeAdapter.fromUUID(profile.getId())).toString());
url = HttpAuthenticationService.concatenateURL(url,
new StringBuilder().append("unsigned=").append(!requireSecure).toString());
MinecraftProfilePropertiesResponse response = (MinecraftProfilePropertiesResponse) MAKE_REQUEST.invoke(
@ -155,7 +158,7 @@ public class HumanController extends AbstractEntityController {
if (cached != null) {
if (Messaging.isDebugging()) {
Messaging
.debug("Using cached skin texture for NPC " + npc.getName() + " UUID " + npc.getUniqueId());
.debug("Using cached skin texture for NPC " + npc.getName() + " UUID " + npc.getUniqueId());
}
skinProfile = new GameProfile(UUID.fromString(realUUID), "");
skinProfile.getProperties().put("textures", cached);
@ -167,7 +170,7 @@ public class HumanController extends AbstractEntityController {
} catch (Exception e) {
if ((e.getMessage() != null && e.getMessage().contains("too many requests"))
|| (e.getCause() != null && e.getCause().getMessage() != null && e.getCause().getMessage()
.contains("too many requests"))) {
.contains("too many requests"))) {
SKIN_THREAD.delay();
SKIN_THREAD.addRunnable(this);
}
@ -257,21 +260,21 @@ public class HumanController extends AbstractEntityController {
.getGameProfileRepository();
repo.findProfilesByNames(new String[] { ChatColor.stripColor(reportedUUID) }, Agent.MINECRAFT,
new ProfileLookupCallback() {
@Override
public void onProfileLookupFailed(GameProfile arg0, Exception arg1) {
}
@Override
public void onProfileLookupFailed(GameProfile arg0, Exception arg1) {
}
@Override
public void onProfileLookupSucceeded(final GameProfile profile) {
UUID_CACHE.put(reportedUUID, profile.getId().toString());
if (Messaging.isDebugging()) {
Messaging.debug("Fetched UUID " + profile.getId() + " for NPC " + npc.getName()
+ " UUID " + npc.getUniqueId());
}
npc.data().setPersistent(CACHED_SKIN_UUID_METADATA, profile.getId().toString());
npc.data().setPersistent(CACHED_SKIN_UUID_NAME_METADATA, profile.getName());
}
});
@Override
public void onProfileLookupSucceeded(final GameProfile profile) {
UUID_CACHE.put(reportedUUID, profile.getId().toString());
if (Messaging.isDebugging()) {
Messaging.debug("Fetched UUID " + profile.getId() + " for NPC " + npc.getName()
+ " UUID " + npc.getUniqueId());
}
npc.data().setPersistent(CACHED_SKIN_UUID_METADATA, profile.getId().toString());
npc.data().setPersistent(CACHED_SKIN_UUID_NAME_METADATA, profile.getName());
}
});
return npc.data().get(CACHED_SKIN_UUID_METADATA, reportedUUID);
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityIronGolem;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityIronGolem;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftIronGolem;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftIronGolem;
import org.bukkit.entity.IronGolem;
import org.bukkit.util.Vector;
@ -44,51 +46,37 @@ public class IronGolemController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -101,12 +89,17 @@ public class IronGolemController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -132,6 +125,15 @@ public class IronGolemController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -145,24 +147,24 @@ public class IronGolemController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
@Override
protected void w() {
protected void D() {
if (npc == null) {
super.w();
super.D();
}
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMagmaCube;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityMagmaCube;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftMagmaCube;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftMagmaCube;
import org.bukkit.entity.MagmaCube;
import org.bukkit.util.Vector;
@ -45,61 +47,37 @@ public class MagmaCubeController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null)
super.bq();
else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -112,12 +90,24 @@ public class MagmaCubeController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -143,6 +133,15 @@ public class MagmaCubeController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -156,25 +155,18 @@ public class MagmaCubeController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMushroomCow;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityMushroomCow;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftMushroomCow;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftMushroomCow;
import org.bukkit.entity.MushroomCow;
import org.bukkit.util.Vector;
@ -56,51 +58,37 @@ public class MushroomCowController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -113,12 +101,24 @@ public class MushroomCowController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -144,6 +144,15 @@ public class MushroomCowController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -157,25 +166,18 @@ public class MushroomCowController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityOcelot;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityOcelot;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftOcelot;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftOcelot;
import org.bukkit.entity.Ocelot;
import org.bukkit.util.Vector;
@ -55,51 +57,37 @@ public class OcelotController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -112,12 +100,24 @@ public class OcelotController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -143,6 +143,15 @@ public class OcelotController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -156,25 +165,18 @@ public class OcelotController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,15 +7,17 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityLightning;
import net.minecraft.server.v1_7_R4.EntityPig;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityLightning;
import net.minecraft.server.v1_8_R1.EntityPig;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPig;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPig;
import org.bukkit.entity.Pig;
import org.bukkit.util.Vector;
@ -56,58 +58,37 @@ public class PigController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
public void a(EntityLightning entitylightning) {
if (npc == null) {
super.a(entitylightning);
}
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -121,12 +102,24 @@ public class PigController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -152,6 +145,15 @@ public class PigController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -165,25 +167,25 @@ public class PigController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
public void onLightningStrike(EntityLightning entitylightning) {
if (npc == null) {
super.onLightningStrike(entitylightning);
}
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityPigZombie;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityPigZombie;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPigZombie;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPigZombie;
import org.bukkit.entity.PigZombie;
import org.bukkit.util.Vector;
@ -45,61 +47,37 @@ public class PigZombieController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null) {
super.bq();
} else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -112,12 +90,24 @@ public class PigZombieController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -143,6 +133,15 @@ public class PigZombieController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -156,25 +155,18 @@ public class PigZombieController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -0,0 +1,199 @@
package net.citizensnpcs.npc.entity;
import net.citizensnpcs.api.event.NPCPushEvent;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityRabbit;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftRabbit;
import org.bukkit.entity.Rabbit;
import org.bukkit.util.Vector;
public class RabbitController extends MobEntityController {
public RabbitController() {
super(EntityRabbitNPC.class);
}
@Override
public Rabbit getBukkitEntity() {
return (Rabbit) super.getBukkitEntity();
}
public static class EntityRabbitNPC extends EntityRabbit implements NPCHolder {
private final CitizensNPC npc;
public EntityRabbitNPC(World world) {
this(world, null);
}
public EntityRabbitNPC(World world, NPC npc) {
super(world);
this.npc = (CitizensNPC) npc;
if (npc != null) {
NMS.clearGoals(goalSelector, targetSelector);
}
}
@Override
public void a(boolean flag) {
float oldw = width;
float oldl = length;
super.a(flag);
if (oldw != width || oldl != length) {
this.setPosition(locX - 0.01, locY, locZ - 0.01);
this.setPosition(locX + 0.01, locY, locZ + 0.01);
}
}
@Override
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public boolean cb() {
if (npc == null)
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
}
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
super.g(x, y, z);
return;
}
if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) {
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true))
super.g(x, y, z);
return;
}
Vector vector = new Vector(x, y, z);
NPCPushEvent event = Util.callPushEvent(npc, vector);
if (!event.isCancelled()) {
vector = event.getCollisionVector();
super.g(vector.getX(), vector.getY(), vector.getZ());
}
// when another entity collides, this method is called to push the
// NPC so we prevent it from doing anything if the event is
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
bukkitEntity = new RabbitNPC(this);
return super.getBukkitEntity();
}
@Override
public NPC getNPC() {
return npc;
}
@Override
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.j_();
} else {
return false;
}
}
@Override
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}
public static class RabbitNPC extends CraftRabbit implements NPCHolder {
private final CitizensNPC npc;
public RabbitNPC(EntityRabbitNPC entity) {
super((CraftServer) Bukkit.getServer(), entity);
this.npc = entity.npc;
}
@Override
public NPC getNPC() {
return npc;
}
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySheep;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntitySheep;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSheep;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSheep;
import org.bukkit.entity.Sheep;
import org.bukkit.util.Vector;
@ -55,51 +57,37 @@ public class SheepController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -112,12 +100,24 @@ public class SheepController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -143,6 +143,15 @@ public class SheepController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -156,25 +165,18 @@ public class SheepController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySilverfish;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntitySilverfish;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSilverfish;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSilverfish;
import org.bukkit.entity.Silverfish;
import org.bukkit.util.Vector;
@ -44,61 +46,37 @@ public class SilverfishController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null) {
super.bq();
} else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -111,12 +89,24 @@ public class SilverfishController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -142,6 +132,15 @@ public class SilverfishController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -155,25 +154,18 @@ public class SilverfishController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySkeleton;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntitySkeleton;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSkeleton;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSkeleton;
import org.bukkit.entity.Skeleton;
import org.bukkit.util.Vector;
@ -44,52 +46,37 @@ public class SkeletonController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -102,12 +89,25 @@ public class SkeletonController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -133,6 +133,15 @@ public class SkeletonController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -146,25 +155,18 @@ public class SkeletonController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySlime;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntitySlime;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSlime;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSlime;
import org.bukkit.entity.Slime;
import org.bukkit.util.Vector;
@ -46,61 +48,37 @@ public class SlimeController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null) {
super.bq();
} else {
npc.update();
NMS.updateAI(this);
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -113,12 +91,24 @@ public class SlimeController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -144,6 +134,15 @@ public class SlimeController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -157,25 +156,18 @@ public class SlimeController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySnowman;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntitySnowman;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSnowman;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSnowman;
import org.bukkit.entity.Snowman;
import org.bukkit.util.Vector;
@ -44,51 +46,37 @@ public class SnowmanController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -101,12 +89,24 @@ public class SnowmanController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -132,6 +132,15 @@ public class SnowmanController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -145,25 +154,18 @@ public class SnowmanController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySpider;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntitySpider;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSpider;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSpider;
import org.bukkit.entity.Spider;
import org.bukkit.util.Vector;
@ -44,61 +46,37 @@ public class SpiderController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc == null)
super.bq();
else {
NMS.updateAI(this);
npc.update();
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -111,12 +89,24 @@ public class SpiderController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -142,6 +132,15 @@ public class SpiderController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -155,25 +154,18 @@ public class SpiderController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySquid;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntitySquid;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSquid;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSquid;
import org.bukkit.entity.Squid;
import org.bukkit.util.Vector;
@ -44,52 +46,37 @@ public class SquidController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void bq() {
if (npc != null) {
npc.update();
} else
super.bq();
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -102,12 +89,17 @@ public class SquidController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -133,6 +125,15 @@ public class SquidController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -146,25 +147,18 @@ public class SquidController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,15 +7,17 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityHuman;
import net.minecraft.server.v1_7_R4.EntityVillager;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityHuman;
import net.minecraft.server.v1_8_R1.EntityVillager;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftVillager;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftVillager;
import org.bukkit.entity.Villager;
import org.bukkit.util.Vector;
@ -57,9 +59,9 @@ public class VillagerController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@ -70,45 +72,30 @@ public class VillagerController extends MobEntityController {
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -122,12 +109,25 @@ public class VillagerController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -153,6 +153,15 @@ public class VillagerController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -165,34 +174,27 @@ public class VillagerController extends MobEntityController {
return npc;
}
public boolean isBlockingTrades() {
return blockTrades;
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
public boolean isBlockingTrades() {
return blockTrades;
}
public void setBlockTrades(boolean blocked) {
this.blockTrades = blocked;
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityWitch;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityWitch;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftWitch;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftWitch;
import org.bukkit.entity.Witch;
import org.bukkit.util.Vector;
@ -44,51 +46,37 @@ public class WitchController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null)
npc.update();
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -101,12 +89,24 @@ public class WitchController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null)
npc.update();
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -132,6 +132,15 @@ public class WitchController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -145,25 +154,18 @@ public class WitchController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityWither;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityWither;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftWither;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftWither;
import org.bukkit.entity.Wither;
import org.bukkit.util.Vector;
@ -29,7 +29,6 @@ public class WitherController extends MobEntityController {
}
public static class EntityWitherNPC extends EntityWither implements NPCHolder {
private int jumpTicks;
private final CitizensNPC npc;
public EntityWitherNPC(World world) {
@ -45,38 +44,30 @@ public class WitherController extends MobEntityController {
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +81,17 @@ public class WitherController extends MobEntityController {
}
@Override
public void e() {
protected void D() {
if (npc == null) {
super.e();
} else {
updateAIWithMovement();
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@ -133,42 +130,9 @@ public class WitherController extends MobEntityController {
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
private void updateAIWithMovement() {
NMS.updateAI(this);
// taken from EntityLiving update method
if (bc) {
/* boolean inLiquid = H() || J();
if (inLiquid) {
motY += 0.04;
} else //(handled elsewhere)*/
if (onGround && jumpTicks == 0) {
bj();
jumpTicks = 10;
}
} else {
jumpTicks = 0;
}
bd *= 0.98F;
be *= 0.98F;
bf *= 0.9F;
e(bd, be); // movement method
NMS.setHeadYaw(this, yaw);
if (jumpTicks > 0) {
jumpTicks--;
}
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityWolf;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityWolf;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftWolf;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftWolf;
import org.bukkit.entity.Wolf;
import org.bukkit.util.Vector;
@ -55,52 +57,37 @@ public class WolfController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -114,12 +101,25 @@ public class WolfController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -145,6 +145,15 @@ public class WolfController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -158,25 +167,18 @@ public class WolfController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -7,14 +7,16 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityZombie;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityZombie;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftZombie;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftZombie;
import org.bukkit.entity.Zombie;
import org.bukkit.util.Vector;
@ -44,52 +46,37 @@ public class ZombieController extends MobEntityController {
}
@Override
protected void a(double d0, boolean flag) {
protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {
if (npc == null || !npc.isFlyable()) {
super.a(d0, flag);
super.a(d0, flag, block, blockposition);
}
}
@Override
protected String aT() {
return npc == null ? super.aT() : npc.data().get(NPC.HURT_SOUND_METADATA, super.aT());
protected String bn() {
return npc == null ? super.bn() : npc.data().get(NPC.HURT_SOUND_METADATA, super.bn());
}
@Override
protected String aU() {
return npc == null ? super.aU() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.aU());
protected String bo() {
return npc == null ? super.bo() : npc.data().get(NPC.DEATH_SOUND_METADATA, super.bo());
}
@Override
protected void b(float f) {
if (npc == null || !npc.isFlyable()) {
super.b(f);
}
}
@Override
public void bn() {
super.bn();
if (npc != null) {
npc.update();
}
}
@Override
public boolean bN() {
public boolean cb() {
if (npc == null)
return super.bN();
return super.cb();
boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault))
return super.bN();
if (super.bN()) {
return super.cb();
if (super.cb()) {
unleash(true, false); // clearLeash with client update
}
return false; // shouldLeash
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -102,12 +89,25 @@ public class ZombieController extends MobEntityController {
return npc == null ? super.d(save) : false;
}
@Override
protected void D() {
if (npc == null) {
super.D();
}
}
@Override
public void doTick() {
super.doTick();
if (npc != null) {
npc.update();
}
}
@Override
public void e(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.e(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@ -133,6 +133,15 @@ public class ZombieController extends MobEntityController {
// cancelled.
}
@Override
public void g(float f, float f1) {
if (npc == null || !npc.isFlyable()) {
super.g(f, f1);
} else {
NMS.flyingMoveLogic(this, f, f1);
}
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null)
@ -146,25 +155,18 @@ public class ZombieController extends MobEntityController {
}
@Override
public boolean h_() {
public boolean j_() {
if (npc == null || !npc.isFlyable()) {
return super.h_();
return super.j_();
} else {
return false;
}
}
@Override
protected String t() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.t() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.t());
}
@Override
protected void w() {
if (npc == null) {
super.w();
}
protected String z() {
return npc == null || !npc.data().has(NPC.AMBIENT_SOUND_METADATA) ? super.z() : npc.data().get(
NPC.AMBIENT_SOUND_METADATA, super.z());
}
}

View File

@ -0,0 +1,121 @@
package net.citizensnpcs.npc.entity.nonliving;
import net.citizensnpcs.api.event.NPCPushEvent;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_8_R1.EntityArmorStand;
import net.minecraft.server.v1_8_R1.EntityHuman;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.Vec3D;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftArmorStand;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.ArmorStand;
import org.bukkit.util.Vector;
public class ArmorStandController extends MobEntityController {
public ArmorStandController() {
super(EntityArmorStandNPC.class);
}
@Override
public ArmorStand getBukkitEntity() {
return (ArmorStand) super.getBukkitEntity();
}
public static class ArmorStandNPC extends CraftArmorStand implements NPCHolder {
private final CitizensNPC npc;
public ArmorStandNPC(EntityArmorStandNPC entity) {
super((CraftServer) Bukkit.getServer(), entity);
this.npc = entity.npc;
}
@Override
public NPC getNPC() {
return npc;
}
}
public static class EntityArmorStandNPC extends EntityArmorStand implements NPCHolder {
private final CitizensNPC npc;
public EntityArmorStandNPC(World world) {
this(world, null);
}
public EntityArmorStandNPC(World world, NPC npc) {
super(world);
this.npc = (CitizensNPC) npc;
}
@Override
public boolean a(EntityHuman paramEntityHuman, Vec3D paramVec3D) {
return true;
}
@Override
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
if (npc != null) {
Util.callCollisionEvent(npc, entity.getBukkitEntity());
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
super.g(x, y, z);
return;
}
if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) {
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true))
super.g(x, y, z);
return;
}
Vector vector = new Vector(x, y, z);
NPCPushEvent event = Util.callPushEvent(npc, vector);
if (!event.isCancelled()) {
vector = event.getCollisionVector();
super.g(vector.getX(), vector.getY(), vector.getZ());
}
// when another entity collides, this method is called to push the
// NPC so we prevent it from doing anything if the event is
// cancelled.
}
@Override
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null && npc != null) {
bukkitEntity = new ArmorStandNPC(this);
}
return super.getBukkitEntity();
}
@Override
public NPC getNPC() {
return npc;
}
@Override
public void s_() {
super.s_();
if (npc != null) {
npc.update();
}
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityArrow;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityArrow;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftArrow;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftArrow;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Arrow;
import org.bukkit.util.Vector;
@ -59,7 +59,7 @@ public class ArrowController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -104,11 +104,11 @@ public class ArrowController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityBoat;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityBoat;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftBoat;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftBoat;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Boat;
import org.bukkit.util.Vector;
@ -59,7 +59,7 @@ public class BoatController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -104,11 +104,11 @@ public class BoatController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,17 +6,17 @@ import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityEgg;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_7_R4.WorldServer;
import net.minecraft.server.v1_8_R1.EntityEgg;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import net.minecraft.server.v1_8_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEgg;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEgg;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.Egg;
import org.bukkit.entity.Entity;
import org.bukkit.util.Vector;
@ -75,7 +75,7 @@ public class EggController extends AbstractEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -120,11 +120,11 @@ public class EggController extends AbstractEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityEnderCrystal;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityEnderCrystal;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEnderCrystal;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEnderCrystal;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.EnderCrystal;
import org.bukkit.util.Vector;
@ -59,7 +59,7 @@ public class EnderCrystalController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -104,11 +104,11 @@ public class EnderCrystalController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,15 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityEnderPearl;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityEnderPearl;
import net.minecraft.server.v1_8_R1.EntityLiving;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEnderPearl;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEnderPearl;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.EnderPearl;
import org.bukkit.util.Vector;
@ -45,21 +46,20 @@ public class EnderPearlController extends MobEntityController {
private final CitizensNPC npc;
public EntityEnderPearlNPC(World world) {
this(world, null);
this(world, null, null);
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
public EntityEnderPearlNPC(World world, EntityLiving living) {
this(world, living, null);
}
public EntityEnderPearlNPC(World world, NPC npc) {
super(world);
public EntityEnderPearlNPC(World world, EntityLiving living, NPC npc) {
super(world, null);
this.npc = (CitizensNPC) npc;
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -68,6 +68,11 @@ public class EnderPearlController extends MobEntityController {
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -104,11 +109,11 @@ public class EnderPearlController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityEnderSignal;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityEnderSignal;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEnderSignal;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEnderSignal;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.EnderSignal;
import org.bukkit.util.Vector;
@ -59,7 +59,7 @@ public class EnderSignalController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -104,11 +104,11 @@ public class EnderSignalController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityExperienceOrb;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityExperienceOrb;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftExperienceOrb;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftExperienceOrb;
import org.bukkit.entity.ExperienceOrb;
import org.bukkit.util.Vector;
@ -40,7 +40,7 @@ public class ExperienceOrbController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class ExperienceOrbController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,21 +6,22 @@ import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.Block;
import net.minecraft.server.v1_7_R4.Blocks;
import net.minecraft.server.v1_7_R4.EntityFallingBlock;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_7_R4.WorldServer;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.Blocks;
import net.minecraft.server.v1_8_R1.EntityFallingBlock;
import net.minecraft.server.v1_8_R1.IBlockData;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import net.minecraft.server.v1_8_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFallingSand;
import org.bukkit.craftbukkit.v1_7_R4.util.CraftMagicNumbers;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftFallingSand;
import org.bukkit.craftbukkit.v1_8_R1.util.CraftMagicNumbers;
import org.bukkit.entity.Entity;
import org.bukkit.entity.FallingBlock;
import org.bukkit.util.Vector;
@ -39,8 +40,8 @@ public class FallingBlockController extends AbstractEntityController {
id = CraftMagicNumbers.getBlock(Material.getMaterial(npc.data().<String> get(NPC.ITEM_ID_METADATA,
npc.data().<String> get("falling-block-id"))));
}
final EntityFallingBlockNPC handle = new EntityFallingBlockNPC(ws, npc, at.getX(), at.getY(), at.getZ(), id,
data);
final EntityFallingBlockNPC handle = new EntityFallingBlockNPC(ws, npc, at.getX(), at.getY(), at.getZ(),
id.fromLegacyData(data));
return handle.getBukkitEntity();
}
@ -61,18 +62,13 @@ public class FallingBlockController extends AbstractEntityController {
this.npc = (CitizensNPC) npc;
}
public EntityFallingBlockNPC(World world, NPC npc, double d0, double d1, double d2, Block block, int data) {
super(world, d0, d1, d2, block, data);
public EntityFallingBlockNPC(World world, NPC npc, double d0, double d1, double d2, IBlockData data) {
super(world, d0, d1, d2, data);
this.npc = (CitizensNPC) npc;
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -81,6 +77,11 @@ public class FallingBlockController extends AbstractEntityController {
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -117,7 +118,7 @@ public class FallingBlockController extends AbstractEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
if (Math.abs(motX) > EPSILON || Math.abs(motY) > EPSILON || Math.abs(motZ) > EPSILON) {
@ -127,7 +128,7 @@ public class FallingBlockController extends AbstractEntityController {
move(motX, motY, motZ);
}
} else {
super.h();
super.s_();
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityFireworks;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityFireworks;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFirework;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftFirework;
import org.bukkit.entity.Firework;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class FireworkController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class FireworkController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityFishingHook;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityFishingHook;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFish;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftFish;
import org.bukkit.entity.Fish;
import org.bukkit.util.Vector;
@ -40,12 +40,7 @@ public class FishingHookController extends MobEntityController {
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -54,6 +49,11 @@ public class FishingHookController extends MobEntityController {
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -90,11 +90,11 @@ public class FishingHookController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,21 +6,21 @@ import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityHuman;
import net.minecraft.server.v1_7_R4.EntityItem;
import net.minecraft.server.v1_7_R4.ItemStack;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_7_R4.WorldServer;
import net.minecraft.server.v1_8_R1.EntityHuman;
import net.minecraft.server.v1_8_R1.EntityItem;
import net.minecraft.server.v1_8_R1.ItemStack;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import net.minecraft.server.v1_8_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftItem;
import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftItem;
import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftItemStack;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Item;
import org.bukkit.util.Vector;
@ -51,11 +51,6 @@ public class ItemController extends AbstractEntityController {
public static class EntityItemNPC extends EntityItem implements NPCHolder {
private final CitizensNPC npc;
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
public EntityItemNPC(World world) {
super(world);
this.npc = null;
@ -67,14 +62,7 @@ public class ItemController extends AbstractEntityController {
}
@Override
public void b_(EntityHuman entityhuman) {
if (npc == null) {
super.b_(entityhuman);
}
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -83,6 +71,18 @@ public class ItemController extends AbstractEntityController {
}
}
@Override
public void d(EntityHuman entityhuman) {
if (npc == null) {
super.d(entityhuman);
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -119,11 +119,11 @@ public class ItemController extends AbstractEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,15 +6,15 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityItemFrame;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityItemFrame;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftItemFrame;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftItemFrame;
import org.bukkit.entity.ItemFrame;
import org.bukkit.util.Vector;
@ -38,18 +38,10 @@ public class ItemFrameController extends MobEntityController {
public EntityItemFrameNPC(World world, NPC npc) {
super(world);
this.npc = (CitizensNPC) npc;
if (npc != null) {
setDirection(0);
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -58,6 +50,11 @@ public class ItemFrameController extends MobEntityController {
}
}
@Override
public boolean d(NBTTagCompound save) {
return npc == null ? super.d(save) : false;
}
@Override
public void g(double x, double y, double z) {
if (npc == null) {
@ -94,11 +91,11 @@ public class ItemFrameController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityLargeFireball;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityLargeFireball;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLargeFireball;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftLargeFireball;
import org.bukkit.entity.LargeFireball;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class LargeFireballController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class LargeFireballController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityLeash;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityLeash;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLeash;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftLeash;
import org.bukkit.entity.LeashHitch;
import org.bukkit.util.Vector;
@ -40,7 +40,7 @@ public class LeashController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class LeashController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMinecartChest;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityMinecartChest;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftMinecartChest;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftMinecartChest;
import org.bukkit.entity.Minecart;
import org.bukkit.util.Vector;
@ -41,7 +41,7 @@ public class MinecartChestController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -91,12 +91,12 @@ public class MinecartChestController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
NMS.minecartItemLogic(this);
} else {
super.h();
super.s_();
}
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMinecartCommandBlock;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityMinecartCommandBlock;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftMinecartCommand;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftMinecartCommand;
import org.bukkit.entity.Minecart;
import org.bukkit.util.Vector;
@ -46,7 +46,7 @@ public class MinecartCommandController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -91,12 +91,12 @@ public class MinecartCommandController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
NMS.minecartItemLogic(this);
} else {
super.h();
super.s_();
}
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMinecartFurnace;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityMinecartFurnace;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftMinecartFurnace;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftMinecartFurnace;
import org.bukkit.entity.Minecart;
import org.bukkit.util.Vector;
@ -46,7 +46,7 @@ public class MinecartFurnaceController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -91,12 +91,12 @@ public class MinecartFurnaceController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
NMS.minecartItemLogic(this);
} else {
super.h();
super.s_();
}
}
}

View File

@ -7,9 +7,9 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMinecartHopper;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityMinecartHopper;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.entity.Minecart;
import org.bukkit.util.Vector;
@ -42,7 +42,7 @@ public class MinecartHopperController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -79,12 +79,12 @@ public class MinecartHopperController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
NMS.minecartItemLogic(this);
} else {
super.h();
super.s_();
}
}
}

View File

@ -7,14 +7,14 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMinecartRideable;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityMinecartRideable;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftMinecartRideable;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftMinecartRideable;
import org.bukkit.entity.Minecart;
import org.bukkit.util.Vector;
@ -46,7 +46,7 @@ public class MinecartRideableController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -91,12 +91,12 @@ public class MinecartRideableController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
NMS.minecartItemLogic(this);
} else {
super.h();
super.s_();
}
}
}

View File

@ -7,9 +7,9 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMinecartMobSpawner;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityMinecartMobSpawner;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.entity.Minecart;
import org.bukkit.util.Vector;
@ -42,7 +42,7 @@ public class MinecartSpawnerController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -79,12 +79,12 @@ public class MinecartSpawnerController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
NMS.minecartItemLogic(this);
} else {
super.h();
super.s_();
}
}
}

View File

@ -7,9 +7,9 @@ import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityMinecartTNT;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityMinecartTNT;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.entity.Minecart;
import org.bukkit.util.Vector;
@ -42,7 +42,7 @@ public class MinecartTNTController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -79,12 +79,12 @@ public class MinecartTNTController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
NMS.minecartItemLogic(this);
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityPainting;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityPainting;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPainting;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPainting;
import org.bukkit.entity.Painting;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class PaintingController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class PaintingController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySmallFireball;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntitySmallFireball;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSmallFireball;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSmallFireball;
import org.bukkit.entity.SmallFireball;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class SmallFireballController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class SmallFireballController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntitySnowball;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntitySnowball;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftSnowball;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftSnowball;
import org.bukkit.entity.Snowball;
import org.bukkit.util.Vector;
@ -59,7 +59,7 @@ public class SnowballController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -104,11 +104,11 @@ public class SnowballController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityTNTPrimed;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityTNTPrimed;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftTNTPrimed;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftTNTPrimed;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class TNTPrimedController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class TNTPrimedController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityThrownExpBottle;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityThrownExpBottle;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftThrownExpBottle;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftThrownExpBottle;
import org.bukkit.entity.ThrownExpBottle;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class ThrownExpBottleController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class ThrownExpBottleController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityPotion;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityPotion;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftThrownPotion;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftThrownPotion;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class ThrownPotionController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class ThrownPotionController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -6,14 +6,14 @@ import net.citizensnpcs.npc.CitizensNPC;
import net.citizensnpcs.npc.MobEntityController;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityWitherSkull;
import net.minecraft.server.v1_7_R4.NBTTagCompound;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.EntityWitherSkull;
import net.minecraft.server.v1_8_R1.NBTTagCompound;
import net.minecraft.server.v1_8_R1.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftWitherSkull;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftWitherSkull;
import org.bukkit.entity.WitherSkull;
import org.bukkit.util.Vector;
@ -45,7 +45,7 @@ public class WitherSkullController extends MobEntityController {
}
@Override
public void collide(net.minecraft.server.v1_7_R4.Entity entity) {
public void collide(net.minecraft.server.v1_8_R1.Entity entity) {
// this method is called by both the entities involved - cancelling
// it will not stop the NPC from moving.
super.collide(entity);
@ -90,11 +90,11 @@ public class WitherSkullController extends MobEntityController {
}
@Override
public void h() {
public void s_() {
if (npc != null) {
npc.update();
} else {
super.h();
super.s_();
}
}
}

View File

@ -1,14 +1,14 @@
package net.citizensnpcs.npc.network;
import java.net.SocketAddress;
import io.netty.channel.AbstractChannel;
import io.netty.channel.Channel;
import io.netty.channel.ChannelConfig;
import io.netty.channel.ChannelMetadata;
import io.netty.channel.ChannelOutboundBuffer;
import io.netty.channel.DefaultChannelConfig;
import io.netty.channel.EventLoop;
import net.minecraft.util.io.netty.channel.AbstractChannel;
import net.minecraft.util.io.netty.channel.Channel;
import net.minecraft.util.io.netty.channel.ChannelConfig;
import net.minecraft.util.io.netty.channel.ChannelMetadata;
import net.minecraft.util.io.netty.channel.ChannelOutboundBuffer;
import net.minecraft.util.io.netty.channel.DefaultChannelConfig;
import net.minecraft.util.io.netty.channel.EventLoop;
import java.net.SocketAddress;
public class EmptyChannel extends AbstractChannel {
private final ChannelConfig config = new DefaultChannelConfig(this);

View File

@ -1,10 +1,10 @@
package net.citizensnpcs.npc.network;
import net.minecraft.server.v1_7_R4.EntityPlayer;
import net.minecraft.server.v1_7_R4.MinecraftServer;
import net.minecraft.server.v1_7_R4.NetworkManager;
import net.minecraft.server.v1_7_R4.Packet;
import net.minecraft.server.v1_7_R4.PlayerConnection;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import net.minecraft.server.v1_8_R1.MinecraftServer;
import net.minecraft.server.v1_8_R1.NetworkManager;
import net.minecraft.server.v1_8_R1.Packet;
import net.minecraft.server.v1_8_R1.PlayerConnection;
public class EmptyNetHandler extends PlayerConnection {
public EmptyNetHandler(MinecraftServer minecraftServer, NetworkManager networkManager, EntityPlayer entityPlayer) {

View File

@ -3,10 +3,11 @@ package net.citizensnpcs.npc.network;
import java.io.IOException;
import net.citizensnpcs.util.NMS;
import net.minecraft.server.v1_7_R4.NetworkManager;
import net.minecraft.server.v1_8_R1.EnumProtocolDirection;
import net.minecraft.server.v1_8_R1.NetworkManager;
public class EmptyNetworkManager extends NetworkManager {
public EmptyNetworkManager(boolean flag) throws IOException {
public EmptyNetworkManager(EnumProtocolDirection flag) throws IOException {
super(flag);
NMS.initNetworkManager(this);
}

View File

@ -14,11 +14,11 @@ import net.citizensnpcs.api.trait.trait.Owner;
import net.citizensnpcs.api.util.DataKey;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_7_R4.EntityEnderDragon;
import net.minecraft.server.v1_7_R4.EntityLiving;
import net.minecraft.server.v1_7_R4.EntityPlayer;
import net.minecraft.server.v1_8_R1.EntityEnderDragon;
import net.minecraft.server.v1_8_R1.EntityLiving;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
@ -79,7 +79,7 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
handle.setPassengerOf(getHandle());
}
private net.minecraft.server.v1_7_R4.Entity getHandle() {
private net.minecraft.server.v1_8_R1.Entity getHandle() {
return NMS.getHandle(npc.getEntity());
}
@ -186,7 +186,7 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
return enabled;
}
private void setMountedYaw(net.minecraft.server.v1_7_R4.Entity handle) {
private void setMountedYaw(net.minecraft.server.v1_8_R1.Entity handle) {
if (handle instanceof EntityEnderDragon || !Setting.USE_BOAT_CONTROLS.asBoolean())
return; // EnderDragon handles this separately
double tX = handle.locX + handle.motX;
@ -212,9 +212,9 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
return enabled;
}
private double updateHorizontalSpeed(net.minecraft.server.v1_7_R4.Entity handle, double speed, float speedMod) {
private double updateHorizontalSpeed(net.minecraft.server.v1_8_R1.Entity handle, double speed, float speedMod) {
double oldSpeed = Math.sqrt(handle.motX * handle.motX + handle.motZ * handle.motZ);
double horizontal = ((EntityLiving) handle.passenger).be;
double horizontal = ((EntityLiving) handle.passenger).aY;
if (horizontal > 0.0D) {
double dXcos = -Math.sin(handle.passenger.yaw * Math.PI / 180.0F);
double dXsin = Math.cos(handle.passenger.yaw * Math.PI / 180.0F);
@ -258,7 +258,7 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
@Override
public void run(Player rider) {
net.minecraft.server.v1_7_R4.Entity handle = getHandle();
net.minecraft.server.v1_8_R1.Entity handle = getHandle();
boolean onGround = handle.onGround;
float speedMod = npc.getNavigator().getDefaultParameters()
.modifiedSpeed((onGround ? GROUND_SPEED : AIR_SPEED));
@ -309,7 +309,7 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
}
Vector dir = rider.getEyeLocation().getDirection();
dir.multiply(npc.getNavigator().getDefaultParameters().speedModifier());
net.minecraft.server.v1_7_R4.Entity handle = getHandle();
net.minecraft.server.v1_8_R1.Entity handle = getHandle();
handle.motX = dir.getX();
handle.motY = dir.getY();
handle.motZ = dir.getZ();
@ -352,7 +352,7 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
getHandle().motY = 0.001;
return;
}
net.minecraft.server.v1_7_R4.Entity handle = getHandle();
net.minecraft.server.v1_8_R1.Entity handle = getHandle();
this.speed = updateHorizontalSpeed(handle, this.speed, 1F);
boolean shouldJump = NMS.shouldJump(handle.passenger);
if (shouldJump) {

View File

@ -1,8 +1,8 @@
package net.citizensnpcs.trait.waypoint;
import net.minecraft.server.v1_7_R4.DamageSource;
import net.minecraft.server.v1_7_R4.EntityEnderSignal;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.DamageSource;
import net.minecraft.server.v1_8_R1.EntityEnderSignal;
import net.minecraft.server.v1_8_R1.World;
public class EntityEnderSignalMarker extends EntityEnderSignal {
public EntityEnderSignalMarker(World world) {

View File

@ -16,36 +16,37 @@ import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.npc.entity.EntityHumanNPC;
import net.citizensnpcs.npc.network.EmptyChannel;
import net.minecraft.server.v1_7_R4.AttributeInstance;
import net.minecraft.server.v1_7_R4.ControllerJump;
import net.minecraft.server.v1_7_R4.DamageSource;
import net.minecraft.server.v1_7_R4.EnchantmentManager;
import net.minecraft.server.v1_7_R4.Entity;
import net.minecraft.server.v1_7_R4.EntityHorse;
import net.minecraft.server.v1_7_R4.EntityHuman;
import net.minecraft.server.v1_7_R4.EntityInsentient;
import net.minecraft.server.v1_7_R4.EntityLiving;
import net.minecraft.server.v1_7_R4.EntityMinecartAbstract;
import net.minecraft.server.v1_7_R4.EntityPlayer;
import net.minecraft.server.v1_7_R4.EntityTypes;
import net.minecraft.server.v1_7_R4.GenericAttributes;
import net.minecraft.server.v1_7_R4.MathHelper;
import net.minecraft.server.v1_7_R4.MobEffectList;
import net.minecraft.server.v1_7_R4.Navigation;
import net.minecraft.server.v1_7_R4.NetworkManager;
import net.minecraft.server.v1_7_R4.Packet;
import net.minecraft.server.v1_7_R4.PathfinderGoalSelector;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.AttributeInstance;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.ControllerJump;
import net.minecraft.server.v1_8_R1.DamageSource;
import net.minecraft.server.v1_8_R1.EnchantmentManager;
import net.minecraft.server.v1_8_R1.Entity;
import net.minecraft.server.v1_8_R1.EntityHorse;
import net.minecraft.server.v1_8_R1.EntityHuman;
import net.minecraft.server.v1_8_R1.EntityInsentient;
import net.minecraft.server.v1_8_R1.EntityLiving;
import net.minecraft.server.v1_8_R1.EntityMinecartAbstract;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import net.minecraft.server.v1_8_R1.EntityTypes;
import net.minecraft.server.v1_8_R1.GenericAttributes;
import net.minecraft.server.v1_8_R1.MathHelper;
import net.minecraft.server.v1_8_R1.NavigationAbstract;
import net.minecraft.server.v1_8_R1.NetworkManager;
import net.minecraft.server.v1_8_R1.Packet;
import net.minecraft.server.v1_8_R1.PathfinderGoalSelector;
import net.minecraft.server.v1_8_R1.World;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer;
import org.bukkit.craftbukkit.v1_7_R4.CraftSound;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R1.CraftServer;
import org.bukkit.craftbukkit.v1_8_R1.CraftSound;
import org.bukkit.craftbukkit.v1_8_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse;
import org.bukkit.entity.LivingEntity;
@ -72,31 +73,21 @@ public class NMS {
}
public static void attack(EntityLiving handle, Entity target) {
AttributeInstance attribute = handle.getAttributeInstance(GenericAttributes.e);
float damage = (float) (attribute == null ? 1D : attribute.getValue());
if (handle.hasEffect(MobEffectList.INCREASE_DAMAGE)) {
damage += 3 << handle.getEffect(MobEffectList.INCREASE_DAMAGE).getAmplifier();
}
if (handle.hasEffect(MobEffectList.WEAKNESS)) {
damage -= 2 << handle.getEffect(MobEffectList.WEAKNESS).getAmplifier();
}
int knockbackLevel = 0;
float f = (float) handle.getAttributeInstance(GenericAttributes.e).getValue();
int i = 0;
if (target instanceof EntityLiving) {
damage += EnchantmentManager.a(handle, (EntityLiving) target);
knockbackLevel += EnchantmentManager.getKnockbackEnchantmentLevel(handle, (EntityLiving) target);
f += EnchantmentManager.a(handle.bz(), ((EntityLiving) target).getMonsterType());
i += EnchantmentManager.a(handle);
}
boolean success = target.damageEntity(DamageSource.mobAttack(handle), damage);
if (!success)
return;
boolean flag = target.damageEntity(DamageSource.mobAttack(handle), f);
if (knockbackLevel > 0) {
target.g(-Math.sin(handle.yaw * Math.PI / 180.0F) * knockbackLevel * 0.5F, 0.1D,
Math.cos(handle.yaw * Math.PI / 180.0F) * knockbackLevel * 0.5F);
if (!flag)
return;
if (i > 0) {
target.g(-Math.sin(handle.yaw * Math.PI / 180.0F) * i * 0.5F, 0.1D, Math.cos(handle.yaw * Math.PI / 180.0F)
* i * 0.5F);
handle.motX *= 0.6D;
handle.motZ *= 0.6D;
}
@ -126,52 +117,54 @@ public class NMS {
}
public static void flyingMoveLogic(EntityLiving entity, float f, float f1) {
if (entity.L()) {
if (entity.V()) {
entity.a(f, f1, 0.02F);
entity.move(entity.motX, entity.motY, entity.motZ);
entity.motX *= 0.800000011920929D;
entity.motY *= 0.800000011920929D;
entity.motZ *= 0.800000011920929D;
} else if (entity.P()) {
} else if (entity.ab()) {
entity.a(f, f1, 0.02F);
entity.move(entity.motX, entity.motY, entity.motZ);
entity.motX *= 0.5D;
entity.motY *= 0.5D;
entity.motZ *= 0.5D;
} else {
float f2 = 0.91F;
float c1 = 0.91F;
if (entity.onGround) {
f2 = entity.world.getType(MathHelper.floor(entity.locX), MathHelper.floor(entity.boundingBox.b) - 1,
MathHelper.floor(entity.locZ)).frictionFactor * 0.91F;
c1 = entity.world.getType(
new BlockPosition(MathHelper.floor(entity.locX),
MathHelper.floor(entity.getBoundingBox().b) - 1, MathHelper.floor(entity.locZ)))
.getBlock().frictionFactor * 0.91F;
}
float f3 = 0.16277136F / (f2 * f2 * f2);
float f2 = 0.1627714F / (c1 * c1 * c1);
entity.a(f, f1, entity.onGround ? 0.1F * f2 : 0.02F);
entity.a(f, f1, entity.onGround ? 0.1F * f3 : 0.02F);
f2 = 0.91F;
c1 = 0.91F;
if (entity.onGround) {
f2 = entity.world.getType(MathHelper.floor(entity.locX), MathHelper.floor(entity.boundingBox.b) - 1,
MathHelper.floor(entity.locZ)).frictionFactor * 0.91F;
c1 = entity.world.getType(
new BlockPosition(MathHelper.floor(entity.locX),
MathHelper.floor(entity.getBoundingBox().b) - 1, MathHelper.floor(entity.locZ)))
.getBlock().frictionFactor * 0.91F;
}
entity.move(entity.motX, entity.motY, entity.motZ);
entity.motX *= f2;
entity.motY *= f2;
entity.motZ *= f2;
entity.motX *= c1;
entity.motY *= c1;
entity.motZ *= c1;
}
entity.aE = entity.aF;
double d0 = entity.locX - entity.lastX;
double d1 = entity.locZ - entity.lastZ;
float f4 = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F;
if (f4 > 1.0F) {
f4 = 1.0F;
entity.ay = entity.az;
double d1 = entity.locX - entity.lastX;
double d2 = entity.locZ - entity.lastZ;
float f3 = MathHelper.sqrt(d1 * d1 + d2 * d2) * 4.0F;
if (f3 > 1.0F) {
f3 = 1.0F;
}
entity.aF += (f4 - entity.aF) * 0.4F;
entity.aG += entity.aF;
entity.az += (f3 - entity.az) * 0.4F;
entity.aA += entity.az;
}
@SuppressWarnings("deprecation")
@ -211,10 +204,10 @@ public class NMS {
}
public static float getHeadYaw(EntityLiving handle) {
return handle.aO;
return handle.aI;
}
public static Navigation getNavigation(Entity handle) {
public static NavigationAbstract getNavigation(Entity handle) {
return handle instanceof EntityInsentient ? ((EntityInsentient) handle).getNavigation()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getNavigation() : null;
}
@ -242,7 +235,7 @@ public class NMS {
}
public static float getStepHeight(LivingEntity entity) {
return NMS.getHandle(entity).W;
return NMS.getHandle(entity).S;
}
public static void initNetworkManager(NetworkManager network) {
@ -264,11 +257,11 @@ public class NMS {
Entity mcEntity = getHandle(entity);
if (mcEntity == null)
return false;
return mcEntity.M() || mcEntity.P();
return mcEntity.W() || mcEntity.ab();
}
public static boolean isNavigationFinished(Navigation navigation) {
return navigation.g();
public static boolean isNavigationFinished(NavigationAbstract navigation) {
return navigation.m();
}
public static void loadPlugins() {
@ -277,7 +270,7 @@ public class NMS {
public static void look(Entity handle, Entity target) {
if (handle instanceof EntityInsentient) {
((EntityInsentient) handle).getControllerLook().a(target, 10.0F, ((EntityInsentient) handle).x());
((EntityInsentient) handle).getControllerLook().a(target, 10.0F, ((EntityInsentient) handle).bP());
} else if (handle instanceof EntityHumanNPC) {
((EntityHumanNPC) handle).setTargetLook(target, 10F, 40F);
}
@ -300,14 +293,11 @@ public class NMS {
Material mat = Material.getMaterial(npc.data().get(NPC.MINECART_ITEM_METADATA, ""));
int data = npc.data().get(NPC.MINECART_ITEM_DATA_METADATA, 0);
int offset = npc.data().get(NPC.MINECART_OFFSET_METADATA, 0);
if (mat == null) {
minecart.a(false);
} else {
minecart.a(true);
minecart.k(mat.getId());
minecart.a(mat != null);
if (mat != null) {
minecart.a(Block.getById(mat.getId()).fromLegacyData(data));
}
minecart.l(data);
minecart.m(offset);
minecart.l(offset);
}
public static float modifiedSpeed(float baseSpeed, NPC npc) {
@ -423,10 +413,10 @@ public class NMS {
while (yaw >= 180.0F) {
yaw -= 360.0F;
}
handle.aO = yaw;
handle.aI = yaw;
if (!(handle instanceof EntityHuman))
handle.aM = yaw;
handle.aP = yaw;
handle.aG = yaw;
handle.aJ = yaw;
}
public static void setShouldJump(org.bukkit.entity.Entity entity) {
@ -442,17 +432,17 @@ public class NMS {
}
public static void setStepHeight(EntityLiving entity, float height) {
entity.W = height;
entity.S = height;
}
public static void setVerticalMovement(org.bukkit.entity.Entity bukkitEntity, double d) {
if (!bukkitEntity.getType().isAlive())
return;
EntityLiving handle = NMS.getHandle((LivingEntity) bukkitEntity);
handle.be = (float) d;
handle.aY = (float) d;
}
public static boolean shouldJump(net.minecraft.server.v1_7_R4.Entity entity) {
public static boolean shouldJump(net.minecraft.server.v1_8_R1.Entity entity) {
if (JUMP_FIELD == null || !(entity instanceof EntityLiving))
return false;
try {
@ -482,8 +472,8 @@ public class NMS {
return entity.getBukkitEntity();
}
public static void stopNavigation(Navigation navigation) {
navigation.h();
public static void stopNavigation(NavigationAbstract navigation) {
navigation.n();
}
public static void trySwim(org.bukkit.entity.Entity entity) {
@ -510,8 +500,8 @@ public class NMS {
}
}
public static void updateNavigation(Navigation navigation) {
navigation.f();
public static void updateNavigation(NavigationAbstract navigation) {
navigation.k();
}
public static void updateNavigationWorld(org.bukkit.entity.Entity entity, org.bukkit.World world) {
@ -542,7 +532,7 @@ public class NMS {
if (PATHFINDING_RANGE == null)
return;
EntityInsentient handle = (EntityInsentient) en;
Navigation navigation = handle.getNavigation();
NavigationAbstract navigation = handle.getNavigation();
try {
AttributeInstance inst = (AttributeInstance) PATHFINDING_RANGE.get(navigation);
inst.setValue(pathfindingRange);
@ -559,14 +549,14 @@ public class NMS {
private static final Map<Class<?>, Constructor<?>> ENTITY_CONSTRUCTOR_CACHE = new WeakHashMap<Class<?>, Constructor<?>>();
private static Map<Integer, Class<?>> ENTITY_INT_TO_CLASS;
private static Field GOAL_FIELD = getField(PathfinderGoalSelector.class, "b");
private static final Field JUMP_FIELD = getField(EntityLiving.class, "bc");
private static final Field JUMP_FIELD = getField(EntityLiving.class, "aW");
private static Map<Class<?>, Integer> MC_ENTITY_CLASS_TO_INT = null;
private static Map<Integer, Class<?>> MC_ENTITY_INT_TO_CLASS = null;
private static Field NAVIGATION_WORLD_FIELD = getField(Navigation.class, "b");
private static Field NETWORK_ADDRESS = getField(NetworkManager.class, "n");
private static Field NETWORK_CHANNEL = getField(NetworkManager.class, "m");
private static Field NAVIGATION_WORLD_FIELD = getField(NavigationAbstract.class, "c");
private static Field NETWORK_ADDRESS = getField(NetworkManager.class, "j");
private static Field NETWORK_CHANNEL = getField(NetworkManager.class, "i");
private static final Location PACKET_CACHE_LOCATION = new Location(null, 0, 0, 0);
private static Field PATHFINDING_RANGE = getField(Navigation.class, "e");
private static Field PATHFINDING_RANGE = getField(NavigationAbstract.class, "a");
private static final Random RANDOM = Util.getFastRandom();
static {
@ -575,7 +565,7 @@ public class NMS {
ENTITY_INT_TO_CLASS = (Map<Integer, Class<?>>) field.get(null);
field = getField(EntityTypes.class, "f");
ENTITY_CLASS_TO_INT = (Map<Class<?>, Integer>) field.get(null);
field = getField(EntityTypes.class, "d");
field = getField(EntityTypes.class, "c");
ENTITY_CLASS_TO_NAME = (Map<Class<?>, String>) field.get(null);
} catch (Exception e) {
Messaging.logTr(Messages.ERROR_GETTING_ID_MAPPING, e.getMessage());

View File

@ -4,14 +4,14 @@ import java.util.Arrays;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.minecraft.server.v1_7_R4.EntityPlayer;
import net.minecraft.server.v1_7_R4.Packet;
import net.minecraft.server.v1_7_R4.PacketPlayOutAnimation;
import net.minecraft.server.v1_7_R4.PacketPlayOutBed;
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityMetadata;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import net.minecraft.server.v1_8_R1.Packet;
import net.minecraft.server.v1_8_R1.PacketPlayOutAnimation;
import net.minecraft.server.v1_8_R1.PacketPlayOutBed;
import net.minecraft.server.v1_8_R1.PacketPlayOutEntityMetadata;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.scheduler.BukkitRunnable;
@ -55,8 +55,8 @@ public enum PlayerAnimation {
new BukkitRunnable() {
@Override
public void run() {
if (player.dead || !player.valid ||
!player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
if (player.dead || !player.valid
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
cancel();
return;
}
@ -74,8 +74,8 @@ public enum PlayerAnimation {
SLEEP {
@Override
protected void playAnimation(EntityPlayer player, int radius) {
PacketPlayOutBed packet = new PacketPlayOutBed(player, (int) player.locX, (int) player.locY,
(int) player.locZ);
PacketPlayOutBed packet = new PacketPlayOutBed(player, new BlockPosition((int) player.locX,
(int) player.locY, (int) player.locZ));
sendPacketNearby(packet, player, radius);
}
},
@ -90,7 +90,7 @@ public enum PlayerAnimation {
START_USE_ITEM {
@Override
protected void playAnimation(EntityPlayer player, int radius) {
player.e(true);
player.f(true);
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
radius);
}
@ -120,7 +120,7 @@ public enum PlayerAnimation {
STOP_USE_ITEM {
@Override
protected void playAnimation(EntityPlayer player, int radius) {
player.e(false);
player.f(false);
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
radius);
}

View File

@ -123,8 +123,8 @@ public class Util {
public static <T extends Enum<?>> T matchEnum(T[] values, String toMatch) {
toMatch = toMatch.toLowerCase().replace('-', '_').replace(' ', '_');
for (T check : values) {
if (toMatch.equals(check.name().toLowerCase()) || toMatch.equals("item")
&& check == EntityType.DROPPED_ITEM) {
if (toMatch.equals(check.name().toLowerCase())
|| (toMatch.equals("item") && check == EntityType.DROPPED_ITEM)) {
return check; // check for an exact match first
}
}

View File

@ -15,7 +15,7 @@ public class PlayerControllerJump {
}
public void b() {
this.a.f(this.b);
this.a.i(this.b);
this.b = false;
}
}

View File

@ -1,9 +1,11 @@
package net.citizensnpcs.util.nms;
import net.citizensnpcs.npc.entity.EntityHumanNPC;
import net.minecraft.server.v1_7_R4.Entity;
import net.minecraft.server.v1_7_R4.EntityLiving;
import net.minecraft.server.v1_7_R4.MathHelper;
import net.minecraft.server.v1_8_R1.Entity;
import net.minecraft.server.v1_8_R1.EntityLiving;
import net.minecraft.server.v1_8_R1.MathHelper;
import org.bukkit.craftbukkit.v1_8_R1.TrigMath;
public class PlayerControllerLook {
private final EntityHumanNPC a;
@ -26,25 +28,25 @@ public class PlayerControllerLook {
double d1 = this.f - (this.a.locY + this.a.getHeadHeight());
double d2 = this.g - this.a.locZ;
double d3 = Math.sqrt(d0 * d0 + d2 * d2);
float f = (float) (Math.atan2(d2, d0) * 180.0D / 3.1415927410125732D) - 90.0F;
float f1 = (float) (-(Math.atan2(d1, d3) * 180.0D / 3.1415927410125732D));
this.a.pitch = this.a(this.a.pitch, f1, this.c);
this.a.aP = this.a(this.a.aP, f, this.b);
float f = (float) (TrigMath.atan2(d2, d0) * 180.0D / 3.141592741012573D) - 90.0F;
float f1 = (float) (-(TrigMath.atan2(d1, d3) * 180.0D / 3.141592741012573D));
this.a.pitch = a(this.a.pitch, f1, this.c);
this.a.aI = a(this.a.aI, f, this.b);
} else {
this.a.aP = this.a(this.a.aP, this.a.aN, 10.0F);
this.a.aI = a(this.a.aI, this.a.aG, 10.0F);
}
float f2 = MathHelper.g(this.a.aP - this.a.aN);
float f2 = MathHelper.g(this.a.aI - this.a.aG);
if (!this.a.isNavigating()) {
if (!this.a.getNavigation().m()) {
if (f2 < -75.0F) {
this.a.aP = this.a.aN - 75.0F;
this.a.aI = (this.a.aG - 75.0F);
}
if (f2 > 75.0F) {
this.a.aP = this.a.aN + 75.0F;
}
if (f2 > 75.0F)
this.a.aI = (this.a.aG + 75.0F);
}
}
@ -59,10 +61,10 @@ public class PlayerControllerLook {
public void a(Entity entity, float f, float f1) {
this.e = entity.locX;
if (entity instanceof EntityLiving) {
this.f = entity.locY + entity.getHeadHeight();
} else {
this.f = (entity.boundingBox.b + entity.boundingBox.e) / 2.0D;
if ((entity instanceof EntityLiving))
this.f = (entity.locY + entity.getHeadHeight());
else {
this.f = ((entity.getBoundingBox().b + entity.getBoundingBox().e) / 2.0D);
}
this.g = entity.locZ;
@ -84,4 +86,20 @@ public class PlayerControllerLook {
return f + f3;
}
}
public boolean b() {
return this.d;
}
public double e() {
return this.e;
}
public double f() {
return this.f;
}
public double g() {
return this.g;
}
}

View File

@ -2,17 +2,19 @@ package net.citizensnpcs.util.nms;
import net.citizensnpcs.npc.entity.EntityHumanNPC;
import net.citizensnpcs.util.NMS;
import net.minecraft.server.v1_7_R4.AttributeInstance;
import net.minecraft.server.v1_7_R4.GenericAttributes;
import net.minecraft.server.v1_7_R4.MathHelper;
import net.minecraft.server.v1_8_R1.AttributeInstance;
import net.minecraft.server.v1_8_R1.GenericAttributes;
import net.minecraft.server.v1_8_R1.MathHelper;
import org.bukkit.craftbukkit.v1_8_R1.TrigMath;
public class PlayerControllerMove {
private final EntityHumanNPC a;
private double b;
private double c;
private double d;
private double e;
private boolean f;
protected EntityHumanNPC a;
protected double b;
protected double c;
protected double d;
protected double e;
protected boolean f;
public PlayerControllerMove(EntityHumanNPC entityinsentient) {
this.a = entityinsentient;
@ -33,7 +35,7 @@ public class PlayerControllerMove {
this.f = true;
}
private float a(float f, float f1, float f2) {
protected float a(float f, float f1, float f2) {
float f3 = MathHelper.g(f1 - f);
if (f3 > f2) {
@ -44,7 +46,15 @@ public class PlayerControllerMove {
f3 = -f2;
}
return f + f3;
float f4 = f + f3;
if (f4 < 0.0F)
f4 += 360.0F;
else if (f4 > 360.0F) {
f4 -= 360.0F;
}
return f4;
}
public double b() {
@ -52,28 +62,40 @@ public class PlayerControllerMove {
}
public void c() {
this.a.be = 0;
this.a.aY = 0F;
if (this.f) {
this.f = false;
int i = MathHelper.floor(this.a.boundingBox.b + 0.5D);
int i = MathHelper.floor(this.a.getBoundingBox().b + 0.5D);
double d0 = this.b - this.a.locX;
double d1 = this.d - this.a.locZ;
double d2 = this.c - i;
double d3 = d0 * d0 + d2 * d2 + d1 * d1;
if (d3 >= 2.500000277905201E-7D) {
float f = (float) (Math.atan2(d1, d0) * 180.0D / Math.PI) - 90.0F;
this.a.yaw = this.a(this.a.yaw, f, 30.0F);
if (d3 >= 2.500000277905201E-007D) {
float f = (float) (TrigMath.atan2(d1, d0) * 180.0D / 3.141592741012573D) - 90.0F;
this.a.yaw = a(this.a.yaw, f, 30.0F);
NMS.setHeadYaw(a, this.a.yaw);
AttributeInstance speed = this.a.getAttributeInstance(GenericAttributes.d);
speed.setValue(0.1D * this.e);
float movement = (float) (this.e * speed.getValue()) * 10;
this.a.i(movement);
this.a.be = movement;
if (d2 > 0.0D && d0 * d0 + d1 * d1 < 1.0D) {
this.a.j(movement);
this.a.aY = movement;
if ((d2 > 0.0D) && (d0 * d0 + d1 * d1 < 1.0D))
this.a.getControllerJump().a();
}
}
}
}
}
public double d() {
return this.b;
}
public double e() {
return this.c;
}
public double f() {
return this.d;
}
}

View File

@ -1,232 +1,147 @@
package net.citizensnpcs.util.nms;
import net.citizensnpcs.npc.entity.EntityHumanNPC;
import net.minecraft.server.v1_7_R4.AttributeInstance;
import net.minecraft.server.v1_7_R4.Block;
import net.minecraft.server.v1_7_R4.Blocks;
import net.minecraft.server.v1_7_R4.Entity;
import net.minecraft.server.v1_7_R4.EntityChicken;
import net.minecraft.server.v1_7_R4.EntityInsentient;
import net.minecraft.server.v1_7_R4.GenericAttributes;
import net.minecraft.server.v1_7_R4.Material;
import net.minecraft.server.v1_7_R4.MathHelper;
import net.minecraft.server.v1_7_R4.Navigation;
import net.minecraft.server.v1_7_R4.PathEntity;
import net.minecraft.server.v1_7_R4.PathPoint;
import net.minecraft.server.v1_7_R4.Vec3D;
import net.minecraft.server.v1_7_R4.World;
import net.minecraft.server.v1_8_R1.AttributeInstance;
import net.minecraft.server.v1_8_R1.Block;
import net.minecraft.server.v1_8_R1.BlockPosition;
import net.minecraft.server.v1_8_R1.Blocks;
import net.minecraft.server.v1_8_R1.ChunkCache;
import net.minecraft.server.v1_8_R1.Entity;
import net.minecraft.server.v1_8_R1.EntityChicken;
import net.minecraft.server.v1_8_R1.EntityInsentient;
import net.minecraft.server.v1_8_R1.GenericAttributes;
import net.minecraft.server.v1_8_R1.Material;
import net.minecraft.server.v1_8_R1.MathHelper;
import net.minecraft.server.v1_8_R1.NavigationAbstract;
import net.minecraft.server.v1_8_R1.PathEntity;
import net.minecraft.server.v1_8_R1.PathPoint;
import net.minecraft.server.v1_8_R1.Pathfinder;
import net.minecraft.server.v1_8_R1.PathfinderNormal;
import net.minecraft.server.v1_8_R1.Vec3D;
import net.minecraft.server.v1_8_R1.World;
public class PlayerNavigation extends Navigation {
private final EntityHumanNPC a;
private final World b;
private PathEntity c;
private double d;
private final AttributeInstance e;
private boolean f;
public class PlayerNavigation extends NavigationAbstract {
private final AttributeInstance a;
private PathfinderNormal aa;
protected EntityHumanNPC b;
protected World c;
protected PathEntity d;
protected double e;
private int f;
private boolean ff;
private int g;
private int h;
private final Vec3D i = Vec3D.a(0.0D, 0.0D, 0.0D);
private boolean j = true;
private boolean k;
private boolean l;
private boolean m;
private Vec3D h = new Vec3D(0.0D, 0.0D, 0.0D);
private float i = 1.0F;
private final Pathfinder j;
public PlayerNavigation(EntityHumanNPC entityinsentient, World world) {
super(getDummyInsentient(entityinsentient), world);
this.a = entityinsentient;
this.b = world;
this.e = entityinsentient.getAttributeInstance(GenericAttributes.b);
this.e.setValue(24);
this.b = entityinsentient;
this.c = world;
this.a = entityinsentient.getAttributeInstance(GenericAttributes.b);
this.a.setValue(24);
this.j = a();
}
@Override
public boolean a() {
return this.l;
protected Pathfinder a() {
this.aa = new PathfinderNormal();
this.aa.a(true);
return new Pathfinder(this.aa);
}
@Override
public void a(boolean flag) {
this.l = flag;
}
@Override
public void a(double d0) {
this.d = d0;
}
@Override
public PathEntity a(double d0, double d1, double d2) {
return !this.l() ? null : this.b.a(this.a, MathHelper.floor(d0), (int) d1, MathHelper.floor(d2), this.d(),
this.j, this.k, this.l, this.m);
}
@Override
public boolean a(double d0, double d1, double d2, double d3) {
PathEntity pathentity = this.a(MathHelper.floor(d0), ((int) d1), MathHelper.floor(d2));
return this.a(pathentity, d3);
}
@Override
public PathEntity a(Entity entity) {
return !this.l() ? null : this.b.findPath(this.a, entity, this.d(), this.j, this.k, this.l, this.m);
}
@Override
public boolean a(Entity entity, double d0) {
PathEntity pathentity = this.a(entity);
return pathentity != null ? this.a(pathentity, d0) : false;
}
private boolean a(int i, int j, int k, int l, int i1, int j1, Vec3D vec3d, double d0, double d1) {
int k1 = i - l / 2;
int l1 = k - j1 / 2;
if (!this.b(k1, j, l1, l, i1, j1, vec3d, d0, d1)) {
return false;
} else {
for (int i2 = k1; i2 < k1 + l; ++i2) {
for (int j2 = l1; j2 < l1 + j1; ++j2) {
double d2 = i2 + 0.5D - vec3d.a;
double d3 = j2 + 0.5D - vec3d.c;
if (d2 * d0 + d3 * d1 >= 0.0D) {
Block block = this.b.getType(i2, j - 1, j2);
Material material = block.getMaterial();
if (material == Material.AIR) {
return false;
}
if (material == Material.WATER && !this.a.M()) {
return false;
}
if (material == Material.LAVA) {
return false;
}
}
}
}
return true;
public PathEntity a(BlockPosition paramBlockPosition) {
if (!b()) {
return null;
}
float f1 = i();
this.c.methodProfiler.a("pathfind");
BlockPosition localBlockPosition = new BlockPosition(this.b);
int k = (int) (f1 + 8.0F);
ChunkCache localChunkCache = new ChunkCache(this.c, localBlockPosition.a(-k, -k, -k), localBlockPosition.a(k,
k, k), 0);
PathEntity localPathEntity = this.j.a(localChunkCache, this.b, paramBlockPosition, f1);
this.c.methodProfiler.b();
return localPathEntity;
}
public void a(boolean paramBoolean) {
this.aa.c(paramBoolean);
}
@Override
public boolean a(PathEntity pathentity, double d0) {
if (pathentity == null) {
this.c = null;
return false;
} else {
if (!pathentity.a(this.c)) {
this.c = pathentity;
}
if (this.f) {
this.n();
}
if (this.c.d() == 0) {
return false;
} else {
this.d = d0;
Vec3D vec3d = this.j();
this.h = this.g;
this.i.a = vec3d.a;
this.i.b = vec3d.b;
this.i.c = vec3d.c;
return true;
}
}
}
private boolean a(Vec3D vec3d, Vec3D vec3d1, int i, int j, int k) {
int l = MathHelper.floor(vec3d.a);
int i1 = MathHelper.floor(vec3d.c);
double d0 = vec3d1.a - vec3d.a;
double d1 = vec3d1.c - vec3d.c;
double d2 = d0 * d0 + d1 * d1;
if (d2 < 1.0E-8D) {
return false;
} else {
double d3 = 1.0D / Math.sqrt(d2);
d0 *= d3;
d1 *= d3;
i += 2;
k += 2;
if (!this.a(l, (int) vec3d.b, i1, i, j, k, vec3d, d0, d1)) {
return false;
} else {
i -= 2;
k -= 2;
double d4 = 1.0D / Math.abs(d0);
double d5 = 1.0D / Math.abs(d1);
double d6 = l * 1 - vec3d.a;
double d7 = i1 * 1 - vec3d.c;
if (d0 >= 0.0D) {
++d6;
}
if (d1 >= 0.0D) {
++d7;
}
d6 /= d0;
d7 /= d1;
int j1 = d0 < 0.0D ? -1 : 1;
int k1 = d1 < 0.0D ? -1 : 1;
int l1 = MathHelper.floor(vec3d1.a);
int i2 = MathHelper.floor(vec3d1.c);
int j2 = l1 - l;
int k2 = i2 - i1;
do {
if (j2 * j1 <= 0 && k2 * k1 <= 0) {
return true;
}
if (d6 < d7) {
d6 += d4;
l += j1;
j2 = l1 - l;
} else {
d7 += d5;
i1 += k1;
k2 = i2 - i1;
}
} while (this.a(l, (int) vec3d.b, i1, i, j, k, vec3d, d0, d1));
return false;
}
}
public void a(double paramDouble) {
this.e = paramDouble;
}
@Override
public void b(boolean flag) {
this.k = flag;
public boolean a(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4) {
PathEntity localPathEntity = a(MathHelper.floor(paramDouble1), (int) paramDouble2,
MathHelper.floor(paramDouble3));
return a(localPathEntity, paramDouble4);
}
private boolean b(int i, int j, int k, int l, int i1, int j1, Vec3D vec3d, double d0, double d1) {
for (int k1 = i; k1 < i + l; ++k1) {
for (int l1 = j; l1 < j + i1; ++l1) {
for (int i2 = k; i2 < k + j1; ++i2) {
double d2 = k1 + 0.5D - vec3d.a;
double d3 = i2 + 0.5D - vec3d.c;
@Override
public PathEntity a(Entity paramEntity) {
if (!b()) {
return null;
}
if (d2 * d0 + d3 * d1 >= 0.0D) {
Block block = this.b.getType(k1, l1, i2);
float f1 = i();
this.c.methodProfiler.a("pathfind");
BlockPosition localBlockPosition = new BlockPosition(this.b).up();
int k = (int) (f1 + 16.0F);
if (!block.b(this.b, k1, l1, i2)) {
return false;
}
}
ChunkCache localChunkCache = new ChunkCache(this.c, localBlockPosition.a(-k, -k, -k), localBlockPosition.a(k,
k, k), 0);
PathEntity localPathEntity = this.j.a(localChunkCache, this.b, paramEntity, f1);
this.c.methodProfiler.b();
return localPathEntity;
}
@Override
public boolean a(Entity paramEntity, double paramDouble) {
PathEntity localPathEntity = a(paramEntity);
if (localPathEntity != null) {
return a(localPathEntity, paramDouble);
}
return false;
}
@Override
public void a(float paramFloat) {
this.i = paramFloat;
}
private boolean a(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6,
Vec3D paramVec3D, double paramDouble1, double paramDouble2) {
int i = paramInt1 - paramInt4 / 2;
int j = paramInt3 - paramInt6 / 2;
if (!b(i, paramInt2, j, paramInt4, paramInt5, paramInt6, paramVec3D, paramDouble1, paramDouble2)) {
return false;
}
for (int k = i; k < i + paramInt4; k++) {
for (int m = j; m < j + paramInt6; m++) {
double d1 = k + 0.5D - paramVec3D.a;
double d2 = m + 0.5D - paramVec3D.c;
if (d1 * paramDouble1 + d2 * paramDouble2 < 0.0D) {
continue;
}
Block localBlock = this.c.getType(new BlockPosition(k, paramInt2 - 1, m)).getBlock();
Material localMaterial = localBlock.getMaterial();
if (localMaterial == Material.AIR) {
return false;
}
if ((localMaterial == Material.WATER) && (!this.b.V())) {
return false;
}
if (localMaterial == Material.LAVA) {
return false;
}
}
}
@ -235,162 +150,290 @@ public class PlayerNavigation extends Navigation {
}
@Override
public boolean c() {
return this.k;
public boolean a(PathEntity paramPathEntity, double paramDouble) {
if (paramPathEntity == null) {
this.d = null;
return false;
}
if (!paramPathEntity.a(this.d)) {
this.d = paramPathEntity;
}
d();
if (this.d.d() == 0) {
return false;
}
this.e = paramDouble;
Vec3D localVec3D = c();
this.g = this.f;
this.h = localVec3D;
return true;
}
@Override
public void c(boolean flag) {
this.j = flag;
}
@Override
public float d() {
return (float) this.e.getValue();
}
@Override
public void d(boolean flag) {
this.f = flag;
}
@Override
public PathEntity e() {
return this.c;
}
@Override
public void e(boolean flag) {
this.m = flag;
}
@Override
public void f() {
++this.g;
if (!this.g()) {
if (this.l()) {
this.i();
}
if (!this.g()) {
Vec3D vec3d = this.c.a(this.a);
if (vec3d != null) {
this.a.setMoveDestination(vec3d.a, vec3d.b, vec3d.c, this.d);
}
protected void a(Vec3D paramVec3D) {
if (this.f - this.g > 100) {
if (paramVec3D.distanceSquared(this.h) < 2.25D) {
n();
}
this.g = this.f;
this.h = paramVec3D;
}
}
@Override
public boolean g() {
return this.c == null || this.c.b();
protected boolean a(Vec3D paramVec3D1, Vec3D paramVec3D2, int paramInt1, int paramInt2, int paramInt3) {
int i = MathHelper.floor(paramVec3D1.a);
int j = MathHelper.floor(paramVec3D1.c);
double d1 = paramVec3D2.a - paramVec3D1.a;
double d2 = paramVec3D2.c - paramVec3D1.c;
double d3 = d1 * d1 + d2 * d2;
if (d3 < 1.0E-008D) {
return false;
}
double d4 = 1.0D / Math.sqrt(d3);
d1 *= d4;
d2 *= d4;
paramInt1 += 2;
paramInt3 += 2;
if (!a(i, (int) paramVec3D1.b, j, paramInt1, paramInt2, paramInt3, paramVec3D1, d1, d2)) {
return false;
}
paramInt1 -= 2;
paramInt3 -= 2;
double d5 = 1.0D / Math.abs(d1);
double d6 = 1.0D / Math.abs(d2);
double d7 = i * 1 - paramVec3D1.a;
double d8 = j * 1 - paramVec3D1.c;
if (d1 >= 0.0D) {
d7 += 1.0D;
}
if (d2 >= 0.0D) {
d8 += 1.0D;
}
d7 /= d1;
d8 /= d2;
int k = d1 < 0.0D ? -1 : 1;
int m = d2 < 0.0D ? -1 : 1;
int n = MathHelper.floor(paramVec3D2.a);
int i1 = MathHelper.floor(paramVec3D2.c);
int i2 = n - i;
int i3 = i1 - j;
while ((i2 * k > 0) || (i3 * m > 0)) {
if (d7 < d8) {
d7 += d5;
i += k;
i2 = n - i;
} else {
d8 += d6;
j += m;
i3 = i1 - j;
}
if (!a(i, (int) paramVec3D1.b, j, paramInt1, paramInt2, paramInt3, paramVec3D1, d1, d2)) {
return false;
}
}
return true;
}
@Override
public void h() {
this.c = null;
protected boolean b() {
return (this.b.onGround) || ((h()) && (o())) || ((this.b.av()) && ((this.b.vehicle instanceof EntityChicken)));
}
private void i() {
Vec3D vec3d = this.j();
int i = this.c.d();
public void b(boolean paramBoolean) {
this.aa.b(paramBoolean);
}
for (int j = this.c.e(); j < this.c.d(); ++j) {
if (this.c.a(j).b != (int) vec3d.b) {
i = j;
break;
@SuppressWarnings("unchecked")
private boolean b(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6,
Vec3D paramVec3D, double paramDouble1, double paramDouble2) {
for (BlockPosition localBlockPosition : (Iterable<BlockPosition>) BlockPosition.a(new BlockPosition(paramInt1,
paramInt2, paramInt3), new BlockPosition(paramInt1 + paramInt4 - 1, paramInt2 + paramInt5 - 1,
paramInt3 + paramInt6 - 1))) {
double d1 = localBlockPosition.getX() + 0.5D - paramVec3D.a;
double d2 = localBlockPosition.getZ() + 0.5D - paramVec3D.c;
if (d1 * paramDouble1 + d2 * paramDouble2 < 0.0D) {
continue;
}
Block localBlock = this.c.getType(localBlockPosition).getBlock();
if (!localBlock.b(this.c, localBlockPosition)) {
return false;
}
}
return true;
}
float f = this.a.width * this.a.width;
@Override
protected Vec3D c() {
return new Vec3D(this.b.locX, p(), this.b.locZ);
}
int k;
public void c(boolean paramBoolean) {
this.aa.a(paramBoolean);
}
for (k = this.c.e(); k < i; ++k) {
if (vec3d.distanceSquared(this.c.a(this.a, k)) < f) {
this.c.c(k + 1);
}
}
k = MathHelper.f(this.a.width);
int l = (int) this.a.length + 1;
int i1 = k;
for (int j1 = i - 1; j1 >= this.c.e(); --j1) {
if (this.a(vec3d, this.c.a(this.a, j1), k, l, i1)) {
this.c.c(j1);
break;
}
}
if (this.g - this.h > 100) {
if (vec3d.distanceSquared(this.i) < 2.25D) {
this.h();
@Override
protected void d() {
super.d();
if (this.ff) {
if (this.c.i(new BlockPosition(MathHelper.floor(this.b.locX), (int) (this.b.getBoundingBox().b + 0.5D),
MathHelper.floor(this.b.locZ)))) {
return;
}
this.h = this.g;
this.i.a = vec3d.a;
this.i.b = vec3d.b;
this.i.c = vec3d.c;
}
}
private Vec3D j() {
return Vec3D.a(this.a.locX, this.k(), this.a.locZ);
}
private int k() {
if (this.a.M() && this.m) {
int i = (int) this.a.boundingBox.b;
Block block = this.b.getType(MathHelper.floor(this.a.locX), i, MathHelper.floor(this.a.locZ));
int j = 0;
do {
if (block != Blocks.WATER && block != Blocks.STATIONARY_WATER) {
return i;
}
++i;
block = this.b.getType(MathHelper.floor(this.a.locX), i, MathHelper.floor(this.a.locZ));
++j;
} while (j <= 16);
return (int) this.a.boundingBox.b;
} else {
return (int) (this.a.boundingBox.b + 0.5D);
}
}
private boolean l() {
return this.a.onGround || this.m && this.m() || this.a.am() && this.a.vehicle instanceof EntityChicken;
}
private boolean m() {
return this.a.M() || this.a.P();
}
private void n() {
if (!this.b
.i(MathHelper.floor(this.a.locX), (int) (this.a.boundingBox.b + 0.5D), MathHelper.floor(this.a.locZ))) {
for (int i = 0; i < this.c.d(); ++i) {
PathPoint pathpoint = this.c.a(i);
if (this.b.i(pathpoint.a, pathpoint.b, pathpoint.c)) {
this.c.b(i - 1);
for (int i = 0; i < this.d.d(); i++) {
PathPoint localPathPoint = this.d.a(i);
if (this.c.i(new BlockPosition(localPathPoint.a, localPathPoint.b, localPathPoint.c))) {
this.d.b(i - 1);
return;
}
}
}
}
public void d(boolean paramBoolean) {
this.aa.d(paramBoolean);
}
public boolean e() {
return this.aa.e();
}
public void e(boolean paramBoolean) {
this.ff = paramBoolean;
}
public boolean g() {
return this.aa.b();
}
public boolean h() {
return this.aa.d();
}
@Override
public float i() {
return (float) this.a.getValue();
}
@Override
public PathEntity j() {
return this.d;
}
@Override
public void k() {
this.f += 1;
if (m()) {
return;
}
if (b()) {
l();
} else if ((this.d != null) && (this.d.e() < this.d.d())) {
Vec3D localVec3D1 = c();
Vec3D localVec3D2 = this.d.a(this.b, this.d.e());
if ((localVec3D1.b > localVec3D2.b) && (!this.b.onGround)
&& (MathHelper.floor(localVec3D1.a) == MathHelper.floor(localVec3D2.a))
&& (MathHelper.floor(localVec3D1.c) == MathHelper.floor(localVec3D2.c))) {
this.d.c(this.d.e() + 1);
}
}
if (m()) {
return;
}
Vec3D localVec3D1 = this.d.a(this.b);
if (localVec3D1 == null) {
return;
}
this.b.getControllerMove().a(localVec3D1.a, localVec3D1.b, localVec3D1.c, this.e);
}
@Override
protected void l() {
Vec3D localVec3D1 = c();
int k = this.d.d();
for (int m = this.d.e(); m < this.d.d(); m++) {
if (this.d.a(m).b != (int) localVec3D1.b) {
k = m;
break;
}
}
float f1 = this.b.width * this.b.width * this.i;
for (int n = this.d.e(); n < k; n++) {
Vec3D localVec3D2 = this.d.a(this.b, n);
if (localVec3D1.distanceSquared(localVec3D2) < f1) {
this.d.c(n + 1);
}
}
int n = MathHelper.f(this.b.width);
int i1 = (int) this.b.length + 1;
for (int i3 = k - 1; i3 >= this.d.e(); i3--) {
if (a(localVec3D1, this.d.a(this.b, i3), n, i1, n)) {
this.d.c(i3);
break;
}
}
a(localVec3D1);
}
@Override
public boolean m() {
return (this.d == null) || (this.d.b());
}
@Override
public void n() {
this.d = null;
}
@Override
protected boolean o() {
return (this.b.V()) || (this.b.ab());
}
private int p() {
if ((!this.b.V()) || (!h())) {
return (int) (this.b.getBoundingBox().b + 0.5D);
}
int i = (int) this.b.getBoundingBox().b;
Block localBlock = this.c.getType(
new BlockPosition(MathHelper.floor(this.b.locX), i, MathHelper.floor(this.b.locZ))).getBlock();
int j = 0;
while ((localBlock == Blocks.FLOWING_WATER) || (localBlock == Blocks.WATER)) {
i++;
localBlock = this.c.getType(
new BlockPosition(MathHelper.floor(this.b.locX), i, MathHelper.floor(this.b.locZ))).getBlock();
j++;
if (j > 16) {
return (int) this.b.getBoundingBox().b;
}
}
return i;
}
public void setRange(float pathfindingRange) {
this.e.setValue(pathfindingRange);
this.a.setValue(pathfindingRange);
}
private static EntityInsentient getDummyInsentient(EntityHumanNPC from) {
return new EntityInsentient(null) {
};
}
}