Last active
August 29, 2015 14:02
-
-
Save DarkSeraphim/8046403ef15e4e27c35d to your computer and use it in GitHub Desktop.
Cross-server nicknames using HubAPI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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