Advertisement
Guest User

Untitled

a guest
May 25th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.33 KB | None | 0 0
  1. package me.taucu.testplugin;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.NamespacedKey;
  5. import org.bukkit.command.Command;
  6. import org.bukkit.command.CommandExecutor;
  7. import org.bukkit.command.CommandSender;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.player.PlayerJoinEvent;
  12. import org.bukkit.persistence.PersistentDataType;
  13. import org.bukkit.plugin.java.JavaPlugin;
  14.  
  15. public class Main extends JavaPlugin implements Listener, CommandExecutor {
  16.    
  17.     public void onEnable() {
  18.         CommandUtil.registerCommand(CommandUtil.createCommand(this, "adddata"));
  19.         this.getCommand("adddata").setExecutor(this);
  20.         Bukkit.getPluginManager().registerEvents(this, this);
  21.     }
  22.    
  23.     public void onDisable() {
  24.        
  25.     }
  26.    
  27.     @EventHandler
  28.     public void onJoin(PlayerJoinEvent e) {
  29.         Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "data get entity %name% BukkitValues".replace("%name%", e.getPlayer().getName()));
  30.         e.getPlayer().sendMessage("Check console");
  31.     }
  32.    
  33.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  34.         if (sender instanceof Player) {
  35.             ((Player) sender).getPersistentDataContainer().set(new NamespacedKey(this, "foo"), PersistentDataType.BYTE, (byte)1);
  36.             ((Player) sender).kickPlayer("Rejoin in 10 seconds");
  37.             Bukkit.getScheduler().runTaskLater(this, new Runnable() {
  38.                
  39.                 @Override
  40.                 public void run() {
  41.                     // TODO Auto-generated method stub
  42.                     System.out.println("Saving players");
  43.                     Bukkit.savePlayers();
  44.                 }
  45.             }, 40);
  46.             Bukkit.savePlayers();
  47.         }
  48.         return true;
  49.     }
  50.    
  51.    
  52. }
  53.  
  54.  
  55. package me.taucu.testplugin;
  56.  
  57. import java.lang.reflect.Constructor;
  58. import java.lang.reflect.Field;
  59. import java.lang.reflect.InvocationTargetException;
  60. import java.util.ArrayList;
  61. import java.util.Arrays;
  62. import java.util.HashMap;
  63. import java.util.List;
  64.  
  65. import org.bukkit.Bukkit;
  66. import org.bukkit.command.Command;
  67. import org.bukkit.command.PluginCommand;
  68. import org.bukkit.command.SimpleCommandMap;
  69. import org.bukkit.plugin.Plugin;
  70. import org.bukkit.plugin.SimplePluginManager;
  71.  
  72. public class CommandUtil {
  73.  
  74.     public static boolean registerCommand(PluginCommand cmd) {
  75.         boolean success = false;
  76.         SimpleCommandMap map = getCommandMap();
  77.         success = map.register(cmd.getPlugin().getDescription().getName(), cmd);
  78.         return success;
  79.     }
  80.    
  81.  
  82.     public static boolean unregisterCommand(PluginCommand cmd) {
  83.         boolean changed = false;
  84.         try {
  85.             SimpleCommandMap map = getCommandMap();
  86.             Field f = map.getClass().getSuperclass().getDeclaredField("knownCommands");;
  87.             f.setAccessible(true);
  88.             @SuppressWarnings("unchecked")
  89.             HashMap<String, Command> knownCmds = (HashMap<String, Command>) f.get(map);
  90.             List<String> loop = new ArrayList<String>(cmd.getAliases());
  91.             loop.add(cmd.getName().toLowerCase());
  92.             for (String s : cmd.getAliases()) {
  93.                 loop.add(cmd.getPlugin().getDescription().getName().toLowerCase() + ":" + s.toLowerCase());
  94.             }
  95.             loop.add(cmd.getPlugin().getDescription().getName().toLowerCase() + ":" + cmd.getName().toLowerCase());
  96.             for (String a : loop) {
  97.                 a = a.toLowerCase();
  98.                 if (knownCmds.containsKey(a) && knownCmds.get(a) instanceof PluginCommand && ((PluginCommand) knownCmds.get(a)).getPlugin() == cmd.getPlugin()) {
  99.                     knownCmds.remove(a);
  100.                     changed = true;
  101.                 }
  102.             }
  103.             f.setAccessible(false);
  104.         } catch (SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
  105.             e.printStackTrace();
  106.             return false;
  107.         }
  108.         return changed;
  109.     }
  110.    
  111.     public static PluginCommand getCommand(String cmd) {
  112.         return Bukkit.getPluginCommand(cmd);
  113.     }
  114.    
  115.     public static PluginCommand createCommand(Plugin plugin, String cmd, String... aliases) {
  116.        
  117.         PluginCommand pc = createCommand(plugin, cmd);
  118.         List<String> aliases2 = new ArrayList<String>(Arrays.asList(aliases));
  119.         aliases2.add(cmd);
  120.         pc.setAliases(aliases2);
  121.        
  122.         return pc;
  123.     }
  124.    
  125.     public static PluginCommand createCommand(Plugin plugin, String cmd) {
  126.         PluginCommand command = null;
  127.  
  128.         try {
  129.             Constructor<PluginCommand> c = PluginCommand.class.getDeclaredConstructor(String.class, Plugin.class);
  130.             c.setAccessible(true);
  131.            
  132.             command = c.newInstance(cmd, plugin);
  133.             command.setAliases(new ArrayList<String>(Arrays.asList(cmd)));
  134.            
  135.         } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
  136.             e.printStackTrace();
  137.         }
  138.  
  139.      
  140.         return command;
  141.     }
  142.      
  143.     public static SimpleCommandMap getCommandMap() {
  144.         SimpleCommandMap commandMap = null;
  145.      
  146.         try {
  147.             if (Bukkit.getPluginManager() instanceof SimplePluginManager) {
  148.                 Field f = SimplePluginManager.class.getDeclaredField("commandMap");
  149.                 f.setAccessible(true);
  150.                 commandMap = (SimpleCommandMap) f.get(Bukkit.getServer().getPluginManager());
  151.                 f.setAccessible(false);
  152.             }
  153.         } catch (NoSuchFieldException e) {
  154.             e.printStackTrace();
  155.         } catch (SecurityException e) {
  156.             e.printStackTrace();
  157.         } catch (IllegalArgumentException e) {
  158.             e.printStackTrace();
  159.         } catch (IllegalAccessException e) {
  160.             e.printStackTrace();
  161.         }
  162.      
  163.         return commandMap;
  164.     }
  165.    
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement