From 9d0028541ea7eeac9a899b27030ae1beef70ef44 Mon Sep 17 00:00:00 2001 From: fullwall Date: Tue, 15 Nov 2022 21:30:23 +0800 Subject: [PATCH] Set sleep status every tick for now (only necessary on 1.14 and below) --- .../main/java/net/citizensnpcs/trait/SitTrait.java | 3 +++ .../main/java/net/citizensnpcs/trait/SleepTrait.java | 12 ++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/SitTrait.java b/main/src/main/java/net/citizensnpcs/trait/SitTrait.java index 8c0827827..40ad0a7d1 100644 --- a/main/src/main/java/net/citizensnpcs/trait/SitTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/SitTrait.java @@ -2,6 +2,7 @@ package net.citizensnpcs.trait; import org.bukkit.Location; import org.bukkit.entity.EntityType; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.npc.MemoryNPCDataStore; @@ -53,6 +54,8 @@ public class SitTrait extends Trait { if (holder.getEntity() != null && !NMS.getPassengers(holder.getEntity()).contains(npc.getEntity())) { NMS.mount(holder.getEntity(), npc.getEntity()); } + + holder.teleport(sittingAt, TeleportCause.PLUGIN); } public void setSitting(Location at) { diff --git a/main/src/main/java/net/citizensnpcs/trait/SleepTrait.java b/main/src/main/java/net/citizensnpcs/trait/SleepTrait.java index 7fb1a4764..5452caa05 100644 --- a/main/src/main/java/net/citizensnpcs/trait/SleepTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/SleepTrait.java @@ -4,7 +4,6 @@ import org.bukkit.Location; import org.bukkit.block.Bed; import org.bukkit.entity.Player; import org.bukkit.entity.Villager; -import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import net.citizensnpcs.api.persistence.Persist; import net.citizensnpcs.api.trait.Trait; @@ -30,18 +29,14 @@ public class SleepTrait extends Trait { public void run() { if (!npc.isSpawned()) return; - if (sleeping) { - if (at == null) { + + if (at == null) { + if (sleeping) { wakeup(); - } else { - npc.teleport(at, TeleportCause.PLUGIN); } return; } - if (at == null) - return; - if (SUPPORT_BLOCKDATA == null) { try { SUPPORT_BLOCKDATA = true; @@ -50,6 +45,7 @@ public class SleepTrait extends Trait { SUPPORT_BLOCKDATA = false; } } + if (npc.getEntity() instanceof Player) { Player player = (Player) npc.getEntity(); if ((SUPPORT_BLOCKDATA && at.getBlock().getBlockData() instanceof Bed)