Advertisement
Guest User

Untitled

a guest
Jan 8th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.97 KB | None | 0 0
  1. package net.novapixelnetwork.gamecore.commandapi
  2.  
  3. import net.novapixelnetwork.spaceraiders.SpaceRaiders
  4. import org.bukkit.Bukkit
  5. import org.bukkit.command.Command
  6. import org.bukkit.command.CommandMap
  7. import org.bukkit.command.CommandSender
  8. import org.bukkit.entity.Player
  9. import java.lang.reflect.Field
  10. import java.util.*
  11. import java.util.logging.Level
  12.  
  13. class CommandRegistry {
  14.  
  15.     var cmds: HashMap<String, CommandSection> = HashMap();
  16.  
  17.     fun registerCommand(section: CommandSection){
  18.         cmds.put(section.name, section)
  19.  
  20.         val cmdMap: Field = Bukkit.getServer().javaClass.getDeclaredField("commandMap")
  21.         cmdMap.isAccessible = true
  22.  
  23.         val serverCmds: CommandMap = cmdMap.get(Bukkit.getServer()) as CommandMap
  24.         serverCmds.register(section.name, BukkitCommand(section))
  25.  
  26.         SpaceRaiders.getLogger().log(Level.INFO, "Registered command " + section.name)
  27.     }
  28.  
  29.     companion object {
  30.  
  31.         var INSTANCE = CommandRegistry()
  32.             private set(instance) {}
  33.     }
  34.  
  35.     internal fun getTree(root: CommandSection): HashMap<String, CommandSection> {
  36.         var children = HashMap<String, CommandSection>()
  37.         for((key, section) in root.getChildren()){
  38.             children.put("${root.name} $key", section)
  39.         }
  40.         children.put(root.name, root)
  41.         return children
  42.     }
  43.  
  44.  
  45.     internal fun getSection(section: String): CommandSection? {
  46.         return cmds[section]
  47.     }
  48.  
  49.     class BukkitCommand(val section: CommandSection) : Command(section.name, section.description(), section.usage(), section.aliases()) {
  50.  
  51.         override fun execute(sender: CommandSender?, p1: String?, argsArr: Array<out String>?): Boolean {
  52.  
  53.             val args : MutableList<String> = argsArr!!.toMutableList()
  54.             args.add(0, section.name)
  55.  
  56.             if(sender is Player){
  57.                 CommandHandler.INSTANCE.execute(sender, section.name, args)
  58.             }
  59.             return true
  60.         }
  61.  
  62.     }
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement