fix npc looking at player being choppy & rename the tasks more appropriately

This commit is contained in:
Pyrbu 2023-04-20 16:10:01 +01:00
parent d0c37eb3cc
commit 6a0ea31074
5 changed files with 35 additions and 23 deletions

@ -1,5 +1,7 @@
package io.github.znetworkw.znpcservers.commands; package io.github.znetworkw.znpcservers.commands;
import org.bukkit.entity.Player;
import java.lang.reflect.Method; import java.lang.reflect.Method;
public class CommandInvoker { public class CommandInvoker {

@ -1,15 +0,0 @@
package io.github.znetworkw.znpcservers.npc.task;
import io.github.znetworkw.znpcservers.npc.NPC;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
public class NPCPathTask extends BukkitRunnable {
public NPCPathTask(Plugin serversNPC) {
runTaskTimerAsynchronously(serversNPC, 60L, 1L);
}
public void run() {
for (NPC npc : NPC.all()) if (npc.getNpcPath() != null) npc.getNpcPath().handle();
}
}

@ -0,0 +1,27 @@
package io.github.znetworkw.znpcservers.npc.task;
import io.github.znetworkw.znpcservers.npc.FunctionFactory;
import io.github.znetworkw.znpcservers.npc.NPC;
import io.github.znetworkw.znpcservers.user.ZUser;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
public class NPCPositionTask extends BukkitRunnable {
public NPCPositionTask(Plugin serversNPC) {
runTaskTimerAsynchronously(serversNPC, 60L, 1L);
}
public void run() {
for (NPC npc : NPC.all()) {
if (npc.getNpcPath() != null) {
npc.getNpcPath().handle();
}
else if (FunctionFactory.isTrue(npc, "look")) for (Player player : Bukkit.getOnlinePlayers()) {
ZUser user = ZUser.find(player);
if (npc.getViewers().contains(user)) npc.lookAt(user, player.getLocation(), false);
}
}
}
}

@ -1,7 +1,6 @@
package io.github.znetworkw.znpcservers.npc.task; package io.github.znetworkw.znpcservers.npc.task;
import io.github.znetworkw.znpcservers.configuration.ConfigurationConstants; import io.github.znetworkw.znpcservers.configuration.ConfigurationConstants;
import io.github.znetworkw.znpcservers.npc.FunctionFactory;
import io.github.znetworkw.znpcservers.npc.NPC; import io.github.znetworkw.znpcservers.npc.NPC;
import io.github.znetworkw.znpcservers.npc.conversation.ConversationModel; import io.github.znetworkw.znpcservers.npc.conversation.ConversationModel;
import io.github.znetworkw.znpcservers.user.ZUser; import io.github.znetworkw.znpcservers.user.ZUser;
@ -10,8 +9,8 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
public class NPCUpdateTask extends BukkitRunnable { public class NPCVisibilityTask extends BukkitRunnable {
public NPCUpdateTask(Plugin serversNPC) { public NPCVisibilityTask(Plugin serversNPC) {
runTaskTimerAsynchronously(serversNPC, 60L, 10L); runTaskTimerAsynchronously(serversNPC, 60L, 10L);
} }
@ -26,7 +25,6 @@ public class NPCUpdateTask extends BukkitRunnable {
} }
if (canSeeNPC) { if (canSeeNPC) {
if (!npc.getViewers().contains(zUser)) npc.spawn(zUser); if (!npc.getViewers().contains(zUser)) npc.spawn(zUser);
if (FunctionFactory.isTrue(npc, "look") && npc.getNpcPath() == null) npc.lookAt(zUser, player.getLocation(), false);
npc.getHologram().updateNames(zUser); npc.getHologram().updateNames(zUser);
ConversationModel conversationStorage = npc.getNpcPojo().getConversation(); ConversationModel conversationStorage = npc.getNpcPojo().getConversation();
if (conversationStorage != null && conversationStorage.getConversationType() == ConversationModel.ConversationType.RADIUS) npc.tryStartConversation(player); if (conversationStorage != null && conversationStorage.getConversationType() == ConversationModel.ConversationType.RADIUS) npc.tryStartConversation(player);

@ -11,9 +11,9 @@ import io.github.znetworkw.znpcservers.npc.NPC;
import io.github.znetworkw.znpcservers.npc.NPCModel; import io.github.znetworkw.znpcservers.npc.NPCModel;
import io.github.znetworkw.znpcservers.npc.NPCPath; import io.github.znetworkw.znpcservers.npc.NPCPath;
import io.github.znetworkw.znpcservers.npc.NPCType; import io.github.znetworkw.znpcservers.npc.NPCType;
import io.github.znetworkw.znpcservers.npc.task.NPCPathTask; import io.github.znetworkw.znpcservers.npc.task.NPCPositionTask;
import io.github.znetworkw.znpcservers.npc.task.NPCSaveTask; import io.github.znetworkw.znpcservers.npc.task.NPCSaveTask;
import io.github.znetworkw.znpcservers.npc.task.NPCUpdateTask; import io.github.znetworkw.znpcservers.npc.task.NPCVisibilityTask;
import io.github.znetworkw.znpcservers.user.ZUser; import io.github.znetworkw.znpcservers.user.ZUser;
import io.github.znetworkw.znpcservers.utility.BungeeUtils; import io.github.znetworkw.znpcservers.utility.BungeeUtils;
import io.github.znetworkw.znpcservers.utility.SchedulerUtils; import io.github.znetworkw.znpcservers.utility.SchedulerUtils;
@ -88,8 +88,8 @@ public class ZNPCsPlus extends JavaPlugin {
SCHEDULER = new SchedulerUtils(this); SCHEDULER = new SchedulerUtils(this);
BUNGEE_UTILS = new BungeeUtils(this); BUNGEE_UTILS = new BungeeUtils(this);
Bukkit.getOnlinePlayers().forEach(ZUser::find); Bukkit.getOnlinePlayers().forEach(ZUser::find);
new NPCPathTask(this); new NPCPositionTask(this);
new NPCUpdateTask(this); new NPCVisibilityTask(this);
new NPCSaveTask(this, ConfigurationConstants.SAVE_DELAY); new NPCSaveTask(this, ConfigurationConstants.SAVE_DELAY);
new PlayerListener(this); new PlayerListener(this);
new InventoryListener(this); new InventoryListener(this);