diff --git a/main/src/main/java/net/citizensnpcs/Citizens.java b/main/src/main/java/net/citizensnpcs/Citizens.java index be9f32f7e..9771a1c88 100644 --- a/main/src/main/java/net/citizensnpcs/Citizens.java +++ b/main/src/main/java/net/citizensnpcs/Citizens.java @@ -588,11 +588,11 @@ public class Citizens extends JavaPlugin implements CitizensPlugin { if (saves == null) return; saves.storeAll(npcRegistry); - shops.saveShops(); + shops.storeShops(); if (async) { - saves.saveToDisk(); new Thread(() -> { shops.saveToDisk(); + saves.saveToDiskImmediate(); }).start(); } else { shops.saveToDisk(); diff --git a/main/src/main/java/net/citizensnpcs/StoredShops.java b/main/src/main/java/net/citizensnpcs/StoredShops.java index a51ac3afe..39fb86e06 100644 --- a/main/src/main/java/net/citizensnpcs/StoredShops.java +++ b/main/src/main/java/net/citizensnpcs/StoredShops.java @@ -6,6 +6,7 @@ import com.google.common.collect.Maps; import net.citizensnpcs.api.persistence.Persist; import net.citizensnpcs.api.persistence.PersistenceLoader; +import net.citizensnpcs.api.util.Messaging; import net.citizensnpcs.api.util.Storage; import net.citizensnpcs.api.util.YamlStorage; import net.citizensnpcs.trait.ShopTrait.NPCShop; @@ -22,6 +23,10 @@ public class StoredShops { } public void deleteShop(NPCShop shop) { + if (Messaging.isDebugging()) { + Messaging.debug("Deleting shop", shop.getName()); + new Exception().printStackTrace(); + } if (npcShops.values().contains(shop)) { npcShops.values().remove(shop); } else { @@ -41,18 +46,22 @@ public class StoredShops { } public void load() { + Messaging.debug("Loading shops...", globalShops.size(), npcShops.size()); PersistenceLoader.load(this, storage.getKey("")); } public boolean loadFromDisk() { + Messaging.debug("Loading shops from disk..."); return storage.load(); } - public void saveShops() { - PersistenceLoader.save(this, storage.getKey("")); - } - public void saveToDisk() { + Messaging.debug("Saving shops to disk..."); storage.save(); } + + public void storeShops() { + Messaging.debug("Saving shops...", globalShops.size(), npcShops.size()); + PersistenceLoader.save(this, storage.getKey("")); + } } \ No newline at end of file diff --git a/main/src/main/java/net/citizensnpcs/trait/LookClose.java b/main/src/main/java/net/citizensnpcs/trait/LookClose.java index e1736f6c6..d829558c3 100644 --- a/main/src/main/java/net/citizensnpcs/trait/LookClose.java +++ b/main/src/main/java/net/citizensnpcs/trait/LookClose.java @@ -1,7 +1,9 @@ package net.citizensnpcs.trait; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; @@ -106,8 +108,13 @@ public class LookClose extends Trait implements Toggleable { session.getSession().rotateToFace(player); seen.add(player.getUniqueId()); } - for (UUID uuid : Sets.newHashSet(Sets.difference(sessions.keySet(), seen))) { - sessions.remove(uuid).end(); + for (Iterator> iterator = sessions.entrySet().iterator(); iterator + .hasNext();) { + Entry entry = iterator.next(); + if (!seen.contains(entry.getKey())) { + entry.getValue().end(); + iterator.remove(); + } } return; } else if (sessions.size() > 0) { diff --git a/main/src/main/java/net/citizensnpcs/trait/versioned/VillagerTrait.java b/main/src/main/java/net/citizensnpcs/trait/versioned/VillagerTrait.java index 0cd901585..3f3752e55 100644 --- a/main/src/main/java/net/citizensnpcs/trait/versioned/VillagerTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/versioned/VillagerTrait.java @@ -62,11 +62,12 @@ public class VillagerTrait extends Trait { @Command( aliases = { "npc" }, - usage = "villager (--level level) (--type type) (--profession profession)", + usage = "villager (--level level) (--type type) (--profession profession) -s(hake head)", desc = "Sets villager modifiers", modifiers = { "villager" }, min = 1, max = 1, + flags = "s", permission = "citizens.npc.villager") @Requirements(selected = true, ownership = true, types = EntityType.VILLAGER) public static void villager(CommandContext args, CommandSender sender, NPC npc, @@ -97,6 +98,9 @@ public class VillagerTrait extends Trait { npc.getOrAddTrait(VillagerProfession.class).setProfession(profession); output += " " + Messaging.tr(Messages.PROFESSION_SET, npc.getName(), args.getFlag("profession")); } + if (args.hasFlag('s')) { + ((Villager) npc.getEntity()).shakeHead(); + } if (!output.isEmpty()) { Messaging.send(sender, output.trim()); } else {