Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.taucu.testplugin;
- import org.bukkit.Bukkit;
- import org.bukkit.NamespacedKey;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- 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.persistence.PersistentDataType;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Main extends JavaPlugin implements Listener, CommandExecutor {
- public void onEnable() {
- CommandUtil.registerCommand(CommandUtil.createCommand(this, "adddata"));
- this.getCommand("adddata").setExecutor(this);
- Bukkit.getPluginManager().registerEvents(this, this);
- }
- public void onDisable() {
- }
- @EventHandler
- public void onJoin(PlayerJoinEvent e) {
- Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "data get entity %name% BukkitValues".replace("%name%", e.getPlayer().getName()));
- e.getPlayer().sendMessage("Check console");
- }
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (sender instanceof Player) {
- ((Player) sender).getPersistentDataContainer().set(new NamespacedKey(this, "foo"), PersistentDataType.BYTE, (byte)1);
- ((Player) sender).kickPlayer("Rejoin in 10 seconds");
- Bukkit.getScheduler().runTaskLater(this, new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- System.out.println("Saving players");
- Bukkit.savePlayers();
- }
- }, 40);
- Bukkit.savePlayers();
- }
- return true;
- }
- }
- package me.taucu.testplugin;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import org.bukkit.Bukkit;
- import org.bukkit.command.Command;
- import org.bukkit.command.PluginCommand;
- import org.bukkit.command.SimpleCommandMap;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.plugin.SimplePluginManager;
- public class CommandUtil {
- public static boolean registerCommand(PluginCommand cmd) {
- boolean success = false;
- SimpleCommandMap map = getCommandMap();
- success = map.register(cmd.getPlugin().getDescription().getName(), cmd);
- return success;
- }
- public static boolean unregisterCommand(PluginCommand cmd) {
- boolean changed = false;
- try {
- SimpleCommandMap map = getCommandMap();
- Field f = map.getClass().getSuperclass().getDeclaredField("knownCommands");;
- f.setAccessible(true);
- @SuppressWarnings("unchecked")
- HashMap<String, Command> knownCmds = (HashMap<String, Command>) f.get(map);
- List<String> loop = new ArrayList<String>(cmd.getAliases());
- loop.add(cmd.getName().toLowerCase());
- for (String s : cmd.getAliases()) {
- loop.add(cmd.getPlugin().getDescription().getName().toLowerCase() + ":" + s.toLowerCase());
- }
- loop.add(cmd.getPlugin().getDescription().getName().toLowerCase() + ":" + cmd.getName().toLowerCase());
- for (String a : loop) {
- a = a.toLowerCase();
- if (knownCmds.containsKey(a) && knownCmds.get(a) instanceof PluginCommand && ((PluginCommand) knownCmds.get(a)).getPlugin() == cmd.getPlugin()) {
- knownCmds.remove(a);
- changed = true;
- }
- }
- f.setAccessible(false);
- } catch (SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
- e.printStackTrace();
- return false;
- }
- return changed;
- }
- public static PluginCommand getCommand(String cmd) {
- return Bukkit.getPluginCommand(cmd);
- }
- public static PluginCommand createCommand(Plugin plugin, String cmd, String... aliases) {
- PluginCommand pc = createCommand(plugin, cmd);
- List<String> aliases2 = new ArrayList<String>(Arrays.asList(aliases));
- aliases2.add(cmd);
- pc.setAliases(aliases2);
- return pc;
- }
- public static PluginCommand createCommand(Plugin plugin, String cmd) {
- PluginCommand command = null;
- try {
- Constructor<PluginCommand> c = PluginCommand.class.getDeclaredConstructor(String.class, Plugin.class);
- c.setAccessible(true);
- command = c.newInstance(cmd, plugin);
- command.setAliases(new ArrayList<String>(Arrays.asList(cmd)));
- } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
- e.printStackTrace();
- }
- return command;
- }
- public static SimpleCommandMap getCommandMap() {
- SimpleCommandMap commandMap = null;
- try {
- if (Bukkit.getPluginManager() instanceof SimplePluginManager) {
- Field f = SimplePluginManager.class.getDeclaredField("commandMap");
- f.setAccessible(true);
- commandMap = (SimpleCommandMap) f.get(Bukkit.getServer().getPluginManager());
- f.setAccessible(false);
- }
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return commandMap;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement