Add checks against the user being an NPC

feat/data-edit-commands
William 2 years ago
parent 5817de83e5
commit c2c5a424fb

@ -711,4 +711,9 @@ public class BukkitPlayer extends OnlineUser {
return BukkitHuskSync.getInstance().getLockedPlayers().contains(player.getUniqueId()); return BukkitHuskSync.getInstance().getLockedPlayers().contains(player.getUniqueId());
} }
@Override
public boolean isNpc() {
return player.hasMetadata("NPC");
}
} }

@ -52,6 +52,10 @@ public abstract class EventListener {
* @param user The {@link OnlineUser} to handle * @param user The {@link OnlineUser} to handle
*/ */
protected final void handlePlayerJoin(@NotNull OnlineUser user) { protected final void handlePlayerJoin(@NotNull OnlineUser user) {
if (user.isNpc()) {
return;
}
lockedPlayers.add(user.uuid); lockedPlayers.add(user.uuid);
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
try { try {
@ -152,7 +156,7 @@ public abstract class EventListener {
return; return;
} }
// Don't sync players awaiting synchronization // Don't sync players awaiting synchronization
if (lockedPlayers.contains(user.uuid)) { if (lockedPlayers.contains(user.uuid) || user.isNpc()) {
return; return;
} }
@ -181,7 +185,7 @@ public abstract class EventListener {
return; return;
} }
usersInWorld.stream() usersInWorld.stream()
.filter(user -> !lockedPlayers.contains(user.uuid)) .filter(user -> !lockedPlayers.contains(user.uuid) && !user.isNpc())
.forEach(user -> user.getUserData(plugin.getLoggingAdapter(), plugin.getSettings()) .forEach(user -> user.getUserData(plugin.getLoggingAdapter(), plugin.getSettings())
.thenAccept(data -> data.ifPresent(userData -> plugin.getDatabase() .thenAccept(data -> data.ifPresent(userData -> plugin.getDatabase()
.setUserData(user, userData, DataSaveCause.WORLD_SAVE)))); .setUserData(user, userData, DataSaveCause.WORLD_SAVE))));
@ -194,7 +198,7 @@ public abstract class EventListener {
* @param drops The items that this user would have dropped * @param drops The items that this user would have dropped
*/ */
protected void saveOnPlayerDeath(@NotNull OnlineUser user, @NotNull ItemData drops) { protected void saveOnPlayerDeath(@NotNull OnlineUser user, @NotNull ItemData drops) {
if (disabling || !plugin.getSettings().saveOnDeath || lockedPlayers.contains(user.uuid)) { if (disabling || !plugin.getSettings().saveOnDeath || lockedPlayers.contains(user.uuid) || user.isNpc()) {
return; return;
} }
@ -223,7 +227,7 @@ public abstract class EventListener {
// Save data for all online users // Save data for all online users
plugin.getOnlineUsers().stream() plugin.getOnlineUsers().stream()
.filter(user -> !lockedPlayers.contains(user.uuid)) .filter(user -> !lockedPlayers.contains(user.uuid) && !user.isNpc())
.forEach(user -> { .forEach(user -> {
lockedPlayers.add(user.uuid); lockedPlayers.add(user.uuid);
user.getUserData(plugin.getLoggingAdapter(), plugin.getSettings()).join() user.getUserData(plugin.getLoggingAdapter(), plugin.getSettings()).join()

@ -377,4 +377,11 @@ public abstract class OnlineUser extends User {
* @return the player's locked status * @return the player's locked status
*/ */
public abstract boolean isLocked(); public abstract boolean isLocked();
/**
* Get if the player is a NPC
*
* @return if the player is a NPC with metadata
*/
public abstract boolean isNpc();
} }

Loading…
Cancel
Save