mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2025-02-16 12:21:25 +01:00
Consolidate sit implementation, persist sit location to avoid sinking over successive restarts
This commit is contained in:
parent
f11f79fe21
commit
fc83c28085
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.trait;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
@ -15,14 +16,14 @@ import net.citizensnpcs.util.NMS;
|
||||
public class SitTrait extends Trait {
|
||||
private NPC holder;
|
||||
@Persist
|
||||
private boolean sitting;
|
||||
private Location sittingAt;
|
||||
|
||||
public SitTrait() {
|
||||
super("sittrait");
|
||||
}
|
||||
|
||||
public boolean isSitting() {
|
||||
return sitting;
|
||||
return sittingAt != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,7 +36,7 @@ public class SitTrait extends Trait {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (!npc.isSpawned() || !sitting) {
|
||||
if (!npc.isSpawned() || !isSitting()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -46,7 +47,7 @@ public class SitTrait extends Trait {
|
||||
}
|
||||
holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsHelperEntity(npc);
|
||||
holder.spawn(npc.getStoredLocation());
|
||||
holder.spawn(sittingAt);
|
||||
}
|
||||
|
||||
if (holder.getEntity() != null && !NMS.getPassengers(holder.getEntity()).contains(npc.getEntity())) {
|
||||
@ -54,9 +55,9 @@ public class SitTrait extends Trait {
|
||||
}
|
||||
}
|
||||
|
||||
public void setSitting(boolean val) {
|
||||
this.sitting = val;
|
||||
if (!sitting) {
|
||||
public void setSitting(Location at) {
|
||||
this.sittingAt = at != null ? at.clone() : null;
|
||||
if (!isSitting()) {
|
||||
onDespawn();
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,17 @@
|
||||
package net.citizensnpcs.util;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
|
||||
public enum PlayerAnimation {
|
||||
ARM_SWING,
|
||||
@ -26,6 +37,48 @@ public enum PlayerAnimation {
|
||||
}
|
||||
|
||||
public void play(Player player, int radius) {
|
||||
if (this == SIT) {
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(player.getLocation());
|
||||
return;
|
||||
}
|
||||
player.setMetadata("citizens.sitting", new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (!player.isValid() || !player.hasMetadata("citizens.sitting")
|
||||
|| !player.getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player)) {
|
||||
NMS.mount(holder.getEntity(), player);
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
return;
|
||||
} else if (this == STOP_SITTING) {
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(null);
|
||||
return;
|
||||
}
|
||||
player.setMetadata("citizens.sitting", new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player, null);
|
||||
return;
|
||||
}
|
||||
NMS.playAnimation(this, player, radius);
|
||||
}
|
||||
}
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_10_R1.util;
|
||||
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_10_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_10_R1.EntityPlayer;
|
||||
@ -35,40 +24,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
PacketPlayOutBed packet = new PacketPlayOutBed(player,
|
||||
new BlockPosition((int) player.locX, (int) player.locY, (int) player.locZ));
|
||||
@ -92,15 +47,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
playDefaultAnimation(player, radius, 2);
|
||||
break;
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_11_R1.util;
|
||||
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_11_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_11_R1.EntityPlayer;
|
||||
@ -35,40 +24,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case START_ELYTRA:
|
||||
player.M();
|
||||
break;
|
||||
@ -92,15 +47,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
playDefaultAnimation(player, radius, 2);
|
||||
break;
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_12_R1.util;
|
||||
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_12_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_12_R1.EntityPlayer;
|
||||
@ -35,40 +24,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
PacketPlayOutBed packet = new PacketPlayOutBed(player,
|
||||
new BlockPosition((int) player.locX, (int) player.locY, (int) player.locZ));
|
||||
@ -92,15 +47,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
playDefaultAnimation(player, radius, 2);
|
||||
break;
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_13_R2.util;
|
||||
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_13_R2.BlockPosition;
|
||||
import net.minecraft.server.v1_13_R2.EntityPlayer;
|
||||
@ -35,40 +24,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
PacketPlayOutBed packet = new PacketPlayOutBed(player,
|
||||
new BlockPosition((int) player.locX, (int) player.locY, (int) player.locZ));
|
||||
@ -92,15 +47,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
playDefaultAnimation(player, radius, 2);
|
||||
break;
|
||||
|
@ -3,20 +3,10 @@ package net.citizensnpcs.nms.v1_14_R1.util;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_14_R1.Entity;
|
||||
@ -35,40 +25,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
try {
|
||||
ENTITY_SETPOSE_METHOD.invoke(player, EntityPose.SLEEPING);
|
||||
@ -94,15 +50,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
try {
|
||||
ENTITY_SETPOSE_METHOD.invoke(player, EntityPose.STANDING);
|
||||
|
@ -3,20 +3,10 @@ package net.citizensnpcs.nms.v1_15_R1.util;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_15_R1.Entity;
|
||||
@ -35,40 +25,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
try {
|
||||
ENTITY_SETPOSE_METHOD.invoke(player, EntityPose.SLEEPING);
|
||||
@ -94,15 +50,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
try {
|
||||
ENTITY_SETPOSE_METHOD.invoke(player, EntityPose.STANDING);
|
||||
|
@ -3,20 +3,10 @@ package net.citizensnpcs.nms.v1_16_R3.util;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_16_R3.Entity;
|
||||
@ -35,40 +25,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
try {
|
||||
ENTITY_SETPOSE_METHOD.invoke(player, EntityPose.SLEEPING);
|
||||
@ -94,15 +50,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
try {
|
||||
ENTITY_SETPOSE_METHOD.invoke(player, EntityPose.STANDING);
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_17_R1.util;
|
||||
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.ClientboundAnimatePacket;
|
||||
@ -33,41 +22,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.isRemoved() || !player.valid
|
||||
|| !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
player.setPose(Pose.SLEEPING);
|
||||
break;
|
||||
@ -89,15 +43,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new ClientboundSetEntityDataPacket(player.getId(), player.getEntityData(), true),
|
||||
player, radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
player.setPose(Pose.STANDING);
|
||||
break;
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_18_R2.util;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.ClientboundAnimatePacket;
|
||||
@ -33,41 +22,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.isRemoved() || !player.valid
|
||||
|| !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
player.setPose(Pose.SLEEPING);
|
||||
break;
|
||||
@ -89,15 +43,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new ClientboundSetEntityDataPacket(player.getId(), player.getEntityData(), true),
|
||||
player, radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
player.setPose(Pose.STANDING);
|
||||
break;
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_19_R1.util;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.ClientboundAnimatePacket;
|
||||
@ -33,41 +22,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.isRemoved() || !player.valid
|
||||
|| !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
player.setPose(Pose.SLEEPING);
|
||||
break;
|
||||
@ -89,15 +43,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new ClientboundSetEntityDataPacket(player.getId(), player.getEntityData(), true),
|
||||
player, radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
player.setPose(Pose.STANDING);
|
||||
break;
|
||||
|
@ -2,21 +2,10 @@ package net.citizensnpcs.nms.v1_8_R3.util;
|
||||
|
||||
import java.util.EnumMap;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||
import net.citizensnpcs.trait.ArmorStandTrait;
|
||||
import net.citizensnpcs.trait.SitTrait;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.PlayerAnimation;
|
||||
import net.minecraft.server.v1_8_R3.BlockPosition;
|
||||
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
||||
@ -34,40 +23,6 @@ public class PlayerAnimationImpl {
|
||||
return;
|
||||
}
|
||||
switch (animation) {
|
||||
case SIT:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(true);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||
NPCRegistry registry = CitizensAPI.getNamedNPCRegistry("PlayerAnimationImpl");
|
||||
if (registry == null) {
|
||||
registry = CitizensAPI.createNamedNPCRegistry("PlayerAnimationImpl", new MemoryNPCDataStore());
|
||||
}
|
||||
final NPC holder = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
holder.getOrAddTrait(ArmorStandTrait.class).setAsPointEntity();
|
||||
holder.spawn(player.getBukkitEntity().getLocation());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
super.cancel();
|
||||
holder.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (player.dead || !player.valid || !player.getBukkitEntity().hasMetadata("citizens.sitting")
|
||||
|| !player.getBukkitEntity().getMetadata("citizens.sitting").get(0).asBoolean()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
if (!NMS.getPassengers(holder.getEntity()).contains(player.getBukkitEntity())) {
|
||||
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||
break;
|
||||
case SLEEP:
|
||||
PacketPlayOutBed packet = new PacketPlayOutBed(player,
|
||||
new BlockPosition((int) player.locX, (int) player.locY, (int) player.locZ));
|
||||
@ -78,15 +33,6 @@ public class PlayerAnimationImpl {
|
||||
sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player,
|
||||
radius);
|
||||
break;
|
||||
case STOP_SITTING:
|
||||
if (player instanceof NPCHolder) {
|
||||
((NPCHolder) player).getNPC().getOrAddTrait(SitTrait.class).setSitting(false);
|
||||
return;
|
||||
}
|
||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||
new FixedMetadataValue(CitizensAPI.getPlugin(), false));
|
||||
NMS.mount(player.getBukkitEntity(), null);
|
||||
break;
|
||||
case STOP_SLEEPING:
|
||||
playDefaultAnimation(player, radius, 2);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user