Lobby Update
This commit is contained in:
parent
5365f1269f
commit
3b9d6adfbc
|
@ -42,6 +42,7 @@ public class SortedSchematicLoader<T>
|
||||||
if (entry != null && !entry.getKey().equals(_currentValue))
|
if (entry != null && !entry.getKey().equals(_currentValue))
|
||||||
{
|
{
|
||||||
_currentValue = entry.getKey();
|
_currentValue = entry.getKey();
|
||||||
|
Schematic schematic = entry.getValue();
|
||||||
entry.getValue().paste(_pasteLocation, false);
|
entry.getValue().paste(_pasteLocation, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
package mineplex.core.common.util;
|
package mineplex.core.common.util;
|
||||||
|
|
||||||
import java.util.*;
|
import mineplex.core.common.MinecraftVersion;
|
||||||
|
import mineplex.core.common.events.PlayerMessageEvent;
|
||||||
import net.minecraft.server.v1_8_R3.*;
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
|
import net.md_5.bungee.api.chat.ClickEvent.Action;
|
||||||
|
import net.md_5.bungee.api.chat.HoverEvent;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
||||||
|
import net.minecraft.server.v1_8_R3.Packet;
|
||||||
|
import net.minecraft.server.v1_8_R3.PacketPlayOutWorldBorder;
|
||||||
|
import net.minecraft.server.v1_8_R3.PlayerConnection;
|
||||||
|
import net.minecraft.server.v1_8_R3.WorldBorder;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
@ -20,8 +28,17 @@ import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.util.BlockIterator;
|
import org.bukkit.util.BlockIterator;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import mineplex.core.common.MinecraftVersion;
|
import java.util.ArrayList;
|
||||||
import mineplex.core.common.events.PlayerMessageEvent;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class UtilPlayer
|
public class UtilPlayer
|
||||||
{
|
{
|
||||||
|
@ -945,6 +962,67 @@ public class UtilPlayer
|
||||||
ALLOWED_COMMANDS.remove(player.getUniqueId());
|
ALLOWED_COMMANDS.remove(player.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a formatted clickable accept or deny (or view) message to a player
|
||||||
|
* Both ACCEPT and DENY will always be sent, but VIEW will only be sent when <code>viewCommand</code> is not null
|
||||||
|
*
|
||||||
|
* @param player The player to send the message to
|
||||||
|
* @param header The message header, such as Party or Game
|
||||||
|
* @param acceptCommand The command to be run if ACCEPT is clicked
|
||||||
|
* @param acceptDisplayText The text displayed when hovering over ACCEPT
|
||||||
|
* @param declineCommand The command to be run when DENY is clicked
|
||||||
|
* @param declineDisplayText The text displayed when hovering over DENY
|
||||||
|
* @param viewCommand <code>Optional</code> The command to be run when VIEW is clicked
|
||||||
|
* @param viewDisplayText <code>Optional</code> The text displayed when hovering over VIEW
|
||||||
|
*/
|
||||||
|
public static void sendAcceptOrDeny(Player player, String header,
|
||||||
|
String acceptCommand, String acceptDisplayText,
|
||||||
|
String declineCommand, String declineDisplayText,
|
||||||
|
String viewCommand, String viewDisplayText)
|
||||||
|
{
|
||||||
|
TextComponent textComponent = new TextComponent(F.main(header, "Reply: "));
|
||||||
|
|
||||||
|
TextComponent accept = new TextComponent("ACCEPT");
|
||||||
|
accept.setColor(net.md_5.bungee.api.ChatColor.GREEN);
|
||||||
|
accept.setBold(true);
|
||||||
|
accept.setClickEvent(new ClickEvent(Action.RUN_COMMAND, acceptCommand));
|
||||||
|
accept.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{
|
||||||
|
new TextComponent(acceptDisplayText)
|
||||||
|
}));
|
||||||
|
|
||||||
|
textComponent.addExtra(accept);
|
||||||
|
textComponent.addExtra(" ");
|
||||||
|
|
||||||
|
TextComponent deny = new TextComponent("DENY");
|
||||||
|
deny.setColor(net.md_5.bungee.api.ChatColor.RED);
|
||||||
|
deny.setBold(true);
|
||||||
|
deny.setClickEvent(new ClickEvent(Action.RUN_COMMAND, declineCommand));
|
||||||
|
deny.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{
|
||||||
|
new TextComponent(declineDisplayText)
|
||||||
|
}));
|
||||||
|
|
||||||
|
textComponent.addExtra(deny);
|
||||||
|
|
||||||
|
if(viewCommand != null)
|
||||||
|
{
|
||||||
|
textComponent.addExtra(" ");
|
||||||
|
|
||||||
|
TextComponent view = new TextComponent("VIEW");
|
||||||
|
view.setColor(net.md_5.bungee.api.ChatColor.YELLOW);
|
||||||
|
view.setBold(true);
|
||||||
|
view.setClickEvent(new ClickEvent(Action.RUN_COMMAND, viewCommand));
|
||||||
|
if(viewDisplayText != null)
|
||||||
|
{
|
||||||
|
view.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{
|
||||||
|
new TextComponent(viewDisplayText)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
textComponent.addExtra(view);
|
||||||
|
}
|
||||||
|
|
||||||
|
player.spigot().sendMessage(textComponent);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns whether the UUID belongs to a slim skin
|
* Returns whether the UUID belongs to a slim skin
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
package mineplex.core.interactions;
|
||||||
|
|
||||||
|
import mineplex.core.MiniPlugin;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event.Result;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
|
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages interactions with Armor stands, paintings, and in the main hub, taking items out of chests.
|
||||||
|
*/
|
||||||
|
public class NewInteractionsManager extends MiniPlugin
|
||||||
|
{
|
||||||
|
|
||||||
|
public NewInteractionsManager()
|
||||||
|
{
|
||||||
|
super("Interactions Manager");
|
||||||
|
registerEvents(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInteract(PlayerArmorStandManipulateEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onClickBrewingStand(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if(event.getClickedBlock() != null && event.getClickedBlock().getType() == Material.BREWING_STAND)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
event.setUseInteractedBlock(Result.DENY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
public void onChestInteract(InventoryClickEvent event)
|
||||||
|
{
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
Inventory inventory = event.getClickedInventory();
|
||||||
|
|
||||||
|
if(inventory == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inventory.getType() != InventoryType.CHEST)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inventory.getSize() != 27 && inventory.getSize() != 54)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inventory.getTitle() != null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
event.setResult(Result.DENY);
|
||||||
|
}
|
||||||
|
}
|
|
@ -26,6 +26,7 @@ import mineplex.core.common.util.*;
|
||||||
import mineplex.core.disguise.DisguiseManager;
|
import mineplex.core.disguise.DisguiseManager;
|
||||||
import mineplex.core.disguise.disguises.DisguiseBase;
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
import mineplex.core.portal.Portal;
|
import mineplex.core.portal.Portal;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.punish.Category;
|
import mineplex.core.punish.Category;
|
||||||
import mineplex.core.punish.Punish;
|
import mineplex.core.punish.Punish;
|
||||||
|
@ -187,7 +188,7 @@ public class AntiHack extends MiniPlugin
|
||||||
{
|
{
|
||||||
((CraftPlayer) player).getHandle().sendMessage(getDetailedMessage(violation));
|
((CraftPlayer) player).getHandle().sendMessage(getDetailedMessage(violation));
|
||||||
|
|
||||||
} else if (_clientManager.Get(player).GetRank().has(Rank.HELPER) && (violation.getOriginatingServer().equals(_thisServer) || Managers.get(PreferencesManager.class).Get(player).ShowMacReports))
|
} else if (_clientManager.Get(player).GetRank().has(Rank.HELPER) && (violation.getOriginatingServer().equals(_thisServer) || Managers.get(PreferencesManager.class).get(player).isActive(Preference.SHOW_MAC_REPORTS)))
|
||||||
{
|
{
|
||||||
((CraftPlayer) player).getHandle().sendMessage(component);
|
((CraftPlayer) player).getHandle().sendMessage(component);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,19 +12,13 @@ import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.hologram.Hologram;
|
import mineplex.core.hologram.Hologram;
|
||||||
import mineplex.core.hologram.HologramManager;
|
import mineplex.core.hologram.HologramManager;
|
||||||
import mineplex.core.stats.StatsManager;
|
import mineplex.core.stats.StatsManager;
|
||||||
import mineplex.core.thread.ThreadPool;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.serverdata.Region;
|
import mineplex.serverdata.Region;
|
||||||
import mineplex.serverdata.redis.counter.GoalCounter;
|
import mineplex.serverdata.redis.counter.GoalCounter;
|
||||||
import mineplex.serverdata.redis.counter.GoalCounterListener;
|
import mineplex.serverdata.redis.counter.GoalCounterListener;
|
||||||
import mineplex.serverdata.servers.ConnectionData;
|
import mineplex.serverdata.servers.ConnectionData;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.block.BlockFace;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -63,7 +57,7 @@ public class Fountain implements GoalCounterListener
|
||||||
_name = name;
|
_name = name;
|
||||||
_dataKey = dataKey;
|
_dataKey = dataKey;
|
||||||
_location = location;
|
_location = location;
|
||||||
_hologram = new Hologram(hologramManager, location.clone().add(4, 3, -3), name).start();
|
_hologram = new Hologram(hologramManager, new Location(location.getWorld(), -23, 75, 3), name).start();
|
||||||
_counter = new GoalCounter(writeConnection, readConnection, region, dataKey, goal);
|
_counter = new GoalCounter(writeConnection, readConnection, region, dataKey, goal);
|
||||||
_counter.addListener(this);
|
_counter.addListener(this);
|
||||||
_brawlActive = false;
|
_brawlActive = false;
|
||||||
|
|
|
@ -3,17 +3,13 @@ package mineplex.core.brawl.fountain;
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.brawl.fountain.command.FountainCommand;
|
import mineplex.core.brawl.fountain.command.FountainCommand;
|
||||||
import mineplex.core.brawl.fountain.gui.FountainShop;
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.common.util.UtilWorld;
|
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.hologram.HologramManager;
|
import mineplex.core.hologram.HologramManager;
|
||||||
import mineplex.core.stats.StatsManager;
|
import mineplex.core.stats.StatsManager;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.serverdata.Region;
|
import mineplex.serverdata.Region;
|
||||||
import mineplex.serverdata.redis.counter.Counter;
|
|
||||||
import mineplex.serverdata.servers.ConnectionData;
|
import mineplex.serverdata.servers.ConnectionData;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
@ -22,12 +18,9 @@ import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
|
||||||
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Shaun Bennett
|
* @author Shaun Bennett
|
||||||
*/
|
*/
|
||||||
|
@ -55,7 +48,7 @@ public class FountainManager extends MiniPlugin
|
||||||
int goal = 70000000;//!new File("eu.dat").exists() ? 200000000 : 20000000;
|
int goal = 70000000;//!new File("eu.dat").exists() ? 200000000 : 20000000;
|
||||||
_gemFountain = new Fountain(new ConnectionData("10.3.203.80", 6379, ConnectionData.ConnectionType.MASTER, "USRedis"),
|
_gemFountain = new Fountain(new ConnectionData("10.3.203.80", 6379, ConnectionData.ConnectionType.MASTER, "USRedis"),
|
||||||
new ConnectionData("10.3.203.80", 6377, ConnectionData.ConnectionType.SLAVE, "USRedis"), Region.ALL,
|
new ConnectionData("10.3.203.80", 6377, ConnectionData.ConnectionType.SLAVE, "USRedis"), Region.ALL,
|
||||||
new Location(world, -32.5, 72, -23.5), new Location(world, -43.5, 67, -38.5),
|
new Location(world, -25.5, 73, 19.5), new Location(world, -35.5, 69, 1.5),
|
||||||
C.cGreen + "Gem Fountain", "GemFountain_01", goal, this, clientManager, donationManager, _hologramManager, _statsManager);
|
C.cGreen + "Gem Fountain", "GemFountain_01", goal, this, clientManager, donationManager, _hologramManager, _statsManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.common.util.UtilText;
|
import mineplex.core.common.util.UtilText;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.incognito.IncognitoManager;
|
import mineplex.core.incognito.IncognitoManager;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
|
@ -210,7 +211,7 @@ public class Chat extends MiniPlugin
|
||||||
{
|
{
|
||||||
for (Iterator<Player> playerIterator = event.getRecipients().iterator(); playerIterator.hasNext();)
|
for (Iterator<Player> playerIterator = event.getRecipients().iterator(); playerIterator.hasNext();)
|
||||||
{
|
{
|
||||||
if (!_preferences.Get(playerIterator.next()).ShowChat)
|
if (!_preferences.get(playerIterator.next()).isActive(Preference.SHOW_CHAT))
|
||||||
playerIterator.remove();
|
playerIterator.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
package mineplex.core.friend;
|
package mineplex.core.friend;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mineplex.core.MiniDbClientPlugin;
|
import mineplex.core.MiniDbClientPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
|
@ -25,10 +17,10 @@ import mineplex.core.friend.data.FriendData;
|
||||||
import mineplex.core.friend.data.FriendRepository;
|
import mineplex.core.friend.data.FriendRepository;
|
||||||
import mineplex.core.friend.data.FriendStatus;
|
import mineplex.core.friend.data.FriendStatus;
|
||||||
import mineplex.core.portal.Portal;
|
import mineplex.core.portal.Portal;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
|
||||||
import mineplex.serverdata.data.PlayerStatus;
|
import mineplex.serverdata.data.PlayerStatus;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
@ -36,6 +28,14 @@ import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class FriendManager extends MiniDbClientPlugin<FriendData>
|
public class FriendManager extends MiniDbClientPlugin<FriendData>
|
||||||
{
|
{
|
||||||
private static FriendSorter _friendSorter = new FriendSorter();
|
private static FriendSorter _friendSorter = new FriendSorter();
|
||||||
|
@ -271,7 +271,7 @@ public class FriendManager extends MiniDbClientPlugin<FriendData>
|
||||||
if (friend.Status == FriendStatusType.Blocked || friend.Status == FriendStatusType.Denied)
|
if (friend.Status == FriendStatusType.Blocked || friend.Status == FriendStatusType.Denied)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!_preferenceManager.Get(caller).PendingFriendRequests && friend.Status == FriendStatusType.Pending)
|
if (!_preferenceManager.get(caller).isActive(Preference.PENDING_FRIEND_REQUESTS) && friend.Status == FriendStatusType.Pending)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
gotAFriend = true;
|
gotAFriend = true;
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package mineplex.core.friend.command;
|
package mineplex.core.friend.command;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.Callback;
|
|
||||||
import mineplex.core.friend.FriendManager;
|
import mineplex.core.friend.FriendManager;
|
||||||
import mineplex.core.friend.ui.FriendsGUI;
|
import mineplex.core.friend.ui.FriendsGUI;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class AddFriend extends CommandBase<FriendManager>
|
public class AddFriend extends CommandBase<FriendManager>
|
||||||
{
|
{
|
||||||
|
@ -20,7 +19,7 @@ public class AddFriend extends CommandBase<FriendManager>
|
||||||
{
|
{
|
||||||
if (args == null || args.length < 1)
|
if (args == null || args.length < 1)
|
||||||
{
|
{
|
||||||
if (Plugin.getPreferenceManager().Get(caller).friendDisplayInventoryUI)
|
if (Plugin.getPreferenceManager().get(caller).isActive(Preference.FRIENDS_DISPLAY_INVENTORY_UI))
|
||||||
{
|
{
|
||||||
new FriendsGUI(Plugin, caller);
|
new FriendsGUI(Plugin, caller);
|
||||||
}
|
}
|
||||||
|
@ -31,14 +30,11 @@ public class AddFriend extends CommandBase<FriendManager>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_commandCenter.GetClientManager().checkPlayerName(caller, args[0], new Callback<String>()
|
_commandCenter.GetClientManager().checkPlayerName(caller, args[0], result ->
|
||||||
{
|
{
|
||||||
public void run(String result)
|
if (result != null)
|
||||||
{
|
{
|
||||||
if (result != null)
|
Plugin.addFriend(caller, result);
|
||||||
{
|
|
||||||
Plugin.addFriend(caller, result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package mineplex.core.friend.command;
|
package mineplex.core.friend.command;
|
||||||
|
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -19,15 +20,15 @@ public class FriendsDisplay extends CommandBase<FriendManager>
|
||||||
@Override
|
@Override
|
||||||
public void Execute(Player caller, final String[] args)
|
public void Execute(Player caller, final String[] args)
|
||||||
{
|
{
|
||||||
UserPreferences preferences = Plugin.getPreferenceManager().Get(caller);
|
UserPreferences preferences = Plugin.getPreferenceManager().get(caller);
|
||||||
|
|
||||||
preferences.friendDisplayInventoryUI = !preferences.friendDisplayInventoryUI;
|
preferences.toggle(Preference.FRIENDS_DISPLAY_INVENTORY_UI);
|
||||||
|
|
||||||
Plugin.getPreferenceManager().savePreferences(caller);
|
Plugin.getPreferenceManager().save(preferences);
|
||||||
|
|
||||||
caller.playSound(caller.getLocation(), Sound.NOTE_PLING, 1, 1.6f);
|
caller.playSound(caller.getLocation(), Sound.NOTE_PLING, 1, 1.6f);
|
||||||
|
|
||||||
if (preferences.friendDisplayInventoryUI)
|
if (preferences.isActive(Preference.FRIENDS_DISPLAY_INVENTORY_UI))
|
||||||
{
|
{
|
||||||
Plugin.runAsync(() -> new FriendsGUI(Plugin, caller));
|
Plugin.runAsync(() -> new FriendsGUI(Plugin, caller));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,5 @@
|
||||||
package mineplex.core.gadget.gadgets.item;
|
package mineplex.core.gadget.gadgets.item;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Bat;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.LineFormat;
|
import mineplex.core.common.util.LineFormat;
|
||||||
|
@ -18,18 +7,29 @@ import mineplex.core.common.util.UtilAction;
|
||||||
import mineplex.core.common.util.UtilAlg;
|
import mineplex.core.common.util.UtilAlg;
|
||||||
import mineplex.core.common.util.UtilEnt;
|
import mineplex.core.common.util.UtilEnt;
|
||||||
import mineplex.core.common.util.UtilParticle;
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.common.util.UtilText;
|
import mineplex.core.common.util.UtilText;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
|
||||||
import mineplex.core.common.util.UtilParticle.ViewDist;
|
|
||||||
import mineplex.core.gadget.GadgetManager;
|
import mineplex.core.gadget.GadgetManager;
|
||||||
import mineplex.core.gadget.gadgets.Ammo;
|
import mineplex.core.gadget.gadgets.Ammo;
|
||||||
import mineplex.core.gadget.types.ItemGadget;
|
import mineplex.core.gadget.types.ItemGadget;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Bat;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class ItemBatGun extends ItemGadget
|
public class ItemBatGun extends ItemGadget
|
||||||
{
|
{
|
||||||
|
@ -102,7 +102,7 @@ public class ItemBatGun extends ItemGadget
|
||||||
if (other.equals(cur))
|
if (other.equals(cur))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!Manager.getPreferencesManager().Get(other).HubGames || !Manager.getPreferencesManager().Get(other).ShowPlayers)
|
if (!Manager.getPreferencesManager().get(other).isActive(Preference.HUB_GAMES) || !Manager.getPreferencesManager().get(other).isActive(Preference.SHOW_PLAYERS))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!Recharge.Instance.usable(other, "Hit by Bat"))
|
if (!Recharge.Instance.usable(other, "Hit by Bat"))
|
||||||
|
|
|
@ -5,6 +5,7 @@ import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.incognito.IncognitoManager;
|
import mineplex.core.incognito.IncognitoManager;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class IncognitoToggleCommand extends CommandBase<IncognitoManager>
|
public class IncognitoToggleCommand extends CommandBase<IncognitoManager>
|
||||||
|
@ -18,7 +19,7 @@ public class IncognitoToggleCommand extends CommandBase<IncognitoManager>
|
||||||
@Override
|
@Override
|
||||||
public void Execute(Player caller, String[] args)
|
public void Execute(Player caller, String[] args)
|
||||||
{
|
{
|
||||||
if (Plugin.getPreferences().Get(caller).Invisibility && !Plugin.Get(caller).Status)
|
if (Plugin.getPreferences().get(caller).isActive(Preference.INVISIBILITY) && !Plugin.Get(caller).Status)
|
||||||
{
|
{
|
||||||
UtilPlayer.message(caller, F.main("Incognito", "You are not allowed to toggle incognito on while Hub Invisibility is enabled."));
|
UtilPlayer.message(caller, F.main("Incognito", "You are not allowed to toggle incognito on while Hub Invisibility is enabled."));
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
package mineplex.core.interactions;
|
||||||
|
|
||||||
|
import mineplex.core.MiniPlugin;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event.Result;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
|
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages interactions with Armor stands, paintings, and in the main hub, taking items out of chests.
|
||||||
|
*/
|
||||||
|
public class NewInteractionsManager extends MiniPlugin
|
||||||
|
{
|
||||||
|
|
||||||
|
public NewInteractionsManager()
|
||||||
|
{
|
||||||
|
super("Interactions Manager");
|
||||||
|
registerEvents(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInteract(PlayerArmorStandManipulateEvent event)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onClickBrewingStand(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if(event.getClickedBlock() != null && event.getClickedBlock().getType() == Material.BREWING_STAND)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
event.setUseInteractedBlock(Result.DENY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
public void onChestInteract(InventoryClickEvent event)
|
||||||
|
{
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
Inventory inventory = event.getClickedInventory();
|
||||||
|
|
||||||
|
if(inventory == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inventory.getType() != InventoryType.CHEST)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inventory.getSize() != 27 && inventory.getSize() != 54)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inventory.getTitle() != null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
event.setResult(Result.DENY);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
package mineplex.core.menu;
|
||||||
|
|
||||||
|
import mineplex.core.MiniPlugin;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An abstract class for managing buttons inside of menus
|
||||||
|
*/
|
||||||
|
public abstract class Button<T extends MiniPlugin>
|
||||||
|
{
|
||||||
|
|
||||||
|
private ItemStack _item;
|
||||||
|
private T _plugin;
|
||||||
|
|
||||||
|
public Button(ItemStack item, T plugin)
|
||||||
|
{
|
||||||
|
_item = item;
|
||||||
|
_plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Button(ItemStack itemStack)
|
||||||
|
{
|
||||||
|
_item = itemStack;
|
||||||
|
_plugin = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method called when a players clicks the slot
|
||||||
|
*
|
||||||
|
* @param player The player who clicked
|
||||||
|
* @param clickType Tge type of click
|
||||||
|
*/
|
||||||
|
public abstract void onClick(Player player, ClickType clickType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when clicking on a specific item is needed, rather than just the slot
|
||||||
|
* Empty by default
|
||||||
|
*
|
||||||
|
* @param player The player who clicked
|
||||||
|
* @param clickType Tge type of click
|
||||||
|
* @param item The ItemStack clicked
|
||||||
|
*/
|
||||||
|
public void onClick(Player player, ClickType clickType, ItemStack item)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean useItemClick()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getItemStack()
|
||||||
|
{
|
||||||
|
return _item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemStack(ItemStack item)
|
||||||
|
{
|
||||||
|
_item = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getPlugin()
|
||||||
|
{
|
||||||
|
return _plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,7 +1,5 @@
|
||||||
package mineplex.core.party.ui.button;
|
package mineplex.core.menu;
|
||||||
|
|
||||||
import mineplex.core.party.PartyManager;
|
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
@ -13,9 +11,9 @@ import org.bukkit.inventory.ItemStack;
|
||||||
public class IconButton extends Button
|
public class IconButton extends Button
|
||||||
{
|
{
|
||||||
|
|
||||||
public IconButton(ItemStack item, PartyManager plugin)
|
public IconButton(ItemStack item)
|
||||||
{
|
{
|
||||||
super(item, plugin);
|
super(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
|
@ -1,10 +1,7 @@
|
||||||
package mineplex.core.party.ui;
|
package mineplex.core.menu;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.party.PartyManager;
|
|
||||||
import mineplex.core.party.ui.button.IconButton;
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -20,26 +17,20 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* A class to manage dynamic creation of GUI's
|
* A class to manage dynamic creation of GUI's
|
||||||
*/
|
*/
|
||||||
public abstract class Menu
|
public abstract class Menu<T extends MiniPlugin>
|
||||||
{
|
{
|
||||||
|
|
||||||
protected static final Button PANE = new IconButton(new ItemBuilder(Material.STAINED_GLASS_PANE)
|
private final ItemStack PANE = new ItemBuilder(Material.STAINED_GLASS_PANE).setTitle(" ").setData(DyeColor.LIGHT_BLUE.getWoolData()).build();
|
||||||
.setTitle(" ")
|
|
||||||
.setData(DyeColor.LIGHT_BLUE.getWoolData())
|
|
||||||
.build(), null);
|
|
||||||
|
|
||||||
protected static final Button PURCHASE_MORE_SLOTS = new IconButton(new ItemBuilder(Material.REDSTONE_BLOCK)
|
|
||||||
.setTitle(C.cRed + C.Bold + "Locked!")
|
|
||||||
.setLore(" ", C.cGray + "Purchase a rank @ mineplex.com/shop", C.cGray + "Purchasing a rank increases your", C.cGray + "party size to allow 10 people!")
|
|
||||||
.build(), null);
|
|
||||||
|
|
||||||
protected static final Button[] EMPTY = new Button[54];
|
protected static final Button[] EMPTY = new Button[54];
|
||||||
protected static Map<UUID, Menu> MENUS = new HashMap<>();
|
protected static final Map<UUID, Menu> MENUS = new HashMap<>();
|
||||||
private String _name;
|
private final String _name;
|
||||||
|
private final T _plugin;
|
||||||
|
private boolean _useClose = false;
|
||||||
private Button[] _buttons;
|
private Button[] _buttons;
|
||||||
protected PartyManager _plugin;
|
private Player _player;
|
||||||
|
|
||||||
public Menu(String name, PartyManager plugin)
|
public Menu(String name, T plugin)
|
||||||
{
|
{
|
||||||
_name = name;
|
_name = name;
|
||||||
_buttons = EMPTY;
|
_buttons = EMPTY;
|
||||||
|
@ -51,50 +42,14 @@ public abstract class Menu
|
||||||
return MENUS.get(name);
|
return MENUS.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public T getPlugin()
|
||||||
* Create an icon (no click action)
|
|
||||||
*
|
|
||||||
* @param item The itemstack ti display
|
|
||||||
* @return The created button
|
|
||||||
*/
|
|
||||||
protected Button create(ItemStack item)
|
|
||||||
{
|
{
|
||||||
return new IconButton(item, _plugin);
|
return _plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return ChatColor.translateAlternateColorCodes('&', _name);
|
return _name;
|
||||||
}
|
|
||||||
|
|
||||||
public Button[] addPanes(Button[] buttons)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
if (buttons[i] == null)
|
|
||||||
{
|
|
||||||
buttons[i] = PANE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(buttons.length == 9)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (buttons[i + buttons.length - 9] == null)
|
|
||||||
{
|
|
||||||
buttons[i + buttons.length - 9] = PANE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == 0 || i == 8)
|
|
||||||
{
|
|
||||||
for (int a = 9; a < buttons.length; a += 9)
|
|
||||||
{
|
|
||||||
buttons[i + a] = PANE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return buttons;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -105,6 +60,7 @@ public abstract class Menu
|
||||||
*/
|
*/
|
||||||
public void open(Player player)
|
public void open(Player player)
|
||||||
{
|
{
|
||||||
|
_player = player;
|
||||||
setButtons(setUp(player));
|
setButtons(setUp(player));
|
||||||
|
|
||||||
if (MENUS.get(player.getUniqueId()) != null)
|
if (MENUS.get(player.getUniqueId()) != null)
|
||||||
|
@ -115,7 +71,7 @@ public abstract class Menu
|
||||||
MENUS.put(player.getUniqueId(), this);
|
MENUS.put(player.getUniqueId(), this);
|
||||||
|
|
||||||
int size = (_buttons.length + 8) / 9 * 9;
|
int size = (_buttons.length + 8) / 9 * 9;
|
||||||
Inventory inventory = Bukkit.createInventory(player, size, getName());
|
Inventory inventory = Bukkit.createInventory(player, size, _name);
|
||||||
|
|
||||||
for (int i = 0; i < _buttons.length; i++)
|
for (int i = 0; i < _buttons.length; i++)
|
||||||
{
|
{
|
||||||
|
@ -173,9 +129,8 @@ public abstract class Menu
|
||||||
*
|
*
|
||||||
* @param slot The slot to set the new button
|
* @param slot The slot to set the new button
|
||||||
* @param button The reference to the button
|
* @param button The reference to the button
|
||||||
* @param player The player whose GUI we'll be updating
|
|
||||||
*/
|
*/
|
||||||
public void setButton(int slot, Button button, Player player)
|
public void setButton(int slot, Button button)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -184,24 +139,22 @@ public abstract class Menu
|
||||||
{
|
{
|
||||||
ignored.printStackTrace();
|
ignored.printStackTrace();
|
||||||
}
|
}
|
||||||
update(player);
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Refresh the players view, allows to change what the player sees, without opening and closing the GUI
|
* Refresh the players view, allows to change what the player sees, without opening and closing the GUI
|
||||||
*
|
|
||||||
* @param player The player whose view you wish to update
|
|
||||||
*/
|
*/
|
||||||
public void update(Player player)
|
public void update()
|
||||||
{
|
{
|
||||||
InventoryView view = player.getOpenInventory();
|
InventoryView view = _player.getOpenInventory();
|
||||||
|
|
||||||
if (view == null)
|
if (view == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view.getTitle().equalsIgnoreCase(getName()))
|
if (!view.getTitle().equalsIgnoreCase(_name))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -222,25 +175,23 @@ public abstract class Menu
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset this players current menu's buttons and refresh the page
|
* Reset this players current menu's buttons and refresh the page
|
||||||
*
|
|
||||||
* @param player The player whose view you wish to update
|
|
||||||
*/
|
*/
|
||||||
public void resetAndUpdate(Player player)
|
public void resetAndUpdate()
|
||||||
{
|
{
|
||||||
InventoryView view = player.getOpenInventory();
|
InventoryView view = _player.getOpenInventory();
|
||||||
|
|
||||||
if (view == null)
|
if (view == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view.getTitle().equalsIgnoreCase(getName()))
|
if (!view.getTitle().equalsIgnoreCase(_name))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Inventory inventory = view.getTopInventory();
|
Inventory inventory = view.getTopInventory();
|
||||||
Button[] buttons = setUp(player);
|
Button[] buttons = setUp(_player);
|
||||||
for (int i = 0; i < buttons.length; i++)
|
for (int i = 0; i < buttons.length; i++)
|
||||||
{
|
{
|
||||||
if (buttons[i] == null)
|
if (buttons[i] == null)
|
||||||
|
@ -254,19 +205,56 @@ public abstract class Menu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Button[] pane(Button[] buttons)
|
||||||
public void setTitle(String title)
|
|
||||||
{
|
{
|
||||||
_name = title;
|
for (int i = 0; i < 9; i++)
|
||||||
|
{
|
||||||
|
if (buttons[i] == null)
|
||||||
|
{
|
||||||
|
buttons[i] = new IconButton(PANE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buttons[i + buttons.length - 9] == null)
|
||||||
|
{
|
||||||
|
buttons[i + buttons.length - 9] = new IconButton(PANE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == 0 || i == 8)
|
||||||
|
{
|
||||||
|
for (int a = 0; a < buttons.length; a += 9)
|
||||||
|
{
|
||||||
|
if (buttons[i + a] == null)
|
||||||
|
{
|
||||||
|
buttons[i + a] = new IconButton(PANE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClose(Player player)
|
public void onClose(Player player)
|
||||||
{
|
{
|
||||||
MENUS.remove(player.getUniqueId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Menu remove(UUID uniqueId)
|
public static Menu remove(UUID uniqueId)
|
||||||
{
|
{
|
||||||
return MENUS.remove(uniqueId);
|
return MENUS.remove(uniqueId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isUseClose()
|
||||||
|
{
|
||||||
|
return _useClose;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUseClose(boolean useClose)
|
||||||
|
{
|
||||||
|
_useClose = useClose;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,12 +1,11 @@
|
||||||
package mineplex.core.party.ui;
|
package mineplex.core.menu;
|
||||||
|
|
||||||
import mineplex.core.party.ui.button.PartyMemberIcon;
|
|
||||||
import mineplex.core.party.ui.menus.PartyOwnerMenu;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listener for the Menu system
|
* Listener for the Menu system
|
||||||
|
@ -41,17 +40,37 @@ public class MenuListener implements Listener
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(button instanceof PartyMemberIcon)
|
if(button.useItemClick())
|
||||||
{
|
{
|
||||||
if(!(gui instanceof PartyOwnerMenu))
|
button.onClick(player, event.getClick(), event.getCurrentItem());
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
((PartyMemberIcon) button).onClick(player, event.getCurrentItem());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.onClick(player, event.getClick());
|
button.onClick(player, event.getClick());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onClose(InventoryCloseEvent event)
|
||||||
|
{
|
||||||
|
String name = event.getInventory().getName();
|
||||||
|
Player player = (Player) event.getPlayer();
|
||||||
|
Menu gui = Menu.get(player.getUniqueId());
|
||||||
|
|
||||||
|
if (gui == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gui.getName().equalsIgnoreCase(name))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(gui.isUseClose())
|
||||||
|
{
|
||||||
|
gui.onClose(player);
|
||||||
|
gui.setUseClose(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package mineplex.core.menu;
|
||||||
|
|
||||||
|
import mineplex.core.MiniPlugin;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MenuManager extends MiniPlugin
|
||||||
|
{
|
||||||
|
|
||||||
|
public MenuManager(JavaPlugin plugin)
|
||||||
|
{
|
||||||
|
super("Menu Manager", plugin);
|
||||||
|
getPluginManager().registerEvents(new MenuListener(), plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -25,6 +25,7 @@ import mineplex.core.message.commands.ResendAdminCommand;
|
||||||
import mineplex.core.message.commands.ResendCommand;
|
import mineplex.core.message.commands.ResendCommand;
|
||||||
import mineplex.core.message.redis.RedisMessage;
|
import mineplex.core.message.redis.RedisMessage;
|
||||||
import mineplex.core.message.redis.RedisMessageCallback;
|
import mineplex.core.message.redis.RedisMessageCallback;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.punish.Punish;
|
import mineplex.core.punish.Punish;
|
||||||
import mineplex.core.punish.PunishClient;
|
import mineplex.core.punish.PunishClient;
|
||||||
|
@ -145,7 +146,7 @@ public class MessageManager extends MiniClientPlugin<ClientMessage>
|
||||||
public String canReceiverMessageThem(String sender, Player target)
|
public String canReceiverMessageThem(String sender, Player target)
|
||||||
{
|
{
|
||||||
// If the receiver has turned off private messaging and the sender isn't a mod
|
// If the receiver has turned off private messaging and the sender isn't a mod
|
||||||
if (!_preferences.Get(target).PrivateMessaging)
|
if (!_preferences.get(target).isActive(Preference.PRIVATE_MESSAGING))
|
||||||
{
|
{
|
||||||
return C.cPurple + target.getName() + " has private messaging disabled.";
|
return C.cPurple + target.getName() + " has private messaging disabled.";
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,5 @@
|
||||||
package mineplex.core.notifier;
|
package mineplex.core.notifier;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
|
@ -14,8 +8,10 @@ import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public class NotificationManager extends MiniPlugin
|
public class NotificationManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
@ -60,7 +56,7 @@ public class NotificationManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (!_preferencesManager.Get(player).DisableAds)
|
if (_preferencesManager.getClientManager().Get(player).GetRank() == Rank.ALL)
|
||||||
{
|
{
|
||||||
player.sendMessage(C.cWhite + " ");
|
player.sendMessage(C.cWhite + " ");
|
||||||
player.sendMessage(C.cRedB + " MASSIVE WINTER SALE");
|
player.sendMessage(C.cRedB + " MASSIVE WINTER SALE");
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package mineplex.core.party;
|
package mineplex.core.party;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
|
@ -44,10 +45,25 @@ public enum Lang
|
||||||
PARTY_FULL("Error: Your party is full!"),
|
PARTY_FULL("Error: Your party is full!"),
|
||||||
SERVER_CLOSED("Error: Your server is closed and you cannot invite players to join it right now!"),
|
SERVER_CLOSED("Error: Your server is closed and you cannot invite players to join it right now!"),
|
||||||
SERVER_FULL("Error: Your server is full and you cannot invite more players to join it right now!"),
|
SERVER_FULL("Error: Your server is full and you cannot invite more players to join it right now!"),
|
||||||
PLAYER_IN_DIFFERENT_PARTY("Error: {0} is in a different party.")
|
PLAYER_IN_DIFFERENT_PARTY("Error: {0} is in a different party."),
|
||||||
|
|
||||||
|
PARTNER_ALREADY_INVITED("Error: You have already invited {0} to be your partner for {1}."),
|
||||||
|
PARTNER_NO_GAME("Error: {0} is not a valid game name."),
|
||||||
|
PARTNER_NO_PLAYER("Error: You didn't specify a player to partner with."),
|
||||||
|
PARTNER_NOT_ONLINE("Error: {0} is not on your server!"),
|
||||||
|
PARTNER_PLAYER_NOT_REQUESTED("Error: {0} hasn't made a partner request with you yet!"),
|
||||||
|
PARTNER_USAGE("Usage: /teampref accept/deny <player>."),
|
||||||
|
PARTNER_HOVER_TEXT_ACCEPT("Click to be {0}''s partner for {1}."),
|
||||||
|
PARTNER_HOVER_TEXT_DENY("Click to decline being {0}''s partner for {1}."),
|
||||||
|
PARTNER_REQUEST_SENT("Partner request sent to {0} for {1}."),
|
||||||
|
PARTNER_REQUEST_RECEIVED("Partner request from {0} for {1}."),
|
||||||
|
PARTNER_REQUEST_DENIED_SENDER("{0} has declined your partner request for {1}."),
|
||||||
|
PARTNER_REQUEST_DENIED_PLAYER("You have denied {0}''s partner request for {1}."),
|
||||||
|
PARTNER_REQUEST_ACCEPT_SENDER("{0} has accepted your partner request for {1}."),
|
||||||
|
PARTNER_REQUEST_ACCEPT_PLAYER("You have accepted {0}''s partner request for {1}."),
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
private String _message;
|
private String _message;
|
||||||
|
|
||||||
Lang(String message)
|
Lang(String message)
|
||||||
|
@ -55,6 +71,16 @@ public enum Lang
|
||||||
_message = message;
|
_message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String toString(String... args)
|
||||||
|
{
|
||||||
|
return getFormatted(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendHeader(Player player, String header, String... args)
|
||||||
|
{
|
||||||
|
player.sendMessage(F.main(header, getFormatted(args)));
|
||||||
|
}
|
||||||
|
|
||||||
public void send(Player player, String... args)
|
public void send(Player player, String... args)
|
||||||
{
|
{
|
||||||
player.sendMessage(C.mHead + "Party> " + getFormatted(args));
|
player.sendMessage(C.mHead + "Party> " + getFormatted(args));
|
||||||
|
@ -65,16 +91,16 @@ public enum Lang
|
||||||
party.sendMessage(C.mHead + "Party> " + getFormatted(args));
|
party.sendMessage(C.mHead + "Party> " + getFormatted(args));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getFormatted(String[] args)
|
private String getFormatted(String... args)
|
||||||
{
|
{
|
||||||
String color = C.mBody;
|
String color = C.mBody;
|
||||||
|
|
||||||
if(args.length == 0)
|
if (args == null || args.length == 0)
|
||||||
{
|
{
|
||||||
return color + _message;
|
return color + _message;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_message.startsWith("Error:"))
|
if (_message.startsWith("Error:"))
|
||||||
{
|
{
|
||||||
color = C.cRed;
|
color = C.cRed;
|
||||||
}
|
}
|
||||||
|
@ -83,7 +109,7 @@ public enum Lang
|
||||||
|
|
||||||
String[] coloredArgs = new String[args.length];
|
String[] coloredArgs = new String[args.length];
|
||||||
|
|
||||||
for(int i = 0; i < args.length; i++)
|
for (int i = 0; i < args.length; i++)
|
||||||
{
|
{
|
||||||
coloredArgs[i] = C.cYellow + args[i] + color;
|
coloredArgs[i] = C.cYellow + args[i] + color;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,10 +35,20 @@ public class Party
|
||||||
*/
|
*/
|
||||||
private static final int PARTY_MAX_SIZE = 16;
|
private static final int PARTY_MAX_SIZE = 16;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Partners that have already been placed
|
||||||
|
*/
|
||||||
|
private transient final List<UUID> _teamed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The current leader of this party
|
* The current leader of this party
|
||||||
*/
|
*/
|
||||||
private UUID _owner;
|
private String _owner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The names of all current party members
|
||||||
|
*/
|
||||||
|
private List<String> _members;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The UUIDS of all current party members
|
* The UUIDS of all current party members
|
||||||
|
@ -55,12 +65,17 @@ public class Party
|
||||||
*/
|
*/
|
||||||
private int _size;
|
private int _size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Team preferences
|
||||||
|
*/
|
||||||
|
private Map<UUID, Map<String, String>> _preferences;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Empty constructor for GSON
|
* Empty constructor for GSON
|
||||||
*/
|
*/
|
||||||
public Party()
|
public Party()
|
||||||
{
|
{
|
||||||
|
_teamed = Lists.newArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,16 +83,31 @@ public class Party
|
||||||
*
|
*
|
||||||
* @param owner The owner / leader of the party.
|
* @param owner The owner / leader of the party.
|
||||||
*/
|
*/
|
||||||
public Party(UUID owner)
|
public Party(String owner)
|
||||||
{
|
{
|
||||||
_owner = owner;
|
_owner = owner;
|
||||||
|
_members = Lists.newArrayList();
|
||||||
_invites = Maps.newHashMap();
|
_invites = Maps.newHashMap();
|
||||||
|
_members.add(owner);
|
||||||
|
_teamed = Lists.newArrayList();
|
||||||
_membersByUUID = Lists.newArrayList();
|
_membersByUUID = Lists.newArrayList();
|
||||||
|
_preferences = Maps.newHashMap();
|
||||||
|
_membersByUUID.add(Bukkit.getPlayerExact(owner).getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getOwner()
|
public String getOwner()
|
||||||
{
|
{
|
||||||
return Bukkit.getPlayer(_owner).getName();
|
return _owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current members by their IGN
|
||||||
|
*
|
||||||
|
* @return The list of named party members
|
||||||
|
*/
|
||||||
|
public List<String> getMembers()
|
||||||
|
{
|
||||||
|
return _members;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Long> getInvites()
|
public Map<String, Long> getInvites()
|
||||||
|
@ -94,12 +124,39 @@ public class Party
|
||||||
*/
|
*/
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return getOwner();
|
return _owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getMembers()
|
/**
|
||||||
|
* Gets the players preferred teammate for a game
|
||||||
|
*
|
||||||
|
* @param player The player's UUID
|
||||||
|
* @return His team preference
|
||||||
|
*/
|
||||||
|
public String getPartner(UUID player, String game)
|
||||||
{
|
{
|
||||||
return this._membersByUUID;
|
Map<String, String> prefs = _preferences.get(player);
|
||||||
|
if (prefs == null)
|
||||||
|
{
|
||||||
|
prefs = Maps.newHashMap();
|
||||||
|
_preferences.put(player, prefs);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return prefs.get(game);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a player's partner preference
|
||||||
|
*
|
||||||
|
* @param player The player
|
||||||
|
* @param game The name of the game
|
||||||
|
* @param partner The name of his partner
|
||||||
|
*/
|
||||||
|
public void setPartner(Player player, String game, String partner)
|
||||||
|
{
|
||||||
|
Map<String, String> prefs = _preferences.getOrDefault(player.getUniqueId(), Maps.newHashMap());
|
||||||
|
prefs.put(game, partner);
|
||||||
|
_preferences.put(player.getUniqueId(), prefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -109,7 +166,7 @@ public class Party
|
||||||
*/
|
*/
|
||||||
public void sendMessage(String message)
|
public void sendMessage(String message)
|
||||||
{
|
{
|
||||||
getMembers().stream().map(Bukkit::getPlayer).forEach(player -> player.sendMessage(message));
|
getMembersByUUID().stream().map(Bukkit::getPlayer).forEach(player -> player.sendMessage(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSize()
|
public int getSize()
|
||||||
|
@ -133,14 +190,12 @@ public class Party
|
||||||
*/
|
*/
|
||||||
public void onPlayerAdd(String player)
|
public void onPlayerAdd(String player)
|
||||||
{
|
{
|
||||||
Player pl = Bukkit.getPlayerExact(player);
|
|
||||||
UUID uuid = pl.getUniqueId();
|
|
||||||
_invites.remove(player);
|
_invites.remove(player);
|
||||||
if(_membersByUUID.contains(uuid))
|
if(_members.contains(player))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_membersByUUID.add(uuid);
|
_members.add(player);
|
||||||
Lang.ADD_MEMBER.send(this, player);
|
Lang.ADD_MEMBER.send(this, player);
|
||||||
getMembers().forEach(s ->
|
getMembers().forEach(s ->
|
||||||
{
|
{
|
||||||
|
@ -152,42 +207,46 @@ public class Party
|
||||||
/**
|
/**
|
||||||
* Called when a member of the party is removed
|
* Called when a member of the party is removed
|
||||||
*
|
*
|
||||||
* @param uuid The uuid of the player
|
* @param player The name of the player
|
||||||
* @param reason The reason for his removal.
|
* @param reason The reason for his removal.
|
||||||
*/
|
*/
|
||||||
public void onPlayerRemove(UUID uuid, PartyRemoveReason reason)
|
public void onPlayerRemove(String player, PartyRemoveReason reason)
|
||||||
{
|
{
|
||||||
Player bukkitPlayer = Bukkit.getPlayer(uuid);
|
|
||||||
if(reason == PartyRemoveReason.DISBANDED)
|
if(reason == PartyRemoveReason.DISBANDED)
|
||||||
{
|
{
|
||||||
|
Player bukkitPlayer = Bukkit.getPlayerExact(player);
|
||||||
Lang.DISBANDED.send(bukkitPlayer);
|
Lang.DISBANDED.send(bukkitPlayer);
|
||||||
bukkitPlayer.closeInventory();
|
bukkitPlayer.closeInventory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(_membersByUUID.size() <= 0)
|
|
||||||
|
if(_members.size() <= 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(reason == PartyRemoveReason.LEFT)
|
if(reason == PartyRemoveReason.LEFT)
|
||||||
{
|
{
|
||||||
if(uuid.equals(_owner) && _membersByUUID.size() > 1)
|
if(player.equalsIgnoreCase(_owner) && _members.size() > 1)
|
||||||
{
|
{
|
||||||
_owner = _membersByUUID.get(0);
|
_owner = _members.get(0);
|
||||||
Lang.TRANSFER_OWNER.send(this, bukkitPlayer.getName(), getOwner());
|
Lang.TRANSFER_OWNER.send(this, player, _owner);
|
||||||
PartyTransferOwnerEvent event = new PartyTransferOwnerEvent(this, getOwner(), bukkitPlayer.getName(), TransferReason.LEFT);
|
PartyTransferOwnerEvent event = new PartyTransferOwnerEvent(this, _owner, player, TransferReason.LEFT);
|
||||||
UtilServer.getServer().getPluginManager().callEvent(event);
|
UtilServer.getServer().getPluginManager().callEvent(event);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Lang.REMOVE_PLAYER.send(this, bukkitPlayer.getName());
|
Lang.REMOVE_PLAYER.send(this, player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(reason == PartyRemoveReason.OTHER)
|
if(reason == PartyRemoveReason.OTHER)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(reason == PartyRemoveReason.KICKED)
|
if(reason == PartyRemoveReason.KICKED)
|
||||||
{
|
{
|
||||||
Lang.REMOVE_PLAYER_KICK.send(this, bukkitPlayer.getName());
|
Lang.REMOVE_PLAYER_KICK.send(this, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,7 +277,7 @@ public class Party
|
||||||
*/
|
*/
|
||||||
public void setOwner(String owner)
|
public void setOwner(String owner)
|
||||||
{
|
{
|
||||||
_owner = Bukkit.getPlayerExact(owner).getUniqueId();
|
_owner = owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -241,11 +300,6 @@ public class Party
|
||||||
_alreadyTeamed = alreadyTeamed;
|
_alreadyTeamed = alreadyTeamed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getOwnerId()
|
|
||||||
{
|
|
||||||
return this._owner;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check to see if this party contains a certain player name
|
* Check to see if this party contains a certain player name
|
||||||
* This is case-insensitive
|
* This is case-insensitive
|
||||||
|
@ -255,7 +309,7 @@ public class Party
|
||||||
*/
|
*/
|
||||||
public boolean contains(String name)
|
public boolean contains(String name)
|
||||||
{
|
{
|
||||||
for(UUID member : _membersByUUID)
|
for (UUID member : _membersByUUID)
|
||||||
{
|
{
|
||||||
if (Bukkit.getPlayer(member).getName().equalsIgnoreCase(name))
|
if (Bukkit.getPlayer(member).getName().equalsIgnoreCase(name))
|
||||||
{
|
{
|
||||||
|
@ -264,4 +318,17 @@ public class Party
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isAlreadyTeamed(UUID uuid)
|
||||||
|
{
|
||||||
|
return _teamed.contains(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTeamed(Player... players)
|
||||||
|
{
|
||||||
|
for (Player player : players)
|
||||||
|
{
|
||||||
|
_teamed.add(player.getUniqueId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package mineplex.core.party;
|
package mineplex.core.party;
|
||||||
|
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
import mineplex.core.party.constants.PartyRemoveReason;
|
import mineplex.core.party.constants.PartyRemoveReason;
|
||||||
import mineplex.core.party.event.PartyMemberKickGUIEvent;
|
import mineplex.core.party.event.PartyMemberKickGUIEvent;
|
||||||
import mineplex.core.party.event.PartySendToServerEvent;
|
import mineplex.core.party.event.PartySendToServerEvent;
|
||||||
import mineplex.core.party.event.PartyTransferOwnerEvent;
|
import mineplex.core.party.event.PartyTransferOwnerEvent;
|
||||||
import mineplex.core.party.ui.Menu;
|
|
||||||
import mineplex.core.portal.ServerTransferEvent;
|
import mineplex.core.portal.ServerTransferEvent;
|
||||||
import mineplex.serverdata.data.MinecraftServer;
|
import mineplex.serverdata.data.MinecraftServer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -47,11 +47,11 @@ public class PartyEventListener implements Listener
|
||||||
|
|
||||||
Player bukkitPlayer = Bukkit.getPlayerExact(partyName);
|
Player bukkitPlayer = Bukkit.getPlayerExact(partyName);
|
||||||
|
|
||||||
if (party == null && bukkitPlayer != null)
|
if (party == null)
|
||||||
{
|
{
|
||||||
party = new Party(bukkitPlayer.getUniqueId());
|
party = new Party(partyName);
|
||||||
|
|
||||||
if (_plugin.getClientManager().Get(bukkitPlayer).GetRank().has(Rank.ULTRA))
|
if (bukkitPlayer != null && _plugin.getClientManager().Get(bukkitPlayer).GetRank().has(Rank.ULTRA))
|
||||||
{
|
{
|
||||||
party.setSize();
|
party.setSize();
|
||||||
} else
|
} else
|
||||||
|
@ -109,7 +109,7 @@ public class PartyEventListener implements Listener
|
||||||
Player clicked = Bukkit.getPlayerExact(event.getPlayerClicked());
|
Player clicked = Bukkit.getPlayerExact(event.getPlayerClicked());
|
||||||
Lang.REMOVED.send(clicked);
|
Lang.REMOVED.send(clicked);
|
||||||
_plugin.getMethodManager().removeFromParty(clicked, PartyRemoveReason.KICKED);
|
_plugin.getMethodManager().removeFromParty(clicked, PartyRemoveReason.KICKED);
|
||||||
Menu.get(event.getOwner().getUniqueId()).resetAndUpdate(event.getOwner());
|
Menu.get(event.getOwner().getUniqueId()).resetAndUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
|
@ -10,17 +10,17 @@ import mineplex.core.party.manager.PartyInviteManager;
|
||||||
import mineplex.core.party.manager.PartyJoinManager;
|
import mineplex.core.party.manager.PartyJoinManager;
|
||||||
import mineplex.core.party.manager.PartyMethodManager;
|
import mineplex.core.party.manager.PartyMethodManager;
|
||||||
import mineplex.core.party.manager.PartyRedisManager;
|
import mineplex.core.party.manager.PartyRedisManager;
|
||||||
import mineplex.core.party.ui.MenuListener;
|
|
||||||
import mineplex.core.portal.Portal;
|
import mineplex.core.portal.Portal;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import mineplex.serverdata.Region;
|
||||||
import mineplex.serverdata.Utility;
|
import mineplex.serverdata.Utility;
|
||||||
import mineplex.serverdata.servers.ServerManager;
|
import mineplex.serverdata.servers.ServerManager;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -58,7 +58,9 @@ public class PartyManager extends MiniPlugin
|
||||||
/**
|
/**
|
||||||
* A map of owner (name) -> party server wide
|
* A map of owner (name) -> party server wide
|
||||||
*/
|
*/
|
||||||
private final Map<UUID, Party> _parties = Maps.newHashMap();
|
private final Map<String, Party> _parties = Maps.newHashMap();
|
||||||
|
private final Region _region;
|
||||||
|
|
||||||
|
|
||||||
public PartyManager(JavaPlugin plugin, Portal portal, CoreClientManager clientManager, PreferencesManager preferenceManager)
|
public PartyManager(JavaPlugin plugin, Portal portal, CoreClientManager clientManager, PreferencesManager preferenceManager)
|
||||||
{
|
{
|
||||||
|
@ -78,13 +80,14 @@ public class PartyManager extends MiniPlugin
|
||||||
_methodManager = new PartyMethodManager(this);
|
_methodManager = new PartyMethodManager(this);
|
||||||
|
|
||||||
addCommand(new PartyCommand(this));
|
addCommand(new PartyCommand(this));
|
||||||
getPluginManager().registerEvents(new MenuListener(), getPlugin());
|
|
||||||
new PartyEventListener(this);
|
new PartyEventListener(this);
|
||||||
|
_region = !new File("eu.dat").exists() ? Region.US : Region.EU;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Party getParty(String party)
|
public Party getParty(String party)
|
||||||
{
|
{
|
||||||
return _parties.get(Bukkit.getPlayerExact(party).getUniqueId());
|
return _parties.get(party);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Party getParty(Player player)
|
public Party getParty(Player player)
|
||||||
|
@ -94,12 +97,12 @@ public class PartyManager extends MiniPlugin
|
||||||
|
|
||||||
public void addParty(Party party)
|
public void addParty(Party party)
|
||||||
{
|
{
|
||||||
_parties.put(party.getOwnerId(), party);
|
_parties.put(party.getName(), party);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeParty(Party party)
|
public void removeParty(Party party)
|
||||||
{
|
{
|
||||||
_parties.remove(party.getOwnerId());
|
_parties.remove(party.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Portal getPortal()
|
public Portal getPortal()
|
||||||
|
@ -147,8 +150,14 @@ public class PartyManager extends MiniPlugin
|
||||||
return _players;
|
return _players;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<UUID, Party> getParties()
|
public Map<String, Party> getParties()
|
||||||
{
|
{
|
||||||
return _parties;
|
return _parties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Region getRegion()
|
||||||
|
{
|
||||||
|
return _region;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,167 @@
|
||||||
|
package mineplex.core.party.command;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import mineplex.core.command.CommandBase;
|
||||||
|
import mineplex.core.common.Rank;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.game.GameDisplay;
|
||||||
|
import mineplex.core.party.Lang;
|
||||||
|
import mineplex.core.party.Party;
|
||||||
|
import mineplex.core.party.PartyManager;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unused for now.
|
||||||
|
*/
|
||||||
|
public class TeamPreferenceCommand extends CommandBase<PartyManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final String[] ARGS = {
|
||||||
|
"teampref",
|
||||||
|
"teamprefs",
|
||||||
|
"teamp",
|
||||||
|
"tprefs",
|
||||||
|
"teampreferences"
|
||||||
|
};
|
||||||
|
|
||||||
|
private final String ACCEPT = "accept";
|
||||||
|
private final String DENY = "deny";
|
||||||
|
|
||||||
|
private final String ACCEPT_COMMAND = "/teamprefs accept ";
|
||||||
|
private final String DENY_COMMAND = "/teamprefs deny ";
|
||||||
|
|
||||||
|
private final String HEADER = "Partners";
|
||||||
|
|
||||||
|
//Player, Partner, GameName
|
||||||
|
private Map<UUID, Map<String, String>> INVITES = Maps.newHashMap();
|
||||||
|
|
||||||
|
public TeamPreferenceCommand(PartyManager plugin)
|
||||||
|
{
|
||||||
|
super(plugin, Rank.ALL, ARGS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void Execute(Player player, String[] args)
|
||||||
|
{
|
||||||
|
if (args.length < 2)
|
||||||
|
{
|
||||||
|
Lang.PARTNER_USAGE.sendHeader(player, HEADER);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String arg = args[0];
|
||||||
|
|
||||||
|
if (arg.equalsIgnoreCase(ACCEPT) || arg.equalsIgnoreCase(DENY))
|
||||||
|
{
|
||||||
|
Party party = Plugin.getParty(player);
|
||||||
|
|
||||||
|
if (party == null)
|
||||||
|
{
|
||||||
|
Lang.NO_PARTY.send(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String inviter = args[1];
|
||||||
|
boolean accept = arg.equalsIgnoreCase(ACCEPT);
|
||||||
|
Player inviterPlayer = Bukkit.getPlayerExact(inviter);
|
||||||
|
|
||||||
|
if (inviterPlayer == null)
|
||||||
|
{
|
||||||
|
Lang.PARTNER_NOT_ONLINE.sendHeader(player, HEADER, inviter);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> sent = INVITES.get(inviterPlayer.getUniqueId());
|
||||||
|
|
||||||
|
if (sent == null || sent.isEmpty())
|
||||||
|
{
|
||||||
|
Lang.PARTNER_PLAYER_NOT_REQUESTED.sendHeader(player, HEADER, inviter);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sent.get(player.getName()) == null)
|
||||||
|
{
|
||||||
|
Lang.PARTNER_PLAYER_NOT_REQUESTED.sendHeader(player, HEADER, inviter);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String gameName = sent.remove(player.getName());
|
||||||
|
|
||||||
|
if (!accept)
|
||||||
|
{
|
||||||
|
Lang.PARTNER_REQUEST_DENIED_PLAYER.send(player, inviterPlayer.getName(), gameName);
|
||||||
|
Lang.PARTNER_REQUEST_DENIED_SENDER.send(inviterPlayer, player.getName(), gameName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Lang.PARTNER_REQUEST_ACCEPT_PLAYER.send(player, inviterPlayer.getName(), gameName);
|
||||||
|
Lang.PARTNER_REQUEST_ACCEPT_SENDER.send(inviterPlayer, player.getName(), gameName);
|
||||||
|
party.setPartner(player, gameName, inviterPlayer.getName());
|
||||||
|
party.setPartner(inviterPlayer, gameName, player.getName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = Bukkit.getPlayerExact(arg);
|
||||||
|
String gameName = "";
|
||||||
|
String[] game = new String[args.length - 2];
|
||||||
|
System.arraycopy(args, 2, game, 0, game.length);
|
||||||
|
|
||||||
|
for (String s : game)
|
||||||
|
{
|
||||||
|
gameName += s + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
gameName = gameName.trim();
|
||||||
|
|
||||||
|
GameDisplay gameDisplay = GameDisplay.matchName(gameName);
|
||||||
|
|
||||||
|
if (gameDisplay == null)
|
||||||
|
{
|
||||||
|
Lang.PARTNER_NO_GAME.sendHeader(player, HEADER, gameName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gameName = gameDisplay.getName();
|
||||||
|
|
||||||
|
if (alreadyInvited(player, gameName, target.getName()))
|
||||||
|
{
|
||||||
|
Lang.PARTNER_ALREADY_INVITED.sendHeader(player, HEADER, target.getName(), gameName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendRequest(player, gameName, target);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendRequest(Player player, String game, Player partner)
|
||||||
|
{
|
||||||
|
invite(player, game, partner);
|
||||||
|
String gameName = C.cGreen + (game);
|
||||||
|
String playerName = C.cGreen + (player.getName());
|
||||||
|
String partnerName = C.cGreen + (partner.getName());
|
||||||
|
String acceptCommand = ACCEPT_COMMAND + player.getName();
|
||||||
|
String declineCommand = DENY_COMMAND + player.getName();
|
||||||
|
String acceptText = Lang.PARTNER_HOVER_TEXT_ACCEPT.toString(playerName, gameName);
|
||||||
|
String declineText = Lang.PARTNER_HOVER_TEXT_DENY.toString(playerName, gameName);
|
||||||
|
Lang.PARTNER_REQUEST_SENT.sendHeader(player, HEADER, partnerName, gameName);
|
||||||
|
Lang.PARTNER_REQUEST_RECEIVED.sendHeader(partner, HEADER, playerName, gameName);
|
||||||
|
UtilPlayer.sendAcceptOrDeny(partner, HEADER, acceptCommand, acceptText, declineCommand, declineText, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean alreadyInvited(Player player, String game, String partner)
|
||||||
|
{
|
||||||
|
Map<String, String> sent = INVITES.get(player.getUniqueId());
|
||||||
|
return !(sent == null || sent.isEmpty()) && sent.get(partner).equalsIgnoreCase(game);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void invite(Player player, String game, Player partner)
|
||||||
|
{
|
||||||
|
Map<String, String> sent = INVITES.getOrDefault(player.getUniqueId(), Maps.newHashMap());
|
||||||
|
sent.put(partner.getName(), game);
|
||||||
|
INVITES.put(player.getUniqueId(), sent);
|
||||||
|
}
|
||||||
|
}
|
|
@ -80,7 +80,7 @@ public class PartyInviteManager
|
||||||
}
|
}
|
||||||
if (newParty == null)
|
if (newParty == null)
|
||||||
{
|
{
|
||||||
newParty = new Party(possible.getUniqueId());
|
newParty = new Party(possible.getName());
|
||||||
if(_plugin.getClientManager().Get(possible).GetRank().has(Rank.ULTRA))
|
if(_plugin.getClientManager().Get(possible).GetRank().has(Rank.ULTRA))
|
||||||
{
|
{
|
||||||
newParty.setSize();
|
newParty.setSize();
|
||||||
|
|
|
@ -8,6 +8,7 @@ import mineplex.core.party.Party;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.constants.JoinResponseReason;
|
import mineplex.core.party.constants.JoinResponseReason;
|
||||||
import mineplex.core.party.redis.RedisMessageType;
|
import mineplex.core.party.redis.RedisMessageType;
|
||||||
|
import mineplex.serverdata.servers.ServerManager;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -32,6 +33,27 @@ public class PartyJoinManager
|
||||||
_transferring = Lists.newArrayList();
|
_transferring = Lists.newArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scans through the party to check if all players are some form of VIP
|
||||||
|
* If the party contains even 1 non-vip, the party cannot be sent to a full server
|
||||||
|
*
|
||||||
|
* @param party The party
|
||||||
|
* @return <code>true</code> if the party contains all VIP's <code>false</code> if it contains even 1 non-vip
|
||||||
|
*/
|
||||||
|
public boolean canJoinFullServer(Party party)
|
||||||
|
{
|
||||||
|
List<Player> players = party.getMembersByUUID().stream().map(Bukkit::getPlayer).collect(Collectors.toList());
|
||||||
|
for (Player player : players)
|
||||||
|
{
|
||||||
|
Rank rank = _plugin.getClientManager().Get(player).GetRank();
|
||||||
|
if (rank == Rank.ALL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initiates a request to join a server for a specific party
|
* Initiates a request to join a server for a specific party
|
||||||
*
|
*
|
||||||
|
@ -40,17 +62,7 @@ public class PartyJoinManager
|
||||||
*/
|
*/
|
||||||
public void requestServerJoin(String server, Party party)
|
public void requestServerJoin(String server, Party party)
|
||||||
{
|
{
|
||||||
boolean canJoinFull = true;
|
boolean canJoinFull = canJoinFullServer(party);
|
||||||
List<Player> players = party.getMembers().stream().map(Bukkit::getPlayer).collect(Collectors.toList());
|
|
||||||
for (Player player : players)
|
|
||||||
{
|
|
||||||
Rank rank = _plugin.getClientManager().Get(player).GetRank();
|
|
||||||
if (rank == Rank.ALL)
|
|
||||||
{
|
|
||||||
canJoinFull = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_plugin.getRedisManager().publish(server, RedisMessageType.PREJOIN_SERVER_REQUEST,
|
_plugin.getRedisManager().publish(server, RedisMessageType.PREJOIN_SERVER_REQUEST,
|
||||||
_plugin.getServerName(), party.getOwner(), "" + party.getMembers().size(), "" + canJoinFull);
|
_plugin.getServerName(), party.getOwner(), "" + party.getMembers().size(), "" + canJoinFull);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +87,7 @@ public class PartyJoinManager
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ServerManager.getServerRepository(_plugin.getRegion()).getServerStatus(_plugin.getServerName()).incrementPlayerCount(partySize);
|
||||||
_plugin.getRedisManager().publish(serverFrom, RedisMessageType.PREJOIN_SERVER_RESPONSE, initiator, JoinResponseReason.SUCCESS.name(), _plugin.getServerName());
|
_plugin.getRedisManager().publish(serverFrom, RedisMessageType.PREJOIN_SERVER_RESPONSE, initiator, JoinResponseReason.SUCCESS.name(), _plugin.getServerName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,12 @@ package mineplex.core.party.manager;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
import mineplex.core.party.Lang;
|
import mineplex.core.party.Lang;
|
||||||
import mineplex.core.party.Party;
|
import mineplex.core.party.Party;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.constants.PartyRemoveReason;
|
import mineplex.core.party.constants.PartyRemoveReason;
|
||||||
import mineplex.core.party.ui.Menu;
|
import mineplex.core.preferences.Preference;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -75,7 +76,7 @@ public class PartyMethodManager
|
||||||
//Same Server
|
//Same Server
|
||||||
if (possible != null)
|
if (possible != null)
|
||||||
{
|
{
|
||||||
if(!_plugin.getPreferencesManager().Get(possible).PartyRequests)
|
if(!_plugin.getPreferencesManager().get(possible).isActive(Preference.PARTY_REQUESTS))
|
||||||
{
|
{
|
||||||
caller.sendMessage(F.main("Party> ", F.name(target) + " is not accepting invites at this time."));
|
caller.sendMessage(F.main("Party> ", F.name(target) + " is not accepting invites at this time."));
|
||||||
return;
|
return;
|
||||||
|
@ -83,7 +84,7 @@ public class PartyMethodManager
|
||||||
|
|
||||||
if (party == null)
|
if (party == null)
|
||||||
{
|
{
|
||||||
if(_plugin.getParty(possible) != null)
|
if(_plugin.getParty(target) != null)
|
||||||
{
|
{
|
||||||
Lang.PLAYER_IN_DIFFERENT_PARTY.send(caller, target);
|
Lang.PLAYER_IN_DIFFERENT_PARTY.send(caller, target);
|
||||||
return;
|
return;
|
||||||
|
@ -117,7 +118,7 @@ public class PartyMethodManager
|
||||||
}
|
}
|
||||||
|
|
||||||
//Not on the same server
|
//Not on the same server
|
||||||
_plugin.getRedisManager().findAndInvite(target, caller);
|
_plugin.getRedisManager().findAndInvite(target, caller.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -265,7 +266,8 @@ public class PartyMethodManager
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
party.onPlayerRemove(uuid, PartyRemoveReason.OTHER);
|
String player = Bukkit.getPlayer(uuid).getName();
|
||||||
|
party.onPlayerRemove(player, PartyRemoveReason.OTHER);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeFromParty(UUID uuid, PartyRemoveReason reason)
|
public void removeFromParty(UUID uuid, PartyRemoveReason reason)
|
||||||
|
@ -293,7 +295,7 @@ public class PartyMethodManager
|
||||||
}
|
}
|
||||||
party.getMembers().remove(player.getName());
|
party.getMembers().remove(player.getName());
|
||||||
party.getMembersByUUID().remove(uuid);
|
party.getMembersByUUID().remove(uuid);
|
||||||
party.onPlayerRemove(player.getUniqueId(), reason);
|
party.onPlayerRemove(player.getName(), reason);
|
||||||
|
|
||||||
int size = party.getMembers().size();
|
int size = party.getMembers().size();
|
||||||
if(size <= 1)
|
if(size <= 1)
|
||||||
|
@ -303,7 +305,7 @@ public class PartyMethodManager
|
||||||
_plugin.removeParty(party);
|
_plugin.removeParty(party);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_plugin.getPlayerParties().remove(party.getMembers().get(0));
|
_plugin.getPlayerParties().remove(Bukkit.getPlayerExact(party.getMembers().get(0)).getUniqueId());
|
||||||
party.onPlayerRemove(party.getMembers().get(0), PartyRemoveReason.DISBANDED);
|
party.onPlayerRemove(party.getMembers().get(0), PartyRemoveReason.DISBANDED);
|
||||||
_plugin.removeParty(party);
|
_plugin.removeParty(party);
|
||||||
}
|
}
|
||||||
|
@ -326,14 +328,19 @@ public class PartyMethodManager
|
||||||
|
|
||||||
public void transferOwner(String newOwner, String oldOwner)
|
public void transferOwner(String newOwner, String oldOwner)
|
||||||
{
|
{
|
||||||
Party party = _plugin.getParties().remove(Bukkit.getPlayerExact(oldOwner).getUniqueId());
|
Party party = _plugin.getParties().remove(oldOwner);
|
||||||
|
|
||||||
if(party == null)
|
if(party == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_plugin.getParties().put(Bukkit.getPlayerExact(newOwner).getUniqueId(), party);
|
|
||||||
|
_plugin.getParties().put(newOwner, party);
|
||||||
party.setOwner(newOwner);
|
party.setOwner(newOwner);
|
||||||
party.getMembers().remove(Bukkit.getPlayerExact(oldOwner).getUniqueId());
|
party.getMembers().remove(oldOwner);
|
||||||
party.getMembers().add(Bukkit.getPlayerExact(oldOwner).getUniqueId());
|
party.getMembers().add(oldOwner);
|
||||||
|
UUID uuid = Bukkit.getPlayerExact(oldOwner).getUniqueId();
|
||||||
|
party.getMembersByUUID().remove(uuid);
|
||||||
|
party.getMembersByUUID().add(uuid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import mineplex.core.party.constants.JoinResponseReason;
|
||||||
import mineplex.core.party.event.PartyDataReceivedEvent;
|
import mineplex.core.party.event.PartyDataReceivedEvent;
|
||||||
import mineplex.core.party.redis.PartyRedisListener;
|
import mineplex.core.party.redis.PartyRedisListener;
|
||||||
import mineplex.core.party.redis.RedisMessageType;
|
import mineplex.core.party.redis.RedisMessageType;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
@ -120,7 +121,7 @@ public class PartyRedisManager
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!_plugin.getPreferencesManager().Get(player).PartyRequests)
|
if(!_plugin.getPreferencesManager().get(player).isActive(Preference.PARTY_REQUESTS))
|
||||||
{
|
{
|
||||||
publish(first, RedisMessageType.INVITE_PLAYER_NOT_ACCEPTING_INVITES, _serverName, player.getName(), player.getUniqueId().toString(), third);
|
publish(first, RedisMessageType.INVITE_PLAYER_NOT_ACCEPTING_INVITES, _serverName, player.getName(), player.getUniqueId().toString(), third);
|
||||||
return;
|
return;
|
||||||
|
@ -191,9 +192,9 @@ public class PartyRedisManager
|
||||||
* @param player The player target
|
* @param player The player target
|
||||||
* @param sender The sending player
|
* @param sender The sending player
|
||||||
*/
|
*/
|
||||||
public void findAndInvite(String player, Player sender)
|
public void findAndInvite(String player, String sender)
|
||||||
{
|
{
|
||||||
sender.sendMessage(F.main("Party", "Locating " + F.elem(player) + "..."));
|
Bukkit.getPlayerExact(sender).sendMessage(F.main("Party", "Locating " + F.elem(player) + "..."));
|
||||||
TASKS.put(player, new BukkitRunnable()
|
TASKS.put(player, new BukkitRunnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
|
@ -205,19 +206,25 @@ public class PartyRedisManager
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TASKS.remove(player);
|
TASKS.remove(player);
|
||||||
|
Player senderPlayer = Bukkit.getPlayerExact(sender);
|
||||||
|
if (senderPlayer == null)
|
||||||
|
{
|
||||||
|
cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (Bukkit.getPlayerExact(player) != null)
|
if (Bukkit.getPlayerExact(player) != null)
|
||||||
{
|
{
|
||||||
cancel();
|
cancel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sender.sendMessage(F.main("Party", "Could not locate " + F.elem(player) + "."));
|
senderPlayer.sendMessage(F.main("Party", "Could not locate " + F.elem(player) + "."));
|
||||||
}
|
}
|
||||||
}.runTaskLater(_plugin.getPlugin(), 20L * 5));
|
}.runTaskLater(_plugin.getPlugin(), 20L * 5));
|
||||||
|
|
||||||
_plugin.runAsync(() -> {
|
_plugin.runAsync(() -> {
|
||||||
try (Jedis jedis = _writePool.getResource())
|
try (Jedis jedis = _writePool.getResource())
|
||||||
{
|
{
|
||||||
jedis.publish(FIND_PLAYERS_CHANNEL, RedisMessageType.PLAYER_FIND_REQUEST.format(_serverName, player, sender.getName()));
|
jedis.publish(FIND_PLAYERS_CHANNEL, RedisMessageType.PLAYER_FIND_REQUEST.format(_serverName, player, sender));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
package mineplex.core.party.ui;
|
|
||||||
|
|
||||||
import mineplex.core.party.PartyManager;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.inventory.ClickType;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An abstract class for managing buttons inside of menus
|
|
||||||
*/
|
|
||||||
public abstract class Button
|
|
||||||
{
|
|
||||||
|
|
||||||
private ItemStack _item;
|
|
||||||
private PartyManager _plugin;
|
|
||||||
|
|
||||||
public Button(ItemStack item, PartyManager plugin)
|
|
||||||
{
|
|
||||||
this._item = item;
|
|
||||||
_plugin = plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The method called when a players clicks the slot
|
|
||||||
*
|
|
||||||
* @param player The player who clicked
|
|
||||||
*/
|
|
||||||
public abstract void onClick(Player player, ClickType clickType);
|
|
||||||
|
|
||||||
public ItemStack getItemStack()
|
|
||||||
{
|
|
||||||
return _item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItemStack(ItemStack item)
|
|
||||||
{
|
|
||||||
this._item = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PartyManager getPlugin()
|
|
||||||
{
|
|
||||||
return _plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package mineplex.core.party.ui;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.IconButton;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
|
import mineplex.core.party.PartyManager;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class to manage dynamic creation of GUI's
|
||||||
|
*/
|
||||||
|
public abstract class PartyMenu extends Menu<PartyManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
protected static final Button PURCHASE_MORE_SLOTS = new IconButton(new ItemBuilder(Material.REDSTONE_BLOCK)
|
||||||
|
.setTitle(C.cRed + C.Bold + "Locked!")
|
||||||
|
.setLore(" ", C.cGray + "Purchase a rank @ mineplex.com/shop", C.cGray + "Purchasing a rank increases your", C.cGray + "party size to allow 10 people!")
|
||||||
|
.build());
|
||||||
|
|
||||||
|
public PartyMenu(String name, PartyManager plugin)
|
||||||
|
{
|
||||||
|
super(name, plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -2,8 +2,8 @@ package mineplex.core.party.ui.button.tools;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
@ -12,7 +12,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
/**
|
/**
|
||||||
* Leaves a players current party
|
* Leaves a players current party
|
||||||
*/
|
*/
|
||||||
public class LeavePartyButton extends Button
|
public class LeavePartyButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.REDSTONE_BLOCK)
|
private static final ItemStack ITEM = new ItemBuilder(Material.REDSTONE_BLOCK)
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package mineplex.core.party.ui.button.tools;
|
package mineplex.core.party.ui.button.tools;
|
||||||
|
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.Party;
|
import mineplex.core.party.Party;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A wrapper for all buttons which need to interact with a specific party
|
* A wrapper for all buttons which need to interact with a specific party
|
||||||
*/
|
*/
|
||||||
public abstract class PartyButton extends Button
|
public abstract class PartyButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private Party _party;
|
private Party _party;
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
package mineplex.core.party.ui.button.tools;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.game.GameDisplay;
|
||||||
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
|
import mineplex.core.party.PartyManager;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SelectPartnerGameButton extends Button<PartyManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final String COMMAND = "/teamprefs ";
|
||||||
|
|
||||||
|
private final String _partner;
|
||||||
|
private final String _gameName;
|
||||||
|
|
||||||
|
public SelectPartnerGameButton(GameDisplay gameDisplay, String partner, PartyManager plugin)
|
||||||
|
{
|
||||||
|
super(new ItemBuilder(gameDisplay.getMaterial())
|
||||||
|
.setTitle(C.cYellow + gameDisplay.getName())
|
||||||
|
.setData(gameDisplay.getMaterialData())
|
||||||
|
.build(), plugin);
|
||||||
|
_partner = partner;
|
||||||
|
_gameName = gameDisplay.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
player.chat(COMMAND + _partner + " " + _gameName);
|
||||||
|
Menu.get(player.getUniqueId()).setUseClose(true);
|
||||||
|
player.closeInventory();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,8 @@
|
||||||
package mineplex.core.party.ui.button.tools.invite;
|
package mineplex.core.party.ui.button.tools.invite;
|
||||||
|
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -12,7 +12,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
/**
|
/**
|
||||||
* Sends a player back to the main page
|
* Sends a player back to the main page
|
||||||
*/
|
*/
|
||||||
public class BackButton extends Button
|
public class BackButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static ItemStack ITEM = new ItemBuilder(Material.BED)
|
private static ItemStack ITEM = new ItemBuilder(Material.BED)
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package mineplex.core.party.ui.button.tools.invite;
|
package mineplex.core.party.ui.button.tools.invite;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -13,7 +13,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
/**
|
/**
|
||||||
* Deny's all invites currently pending
|
* Deny's all invites currently pending
|
||||||
*/
|
*/
|
||||||
public class DenyAllButton extends Button
|
public class DenyAllButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.REDSTONE_BLOCK)
|
private static final ItemStack ITEM = new ItemBuilder(Material.REDSTONE_BLOCK)
|
||||||
|
|
|
@ -2,8 +2,8 @@ package mineplex.core.party.ui.button.tools.invite;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import mineplex.core.party.ui.menus.input.InviteFilterMenu;
|
import mineplex.core.party.ui.menus.input.InviteFilterMenu;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -13,7 +13,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
/**
|
/**
|
||||||
* Filters all current pending invites and displays only the results to a player
|
* Filters all current pending invites and displays only the results to a player
|
||||||
*/
|
*/
|
||||||
public class FilterButton extends Button
|
public class FilterButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.NAME_TAG)
|
private static final ItemStack ITEM = new ItemBuilder(Material.NAME_TAG)
|
||||||
|
@ -22,8 +22,8 @@ public class FilterButton extends Button
|
||||||
C.cGray + "Click to bring up an Anvil GUI",
|
C.cGray + "Click to bring up an Anvil GUI",
|
||||||
C.cGray + "where you type and filter",
|
C.cGray + "where you type and filter",
|
||||||
C.cGray + "Party invites by their name",
|
C.cGray + "Party invites by their name",
|
||||||
" ",
|
" ",
|
||||||
C.cGreen + "Input \"Clear Filter\" to remove the filter")
|
C.cGreen + "Input \"Clear Filter\" to remove the filter")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public FilterButton(PartyManager plugin)
|
public FilterButton(PartyManager plugin)
|
||||||
|
@ -36,11 +36,11 @@ public class FilterButton extends Button
|
||||||
super(new ItemBuilder(Material.NAME_TAG)
|
super(new ItemBuilder(Material.NAME_TAG)
|
||||||
.setTitle(C.cYellow + "Filter Invites")
|
.setTitle(C.cYellow + "Filter Invites")
|
||||||
.setLore(" ", C.cWhite + "Active Filter: " + C.cGreen + filter, " ",
|
.setLore(" ", C.cWhite + "Active Filter: " + C.cGreen + filter, " ",
|
||||||
C.cGray + "Click to bring up an Anvil GUI",
|
C.cGray + "Click to bring up an Anvil GUI",
|
||||||
C.cGray + "where you type and filter",
|
C.cGray + "where you type and filter",
|
||||||
C.cGray + "Party invites by their name",
|
C.cGray + "Party invites by their name",
|
||||||
" ",
|
" ",
|
||||||
C.cGreen + "Input \"Clear Filter\" to remove the filter")
|
C.cGreen + "Input \"Clear Filter\" to remove the filter")
|
||||||
.setGlow(true)
|
.setGlow(true)
|
||||||
.build(), plugin);
|
.build(), plugin);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@ package mineplex.core.party.ui.button.tools.invite;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
@ -11,7 +11,7 @@ import org.bukkit.event.inventory.ClickType;
|
||||||
/**
|
/**
|
||||||
* Represents an invitation, to which a player can accept or deny
|
* Represents an invitation, to which a player can accept or deny
|
||||||
*/
|
*/
|
||||||
public class InviteButton extends Button
|
public class InviteButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private String _name;
|
private String _name;
|
||||||
|
|
|
@ -2,10 +2,10 @@ package mineplex.core.party.ui.button.tools.invite;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.IconButton;
|
||||||
import mineplex.core.party.InviteData;
|
import mineplex.core.party.InviteData;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import mineplex.core.party.ui.button.IconButton;
|
|
||||||
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -17,7 +17,7 @@ import java.util.List;
|
||||||
/**
|
/**
|
||||||
* Shows the next page of invites for a player
|
* Shows the next page of invites for a player
|
||||||
*/
|
*/
|
||||||
public class NextPageButton extends Button
|
public class NextPageButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.SIGN).setTitle(C.cYellow + "Next Page").build();
|
private static final ItemStack ITEM = new ItemBuilder(Material.SIGN).setTitle(C.cYellow + "Next Page").build();
|
||||||
|
@ -37,13 +37,13 @@ public class NextPageButton extends Button
|
||||||
_menu.setCurrentPage(_menu.getCurrentPage() + 1);
|
_menu.setCurrentPage(_menu.getCurrentPage() + 1);
|
||||||
if(_menu.getCurrentPage() == _menu.getPagesNeeded())
|
if(_menu.getCurrentPage() == _menu.getPagesNeeded())
|
||||||
{
|
{
|
||||||
_menu.setButton(53, new IconButton(new ItemStack(Material.AIR), getPlugin()));
|
_menu.setButton(53, new IconButton(new ItemStack(Material.AIR)));
|
||||||
}
|
}
|
||||||
List<InviteData> data = _menu.getDataForPage(_menu.getCurrentPage());
|
List<InviteData> data = _menu.getDataForPage(_menu.getCurrentPage());
|
||||||
for(int i = 0; i < data.size(); i++)
|
for(int i = 0; i < data.size(); i++)
|
||||||
{
|
{
|
||||||
_menu.setButton(i + _menu.getStartingSlot(), new InviteButton(data.get(i).getInvitedTo(), getPlugin()));
|
_menu.setButton(i + _menu.getStartingSlot(), new InviteButton(data.get(i).getInvitedTo(), getPlugin()));
|
||||||
}
|
}
|
||||||
_menu.update(player);
|
_menu.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,10 +2,10 @@ package mineplex.core.party.ui.button.tools.invite;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.IconButton;
|
||||||
import mineplex.core.party.InviteData;
|
import mineplex.core.party.InviteData;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import mineplex.core.party.ui.button.IconButton;
|
|
||||||
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -17,7 +17,7 @@ import java.util.List;
|
||||||
/**
|
/**
|
||||||
* Shows the previous page of invites for a player
|
* Shows the previous page of invites for a player
|
||||||
*/
|
*/
|
||||||
public class PrevPageButton extends Button
|
public class PrevPageButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.SIGN).setTitle(C.cYellow + "Previous Page").build();
|
private static final ItemStack ITEM = new ItemBuilder(Material.SIGN).setTitle(C.cYellow + "Previous Page").build();
|
||||||
|
@ -36,13 +36,13 @@ public class PrevPageButton extends Button
|
||||||
_menu.setCurrentPage(_menu.getCurrentPage() - 1);
|
_menu.setCurrentPage(_menu.getCurrentPage() - 1);
|
||||||
if(_menu.getCurrentPage() == 0)
|
if(_menu.getCurrentPage() == 0)
|
||||||
{
|
{
|
||||||
_menu.setButton(45, new IconButton(new ItemStack(Material.AIR), getPlugin()));
|
_menu.setButton(45, new IconButton(new ItemStack(Material.AIR)));
|
||||||
}
|
}
|
||||||
List<InviteData> data = _menu.getDataForPage(_menu.getCurrentPage());
|
List<InviteData> data = _menu.getDataForPage(_menu.getCurrentPage());
|
||||||
for(int i = 0; i < data.size(); i++)
|
for(int i = 0; i < data.size(); i++)
|
||||||
{
|
{
|
||||||
_menu.setButton(i + _menu.getStartingSlot(), new InviteButton(data.get(i).getInvitedTo(), getPlugin()));
|
_menu.setButton(i + _menu.getStartingSlot(), new InviteButton(data.get(i).getInvitedTo(), getPlugin()));
|
||||||
}
|
}
|
||||||
_menu.update(player);
|
_menu.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,8 +2,8 @@ package mineplex.core.party.ui.button.tools.main;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import mineplex.core.party.ui.menus.input.PartyInvitePlayerMenu;
|
import mineplex.core.party.ui.menus.input.PartyInvitePlayerMenu;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -13,7 +13,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
/**
|
/**
|
||||||
* Invites a player to a new party
|
* Invites a player to a new party
|
||||||
*/
|
*/
|
||||||
public class InvitePlayerButton extends Button
|
public class InvitePlayerButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.NAME_TAG)
|
private static final ItemStack ITEM = new ItemBuilder(Material.NAME_TAG)
|
||||||
|
|
|
@ -2,8 +2,8 @@ package mineplex.core.party.ui.button.tools.main;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
import mineplex.core.party.ui.menus.PartyInvitesMenu;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -13,7 +13,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
/**
|
/**
|
||||||
* Opens the {@code {@link PartyInvitesMenu}}
|
* Opens the {@code {@link PartyInvitesMenu}}
|
||||||
*/
|
*/
|
||||||
public class ViewInvitesButton extends Button
|
public class ViewInvitesButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.BOOK)
|
private static final ItemStack ITEM = new ItemBuilder(Material.BOOK)
|
||||||
|
|
|
@ -2,8 +2,8 @@ package mineplex.core.party.ui.button.tools.owner;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
@ -12,7 +12,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
/**
|
/**
|
||||||
* Disbands a party
|
* Disbands a party
|
||||||
*/
|
*/
|
||||||
public class DisbandPartyButton extends Button
|
public class DisbandPartyButton extends Button<PartyManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.BARRIER)
|
private static final ItemStack ITEM = new ItemBuilder(Material.BARRIER)
|
||||||
|
|
|
@ -4,7 +4,7 @@ import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.party.Party;
|
import mineplex.core.party.Party;
|
||||||
import mineplex.core.party.ui.Menu;
|
import mineplex.core.party.ui.PartyMenu;
|
||||||
import mineplex.core.party.ui.button.tools.PartyButton;
|
import mineplex.core.party.ui.button.tools.PartyButton;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -51,6 +51,6 @@ public class KickPlayerButton extends PartyButton
|
||||||
{
|
{
|
||||||
setItemStack(ITEM_OFF);
|
setItemStack(ITEM_OFF);
|
||||||
}
|
}
|
||||||
Menu.get(player.getUniqueId()).update(player);
|
PartyMenu.get(player.getUniqueId()).update();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,7 +20,7 @@ public class TransferOwnerButton extends PartyButton
|
||||||
private static final ItemStack ITEM = new ItemBuilder(Material.BOOK_AND_QUILL)
|
private static final ItemStack ITEM = new ItemBuilder(Material.BOOK_AND_QUILL)
|
||||||
.setTitle(C.cYellow + "Transfer Ownership")
|
.setTitle(C.cYellow + "Transfer Ownership")
|
||||||
.setLore(" ", C.cGray + "Transfers ownership of the party", C.cGray + "to another player",
|
.setLore(" ", C.cGray + "Transfers ownership of the party", C.cGray + "to another player",
|
||||||
" ", C.cDRed + "This cannot be undone!")
|
" ", C.cDRed + "This cannot be undone!")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public TransferOwnerButton(Party party, PartyManager plugin)
|
public TransferOwnerButton(Party party, PartyManager plugin)
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
package mineplex.core.party.ui.menus;
|
||||||
|
|
||||||
|
import mineplex.core.game.GameDisplay;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.party.PartyManager;
|
||||||
|
import mineplex.core.party.ui.PartyMenu;
|
||||||
|
import mineplex.core.party.ui.button.tools.SelectPartnerGameButton;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PartnerRequestMenu extends PartyMenu
|
||||||
|
{
|
||||||
|
|
||||||
|
private final GameDisplay[] GAMES = {
|
||||||
|
GameDisplay.SurvivalGamesTeams,
|
||||||
|
GameDisplay.SkywarsTeams,
|
||||||
|
GameDisplay.UHC,
|
||||||
|
GameDisplay.SmashTeams,
|
||||||
|
};
|
||||||
|
|
||||||
|
private final int INV_SIZE = 54;
|
||||||
|
private final int START_SLOT = 20;
|
||||||
|
private final int END_SLOT = 24;
|
||||||
|
private final int START_SLOT_SECOND = 29;
|
||||||
|
|
||||||
|
private final String _partner;
|
||||||
|
|
||||||
|
public PartnerRequestMenu(String partner, PartyManager plugin)
|
||||||
|
{
|
||||||
|
super("Select a game", plugin);
|
||||||
|
_partner = partner;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Button[] setUp(Player player)
|
||||||
|
{
|
||||||
|
Button[] buttons = new Button[INV_SIZE];
|
||||||
|
|
||||||
|
int slot = START_SLOT;
|
||||||
|
|
||||||
|
for (GameDisplay gameDisplay : GAMES)
|
||||||
|
{
|
||||||
|
if (slot > END_SLOT)
|
||||||
|
{
|
||||||
|
slot = START_SLOT_SECOND;
|
||||||
|
}
|
||||||
|
|
||||||
|
buttons[slot++] = new SelectPartnerGameButton(gameDisplay, _partner, getPlugin());
|
||||||
|
}
|
||||||
|
|
||||||
|
return pane(buttons);
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,12 +5,16 @@ import com.google.common.collect.Maps;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.IconButton;
|
||||||
import mineplex.core.party.InviteData;
|
import mineplex.core.party.InviteData;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
import mineplex.core.party.ui.PartyMenu;
|
||||||
import mineplex.core.party.ui.Menu;
|
import mineplex.core.party.ui.button.tools.invite.BackButton;
|
||||||
import mineplex.core.party.ui.button.IconButton;
|
import mineplex.core.party.ui.button.tools.invite.DenyAllButton;
|
||||||
import mineplex.core.party.ui.button.tools.invite.*;
|
import mineplex.core.party.ui.button.tools.invite.FilterButton;
|
||||||
|
import mineplex.core.party.ui.button.tools.invite.InviteButton;
|
||||||
|
import mineplex.core.party.ui.button.tools.invite.NextPageButton;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
|
@ -23,13 +27,13 @@ import java.util.stream.Collectors;
|
||||||
/**
|
/**
|
||||||
* The menu showing all pending invites for a player
|
* The menu showing all pending invites for a player
|
||||||
*/
|
*/
|
||||||
public class PartyInvitesMenu extends Menu
|
public class PartyInvitesMenu extends PartyMenu
|
||||||
{
|
{
|
||||||
|
|
||||||
private final IconButton NO_INVITES = new IconButton(new ItemBuilder(Material.STAINED_GLASS_PANE)
|
private final IconButton NO_INVITES = new IconButton(new ItemBuilder(Material.STAINED_GLASS_PANE)
|
||||||
.setData(DyeColor.RED.getWoolData())
|
.setData(DyeColor.RED.getWoolData())
|
||||||
.setTitle(C.cRedB + "No Invites")
|
.setTitle(C.cRedB + "No Invites")
|
||||||
.build(), null);
|
.build());
|
||||||
|
|
||||||
private final int INV_SIZE = 54;
|
private final int INV_SIZE = 54;
|
||||||
private final int SLOTS_PER_PAGE = 27;
|
private final int SLOTS_PER_PAGE = 27;
|
||||||
|
@ -63,9 +67,9 @@ public class PartyInvitesMenu extends Menu
|
||||||
Button[] buttons = new Button[INV_SIZE];
|
Button[] buttons = new Button[INV_SIZE];
|
||||||
boolean showFiltered = false;
|
boolean showFiltered = false;
|
||||||
|
|
||||||
buttons[BACK_BUTTON_SLOT] = new BackButton(_plugin);
|
buttons[BACK_BUTTON_SLOT] = new BackButton(getPlugin());
|
||||||
|
|
||||||
List<InviteData> all = (List<InviteData>) _plugin.getInviteManager().getAllInvites(player);
|
List<InviteData> all = (List<InviteData>) getPlugin().getInviteManager().getAllInvites(player);
|
||||||
|
|
||||||
if (all == null || all.isEmpty())
|
if (all == null || all.isEmpty())
|
||||||
{
|
{
|
||||||
|
@ -74,18 +78,18 @@ public class PartyInvitesMenu extends Menu
|
||||||
buttons[i] = NO_INVITES;
|
buttons[i] = NO_INVITES;
|
||||||
}
|
}
|
||||||
player.playSound(player.getLocation(), Sound.ITEM_BREAK, 1, .6f);
|
player.playSound(player.getLocation(), Sound.ITEM_BREAK, 1, .6f);
|
||||||
return addPanes(buttons);
|
return pane(buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
buttons[DENY_ALL_BUTTON_SLOW] = new DenyAllButton(_plugin);
|
buttons[DENY_ALL_BUTTON_SLOW] = new DenyAllButton(getPlugin());
|
||||||
|
|
||||||
if (_filterBy == null || _filterBy.isEmpty())
|
if (_filterBy == null || _filterBy.isEmpty())
|
||||||
{
|
{
|
||||||
buttons[FILTER_BUTTON_SLOT] = new FilterButton(_plugin);
|
buttons[FILTER_BUTTON_SLOT] = new FilterButton(getPlugin());
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
showFiltered = true;
|
showFiltered = true;
|
||||||
buttons[FILTER_BUTTON_SLOT] = new FilterButton(_filterBy, _plugin);
|
buttons[FILTER_BUTTON_SLOT] = new FilterButton(_filterBy, getPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showFiltered)
|
if (showFiltered)
|
||||||
|
@ -101,10 +105,10 @@ public class PartyInvitesMenu extends Menu
|
||||||
.setData(DyeColor.RED.getWoolData())
|
.setData(DyeColor.RED.getWoolData())
|
||||||
.setTitle(C.cRedB + "No Invites Found")
|
.setTitle(C.cRedB + "No Invites Found")
|
||||||
.setLore(" ", C.cGray + "The filter " + F.name(_filterBy) + " had no results.")
|
.setLore(" ", C.cGray + "The filter " + F.name(_filterBy) + " had no results.")
|
||||||
.build(), _plugin);
|
.build());
|
||||||
}
|
}
|
||||||
player.playSound(player.getLocation(), Sound.ITEM_BREAK, 1, .6f);
|
player.playSound(player.getLocation(), Sound.ITEM_BREAK, 1, .6f);
|
||||||
return addPanes(buttons);
|
return pane(buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
_data = all;
|
_data = all;
|
||||||
|
@ -118,7 +122,7 @@ public class PartyInvitesMenu extends Menu
|
||||||
pagesNeeded++;
|
pagesNeeded++;
|
||||||
size -= SLOTS_PER_PAGE;
|
size -= SLOTS_PER_PAGE;
|
||||||
}
|
}
|
||||||
buttons[NEXT_PAGE_SLOT] = new NextPageButton(this, _plugin);
|
buttons[NEXT_PAGE_SLOT] = new NextPageButton(this, getPlugin());
|
||||||
|
|
||||||
_pagesNeeded = pagesNeeded;
|
_pagesNeeded = pagesNeeded;
|
||||||
_pagesOfData = Maps.newHashMap();
|
_pagesOfData = Maps.newHashMap();
|
||||||
|
@ -147,12 +151,12 @@ public class PartyInvitesMenu extends Menu
|
||||||
for (int i = 0; i < all.size(); i++)
|
for (int i = 0; i < all.size(); i++)
|
||||||
{
|
{
|
||||||
String to = all.get(i).getInvitedTo();
|
String to = all.get(i).getInvitedTo();
|
||||||
buttons[STARTING_SLOT + i] = new InviteButton(to, _plugin);
|
buttons[STARTING_SLOT + i] = new InviteButton(to, getPlugin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return addPanes(buttons);
|
return pane(buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setButton(int slot, Button button)
|
public void setButton(int slot, Button button)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package mineplex.core.party.ui.menus;
|
package mineplex.core.party.ui.menus;
|
||||||
|
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
import mineplex.core.party.ui.PartyMenu;
|
||||||
import mineplex.core.party.ui.Menu;
|
|
||||||
import mineplex.core.party.ui.button.tools.main.InvitePlayerButton;
|
import mineplex.core.party.ui.button.tools.main.InvitePlayerButton;
|
||||||
import mineplex.core.party.ui.button.tools.main.ViewInvitesButton;
|
import mineplex.core.party.ui.button.tools.main.ViewInvitesButton;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -10,7 +10,7 @@ import org.bukkit.entity.Player;
|
||||||
/**
|
/**
|
||||||
* The main GUI for parties.
|
* The main GUI for parties.
|
||||||
*/
|
*/
|
||||||
public class PartyMainMenu extends Menu
|
public class PartyMainMenu extends PartyMenu
|
||||||
{
|
{
|
||||||
|
|
||||||
private final int INV_SIZE = 9;
|
private final int INV_SIZE = 9;
|
||||||
|
@ -28,8 +28,8 @@ public class PartyMainMenu extends Menu
|
||||||
{
|
{
|
||||||
Button[] buttons = new Button[INV_SIZE];
|
Button[] buttons = new Button[INV_SIZE];
|
||||||
|
|
||||||
buttons[INVITE_PLAYER_BUTTON_SLOT] = new InvitePlayerButton(_plugin);
|
buttons[INVITE_PLAYER_BUTTON_SLOT] = new InvitePlayerButton(getPlugin());
|
||||||
buttons[VIEW_INVITES_BUTTON_SLOT] = new ViewInvitesButton(_plugin);
|
buttons[VIEW_INVITES_BUTTON_SLOT] = new ViewInvitesButton(getPlugin());
|
||||||
|
|
||||||
return buttons;
|
return buttons;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package mineplex.core.party.ui.menus;
|
package mineplex.core.party.ui.menus;
|
||||||
|
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.Party;
|
import mineplex.core.party.Party;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
import mineplex.core.party.ui.PartyMenu;
|
||||||
import mineplex.core.party.ui.Menu;
|
|
||||||
import mineplex.core.party.ui.button.PartyMemberIcon;
|
import mineplex.core.party.ui.button.PartyMemberIcon;
|
||||||
import mineplex.core.party.ui.button.tools.LeavePartyButton;
|
import mineplex.core.party.ui.button.tools.LeavePartyButton;
|
||||||
import mineplex.core.party.ui.button.tools.owner.AddPlayerButton;
|
import mineplex.core.party.ui.button.tools.owner.AddPlayerButton;
|
||||||
|
@ -20,7 +20,7 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* The display menu for managing parties by the owner
|
* The display menu for managing parties by the owner
|
||||||
*/
|
*/
|
||||||
public class PartyOwnerMenu extends Menu
|
public class PartyOwnerMenu extends PartyMenu
|
||||||
{
|
{
|
||||||
|
|
||||||
private final int INV_SIZE = 54;
|
private final int INV_SIZE = 54;
|
||||||
|
@ -55,25 +55,25 @@ public class PartyOwnerMenu extends Menu
|
||||||
{
|
{
|
||||||
Button[] buttons = new Button[INV_SIZE];
|
Button[] buttons = new Button[INV_SIZE];
|
||||||
//Tools
|
//Tools
|
||||||
buttons[ADD_PLAYER_BUTTON_SLOT] = new AddPlayerButton(_plugin, _party);
|
buttons[ADD_PLAYER_BUTTON_SLOT] = new AddPlayerButton(getPlugin(), _party);
|
||||||
//Kick player
|
//Kick player
|
||||||
buttons[KICK_PLAYER_BUTTON_SLOT] = new KickPlayerButton(_party);
|
buttons[KICK_PLAYER_BUTTON_SLOT] = new KickPlayerButton(_party);
|
||||||
//Transfer ownership
|
//Transfer ownership
|
||||||
buttons[TRANSFER_OWNER_BUTTON_SLOT] = new TransferOwnerButton(_party, _plugin);
|
buttons[TRANSFER_OWNER_BUTTON_SLOT] = new TransferOwnerButton(_party, getPlugin());
|
||||||
//Go to server
|
//Go to server
|
||||||
buttons[SELECT_SERVER_BUTTON_SLOT] = new SelectServerButton(_party);
|
buttons[SELECT_SERVER_BUTTON_SLOT] = new SelectServerButton(_party);
|
||||||
//Leave party
|
//Leave party
|
||||||
buttons[LEAVE_PARTY_BUTTON_SLOT] = new LeavePartyButton(_plugin);
|
buttons[LEAVE_PARTY_BUTTON_SLOT] = new LeavePartyButton(getPlugin());
|
||||||
//Disband
|
//Disband
|
||||||
buttons[DISBAND_PARTY_BUTTON_SLOW] = new DisbandPartyButton(_plugin);
|
buttons[DISBAND_PARTY_BUTTON_SLOW] = new DisbandPartyButton(getPlugin());
|
||||||
|
|
||||||
List<UUID> members = _party.getMembers();
|
List<String> members = _party.getMembers();
|
||||||
members.remove(_party.getOwnerId());
|
members.remove(_party.getOwner());
|
||||||
buttons[OWNER_HEAD_SLOT] = new PartyMemberIcon(_party.getOwner(), _party, true);
|
buttons[OWNER_HEAD_SLOT] = new PartyMemberIcon(_party.getOwner(), _party, true);
|
||||||
|
|
||||||
int slot = STARTING_SLOT;
|
int slot = STARTING_SLOT;
|
||||||
//Players
|
//Players
|
||||||
for (UUID member: members)
|
for (String member: members)
|
||||||
{
|
{
|
||||||
if (slot == CUT_OFF_SLOT)
|
if (slot == CUT_OFF_SLOT)
|
||||||
{
|
{
|
||||||
|
@ -83,18 +83,9 @@ public class PartyOwnerMenu extends Menu
|
||||||
slot = SKIP_TO_SLOT_2;
|
slot = SKIP_TO_SLOT_2;
|
||||||
}
|
}
|
||||||
|
|
||||||
buttons[slot++] = new PartyMemberIcon(Bukkit.getPlayer(member).getName(), _party, false);
|
buttons[slot++] = new PartyMemberIcon(Bukkit.getPlayerExact(member).getName(), _party, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_party.getSize() == 5)
|
return pane(buttons);
|
||||||
{
|
|
||||||
for(int i = 29; i < 34; i++)
|
|
||||||
{
|
|
||||||
buttons[i] = PURCHASE_MORE_SLOTS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return addPanes(buttons);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,9 +1,9 @@
|
||||||
package mineplex.core.party.ui.menus;
|
package mineplex.core.party.ui.menus;
|
||||||
|
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
import mineplex.core.party.Party;
|
import mineplex.core.party.Party;
|
||||||
import mineplex.core.party.PartyManager;
|
import mineplex.core.party.PartyManager;
|
||||||
import mineplex.core.party.ui.Button;
|
import mineplex.core.party.ui.PartyMenu;
|
||||||
import mineplex.core.party.ui.Menu;
|
|
||||||
import mineplex.core.party.ui.button.PartyMemberIcon;
|
import mineplex.core.party.ui.button.PartyMemberIcon;
|
||||||
import mineplex.core.party.ui.button.tools.LeavePartyButton;
|
import mineplex.core.party.ui.button.tools.LeavePartyButton;
|
||||||
import mineplex.core.party.ui.button.tools.view.SuggestPlayerButton;
|
import mineplex.core.party.ui.button.tools.view.SuggestPlayerButton;
|
||||||
|
@ -16,7 +16,7 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* The menu a player see's when he is a member, and not an owner, of a party.
|
* The menu a player see's when he is a member, and not an owner, of a party.
|
||||||
*/
|
*/
|
||||||
public class PartyViewMenu extends Menu
|
public class PartyViewMenu extends PartyMenu
|
||||||
{
|
{
|
||||||
|
|
||||||
private final int INV_SIZE = 54;
|
private final int INV_SIZE = 54;
|
||||||
|
@ -42,17 +42,17 @@ public class PartyViewMenu extends Menu
|
||||||
{
|
{
|
||||||
Button[] buttons = new Button[INV_SIZE];
|
Button[] buttons = new Button[INV_SIZE];
|
||||||
//Tools
|
//Tools
|
||||||
buttons[LEAVE_PARTY_BUTTON_SLOT] = new LeavePartyButton(_plugin);
|
buttons[LEAVE_PARTY_BUTTON_SLOT] = new LeavePartyButton(getPlugin());
|
||||||
//Suggest Player
|
//Suggest Player
|
||||||
buttons[SUGGEST_PLAYER_BUTTON_SLOT] = new SuggestPlayerButton(_party, _plugin);
|
buttons[SUGGEST_PLAYER_BUTTON_SLOT] = new SuggestPlayerButton(_party, getPlugin());
|
||||||
|
|
||||||
List<UUID> members = _party.getMembers();
|
List<String> members = _party.getMembers();
|
||||||
members.remove(_party.getOwnerId());
|
members.remove(_party.getOwner());
|
||||||
buttons[OWNER_HEAD_SLOT] = new PartyMemberIcon(_party.getOwner(), _party, true);
|
buttons[OWNER_HEAD_SLOT] = new PartyMemberIcon(_party.getOwner(), _party, true);
|
||||||
|
|
||||||
int slot = STARTING_SLOT;
|
int slot = STARTING_SLOT;
|
||||||
//Players
|
//Players
|
||||||
for (UUID member : members)
|
for (String member : members)
|
||||||
{
|
{
|
||||||
if (slot == CUT_OFF_SLOT)
|
if (slot == CUT_OFF_SLOT)
|
||||||
{
|
{
|
||||||
|
@ -65,6 +65,6 @@ public class PartyViewMenu extends Menu
|
||||||
buttons[slot++] = new PartyMemberIcon(Bukkit.getPlayer(member).getName(), _party, false);
|
buttons[slot++] = new PartyMemberIcon(Bukkit.getPlayer(member).getName(), _party, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return addPanes(buttons);
|
return pane(buttons);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,106 @@
|
||||||
|
package mineplex.core.preferences;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public enum Preference
|
||||||
|
{
|
||||||
|
|
||||||
|
HUB_GAMES(true, PreferenceCategory.USER, Material.FIREBALL, "Hub Player Stacker"),
|
||||||
|
SHOW_PLAYERS(true, PreferenceCategory.USER, Material.EYE_OF_ENDER, "Hub Player Visibility"),
|
||||||
|
SHOW_CHAT(true, PreferenceCategory.USER, Material.PAPER, "Player Chat"),
|
||||||
|
PRIVATE_MESSAGING(true, PreferenceCategory.USER, Material.MAP, "Private Messaging"),
|
||||||
|
PARTY_REQUESTS(true, PreferenceCategory.USER, Material.SKULL_ITEM, "Party Requests"),
|
||||||
|
|
||||||
|
INVISIBILITY(false, PreferenceCategory.EXCLUSIVE, Material.NETHER_STAR, "Hub Invisibility & Flight"),
|
||||||
|
FORCE_FIELD(false, PreferenceCategory.EXCLUSIVE, Material.SLIME_BALL, "Hub Forcefield"),
|
||||||
|
SHOW_MAC_REPORTS(false, PreferenceCategory.EXCLUSIVE, Material.PAPER, "Global GWEN Reports"),
|
||||||
|
SHOW_USER_REPORTS(false, PreferenceCategory.EXCLUSIVE, Material.BOOK, "User Reports"),
|
||||||
|
IGNORE_VELOCITY(false, PreferenceCategory.EXCLUSIVE, Material.SADDLE, "Hub Ignore Velocity"),
|
||||||
|
|
||||||
|
PENDING_FRIEND_REQUESTS(true, PreferenceCategory.FRIEND, Material.RED_ROSE, "Show Pending Friend Requests"),
|
||||||
|
FRIENDS_DISPLAY_INVENTORY_UI(true, PreferenceCategory.FRIEND, Material.CHEST, "Display Friend GUI"),
|
||||||
|
|
||||||
|
CLAN_TIPS(true, PreferenceCategory.MISC, Material.IRON_SWORD, "Show Clan Tips"),
|
||||||
|
HUB_MUSIC(true, PreferenceCategory.MISC, Material.NOTE_BLOCK, "Hub Music"),
|
||||||
|
|
||||||
|
AUTO_JOIN_NEXT_GAME(true, PreferenceCategory.GAME_PLAY, Material.DIAMOND_SWORD, "Auto Join Next Game"),
|
||||||
|
COUNTDOWN_ON_CLICK(true, PreferenceCategory.GAME_PLAY, Material.EMERALD, "Countdown to Join"),;
|
||||||
|
|
||||||
|
private static final Map<Integer, Preference> PREFERENCE_MAP = Maps.newHashMap();
|
||||||
|
private static final Map<PreferenceCategory, List<Preference>> PREFERENCES_BY_CATEGORY = Maps.newHashMap();
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
int id = 0;
|
||||||
|
for (Preference preference : values())
|
||||||
|
{
|
||||||
|
preference._id = ++id;
|
||||||
|
PREFERENCE_MAP.put(preference._id, preference);
|
||||||
|
List<Preference> preferences = PREFERENCES_BY_CATEGORY.getOrDefault(preference._category, Lists.newArrayList());
|
||||||
|
preferences.add(preference);
|
||||||
|
PREFERENCES_BY_CATEGORY.put(preference._category, preferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private int _id;
|
||||||
|
private final boolean _default;
|
||||||
|
private final PreferenceCategory _category;
|
||||||
|
private final Material _icon;
|
||||||
|
private final String _name;
|
||||||
|
private final String[] _lore;
|
||||||
|
|
||||||
|
Preference(boolean defaultSetting, PreferenceCategory category, Material icon, String name, String... lore)
|
||||||
|
{
|
||||||
|
_default = defaultSetting;
|
||||||
|
_category = category;
|
||||||
|
_icon = icon;
|
||||||
|
_name = name;
|
||||||
|
_lore = lore;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material getIcon()
|
||||||
|
{
|
||||||
|
return _icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId()
|
||||||
|
{
|
||||||
|
return _id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getDefaultValue()
|
||||||
|
{
|
||||||
|
return _default;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getLore()
|
||||||
|
{
|
||||||
|
return _lore;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Preference> getByCategory(PreferenceCategory category)
|
||||||
|
{
|
||||||
|
return PREFERENCES_BY_CATEGORY.get(category);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Preference get(int id)
|
||||||
|
{
|
||||||
|
return PREFERENCE_MAP.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package mineplex.core.preferences;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public enum PreferenceCategory
|
||||||
|
{
|
||||||
|
|
||||||
|
USER("User", Material.PAPER),
|
||||||
|
EXCLUSIVE("Exclusive", Material.DIAMOND),
|
||||||
|
GAME_PLAY("Game Mechanic", Material.REDSTONE_COMPARATOR),
|
||||||
|
MISC("Miscellaneous", Material.COMPASS),
|
||||||
|
FRIEND("Friend", Material.CHEST),
|
||||||
|
;
|
||||||
|
|
||||||
|
private String _name;
|
||||||
|
private ItemStack _itemStack;
|
||||||
|
|
||||||
|
PreferenceCategory(String name, Material icon)
|
||||||
|
{
|
||||||
|
_name = name + " Preferences";
|
||||||
|
_itemStack = new ItemBuilder(icon)
|
||||||
|
.setTitle(C.cYellow + _name)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getItem()
|
||||||
|
{
|
||||||
|
return _itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,18 @@
|
||||||
package mineplex.core.preferences;
|
package mineplex.core.preferences;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import com.google.common.collect.Lists;
|
||||||
import java.sql.ResultSet;
|
import com.google.common.collect.Maps;
|
||||||
import java.sql.SQLException;
|
import mineplex.core.MiniPlugin;
|
||||||
import java.util.Map.Entry;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import java.util.UUID;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.UtilGear;
|
||||||
|
import mineplex.core.common.util.UtilInv;
|
||||||
|
import mineplex.core.incognito.IncognitoManager;
|
||||||
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
|
import mineplex.core.preferences.command.PreferencesCommand;
|
||||||
|
import mineplex.core.preferences.ui.PreferenceMainMenu;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.core.utils.UtilGameProfile;
|
import mineplex.core.utils.UtilGameProfile;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -14,68 +21,124 @@ import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.SkullMeta;
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import mineplex.core.MiniDbClientPlugin;
|
import java.lang.reflect.Field;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import java.util.List;
|
||||||
import mineplex.core.common.util.C;
|
import java.util.Map;
|
||||||
import mineplex.core.common.util.NautHashMap;
|
|
||||||
import mineplex.core.common.util.UtilGear;
|
|
||||||
import mineplex.core.common.util.UtilInv;
|
|
||||||
import mineplex.core.donation.DonationManager;
|
|
||||||
import mineplex.core.incognito.IncognitoManager;
|
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
|
||||||
import mineplex.core.packethandler.PacketHandler;
|
|
||||||
import mineplex.core.preferences.command.PreferencesCommand;
|
|
||||||
import mineplex.core.preferences.ui.ExclusivePreferencesShop;
|
|
||||||
import mineplex.core.preferences.ui.PreferencesShop;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
|
|
||||||
public class PreferencesManager extends MiniDbClientPlugin<UserPreferences>
|
public class PreferencesManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
private PreferencesRepository _repository;
|
private final PreferencesRepository _repository;
|
||||||
private PreferencesShop _shop;
|
private final CoreClientManager _clientManager;
|
||||||
private ExclusivePreferencesShop _exclusiveShop;
|
private final IncognitoManager _incognitoManager;
|
||||||
|
|
||||||
private IncognitoManager _incognitoManager;
|
private final List<UserPreferences> _saveBuffer = Lists.newArrayList();
|
||||||
|
private final Map<Integer, UserPreferences> _preferences = Maps.newHashMap();
|
||||||
private NautHashMap<String, UserPreferences> _saveBuffer = new NautHashMap<String, UserPreferences>();
|
|
||||||
|
|
||||||
public boolean GiveItem;
|
public boolean GiveItem;
|
||||||
|
|
||||||
public PreferencesManager(JavaPlugin plugin, IncognitoManager incognito, CoreClientManager clientManager, DonationManager donationManager)
|
public PreferencesManager(JavaPlugin plugin, IncognitoManager incognito, CoreClientManager clientManager)
|
||||||
{
|
{
|
||||||
super("Preferences", plugin, clientManager);
|
super("Preferences", plugin);
|
||||||
|
|
||||||
_repository = new PreferencesRepository(plugin);
|
_repository = new PreferencesRepository(this);
|
||||||
_exclusiveShop = new ExclusivePreferencesShop(this, clientManager, donationManager);
|
_clientManager = clientManager;
|
||||||
_shop = new PreferencesShop(this, clientManager, donationManager, _exclusiveShop);
|
|
||||||
|
|
||||||
_incognitoManager = incognito;
|
_incognitoManager = incognito;
|
||||||
|
|
||||||
_exclusiveShop.setPreferencesShop(_shop);
|
|
||||||
|
|
||||||
addCommand(new PreferencesCommand(this));
|
addCommand(new PreferencesCommand(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@EventHandler
|
||||||
protected UserPreferences addPlayer(UUID uuid)
|
public void onQuit(PlayerQuitEvent event)
|
||||||
{
|
{
|
||||||
return new UserPreferences();
|
Player player = event.getPlayer();
|
||||||
}
|
int accountId = _clientManager.getAccountId(player);
|
||||||
|
_repository.saveUserPreferences(_preferences.remove(accountId));
|
||||||
public void savePreferences(Player caller)
|
|
||||||
{
|
|
||||||
_saveBuffer.put(caller.getUniqueId().toString(), Get(caller));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void givePlayerItem(PlayerJoinEvent event)
|
public void givePlayerItem(PlayerJoinEvent event)
|
||||||
{
|
{
|
||||||
handlePlayerJoin(event.getPlayer(), false);
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
int accountId = _clientManager.getAccountId(player);
|
||||||
|
|
||||||
|
_repository.loadClientInformationAsync(accountId);
|
||||||
|
|
||||||
|
handlePlayerJoin(player, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void storeBuffer(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.SLOW)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(_saveBuffer.isEmpty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<UserPreferences> buffer = Lists.newArrayList(_saveBuffer);
|
||||||
|
|
||||||
|
buffer.forEach(_repository::saveUserPreferences);
|
||||||
|
|
||||||
|
buffer.clear();
|
||||||
|
_saveBuffer.clear();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
|
public void playerInteract(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if (!GiveItem)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getItem() != null && event.getItem().getType() == Material.REDSTONE_COMPARATOR)
|
||||||
|
{
|
||||||
|
openMenu(event.getPlayer());
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserPreferences get(Player player)
|
||||||
|
{
|
||||||
|
UserPreferences preferences = _preferences.get(_clientManager.getAccountId(player));
|
||||||
|
if(preferences == null)
|
||||||
|
{
|
||||||
|
preferences = new UserPreferences(_clientManager.getAccountId(player));
|
||||||
|
_repository.loadClientInformation(_clientManager.getAccountId(player));
|
||||||
|
}
|
||||||
|
return preferences;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save(UserPreferences preferences)
|
||||||
|
{
|
||||||
|
_saveBuffer.add(preferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IncognitoManager getIncognitoManager()
|
||||||
|
{
|
||||||
|
return _incognitoManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CoreClientManager getClientManager()
|
||||||
|
{
|
||||||
|
return _clientManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openMenu(Player player)
|
||||||
|
{
|
||||||
|
new PreferenceMainMenu(this).open(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handlePlayerJoin(Player player, boolean force)
|
public void handlePlayerJoin(Player player, boolean force)
|
||||||
|
@ -112,63 +175,8 @@ public class PreferencesManager extends MiniDbClientPlugin<UserPreferences>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
public void set(int accountId, UserPreferences preferences)
|
||||||
public void storeBuffer(UpdateEvent event)
|
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.SLOW)
|
_preferences.put(accountId, preferences);
|
||||||
return;
|
|
||||||
|
|
||||||
final NautHashMap<String, UserPreferences> bufferCopy = new NautHashMap<String, UserPreferences>();
|
|
||||||
|
|
||||||
for (Entry<String, UserPreferences> entry : _saveBuffer.entrySet())
|
|
||||||
{
|
|
||||||
bufferCopy.put(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
_saveBuffer.clear();
|
|
||||||
|
|
||||||
getPlugin().getServer().getScheduler().runTaskAsynchronously(getPlugin(), new Runnable()
|
|
||||||
{
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
_repository.saveUserPreferences(bufferCopy);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
|
||||||
public void playerInteract(PlayerInteractEvent event)
|
|
||||||
{
|
|
||||||
if (!GiveItem)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.getItem() != null && event.getItem().getType() == Material.REDSTONE_COMPARATOR)
|
|
||||||
{
|
|
||||||
_shop.attemptShopOpen(event.getPlayer());
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openShop(Player caller)
|
|
||||||
{
|
|
||||||
_shop.attemptShopOpen(caller);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void processLoginResultSet(String playerName, UUID uuid, int accountId, ResultSet resultSet) throws SQLException
|
|
||||||
{
|
|
||||||
Set(uuid, _repository.loadClientInformation(resultSet));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getQuery(int accountId, String uuid, String name)
|
|
||||||
{
|
|
||||||
return "SELECT games, visibility, showChat, friendChat, privateMessaging, partyRequests, invisibility, forcefield, showMacReports, ignoreVelocity, pendingFriendRequests, friendDisplayInventoryUI, clanTips, hubMusic, disableAds, showUserReports FROM accountPreferences WHERE accountPreferences.uuid = '" + uuid + "' LIMIT 1;";
|
|
||||||
}
|
|
||||||
|
|
||||||
public IncognitoManager getIncognitoManager()
|
|
||||||
{
|
|
||||||
return _incognitoManager;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +1,31 @@
|
||||||
package mineplex.core.preferences;
|
package mineplex.core.preferences;
|
||||||
|
|
||||||
|
import mineplex.core.database.MinecraftRepository;
|
||||||
|
import mineplex.core.progression.util.SQLStatement;
|
||||||
|
import mineplex.serverdata.database.DBPool;
|
||||||
|
import mineplex.serverdata.database.column.ColumnInt;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import mineplex.core.database.MinecraftRepository;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.NautHashMap;
|
|
||||||
import mineplex.serverdata.database.DBPool;
|
|
||||||
import mineplex.serverdata.database.RepositoryBase;
|
|
||||||
import mineplex.serverdata.database.column.ColumnVarChar;
|
|
||||||
|
|
||||||
public class PreferencesRepository extends MinecraftRepository
|
public class PreferencesRepository extends MinecraftRepository
|
||||||
{
|
{
|
||||||
// private static String CREATE_ACCOUNT_TABLE = "CREATE TABLE IF NOT EXISTS
|
|
||||||
// accountPreferences (id INT NOT NULL AUTO_INCREMENT, uuid VARCHAR(256),
|
|
||||||
// games BOOL NOT NULL DEFAULT 1, visibility BOOL NOT NULL DEFAULT 1,
|
|
||||||
// showChat BOOL NOT NULL DEFAULT 1, friendChat BOOL NOT NULL DEFAULT 1,
|
|
||||||
// privateMessaging BOOL NOT NULL DEFAULT 1, partyRequests BOOL NOT NULL
|
|
||||||
// DEFAULT 0, invisibility BOOL NOT NULL DEFAULT 0, forcefield BOOL NOT NULL
|
|
||||||
// DEFAULT 0, showMacReports BOOL NOT NULL DEFAULT 0, ignoreVelocity BOOL
|
|
||||||
// NOT NULL DEFAULT 0, showUserReports BOOL NOT NULL DEFAULT 0, PRIMARY
|
|
||||||
// KEY (id), UNIQUE INDEX uuid_index (uuid));";
|
|
||||||
private static String INSERT_ACCOUNT = "INSERT INTO accountPreferences (uuid) VALUES (?) ON DUPLICATE KEY UPDATE uuid=uuid;";
|
|
||||||
private static String UPDATE_ACCOUNT_PREFERENCES = "UPDATE accountPreferences SET games = ?, visibility = ?, showChat = ?, friendChat = ?, privateMessaging = ?, partyRequests = ?, invisibility = ?, forcefield = ?, showMacReports = ?, ignoreVelocity = ?, pendingFriendRequests = ?, friendDisplayInventoryUI = ?, clanTips = ?, hubMusic = ?, disableAds = ?, showUserReports = ? WHERE uuid=?;";
|
|
||||||
|
|
||||||
public PreferencesRepository(JavaPlugin plugin)
|
private static String UPSERT_ACCOUNT = "INSERT INTO `preferences` VALUES(?, ?, ?) ON DUPLICATE KEY UPDATE `value`= ?";
|
||||||
|
private final String GET_PREFS = "SELECT * FROM `preferences` WHERE `accountId` = ?";
|
||||||
|
|
||||||
|
private final PreferencesManager _manager;
|
||||||
|
|
||||||
|
public PreferencesRepository(PreferencesManager plugin)
|
||||||
{
|
{
|
||||||
super(plugin, DBPool.getAccount());
|
super(plugin.getPlugin(), DBPool.getAccount());
|
||||||
|
_manager = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initialize()
|
protected void initialize()
|
||||||
{
|
{
|
||||||
// executeUpdate(CREATE_ACCOUNT_TABLE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,97 +33,108 @@ public class PreferencesRepository extends MinecraftRepository
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveUserPreferences(NautHashMap<String, UserPreferences> preferences)
|
/**
|
||||||
|
* Save a player's preferences in SQL
|
||||||
|
*
|
||||||
|
* @param preferences The player's specific {@code {@link UserPreferences}} instance
|
||||||
|
*/
|
||||||
|
public void saveUserPreferences(UserPreferences preferences)
|
||||||
{
|
{
|
||||||
try (Connection connection = getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_ACCOUNT_PREFERENCES);)
|
async(() ->
|
||||||
{
|
{
|
||||||
for (Entry<String, UserPreferences> entry : preferences.entrySet())
|
int accountId = preferences.getAccountId();
|
||||||
|
try (Connection connection = getConnection())
|
||||||
{
|
{
|
||||||
preparedStatement.setBoolean(1, entry.getValue().HubGames);
|
for (Preference preference : Preference.values())
|
||||||
preparedStatement.setBoolean(2, entry.getValue().ShowPlayers);
|
|
||||||
preparedStatement.setBoolean(3, entry.getValue().ShowChat);
|
|
||||||
preparedStatement.setBoolean(4, entry.getValue().FriendChat);
|
|
||||||
preparedStatement.setBoolean(5, entry.getValue().PrivateMessaging);
|
|
||||||
preparedStatement.setBoolean(6, entry.getValue().PartyRequests);
|
|
||||||
preparedStatement.setBoolean(7, entry.getValue().Invisibility);
|
|
||||||
preparedStatement.setBoolean(8, entry.getValue().HubForcefield);
|
|
||||||
preparedStatement.setBoolean(9, entry.getValue().ShowMacReports);
|
|
||||||
preparedStatement.setBoolean(10, entry.getValue().IgnoreVelocity);
|
|
||||||
preparedStatement.setBoolean(11, entry.getValue().PendingFriendRequests);
|
|
||||||
preparedStatement.setBoolean(12, entry.getValue().friendDisplayInventoryUI);
|
|
||||||
preparedStatement.setBoolean(13, entry.getValue().ClanTips);
|
|
||||||
preparedStatement.setBoolean(14, entry.getValue().HubMusic);
|
|
||||||
preparedStatement.setBoolean(15, entry.getValue().DisableAds);
|
|
||||||
preparedStatement.setBoolean(16, entry.getValue().ShowUserReports);
|
|
||||||
System.out.println(">> " + entry.getValue().ClanTips);
|
|
||||||
preparedStatement.setString(17, entry.getKey());
|
|
||||||
|
|
||||||
preparedStatement.addBatch();
|
|
||||||
}
|
|
||||||
|
|
||||||
int[] rowsAffected = preparedStatement.executeBatch();
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
for (Entry<String, UserPreferences> entry : preferences.entrySet())
|
|
||||||
{
|
|
||||||
if (rowsAffected[i] < 1)
|
|
||||||
{
|
{
|
||||||
executeUpdate(INSERT_ACCOUNT, new ColumnVarChar("uuid", 100, entry.getKey()));
|
int value = preferences.isActive(preference) ? 1 : 0;
|
||||||
|
int id = preference.getId();
|
||||||
preparedStatement.setBoolean(1, entry.getValue().HubGames);
|
PreparedStatement statement = new SQLStatement(UPSERT_ACCOUNT)
|
||||||
preparedStatement.setBoolean(2, entry.getValue().ShowPlayers);
|
.set(1, accountId).set(2, id).set(3, value).set(4, value)
|
||||||
preparedStatement.setBoolean(3, entry.getValue().ShowChat);
|
.prepare(connection);
|
||||||
preparedStatement.setBoolean(4, entry.getValue().FriendChat);
|
executeUpdate(statement);
|
||||||
preparedStatement.setBoolean(5, entry.getValue().PrivateMessaging);
|
System.out.println("Saved: " + accountId + " PID: " + id + ", VALUE: " + value);
|
||||||
preparedStatement.setBoolean(6, entry.getValue().PartyRequests);
|
|
||||||
preparedStatement.setBoolean(7, entry.getValue().Invisibility);
|
|
||||||
preparedStatement.setBoolean(8, entry.getValue().HubForcefield);
|
|
||||||
preparedStatement.setBoolean(9, entry.getValue().ShowMacReports);
|
|
||||||
preparedStatement.setBoolean(10, entry.getValue().IgnoreVelocity);
|
|
||||||
preparedStatement.setBoolean(11, entry.getValue().PendingFriendRequests);
|
|
||||||
preparedStatement.setBoolean(12, entry.getValue().friendDisplayInventoryUI);
|
|
||||||
preparedStatement.setBoolean(13, entry.getValue().ClanTips);
|
|
||||||
preparedStatement.setBoolean(14, entry.getValue().HubMusic);
|
|
||||||
preparedStatement.setBoolean(15, entry.getValue().DisableAds);
|
|
||||||
preparedStatement.setBoolean(16, entry.getValue().ShowUserReports);
|
|
||||||
System.out.println(">> " + entry.getValue().ClanTips);
|
|
||||||
preparedStatement.setString(17, entry.getKey());
|
|
||||||
preparedStatement.execute();
|
|
||||||
}
|
}
|
||||||
|
} catch (SQLException e)
|
||||||
i++;
|
{
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
catch (Exception exception)
|
|
||||||
{
|
|
||||||
exception.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserPreferences loadClientInformation(final ResultSet resultSet) throws SQLException
|
/**
|
||||||
|
* This method is run on the main thread, as we need this information to be laoded before a player joins
|
||||||
|
* It's also not the true main thread, as it's being called on AsyncPlayerPreLoginEvent
|
||||||
|
* If, for whatever reason, you need this information sometime differently, please call this async.
|
||||||
|
*
|
||||||
|
* @param accountId The player's accountID
|
||||||
|
* @return A loaded preference for the player
|
||||||
|
*/
|
||||||
|
public UserPreferences loadClientInformation(int accountId)
|
||||||
{
|
{
|
||||||
final UserPreferences preferences = new UserPreferences();
|
UserPreferences preferences = new UserPreferences(accountId);
|
||||||
|
|
||||||
if (resultSet.next())
|
System.out.println("Loading " + accountId + "'s preferences...");
|
||||||
|
|
||||||
|
executeQuery(GET_PREFS, resultSet ->
|
||||||
{
|
{
|
||||||
preferences.HubGames = resultSet.getBoolean(1);
|
while (resultSet.next())
|
||||||
preferences.ShowPlayers = resultSet.getBoolean(2);
|
{
|
||||||
preferences.ShowChat = resultSet.getBoolean(3);
|
Preference preference = Preference.get(resultSet.getInt("preference"));
|
||||||
preferences.FriendChat = resultSet.getBoolean(4);
|
boolean value = resultSet.getInt("value") == 1;
|
||||||
preferences.PrivateMessaging = resultSet.getBoolean(5);
|
preferences.set(preference, value);
|
||||||
preferences.PartyRequests = resultSet.getBoolean(6);
|
System.out.println(preference.name() + ": " + String.valueOf(value));
|
||||||
preferences.Invisibility = resultSet.getBoolean(7);
|
}
|
||||||
preferences.HubForcefield = resultSet.getBoolean(8);
|
}, new ColumnInt("accountId", accountId));
|
||||||
preferences.ShowMacReports = resultSet.getBoolean(9);
|
|
||||||
preferences.IgnoreVelocity = resultSet.getBoolean(10);
|
|
||||||
preferences.PendingFriendRequests = resultSet.getBoolean(11);
|
|
||||||
preferences.friendDisplayInventoryUI = resultSet.getBoolean(12);
|
|
||||||
preferences.ClanTips = resultSet.getBoolean(13);
|
|
||||||
preferences.HubMusic = resultSet.getBoolean(14);
|
|
||||||
preferences.DisableAds = resultSet.getBoolean(15);
|
|
||||||
preferences.ShowUserReports = resultSet.getBoolean(16);
|
|
||||||
}
|
|
||||||
|
|
||||||
return preferences;
|
return preferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load a clients data async and then update the local reference
|
||||||
|
*
|
||||||
|
* @param accountId The player's accountID
|
||||||
|
*/
|
||||||
|
public void loadClientInformationAsync(int accountId)
|
||||||
|
{
|
||||||
|
async(() -> {
|
||||||
|
UserPreferences preferences = loadClientInformation(accountId);
|
||||||
|
_manager.set(accountId, preferences);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void async(Runnable runnable)
|
||||||
|
{
|
||||||
|
getPlugin().getServer().getScheduler().runTaskAsynchronously(getPlugin(), runnable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal method for updating the table
|
||||||
|
*
|
||||||
|
* @param preparedStatement The statement to execute
|
||||||
|
* @return The amount of rows effected
|
||||||
|
*/
|
||||||
|
private int executeUpdate(PreparedStatement preparedStatement)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return preparedStatement.executeUpdate();
|
||||||
|
} catch (SQLException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
return -1;
|
||||||
|
} finally
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (preparedStatement != null)
|
||||||
|
{
|
||||||
|
preparedStatement.close();
|
||||||
|
}
|
||||||
|
} catch (SQLException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,49 @@
|
||||||
package mineplex.core.preferences;
|
package mineplex.core.preferences;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class UserPreferences
|
public class UserPreferences
|
||||||
{
|
{
|
||||||
public boolean FilterChat = true;
|
|
||||||
public boolean HubGames = true;
|
private int _accountId;
|
||||||
public boolean ShowPlayers = true;
|
private Map<Preference, Boolean> _preferences;
|
||||||
public boolean ShowChat = true;
|
|
||||||
public boolean FriendChat = true;
|
public UserPreferences(int accountId)
|
||||||
public boolean PrivateMessaging = true;
|
{
|
||||||
public boolean PartyRequests = true;
|
_accountId = accountId;
|
||||||
public boolean Invisibility = false;
|
_preferences = Maps.newHashMap();
|
||||||
public boolean HubForcefield = false;
|
}
|
||||||
public boolean ShowMacReports = false;
|
|
||||||
public boolean ShowUserReports = false;
|
public boolean isActive(Preference preference)
|
||||||
public boolean IgnoreVelocity = false;
|
{
|
||||||
public boolean PendingFriendRequests = true;
|
return _preferences.getOrDefault(preference, preference.getDefaultValue());
|
||||||
public boolean friendDisplayInventoryUI = true;
|
}
|
||||||
public boolean ClanTips = true;
|
|
||||||
public volatile boolean HubMusic = true;
|
public void toggle(Preference preference)
|
||||||
public boolean DisableAds = false;
|
{
|
||||||
|
boolean enabled = _preferences.getOrDefault(preference, preference.getDefaultValue());
|
||||||
|
_preferences.put(preference, !enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void enable(Preference preference)
|
||||||
|
{
|
||||||
|
_preferences.put(preference, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disable(Preference preference)
|
||||||
|
{
|
||||||
|
_preferences.put(preference, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set(Preference preference, boolean value)
|
||||||
|
{
|
||||||
|
_preferences.put(preference, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAccountId()
|
||||||
|
{
|
||||||
|
return _accountId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
package mineplex.core.preferences.command;
|
package mineplex.core.preferences.command;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.core.chat.Chat;
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class PreferencesCommand extends CommandBase<PreferencesManager>
|
public class PreferencesCommand extends CommandBase<PreferencesManager>
|
||||||
{
|
{
|
||||||
|
@ -18,6 +15,6 @@ public class PreferencesCommand extends CommandBase<PreferencesManager>
|
||||||
@Override
|
@Override
|
||||||
public void Execute(Player caller, String[] args)
|
public void Execute(Player caller, String[] args)
|
||||||
{
|
{
|
||||||
Plugin.openShop(caller);
|
Plugin.openMenu(caller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,241 +0,0 @@
|
||||||
package mineplex.core.preferences.ui;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.inventory.ClickType;
|
|
||||||
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
|
||||||
import mineplex.core.common.Rank;
|
|
||||||
import mineplex.core.common.util.C;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilUI;
|
|
||||||
import mineplex.core.donation.DonationManager;
|
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
|
||||||
import mineplex.core.preferences.UserPreferences;
|
|
||||||
import mineplex.core.shop.item.IButton;
|
|
||||||
import mineplex.core.shop.item.ShopItem;
|
|
||||||
import mineplex.core.shop.page.ShopPageBase;
|
|
||||||
|
|
||||||
public class ExclusivePreferencesPage extends ShopPageBase<PreferencesManager, ExclusivePreferencesShop>
|
|
||||||
{
|
|
||||||
private IButton _toggleHubInvisibility;
|
|
||||||
private IButton _toggleHubForcefield;
|
|
||||||
private IButton _toggleHubIgnoreVelocity;
|
|
||||||
private IButton _toggleMacReports;
|
|
||||||
private IButton _toggleUserReports;
|
|
||||||
|
|
||||||
private boolean _hubInvisibilityToggled;
|
|
||||||
private boolean _hubForcefieldToggled;
|
|
||||||
private boolean _hubIgnoreVelocityToggled;
|
|
||||||
private boolean _macReportsToggled;
|
|
||||||
private boolean _userReportsToggled;
|
|
||||||
|
|
||||||
private PreferencesShop _preferencesShop;
|
|
||||||
|
|
||||||
public ExclusivePreferencesPage(PreferencesManager plugin, ExclusivePreferencesShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, PreferencesShop preferencesShop)
|
|
||||||
{
|
|
||||||
super(plugin, shop, clientManager, donationManager, name, player, 54);
|
|
||||||
|
|
||||||
_preferencesShop = preferencesShop;
|
|
||||||
|
|
||||||
createButtons();
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createButtons()
|
|
||||||
{
|
|
||||||
_toggleHubInvisibility = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleHubInvisibility(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleHubForcefield = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleHubForcefield(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleMacReports = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleMacReports(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleUserReports = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleUserReports(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleHubIgnoreVelocity = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleHubIgnoreVelocity(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void playerClosed()
|
|
||||||
{
|
|
||||||
super.playerClosed();
|
|
||||||
if (preferencesChanged())
|
|
||||||
{
|
|
||||||
getPlugin().savePreferences(getPlayer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void buildPage()
|
|
||||||
{
|
|
||||||
clear();
|
|
||||||
|
|
||||||
UserPreferences userPreferences = getPlugin().Get(getPlayer());
|
|
||||||
Rank rank = getClientManager().Get(getPlayer()).GetRank();
|
|
||||||
|
|
||||||
addButton(45, new ShopItem(Material.REDSTONE_COMPARATOR, (byte) 0, C.cAqua + "/prefs", new String[] { C.cGold + "Return back to the regular preferences" }, 1, false, false), new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
player.closeInventory();
|
|
||||||
_preferencesShop.attemptShopOpen(player);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (rank.has(Rank.ADMIN) || rank == Rank.JNR_DEV)
|
|
||||||
{
|
|
||||||
int[] indices = UtilUI.getIndicesFor(5, 0, 2);
|
|
||||||
|
|
||||||
buildPreference(indices[0], Material.NETHER_STAR, "Hub Invisibility", userPreferences.Invisibility, _toggleHubInvisibility);
|
|
||||||
buildPreference(indices[1], Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
|
|
||||||
buildPreference(indices[2], Material.PAPER, "Global GWEN Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
|
||||||
buildPreference(indices[3], Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
|
||||||
buildPreference(indices[4], Material.BOOK, "User Reports", userPreferences.ShowUserReports, _toggleUserReports);
|
|
||||||
}
|
|
||||||
else if (rank.has(Rank.SNR_MODERATOR))
|
|
||||||
{
|
|
||||||
int[] indices = UtilUI.getIndicesFor(3, 0, 2);
|
|
||||||
|
|
||||||
buildPreference(indices[0], Material.PAPER, "Global GWEN Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
|
||||||
buildPreference(indices[1], Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
|
||||||
buildPreference(indices[2], Material.BOOK, "User Reports", userPreferences.ShowUserReports, _toggleUserReports);
|
|
||||||
}
|
|
||||||
else if (rank.has(Rank.MODERATOR))
|
|
||||||
{
|
|
||||||
int[] indices = UtilUI.getIndicesFor(3, 0, 2);
|
|
||||||
|
|
||||||
buildPreference(indices[0], Material.PAPER, "Global GWEN Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
|
||||||
buildPreference(indices[1], Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
|
||||||
buildPreference(indices[2], Material.BOOK, "User Reports", userPreferences.ShowUserReports, _toggleUserReports);
|
|
||||||
}
|
|
||||||
else if (rank.has(Rank.HELPER))
|
|
||||||
{
|
|
||||||
int[] indices = UtilUI.getIndicesFor(1, 0, 2);
|
|
||||||
|
|
||||||
buildPreference(indices[0], Material.PAPER, "Global GWEN Reports", userPreferences.ShowMacReports, _toggleMacReports);
|
|
||||||
}
|
|
||||||
else if (rank == Rank.YOUTUBE || rank == Rank.TWITCH)
|
|
||||||
{
|
|
||||||
int[] indices = UtilUI.getIndicesFor(3, 0, 2);
|
|
||||||
|
|
||||||
buildPreference(indices[0], Material.NETHER_STAR, "Hub Invisibility & Flight", userPreferences.Invisibility, _toggleHubInvisibility);
|
|
||||||
buildPreference(indices[1], Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
|
|
||||||
buildPreference(indices[2], Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
|
||||||
}
|
|
||||||
else if (rank == Rank.YOUTUBE_SMALL)
|
|
||||||
{
|
|
||||||
int[] indices = UtilUI.getIndicesFor(2, 0, 2);
|
|
||||||
buildPreference(indices[0], Material.SLIME_BALL, "Hub Forcefield", userPreferences.HubForcefield, _toggleHubForcefield);
|
|
||||||
buildPreference(indices[1], Material.SADDLE, "Hub Ignore Velocity", userPreferences.IgnoreVelocity, _toggleHubIgnoreVelocity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleHubForcefield(org.bukkit.entity.Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).HubForcefield = !getPlugin().Get(player).HubForcefield;
|
|
||||||
_hubForcefieldToggled = !_hubForcefieldToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleHubInvisibility(org.bukkit.entity.Player player)
|
|
||||||
{
|
|
||||||
if (getPlugin().getIncognitoManager() != null && getPlugin().getIncognitoManager().Get(player).Status && /* Hub Invis & Incognito stuck prevention */ !getPlugin().Get(player).Invisibility)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Incognito", "You are not allowed to use Hub Visibility whilst in incognito mode."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
getPlugin().Get(player).Invisibility = !getPlugin().Get(player).Invisibility;
|
|
||||||
|
|
||||||
// Dont save for Mod/SnrMod - prevents them just being invis 24/7
|
|
||||||
if (getPlugin().Get(player).Invisibility)
|
|
||||||
{
|
|
||||||
if (getClient().GetRank().has(Rank.ADMIN) || getClient().GetRank() == Rank.YOUTUBE || getClient().GetRank() == Rank.YOUTUBE_SMALL || getClient().GetRank() == Rank.TWITCH)
|
|
||||||
{
|
|
||||||
_hubInvisibilityToggled = !_hubInvisibilityToggled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
player.setFlying(false);
|
|
||||||
player.setAllowFlight(false);
|
|
||||||
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleMacReports(org.bukkit.entity.Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).ShowMacReports = !getPlugin().Get(player).ShowMacReports;
|
|
||||||
_macReportsToggled = !_macReportsToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleUserReports(org.bukkit.entity.Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).ShowUserReports = !getPlugin().Get(player).ShowUserReports;
|
|
||||||
_userReportsToggled = !_userReportsToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleHubIgnoreVelocity(org.bukkit.entity.Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).IgnoreVelocity = !getPlugin().Get(player).IgnoreVelocity;
|
|
||||||
_hubIgnoreVelocityToggled = !_hubIgnoreVelocityToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void buildPreference(int index, Material material, String name, boolean preference, IButton button)
|
|
||||||
{
|
|
||||||
buildPreference(index, material, (byte) 0, name, preference, button);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void buildPreference(int index, Material material, byte data, String name, boolean preference, IButton button)
|
|
||||||
{
|
|
||||||
String[] description = new String[] { "" + (preference ? ChatColor.GREEN + "Enabled" : ChatColor.RED + "Disabled"), ChatColor.RED + " ", ChatColor.RESET + "Click to " + (preference ? "Disable" : "Enable") };
|
|
||||||
|
|
||||||
addButton(index, new ShopItem(material, data, (preference ? ChatColor.GREEN : ChatColor.RED) + name, description, 1, false, false), button);
|
|
||||||
addButton(index + 9, new ShopItem(Material.INK_SACK, (preference ? (byte) 10 : (byte) 8), (preference ? ChatColor.GREEN : ChatColor.RED) + name, description, 1, false, false), button);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean preferencesChanged()
|
|
||||||
{
|
|
||||||
return _hubInvisibilityToggled || _macReportsToggled || _hubIgnoreVelocityToggled || _hubForcefieldToggled || _userReportsToggled;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package mineplex.core.preferences.ui;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
|
||||||
import mineplex.core.shop.ShopBase;
|
|
||||||
import mineplex.core.shop.page.ShopPageBase;
|
|
||||||
|
|
||||||
public class ExclusivePreferencesShop extends ShopBase<PreferencesManager>
|
|
||||||
{
|
|
||||||
private PreferencesShop _preferencesShop;
|
|
||||||
|
|
||||||
public ExclusivePreferencesShop(PreferencesManager plugin, CoreClientManager clientManager, mineplex.core.donation.DonationManager donationManager)
|
|
||||||
{
|
|
||||||
super(plugin, clientManager, donationManager, "Exclusive Preferences");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPreferencesShop(PreferencesShop preferencesShop)
|
|
||||||
{
|
|
||||||
_preferencesShop = preferencesShop;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ShopPageBase<PreferencesManager, ? extends ShopBase<PreferencesManager>> buildPagesFor(Player player)
|
|
||||||
{
|
|
||||||
return new ExclusivePreferencesPage(getPlugin(), this, getClientManager(), getDonationManager(), "Exclusive Preferences", player, _preferencesShop);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
package mineplex.core.preferences.ui;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import mineplex.core.common.Rank;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
|
import mineplex.core.preferences.PreferenceCategory;
|
||||||
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import mineplex.core.preferences.ui.buttons.CategoryButton;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PreferenceMainMenu extends Menu<PreferencesManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
private final int INV_SIZE_MAX = 54;
|
||||||
|
private final int INV_SIZE_MIN = 45;
|
||||||
|
|
||||||
|
private final int[] SLOTS_MAX = {
|
||||||
|
20, 22, 24, 30, 32
|
||||||
|
};
|
||||||
|
|
||||||
|
private final int[] SLOTS_MIN = {
|
||||||
|
19, 21, 23, 25
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
public PreferenceMainMenu(PreferencesManager plugin)
|
||||||
|
{
|
||||||
|
super("My Preferences", plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Button[] setUp(Player player)
|
||||||
|
{
|
||||||
|
Rank rank = getPlugin().getClientManager().Get(player).GetRank();
|
||||||
|
boolean exclusive = rank.has(Rank.MODERATOR) || rank == Rank.YOUTUBE_SMALL || rank == Rank.YOUTUBE || rank == Rank.TWITCH;
|
||||||
|
|
||||||
|
Button[] buttons = new Button[exclusive ? INV_SIZE_MAX : INV_SIZE_MIN];
|
||||||
|
|
||||||
|
List<PreferenceCategory> list = Lists.newArrayList(PreferenceCategory.values());
|
||||||
|
|
||||||
|
int[] slots = SLOTS_MAX;
|
||||||
|
|
||||||
|
if(!exclusive)
|
||||||
|
{
|
||||||
|
list.remove(PreferenceCategory.EXCLUSIVE);
|
||||||
|
slots = SLOTS_MIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
int size = list.size();
|
||||||
|
|
||||||
|
for(int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
int slot = slots[i];
|
||||||
|
PreferenceCategory category = list.get(i);
|
||||||
|
buttons[slot] = new CategoryButton(category, getPlugin());
|
||||||
|
}
|
||||||
|
|
||||||
|
return pane(buttons);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,265 +0,0 @@
|
||||||
package mineplex.core.preferences.ui;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.inventory.ClickType;
|
|
||||||
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
|
||||||
import mineplex.core.common.Rank;
|
|
||||||
import mineplex.core.common.util.C;
|
|
||||||
import mineplex.core.common.util.UtilUI;
|
|
||||||
import mineplex.core.donation.DonationManager;
|
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
|
||||||
import mineplex.core.preferences.UserPreferences;
|
|
||||||
import mineplex.core.shop.item.IButton;
|
|
||||||
import mineplex.core.shop.item.ShopItem;
|
|
||||||
import mineplex.core.shop.page.ShopPageBase;
|
|
||||||
|
|
||||||
public class PreferencesPage extends ShopPageBase<PreferencesManager, PreferencesShop>
|
|
||||||
{
|
|
||||||
private IButton _toggleHubGames;
|
|
||||||
private IButton _toggleHubPlayers;
|
|
||||||
private IButton _toggleChat;
|
|
||||||
private IButton _togglePrivateChat;
|
|
||||||
private IButton _toggleHubPartyRequests;
|
|
||||||
private IButton _togglePendingFriendRequests;
|
|
||||||
private IButton _toggleClanTips;
|
|
||||||
private IButton _toggleHubMusic;
|
|
||||||
private IButton _toggleDisableAds;
|
|
||||||
|
|
||||||
private boolean _hubGamesToggled;
|
|
||||||
private boolean _hubPlayersToggled;
|
|
||||||
private boolean _hubChatToggled;
|
|
||||||
private boolean _hubPrivateChatToggled;
|
|
||||||
private boolean _hubPartyRequestsToggled;
|
|
||||||
private boolean _pendingFriendRequestsToggled;
|
|
||||||
private boolean _clanTipsToggled;
|
|
||||||
private boolean _hubMusicToggled;
|
|
||||||
private boolean _disableAdsToggled;
|
|
||||||
|
|
||||||
private ExclusivePreferencesShop _exclusiveShop;
|
|
||||||
|
|
||||||
public PreferencesPage(PreferencesManager plugin, PreferencesShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, ExclusivePreferencesShop exclusiveShop)
|
|
||||||
{
|
|
||||||
super(plugin, shop, clientManager, donationManager, name, player, 54);
|
|
||||||
|
|
||||||
_exclusiveShop = exclusiveShop;
|
|
||||||
|
|
||||||
createButtons();
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createButtons()
|
|
||||||
{
|
|
||||||
_toggleHubGames = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleHubGames(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
_toggleClanTips = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleClanTips(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleHubPlayers = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleHubPlayers(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleChat = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleChat(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_togglePrivateChat = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
togglePrivateChat(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleHubPartyRequests = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleHubPartyRequests(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_togglePendingFriendRequests = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
togglePendingFriendRequests(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleHubMusic = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleHubMusic(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_toggleDisableAds = new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
toggleDisableAds(player);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleHubMusic(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).HubMusic = !getPlugin().Get(player).HubMusic;
|
|
||||||
_hubMusicToggled = !_hubMusicToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleDisableAds(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).DisableAds = !getPlugin().Get(player).DisableAds;
|
|
||||||
_disableAdsToggled = !_disableAdsToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void toggleHubPartyRequests(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).PartyRequests = !getPlugin().Get(player).PartyRequests;
|
|
||||||
_hubPartyRequestsToggled = !_hubPartyRequestsToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void togglePendingFriendRequests(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).PendingFriendRequests = !getPlugin().Get(player).PendingFriendRequests;
|
|
||||||
_pendingFriendRequestsToggled = !_pendingFriendRequestsToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void togglePrivateChat(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).PrivateMessaging = !getPlugin().Get(player).PrivateMessaging;
|
|
||||||
_hubPrivateChatToggled = !_hubPrivateChatToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleChat(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).ShowChat = !getPlugin().Get(player).ShowChat;
|
|
||||||
_hubChatToggled = !_hubChatToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleHubPlayers(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).ShowPlayers = !getPlugin().Get(player).ShowPlayers;
|
|
||||||
_hubPlayersToggled = !_hubPlayersToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleClanTips(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).ClanTips = !getPlugin().Get(player).ClanTips;
|
|
||||||
_clanTipsToggled = !_clanTipsToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleHubGames(Player player)
|
|
||||||
{
|
|
||||||
getPlugin().Get(player).HubGames = !getPlugin().Get(player).HubGames;
|
|
||||||
_hubGamesToggled = !_hubGamesToggled;
|
|
||||||
buildPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void playerClosed()
|
|
||||||
{
|
|
||||||
super.playerClosed();
|
|
||||||
|
|
||||||
System.out.println("Prefs have changed: " + preferencesChanged());
|
|
||||||
if (preferencesChanged())
|
|
||||||
{
|
|
||||||
getPlugin().savePreferences(getPlayer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void buildPage()
|
|
||||||
{
|
|
||||||
clear();
|
|
||||||
|
|
||||||
UserPreferences userPreferences = getPlugin().Get(getPlayer());
|
|
||||||
Rank rank = getClientManager().Get(getPlayer()).GetRank();
|
|
||||||
|
|
||||||
int amount = rank.has(Rank.ULTRA) ? 9 : 8;
|
|
||||||
int[] indices = UtilUI.getIndicesFor(amount, 0, 2);
|
|
||||||
|
|
||||||
buildPreference(indices[0], Material.FIREBALL, "Hub Player Stacker", userPreferences.HubGames, _toggleHubGames);
|
|
||||||
buildPreference(indices[1], Material.EYE_OF_ENDER, "Hub Player Visibility", userPreferences.ShowPlayers, _toggleHubPlayers);
|
|
||||||
buildPreference(indices[2], Material.PAPER, "Player Chat", userPreferences.ShowChat, _toggleChat);
|
|
||||||
buildPreference(indices[3], Material.EMPTY_MAP, "Private Messaging", userPreferences.PrivateMessaging, _togglePrivateChat);
|
|
||||||
buildPreference(indices[4], Material.SKULL_ITEM, (byte) 3, "Hub Party Requests", userPreferences.PartyRequests, _toggleHubPartyRequests);
|
|
||||||
buildPreference(indices[5], Material.RED_ROSE, "Show Pending Friend Requests", userPreferences.PendingFriendRequests, _togglePendingFriendRequests);
|
|
||||||
buildPreference(indices[6], Material.IRON_SWORD, "Show Clan Tips", userPreferences.ClanTips, _toggleClanTips);
|
|
||||||
buildPreference(indices[7], Material.NOTE_BLOCK, "Hub Music", userPreferences.HubMusic, _toggleHubMusic);
|
|
||||||
if (rank.has(Rank.ULTRA))
|
|
||||||
buildPreference(indices[8], Material.BARRIER, "Disable Ads", userPreferences.DisableAds, _toggleDisableAds);
|
|
||||||
|
|
||||||
if (rank.has(Rank.HELPER) || rank == Rank.YOUTUBE || rank == Rank.TWITCH || rank == Rank.YOUTUBE_SMALL)
|
|
||||||
{
|
|
||||||
addButton(53, new ShopItem(Material.DIAMOND, (byte) 0, C.cAqua + "Exclusive Preferences", new String[]{C.cGold + "This will open a page of preferences", C.cGold + "that are only available to you."}, 1, false, false), new IButton()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player, ClickType clickType)
|
|
||||||
{
|
|
||||||
player.closeInventory();
|
|
||||||
_exclusiveShop.attemptShopOpen(player);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void buildPreference(int index, Material material, String name, boolean preference, IButton button)
|
|
||||||
{
|
|
||||||
buildPreference(index, material, (byte) 0, name, preference, button);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void buildPreference(int index, Material material, byte data, String name, boolean preference, IButton button)
|
|
||||||
{
|
|
||||||
String[] description = new String[] { "" + (preference ? ChatColor.GREEN + "Enabled" : ChatColor.RED + "Disabled"), ChatColor.RED + " ", ChatColor.RESET + "Click to " + (preference ? "Disable" : "Enable") };
|
|
||||||
|
|
||||||
addButton(index, new ShopItem(material, data, (preference ? ChatColor.GREEN : ChatColor.RED) + name, description, 1, false, false), button);
|
|
||||||
addButton(index + 9, new ShopItem(Material.INK_SACK, (preference ? (byte) 10 : (byte) 8), (preference ? ChatColor.GREEN : ChatColor.RED) + name, description, 1, false, false), button);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean preferencesChanged()
|
|
||||||
{
|
|
||||||
return _hubGamesToggled || _hubPlayersToggled || _hubChatToggled || _hubPrivateChatToggled || _hubPartyRequestsToggled || _pendingFriendRequestsToggled || _clanTipsToggled || _hubMusicToggled || _disableAdsToggled;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
package mineplex.core.preferences.ui;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
|
||||||
import mineplex.core.shop.ShopBase;
|
|
||||||
import mineplex.core.shop.page.ShopPageBase;
|
|
||||||
|
|
||||||
public class PreferencesShop extends ShopBase<PreferencesManager>
|
|
||||||
{
|
|
||||||
private ExclusivePreferencesShop _exclusiveShop;
|
|
||||||
|
|
||||||
public PreferencesShop(PreferencesManager plugin, CoreClientManager clientManager, mineplex.core.donation.DonationManager donationManager, ExclusivePreferencesShop exclusiveShop)
|
|
||||||
{
|
|
||||||
super(plugin, clientManager, donationManager, "My Preferences");
|
|
||||||
_exclusiveShop = exclusiveShop;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ShopPageBase<PreferencesManager, ? extends ShopBase<PreferencesManager>> buildPagesFor(Player player)
|
|
||||||
{
|
|
||||||
return new PreferencesPage(getPlugin(), this, getClientManager(), getDonationManager(), "My Preferences", player, _exclusiveShop);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
package mineplex.core.preferences.ui.buttons;
|
||||||
|
|
||||||
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class BackButton extends Button<PreferencesManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
private static ItemStack ITEM = new ItemBuilder(Material.BED)
|
||||||
|
.setTitle(ChatColor.GRAY + "\u21FD Go Back")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public BackButton(PreferencesManager plugin)
|
||||||
|
{
|
||||||
|
super(ITEM, plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
Menu.get(player.getUniqueId()).setUseClose(false);
|
||||||
|
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
getPlugin().openMenu(player);
|
||||||
|
|
||||||
|
getPlugin().save(getPlugin().get(player));
|
||||||
|
|
||||||
|
Menu.get(player.getUniqueId()).setUseClose(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package mineplex.core.preferences.ui.buttons;
|
||||||
|
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.preferences.PreferenceCategory;
|
||||||
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import mineplex.core.preferences.ui.menus.PreferenceMenu;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class CategoryButton extends Button<PreferencesManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
private PreferenceCategory _category;
|
||||||
|
|
||||||
|
public CategoryButton(PreferenceCategory category, PreferencesManager plugin)
|
||||||
|
{
|
||||||
|
super(category.getItem(), plugin);
|
||||||
|
_category = category;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
new PreferenceMenu(_category, getPlugin()).open(player);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
package mineplex.core.preferences.ui.buttons;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import mineplex.core.preferences.UserPreferences;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PreferenceButton extends Button<PreferencesManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
protected final Preference _preference;
|
||||||
|
protected final UserPreferences _user;
|
||||||
|
private final ItemStack _disabled;
|
||||||
|
private final ItemStack _enabled;
|
||||||
|
|
||||||
|
public PreferenceButton(UserPreferences user, Preference preference, PreferencesManager plugin)
|
||||||
|
{
|
||||||
|
super(null, plugin);
|
||||||
|
_preference = preference;
|
||||||
|
_user = user;
|
||||||
|
|
||||||
|
Material icon = preference.getIcon();
|
||||||
|
boolean head = icon == Material.SKULL_ITEM;
|
||||||
|
|
||||||
|
_disabled = new ItemBuilder(preference.getIcon())
|
||||||
|
.setTitle(C.cRed + preference.getName())
|
||||||
|
.setLore(C.cRed + "Disabled", " " , C.cWhite + "Click to Enable")
|
||||||
|
.setData(head ? (short) 3 : 0)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
_enabled = new ItemBuilder(preference.getIcon())
|
||||||
|
.setTitle(C.cGreen + preference.getName())
|
||||||
|
.setLore(C.cGreen + "Enabled", " " , C.cWhite + "Click to Disable")
|
||||||
|
.setData(head ? (short) 3 : 0)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
_user.toggle(_preference);
|
||||||
|
Menu.get(player.getUniqueId()).resetAndUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStack()
|
||||||
|
{
|
||||||
|
return _user.isActive(_preference) ? _enabled : _disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package mineplex.core.preferences.ui.buttons;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import mineplex.core.preferences.UserPreferences;
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PreferenceDyeButton extends PreferenceButton
|
||||||
|
{
|
||||||
|
|
||||||
|
private final ItemStack _disabledDye;
|
||||||
|
private final ItemStack _enabledDye;
|
||||||
|
|
||||||
|
public PreferenceDyeButton(UserPreferences user, Preference preference, PreferencesManager plugin)
|
||||||
|
{
|
||||||
|
super(user, preference, plugin);
|
||||||
|
|
||||||
|
_disabledDye = new ItemBuilder(Material.INK_SACK)
|
||||||
|
.setData(DyeColor.GRAY.getDyeData())
|
||||||
|
.setTitle(C.cRed + preference.getName())
|
||||||
|
.setLore(C.cRed + "Disabled", " " , C.cWhite + "Click to Enable")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
_enabledDye = new ItemBuilder(Material.INK_SACK)
|
||||||
|
.setData(DyeColor.LIME.getDyeData())
|
||||||
|
.setTitle(C.cGreen + preference.getName())
|
||||||
|
.setLore(C.cGreen + "Enabled", " " , C.cWhite + "Click to Disable")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStack()
|
||||||
|
{
|
||||||
|
return _user.isActive(_preference) ? _enabledDye : _disabledDye;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
package mineplex.core.preferences.ui.menus;
|
||||||
|
|
||||||
|
import mineplex.core.common.Rank;
|
||||||
|
import mineplex.core.common.util.UtilUI;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
|
import mineplex.core.preferences.PreferenceCategory;
|
||||||
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import mineplex.core.preferences.UserPreferences;
|
||||||
|
import mineplex.core.preferences.ui.buttons.BackButton;
|
||||||
|
import mineplex.core.preferences.ui.buttons.PreferenceButton;
|
||||||
|
import mineplex.core.preferences.ui.buttons.PreferenceDyeButton;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PreferenceMenu extends Menu<PreferencesManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
private final int INV_SIZE = 54;
|
||||||
|
|
||||||
|
private final PreferenceCategory _category;
|
||||||
|
|
||||||
|
public PreferenceMenu(PreferenceCategory category, PreferencesManager plugin)
|
||||||
|
{
|
||||||
|
super(category.getName(), plugin);
|
||||||
|
_category = category;
|
||||||
|
setUseClose(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Button[] setUp(Player player)
|
||||||
|
{
|
||||||
|
Button[] buttons = new Button[INV_SIZE];
|
||||||
|
|
||||||
|
List<Preference> preferences = Preference.getByCategory(_category);
|
||||||
|
Rank rank = getPlugin().getClientManager().Get(player).GetRank();
|
||||||
|
UserPreferences user = getPlugin().get(player);
|
||||||
|
|
||||||
|
if (_category == PreferenceCategory.EXCLUSIVE && !rank.has(Rank.ADMIN) && rank != Rank.JNR_DEV)
|
||||||
|
{
|
||||||
|
if (rank.has(Rank.MODERATOR) && !rank.has(Rank.ADMIN))
|
||||||
|
{
|
||||||
|
preferences.remove(Preference.INVISIBILITY);
|
||||||
|
preferences.remove(Preference.FORCE_FIELD);
|
||||||
|
}
|
||||||
|
else if (rank == Rank.YOUTUBE || rank == Rank.TWITCH)
|
||||||
|
{
|
||||||
|
preferences.remove(Preference.SHOW_MAC_REPORTS);
|
||||||
|
preferences.remove(Preference.SHOW_USER_REPORTS);
|
||||||
|
}
|
||||||
|
else if (rank == Rank.YOUTUBE_SMALL)
|
||||||
|
{
|
||||||
|
preferences.remove(Preference.SHOW_MAC_REPORTS);
|
||||||
|
preferences.remove(Preference.SHOW_USER_REPORTS);
|
||||||
|
preferences.remove(Preference.INVISIBILITY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int[] slots = UtilUI.getIndicesFor(preferences.size(), 1, 4, 1);
|
||||||
|
|
||||||
|
for(int i = 0; i < preferences.size(); i++)
|
||||||
|
{
|
||||||
|
int slot = slots[i];
|
||||||
|
Preference preference = preferences.get(i);
|
||||||
|
buttons[slot] = new PreferenceButton(user, preference, getPlugin());
|
||||||
|
buttons[slot + 9] = new PreferenceDyeButton(user, preference, getPlugin());
|
||||||
|
}
|
||||||
|
|
||||||
|
buttons[0] = new BackButton(getPlugin());
|
||||||
|
|
||||||
|
return pane(buttons);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClose(Player player)
|
||||||
|
{
|
||||||
|
remove(player.getUniqueId());
|
||||||
|
getPlugin().save(getPlugin().get(player));
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,6 @@ import mineplex.core.MiniClientPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.progression.data.PlayerKit;
|
import mineplex.core.progression.data.PlayerKit;
|
||||||
import mineplex.core.progression.data.PlayerKitDataManager;
|
import mineplex.core.progression.data.PlayerKitDataManager;
|
||||||
import mineplex.core.progression.gui.MenuListener;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -25,7 +24,6 @@ public class KitProgressionManager extends MiniClientPlugin<PlayerKit>
|
||||||
_dataManager = new PlayerKitDataManager();
|
_dataManager = new PlayerKitDataManager();
|
||||||
_kitProgressionRepository = new KitProgressionRepository(this);
|
_kitProgressionRepository = new KitProgressionRepository(this);
|
||||||
_coreClientManager = clientManager;
|
_coreClientManager = clientManager;
|
||||||
getPlugin().getServer().getPluginManager().registerEvents(new MenuListener(), getPlugin());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreClientManager getClientManager()
|
public CoreClientManager getClientManager()
|
||||||
|
|
|
@ -10,6 +10,7 @@ import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,7 +54,17 @@ public interface ProgressiveKit
|
||||||
*
|
*
|
||||||
* @return The map of upgrades and their details
|
* @return The map of upgrades and their details
|
||||||
*/
|
*/
|
||||||
List<KitAbilityDetail> getAbilityDetails();
|
Map<Integer, List<KitAbilityDetail>> getAbilityDetails();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether or not the kit UI is displayed with "Coming Soon" or actual upgrade details.
|
||||||
|
*
|
||||||
|
* @return <code>true</code> if the menu should populate from {@code getAbilityDetails}
|
||||||
|
*/
|
||||||
|
default boolean showUpgrades()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the current level of this kit
|
* Retrieve the current level of this kit
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
package mineplex.core.progression.gui;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An abstract class for managing buttons inside of menus
|
|
||||||
*/
|
|
||||||
public abstract class Button
|
|
||||||
{
|
|
||||||
|
|
||||||
private ItemStack _item;
|
|
||||||
|
|
||||||
public Button(ItemStack item)
|
|
||||||
{
|
|
||||||
this._item = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The method called when a players clicks the slot
|
|
||||||
*
|
|
||||||
* @param player The player who clicked
|
|
||||||
*/
|
|
||||||
public abstract void onClick(Player player);
|
|
||||||
|
|
||||||
public ItemStack getItemStack()
|
|
||||||
{
|
|
||||||
return _item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItemStack(ItemStack item)
|
|
||||||
{
|
|
||||||
this._item = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,191 +0,0 @@
|
||||||
package mineplex.core.progression.gui;
|
|
||||||
|
|
||||||
import mineplex.core.progression.gui.buttons.misc.IconButton;
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.InventoryView;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class to manage dynamic creation of GUI's
|
|
||||||
*/
|
|
||||||
public abstract class Menu
|
|
||||||
{
|
|
||||||
|
|
||||||
protected static final Button[] EMPTY = new Button[45];
|
|
||||||
protected static Map<UUID, Menu> MENUS = new HashMap<>();
|
|
||||||
private String _name;
|
|
||||||
protected Button[] _buttons;
|
|
||||||
|
|
||||||
public Menu(String name)
|
|
||||||
{
|
|
||||||
_name = name;
|
|
||||||
_buttons = EMPTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Menu get(UUID name)
|
|
||||||
{
|
|
||||||
return MENUS.get(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create an icon (no click action)
|
|
||||||
*
|
|
||||||
* @param item The itemstack ti display
|
|
||||||
* @return The created button
|
|
||||||
*/
|
|
||||||
protected Button create(ItemStack item)
|
|
||||||
{
|
|
||||||
return new IconButton(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return ChatColor.translateAlternateColorCodes('&', _name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Open and setup the inventory for the player to view
|
|
||||||
* Store a reference to it inside a map for retrieving later
|
|
||||||
*
|
|
||||||
* @param player The player who we wish to show the GUI to
|
|
||||||
*/
|
|
||||||
public void open(Player player)
|
|
||||||
{
|
|
||||||
setButtons(setUp());
|
|
||||||
|
|
||||||
if (MENUS.get(player.getUniqueId()) != null)
|
|
||||||
{
|
|
||||||
MENUS.remove(player.getUniqueId());
|
|
||||||
}
|
|
||||||
|
|
||||||
MENUS.put(player.getUniqueId(), this);
|
|
||||||
|
|
||||||
int size = (_buttons.length + 8) / 9 * 9;
|
|
||||||
Inventory inventory = Bukkit.createInventory(player, size, getName());
|
|
||||||
|
|
||||||
for (int i = 0; i < _buttons.length; i++)
|
|
||||||
{
|
|
||||||
if (_buttons[i] == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack item = _buttons[i].getItemStack();
|
|
||||||
|
|
||||||
inventory.setItem(i, item);
|
|
||||||
}
|
|
||||||
player.openInventory(inventory);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set up the GUI with buttons
|
|
||||||
*
|
|
||||||
* @return The setup button array
|
|
||||||
*/
|
|
||||||
protected abstract Button[] setUp();
|
|
||||||
|
|
||||||
public Button[] getButtons()
|
|
||||||
{
|
|
||||||
return _buttons;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setButtons(Button[] buttons)
|
|
||||||
{
|
|
||||||
_buttons = buttons;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the button based off the slot
|
|
||||||
*
|
|
||||||
* @param slot The slot in the inventory
|
|
||||||
* @return The button corresponding to that slot
|
|
||||||
*/
|
|
||||||
public Button getButton(int slot)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return _buttons[slot];
|
|
||||||
} catch (ArrayIndexOutOfBoundsException e)
|
|
||||||
{
|
|
||||||
//There isn't a button there, so no need to throw an error
|
|
||||||
//e.printStackTrace();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace a button, or create a new button dynamically
|
|
||||||
* Update the players GUI
|
|
||||||
*
|
|
||||||
* @param slot The slot to set the new button
|
|
||||||
* @param button The reference to the button
|
|
||||||
* @param player The player whose GUI we'll be updating
|
|
||||||
*/
|
|
||||||
public void setButton(int slot, Button button, Player player)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_buttons[slot] = button;
|
|
||||||
} catch (ArrayIndexOutOfBoundsException ignored)
|
|
||||||
{
|
|
||||||
ignored.printStackTrace();
|
|
||||||
}
|
|
||||||
update(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Refresh the players view, allows to change what the player sees, without opening and closing the GUI
|
|
||||||
*
|
|
||||||
* @param player The player whose view you wish to update
|
|
||||||
*/
|
|
||||||
public void update(Player player)
|
|
||||||
{
|
|
||||||
InventoryView view = player.getOpenInventory();
|
|
||||||
|
|
||||||
if (view == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!view.getTitle().equalsIgnoreCase(getName()))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Inventory inventory = view.getTopInventory();
|
|
||||||
for (int i = 0; i < _buttons.length; i++)
|
|
||||||
{
|
|
||||||
if (_buttons[i] == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack item = _buttons[i].getItemStack();
|
|
||||||
|
|
||||||
inventory.setItem(i, item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTitle(String title)
|
|
||||||
{
|
|
||||||
_name = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onClose(Player player)
|
|
||||||
{
|
|
||||||
MENUS.remove(player.getUniqueId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Menu remove(UUID uniqueId)
|
|
||||||
{
|
|
||||||
return MENUS.remove(uniqueId);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
package mineplex.core.progression.gui;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.Event;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Listener for the Menu system
|
|
||||||
*/
|
|
||||||
public class MenuListener implements Listener
|
|
||||||
{
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onClick(InventoryClickEvent event)
|
|
||||||
{
|
|
||||||
String name = event.getInventory().getName();
|
|
||||||
Player player = (Player) event.getWhoClicked();
|
|
||||||
Menu gui = Menu.get(player.getUniqueId());
|
|
||||||
|
|
||||||
if (gui == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!gui.getName().equalsIgnoreCase(name))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Button button = gui.getButton(event.getRawSlot());
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
event.setResult(Event.Result.DENY);
|
|
||||||
|
|
||||||
if (button == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.onClick(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -2,8 +2,8 @@ package mineplex.core.progression.gui.buttons;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.IconButton;
|
||||||
import mineplex.core.progression.data.KitAbilityDetail;
|
import mineplex.core.progression.data.KitAbilityDetail;
|
||||||
import mineplex.core.progression.gui.buttons.misc.IconButton;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
|
@ -1,21 +1,27 @@
|
||||||
package mineplex.core.progression.gui.buttons;
|
package mineplex.core.progression.gui.buttons;
|
||||||
|
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.progression.KitProgressionManager;
|
||||||
import mineplex.core.progression.ProgressiveKit;
|
import mineplex.core.progression.ProgressiveKit;
|
||||||
import mineplex.core.progression.gui.Button;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Similar to KitMenu, this helps with organizing buttons related to kits
|
* Similar to KitMenu, this helps with organizing buttons related to kits
|
||||||
* Since they all share common features.
|
* Since they all share common features.
|
||||||
*/
|
*/
|
||||||
public abstract class KitButton extends Button
|
public abstract class KitButton extends Button<KitProgressionManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private ProgressiveKit _kit;
|
private ProgressiveKit _kit;
|
||||||
|
|
||||||
public KitButton(ProgressiveKit kit, ItemStack itemStack)
|
public KitButton(ProgressiveKit kit, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
super(itemStack);
|
this(kit, itemStack, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public KitButton(ProgressiveKit kit, ItemStack itemStack, KitProgressionManager plugin)
|
||||||
|
{
|
||||||
|
super(itemStack, plugin);
|
||||||
_kit = kit;
|
_kit = kit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.progression.ProgressiveKit;
|
import mineplex.core.progression.ProgressiveKit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -68,7 +69,7 @@ public class KitIconButton extends KitButton
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(Player player)
|
public void onClick(Player player, ClickType clickType)
|
||||||
{
|
{
|
||||||
getKit().onSelected(player.getUniqueId());
|
getKit().onSelected(player.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import net.md_5.bungee.api.ChatColor;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,7 +38,7 @@ public class KitPermanentDefaultButton extends KitButton
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(Player player)
|
public void onClick(Player player, ClickType clickType)
|
||||||
{
|
{
|
||||||
getKit().onSelected(player.getUniqueId());
|
getKit().onSelected(player.getUniqueId());
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import net.md_5.bungee.api.ChatColor;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This manages selecting of the kit for the current game.
|
* This manages selecting of the kit for the current game.
|
||||||
|
@ -31,7 +32,7 @@ public class KitSelectButton extends KitButton
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(Player player)
|
public void onClick(Player player, ClickType clickType)
|
||||||
{
|
{
|
||||||
getKit().onSelected(player.getUniqueId());
|
getKit().onSelected(player.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
package mineplex.core.progression.gui.buttons;
|
package mineplex.core.progression.gui.buttons;
|
||||||
|
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
import mineplex.core.progression.ProgressiveKit;
|
import mineplex.core.progression.ProgressiveKit;
|
||||||
import mineplex.core.progression.gui.Menu;
|
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -26,7 +27,7 @@ public class KitUpgradeButton extends KitButton
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(Player player)
|
public void onClick(Player player, ClickType clickType)
|
||||||
{
|
{
|
||||||
UUID uuid = player.getUniqueId();
|
UUID uuid = player.getUniqueId();
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package mineplex.core.progression.gui.buttons;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.progression.KitProgressionManager;
|
||||||
import mineplex.core.progression.ProgressiveKit;
|
import mineplex.core.progression.ProgressiveKit;
|
||||||
import mineplex.core.progression.gui.guis.KitInformationTrackerMenu;
|
import mineplex.core.progression.gui.guis.KitInformationTrackerMenu;
|
||||||
import mineplex.core.progression.gui.guis.KitMenu;
|
import mineplex.core.progression.gui.guis.KitMenu;
|
||||||
|
@ -9,12 +10,11 @@ import mineplex.core.progression.math.Calculations;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
import static mineplex.core.common.util.UtilServer.getPlugin;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the button for upgrades. It'll flash when one is available
|
* This is the button for upgrades. It'll flash when one is available
|
||||||
* Displays information regarding upgrades on hover
|
* Displays information regarding upgrades on hover
|
||||||
|
@ -31,9 +31,9 @@ public class KitUpgradeMenuButton extends KitButton
|
||||||
private boolean _flash;
|
private boolean _flash;
|
||||||
private BukkitTask _task;
|
private BukkitTask _task;
|
||||||
|
|
||||||
public KitUpgradeMenuButton(ProgressiveKit kit, Player player)
|
public KitUpgradeMenuButton(ProgressiveKit kit, Player player, KitProgressionManager plugin)
|
||||||
{
|
{
|
||||||
super(kit, null);
|
super(kit, null, plugin);
|
||||||
|
|
||||||
_item = ITEM_STACK;
|
_item = ITEM_STACK;
|
||||||
//The current upgrade level out of 5 for this kit
|
//The current upgrade level out of 5 for this kit
|
||||||
|
@ -50,13 +50,18 @@ public class KitUpgradeMenuButton extends KitButton
|
||||||
//This ONLY flashes if their next upgrade level isn't their same one.
|
//This ONLY flashes if their next upgrade level isn't their same one.
|
||||||
_flash = Calculations.isUpgradeLevelEligible(level) && (nextUpgradeLevel > upgradeLevel);
|
_flash = Calculations.isUpgradeLevelEligible(level) && (nextUpgradeLevel > upgradeLevel);
|
||||||
|
|
||||||
|
ChatColor color = Calculations.getColor(level, nextUpgradeLevelPlayer);
|
||||||
|
|
||||||
|
if(kit.showUpgrades())
|
||||||
|
{
|
||||||
|
ItemBuilder builder = lore(new ItemBuilder(Material.ENCHANTMENT_TABLE), upgradeLevel, color, diff);
|
||||||
|
_item = builder.build();
|
||||||
|
}
|
||||||
|
|
||||||
if (_flash)
|
if (_flash)
|
||||||
{
|
{
|
||||||
flash();
|
flash();
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatColor color = Calculations.getColor(level, nextUpgradeLevelPlayer);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -73,7 +78,7 @@ public class KitUpgradeMenuButton extends KitButton
|
||||||
|
|
||||||
private void flash()
|
private void flash()
|
||||||
{
|
{
|
||||||
this._task = new BukkitRunnable()
|
_task = new BukkitRunnable()
|
||||||
{
|
{
|
||||||
|
|
||||||
private ItemStack itemClone = ITEM_STACK.clone();
|
private ItemStack itemClone = ITEM_STACK.clone();
|
||||||
|
@ -103,11 +108,11 @@ public class KitUpgradeMenuButton extends KitButton
|
||||||
|
|
||||||
resetItem = true;
|
resetItem = true;
|
||||||
}
|
}
|
||||||
}.runTaskTimer(getPlugin(), 0L, 10L);
|
}.runTaskTimer(getPlugin().getPlugin(), 0L, 10L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(Player player)
|
public void onClick(Player player, ClickType clickType)
|
||||||
{
|
{
|
||||||
this._flash = false;
|
this._flash = false;
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import mineplex.core.progression.math.Calculations;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -87,7 +88,7 @@ public class KitXPButton extends KitButton
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(Player player)
|
public void onClick(Player player, ClickType clickType)
|
||||||
{
|
{
|
||||||
KitMenu menu = new KitInformationTrackerMenu(getKit());
|
KitMenu menu = new KitInformationTrackerMenu(getKit());
|
||||||
menu.open(player);
|
menu.open(player);
|
||||||
|
|
|
@ -1,17 +1,19 @@
|
||||||
package mineplex.core.progression.gui.buttons.misc;
|
package mineplex.core.progression.gui.buttons.misc;
|
||||||
|
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.progression.gui.Button;
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.progression.KitProgressionManager;
|
||||||
import mineplex.core.progression.gui.guis.KitMenu;
|
import mineplex.core.progression.gui.guis.KitMenu;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This button take you back to the specified menu
|
* This button take you back to the specified menu
|
||||||
*/
|
*/
|
||||||
public class BackButton extends Button
|
public class BackButton extends Button<KitProgressionManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
private static ItemStack ITEM = new ItemBuilder(Material.BED)
|
private static ItemStack ITEM = new ItemBuilder(Material.BED)
|
||||||
|
@ -22,7 +24,7 @@ public class BackButton extends Button
|
||||||
|
|
||||||
public BackButton(KitMenu toMenu)
|
public BackButton(KitMenu toMenu)
|
||||||
{
|
{
|
||||||
super(ITEM);
|
super(ITEM, null);
|
||||||
_toMenu = toMenu;
|
_toMenu = toMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +35,7 @@ public class BackButton extends Button
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(Player player)
|
public void onClick(Player player, ClickType clickType)
|
||||||
{
|
{
|
||||||
_toMenu.open(player);
|
_toMenu.open(player);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
package mineplex.core.progression.gui.buttons.misc;
|
|
||||||
|
|
||||||
import mineplex.core.progression.gui.Button;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A button designed for purely cosmetic reasons, but has no impact when clicked.
|
|
||||||
*/
|
|
||||||
public class IconButton extends Button
|
|
||||||
{
|
|
||||||
|
|
||||||
public IconButton(ItemStack item)
|
|
||||||
{
|
|
||||||
super(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(Player player)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +1,19 @@
|
||||||
package mineplex.core.progression.gui.guis;
|
package mineplex.core.progression.gui.guis;
|
||||||
|
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.IconButton;
|
||||||
import mineplex.core.progression.ProgressiveKit;
|
import mineplex.core.progression.ProgressiveKit;
|
||||||
import mineplex.core.progression.gui.Button;
|
import mineplex.core.progression.data.KitAbilityDetail;
|
||||||
import mineplex.core.progression.gui.buttons.*;
|
import mineplex.core.progression.gui.buttons.KitAbilityButton;
|
||||||
import mineplex.core.progression.gui.buttons.misc.IconButton;
|
import mineplex.core.progression.gui.buttons.KitIconButton;
|
||||||
|
import mineplex.core.progression.gui.buttons.KitPermanentDefaultButton;
|
||||||
|
import mineplex.core.progression.gui.buttons.KitSelectButton;
|
||||||
|
import mineplex.core.progression.gui.buttons.KitUpgradeMenuButton;
|
||||||
|
import mineplex.core.progression.gui.buttons.KitXPButton;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the main menu a player sees when we selects an NPC Kit
|
* This is the main menu a player sees when we selects an NPC Kit
|
||||||
* Displays the most important information about this kit
|
* Displays the most important information about this kit
|
||||||
|
@ -31,7 +39,7 @@ public class KitDisplayMenu extends KitMenu
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Button[] setup(Player player)
|
public Button[] setUp(Player player)
|
||||||
{
|
{
|
||||||
Button[] buttons = new Button[51];
|
Button[] buttons = new Button[51];
|
||||||
|
|
||||||
|
@ -39,7 +47,7 @@ public class KitDisplayMenu extends KitMenu
|
||||||
|
|
||||||
setUpIcon(buttons, player);
|
setUpIcon(buttons, player);
|
||||||
|
|
||||||
setUpDetails(buttons);
|
setUpDetails(buttons, player);
|
||||||
|
|
||||||
setUpNextMenuButtons(buttons, player);
|
setUpNextMenuButtons(buttons, player);
|
||||||
|
|
||||||
|
@ -55,7 +63,7 @@ public class KitDisplayMenu extends KitMenu
|
||||||
private void setUpNextMenuButtons(Button[] buttons, Player player)
|
private void setUpNextMenuButtons(Button[] buttons, Player player)
|
||||||
{
|
{
|
||||||
buttons[48] = new KitXPButton(getKit(), player);
|
buttons[48] = new KitXPButton(getKit(), player);
|
||||||
buttons[50] = new KitUpgradeMenuButton(getKit(), player);
|
buttons[50] = new KitUpgradeMenuButton(getKit(), player, getPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,8 +82,19 @@ public class KitDisplayMenu extends KitMenu
|
||||||
*
|
*
|
||||||
* @param buttons The array of buttons we're modifying
|
* @param buttons The array of buttons we're modifying
|
||||||
*/
|
*/
|
||||||
private void setUpDetails(Button[] buttons)
|
private void setUpDetails(Button[] buttons, Player player)
|
||||||
{
|
{
|
||||||
|
if(getKit().showUpgrades())
|
||||||
|
{
|
||||||
|
List<KitAbilityDetail> details = getKit().getAbilityDetails().get(getKit().getUpgradeLevel(player.getUniqueId()));
|
||||||
|
int index = 0;
|
||||||
|
for(int i : UPGRADE_SLOTS)
|
||||||
|
{
|
||||||
|
buttons[i] = new KitAbilityButton(details.get(index++));
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i : UPGRADE_SLOTS)
|
for (int i : UPGRADE_SLOTS)
|
||||||
{
|
{
|
||||||
buttons[i] = new IconButton(COMING_SOON);
|
buttons[i] = new IconButton(COMING_SOON);
|
||||||
|
|
|
@ -3,10 +3,12 @@ package mineplex.core.progression.gui.guis;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Button;
|
||||||
|
import mineplex.core.menu.IconButton;
|
||||||
import mineplex.core.progression.ProgressiveKit;
|
import mineplex.core.progression.ProgressiveKit;
|
||||||
import mineplex.core.progression.gui.Button;
|
import mineplex.core.progression.data.KitAbilityDetail;
|
||||||
|
import mineplex.core.progression.gui.buttons.KitUpgradeButton;
|
||||||
import mineplex.core.progression.gui.buttons.misc.BackButton;
|
import mineplex.core.progression.gui.buttons.misc.BackButton;
|
||||||
import mineplex.core.progression.gui.buttons.misc.IconButton;
|
|
||||||
import mineplex.core.progression.math.Calculations;
|
import mineplex.core.progression.math.Calculations;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
|
@ -15,6 +17,7 @@ import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,7 +51,7 @@ public class KitInformationTrackerMenu extends KitMenu
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Button[] setup(Player player)
|
public Button[] setUp(Player player)
|
||||||
{
|
{
|
||||||
Button[] buttons = new Button[52];
|
Button[] buttons = new Button[52];
|
||||||
|
|
||||||
|
@ -144,6 +147,30 @@ public class KitInformationTrackerMenu extends KitMenu
|
||||||
*/
|
*/
|
||||||
private void setUpUpgrade(Button[] buttons, Player player)
|
private void setUpUpgrade(Button[] buttons, Player player)
|
||||||
{
|
{
|
||||||
|
if(getKit().showUpgrades())
|
||||||
|
{
|
||||||
|
int upgradeLevel = getKit().getUpgradeLevel(player.getUniqueId());
|
||||||
|
Map<Integer, List<KitAbilityDetail>> details = getKit().getAbilityDetails();
|
||||||
|
List<KitAbilityDetail> list = details.get(upgradeLevel);
|
||||||
|
if(list == null)
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("No upgrades for player upgrade level " + upgradeLevel);
|
||||||
|
}
|
||||||
|
int index = 0;
|
||||||
|
for(int i : UPGRADE_SLOTS)
|
||||||
|
{
|
||||||
|
KitAbilityDetail detail = list.get(index++);
|
||||||
|
ItemBuilder itemStack = new ItemBuilder(detail.getIcon()).setTitle(C.cYellow + detail.getDisplayName()).setLore(getKit().getDescription());
|
||||||
|
if(getKit().canPurchaseUpgrade(player.getUniqueId(), upgradeLevel) && !getKit().ownsUpgrade(player.getUniqueId(), upgradeLevel))
|
||||||
|
{
|
||||||
|
itemStack.setGlow(true);
|
||||||
|
}
|
||||||
|
KitUpgradeButton button = new KitUpgradeButton(getKit(), itemStack.build(), upgradeLevel, detail.getDisplayName());
|
||||||
|
buttons[i] = button;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i : UPGRADE_SLOTS)
|
for (int i : UPGRADE_SLOTS)
|
||||||
{
|
{
|
||||||
buttons[i] = new IconButton(COMING_SOON);
|
buttons[i] = new IconButton(COMING_SOON);
|
||||||
|
|
|
@ -1,21 +1,18 @@
|
||||||
package mineplex.core.progression.gui.guis;
|
package mineplex.core.progression.gui.guis;
|
||||||
|
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
|
import mineplex.core.menu.Menu;
|
||||||
|
import mineplex.core.progression.KitProgressionManager;
|
||||||
import mineplex.core.progression.ProgressiveKit;
|
import mineplex.core.progression.ProgressiveKit;
|
||||||
import mineplex.core.progression.gui.Button;
|
|
||||||
import mineplex.core.progression.gui.Menu;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An implementation of {@link Menu} corresponding to kits
|
* An implementation of {@link Menu} corresponding to kits
|
||||||
*/
|
*/
|
||||||
public abstract class KitMenu extends Menu
|
public abstract class KitMenu extends Menu<KitProgressionManager>
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -32,70 +29,12 @@ public abstract class KitMenu extends Menu
|
||||||
|
|
||||||
public KitMenu(ProgressiveKit kit)
|
public KitMenu(ProgressiveKit kit)
|
||||||
{
|
{
|
||||||
super(kit.getDisplayName());
|
super(kit.getDisplayName(), null);
|
||||||
_kit = kit;
|
_kit = kit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set up a menu based on the specific player
|
|
||||||
*
|
|
||||||
* @param player The player who we want to tailor the GUI to
|
|
||||||
* @return The setup arrangement of buttons
|
|
||||||
*/
|
|
||||||
public abstract Button[] setup(Player player);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Open a GUI tailored to the player
|
|
||||||
*
|
|
||||||
* @param player The player who we wish to show the GUI to
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void open(Player player)
|
|
||||||
{
|
|
||||||
this.setButtons(setup(player));
|
|
||||||
|
|
||||||
if (MENUS.get(player.getUniqueId()) != null)
|
|
||||||
{
|
|
||||||
MENUS.remove(player.getUniqueId());
|
|
||||||
}
|
|
||||||
|
|
||||||
MENUS.put(player.getUniqueId(), this);
|
|
||||||
|
|
||||||
int size = (this._buttons.length + 8) / 9 * 9;
|
|
||||||
Inventory inventory = Bukkit.createInventory(player, size, getName());
|
|
||||||
|
|
||||||
for (int i = 0; i < _buttons.length; i++)
|
|
||||||
{
|
|
||||||
if (_buttons[i] == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack item = _buttons[i].getItemStack();
|
|
||||||
|
|
||||||
inventory.setItem(i, item);
|
|
||||||
}
|
|
||||||
player.openInventory(inventory);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the kit specific to this GUI
|
|
||||||
*
|
|
||||||
* @return This GUI's kit
|
|
||||||
*/
|
|
||||||
public ProgressiveKit getKit()
|
public ProgressiveKit getKit()
|
||||||
{
|
{
|
||||||
return _kit;
|
return _kit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* We don't want to use this, as we may require per player GUI's
|
|
||||||
* @return The arrangement of buttons
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Button[] setUp()
|
|
||||||
{
|
|
||||||
return new Button[45];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
package mineplex.core.report;
|
package mineplex.core.report;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
@ -21,10 +13,11 @@ import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.portal.Portal;
|
import mineplex.core.portal.Portal;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.report.command.ReportHandlerNotification;
|
import mineplex.core.report.command.ReportHandlerNotification;
|
||||||
import mineplex.core.report.command.ReportNotificationCallback;
|
|
||||||
import mineplex.core.report.command.ReportNotification;
|
import mineplex.core.report.command.ReportNotification;
|
||||||
|
import mineplex.core.report.command.ReportNotificationCallback;
|
||||||
import mineplex.core.report.task.ReportHandlerMessageTask;
|
import mineplex.core.report.task.ReportHandlerMessageTask;
|
||||||
import mineplex.core.stats.PlayerStats;
|
import mineplex.core.stats.PlayerStats;
|
||||||
import mineplex.core.stats.StatsManager;
|
import mineplex.core.stats.StatsManager;
|
||||||
|
@ -33,16 +26,22 @@ import mineplex.serverdata.Utility;
|
||||||
import mineplex.serverdata.commands.ServerCommandManager;
|
import mineplex.serverdata.commands.ServerCommandManager;
|
||||||
import mineplex.serverdata.data.DataRepository;
|
import mineplex.serverdata.data.DataRepository;
|
||||||
import mineplex.serverdata.redis.RedisDataRepository;
|
import mineplex.serverdata.redis.RedisDataRepository;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.Jedis;
|
||||||
import redis.clients.jedis.JedisPool;
|
import redis.clients.jedis.JedisPool;
|
||||||
import redis.clients.jedis.exceptions.JedisConnectionException;
|
import redis.clients.jedis.exceptions.JedisConnectionException;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ReportManager hooks into a synchronized network-wide report system
|
* ReportManager hooks into a synchronized network-wide report system
|
||||||
* with methods for updating/fetching/closing reports in real time.
|
* with methods for updating/fetching/closing reports in real time.
|
||||||
|
@ -356,7 +355,7 @@ public class ReportManager
|
||||||
public boolean hasReportNotifications(Player player)
|
public boolean hasReportNotifications(Player player)
|
||||||
{
|
{
|
||||||
boolean isStaff = CommandCenter.Instance.GetClientManager().Get(player).GetRank().has(Rank.MODERATOR);
|
boolean isStaff = CommandCenter.Instance.GetClientManager().Get(player).GetRank().has(Rank.MODERATOR);
|
||||||
boolean hasReportNotifications = _preferencesManager.Get(player).ShowUserReports;
|
boolean hasReportNotifications = _preferencesManager.get(player).isActive(Preference.SHOW_USER_REPORTS);
|
||||||
return isStaff && hasReportNotifications;
|
return isStaff && hasReportNotifications;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,28 @@
|
||||||
package mineplex.core.treasure;
|
package mineplex.core.treasure;
|
||||||
|
|
||||||
import java.util.List;
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.Callback;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilAction;
|
||||||
|
import mineplex.core.common.util.UtilAlg;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilText;
|
||||||
|
import mineplex.core.common.util.UtilTextMiddle;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.gadget.GadgetManager;
|
import mineplex.core.gadget.GadgetManager;
|
||||||
import mineplex.core.reward.RewardPool;
|
import mineplex.core.gadget.event.GadgetBlockEvent;
|
||||||
|
import mineplex.core.hologram.Hologram;
|
||||||
|
import mineplex.core.hologram.HologramInteraction;
|
||||||
|
import mineplex.core.hologram.HologramManager;
|
||||||
|
import mineplex.core.inventory.InventoryManager;
|
||||||
|
import mineplex.core.reward.Reward;
|
||||||
|
import mineplex.core.status.ServerStatusManager;
|
||||||
|
import mineplex.core.treasure.event.TreasureFinishEvent;
|
||||||
|
import mineplex.core.treasure.event.TreasureStartEvent;
|
||||||
|
import mineplex.core.treasure.gui.TreasureShop;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -21,28 +40,7 @@ import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.player.PlayerVelocityEvent;
|
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||||
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
import java.util.List;
|
||||||
import mineplex.core.common.util.C;
|
|
||||||
import mineplex.core.common.util.Callback;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
|
||||||
import mineplex.core.common.util.UtilAlg;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilText;
|
|
||||||
import mineplex.core.common.util.UtilTextMiddle;
|
|
||||||
import mineplex.core.donation.DonationManager;
|
|
||||||
import mineplex.core.gadget.event.GadgetBlockEvent;
|
|
||||||
import mineplex.core.hologram.Hologram;
|
|
||||||
import mineplex.core.hologram.HologramInteraction;
|
|
||||||
import mineplex.core.hologram.HologramManager;
|
|
||||||
import mineplex.core.inventory.InventoryManager;
|
|
||||||
import mineplex.core.reward.Reward;
|
|
||||||
import mineplex.core.status.ServerStatusManager;
|
|
||||||
import mineplex.core.treasure.event.TreasureFinishEvent;
|
|
||||||
import mineplex.core.treasure.event.TreasureStartEvent;
|
|
||||||
import mineplex.core.treasure.gui.TreasureShop;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
|
|
||||||
public class TreasureLocation implements Listener
|
public class TreasureLocation implements Listener
|
||||||
{
|
{
|
||||||
|
@ -69,8 +67,7 @@ public class TreasureLocation implements Listener
|
||||||
_hologramManager = hologramManager;
|
_hologramManager = hologramManager;
|
||||||
_statusManager = statusManager;
|
_statusManager = statusManager;
|
||||||
_currentTreasure = null;
|
_currentTreasure = null;
|
||||||
_hologram = new Hologram(_hologramManager, chestBlock.getLocation().add(0.5, 2.5, 0.5), C.cGreen + C.Bold
|
_hologram = new Hologram(_hologramManager, chestBlock.getLocation().add(0.5, 1.5, 0.5), C.cGreen + C.Bold + "Open Treasure");
|
||||||
+ "Open Treasure");
|
|
||||||
_hologram.setInteraction(new HologramInteraction()
|
_hologram.setInteraction(new HologramInteraction()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -401,4 +398,18 @@ public class TreasureLocation implements Listener
|
||||||
{
|
{
|
||||||
_shop.attemptShopOpen(player);
|
_shop.attemptShopOpen(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("TesureLoc: ").append(_chestBlock.getX()).append(" : ").append(_chestBlock.getY()).append(" : ").append(_chestBlock.getZ());
|
||||||
|
builder.append("BlockLocs: [");
|
||||||
|
for(Block block : _chestSpawns)
|
||||||
|
{
|
||||||
|
builder.append("BlockLoc: ").append(block.getX()).append(" : ").append(block.getY()).append(" : ").append(block.getZ()).append(",\n");
|
||||||
|
}
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,32 +1,32 @@
|
||||||
package mineplex.core.treasure;
|
package mineplex.core.treasure;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import com.google.common.collect.Lists;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import mineplex.core.gadget.GadgetManager;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.HandlerList;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.blockrestore.BlockRestore;
|
import mineplex.core.blockrestore.BlockRestore;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.gadget.GadgetManager;
|
||||||
import mineplex.core.hologram.HologramManager;
|
import mineplex.core.hologram.HologramManager;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
import mineplex.core.pet.PetManager;
|
import mineplex.core.pet.PetManager;
|
||||||
import mineplex.core.reward.Reward;
|
import mineplex.core.reward.Reward;
|
||||||
import mineplex.core.reward.RewardManager;
|
import mineplex.core.reward.RewardManager;
|
||||||
import mineplex.core.reward.RewardPool;
|
import mineplex.core.reward.RewardPool;
|
||||||
import mineplex.core.reward.RewardRarity;
|
|
||||||
import mineplex.core.reward.RewardType;
|
import mineplex.core.reward.RewardType;
|
||||||
import mineplex.core.stats.StatsManager;
|
import mineplex.core.stats.StatsManager;
|
||||||
import mineplex.core.status.ServerStatusManager;
|
import mineplex.core.status.ServerStatusManager;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Shaun on 8/27/2014.
|
* Created by Shaun on 8/27/2014.
|
||||||
|
@ -54,69 +54,78 @@ public class TreasureManager extends MiniPlugin
|
||||||
|
|
||||||
World world = Bukkit.getWorlds().get(0);
|
World world = Bukkit.getWorlds().get(0);
|
||||||
|
|
||||||
_treasureLocations = new ArrayList<TreasureLocation>();
|
System.out.println("Treausre Manager Setting the fuck up biotches");
|
||||||
|
|
||||||
|
_treasureLocations = new ArrayList<>();
|
||||||
{
|
{
|
||||||
Block chestBlock = world.getBlockAt(-19, 72, -19);
|
Block chestBlock = world.getBlockAt(-31, 73, -11);
|
||||||
Block chestLoc1 = world.getBlockAt(-16, 72, -20);
|
Block[] blocks = setup(chestBlock);
|
||||||
Block chestLoc2 = world.getBlockAt(-18, 72, -22);
|
Location resetLocation = new Location(world, -26.5, 72, -11.5);
|
||||||
Block chestLoc3 = world.getBlockAt(-20, 72, -22);
|
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, blocks, resetLocation, _hologramManager, gadgetManager, statusManager));
|
||||||
Block chestLoc4 = world.getBlockAt(-22, 72, -20);
|
|
||||||
Block chestLoc5 = world.getBlockAt(-22, 72, -18);
|
|
||||||
Block chestLoc6 = world.getBlockAt(-20, 72, -16);
|
|
||||||
Block chestLoc7 = world.getBlockAt(-18, 72, -16);
|
|
||||||
Block chestLoc8 = world.getBlockAt(-16, 72, -18);
|
|
||||||
Location resetLocation = new Location(world, -23.5, 72, -23.5);
|
|
||||||
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, new Block[]{chestLoc1, chestLoc2, chestLoc3, chestLoc4, chestLoc5, chestLoc6, chestLoc7, chestLoc8}, resetLocation, _hologramManager, gadgetManager, statusManager));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
Block chestBlock = world.getBlockAt(19, 72, 19);
|
Block chestBlock = world.getBlockAt(-22, 73, -34);
|
||||||
Block chestLoc1 = world.getBlockAt(16, 72, 20);
|
Block[] blocks = setup(chestBlock);
|
||||||
Block chestLoc2 = world.getBlockAt(18, 72, 22);
|
Location resetLocation = new Location(world, -22.5, 72, -29.5);
|
||||||
Block chestLoc3 = world.getBlockAt(20, 72, 22);
|
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, blocks, resetLocation, _hologramManager, gadgetManager, statusManager));
|
||||||
Block chestLoc4 = world.getBlockAt(22, 72, 20);
|
|
||||||
Block chestLoc5 = world.getBlockAt(22, 72, 18);
|
|
||||||
Block chestLoc6 = world.getBlockAt(20, 72, 16);
|
|
||||||
Block chestLoc7 = world.getBlockAt(18, 72, 16);
|
|
||||||
Block chestLoc8 = world.getBlockAt(16, 72, 18);
|
|
||||||
Location resetLocation = new Location(world, 23.5, 72, 23.5);
|
|
||||||
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, new Block[]{chestLoc1, chestLoc2, chestLoc3, chestLoc4, chestLoc5, chestLoc6, chestLoc7, chestLoc8}, resetLocation, _hologramManager, gadgetManager, statusManager));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
Block chestBlock = world.getBlockAt(19, 72, -19);
|
Block chestBlock = world.getBlockAt(22, 75, -34);
|
||||||
Block chestLoc1 = world.getBlockAt(16, 72, -20);
|
Block[] blocks = setup(chestBlock);
|
||||||
Block chestLoc2 = world.getBlockAt(18, 72, -22);
|
Location resetLocation = new Location(world, 19.5, 74, -30.5);
|
||||||
Block chestLoc3 = world.getBlockAt(20, 72, -22);
|
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, blocks, resetLocation, _hologramManager, gadgetManager, statusManager));
|
||||||
Block chestLoc4 = world.getBlockAt(22, 72, -20);
|
|
||||||
Block chestLoc5 = world.getBlockAt(22, 72, -18);
|
|
||||||
Block chestLoc6 = world.getBlockAt(20, 72, -16);
|
|
||||||
Block chestLoc7 = world.getBlockAt(18, 72, -16);
|
|
||||||
Block chestLoc8 = world.getBlockAt(16, 72, -18);
|
|
||||||
Location resetLocation = new Location(world, 23.5, 72, -23.5);
|
|
||||||
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, new Block[]{chestLoc1, chestLoc2, chestLoc3, chestLoc4, chestLoc5, chestLoc6, chestLoc7, chestLoc8}, resetLocation, _hologramManager, gadgetManager, statusManager));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
Block chestBlock = world.getBlockAt(-19, 72, 19);
|
Block chestBlock = world.getBlockAt(31, 74, -11);
|
||||||
Block chestLoc1 = world.getBlockAt(-16, 72, 20);
|
Block[] blocks = setup(chestBlock);
|
||||||
Block chestLoc2 = world.getBlockAt(-18, 72, 22);
|
Location resetLocation = new Location(world, 27.5, 73, -15.5);
|
||||||
Block chestLoc3 = world.getBlockAt(-20, 72, 22);
|
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, blocks, resetLocation, _hologramManager, gadgetManager, statusManager));
|
||||||
Block chestLoc4 = world.getBlockAt(-22, 72, 20);
|
|
||||||
Block chestLoc5 = world.getBlockAt(-22, 72, 18);
|
|
||||||
Block chestLoc6 = world.getBlockAt(-20, 72, 16);
|
|
||||||
Block chestLoc7 = world.getBlockAt(-18, 72, 16);
|
|
||||||
Block chestLoc8 = world.getBlockAt(-16, 72, 18);
|
|
||||||
Location resetLocation = new Location(world, -23.5, 72, 23.5);
|
|
||||||
_treasureLocations.add(new TreasureLocation(this, _inventoryManager, clientManager, donationManager, chestBlock, new Block[]{chestLoc1, chestLoc2, chestLoc3, chestLoc4, chestLoc5, chestLoc6, chestLoc7, chestLoc8}, resetLocation, _hologramManager, gadgetManager, statusManager));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (TreasureLocation treasureLocation : _treasureLocations)
|
for (TreasureLocation treasureLocation : _treasureLocations)
|
||||||
{
|
{
|
||||||
|
System.out.println(treasureLocation.toString());
|
||||||
_plugin.getServer().getPluginManager().registerEvents(treasureLocation, _plugin);
|
_plugin.getServer().getPluginManager().registerEvents(treasureLocation, _plugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Block[] setup(Block chestBlock)
|
||||||
|
{
|
||||||
|
System.out.println("Setting up blocks for " + chestBlock.getX() + ", " + chestBlock.getY() + ", " + chestBlock.getZ());
|
||||||
|
List<Location> locations = Lists.newArrayList();
|
||||||
|
boolean has = false;
|
||||||
|
for(int x = chestBlock.getX() -3; x <= chestBlock.getX(); x++)
|
||||||
|
{
|
||||||
|
for(int z = chestBlock.getZ() - 3; z <= chestBlock.getZ(); z++)
|
||||||
|
{
|
||||||
|
Location location = new Location(chestBlock.getWorld(), x, chestBlock.getY(), z);
|
||||||
|
if(location.getBlock().getRelative(BlockFace.DOWN) == null || location.getBlock().getRelative(BlockFace.DOWN).getType() != Material.SMOOTH_BRICK)
|
||||||
|
{
|
||||||
|
has = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(has)
|
||||||
|
{
|
||||||
|
has = false;
|
||||||
|
continue;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
has = true;
|
||||||
|
}
|
||||||
|
locations.add(location);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Block[] blocks = new Block[locations.size()];
|
||||||
|
for(int i = 0; i < blocks.length; i++)
|
||||||
|
{
|
||||||
|
blocks[i] = locations.get(i).getBlock();
|
||||||
|
}
|
||||||
|
return blocks;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void disable()
|
public void disable()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
package mineplex.clanshub;
|
package mineplex.clanshub;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mineplex.clanshub.commands.ForcefieldRadius;
|
import mineplex.clanshub.commands.ForcefieldRadius;
|
||||||
import mineplex.clanshub.commands.GadgetToggle;
|
import mineplex.clanshub.commands.GadgetToggle;
|
||||||
import mineplex.clanshub.commands.GameModeCommand;
|
import mineplex.clanshub.commands.GameModeCommand;
|
||||||
|
@ -31,7 +26,6 @@ import mineplex.core.common.util.UtilTextTop;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.common.util.UtilWorld;
|
import mineplex.core.common.util.UtilWorld;
|
||||||
import mineplex.core.cosmetic.CosmeticManager;
|
import mineplex.core.cosmetic.CosmeticManager;
|
||||||
import mineplex.core.customdata.CustomData;
|
|
||||||
import mineplex.core.customdata.CustomDataManager;
|
import mineplex.core.customdata.CustomDataManager;
|
||||||
import mineplex.core.disguise.DisguiseManager;
|
import mineplex.core.disguise.DisguiseManager;
|
||||||
import mineplex.core.disguise.disguises.DisguiseBase;
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
|
@ -60,6 +54,7 @@ import mineplex.core.pet.PetManager;
|
||||||
import mineplex.core.playerCount.PlayerCountManager;
|
import mineplex.core.playerCount.PlayerCountManager;
|
||||||
import mineplex.core.poll.PollManager;
|
import mineplex.core.poll.PollManager;
|
||||||
import mineplex.core.portal.Portal;
|
import mineplex.core.portal.Portal;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.projectile.ProjectileManager;
|
import mineplex.core.projectile.ProjectileManager;
|
||||||
import mineplex.core.punish.Punish;
|
import mineplex.core.punish.Punish;
|
||||||
|
@ -82,7 +77,6 @@ import net.md_5.bungee.api.chat.HoverEvent.Action;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import net.minecraft.server.v1_8_R3.EntityInsentient;
|
import net.minecraft.server.v1_8_R3.EntityInsentient;
|
||||||
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
@ -117,6 +111,11 @@ import org.bukkit.scoreboard.DisplaySlot;
|
||||||
import org.bukkit.scoreboard.Objective;
|
import org.bukkit.scoreboard.Objective;
|
||||||
import org.bukkit.scoreboard.Scoreboard;
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main manager for clans hub
|
* Main manager for clans hub
|
||||||
*/
|
*/
|
||||||
|
@ -288,7 +287,7 @@ public class HubManager extends MiniPlugin
|
||||||
|
|
||||||
if (ent instanceof Player)
|
if (ent instanceof Player)
|
||||||
{
|
{
|
||||||
return !_preferences.Get((Player)ent).HubGames;
|
return !_preferences.get((Player)ent).isActive(Preference.HUB_GAMES);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -497,7 +496,7 @@ public class HubManager extends MiniPlugin
|
||||||
event.setMessage(event.getMessage().substring(1, event.getMessage().length()));
|
event.setMessage(event.getMessage().substring(1, event.getMessage().length()));
|
||||||
event.setFormat(levelStr + C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + playerName + " " + C.cPurple + "%2$s");
|
event.setFormat(levelStr + C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + playerName + " " + C.cPurple + "%2$s");
|
||||||
|
|
||||||
for (UUID name : party.getMembers())
|
for (UUID name : party.getMembersByUUID())
|
||||||
{
|
{
|
||||||
Player other = Bukkit.getPlayer(name);
|
Player other = Bukkit.getPlayer(name);
|
||||||
|
|
||||||
|
@ -858,7 +857,7 @@ public class HubManager extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void ignoreVelocity(PlayerVelocityEvent event)
|
public void ignoreVelocity(PlayerVelocityEvent event)
|
||||||
{
|
{
|
||||||
if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.TWITCH) && _preferences.Get(event.getPlayer()).IgnoreVelocity)
|
if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.TWITCH) && _preferences.get(event.getPlayer()).isActive(Preference.IGNORE_VELOCITY))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,15 @@
|
||||||
package mineplex.hub;
|
package mineplex.hub;
|
||||||
|
|
||||||
import mineplex.core.Managers;
|
|
||||||
import mineplex.core.antihack.AntiHackGuardian;
|
|
||||||
import mineplex.core.brawl.fountain.FountainManager;
|
|
||||||
import mineplex.core.thank.ThankManager;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import mineplex.core.CustomTagFix;
|
import mineplex.core.CustomTagFix;
|
||||||
import mineplex.core.PacketsInteractionFix;
|
import mineplex.core.PacketsInteractionFix;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
import mineplex.core.achievement.AchievementManager;
|
import mineplex.core.achievement.AchievementManager;
|
||||||
import mineplex.core.antihack.AntiHack;
|
import mineplex.core.antihack.AntiHack;
|
||||||
|
import mineplex.core.antihack.AntiHackGuardian;
|
||||||
import mineplex.core.aprilfools.AprilFoolsManager;
|
import mineplex.core.aprilfools.AprilFoolsManager;
|
||||||
import mineplex.core.blockrestore.BlockRestore;
|
import mineplex.core.blockrestore.BlockRestore;
|
||||||
import mineplex.core.boosters.BoosterManager;
|
import mineplex.core.boosters.BoosterManager;
|
||||||
|
import mineplex.core.brawl.fountain.FountainManager;
|
||||||
import mineplex.core.chat.Chat;
|
import mineplex.core.chat.Chat;
|
||||||
import mineplex.core.command.CommandCenter;
|
import mineplex.core.command.CommandCenter;
|
||||||
import mineplex.core.common.events.ServerShutdownEvent;
|
import mineplex.core.common.events.ServerShutdownEvent;
|
||||||
|
@ -57,6 +50,7 @@ import mineplex.core.stats.StatsManager;
|
||||||
import mineplex.core.status.ServerStatusManager;
|
import mineplex.core.status.ServerStatusManager;
|
||||||
import mineplex.core.task.TaskManager;
|
import mineplex.core.task.TaskManager;
|
||||||
import mineplex.core.teleport.Teleport;
|
import mineplex.core.teleport.Teleport;
|
||||||
|
import mineplex.core.thank.ThankManager;
|
||||||
import mineplex.core.titangiveaway.TitanGiveawayManager;
|
import mineplex.core.titangiveaway.TitanGiveawayManager;
|
||||||
import mineplex.core.updater.FileUpdater;
|
import mineplex.core.updater.FileUpdater;
|
||||||
import mineplex.core.updater.Updater;
|
import mineplex.core.updater.Updater;
|
||||||
|
@ -76,6 +70,10 @@ import mineplex.minecraft.game.core.IRelation;
|
||||||
import mineplex.minecraft.game.core.combat.CombatManager;
|
import mineplex.minecraft.game.core.combat.CombatManager;
|
||||||
import mineplex.minecraft.game.core.damage.DamageManager;
|
import mineplex.minecraft.game.core.damage.DamageManager;
|
||||||
import mineplex.minecraft.game.core.fire.Fire;
|
import mineplex.minecraft.game.core.fire.Fire;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import static mineplex.core.Managers.require;
|
import static mineplex.core.Managers.require;
|
||||||
|
|
||||||
|
@ -83,6 +81,8 @@ public class Hub extends JavaPlugin implements IRelation
|
||||||
{
|
{
|
||||||
private String WEB_CONFIG = "webServer";
|
private String WEB_CONFIG = "webServer";
|
||||||
|
|
||||||
|
private NpcManager _npcManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
{
|
{
|
||||||
|
@ -118,13 +118,14 @@ public class Hub extends JavaPlugin implements IRelation
|
||||||
PacketHandler packetHandler = require(PacketHandler.class);
|
PacketHandler packetHandler = require(PacketHandler.class);
|
||||||
DisguiseManager disguiseManager = require(DisguiseManager.class);
|
DisguiseManager disguiseManager = require(DisguiseManager.class);
|
||||||
IncognitoManager incognito = new IncognitoManager(this, clientManager, packetHandler);
|
IncognitoManager incognito = new IncognitoManager(this, clientManager, packetHandler);
|
||||||
PreferencesManager preferenceManager = new PreferencesManager(this, incognito, clientManager, donationManager);
|
PreferencesManager preferenceManager = new PreferencesManager(this, incognito, clientManager);
|
||||||
|
|
||||||
incognito.setPreferencesManager(preferenceManager);
|
incognito.setPreferencesManager(preferenceManager);
|
||||||
|
|
||||||
preferenceManager.GiveItem = true;
|
preferenceManager.GiveItem = true;
|
||||||
Creature creature = new Creature(this);
|
Creature creature = new Creature(this);
|
||||||
NpcManager npcManager = new NpcManager(this, creature);
|
NpcManager npcManager = new NpcManager(this, creature);
|
||||||
|
_npcManager = npcManager;
|
||||||
InventoryManager inventoryManager = new InventoryManager(this, clientManager);
|
InventoryManager inventoryManager = new InventoryManager(this, clientManager);
|
||||||
PetManager petManager = new PetManager(this, clientManager, donationManager, inventoryManager, disguiseManager, creature, blockRestore, webServerAddress);
|
PetManager petManager = new PetManager(this, clientManager, donationManager, inventoryManager, disguiseManager, creature, blockRestore, webServerAddress);
|
||||||
PollManager pollManager = new PollManager(this, clientManager, donationManager);
|
PollManager pollManager = new PollManager(this, clientManager, donationManager);
|
||||||
|
@ -236,4 +237,9 @@ public class Hub extends JavaPlugin implements IRelation
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NpcManager getNpcManager()
|
||||||
|
{
|
||||||
|
return _npcManager;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,15 @@ import mineplex.core.boosters.BoosterManager;
|
||||||
import mineplex.core.botspam.BotSpamManager;
|
import mineplex.core.botspam.BotSpamManager;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.currency.GlobalCurrency;
|
import mineplex.core.common.currency.GlobalCurrency;
|
||||||
import mineplex.core.common.util.*;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilInv;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTextBottom;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.common.util.UtilWorld;
|
||||||
import mineplex.core.cosmetic.CosmeticManager;
|
import mineplex.core.cosmetic.CosmeticManager;
|
||||||
import mineplex.core.customdata.CustomDataManager;
|
import mineplex.core.customdata.CustomDataManager;
|
||||||
import mineplex.core.disguise.DisguiseManager;
|
import mineplex.core.disguise.DisguiseManager;
|
||||||
|
@ -28,7 +36,9 @@ import mineplex.core.gadget.event.GadgetCollideEntityEvent;
|
||||||
import mineplex.core.hologram.HologramManager;
|
import mineplex.core.hologram.HologramManager;
|
||||||
import mineplex.core.incognito.IncognitoManager;
|
import mineplex.core.incognito.IncognitoManager;
|
||||||
import mineplex.core.incognito.events.IncognitoHidePlayerEvent;
|
import mineplex.core.incognito.events.IncognitoHidePlayerEvent;
|
||||||
|
import mineplex.core.interactions.NewInteractionsManager;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
|
import mineplex.core.menu.MenuManager;
|
||||||
import mineplex.core.message.PrivateMessageEvent;
|
import mineplex.core.message.PrivateMessageEvent;
|
||||||
import mineplex.core.mount.MountManager;
|
import mineplex.core.mount.MountManager;
|
||||||
import mineplex.core.noteblock.INoteVerifier;
|
import mineplex.core.noteblock.INoteVerifier;
|
||||||
|
@ -46,6 +56,7 @@ import mineplex.core.pet.PetManager;
|
||||||
import mineplex.core.playerCount.PlayerCountManager;
|
import mineplex.core.playerCount.PlayerCountManager;
|
||||||
import mineplex.core.poll.PollManager;
|
import mineplex.core.poll.PollManager;
|
||||||
import mineplex.core.portal.Portal;
|
import mineplex.core.portal.Portal;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
import mineplex.core.projectile.ProjectileManager;
|
import mineplex.core.projectile.ProjectileManager;
|
||||||
import mineplex.core.punish.Punish;
|
import mineplex.core.punish.Punish;
|
||||||
|
@ -64,10 +75,17 @@ import mineplex.hub.commands.ForcefieldRadius;
|
||||||
import mineplex.hub.commands.GadgetToggle;
|
import mineplex.hub.commands.GadgetToggle;
|
||||||
import mineplex.hub.commands.GameModeCommand;
|
import mineplex.hub.commands.GameModeCommand;
|
||||||
import mineplex.hub.commands.NewsCommand;
|
import mineplex.hub.commands.NewsCommand;
|
||||||
import mineplex.hub.modules.*;
|
import mineplex.hub.modules.ForcefieldManager;
|
||||||
|
import mineplex.hub.modules.HubVisibilityManager;
|
||||||
|
import mineplex.hub.modules.JumpManager;
|
||||||
|
import mineplex.hub.modules.KothManager;
|
||||||
|
import mineplex.hub.modules.NewsManager;
|
||||||
|
import mineplex.hub.modules.ParkourManager;
|
||||||
|
import mineplex.hub.modules.SoccerManager;
|
||||||
|
import mineplex.hub.modules.ValentinesManager;
|
||||||
|
import mineplex.hub.modules.WorldManager;
|
||||||
import mineplex.hub.modules.nonpremium.NonPremiumManager;
|
import mineplex.hub.modules.nonpremium.NonPremiumManager;
|
||||||
import mineplex.hub.profile.gui.GUIProfile;
|
import mineplex.hub.profile.gui.GUIProfile;
|
||||||
import mineplex.hub.tutorial.TutorialManager;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
|
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
|
||||||
import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent;
|
import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent;
|
||||||
import mineplex.minecraft.game.core.combat.DeathMessageType;
|
import mineplex.minecraft.game.core.combat.DeathMessageType;
|
||||||
|
@ -79,7 +97,11 @@ import net.md_5.bungee.api.chat.HoverEvent.Action;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import net.minecraft.server.v1_8_R3.EntityInsentient;
|
import net.minecraft.server.v1_8_R3.EntityInsentient;
|
||||||
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
||||||
import org.bukkit.*;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
|
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
|
||||||
import org.bukkit.entity.Egg;
|
import org.bukkit.entity.Egg;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
@ -93,7 +115,14 @@ import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
|
||||||
import org.bukkit.event.entity.ItemSpawnEvent;
|
import org.bukkit.event.entity.ItemSpawnEvent;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||||
import org.bukkit.event.server.ServerListPingEvent;
|
import org.bukkit.event.server.ServerListPingEvent;
|
||||||
import org.bukkit.event.world.ChunkLoadEvent;
|
import org.bukkit.event.world.ChunkLoadEvent;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
@ -102,7 +131,11 @@ import java.io.DataInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class HubManager extends MiniClientPlugin<HubClient>
|
public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
{
|
{
|
||||||
|
@ -122,8 +155,6 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
private GadgetManager _gadgetManager;
|
private GadgetManager _gadgetManager;
|
||||||
private MountManager _mountManager;
|
private MountManager _mountManager;
|
||||||
private HubVisibilityManager _visibilityManager;
|
private HubVisibilityManager _visibilityManager;
|
||||||
private TutorialManager _tutorialManager;
|
|
||||||
private TextManager _textCreator;
|
|
||||||
private ParkourManager _parkour;
|
private ParkourManager _parkour;
|
||||||
private PreferencesManager _preferences;
|
private PreferencesManager _preferences;
|
||||||
private InventoryManager _inventoryManager;
|
private InventoryManager _inventoryManager;
|
||||||
|
@ -177,18 +208,16 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
|
|
||||||
_portal = portal;
|
_portal = portal;
|
||||||
|
|
||||||
_spawn = new Location(UtilWorld.getWorld("world"), 0.5, 74, 0.5);
|
_spawn = new Location(UtilWorld.getWorld("world"), 0.5, 79, -23.5);
|
||||||
// Disable item merging
|
// Disable item merging
|
||||||
((CraftWorld) _spawn.getWorld()).getHandle().spigotConfig.itemMerge = 0;
|
((CraftWorld) _spawn.getWorld()).getHandle().spigotConfig.itemMerge = 0;
|
||||||
|
|
||||||
_textCreator = new TextManager(this);
|
|
||||||
_parkour = new ParkourManager(this, donationManager, taskManager);
|
_parkour = new ParkourManager(this, donationManager, taskManager);
|
||||||
|
|
||||||
new WorldManager(this);
|
new WorldManager(this);
|
||||||
_jumpManager = new JumpManager(this);
|
_jumpManager = new JumpManager(this);
|
||||||
//new TournamentInviter(this);
|
//new TournamentInviter(this);
|
||||||
|
|
||||||
|
|
||||||
_news = new NewsManager(this);
|
_news = new NewsManager(this);
|
||||||
|
|
||||||
_mountManager = new MountManager(_plugin, clientManager, donationManager, blockRestore, _disguiseManager);
|
_mountManager = new MountManager(_plugin, clientManager, donationManager, blockRestore, _disguiseManager);
|
||||||
|
@ -203,18 +232,18 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
_treasureManager = new TreasureManager(_plugin, clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, _gadgetManager, _blockRestore, hologramManager, statsManager, _bonusManager.getRewardManager());
|
_treasureManager = new TreasureManager(_plugin, clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, _gadgetManager, _blockRestore, hologramManager, statsManager, _bonusManager.getRewardManager());
|
||||||
CosmeticManager cosmeticManager = new CosmeticManager(_plugin, clientManager, donationManager, _inventoryManager, _gadgetManager, _mountManager, petManager, _treasureManager, boosterManager);
|
CosmeticManager cosmeticManager = new CosmeticManager(_plugin, clientManager, donationManager, _inventoryManager, _gadgetManager, _mountManager, petManager, _treasureManager, boosterManager);
|
||||||
|
|
||||||
|
|
||||||
new SoccerManager(this, _gadgetManager);
|
new SoccerManager(this, _gadgetManager);
|
||||||
new KothManager(this, _gadgetManager);
|
new KothManager(this, _gadgetManager);
|
||||||
|
|
||||||
new AntiSpamManager();
|
new AntiSpamManager();
|
||||||
|
new MenuManager(_plugin);
|
||||||
|
new NewInteractionsManager();
|
||||||
|
|
||||||
//new TrickOrTreatManager(_plugin, this, taskManager, donationManager, clientManager);
|
//new TrickOrTreatManager(_plugin, this, taskManager, donationManager, clientManager);
|
||||||
|
|
||||||
_petManager = petManager;
|
_petManager = petManager;
|
||||||
_partyManager = partyManager;
|
_partyManager = partyManager;
|
||||||
_preferences = preferences;
|
_preferences = preferences;
|
||||||
_tutorialManager = new TutorialManager(this, donationManager, taskManager, _textCreator);
|
|
||||||
_visibilityManager = new HubVisibilityManager(this);
|
_visibilityManager = new HubVisibilityManager(this);
|
||||||
|
|
||||||
_forcefieldManager = new ForcefieldManager(this);
|
_forcefieldManager = new ForcefieldManager(this);
|
||||||
|
@ -299,8 +328,8 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
.register(HubScoreboardLine.GEM_TITLE)
|
.register(HubScoreboardLine.GEM_TITLE)
|
||||||
.register(HubScoreboardLine.GEM_COUNT)
|
.register(HubScoreboardLine.GEM_COUNT)
|
||||||
.register(HubScoreboardLine.GEM_EMPTY_SPACER)
|
.register(HubScoreboardLine.GEM_EMPTY_SPACER)
|
||||||
.register(HubScoreboardLine.PLAYER_TITLE)
|
.register(HubScoreboardLine.SHARDS_TITLE)
|
||||||
.register(HubScoreboardLine.PLAYER_COUNT)
|
.register(HubScoreboardLine.SHARDS_COUNT)
|
||||||
.register(HubScoreboardLine.PLAYER_EMPTY_SPACER)
|
.register(HubScoreboardLine.PLAYER_EMPTY_SPACER)
|
||||||
.register(HubScoreboardLine.RANK_TITLE)
|
.register(HubScoreboardLine.RANK_TITLE)
|
||||||
.register(HubScoreboardLine.RANK_NAME)
|
.register(HubScoreboardLine.RANK_NAME)
|
||||||
|
@ -313,7 +342,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
scoreboard.get(HubScoreboardLine.SERVER_TITLE).write(C.cAqua + C.Bold + "Server");
|
scoreboard.get(HubScoreboardLine.SERVER_TITLE).write(C.cAqua + C.Bold + "Server");
|
||||||
scoreboard.get(HubScoreboardLine.SERVER_NAME).write(_serverName);
|
scoreboard.get(HubScoreboardLine.SERVER_NAME).write(_serverName);
|
||||||
scoreboard.get(HubScoreboardLine.GEM_TITLE).write(C.cGreen + C.Bold + "Gems");
|
scoreboard.get(HubScoreboardLine.GEM_TITLE).write(C.cGreen + C.Bold + "Gems");
|
||||||
scoreboard.get(HubScoreboardLine.PLAYER_TITLE).write(C.cYellow + C.Bold + "Players");
|
scoreboard.get(HubScoreboardLine.SHARDS_TITLE).write(C.cYellow + C.Bold + "Treasure Shards");
|
||||||
scoreboard.get(HubScoreboardLine.RANK_TITLE).write(C.cGold + C.Bold + "Rank");
|
scoreboard.get(HubScoreboardLine.RANK_TITLE).write(C.cGold + C.Bold + "Rank");
|
||||||
scoreboard.get(HubScoreboardLine.WEBSITE_TITLE).write(C.cRed + C.Bold + "Website");
|
scoreboard.get(HubScoreboardLine.WEBSITE_TITLE).write(C.cRed + C.Bold + "Website");
|
||||||
scoreboard.get(HubScoreboardLine.WEBSITE_VALUE).write("www.mineplex.com");
|
scoreboard.get(HubScoreboardLine.WEBSITE_VALUE).write("www.mineplex.com");
|
||||||
|
@ -325,7 +354,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
{
|
{
|
||||||
scoreboard.setSidebarName(C.cWhite + C.Bold + Get(scoreboard.getOwner()).GetScoreboardText());
|
scoreboard.setSidebarName(C.cWhite + C.Bold + Get(scoreboard.getOwner()).GetScoreboardText());
|
||||||
scoreboard.get(HubScoreboardLine.GEM_COUNT).write(GetDonation().Get(scoreboard.getOwner()).getBalance(GlobalCurrency.GEM));
|
scoreboard.get(HubScoreboardLine.GEM_COUNT).write(GetDonation().Get(scoreboard.getOwner()).getBalance(GlobalCurrency.GEM));
|
||||||
scoreboard.get(HubScoreboardLine.PLAYER_COUNT).write(_playerCountManager.getPlayerCount());
|
scoreboard.get(HubScoreboardLine.SHARDS_COUNT).write(GetDonation().Get(scoreboard.getOwner()).getBalance(GlobalCurrency.TREASURE_SHARD));
|
||||||
|
|
||||||
String rankName = getRankName(GetClients().Get(scoreboard.getOwner()).GetRank(), GetDonation().Get(scoreboard.getOwner()));
|
String rankName = getRankName(GetClients().Get(scoreboard.getOwner()).GetRank(), GetDonation().Get(scoreboard.getOwner()));
|
||||||
|
|
||||||
|
@ -411,7 +440,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
{
|
{
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (_preferences.Get(player).HubMusic)
|
if (_preferences.get(player).isActive(Preference.HUB_MUSIC))
|
||||||
{
|
{
|
||||||
UtilTextBottom.display(C.cWhite + "Now Playing " + C.cYellow + song.getName(), player);
|
UtilTextBottom.display(C.cWhite + "Now Playing " + C.cYellow + song.getName(), player);
|
||||||
}
|
}
|
||||||
|
@ -422,7 +451,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldPlay(Player player)
|
public boolean shouldPlay(Player player)
|
||||||
{
|
{
|
||||||
return _preferences.Get(player).HubMusic;
|
return _preferences.get(player).isActive(Preference.HUB_MUSIC);
|
||||||
}
|
}
|
||||||
}, 0.5F, false);
|
}, 0.5F, false);
|
||||||
}
|
}
|
||||||
|
@ -452,7 +481,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
|
|
||||||
if (ent instanceof Player)
|
if (ent instanceof Player)
|
||||||
{
|
{
|
||||||
return !_preferences.Get((Player) ent).HubGames;
|
return !_preferences.get((Player) ent).isActive(Preference.HUB_GAMES);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -676,7 +705,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
event.setMessage(event.getMessage().substring(1, event.getMessage().length()));
|
event.setMessage(event.getMessage().substring(1, event.getMessage().length()));
|
||||||
event.setFormat(levelStr + C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + playerName + " " + C.cPurple + "%2$s");
|
event.setFormat(levelStr + C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + playerName + " " + C.cPurple + "%2$s");
|
||||||
|
|
||||||
for (UUID uuid: party.getMembers())
|
for (UUID uuid: party.getMembersByUUID())
|
||||||
{
|
{
|
||||||
Player other = Bukkit.getPlayer(uuid);
|
Player other = Bukkit.getPlayer(uuid);
|
||||||
|
|
||||||
|
@ -690,7 +719,6 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -707,14 +735,10 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
|
|
||||||
for (Player other : UtilServer.getPlayers())
|
for (Player other : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (_tutorialManager.InTutorial(other))
|
|
||||||
{
|
|
||||||
event.getRecipients().remove(other);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!event.isCancelled())
|
if (!event.isCancelled())
|
||||||
|
{
|
||||||
other.spigot().sendMessage(component);
|
other.spigot().sendMessage(component);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -844,11 +868,6 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
return _bonusManager;
|
return _bonusManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TutorialManager GetTutorial()
|
|
||||||
{
|
|
||||||
return _tutorialManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public StatsManager GetStats()
|
public StatsManager GetStats()
|
||||||
{
|
{
|
||||||
return _statsManager;
|
return _statsManager;
|
||||||
|
@ -908,7 +927,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
if (BumpDisabled(ent))
|
if (BumpDisabled(ent))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!getPreferences().Get((Player) ent).ShowPlayers)
|
if (!getPreferences().get((Player) ent).isActive(Preference.SHOW_PLAYERS))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -934,7 +953,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void ignoreVelocity(PlayerVelocityEvent event)
|
public void ignoreVelocity(PlayerVelocityEvent event)
|
||||||
{
|
{
|
||||||
if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.TWITCH) && _preferences.Get(event.getPlayer()).IgnoreVelocity)
|
if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.TWITCH) && _preferences.get(event.getPlayer()).isActive(Preference.IGNORE_VELOCITY))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,8 @@ public enum HubScoreboardLine implements ScoreboardLine
|
||||||
GEM_TITLE,
|
GEM_TITLE,
|
||||||
GEM_COUNT,
|
GEM_COUNT,
|
||||||
GEM_EMPTY_SPACER,
|
GEM_EMPTY_SPACER,
|
||||||
PLAYER_TITLE,
|
SHARDS_TITLE,
|
||||||
PLAYER_COUNT,
|
SHARDS_COUNT,
|
||||||
PLAYER_EMPTY_SPACER,
|
PLAYER_EMPTY_SPACER,
|
||||||
RANK_TITLE,
|
RANK_TITLE,
|
||||||
RANK_NAME,
|
RANK_NAME,
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
|
@ -16,10 +8,18 @@ import mineplex.core.common.util.UtilAlg;
|
||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.hub.HubManager;
|
import mineplex.hub.HubManager;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class ForcefieldManager extends MiniPlugin
|
public class ForcefieldManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,7 @@ public class ForcefieldManager extends MiniPlugin
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (Manager.getPreferences().Get(player).HubForcefield && (Manager.GetClients().Get(player).GetRank().has(Rank.ADMIN) || Manager.GetClients().Get(player).GetRank() == Rank.JNR_DEV || Manager.GetClients().Get(player).GetRank() == Rank.YOUTUBE || Manager.GetClients().Get(player).GetRank() == Rank.TWITCH || Manager.GetClients().Get(player).GetRank() == Rank.YOUTUBE_SMALL))
|
if (Manager.getPreferences().get(player).isActive(Preference.FORCE_FIELD) && (Manager.GetClients().Get(player).GetRank().has(Rank.ADMIN) || Manager.GetClients().Get(player).GetRank() == Rank.JNR_DEV || Manager.GetClients().Get(player).GetRank() == Rank.YOUTUBE || Manager.GetClients().Get(player).GetRank() == Rank.TWITCH || Manager.GetClients().Get(player).GetRank() == Rank.YOUTUBE_SMALL))
|
||||||
{
|
{
|
||||||
for (Player other : UtilServer.getPlayers())
|
for (Player other : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,24 +1,19 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.common.util.UtilAlg;
|
import mineplex.core.common.util.UtilAlg;
|
||||||
import mineplex.core.common.util.UtilEnt;
|
import mineplex.core.common.util.UtilEnt;
|
||||||
import mineplex.core.common.util.UtilMath;
|
import mineplex.core.common.util.UtilMath;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.disguise.disguises.DisguiseArmorStand;
|
import mineplex.core.disguise.disguises.DisguiseArmorStand;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.hub.HubManager;
|
import mineplex.hub.HubManager;
|
||||||
import mineplex.hub.HubType;
|
import mineplex.hub.HubType;
|
||||||
|
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -27,6 +22,10 @@ import org.bukkit.entity.Skeleton;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class HalloweenSpookinessManager extends MiniPlugin
|
public class HalloweenSpookinessManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -155,7 +154,7 @@ public class HalloweenSpookinessManager extends MiniPlugin
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Follow for 2 seconds
|
//Follow for 2 seconds
|
||||||
if (!_target.isOnline() || _manager.getPreferences().Get(_target).Invisibility || UtilTime.elapsed(_targetTime, 2000))
|
if (!_target.isOnline() || _manager.getPreferences().get(_target).isActive(Preference.INVISIBILITY) || UtilTime.elapsed(_targetTime, 2000))
|
||||||
{
|
{
|
||||||
resetFollowing();
|
resetFollowing();
|
||||||
return;
|
return;
|
||||||
|
@ -215,7 +214,7 @@ public class HalloweenSpookinessManager extends MiniPlugin
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (_manager.getPreferences().Get(player).Invisibility)
|
if (_manager.getPreferences().get(player).isActive(Preference.INVISIBILITY) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (UtilMath.offset(player.getLocation(), average) <= 7)
|
if (UtilMath.offset(player.getLocation(), average) <= 7)
|
||||||
|
|
|
@ -1,28 +1,28 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import mineplex.core.MiniPlugin;
|
||||||
import java.util.HashSet;
|
import mineplex.core.common.Rank;
|
||||||
|
import mineplex.core.common.util.UtilEvent;
|
||||||
|
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||||
|
import mineplex.core.common.util.UtilGear;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.core.visibility.VisibilityManager;
|
||||||
|
import mineplex.hub.HubManager;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import java.util.HashMap;
|
||||||
import mineplex.core.common.Rank;
|
import java.util.HashSet;
|
||||||
import mineplex.core.common.util.UtilEvent;
|
|
||||||
import mineplex.core.common.util.UtilGear;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.core.common.util.UtilParticle;
|
|
||||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
|
||||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
|
||||||
import mineplex.core.common.util.UtilParticle.ViewDist;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.visibility.VisibilityManager;
|
|
||||||
import mineplex.hub.HubManager;
|
|
||||||
|
|
||||||
public class HubVisibilityManager extends MiniPlugin
|
public class HubVisibilityManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
@ -64,9 +64,8 @@ public class HubVisibilityManager extends MiniPlugin
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
Rank rank = Manager.GetClients().Get(player).GetRank();
|
Rank rank = Manager.GetClients().Get(player).GetRank();
|
||||||
boolean hideMe = Manager.GetTutorial().InTutorial(player) ||
|
boolean hideMe = UtilMath.offset2d(player.getLocation(), Manager.GetSpawn()) == 0 ||
|
||||||
UtilMath.offset2d(player.getLocation(), Manager.GetSpawn()) == 0 ||
|
(Manager.getPreferences().get(player).isActive(Preference.INVISIBILITY) && (rank.has(Rank.MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH)) ||
|
||||||
(Manager.getPreferences().Get(player).Invisibility && (rank.has(Rank.MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH)) ||
|
|
||||||
_hiddenPlayers.contains(player);
|
_hiddenPlayers.contains(player);
|
||||||
|
|
||||||
for (Player other : UtilServer.getPlayers())
|
for (Player other : UtilServer.getPlayers())
|
||||||
|
@ -78,9 +77,7 @@ public class HubVisibilityManager extends MiniPlugin
|
||||||
if(Manager.GetClients().Get(other).GetRank().has(Rank.MODERATOR))
|
if(Manager.GetClients().Get(other).GetRank().has(Rank.MODERATOR))
|
||||||
localHideMe = false;
|
localHideMe = false;
|
||||||
|
|
||||||
if (localHideMe ||
|
if (localHideMe || !Manager.getPreferences().get(other).isActive(Preference.SHOW_PLAYERS))
|
||||||
!Manager.getPreferences().Get(other).ShowPlayers ||
|
|
||||||
Manager.GetTutorial().InTutorial(other))
|
|
||||||
{
|
{
|
||||||
VisibilityManager.Instance.setVisibility(player, false, other);
|
VisibilityManager.Instance.setVisibility(player, false, other);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,5 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
|
||||||
import org.bukkit.GameMode;
|
|
||||||
import org.bukkit.block.BlockFace;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.UtilAction;
|
import mineplex.core.common.util.UtilAction;
|
||||||
|
@ -22,10 +11,21 @@ import mineplex.core.disguise.disguises.DisguiseBat;
|
||||||
import mineplex.core.disguise.disguises.DisguiseChicken;
|
import mineplex.core.disguise.disguises.DisguiseChicken;
|
||||||
import mineplex.core.disguise.disguises.DisguiseEnderman;
|
import mineplex.core.disguise.disguises.DisguiseEnderman;
|
||||||
import mineplex.core.disguise.disguises.DisguiseWither;
|
import mineplex.core.disguise.disguises.DisguiseWither;
|
||||||
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.recharge.Recharge;
|
import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.hub.HubManager;
|
import mineplex.hub.HubManager;
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class JumpManager extends MiniPlugin
|
public class JumpManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,7 @@ public class JumpManager extends MiniPlugin
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Rank rank = Manager.GetClients().Get(player).GetRank();
|
Rank rank = Manager.GetClients().Get(player).GetRank();
|
||||||
if (Manager.getPreferences().Get(player).Invisibility && (rank.has(Rank.MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH))
|
if (Manager.getPreferences().get(player).isActive(Preference.INVISIBILITY) && (rank.has(Rank.MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ public class JumpManager extends MiniPlugin
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Rank rank = Manager.GetClients().Get(player).GetRank();
|
Rank rank = Manager.GetClients().Get(player).GetRank();
|
||||||
if (Manager.getPreferences().Get(player).Invisibility && (rank.has(Rank.MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH))
|
if (Manager.getPreferences().get(player).isActive(Preference.INVISIBILITY) && (rank.has(Rank.MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH))
|
||||||
{
|
{
|
||||||
player.setAllowFlight(true);
|
player.setAllowFlight(true);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -1,18 +1,5 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.bukkit.Color;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
|
@ -32,6 +19,18 @@ import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.hub.HubManager;
|
import mineplex.hub.HubManager;
|
||||||
import mineplex.hub.modules.koth.CapturePoint;
|
import mineplex.hub.modules.koth.CapturePoint;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class KothManager extends MiniPlugin
|
public class KothManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
@ -59,13 +58,13 @@ public class KothManager extends MiniPlugin
|
||||||
|
|
||||||
Manager = manager;
|
Manager = manager;
|
||||||
|
|
||||||
_cornerPlayerA = new Location(Manager.GetSpawn().getWorld(), -52.5,0,-23.5);
|
_cornerPlayerA = new Location(Manager.GetSpawn().getWorld(), -52.5, 0, -21.5);
|
||||||
_cornerPlayerB = new Location(Manager.GetSpawn().getWorld(), -133.5,200,80.5);
|
_cornerPlayerB = new Location(Manager.GetSpawn().getWorld(), -133.5, 197, 82.5);
|
||||||
|
|
||||||
_cornerHillA = new Location(Manager.GetSpawn().getWorld(), -88.5,60,47.5);
|
_cornerHillA = new Location(Manager.GetSpawn().getWorld(), -88.5, 57, 49.5);
|
||||||
_cornerHillB = new Location(Manager.GetSpawn().getWorld(), -102.5,80,61.5);
|
_cornerHillB = new Location(Manager.GetSpawn().getWorld(), -102.5, 77, 63.5);
|
||||||
|
|
||||||
_cp = new CapturePoint(this, "Desert Pyramid", new Location(Manager.GetSpawn().getWorld(), -95.5,72,54.5));
|
_cp = new CapturePoint(this, "Desert Pyramid", new Location(Manager.GetSpawn().getWorld(), -95.5, 69, 56.5));
|
||||||
|
|
||||||
//Store Gadgets
|
//Store Gadgets
|
||||||
for (Gadget gadget : gadgets.getGadgets(GadgetType.COSTUME))
|
for (Gadget gadget : gadgets.getGadgets(GadgetType.COSTUME))
|
||||||
|
|
|
@ -1,9 +1,29 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import mineplex.core.MiniPlugin;
|
||||||
import java.util.Iterator;
|
import mineplex.core.common.util.C;
|
||||||
import java.util.WeakHashMap;
|
import mineplex.core.common.util.Callback;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilEnt;
|
||||||
|
import mineplex.core.common.util.UtilEvent;
|
||||||
|
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.gadget.event.GadgetBlockEvent;
|
||||||
|
import mineplex.core.gadget.event.GadgetEnableEvent;
|
||||||
|
import mineplex.core.gadget.types.MusicGadget;
|
||||||
|
import mineplex.core.mount.event.MountActivateEvent;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import mineplex.core.task.TaskManager;
|
||||||
|
import mineplex.core.treasure.event.TreasureStartEvent;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.hub.HubManager;
|
||||||
|
import mineplex.hub.modules.parkour.ParkourData;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
|
@ -18,38 +38,47 @@ import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.player.PlayerVelocityEvent;
|
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import java.util.HashSet;
|
||||||
import mineplex.core.common.util.C;
|
import java.util.Iterator;
|
||||||
import mineplex.core.common.util.Callback;
|
import java.util.WeakHashMap;
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilBlock;
|
|
||||||
import mineplex.core.common.util.UtilEnt;
|
|
||||||
import mineplex.core.common.util.UtilEvent;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
|
||||||
import mineplex.core.donation.DonationManager;
|
|
||||||
import mineplex.core.gadget.event.GadgetEnableEvent;
|
|
||||||
import mineplex.core.gadget.event.GadgetBlockEvent;
|
|
||||||
import mineplex.core.gadget.types.MusicGadget;
|
|
||||||
import mineplex.core.mount.event.MountActivateEvent;
|
|
||||||
import mineplex.core.recharge.Recharge;
|
|
||||||
import mineplex.core.task.TaskManager;
|
|
||||||
import mineplex.core.treasure.event.TreasureStartEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.hub.HubManager;
|
|
||||||
import mineplex.hub.modules.parkour.ParkourData;
|
|
||||||
|
|
||||||
public class ParkourManager extends MiniPlugin
|
public class ParkourManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
private final String[] RUINS_DESCRIPTION = {
|
||||||
|
"This is an extremely difficult parkour.",
|
||||||
|
"You will need to find the correct way through",
|
||||||
|
"the ruins, overcoming many challenging jumps.",
|
||||||
|
};
|
||||||
|
|
||||||
|
private final String[] GWEN_DESCRIPTION = {
|
||||||
|
"Can you escape from our Guardians?",
|
||||||
|
"I hear they have infested the water",
|
||||||
|
"sending anyone who falls in back to the start!",
|
||||||
|
};
|
||||||
|
|
||||||
|
private final String[] LAVA_DESCRIPTION = {
|
||||||
|
"This parkour is HOT! It's so hot that you",
|
||||||
|
"must keep sprinting for the entire course,",
|
||||||
|
"or you will die in flames!"
|
||||||
|
};
|
||||||
|
|
||||||
|
private final String[] DESERT_DESCRIPTION = {
|
||||||
|
"Ever heard of Prince of Persia",
|
||||||
|
"well, this isn't as exciting.",
|
||||||
|
"yet...."
|
||||||
|
};
|
||||||
|
|
||||||
|
private final int RUINS_GEMS = 10000;
|
||||||
|
private final int GWEN_GEMS = 4000;
|
||||||
|
private final int LAVA_GEMS = 5000;
|
||||||
|
private final int DESERT_GEMS = 3000;
|
||||||
|
|
||||||
public HubManager Manager;
|
public HubManager Manager;
|
||||||
|
|
||||||
private HashSet<Player> _active = new HashSet<Player>();
|
private HashSet<Player> _active = new HashSet<Player>();
|
||||||
|
@ -58,6 +87,7 @@ public class ParkourManager extends MiniPlugin
|
||||||
|
|
||||||
//private Location _snakeParkourReturn;
|
//private Location _snakeParkourReturn;
|
||||||
private Location _lavaParkourReturn;
|
private Location _lavaParkourReturn;
|
||||||
|
private Location _waterReturn;
|
||||||
private WeakHashMap<Player, Location> _lavaLocation = new WeakHashMap<Player, Location>();
|
private WeakHashMap<Player, Location> _lavaLocation = new WeakHashMap<Player, Location>();
|
||||||
private WeakHashMap<Player, Long> _lavaTimer = new WeakHashMap<Player, Long>();
|
private WeakHashMap<Player, Long> _lavaTimer = new WeakHashMap<Player, Long>();
|
||||||
|
|
||||||
|
@ -74,37 +104,30 @@ public class ParkourManager extends MiniPlugin
|
||||||
_taskManager = task;
|
_taskManager = task;
|
||||||
_donationManager = donation;
|
_donationManager = donation;
|
||||||
|
|
||||||
_parkour.add(new ParkourData("Ruins Parkour", new String[]
|
_parkour.add(new ParkourData("Ruins Parkour", RUINS_DESCRIPTION, RUINS_GEMS,
|
||||||
{
|
new Location(Manager.GetSpawn().getWorld(), 113.5, 66, -46.5),
|
||||||
"This is an extremely difficult parkour.",
|
new Location(Manager.GetSpawn().getWorld(), 124, 86, 18),
|
||||||
"You will need to find the correct way through",
|
new Location(Manager.GetSpawn().getWorld(), 105, 57, -48)));
|
||||||
"the ruins, overcoming many challenging jumps.",
|
|
||||||
},
|
|
||||||
6000, new Location(Manager.GetSpawn().getWorld(), 110,66,-44),
|
|
||||||
new Location(Manager.GetSpawn().getWorld(), 103,100,-60), new Location(Manager.GetSpawn().getWorld(), 150,50,26)));
|
|
||||||
|
|
||||||
|
_parkour.add(new ParkourData("G.W.E.N Parkour", GWEN_DESCRIPTION, GWEN_GEMS,
|
||||||
|
new Location(Manager.GetSpawn().getWorld(), 55.5, 68, -94.5),
|
||||||
|
new Location(Manager.GetSpawn().getWorld(), 106, 96, -142),
|
||||||
|
new Location(Manager.GetSpawn().getWorld(), 52, 61, -81)));
|
||||||
|
|
||||||
_parkour.add(new ParkourData("Lava Parkour", new String[]
|
_parkour.add(new ParkourData("Lava Parkour", LAVA_DESCRIPTION, LAVA_GEMS,
|
||||||
{
|
new Location(Manager.GetSpawn().getWorld(), -95.5, 67, 3.5),
|
||||||
"This parkour is HOT! It's so hot that you",
|
new Location(Manager.GetSpawn().getWorld(), -144, 97, -21),
|
||||||
"must keep sprinting for the entire course,",
|
new Location(Manager.GetSpawn().getWorld(), -88, 62, 41)));
|
||||||
"or you will die in flames!"
|
|
||||||
}, 4000, new Location(Manager.GetSpawn().getWorld(), -93,67,38),
|
|
||||||
new Location(Manager.GetSpawn().getWorld(), -86,100,42), new Location(Manager.GetSpawn().getWorld(), -120,50,-17)));
|
|
||||||
|
|
||||||
// _parkour.add(new ParkourSnake("Snake Parkour", new String[]
|
_parkour.add(new ParkourData("Desert Village Parkour", DESERT_DESCRIPTION, DESERT_GEMS,
|
||||||
// {
|
new Location(Manager.GetSpawn().getWorld(), -63.5, 69, 32.5),
|
||||||
// "This parkour requires incredible timing",
|
new Location(Manager.GetSpawn().getWorld(), -57, 82, -35),
|
||||||
// "and great agility! Some say it was created",
|
new Location(Manager.GetSpawn().getWorld(), -122, 45, 57)));
|
||||||
// "by the devil as a cruel joke!"
|
|
||||||
// }, 8000, new Location(Manager.GetSpawn().getWorld(), 22,70,-54),
|
|
||||||
// new Location(Manager.GetSpawn().getWorld(), 35,-200,-90), new Location(Manager.GetSpawn().getWorld(), -30,250,-46)));
|
|
||||||
|
|
||||||
_lavaParkourReturn = new Location(Manager.GetSpawn().getWorld(), -89.5,68,36.5);
|
_lavaParkourReturn = new Location(Manager.GetSpawn().getWorld(), -89.5, 68, 36.5);
|
||||||
_lavaParkourReturn.setYaw(90);
|
_lavaParkourReturn.setYaw(90);
|
||||||
|
_waterReturn = new Location(Manager.GetSpawn().getWorld(), 56.5, 68, -88.5);
|
||||||
//_snakeParkourReturn = new Location(Manager.GetSpawn().getWorld(), 16.5,72,-52.5);
|
_waterReturn.setYaw(-141);
|
||||||
//_snakeParkourReturn.setYaw(180);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isParkourMode(Player player)
|
public boolean isParkourMode(Player player)
|
||||||
|
@ -121,9 +144,8 @@ public class ParkourManager extends MiniPlugin
|
||||||
|
|
||||||
Manager.GetGadget().disableAll(player);
|
Manager.GetGadget().disableAll(player);
|
||||||
|
|
||||||
player.setVelocity(new Vector(0,-1,0));
|
player.setVelocity(new Vector(0, -1, 0));
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
_active.remove(player);
|
_active.remove(player);
|
||||||
UtilPlayer.message(player, F.main("Parkour", "You have exited " + F.elem("Parkour Mode") + "."));
|
UtilPlayer.message(player, F.main("Parkour", "You have exited " + F.elem("Parkour Mode") + "."));
|
||||||
|
@ -134,38 +156,52 @@ public class ParkourManager extends MiniPlugin
|
||||||
public void playerVelocity(PlayerVelocityEvent event)
|
public void playerVelocity(PlayerVelocityEvent event)
|
||||||
{
|
{
|
||||||
if (isParkourMode(event.getPlayer()))
|
if (isParkourMode(event.getPlayer()))
|
||||||
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void disableGadgets(GadgetEnableEvent event)
|
public void disableGadgets(GadgetEnableEvent event)
|
||||||
{
|
{
|
||||||
if (isParkourMode(event.getPlayer()))
|
if (isParkourMode(event.getPlayer()))
|
||||||
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void disableMounts(MountActivateEvent event)
|
public void disableMounts(MountActivateEvent event)
|
||||||
{
|
{
|
||||||
if (isParkourMode(event.getPlayer()))
|
if (isParkourMode(event.getPlayer()))
|
||||||
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerEnterParkour(UpdateEvent event)
|
public void playerEnterParkour(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FAST)
|
if (event.getType() != UpdateType.FAST)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (isParkourMode(player))
|
if (isParkourMode(player))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
for (ParkourData data : _parkour)
|
for (ParkourData data : _parkour)
|
||||||
if (UtilMath.offset(player.getLocation(), data.NPC) < 6)
|
if (UtilMath.offset(player.getLocation(), data.NPC) < 6)
|
||||||
if (Recharge.Instance.use(player, data.Name+" Info", 300000, false, false))
|
{
|
||||||
|
if (Recharge.Instance.use(player, data.Name + " Info", 300000, false, false))
|
||||||
|
{
|
||||||
data.Inform(player);
|
data.Inform(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +209,9 @@ public class ParkourManager extends MiniPlugin
|
||||||
public void parkourUpdate(UpdateEvent event)
|
public void parkourUpdate(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.TICK)
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Iterator<Player> playerIterator = _active.iterator();
|
Iterator<Player> playerIterator = _active.iterator();
|
||||||
|
|
||||||
|
@ -188,11 +226,10 @@ public class ParkourManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
playerIterator.remove();
|
playerIterator.remove();
|
||||||
UtilPlayer.message(player, F.main("Parkour", "You have exited " + F.elem("Parkour Mode") + "."));
|
UtilPlayer.message(player, F.main("Parkour", "You have exited " + F.elem("Parkour Mode") + "."));
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
|
||||||
for (Iterator<PotionEffect> iterator = player.getActivePotionEffects().iterator(); iterator.hasNext();)
|
for (Iterator<PotionEffect> iterator = player.getActivePotionEffects().iterator(); iterator.hasNext(); )
|
||||||
{
|
{
|
||||||
player.removePotionEffect(iterator.next().getType());
|
player.removePotionEffect(iterator.next().getType());
|
||||||
}
|
}
|
||||||
|
@ -220,13 +257,19 @@ public class ParkourManager extends MiniPlugin
|
||||||
public void disallowBlockPlace(PlayerInteractEvent event)
|
public void disallowBlockPlace(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
if (event.getPlayer().getItemInHand() == null)
|
if (event.getPlayer().getItemInHand() == null)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.getPlayer().getItemInHand().getType().isBlock())
|
if (!event.getPlayer().getItemInHand().getType().isBlock())
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!UtilEvent.isAction(event, ActionType.R_BLOCK))
|
if (!UtilEvent.isAction(event, ActionType.R_BLOCK))
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (isParkourMode(event.getPlayer()))
|
if (isParkourMode(event.getPlayer()))
|
||||||
{
|
{
|
||||||
|
@ -239,7 +282,9 @@ public class ParkourManager extends MiniPlugin
|
||||||
public void lavaReturn(EntityDamageEvent event)
|
public void lavaReturn(EntityDamageEvent event)
|
||||||
{
|
{
|
||||||
if (event.getCause() != DamageCause.LAVA)
|
if (event.getCause() != DamageCause.LAVA)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(event.getEntity() instanceof Player))
|
if (!(event.getEntity() instanceof Player))
|
||||||
{
|
{
|
||||||
|
@ -247,53 +292,62 @@ public class ParkourManager extends MiniPlugin
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player player = (Player)event.getEntity();
|
Player player = (Player) event.getEntity();
|
||||||
|
|
||||||
if (!isParkourMode(player))
|
if (!isParkourMode(player))
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.getEntity().eject();
|
event.getEntity().eject();
|
||||||
event.getEntity().leaveVehicle();
|
event.getEntity().leaveVehicle();
|
||||||
event.getEntity().teleport(_lavaParkourReturn);
|
event.getEntity().teleport(_lavaParkourReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler
|
||||||
// public void snakeReturn(EntityDamageEvent event)
|
public void waterReturn(PlayerMoveEvent event)
|
||||||
// {
|
{
|
||||||
// if (event.getCause() != DamageCause.VOID)
|
Player player = event.getPlayer();
|
||||||
// return;
|
|
||||||
//
|
if (!isParkourMode(player))
|
||||||
// if (!(event.getEntity() instanceof Player))
|
{
|
||||||
// return;
|
return;
|
||||||
//
|
}
|
||||||
// Player player = (Player)event.getEntity();
|
|
||||||
//
|
if (event.getTo().getBlock().getType() == Material.WATER || event.getTo().getBlock().getType() == Material.STATIONARY_WATER)
|
||||||
// if (!isParkourMode(player))
|
{
|
||||||
// return;
|
player.eject();
|
||||||
//
|
player.leaveVehicle();
|
||||||
// event.getEntity().eject();
|
player.teleport(_waterReturn);
|
||||||
// event.getEntity().leaveVehicle();
|
}
|
||||||
// event.getEntity().teleport(_snakeParkourReturn);
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void lavaBlockReturn(UpdateEvent event)
|
public void lavaBlockReturn(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.TICK)
|
if (event.getType() != UpdateType.TICK)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (!UtilEnt.isGrounded(player))
|
if (!UtilEnt.isGrounded(player))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!isParkourMode(player))
|
if (!isParkourMode(player))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
int id = player.getLocation().getBlock().getRelative(BlockFace.DOWN).getTypeId();
|
int id = player.getLocation().getBlock().getRelative(BlockFace.DOWN).getTypeId();
|
||||||
int data = player.getLocation().getBlock().getRelative(BlockFace.DOWN).getData();
|
int data = player.getLocation().getBlock().getRelative(BlockFace.DOWN).getData();
|
||||||
if (id != 0 && id != 112 && id != 114 && !(id == 43 && data == 6) && !(id == 44 && data == 6))
|
if (id != 0 && id != 112 && id != 114 && !(id == 43 && data == 6) && !(id == 44 && data == 6))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!_lavaLocation.containsKey(player) || UtilMath.offset(player.getLocation(), _lavaLocation.get(player)) > 1.5)
|
if (!_lavaLocation.containsKey(player) || UtilMath.offset(player.getLocation(), _lavaLocation.get(player)) > 1.5)
|
||||||
{
|
{
|
||||||
|
@ -315,7 +369,9 @@ public class ParkourManager extends MiniPlugin
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!inCourse)
|
if (!inCourse)
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
_lavaLocation.remove(player);
|
_lavaLocation.remove(player);
|
||||||
_lavaTimer.remove(player);
|
_lavaTimer.remove(player);
|
||||||
|
@ -334,15 +390,21 @@ public class ParkourManager extends MiniPlugin
|
||||||
public void finishParkour(PlayerInteractEntityEvent event)
|
public void finishParkour(PlayerInteractEntityEvent event)
|
||||||
{
|
{
|
||||||
if (event.getRightClicked() == null)
|
if (event.getRightClicked() == null)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(event.getRightClicked() instanceof LivingEntity))
|
if (!(event.getRightClicked() instanceof LivingEntity))
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LivingEntity ent = (LivingEntity)event.getRightClicked();
|
LivingEntity ent = (LivingEntity) event.getRightClicked();
|
||||||
|
|
||||||
if (ent.getCustomName() == null)
|
if (ent.getCustomName() == null)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Start Message
|
//Start Message
|
||||||
if (ent.getCustomName().contains("Start"))
|
if (ent.getCustomName().contains("Start"))
|
||||||
|
@ -352,12 +414,17 @@ public class ParkourManager extends MiniPlugin
|
||||||
for (ParkourData data : _parkour)
|
for (ParkourData data : _parkour)
|
||||||
{
|
{
|
||||||
if (!ent.getCustomName().contains(data.Name))
|
if (!ent.getCustomName().contains(data.Name))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (isParkourMode(player))
|
if (isParkourMode(player))
|
||||||
|
{
|
||||||
setParkourMode(player, false);
|
setParkourMode(player, false);
|
||||||
else
|
} else
|
||||||
|
{
|
||||||
setParkourMode(player, true);
|
setParkourMode(player, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,12 +442,16 @@ public class ParkourManager extends MiniPlugin
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Recharge.Instance.use(player, "Finish Parkour", 30000, false, false))
|
if (!Recharge.Instance.use(player, "Finish Parkour", 30000, false, false))
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (ParkourData data : _parkour)
|
for (ParkourData data : _parkour)
|
||||||
{
|
{
|
||||||
if (!ent.getCustomName().contains(data.Name))
|
if (!ent.getCustomName().contains(data.Name))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
UtilPlayer.message(player, F.main("Parkour", "You completed " + F.elem(data.Name) + "."));
|
UtilPlayer.message(player, F.main("Parkour", "You completed " + F.elem(data.Name) + "."));
|
||||||
|
@ -404,8 +475,7 @@ public class ParkourManager extends MiniPlugin
|
||||||
|
|
||||||
//Sound
|
//Sound
|
||||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
_taskManager.Get(player).TasksCompleted.remove(_taskManager.getTaskId(fData.Name));
|
_taskManager.Get(player).TasksCompleted.remove(_taskManager.getTaskId(fData.Name));
|
||||||
UtilPlayer.message(player, F.main("Parkour", "There was an error giving " + F.elem(C.cGreen + fData.Gems + " Gems to you. Please click the NPC again.") + "."));
|
UtilPlayer.message(player, F.main("Parkour", "There was an error giving " + F.elem(C.cGreen + fData.Gems + " Gems to you. Please click the NPC again.") + "."));
|
||||||
|
@ -425,7 +495,7 @@ public class ParkourManager extends MiniPlugin
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void gadgetBlockChange(GadgetBlockEvent event)
|
public void gadgetBlockChange(GadgetBlockEvent event)
|
||||||
{
|
{
|
||||||
for (Iterator<Block> iterator = event.getBlocks().iterator(); iterator.hasNext();)
|
for (Iterator<Block> iterator = event.getBlocks().iterator(); iterator.hasNext(); )
|
||||||
{
|
{
|
||||||
Block block = iterator.next();
|
Block block = iterator.next();
|
||||||
|
|
||||||
|
@ -444,7 +514,9 @@ public class ParkourManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
for (ParkourData data : _parkour)
|
for (ParkourData data : _parkour)
|
||||||
if (data.InBoundary(loc))
|
if (data.InBoundary(loc))
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +1,5 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.bukkit.Color;
|
|
||||||
import org.bukkit.EntityEffect;
|
|
||||||
import org.bukkit.FireworkEffect.Type;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Bat;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Firework;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.entity.Slime;
|
|
||||||
import org.bukkit.entity.TNTPrimed;
|
|
||||||
import org.bukkit.entity.WitherSkull;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
import org.bukkit.event.player.PlayerVelocityEvent;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
|
@ -50,6 +27,28 @@ import mineplex.core.recharge.Recharge;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.hub.HubManager;
|
import mineplex.hub.HubManager;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.EntityEffect;
|
||||||
|
import org.bukkit.FireworkEffect.Type;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Bat;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Firework;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Slime;
|
||||||
|
import org.bukkit.entity.TNTPrimed;
|
||||||
|
import org.bukkit.entity.WitherSkull;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerVelocityEvent;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class SoccerManager extends MiniPlugin
|
public class SoccerManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
@ -98,20 +97,20 @@ public class SoccerManager extends MiniPlugin
|
||||||
|
|
||||||
_hubManager = hubManager;
|
_hubManager = hubManager;
|
||||||
|
|
||||||
_cornerFieldPlayerA = new Location(hubManager.GetSpawn().getWorld(), 28.5,70,-27.5);
|
_cornerFieldPlayerA = new Location(hubManager.GetSpawn().getWorld(), -13.5, 67, -65.5);
|
||||||
_cornerFieldPlayerB = new Location(hubManager.GetSpawn().getWorld(), 50.5,100,-65.5);
|
_cornerFieldPlayerB = new Location(hubManager.GetSpawn().getWorld(), 25.5, 100, -87.5);
|
||||||
|
|
||||||
_cornerGoalPlayerA = new Location(hubManager.GetSpawn().getWorld(), 35.5,70,-24.5);
|
_cornerGoalPlayerA = new Location(hubManager.GetSpawn().getWorld(), -17.5, 67, -71.5);
|
||||||
_cornerGoalPlayerB = new Location(hubManager.GetSpawn().getWorld(), 43.5,100,-68.5);
|
_cornerGoalPlayerB = new Location(hubManager.GetSpawn().getWorld(), 29.5, 100, -80.5);
|
||||||
|
|
||||||
_cornerFieldA = new Location(hubManager.GetSpawn().getWorld(), 29.75,70,-28.75);
|
_cornerFieldA = new Location(hubManager.GetSpawn().getWorld(), -12.75, 67, -66.75);
|
||||||
_cornerFieldB = new Location(hubManager.GetSpawn().getWorld(), 49.25,100,-64.25);
|
_cornerFieldB = new Location(hubManager.GetSpawn().getWorld(), 24.25, 100, -86.25);
|
||||||
|
|
||||||
_cornerRedGoalA = new Location(hubManager.GetSpawn().getWorld(), 36.75,70,-64.25);
|
_cornerRedGoalA = new Location(hubManager.GetSpawn().getWorld(), 27, 67, -73);
|
||||||
_cornerRedGoalB = new Location(hubManager.GetSpawn().getWorld(), 42.25,73.5,-67.25);
|
_cornerRedGoalB = new Location(hubManager.GetSpawn().getWorld(), 25, 72.5, -79);
|
||||||
|
|
||||||
_cornerBlueGoalA = new Location(hubManager.GetSpawn().getWorld(), 36.75,70,-25.75);
|
_cornerBlueGoalA = new Location(hubManager.GetSpawn().getWorld(), -15, 67, -79);
|
||||||
_cornerBlueGoalB = new Location(hubManager.GetSpawn().getWorld(), 42.25,73.5,-28.75);
|
_cornerBlueGoalB = new Location(hubManager.GetSpawn().getWorld(), -13, 72.5, -73);
|
||||||
|
|
||||||
//Store Gadgets
|
//Store Gadgets
|
||||||
for (Gadget gadget : gadgetManager.getGadgets(GadgetType.COSTUME))
|
for (Gadget gadget : gadgetManager.getGadgets(GadgetType.COSTUME))
|
||||||
|
@ -135,7 +134,7 @@ public class SoccerManager extends MiniPlugin
|
||||||
_redGoals = 0;
|
_redGoals = 0;
|
||||||
|
|
||||||
if (_ball != null)
|
if (_ball != null)
|
||||||
_ball.remove();;
|
_ball.remove();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,21 @@
|
||||||
package mineplex.hub.modules;
|
package mineplex.hub.modules;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import mineplex.core.MiniPlugin;
|
||||||
import java.util.Iterator;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilEnt;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilWorld;
|
||||||
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
|
import mineplex.core.npc.NpcManager;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.hub.Hub;
|
||||||
|
import mineplex.hub.HubManager;
|
||||||
|
import mineplex.hub.HubType;
|
||||||
|
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -38,19 +51,8 @@ import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
import org.bukkit.event.player.PlayerPickupItemEvent;
|
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||||
import org.bukkit.event.weather.WeatherChangeEvent;
|
import org.bukkit.event.weather.WeatherChangeEvent;
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import java.util.HashSet;
|
||||||
import mineplex.core.common.util.C;
|
import java.util.Iterator;
|
||||||
import mineplex.core.common.util.UtilBlock;
|
|
||||||
import mineplex.core.common.util.UtilEnt;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.common.util.UtilWorld;
|
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.hub.HubManager;
|
|
||||||
import mineplex.hub.HubType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
|
|
||||||
public class WorldManager extends MiniPlugin
|
public class WorldManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
|
@ -73,18 +75,24 @@ public class WorldManager extends MiniPlugin
|
||||||
world.setGameRuleValue("doDaylightCycle", "false");
|
world.setGameRuleValue("doDaylightCycle", "false");
|
||||||
|
|
||||||
if (Manager.Type == HubType.Halloween)
|
if (Manager.Type == HubType.Halloween)
|
||||||
|
{
|
||||||
world.setTime(16000);
|
world.setTime(16000);
|
||||||
else
|
} else
|
||||||
|
{
|
||||||
world.setTime(6000);
|
world.setTime(6000);
|
||||||
|
}
|
||||||
world.setStorm(false);
|
world.setStorm(false);
|
||||||
world.setThundering(false);
|
world.setThundering(false);
|
||||||
|
fixEntities();
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void SpawnAnimals(UpdateEvent event)
|
public void SpawnAnimals(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.SLOW)
|
if (event.getType() != UpdateType.SLOW)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Iterator<LivingEntity> entIterator = _mobs.iterator();
|
Iterator<LivingEntity> entIterator = _mobs.iterator();
|
||||||
|
|
||||||
|
@ -100,16 +108,25 @@ public class WorldManager extends MiniPlugin
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_mobs.size() > 16)
|
if (_mobs.size() > 16)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Loc
|
//Loc
|
||||||
double r = Math.random();
|
double r = Math.random();
|
||||||
|
|
||||||
Location loc = Manager.GetSpawn();
|
Location loc = Manager.GetSpawn();
|
||||||
|
|
||||||
if (r > 0.66) loc = new Location(Manager.GetSpawn().getWorld(), -9, 72, 42);
|
if (r > 0.66)
|
||||||
else if (r > 0.33) loc = new Location(Manager.GetSpawn().getWorld(), -36, 72, -28);
|
{
|
||||||
else loc = new Location(Manager.GetSpawn().getWorld(), 43, 72, 5);
|
loc = new Location(Manager.GetSpawn().getWorld(), -9, 72, 42);
|
||||||
|
} else if (r > 0.33)
|
||||||
|
{
|
||||||
|
loc = new Location(Manager.GetSpawn().getWorld(), -36, 72, -28);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
loc = new Location(Manager.GetSpawn().getWorld(), 43, 72, 5);
|
||||||
|
}
|
||||||
|
|
||||||
//Spawn
|
//Spawn
|
||||||
if (Manager.Type == HubType.Halloween)
|
if (Manager.Type == HubType.Halloween)
|
||||||
|
@ -117,7 +134,9 @@ public class WorldManager extends MiniPlugin
|
||||||
Skeleton ent = loc.getWorld().spawn(loc, Skeleton.class);
|
Skeleton ent = loc.getWorld().spawn(loc, Skeleton.class);
|
||||||
|
|
||||||
if (Math.random() > 0.5)
|
if (Math.random() > 0.5)
|
||||||
|
{
|
||||||
ent.setSkeletonType(SkeletonType.WITHER);
|
ent.setSkeletonType(SkeletonType.WITHER);
|
||||||
|
}
|
||||||
|
|
||||||
ent.getEquipment().setHelmet(ItemStackFactory.Instance.CreateStack(Material.PUMPKIN));
|
ent.getEquipment().setHelmet(ItemStackFactory.Instance.CreateStack(Material.PUMPKIN));
|
||||||
|
|
||||||
|
@ -128,18 +147,23 @@ public class WorldManager extends MiniPlugin
|
||||||
|
|
||||||
Manager.GetCondition().Factory().Invisible("Perm", ent, ent, 999999999, 0, false, false, true);
|
Manager.GetCondition().Factory().Invisible("Perm", ent, ent, 999999999, 0, false, false, true);
|
||||||
Manager.GetCondition().Factory().Slow("Perm", ent, ent, 999999999, 1, false, false, false, true);
|
Manager.GetCondition().Factory().Slow("Perm", ent, ent, 999999999, 1, false, false, false, true);
|
||||||
}
|
} else if (Manager.Type == HubType.Christmas)
|
||||||
else if (Manager.Type == HubType.Christmas)
|
|
||||||
{
|
{
|
||||||
_mobs.add(loc.getWorld().spawn(loc, Snowman.class));
|
_mobs.add(loc.getWorld().spawn(loc, Snowman.class));
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
r = Math.random();
|
r = Math.random();
|
||||||
|
|
||||||
if (r > 0.66) _mobs.add(loc.getWorld().spawn(loc, Cow.class));
|
if (r > 0.66)
|
||||||
else if (r > 0.33) _mobs.add(loc.getWorld().spawn(loc, Pig.class));
|
{
|
||||||
else _mobs.add(loc.getWorld().spawn(loc, Chicken.class));
|
_mobs.add(loc.getWorld().spawn(loc, Cow.class));
|
||||||
|
} else if (r > 0.33)
|
||||||
|
{
|
||||||
|
_mobs.add(loc.getWorld().spawn(loc, Pig.class));
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
_mobs.add(loc.getWorld().spawn(loc, Chicken.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,7 +171,9 @@ public class WorldManager extends MiniPlugin
|
||||||
public void BlockBreak(BlockBreakEvent event)
|
public void BlockBreak(BlockBreakEvent event)
|
||||||
{
|
{
|
||||||
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -192,7 +218,9 @@ public class WorldManager extends MiniPlugin
|
||||||
public void BlockPlace(BlockPlaceEvent event)
|
public void BlockPlace(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -201,11 +229,13 @@ public class WorldManager extends MiniPlugin
|
||||||
public void BorderUpdate(UpdateEvent event)
|
public void BorderUpdate(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FASTEST)
|
if (event.getType() != UpdateType.FASTEST)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (UtilMath.offset(player.getLocation(), Manager.GetSpawn()) > 200)
|
if (UtilMath.offset(player.getLocation(), Manager.GetSpawn()) > 210)
|
||||||
{
|
{
|
||||||
player.eject();
|
player.eject();
|
||||||
player.leaveVehicle();
|
player.leaveVehicle();
|
||||||
|
@ -218,7 +248,9 @@ public class WorldManager extends MiniPlugin
|
||||||
public void ItemPickup(PlayerPickupItemEvent event)
|
public void ItemPickup(PlayerPickupItemEvent event)
|
||||||
{
|
{
|
||||||
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -227,7 +259,9 @@ public class WorldManager extends MiniPlugin
|
||||||
public void ItemDrop(PlayerDropItemEvent event)
|
public void ItemDrop(PlayerDropItemEvent event)
|
||||||
{
|
{
|
||||||
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
if (event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -236,24 +270,35 @@ public class WorldManager extends MiniPlugin
|
||||||
public void ItemDespawn(UpdateEvent event)
|
public void ItemDespawn(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.SEC)
|
if (event.getType() != UpdateType.SEC)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (Entity ent : UtilWorld.getWorld("world").getEntities())
|
for (Entity ent : UtilWorld.getWorld("world").getEntities())
|
||||||
{
|
{
|
||||||
if (!(ent instanceof Item))
|
if (!(ent instanceof Item))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (((Item)ent).getItemStack().getType() == Material.MONSTER_EGG)
|
if (((Item) ent).getItemStack().getType() == Material.MONSTER_EGG)
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (UtilEnt.GetMetadata(ent, "UtilItemSpawning") != null)
|
if (UtilEnt.GetMetadata(ent, "UtilItemSpawning") != null)
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (ent.getTicksLived() > 1200)
|
if (ent.getTicksLived() > 1200)
|
||||||
|
{
|
||||||
ent.remove();
|
ent.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Removed by TheMineBench, time is now stopped when the WorldManager is created
|
|
||||||
|
//Removed by TheMineBench, time is now stopped when the WorldManager is created
|
||||||
/*
|
/*
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void UpdateWeather(UpdateEvent event)
|
public void UpdateWeather(UpdateEvent event)
|
||||||
|
@ -273,10 +318,13 @@ public class WorldManager extends MiniPlugin
|
||||||
*/
|
*/
|
||||||
//Added by TheMineBench. Stops weather from changing.
|
//Added by TheMineBench. Stops weather from changing.
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void OnWeather(WeatherChangeEvent event) {
|
public void OnWeather(WeatherChangeEvent event)
|
||||||
|
{
|
||||||
|
|
||||||
if (!event.getWorld().getName().equals("world"))
|
if (!event.getWorld().getName().equals("world"))
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -285,10 +333,14 @@ public class WorldManager extends MiniPlugin
|
||||||
public void HalloweenUpdates(UpdateEvent event)
|
public void HalloweenUpdates(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FAST)
|
if (event.getType() != UpdateType.FAST)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (Manager.Type != HubType.Halloween)
|
if (Manager.Type != HubType.Halloween)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Block Lightup
|
//Block Lightup
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
|
@ -296,7 +348,9 @@ public class WorldManager extends MiniPlugin
|
||||||
for (Block block : UtilBlock.getInRadius(player.getLocation(), 3d).keySet())
|
for (Block block : UtilBlock.getInRadius(player.getLocation(), 3d).keySet())
|
||||||
{
|
{
|
||||||
if (block.getType() == Material.PUMPKIN)
|
if (block.getType() == Material.PUMPKIN)
|
||||||
|
{
|
||||||
Manager.GetBlockRestore().add(block, 91, block.getData(), 2000);
|
Manager.GetBlockRestore().add(block, 91, block.getData(), 2000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,15 +358,16 @@ public class WorldManager extends MiniPlugin
|
||||||
for (LivingEntity ent : _mobs)
|
for (LivingEntity ent : _mobs)
|
||||||
{
|
{
|
||||||
if (!(ent instanceof Creature))
|
if (!(ent instanceof Creature))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Creature skel = (Creature)ent;
|
Creature skel = (Creature) ent;
|
||||||
|
|
||||||
if (skel.getTarget() != null && skel.getTarget() instanceof Player && UtilMath.offset(skel, skel.getTarget()) < 6)
|
if (skel.getTarget() != null && skel.getTarget() instanceof Player && UtilMath.offset(skel, skel.getTarget()) < 6)
|
||||||
{
|
{
|
||||||
skel.getEquipment().setHelmet(ItemStackFactory.Instance.CreateStack(Material.JACK_O_LANTERN));
|
skel.getEquipment().setHelmet(ItemStackFactory.Instance.CreateStack(Material.JACK_O_LANTERN));
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
skel.getEquipment().setHelmet(ItemStackFactory.Instance.CreateStack(Material.PUMPKIN));
|
skel.getEquipment().setHelmet(ItemStackFactory.Instance.CreateStack(Material.PUMPKIN));
|
||||||
}
|
}
|
||||||
|
@ -323,13 +378,19 @@ public class WorldManager extends MiniPlugin
|
||||||
public void SoundUpdate(UpdateEvent event)
|
public void SoundUpdate(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (Manager.Type != HubType.Halloween)
|
if (Manager.Type != HubType.Halloween)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (event.getType() != UpdateType.SLOW)
|
if (event.getType() != UpdateType.SLOW)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (Math.random() > 0.1)
|
if (Math.random() > 0.1)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
player.playSound(player.getLocation(), Sound.AMBIENCE_CAVE, 3f, 1f);
|
player.playSound(player.getLocation(), Sound.AMBIENCE_CAVE, 3f, 1f);
|
||||||
|
@ -354,7 +415,9 @@ public class WorldManager extends MiniPlugin
|
||||||
public void BoatBreak(CustomDamageEvent event)
|
public void BoatBreak(CustomDamageEvent event)
|
||||||
{
|
{
|
||||||
if (event.GetDamageeEntity() instanceof Boat)
|
if (event.GetDamageeEntity() instanceof Boat)
|
||||||
|
{
|
||||||
event.SetCancelled("Boat Cancel");
|
event.SetCancelled("Boat Cancel");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -365,4 +428,19 @@ public class WorldManager extends MiniPlugin
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void fixEntities()
|
||||||
|
{
|
||||||
|
NpcManager npcManager = ((Hub) Manager.getPlugin()).getNpcManager();
|
||||||
|
runSyncLater(() -> Manager.GetSpawn().getWorld().getEntities().stream().filter(e -> npcManager.getNpcByEntity(e) != null).forEach(e ->
|
||||||
|
{
|
||||||
|
if(e.isCustomNameVisible() && ChatColor.stripColor(e.getCustomName()).equalsIgnoreCase("Carl the Creeper") || ChatColor.stripColor(e.getCustomName()).equalsIgnoreCase("Mineplex Player Servers"))
|
||||||
|
{
|
||||||
|
e.teleport(new Location(e.getWorld(), e.getLocation().getX(), e.getLocation().getY(), e.getLocation().getZ(), 180f, 0f));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
float pitch = e.getLocation().getBlockX() > 0 ? 90 : 270;
|
||||||
|
e.teleport(new Location(e.getWorld(), e.getLocation().getX(), e.getLocation().getY(), e.getLocation().getZ(), pitch, 0f));
|
||||||
|
}), 120L);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,15 +3,11 @@ package mineplex.hub.profile.buttons;
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.gui.GuiItem;
|
import mineplex.core.gui.GuiItem;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
|
||||||
import mineplex.hub.profile.gui.GUIProfile;
|
import mineplex.hub.profile.gui.GUIProfile;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.SkullMeta;
|
|
||||||
|
|
||||||
public class ButtonPrefs implements GuiItem
|
public class ButtonPrefs implements GuiItem
|
||||||
{
|
{
|
||||||
|
@ -28,7 +24,7 @@ public class ButtonPrefs implements GuiItem
|
||||||
@Override
|
@Override
|
||||||
public void click(ClickType clickType)
|
public void click(ClickType clickType)
|
||||||
{
|
{
|
||||||
_profile.getPrefManager().openShop(_player);
|
_profile.getPrefManager().openMenu(_player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue