Merge branch 'master' of ssh://184.154.0.242:7999/min/mineplex
This commit is contained in:
commit
07d82b8206
@ -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" />
|
||||||
|
13
Plugins/JedisTest/JedisTest.iml
Normal file
13
Plugins/JedisTest/JedisTest.iml
Normal 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>
|
93
Plugins/JedisTest/src/ca/phinary/jedistest/Main.java
Normal file
93
Plugins/JedisTest/src/ca/phinary/jedistest/Main.java
Normal 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)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
8
Plugins/JedisTest/src/ca/phinary/jedistest/api/Chat.java
Normal file
8
Plugins/JedisTest/src/ca/phinary/jedistest/api/Chat.java
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package ca.phinary.jedistest.api;
|
||||||
|
|
||||||
|
public interface Chat
|
||||||
|
{
|
||||||
|
public void addListener(ChatListener chatListener);
|
||||||
|
|
||||||
|
public void clearListeners();
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package ca.phinary.jedistest.api;
|
||||||
|
|
||||||
|
public interface ChatListener
|
||||||
|
{
|
||||||
|
public void onChat(String message);
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package ca.phinary.jedistest.api;
|
||||||
|
|
||||||
|
public interface Console
|
||||||
|
{
|
||||||
|
public void println(String line);
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package ca.phinary.jedistest.api;
|
||||||
|
|
||||||
|
public interface Messenger
|
||||||
|
{
|
||||||
|
public Chat getChat();
|
||||||
|
|
||||||
|
public Console getConsole();
|
||||||
|
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
60
Plugins/JedisTest/src/ca/phinary/jedistest/gui/ChatPane.java
Normal file
60
Plugins/JedisTest/src/ca/phinary/jedistest/gui/ChatPane.java
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
@ -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");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
@ -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)
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user