Merge branch 'master' of ssh://184.154.0.242:7999/min/mineplex

This commit is contained in:
Chiss 2014-12-23 18:39:22 +11:00
commit 07d82b8206
23 changed files with 700 additions and 15 deletions

View File

@ -3,6 +3,7 @@
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/Classpath.Dummy/Classpath.Dummy.iml" filepath="$PROJECT_DIR$/Classpath.Dummy/Classpath.Dummy.iml" group="Core" /> <module fileurl="file://$PROJECT_DIR$/Classpath.Dummy/Classpath.Dummy.iml" filepath="$PROJECT_DIR$/Classpath.Dummy/Classpath.Dummy.iml" group="Core" />
<module fileurl="file://$PROJECT_DIR$/JedisTest/JedisTest.iml" filepath="$PROJECT_DIR$/JedisTest/JedisTest.iml" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml" filepath="$PROJECT_DIR$/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml" group="Bungee" /> <module fileurl="file://$PROJECT_DIR$/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml" filepath="$PROJECT_DIR$/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml" group="Bungee" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.Core/Mineplex.Core.iml" filepath="$PROJECT_DIR$/Mineplex.Core/Mineplex.Core.iml" group="Core" /> <module fileurl="file://$PROJECT_DIR$/Mineplex.Core/Mineplex.Core.iml" filepath="$PROJECT_DIR$/Mineplex.Core/Mineplex.Core.iml" group="Core" />
<module fileurl="file://$PROJECT_DIR$/Mineplex.Core.Common/Mineplex.Core.Common.iml" filepath="$PROJECT_DIR$/Mineplex.Core.Common/Mineplex.Core.Common.iml" group="Core" /> <module fileurl="file://$PROJECT_DIR$/Mineplex.Core.Common/Mineplex.Core.Common.iml" filepath="$PROJECT_DIR$/Mineplex.Core.Common/Mineplex.Core.Common.iml" group="Core" />

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="jedis" level="project" />
<orderEntry type="library" name="commons-pool2" level="project" />
</component>
</module>

View File

@ -0,0 +1,93 @@
package ca.phinary.jedistest;
import javax.swing.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import ca.phinary.jedistest.gui.ChatFrame;
import ca.phinary.jedistest.model.JedisChat;
public class Main
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (InstantiationException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
catch (UnsupportedLookAndFeelException e)
{
e.printStackTrace();
}
ChatFrame chatFrame = new ChatFrame();
final JedisChat jedisChat = new JedisChat(chatFrame, "phinaryTest", "10.33.53.16", 6379);
chatFrame.addWindowListener(new WindowListener()
{
@Override
public void windowOpened(WindowEvent e)
{
}
@Override
public void windowClosing(WindowEvent e)
{
}
@Override
public void windowClosed(WindowEvent e)
{
jedisChat.close();
}
@Override
public void windowIconified(WindowEvent e)
{
}
@Override
public void windowDeiconified(WindowEvent e)
{
}
@Override
public void windowActivated(WindowEvent e)
{
}
@Override
public void windowDeactivated(WindowEvent e)
{
}
});
}
});
}
}

View File

@ -0,0 +1,8 @@
package ca.phinary.jedistest.api;
public interface Chat
{
public void addListener(ChatListener chatListener);
public void clearListeners();
}

View File

@ -0,0 +1,6 @@
package ca.phinary.jedistest.api;
public interface ChatListener
{
public void onChat(String message);
}

View File

@ -0,0 +1,6 @@
package ca.phinary.jedistest.api;
public interface Console
{
public void println(String line);
}

View File

@ -0,0 +1,9 @@
package ca.phinary.jedistest.api;
public interface Messenger
{
public Chat getChat();
public Console getConsole();
}

View File

@ -0,0 +1,42 @@
package ca.phinary.jedistest.gui;
import javax.swing.*;
import java.awt.*;
import ca.phinary.jedistest.api.Chat;
import ca.phinary.jedistest.api.Console;
import ca.phinary.jedistest.api.Messenger;
public class ChatFrame extends JFrame implements Messenger
{
private ConsolePane _console;
private ChatPane _chat;
public ChatFrame()
{
setLayout(new BorderLayout());
_console = new ConsolePane();
_chat = new ChatPane(this);
add(_console, BorderLayout.CENTER);
add(_chat, BorderLayout.SOUTH);
setTitle("Phinary's Redis Chat");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public Console getConsole()
{
return _console;
}
public Chat getChat()
{
return _chat;
}
}

View File

@ -0,0 +1,60 @@
package ca.phinary.jedistest.gui;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import ca.phinary.jedistest.api.Chat;
import ca.phinary.jedistest.api.ChatListener;
public class ChatPane extends JPanel implements ActionListener, Chat
{
private ArrayList<ChatListener> _chatListeners;
private JTextField _textField;
private JButton _sendButton;
public ChatPane(JFrame frame)
{
_chatListeners = new ArrayList<ChatListener>();
_textField = new JTextField();
_sendButton = new JButton("Send");
setBorder(new EmptyBorder(5, 10, 5, 10));
setLayout(new BorderLayout());
add(_textField, BorderLayout.CENTER);
add(_sendButton, BorderLayout.EAST);
_sendButton.addActionListener(this);
frame.getRootPane().setDefaultButton(_sendButton);
}
@Override
public void actionPerformed(ActionEvent e)
{
String text = _textField.getText();
for (ChatListener listener : _chatListeners)
{
listener.onChat(text);
}
_textField.setText("");
}
@Override
public void addListener(ChatListener chatListener)
{
_chatListeners.add(chatListener);
}
@Override
public void clearListeners()
{
_chatListeners.clear();
}
}

View File

@ -0,0 +1,33 @@
package ca.phinary.jedistest.gui;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import ca.phinary.jedistest.api.Console;
public class ConsolePane extends JPanel implements Console
{
private JScrollPane _scrollPane;
private JTextArea _textArea;
public ConsolePane()
{
_textArea = new JTextArea();
_textArea.setEditable(false);
_textArea.setPreferredSize(new Dimension(800, 400));
_scrollPane = new JScrollPane(_textArea);
_scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
setLayout(new BorderLayout());
setBorder(new TitledBorder("Console"));
add(_scrollPane, BorderLayout.CENTER);
}
public synchronized void println(String line)
{
_textArea.append(line + "\n");
}
}

View File

@ -0,0 +1,51 @@
package ca.phinary.jedistest.model;
import ca.phinary.jedistest.api.Messenger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisChat
{
private JedisPool _jedisPool;
private String _channel;
private Messenger _messenger;
private JedisPublisher _publisher;
public JedisChat(Messenger messenger, final String channel, String host, int port)
{
_jedisPool = new JedisPool(new JedisPoolConfig(), host, port);
_channel = channel;
_messenger = messenger;
_publisher = new JedisPublisher(messenger.getConsole(), _jedisPool, channel);
_messenger.getChat().addListener(_publisher);
startListen();
}
public void startListen()
{
_messenger.getConsole().println("Attempting to connect to redis server...");
try
{
final Jedis jedis = _jedisPool.getResource();
_messenger.getConsole().println("Successfully connected!");
SubscribeWorker worker = new SubscribeWorker(_messenger.getConsole(), _jedisPool, _channel);
worker.execute();
} catch (Exception e)
{
_messenger.getConsole().println("Failed to connect to redis server!");
}
}
public void close()
{
System.out.println("close");
_publisher.close();
}
}

View File

@ -0,0 +1,93 @@
package ca.phinary.jedistest.model;
import javax.swing.*;
import java.net.InetAddress;
import java.util.List;
import ca.phinary.jedistest.api.ChatListener;
import ca.phinary.jedistest.api.Console;
import redis.clients.jedis.JedisPool;
public class JedisPublisher implements ChatListener
{
private Console _console;
private JedisPool _jedisPool;
private String _channelName;
public JedisPublisher(Console console, JedisPool jedisPool, String channelName)
{
_console = console;
_jedisPool = jedisPool;
_channelName = channelName;
sendConnectMessage();
}
@Override
public void onChat(String message)
{
String hostName = "Unknown";
try
{
hostName = InetAddress.getLocalHost().toString();
}
catch(Exception e) { };
message(hostName + " > " + message);
}
private void sendConnectMessage()
{
String hostName = "Unknown";
try
{
hostName = InetAddress.getLocalHost().toString();
}
catch(Exception e) { };
message(hostName + " has connected to the channel");
}
public void close()
{
String hostName = "Unknown";
try
{
hostName = InetAddress.getLocalHost().toString();
}
catch(Exception e) { };
message(hostName + " has disconnected from the channel");
}
private void message(final String text)
{
new SwingWorker<Void, String>()
{
@Override
protected Void doInBackground() throws Exception
{
try
{
_jedisPool.getResource().publish(_channelName, text);
}
catch (Exception e)
{
publish("Failed to send message: " + e.getMessage());
}
return null;
}
@Override
protected void process(List<String> chunks)
{
for (String s : chunks)
_console.println(s);
}
}.execute();
}
}

View File

@ -0,0 +1,49 @@
package ca.phinary.jedistest.model;
import redis.clients.jedis.JedisPubSub;
public class JedisSubscriber extends JedisPubSub
{
private SubscribeWorker _jedisWorker;
public JedisSubscriber(SubscribeWorker jedisWorker)
{
_jedisWorker = jedisWorker;
}
@Override
public void onMessage(String channel, String message)
{
_jedisWorker.onMessage(message);
}
@Override
public void onPMessage(String s, String s1, String s2)
{
System.out.println("Pmessage:" + s + " " + s1 + " " + s2);
}
@Override
public void onSubscribe(String s, int i)
{
System.out.println("Subcribe: s " + i);
}
@Override
public void onUnsubscribe(String s, int i)
{
System.out.println("UnSubcribe: s " + i);
}
@Override
public void onPUnsubscribe(String s, int i)
{
System.out.println("PUnSubcribe: s " + i);
}
@Override
public void onPSubscribe(String s, int i)
{
System.out.println("Subcribe: s " + i);
}
}

View File

@ -0,0 +1,56 @@
package ca.phinary.jedistest.model;
import javax.swing.*;
import java.util.List;
import ca.phinary.jedistest.api.Console;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class SubscribeWorker extends SwingWorker<Void, String>
{
private Console _console;
private JedisPool _jedisPool;
private JedisSubscriber _jedisSubscriber;
private String _channel;
public SubscribeWorker(Console console, JedisPool jedisPool, String channel)
{
_console = console;
_jedisPool = jedisPool;
_jedisSubscriber = new JedisSubscriber(this);
_channel = channel;
}
@Override
protected Void doInBackground() throws Exception
{
publish("Attempting to connect to channel: " + _channel);
try
{
Jedis j = _jedisPool.getResource();
publish("Successfully connected to channel!");
_jedisPool.getResource().subscribe(_jedisSubscriber, _channel);
} catch (Exception e)
{
publish("Connection to channel failed:" + e.getMessage());
}
return null;
}
public void onMessage(String s)
{
publish(s);
}
@Override
protected void process(List<String> chunks)
{
for (String s : chunks)
{
_console.println(s);
}
}
}

View File

@ -7,6 +7,8 @@ import org.bukkit.event.EventHandler;
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.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import mineplex.core.MiniPlugin; import mineplex.core.MiniPlugin;
import mineplex.core.account.CoreClientManager; import mineplex.core.account.CoreClientManager;
@ -159,9 +161,14 @@ public class AchievementManager extends MiniPlugin
public void giveInterfaceItem(Player player) public void giveInterfaceItem(Player player)
{ {
if (!UtilGear.isMat(player.getInventory().getItem(_interfaceSlot), Material.CHEST)) if (!UtilGear.isMat(player.getInventory().getItem(_interfaceSlot), Material.SKULL_ITEM))
{ {
player.getInventory().setItem(_interfaceSlot, ItemStackFactory.Instance.CreateStack(Material.PAPER, (byte)0, 1, ChatColor.RESET + C.cGreen + "/stats")); ItemStack item = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte) 3, 1, ChatColor.RESET + C.cGreen + "/stats");
SkullMeta meta = ((SkullMeta) item.getItemMeta());
meta.setOwner(player.getName());
item.setItemMeta(meta);
player.getInventory().setItem(_interfaceSlot, item);
UtilInv.Update(player); UtilInv.Update(player);
} }
@ -170,7 +177,7 @@ public class AchievementManager extends MiniPlugin
@EventHandler @EventHandler
public void openShop(PlayerInteractEvent event) public void openShop(PlayerInteractEvent event)
{ {
if (event.hasItem() && event.getItem().getType() == Material.PAPER) if (event.hasItem() && event.getItem().getType() == Material.SKULL_ITEM)
{ {
event.setCancelled(true); event.setCancelled(true);

View File

@ -91,6 +91,7 @@ import mineplex.hub.modules.JumpManager;
import mineplex.hub.modules.MapManager; import mineplex.hub.modules.MapManager;
import mineplex.hub.modules.NewsManager; import mineplex.hub.modules.NewsManager;
import mineplex.hub.modules.ParkourManager; import mineplex.hub.modules.ParkourManager;
import mineplex.hub.modules.PrivateServerManager;
import mineplex.hub.modules.TextManager; import mineplex.hub.modules.TextManager;
import mineplex.hub.modules.UHCManager; import mineplex.hub.modules.UHCManager;
import mineplex.hub.modules.VisibilityManager; import mineplex.hub.modules.VisibilityManager;
@ -202,6 +203,8 @@ public class HubManager extends MiniClientPlugin<HubClient>
// NotificationManager notificationManager = new NotificationManager(plugin, clientManager, donationManager); // NotificationManager notificationManager = new NotificationManager(plugin, clientManager, donationManager);
// new MailManager(_plugin, notificationManager); // new MailManager(_plugin, notificationManager);
new PrivateServerManager(_plugin);
_ruleBook = ItemStackFactory.Instance.CreateStack(Material.WRITTEN_BOOK, (byte)0, 1, ChatColor.GREEN + "Rule Book", new String[] { }); _ruleBook = ItemStackFactory.Instance.CreateStack(Material.WRITTEN_BOOK, (byte)0, 1, ChatColor.GREEN + "Rule Book", new String[] { });
BookMeta meta = (BookMeta)_ruleBook.getItemMeta(); BookMeta meta = (BookMeta)_ruleBook.getItemMeta();
@ -544,7 +547,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
player.setHealth(20); player.setHealth(20);
//Rules //Rules
player.getInventory().setItem(6, _ruleBook); player.getInventory().setItem(2, _ruleBook);
//Scoreboard //Scoreboard
Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard(); Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();

View File

@ -0,0 +1,22 @@
package mineplex.hub.commands;
import org.bukkit.entity.Player;
import mineplex.core.command.CommandBase;
import mineplex.core.common.Rank;
import mineplex.hub.modules.PrivateServerManager;
public class HostServerCommand extends CommandBase<PrivateServerManager>
{
public HostServerCommand(PrivateServerManager plugin)
{
super(plugin, Rank.HERO, "hostserver");
}
@Override
public void Execute(Player caller, String[] args)
{
// TODO
Plugin.hostServer(caller);
}
}

View File

@ -0,0 +1,57 @@
package mineplex.hub.modules;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.MiniPlugin;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.hub.commands.HostServerCommand;
public class PrivateServerManager extends MiniPlugin
{
private int _interfaceSlot = 6;
private ItemStack _interfaceItem;
private boolean _giveInterfaceItem = true;
public PrivateServerManager(JavaPlugin plugin)
{
super("Private Server", plugin);
_interfaceItem = ItemStackFactory.Instance.CreateStack(Material.SPECKLED_MELON, (byte)0, 1, C.cGreen + "/hostserver");
}
@EventHandler
public void onJoin(PlayerJoinEvent event)
{
if (_giveInterfaceItem)
{
event.getPlayer().getInventory().setItem(_interfaceSlot, _interfaceItem);
}
}
@EventHandler
public void openServer(PlayerInteractEvent event)
{
if (_interfaceItem.equals(event.getPlayer().getItemInHand()))
{
hostServer(event.getPlayer());
}
}
public void hostServer(Player player)
{
//do stuff????
}
@Override
public void AddCommands()
{
addCommand(new HostServerCommand(this));
}
}

View File

@ -247,7 +247,7 @@ public class ServerNpcPage extends ShopPageBase<ServerManager, ServerNpcShop> im
} }
} }
AddButton(40, new ShopItem(Material.GOLD_BLOCK, C.cAqua + yellowCount + " Game" + (yellowCount == 1 ? "" : "s") + " In Progress", new String[]{MESSAGE_SPECTATE}, yellowCount > 64 ? 1 : yellowCount, false), new IButton() AddButton(40, new ShopItem(Material.GOLD_BLOCK, C.cAqua + yellowCount + " Game" + (yellowCount == 1 ? "" : "s") + " In Progress", new String[]{MESSAGE_SPECTATE}, yellowCount > 64 ? 64 : yellowCount, false), new IButton()
{ {
@Override @Override
public void onClick(Player player, ClickType clickType) public void onClick(Player player, ClickType clickType)

View File

@ -0,0 +1,37 @@
package nautilus.game.arcade.gui.privateServer.button;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import mineplex.core.shop.item.IButton;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.gui.privateServer.page.MenuPage;
public class PlayerHeadButton implements IButton
{
private ArcadeManager _arcadeManager;
private MenuPage _menuPage;
public PlayerHeadButton(ArcadeManager arcadeManager, MenuPage menuPage)
{
_arcadeManager = arcadeManager;
_menuPage = menuPage;
}
@Override
public void onClick(Player player, ClickType clickType)
{
int maxPlayers = _arcadeManager.GetServerConfig().MaxPlayers;
int newMax;
int maxCap = _arcadeManager.GetGameHostManager().getMaxPlayerCap();
if (clickType.isLeftClick())
newMax = ++maxPlayers > maxCap ? maxCap : maxPlayers;
else
newMax = --maxPlayers < 2 ? 2 : maxPlayers;
_arcadeManager.GetServerConfig().MaxPlayers = newMax;
_menuPage.Refresh();
}
}

View File

@ -1,11 +1,15 @@
package nautilus.game.arcade.gui.privateServer.page; package nautilus.game.arcade.gui.privateServer.page;
import java.util.ArrayList;
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.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilServer;
import mineplex.core.shop.item.ShopItem; import mineplex.core.shop.item.ShopItem;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.gui.privateServer.PrivateServerShop; import nautilus.game.arcade.gui.privateServer.PrivateServerShop;
@ -13,6 +17,7 @@ import nautilus.game.arcade.gui.privateServer.button.BanButton;
import nautilus.game.arcade.gui.privateServer.button.EditRotationButton; import nautilus.game.arcade.gui.privateServer.button.EditRotationButton;
import nautilus.game.arcade.gui.privateServer.button.GiveAdminButton; import nautilus.game.arcade.gui.privateServer.button.GiveAdminButton;
import nautilus.game.arcade.gui.privateServer.button.KillButton; import nautilus.game.arcade.gui.privateServer.button.KillButton;
import nautilus.game.arcade.gui.privateServer.button.PlayerHeadButton;
import nautilus.game.arcade.gui.privateServer.button.RemoveAdminButton; import nautilus.game.arcade.gui.privateServer.button.RemoveAdminButton;
import nautilus.game.arcade.gui.privateServer.button.SetGameButton; import nautilus.game.arcade.gui.privateServer.button.SetGameButton;
import nautilus.game.arcade.gui.privateServer.button.OptionsButton; import nautilus.game.arcade.gui.privateServer.button.OptionsButton;
@ -32,7 +37,7 @@ public class MenuPage extends BasePage
protected void BuildPage() protected void BuildPage()
{ {
ItemStack ownerHead = getOwnerHead(); ItemStack ownerHead = getOwnerHead();
setItem(4, ownerHead); AddButton(4, getOwnerHead(), new PlayerHeadButton(Plugin, this));
boolean host = _manager.isHost(Player); boolean host = _manager.isHost(Player);
@ -71,8 +76,22 @@ public class MenuPage extends BasePage
AddButton(host ? 6 + 18 : 7 + 18, new ShopItem(Material.WATER_BUCKET, "Un-Remove Player", new String[] {}, 1, false), unbanButton); AddButton(host ? 6 + 18 : 7 + 18, new ShopItem(Material.WATER_BUCKET, "Un-Remove Player", new String[] {}, 1, false), unbanButton);
} }
private ItemStack getOwnerHead() private ShopItem getOwnerHead()
{ {
return getPlayerHead(Plugin.GetHost(), ChatColor.RESET + "Host: " + ChatColor.YELLOW + Plugin.GetHost()); String title = C.cGreen + C.Bold + Plugin.GetHost() + "'s Mineplex Private Server";
ItemStack head = getPlayerHead(Plugin.GetHost(), ChatColor.RESET + title);
ArrayList<String> lore = new ArrayList<String>();
lore.add(" ");
lore.add(ChatColor.RESET + C.cYellow + "Server Name: " + C.cWhite + Plugin.GetPlugin().getConfig().getString("serverstatus.name"));
lore.add(ChatColor.RESET + C.cYellow + "Players Online: " + C.cWhite + UtilServer.getPlayers().length);
lore.add(ChatColor.RESET + C.cYellow + "Players Max: " + C.cWhite + Plugin.GetServerConfig().MaxPlayers);
lore.add(" ");
lore.add(ChatColor.RESET + "Left-Click to increase Max Players");
lore.add(ChatColor.RESET + "Right-Click to decrease Max Players");
ItemMeta meta = head.getItemMeta();
meta.setLore(lore);
head.setItemMeta(meta);
return new ShopItem(head, title, title, 1, false, false);
} }
} }

View File

@ -21,6 +21,7 @@ import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.gui.privateServer.PrivateServerShop; import nautilus.game.arcade.gui.privateServer.PrivateServerShop;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -175,15 +176,15 @@ public class GameHostManager implements Listener
if (Manager.GetGame() == null) if (Manager.GetGame() == null)
return; return;
if (UtilGear.isMat(player.getInventory().getItem(5), Material.BOOK_AND_QUILL)) if (UtilGear.isMat(player.getInventory().getItem(5), Material.SPECKLED_MELON))
return; return;
player.getInventory().setItem(7, ItemStackFactory.Instance.CreateStack(Material.BLAZE_POWDER, (byte)0, 1, C.cGreen + C.Bold + "/menu")); player.getInventory().setItem(7, ItemStackFactory.Instance.CreateStack(Material.SPECKLED_MELON, (byte)0, 1, C.cGreen + C.Bold + "/menu"));
} }
private void removeAdminItem(Player player) private void removeAdminItem(Player player)
{ {
if (player.getInventory().getItem(7).getType() == Material.BLAZE_POWDER) if (player.getInventory().getItem(7).getType() == Material.SPECKLED_MELON)
{ {
player.getInventory().setItem(7, null); player.getInventory().setItem(7, null);
} }
@ -222,7 +223,7 @@ public class GameHostManager implements Listener
if (!isAdmin(event.getPlayer(), true)) if (!isAdmin(event.getPlayer(), true))
return; return;
if (!UtilGear.isMat(event.getPlayer().getItemInHand(), Material.BLAZE_POWDER)) if (!UtilGear.isMat(event.getPlayer().getItemInHand(), Material.SPECKLED_MELON))
return; return;
openMenu(event.getPlayer()); openMenu(event.getPlayer());
@ -404,6 +405,16 @@ public class GameHostManager implements Listener
Manager.GetServerConfig().TeamForceBalance = true; Manager.GetServerConfig().TeamForceBalance = true;
} }
public int getMaxPlayerCap()
{
if (hasRank(Rank.LEGEND))
return 40;
else if (hasRank(Rank.HERO))
return 12;
else
return 4;
}
@EventHandler @EventHandler
public void setHostDebug(PlayerCommandPreprocessEvent event) public void setHostDebug(PlayerCommandPreprocessEvent event)
{ {
@ -425,4 +436,12 @@ public class GameHostManager implements Listener
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler
public void playerJoin(PlayerJoinEvent event)
{
String serverName = Manager.GetPlugin().getConfig().getString("serverstatus.name");
UtilPlayer.message(event.getPlayer(), ChatColor.BOLD + "Welcome to Mineplex Private Servers!");
UtilPlayer.message(event.getPlayer(), C.Bold + "Friends can connect with " + C.cGreen + C.Bold + "/server " + serverName);
}
} }

View File

@ -108,6 +108,7 @@ public class GameLobbyManager implements Listener, IPacketHandler
private NautHashMap<Player, String> _kitMap = new NautHashMap<Player, String>(); private NautHashMap<Player, String> _kitMap = new NautHashMap<Player, String>();
private int _oldPlayerCount = 0; private int _oldPlayerCount = 0;
private int _oldMaxPlayerCount = 0; // Used for scoreboard when max player count changes
private boolean _handlingPacket = false; private boolean _handlingPacket = false;
@ -965,9 +966,8 @@ public class GameLobbyManager implements Listener, IPacketHandler
objective.getScore(C.cYellow + "Players").setScore(line--); objective.getScore(C.cYellow + "Players").setScore(line--);
// Remove old // Remove Old
entry.getValue().resetScores(_oldPlayerCount + "/" + Manager.GetPlayerFull()); entry.getValue().resetScores(_oldPlayerCount + "/" + _oldMaxPlayerCount);
// Set new // Set new
objective.getScore(UtilServer.getPlayers().length + "/" + Manager.GetPlayerFull()).setScore(line--); objective.getScore(UtilServer.getPlayers().length + "/" + Manager.GetPlayerFull()).setScore(line--);
@ -1028,6 +1028,7 @@ public class GameLobbyManager implements Listener, IPacketHandler
} }
_oldPlayerCount = UtilServer.getPlayers().length; _oldPlayerCount = UtilServer.getPlayers().length;
_oldMaxPlayerCount = Manager.GetPlayerFull();
} }
private String GetKitCustomName(Player player, Game game, LobbyEnt ent) private String GetKitCustomName(Player player, Game game, LobbyEnt ent)