Backport some Llama controllable changes, minor camel fixes
This commit is contained in:
parent
3702b019cd
commit
ff736ebd4b
|
@ -109,7 +109,7 @@ public class EquipmentEditor extends Editor {
|
|||
EQUIPPERS.put(EntityType.SHEEP, new SheepEquipper());
|
||||
EQUIPPERS.put(EntityType.HORSE, new HorseEquipper());
|
||||
for (EntityType type : Util.optionalEntitySet("ZOMBIE_HORSE", "LLAMA", "TRADER_LLAMA", "DONKEY", "MULE",
|
||||
"SKELETON_HORSE")) {
|
||||
"SKELETON_HORSE", "CAMEL")) {
|
||||
EQUIPPERS.put(type, new HorseEquipper());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseDonkeyNPC extends EntityHorseDonkey implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -144,8 +143,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void f(double x, double y, double z) {
|
||||
Vector vector = Util.callPushEvent(npc, x, y, z);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_12_R1.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_12_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -21,6 +22,7 @@ import net.minecraft.server.v1_12_R1.BlockPosition;
|
|||
import net.minecraft.server.v1_12_R1.DamageSource;
|
||||
import net.minecraft.server.v1_12_R1.Entity;
|
||||
import net.minecraft.server.v1_12_R1.EntityLlama;
|
||||
import net.minecraft.server.v1_12_R1.GenericAttributes;
|
||||
import net.minecraft.server.v1_12_R1.IBlockData;
|
||||
import net.minecraft.server.v1_12_R1.NBTTagCompound;
|
||||
import net.minecraft.server.v1_12_R1.SoundEffect;
|
||||
|
@ -43,7 +45,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends EntityLlama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(World world) {
|
||||
this(world, null);
|
||||
|
@ -54,6 +58,7 @@ public class LlamaController extends MobEntityController {
|
|||
this.npc = (CitizensNPC) npc;
|
||||
if (npc != null) {
|
||||
((Llama) getBukkitEntity()).setDomestication(((Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,6 +118,14 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cV() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.cV();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SoundEffect d(DamageSource damagesource) {
|
||||
return NMSImpl.getSoundEffect(npc, super.d(damagesource), NPC.Metadata.HURT_SOUND);
|
||||
|
@ -130,8 +143,6 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void f(double x, double y, double z) {
|
||||
Vector vector = Util.callPushEvent(npc, x, y, z);
|
||||
|
@ -172,9 +183,18 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void M() {
|
||||
if (npc == null) {
|
||||
super.M();
|
||||
} else {
|
||||
super.M();
|
||||
if (npc != null) {
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttributeInstance(GenericAttributes.MOVEMENT_SPEED)
|
||||
.setValue(baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
c(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
|
|
|
@ -50,7 +50,6 @@ public class HorseSkeletonController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseSkeletonNPC extends EntityHorseSkeleton implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -159,8 +158,6 @@ public class HorseSkeletonController extends MobEntityController {
|
|||
return NMSImpl.getSoundEffect(npc, super.D(), NPC.Metadata.AMBIENT_SOUND);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void f(double x, double y, double z) {
|
||||
Vector vector = Util.callPushEvent(npc, x, y, z);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_13_R2.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_13_R2.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -24,6 +25,7 @@ import net.minecraft.server.v1_13_R2.EntityBoat;
|
|||
import net.minecraft.server.v1_13_R2.EntityLlama;
|
||||
import net.minecraft.server.v1_13_R2.EntityMinecartAbstract;
|
||||
import net.minecraft.server.v1_13_R2.FluidType;
|
||||
import net.minecraft.server.v1_13_R2.GenericAttributes;
|
||||
import net.minecraft.server.v1_13_R2.IBlockData;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagCompound;
|
||||
import net.minecraft.server.v1_13_R2.SoundEffect;
|
||||
|
@ -47,7 +49,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends EntityLlama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(World world) {
|
||||
this(world, null);
|
||||
|
@ -58,6 +62,7 @@ public class LlamaController extends MobEntityController {
|
|||
this.npc = (CitizensNPC) npc;
|
||||
if (npc != null) {
|
||||
((Llama) getBukkitEntity()).setDomestication(((Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,6 +112,14 @@ public class LlamaController extends MobEntityController {
|
|||
return NMS.getFallDistance(npc, super.bn());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bT() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.bT();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void c(float f, float f1) {
|
||||
if (npc == null || !npc.isFlyable()) {
|
||||
|
@ -144,8 +157,6 @@ public class LlamaController extends MobEntityController {
|
|||
return NMSImpl.getSoundEffect(npc, super.D(), NPC.Metadata.AMBIENT_SOUND);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void f(double x, double y, double z) {
|
||||
Vector vector = Util.callPushEvent(npc, x, y, z);
|
||||
|
@ -181,9 +192,18 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void mobTick() {
|
||||
if (npc == null) {
|
||||
super.mobTick();
|
||||
} else {
|
||||
super.mobTick();
|
||||
if (npc != null) {
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttributeInstance(GenericAttributes.MOVEMENT_SPEED)
|
||||
.setValue(baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
d(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
|
|
|
@ -53,7 +53,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseDonkeyNPC extends EntityHorseDonkey implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -158,8 +157,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void f(double x, double y, double z) {
|
||||
Vector vector = Util.callPushEvent(npc, x, y, z);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_14_R1.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_14_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -26,6 +27,7 @@ import net.minecraft.server.v1_14_R1.EntityLlama;
|
|||
import net.minecraft.server.v1_14_R1.EntityMinecartAbstract;
|
||||
import net.minecraft.server.v1_14_R1.EntityTypes;
|
||||
import net.minecraft.server.v1_14_R1.FluidType;
|
||||
import net.minecraft.server.v1_14_R1.GenericAttributes;
|
||||
import net.minecraft.server.v1_14_R1.IBlockData;
|
||||
import net.minecraft.server.v1_14_R1.NBTTagCompound;
|
||||
import net.minecraft.server.v1_14_R1.SoundEffect;
|
||||
|
@ -50,7 +52,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends EntityLlama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(EntityTypes<? extends EntityLlama> types, World world) {
|
||||
this(types, world, null);
|
||||
|
@ -61,6 +65,7 @@ public class LlamaController extends MobEntityController {
|
|||
this.npc = (CitizensNPC) npc;
|
||||
if (npc != null) {
|
||||
((Llama) getBukkitEntity()).setDomestication(((Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -108,6 +113,14 @@ public class LlamaController extends MobEntityController {
|
|||
return NMS.getFallDistance(npc, super.bv());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ca() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.ca();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkDespawn() {
|
||||
if (npc == null) {
|
||||
|
@ -130,6 +143,11 @@ public class LlamaController extends MobEntityController {
|
|||
return npc == null ? super.d(save) : false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dD() {
|
||||
return npc != null && npc.getNavigator().isNavigating() ? false : super.dD();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void e(Vec3D vec3d) {
|
||||
if (npc == null || !npc.isFlyable()) {
|
||||
|
@ -139,8 +157,6 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void f(double x, double y, double z) {
|
||||
Vector vector = Util.callPushEvent(npc, x, y, z);
|
||||
|
@ -193,9 +209,22 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void mobTick() {
|
||||
if (npc == null) {
|
||||
super.mobTick();
|
||||
} else {
|
||||
super.mobTick();
|
||||
if (npc != null) {
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttributeInstance(GenericAttributes.MOVEMENT_SPEED)
|
||||
.setValue(baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, yaw, pitch);
|
||||
}
|
||||
d(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
|
|
|
@ -54,7 +54,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseDonkeyNPC extends EntityHorseDonkey implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -160,8 +159,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public CraftEntity getBukkitEntity() {
|
||||
if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) {
|
||||
|
|
|
@ -14,6 +14,7 @@ import net.citizensnpcs.nms.v1_15_R1.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_15_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -27,6 +28,7 @@ import net.minecraft.server.v1_15_R1.EntityLlama;
|
|||
import net.minecraft.server.v1_15_R1.EntityMinecartAbstract;
|
||||
import net.minecraft.server.v1_15_R1.EntityTypes;
|
||||
import net.minecraft.server.v1_15_R1.FluidType;
|
||||
import net.minecraft.server.v1_15_R1.GenericAttributes;
|
||||
import net.minecraft.server.v1_15_R1.IBlockData;
|
||||
import net.minecraft.server.v1_15_R1.NBTTagCompound;
|
||||
import net.minecraft.server.v1_15_R1.SoundEffect;
|
||||
|
@ -51,7 +53,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends EntityLlama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(EntityTypes<? extends EntityLlama> types, World world) {
|
||||
this(types, world, null);
|
||||
|
@ -62,6 +66,7 @@ public class LlamaController extends MobEntityController {
|
|||
this.npc = (CitizensNPC) npc;
|
||||
if (npc != null) {
|
||||
((Llama) getBukkitEntity()).setDomestication(((Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,6 +122,14 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cj() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.cj();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void collide(net.minecraft.server.v1_15_R1.Entity entity) {
|
||||
// this method is called by both the entities involved - cancelling
|
||||
|
@ -141,8 +154,6 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public CraftEntity getBukkitEntity() {
|
||||
if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) {
|
||||
|
@ -195,12 +206,22 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void mobTick() {
|
||||
if (npc == null) {
|
||||
super.mobTick();
|
||||
} else {
|
||||
super.mobTick();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.mobTick();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttributeInstance(GenericAttributes.MOVEMENT_SPEED)
|
||||
.setValue(baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, yaw, pitch);
|
||||
}
|
||||
d(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
|
|
|
@ -54,7 +54,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseDonkeyNPC extends EntityHorseDonkey implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -146,8 +145,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
return npc == null ? super.d(save) : false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean er() {
|
||||
return npc != null && npc.getNavigator().isNavigating() ? false : super.er();
|
||||
|
|
|
@ -14,6 +14,7 @@ import net.citizensnpcs.nms.v1_16_R3.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_16_R3.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -27,6 +28,7 @@ import net.minecraft.server.v1_16_R3.EntityLlama;
|
|||
import net.minecraft.server.v1_16_R3.EntityMinecartAbstract;
|
||||
import net.minecraft.server.v1_16_R3.EntityTypes;
|
||||
import net.minecraft.server.v1_16_R3.FluidType;
|
||||
import net.minecraft.server.v1_16_R3.GenericAttributes;
|
||||
import net.minecraft.server.v1_16_R3.IBlockData;
|
||||
import net.minecraft.server.v1_16_R3.NBTTagCompound;
|
||||
import net.minecraft.server.v1_16_R3.SoundEffect;
|
||||
|
@ -51,7 +53,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends EntityLlama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(EntityTypes<? extends EntityLlama> types, World world) {
|
||||
this(types, world, null);
|
||||
|
@ -62,6 +66,7 @@ public class LlamaController extends MobEntityController {
|
|||
this.npc = (CitizensNPC) npc;
|
||||
if (npc != null) {
|
||||
((Llama) getBukkitEntity()).setDomestication(((Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -127,13 +132,19 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cs() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.cs();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean d(NBTTagCompound save) {
|
||||
return npc == null ? super.d(save) : false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void g(Vec3D vec3d) {
|
||||
if (npc == null || !npc.isFlyable()) {
|
||||
|
@ -195,12 +206,22 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void mobTick() {
|
||||
if (npc == null) {
|
||||
super.mobTick();
|
||||
} else {
|
||||
super.mobTick();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.mobTick();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttributeInstance(GenericAttributes.MOVEMENT_SPEED)
|
||||
.setValue(baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, yaw, pitch);
|
||||
}
|
||||
d(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
|
|
|
@ -53,7 +53,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseDonkeyNPC extends Donkey implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -130,8 +129,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_17_R1.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_17_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -24,6 +25,7 @@ import net.minecraft.tags.Tag;
|
|||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.animal.horse.Llama;
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
||||
import net.minecraft.world.entity.vehicle.Boat;
|
||||
|
@ -50,7 +52,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends Llama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(EntityType<? extends Llama> types, Level level) {
|
||||
this(types, level, null);
|
||||
|
@ -62,6 +66,7 @@ public class LlamaController extends MobEntityController {
|
|||
if (npc != null) {
|
||||
((org.bukkit.entity.Llama) getBukkitEntity())
|
||||
.setDomestication(((org.bukkit.entity.Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttribute(Attributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -97,20 +102,28 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void customServerAiStep() {
|
||||
if (npc == null) {
|
||||
super.customServerAiStep();
|
||||
} else {
|
||||
super.customServerAiStep();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.customServerAiStep();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(
|
||||
baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, getYRot(), getXRot());
|
||||
}
|
||||
setFlag(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
@ -144,6 +157,14 @@ public class LlamaController extends MobEntityController {
|
|||
return npc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isControlledByLocalInstance() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.isControlledByLocalInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeashed() {
|
||||
return NMSImpl.isLeashed(npc, super::isLeashed, this);
|
||||
|
|
|
@ -54,7 +54,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseDonkeyNPC extends Donkey implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -131,8 +130,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_18_R2.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_18_R2.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -25,6 +26,7 @@ import net.minecraft.tags.TagKey;
|
|||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.animal.horse.Llama;
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
||||
import net.minecraft.world.entity.vehicle.Boat;
|
||||
|
@ -51,7 +53,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends Llama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(EntityType<? extends Llama> types, Level level) {
|
||||
this(types, level, null);
|
||||
|
@ -63,6 +67,7 @@ public class LlamaController extends MobEntityController {
|
|||
if (npc != null) {
|
||||
((org.bukkit.entity.Llama) getBukkitEntity())
|
||||
.setDomestication(((org.bukkit.entity.Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttribute(Attributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,20 +103,28 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void customServerAiStep() {
|
||||
if (npc == null) {
|
||||
super.customServerAiStep();
|
||||
} else {
|
||||
super.customServerAiStep();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.customServerAiStep();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(
|
||||
baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, getYRot(), getXRot());
|
||||
}
|
||||
setFlag(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
@ -145,6 +158,14 @@ public class LlamaController extends MobEntityController {
|
|||
return npc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isControlledByLocalInstance() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.isControlledByLocalInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeashed() {
|
||||
return NMSImpl.isLeashed(npc, super::isLeashed, this);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_19_R3.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_19_R3.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -26,6 +27,7 @@ import net.minecraft.tags.TagKey;
|
|||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.animal.camel.Camel;
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
||||
import net.minecraft.world.entity.vehicle.Boat;
|
||||
|
@ -58,7 +60,9 @@ public class CamelController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityCamelNPC extends Camel implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityCamelNPC(EntityType<? extends Camel> types, Level level) {
|
||||
this(types, level, null);
|
||||
|
@ -70,6 +74,7 @@ public class CamelController extends MobEntityController {
|
|||
if (npc != null) {
|
||||
((org.bukkit.entity.Camel) getBukkitEntity())
|
||||
.setDomestication(((org.bukkit.entity.Camel) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttribute(Attributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -105,20 +110,28 @@ public class CamelController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void customServerAiStep() {
|
||||
if (npc == null) {
|
||||
super.customServerAiStep();
|
||||
} else {
|
||||
super.customServerAiStep();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.customServerAiStep();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(
|
||||
baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, getYRot(), getXRot());
|
||||
}
|
||||
setFlag(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
@ -152,6 +165,14 @@ public class CamelController extends MobEntityController {
|
|||
return npc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isControlledByLocalInstance() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.isControlledByLocalInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeashed() {
|
||||
return NMSImpl.isLeashed(npc, super::isLeashed, this);
|
||||
|
@ -163,6 +184,11 @@ public class CamelController extends MobEntityController {
|
|||
: npc.data().<Boolean> get(NPC.Metadata.COLLIDABLE, !npc.isProtected());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVehicle() {
|
||||
return npc != null && npc.getNavigator().isNavigating() ? false : super.isVehicle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void knockback(double strength, double dx, double dz) {
|
||||
NMS.callKnockbackEvent(npc, (float) strength, dx, dz, (evt) -> super.knockback((float) evt.getStrength(),
|
||||
|
|
|
@ -55,7 +55,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseDonkeyNPC extends Donkey implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -127,8 +126,6 @@ public class HorseDonkeyController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_19_R3.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_19_R3.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -26,6 +27,7 @@ import net.minecraft.tags.TagKey;
|
|||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.animal.horse.Llama;
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
||||
import net.minecraft.world.entity.vehicle.Boat;
|
||||
|
@ -52,7 +54,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends Llama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(EntityType<? extends Llama> types, Level level) {
|
||||
this(types, level, null);
|
||||
|
@ -64,6 +68,7 @@ public class LlamaController extends MobEntityController {
|
|||
if (npc != null) {
|
||||
((org.bukkit.entity.Llama) getBukkitEntity())
|
||||
.setDomestication(((org.bukkit.entity.Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttribute(Attributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -99,20 +104,28 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void customServerAiStep() {
|
||||
if (npc == null) {
|
||||
super.customServerAiStep();
|
||||
} else {
|
||||
super.customServerAiStep();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.customServerAiStep();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(
|
||||
baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, getYRot(), getXRot());
|
||||
}
|
||||
setFlag(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
@ -146,6 +159,14 @@ public class LlamaController extends MobEntityController {
|
|||
return npc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isControlledByLocalInstance() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.isControlledByLocalInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeashed() {
|
||||
return NMSImpl.isLeashed(npc, super::isLeashed, this);
|
||||
|
@ -157,6 +178,11 @@ public class LlamaController extends MobEntityController {
|
|||
: npc.data().<Boolean> get(NPC.Metadata.COLLIDABLE, !npc.isProtected());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVehicle() {
|
||||
return npc != null && npc.getNavigator().isNavigating() ? false : super.isVehicle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void knockback(double strength, double dx, double dz) {
|
||||
NMS.callKnockbackEvent(npc, (float) strength, dx, dz, (evt) -> super.knockback((float) evt.getStrength(),
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_20_R1.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_20_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -26,6 +27,7 @@ import net.minecraft.tags.TagKey;
|
|||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.animal.camel.Camel;
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
||||
import net.minecraft.world.entity.vehicle.Boat;
|
||||
|
@ -58,7 +60,9 @@ public class CamelController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityCamelNPC extends Camel implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityCamelNPC(EntityType<? extends Camel> types, Level level) {
|
||||
this(types, level, null);
|
||||
|
@ -70,6 +74,7 @@ public class CamelController extends MobEntityController {
|
|||
if (npc != null) {
|
||||
((org.bukkit.entity.Camel) getBukkitEntity())
|
||||
.setDomestication(((org.bukkit.entity.Camel) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttribute(Attributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -105,20 +110,28 @@ public class CamelController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void customServerAiStep() {
|
||||
if (npc == null) {
|
||||
super.customServerAiStep();
|
||||
} else {
|
||||
super.customServerAiStep();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.customServerAiStep();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(
|
||||
baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, getYRot(), getXRot());
|
||||
}
|
||||
setFlag(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
@ -152,6 +165,14 @@ public class CamelController extends MobEntityController {
|
|||
return npc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isControlledByLocalInstance() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.isControlledByLocalInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeashed() {
|
||||
return NMSImpl.isLeashed(npc, super::isLeashed, this);
|
||||
|
@ -163,6 +184,11 @@ public class CamelController extends MobEntityController {
|
|||
: npc.data().<Boolean> get(NPC.Metadata.COLLIDABLE, !npc.isProtected());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVehicle() {
|
||||
return npc != null && npc.getNavigator().isNavigating() ? false : super.isVehicle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void knockback(double strength, double dx, double dz) {
|
||||
NMS.callKnockbackEvent(npc, (float) strength, dx, dz, (evt) -> super.knockback((float) evt.getStrength(),
|
||||
|
|
|
@ -228,12 +228,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable
|
|||
boolean damaged = super.hurt(damagesource, f);
|
||||
if (damaged && hurtMarked) {
|
||||
hurtMarked = false;
|
||||
Bukkit.getScheduler().runTask(CitizensAPI.getPlugin(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
EntityHumanNPC.this.hurtMarked = true;
|
||||
}
|
||||
});
|
||||
Bukkit.getScheduler().runTask(CitizensAPI.getPlugin(), () -> EntityHumanNPC.this.hurtMarked = true);
|
||||
}
|
||||
return damaged;
|
||||
}
|
||||
|
|
|
@ -55,7 +55,6 @@ public class HorseMuleController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseMuleNPC extends Mule implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -127,8 +126,6 @@ public class HorseMuleController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
|
|
@ -55,7 +55,6 @@ public class HorseSkeletonController extends MobEntityController {
|
|||
|
||||
public static class EntityHorseSkeletonNPC extends SkeletonHorse implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
|
@ -127,8 +126,6 @@ public class HorseSkeletonController extends MobEntityController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.citizensnpcs.nms.v1_20_R1.util.NMSBoundingBox;
|
|||
import net.citizensnpcs.nms.v1_20_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.CitizensNPC;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.Controllable;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
@ -26,6 +27,7 @@ import net.minecraft.tags.TagKey;
|
|||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.animal.horse.Llama;
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
||||
import net.minecraft.world.entity.vehicle.Boat;
|
||||
|
@ -52,7 +54,9 @@ public class LlamaController extends MobEntityController {
|
|||
}
|
||||
|
||||
public static class EntityLlamaNPC extends Llama implements NPCHolder {
|
||||
private double baseMovementSpeed;
|
||||
private final CitizensNPC npc;
|
||||
private boolean riding;
|
||||
|
||||
public EntityLlamaNPC(EntityType<? extends Llama> types, Level level) {
|
||||
this(types, level, null);
|
||||
|
@ -64,6 +68,7 @@ public class LlamaController extends MobEntityController {
|
|||
if (npc != null) {
|
||||
((org.bukkit.entity.Llama) getBukkitEntity())
|
||||
.setDomestication(((org.bukkit.entity.Llama) getBukkitEntity()).getMaxDomestication());
|
||||
baseMovementSpeed = this.getAttribute(Attributes.MOVEMENT_SPEED).getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -99,20 +104,28 @@ public class LlamaController extends MobEntityController {
|
|||
|
||||
@Override
|
||||
public void customServerAiStep() {
|
||||
if (npc == null) {
|
||||
super.customServerAiStep();
|
||||
} else {
|
||||
super.customServerAiStep();
|
||||
if (npc != null) {
|
||||
NMSImpl.updateMinecraftAIState(npc, this);
|
||||
if (npc.useMinecraftAI()) {
|
||||
super.customServerAiStep();
|
||||
if (npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled()) {
|
||||
riding = getBukkitEntity().getPassengers().size() > 0;
|
||||
getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(
|
||||
baseMovementSpeed * npc.getNavigator().getDefaultParameters().speedModifier());
|
||||
} else {
|
||||
riding = false;
|
||||
}
|
||||
if (riding) {
|
||||
if (npc.getNavigator().isNavigating()) {
|
||||
org.bukkit.entity.Entity basePassenger = passengers.get(0).getBukkitEntity();
|
||||
NMS.look(basePassenger, getYRot(), getXRot());
|
||||
}
|
||||
setFlag(4, true); // datawatcher method
|
||||
}
|
||||
NMS.setStepHeight(getBukkitEntity(), 1);
|
||||
npc.update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND);
|
||||
|
@ -146,6 +159,14 @@ public class LlamaController extends MobEntityController {
|
|||
return npc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isControlledByLocalInstance() {
|
||||
if (npc != null && riding) {
|
||||
return true;
|
||||
}
|
||||
return super.isControlledByLocalInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLeashed() {
|
||||
return NMSImpl.isLeashed(npc, super::isLeashed, this);
|
||||
|
@ -157,6 +178,11 @@ public class LlamaController extends MobEntityController {
|
|||
: npc.data().<Boolean> get(NPC.Metadata.COLLIDABLE, !npc.isProtected());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVehicle() {
|
||||
return npc != null && npc.getNavigator().isNavigating() ? false : super.isVehicle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void knockback(double strength, double dx, double dz) {
|
||||
NMS.callKnockbackEvent(npc, (float) strength, dx, dz, (evt) -> super.knockback((float) evt.getStrength(),
|
||||
|
|
Loading…
Reference in New Issue