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