Skip to content

Instantly share code, notes, and snippets.

@DarkSeraphim
Last active August 29, 2015 14:02
Show Gist options
  • Save DarkSeraphim/8046403ef15e4e27c35d to your computer and use it in GitHub Desktop.
Save DarkSeraphim/8046403ef15e4e27c35d to your computer and use it in GitHub Desktop.
Cross-server nicknames using HubAPI
package com.castawaydev.nicknamevault;
import com.castawaydev.hubapi.HubAPI;
import com.google.common.collect.Sets;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class NicknameVault extends JavaPlugin implements Listener
{
private final Set<String> fetch = Sets.newHashSet("nickname");
public void onLoad()
{
Map<String, String> nicks = new HashMap();
nicks.put("nickname", "VARCHAR(16)");
HubAPI.register("nicknames", nicks);
}
public void onEnable()
{
Bukkit.getPluginManager().registerEvents(this, this);
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if (args.length < 1)
{
sender.sendMessage("Usage: /xnick [player] <nick>");
return true;
}
if ((args.length < 2) && (!(sender instanceof Player)))
{
sender.sendMessage("Console cannot have a nickname >:3");
return true;
}
if (((args.length == 2) && (!sender.hasPermission("xnick.other"))) || ((args.length == 1) && (!sender.hasPermission("xnick.self"))))
{
sender.sendMessage("Insufficient permissions!");
return true;
}
String player;
String nick;
if (args.length == 2)
{
String player = args[0];
nick = args[1];
}
else
{
player = sender.getName();
nick = args[0];
}
if (nick.length() >= 16)
{
sender.sendMessage("Nickname is too long! (should be 16 or less)");
return true;
}
Player p = Bukkit.getPlayer(nick);
if (p != null)
{
p.setDisplayName(ChatColor.translateAlternateColorCodes('&', nick));
}
final Map<String, Object> n = new HashMap<String, Object>();
n.put("nickname", nick);
new BukkitRunnable()
{
@Override
public void run()
{
HubAPI.set("nickname", p.getName(), n);
}
}.runTaskAsynchronously(this);
return true;
}
@EventHandler
public void onJoin(PlayerJoinEvent event)
{
Player player = event.getPlayer();
new BukkitRunnable()
{
@Override
public void run()
{
Response r = HubAPI.set("nickname", p.getName(), NicknameVault.this.fetch);
if(r.wasSuccessful())
{
String nick = r.get("nickname", "");
if(nick.isEmpty())
return;
p.setDisplayName(ChatColor.translateAlternateColorCodes('&', nick));
}
}
}.runTaskAsynchronously(this);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment