diff --git a/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml b/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml index e5a5301f0..d44ba58ec 100644 --- a/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml +++ b/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml @@ -20,6 +20,7 @@ + \ No newline at end of file diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java index 42dcfafec..316af7dac 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java @@ -1,6 +1,8 @@ package mineplex.core.common.util; import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -13,13 +15,18 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; public class UtilAlg -{ +{ public static TreeSet sortKey(Set toSort) { - TreeSet sortedSet = new TreeSet(); - for (String cur : toSort) + return sortSet(toSort, null); + } + + public static TreeSet sortSet(Collection toSort, Comparator comparator) + { + TreeSet sortedSet = new TreeSet(comparator); + for (T cur : toSort) sortedSet.add(cur); - + return sortedSet; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java index 72ab8260e..a5f0a270c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java @@ -33,6 +33,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.AsyncPlayerPreLoginEvent.Result; +import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -46,7 +47,7 @@ public class CoreClientManager extends MiniPlugin private AccountRepository _repository; private NautHashMap _clientList; private HashSet _duplicateLoginGlitchPreventionList; - + private NautHashMap _loginProcessors = new NautHashMap(); private LinkedList _querylessLoginProcessors = new LinkedList(); @@ -552,4 +553,10 @@ public class CoreClientManager extends MiniPlugin return client.GetRank().has(rank); } + + public int getCachedClientAccountId(UUID uuid) + { + PlayerInfo playerInfo = PlayerCache.getInstance().getPlayer(uuid); + return playerInfo == null ? -1 : playerInfo.getAccountId(); + } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java index 2b124dbc3..5e32c89bf 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java @@ -394,7 +394,16 @@ public class DonationManager extends MiniDbClientPlugin { public void run() { - rewardGold(callback, caller, player.getName(), ClientManager.getCachedClientAccountId(player.getUniqueId()), total, false); + int accountId = ClientManager.getCachedClientAccountId(player.getUniqueId()); + + if (accountId != -1) + { + rewardGold(callback, caller, player.getName(), accountId, total, false); + } + else + { + System.out.println("Failed to reward gold to [" + player.getName() + "]. " + "Cached account id was not found"); + } } }); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java index 446ba2d35..e80a4c930 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java @@ -1,6 +1,5 @@ package mineplex.game.clans; -import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; @@ -8,6 +7,7 @@ import org.bukkit.plugin.java.JavaPlugin; import net.minecraft.server.v1_7_R4.MinecraftServer; +import mineplex.core.FoodDupeFix; import mineplex.core.TablistFix; import mineplex.core.account.CoreClientManager; import mineplex.core.achievement.AchievementManager; @@ -19,13 +19,14 @@ import mineplex.core.donation.DonationManager; import mineplex.core.explosion.Explosion; import mineplex.core.friend.FriendManager; import mineplex.core.give.Give; +import mineplex.core.hologram.HologramManager; import mineplex.core.ignore.IgnoreManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.memory.MemoryFix; import mineplex.core.message.MessageManager; import mineplex.core.monitor.LagMeter; -import mineplex.core.observer.ObserverManager; +import mineplex.game.clans.clans.observer.ObserverManager; import mineplex.core.packethandler.PacketHandler; import mineplex.core.portal.Portal; import mineplex.core.preferences.PreferencesManager; @@ -41,7 +42,6 @@ import mineplex.core.updater.FileUpdater; import mineplex.core.updater.Updater; import mineplex.core.visibility.VisibilityManager; import mineplex.game.clans.clans.ClansManager; -import mineplex.game.clans.clans.worldevent.WorldEventManager; import mineplex.game.clans.items.GearManager; import mineplex.game.clans.shop.building.BuildingShop; import mineplex.game.clans.shop.farming.FarmingShop; @@ -110,10 +110,9 @@ public class Clans extends JavaPlugin Chat chat = new Chat(this, _clientManager, preferenceManager, achievementManager, serverStatusManager.getCurrentServerName()); new MessageManager(this, _clientManager, preferenceManager, ignoreManager, punish, new FriendManager(this, _clientManager, preferenceManager, portal), chat); - new ObserverManager(this); - new TablistFix(this); new MemoryFix(this); + new FoodDupeFix(this); new Explosion(this, blockRestore); new FriendManager(this, _clientManager, preferenceManager, portal); new InventoryManager(this, _clientManager); @@ -121,8 +120,9 @@ public class Clans extends JavaPlugin // Enable custom-gear related managers PacketHandler packetHandler = new PacketHandler(this); GearManager customGear = new GearManager(this, packetHandler); - - _clansManager = new ClansManager(this, serverStatusManager.getCurrentServerName(), _clientManager, _donationManager, blockRestore, teleport, chat, customGear, webServerAddress); + + HologramManager hologram = new HologramManager(this); + _clansManager = new ClansManager(this, serverStatusManager.getCurrentServerName(), _clientManager, _donationManager, blockRestore, teleport, chat, customGear, hologram, webServerAddress); new Recipes(this); new Farming(this); new BuildingShop(_clansManager, _clientManager, _donationManager); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java index 73980b741..c94908f5c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java @@ -65,6 +65,7 @@ import mineplex.game.clans.clans.commands.ServerTimeCommand; import mineplex.game.clans.clans.loot.LootManager; import mineplex.game.clans.clans.map.ItemMapManager; import mineplex.game.clans.clans.murder.MurderManager; +import mineplex.game.clans.clans.observer.ObserverManager; import mineplex.game.clans.clans.redis.ClanDeleteCommandHandler; import mineplex.game.clans.clans.redis.ClanLoadCommandHandler; import mineplex.game.clans.clans.regions.ClansRegions; @@ -219,6 +220,7 @@ public class ClansManager extends MiniClientPlugin implements IRelat new Spawn(plugin, this); new NPCManager(this); new LoggingManager(plugin, this); + new ObserverManager(plugin, _condition, this); new Weapon(plugin, energy); new Gameplay(plugin, this, blockRestore, damageManager); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverData.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverData.java similarity index 92% rename from Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverData.java rename to Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverData.java index 4a1c0b703..8e9e14fe0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverData.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverData.java @@ -1,4 +1,4 @@ -package mineplex.core.observer; +package mineplex.game.clans.clans.observer; import java.util.EnumSet; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverManager.java similarity index 77% rename from Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverManager.java rename to Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverManager.java index fca1b5b8d..6f0bb9702 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverManager.java @@ -1,4 +1,4 @@ -package mineplex.core.observer; +package mineplex.game.clans.clans.observer; import java.util.HashMap; import java.util.Map; @@ -19,19 +19,24 @@ import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.MiniPlugin; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; -import mineplex.core.observer.command.ObserverCommand; +import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.clans.observer.command.ObserverCommand; +import mineplex.game.clans.core.repository.ClanTerritory; +import mineplex.minecraft.game.core.condition.ConditionManager; public class ObserverManager extends MiniPlugin { // Used to Cloak Players -// private ConditionManager _conditionManager; + private ConditionManager _conditionManager; + private ClansManager _clansManager; private HashMap _observerMap; - public ObserverManager(JavaPlugin plugin) + public ObserverManager(JavaPlugin plugin, ConditionManager conditionManager, ClansManager clansManager) { super("Observer", plugin); -// _conditionManager = conditionManager; + _conditionManager = conditionManager; + _clansManager = clansManager; _observerMap = new HashMap(); } @@ -39,8 +44,8 @@ public class ObserverManager extends MiniPlugin { ObserverData data = new ObserverData(player); ((CraftPlayer) player).getHandle().spectating = true; -// _conditionManager.Clean(player); -// _conditionManager.Factory().Cloak("Observer", player, null, 999999999, true, true); + _conditionManager.Clean(player); + _conditionManager.Factory().Cloak("Observer", player, null, 999999999, true, true); UtilPlayer.clearInventory(player); UtilPlayer.clearPotionEffects(player); player.setGameMode(GameMode.CREATIVE); @@ -139,6 +144,21 @@ public class ObserverManager extends MiniPlugin } } + public boolean canEnterObserverMode(Player player, boolean notify) + { + ClanTerritory territory = _clansManager.getClanUtility().getClaim(player.getLocation()); + + if (territory == null || !territory.Safe) + { + if (notify) + UtilPlayer.message(player, F.main("Observer", "You must be in a Safe Zone to use observer mode!")); + + return false; + } + + return true; + } + private void notify(Player player, String message) { UtilPlayer.message(player, F.main("Observer", message)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverSettings.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverSettings.java similarity index 82% rename from Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverSettings.java rename to Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverSettings.java index 20b13384e..b06c62e3c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/observer/ObserverSettings.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/ObserverSettings.java @@ -1,4 +1,4 @@ -package mineplex.core.observer; +package mineplex.game.clans.clans.observer; import java.util.EnumSet; @@ -15,7 +15,7 @@ public enum ObserverSettings public static EnumSet getSettings(Rank rank) { - if (rank.Has(Rank.DEVELOPER)) + if (rank.has(Rank.DEVELOPER)) return EnumSet.of(CAN_OPEN_CHESTS); return EnumSet.noneOf(ObserverSettings.class); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/observer/command/ObserverCommand.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/command/ObserverCommand.java similarity index 80% rename from Plugins/Mineplex.Core/src/mineplex/core/observer/command/ObserverCommand.java rename to Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/command/ObserverCommand.java index e2dc9b0cb..0a236a669 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/observer/command/ObserverCommand.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/observer/command/ObserverCommand.java @@ -1,4 +1,4 @@ -package mineplex.core.observer.command; +package mineplex.game.clans.clans.observer.command; import org.bukkit.entity.Player; @@ -6,13 +6,15 @@ import mineplex.core.command.CommandBase; import mineplex.core.common.Rank; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; -import mineplex.core.observer.ObserverManager; +import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.clans.ClansUtility; +import mineplex.game.clans.clans.observer.ObserverManager; public class ObserverCommand extends CommandBase { public ObserverCommand(ObserverManager plugin) { - super(plugin, Rank.DEVELOPER, "observer", "o"); + super(plugin, Rank.ALL, "observer", "o"); } @Override @@ -28,6 +30,9 @@ public class ObserverCommand extends CommandBase } else { + if (!Plugin.canEnterObserverMode(caller, true)) + return; + Plugin.setObserver(caller); UtilPlayer.message(caller, F.main("Observer", "You have entered " + F.elem("Observer Mode"))); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java index fbd5bf0e6..8208dcba5 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java @@ -431,7 +431,7 @@ public class ServerNpcPage extends ShopPageInventory