Skip to content

Instantly share code, notes, and snippets.

@shawshark
Created November 1, 2013 02:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shawshark/7887990193efe965242b to your computer and use it in GitHub Desktop.
Save shawshark/7887990193efe965242b to your computer and use it in GitHub Desktop.
package me.loderos.connect;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import lilypad.client.connect.api.Connect;
import lilypad.client.connect.api.ConnectSettings;
import lilypad.client.connect.api.event.EventListener;
import lilypad.client.connect.api.event.MessageEvent;
import lilypad.client.connect.api.request.RequestException;
import lilypad.client.connect.api.request.impl.MessageRequest;
import lilypad.client.connect.api.request.impl.RedirectRequest;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.ServicesManager;
import org.bukkit.plugin.java.JavaPlugin;
public class main extends JavaPlugin
implements Listener
{
public Connect c;
public List<sendsign> signlist = new ArrayList();
public List<Player> placing = new ArrayList();
public void onEnable()
{
loadConfig();
this.c = getBukkitConnect();
ConnectSettings cs = this.c.getSettings();
saveDefaultConfig();
getServer().getPluginManager().registerEvents(this, this);
this.c.registerEvents(new Listener()
{
@EventListener
public void onMessage(MessageEvent e)
{
if (e.getChannel().equalsIgnoreCase("tokens")) {
try
{
String s = e.getMessageAsString();
String[] str = s.split("%");
Integer i = Integer.valueOf(Integer.parseInt(str[1]));
main.this.getConfig().set(str[0] + ".tokens", i);
main.this.saveConfig();
MessageRequest request = null;
request = new MessageRequest(main.this.getConfig().getStringList(
"serverlist"), "tokens", str[0] + "%" + i);
}
catch (UnsupportedEncodingException e1)
{
e1.printStackTrace();
}
}
else if (e.getChannel().equalsIgnoreCase("sendsigns"))
try {
String message = e.getMessageAsString();
String[] splitmsg = message.split(",");
String username = e.getSender();
for (sendsign s : main.this.signlist) {
if (username.equalsIgnoreCase(s.user)) {
Sign sign = (Sign)s.loc.getBlock().getState();
if (splitmsg[0].equalsIgnoreCase("ingame")) {
sign.setLine(0, ChatColor.DARK_RED + "[IN-GAME]");
}
else if (splitmsg[0].equalsIgnoreCase("full")) {
sign.setLine(0, ChatColor.DARK_RED + "[FULL]");
}
else if (splitmsg[0].equalsIgnoreCase("joinable")) {
sign.setLine(0, ChatColor.DARK_RED + "[JOIN]");
}
sign.setLine(3, splitmsg[1] + "/24");
}
}
}
catch (UnsupportedEncodingException e1)
{
e1.printStackTrace();
}
}
});
}
public Connect getBukkitConnect()
{
return
(Connect)getServer().getServicesManager()
.getRegistration(Connect.class).getProvider();
}
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
String tokens;
if (label.equalsIgnoreCase("testtoken")) {
MessageRequest request = null;
String playername = args[0];
tokens = args[1];
try
{
request = new MessageRequest("minigames", "tokens", playername +
"%" + tokens);
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
this.c.request(request);
}
catch (RequestException e) {
e.printStackTrace();
}
}
else
{
sendsign s;
if (label.equalsIgnoreCase("togglesignplace")) {
if ((sender instanceof Player)) {
Player p = (Player)sender;
p.sendMessage(this.signlist.toString());
for (tokens = this.signlist.iterator(); tokens.hasNext(); ) { s = (sendsign)tokens.next();
String str = signToString(s);
p.sendMessage(str);
}
if (p.isOp()) {
if (this.placing.contains(p)) {
this.placing.remove(p);
}
else if (!this.placing.contains(p)) {
this.placing.add(p);
}
}
}
}
else if (label.equalsIgnoreCase("serverstatusmessage"))
{
for (sendsign s : this.signlist) {
if (args[2].equalsIgnoreCase(s.user))
{
Sign sign = (Sign)s.loc.getBlock().getState();
if (args[0].equalsIgnoreCase("ingame")) {
sign.setLine(0, ChatColor.DARK_RED + "[IN-GAME]");
}
else if (args[0].equalsIgnoreCase("full")) {
sign.setLine(0, ChatColor.DARK_RED + "[FULL]");
}
else if (args[0].equalsIgnoreCase("joinable")) {
sign.setLine(0, ChatColor.DARK_RED + "[JOIN]");
}
else if (args[0].equalsIgnoreCase("restarting")) {
sign.setLine(0, ChatColor.DARK_RED + "[RESTARTING]");
}
sign.setLine(3, args[1] + "/24");
sign.update();
}
}
}
}
return false;
}
@EventHandler
public void joinevent(PlayerJoinEvent e) {
if (!e.getPlayer().hasPlayedBefore())
getServer().dispatchCommand(getServer().getConsoleSender(),
"testtoken" + e.getPlayer().getName() + "0");
}
public sendsign stringToSign(String s)
{
String[] ssplit = s.split(",");
String user = ssplit[0];
World w = Bukkit.getWorld(ssplit[1]);
int x = Integer.parseInt(ssplit[2]);
int y = Integer.parseInt(ssplit[3]);
int z = Integer.parseInt(ssplit[4]);
String line0 = ssplit[5];
String line1 = ssplit[6];
String line2 = ssplit[7];
String line3 = ssplit[8];
Location loc = new Location(w, x, y, z);
return new sendsign(user, loc, line0, line1, line2, line3);
}
public String signToString(sendsign s) {
String world = s.loc.getWorld().getName();
String x = Integer.toString(s.loc.getBlockX());
String y = Integer.toString(s.loc.getBlockY());
String z = Integer.toString(s.loc.getBlockZ());
if ((s.line0.equals("")) || (s.line0 == null))
s.line0 = " ";
if ((s.line1.equals("")) || (s.line1 == null))
s.line1 = " ";
if ((s.line2.equals("")) || (s.line2 == null))
s.line2 = " ";
if ((s.line3.equals("")) || (s.line3 == null))
s.line3 = " ";
return s.user + "," + world + "," + x + "," + y + "," + z + "," +
s.line0 + "," + s.line1 + "," + s.line2 + "," + s.line3;
}
public void loadConfig() {
new File(getDataFolder(), "config.yml").exists();
if (getConfig().contains("sendsigns"))
for (String s : getConfig().getStringList("sendsigns"))
this.signlist.add(stringToSign(s));
}
public void saveSigns() {
List strsignslist = new ArrayList();
for (sendsign s : this.signlist) {
strsignslist.add(signToString(s));
}
getConfig().set("sendsigns", strsignslist);
saveConfig();
}
@EventHandler
public void onsignPlace(SignChangeEvent e)
{
if (e.getBlock().getState().getType() != Material.SIGN_POST) e.getBlock().getState().getType();
if (e.getPlayer().isOp()) {
this.signlist.add(new sendsign(e.getLine(1), e.getBlock().getLocation(),
e.getLine(0), e.getLine(1), e.getLine(2), e.getLine(3)));
e.getPlayer().sendMessage("test");
}
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
if ((e.getAction() == Action.LEFT_CLICK_BLOCK) || (e.getAction() == Action.RIGHT_CLICK_BLOCK))
for (sendsign ls : this.signlist)
if (ls.loc.equals(e.getClickedBlock().getLocation())) {
Sign s = (Sign)e.getClickedBlock().getState();
if (s.getLine(0).contains("[IN-GAME]")) {
e.getPlayer().sendMessage(ChatColor.GRAY + "[" + ChatColor.RED + "lobby" + ChatColor.GRAY + "] " + ChatColor.RED + "This game has already started! Please try another sign!");
}
else if (s.getLine(0).contains("[FULL]")) {
e.getPlayer().sendMessage(ChatColor.GRAY + "[" + ChatColor.RED + "lobby" + ChatColor.GRAY + "] " + ChatColor.RED + "To be able to join full servers purchase VIP from store.craftshark.net");
}
else if (s.getLine(0).contains("[RESTARTING]")) {
e.getPlayer().sendMessage(ChatColor.GRAY + "[" + ChatColor.RED + "lobby" + ChatColor.GRAY + "] " + ChatColor.RED + "This game is restarting! Please try another sign");
}
else
{
try
{
this.c.request(new RedirectRequest(ls.user, e.getPlayer().getName()));
} catch (RequestException e1) {
e1.printStackTrace();
}
}
}
}
public void onDisable() { saveSigns(); }
@EventHandler
public void moveEvent(PlayerMoveEvent e) {
if (e.getPlayer().getLocation().subtract(0.0D, 1.0D, 0.0D).getBlock().getType().equals(Material.SPONGE)) {
getServer().broadcastMessage("detected spongestep");
for (sendsign s : this.signlist) {
getServer().broadcastMessage("searching servers");
if (s.line0.contains("[JOIN]")) {
e.getPlayer().sendMessage(ChatColor.GRAY + "[" + ChatColor.GREEN + "Craftshark" + ChatColor.GRAY + "]" + ChatColor.GOLD + " Finding a open" + ChatColor.RED + " Hide And Seek" + ChatColor.GOLD + " server please wait..");
e.getPlayer().sendMessage(ChatColor.GRAY + "[" + ChatColor.GREEN + "Craftshark" + ChatColor.GRAY + "]" + ChatColor.RED + s.user + ChatColor.GOLD + " Found." + ChatColor.GOLD + " Teleporting you to game.");
getServer().dispatchCommand(getServer().getConsoleSender(), "send " + e.getPlayer().getName() + " " + s.user);
break;
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment