Sueta
SP

SpigotDSL

0.0.1

create readable programming with bringing kotlin dsl into java

·Plugin

Maven

<repository>  
             <id>  xuan  <  /  id>  
             <url>  https://xuan.nctu.me:8081/repository/Maven/  <  /  url>  
 <  /  repository>

dependencies

Usage

javadocs

Example (you can just copy and paste to test)

@Override 
     public   void  onEnable  (   )   {  
        DSLBuilder builder  =  SpigotDSL.  adapt   (   this   )   ;  
        builder.  listenEvents   (  listener  ->   {  
            listener.  listen   (  PlayerJoinEvent.  class  , e  ->   {  
                e.  setJoinMessage   (   "§6"   +  e.  getPlayer   (   )  .  getDisplayName   (   )   +   "joined the server !!"   )   ;  
             }   )   ;  

            listener.  event   (  PlayerQuitEvent.  class   )  .  listen   (  e  ->   {  
                e.  setQuitMessage   (   "§c"   +  e.  getPlayer   (   )  .  getDisplayName   (   )   +   "left the server....."   )   ;  
             }   )   ;  
         }   )   ;  

        FileConfiguration config  =  builder.  createFile   (  yml  ->   {  
            yml.  prefix   (   "prefix"   )  .  folder   (   "My Custom Folder"   )  .  create   (   "config.yml"   )   ;  
         }   )  .  get   (   "config.yml"   )   ;  

        ConsoleCommandSender sender  =  getServer  (   )  .  getConsoleSender   (   )   ;  
        sender.  sendMessage   (  config.  getString   (   "msg-1"   )   )   ;  
        sender.  sendMessage   (  config.  getString   (   "msg-2"   )   )   ;  
        sender.  sendMessage   (  config.  getString   (   "msg-3"   )   )   ;  
        config.  getStringList   (   "list-1"   )  .  forEach   (  sender  ::  sendMessage  )   ;  
        config.  getStringList   (   "list-2"   )  .  forEach   (  sender  ::  sendMessage  )   ;  

        MessageConfiguration msg  =   (  MessageConfiguration  )  config  ;  

        sender.  sendMessage   (  msg.  getPrefix   (   )   )   ;  
        sender.  sendMessage   (  msg.  getPureString   (   "msg-1"   )   )   ;  
        msg.  getPureList   (   "list-1"   )  .  forEach   (  sender  ::  sendMessage  )   ;  

        builder.  createCommands   (  cmd  ->   {  
            cmd.  command   (   "test"   )  .  description   (   "test command"   )  .  child   (  test  ->   {  
                test.  command   (   "ping"   )  .  description   (   "ping command"   )  .  permission   (   "ping.use"   )  .  child   (  ping  ->   {  
                     long  playerPing  =   999999   ;  
                     long  serverPing  =   0   ;  
                    ping.  command   (   "player"   )  .  description   (   "ping player"   )  .  executor   (   (  commandSender, list  )   ->   {  
                        commandSender.  sendMessage   (   "player ping is "   +  playerPing  +   "ms"   )   ;  
                     }   )   ;  
                    ping.  command   (   "server"   )  .  description   (   "ping server"   )  .  executor   (   (  commandSender, list  )   ->   {  
                        commandSender.  sendMessage   (   "server ping is "   +  serverPing  +   "ms"   )   ;  
                     }   )   ;  
                 }   )   ;  

                test.  command   (   "hi"   )  .  description   (   "say hi command"   )  .  child   (  hi  ->   {  
                    hi.  command   (   "players"   )  .  description   (   "say hi to all players"   )  .  executor   (   (  commandSender, list  )   ->   {  
                        commandSender.  sendMessage   (   "you said hi to all players!!"   )   ;  
                     }   )   ;  
                    hi.  command   (   "console"   )  .  description   (   "say hi to console"   )  .  executor   (   (  commandSender, list  )   ->   {  
                        commandSender.  sendMessage   (   "oh hi! I am console!!"   )   ;  
                     }   )   ;  
                 }   )   ;  

                 // random register command  
                 if   (   new    Random    (   )  .  nextBoolean   (   )   )   {  
                    test.  command   (   "random"   )  .  description   (   "this command has 50% chance to be registered"   )  .  executor   (   (  commandSender, list  )   ->   {  
                        commandSender.  sendMessage   (   "this command exist!!"   )   ;  
                     }   )   ;  
                 }  

                test.  command   (   "say"   )  .  description   (   "say command"   )  .  args   (   "<player>"  ,  "[messages]"   )  .  executor   (   (  commandSender, list  )   ->   {  
                      String   player  =  list.  get   (   0   )   ;  
                      String   messages  =    String   .  join   (   " "  , list.  subList   (   1  , list.  size   (   )   )   )   ;  
                    commandSender.  sendMessage   (   "you say "   +   (  messages.  isBlank   (   )   ?   "nothing"   :  messages  )   +   " to player "   +  player  )   ;  
                 }   )   ;  
             }   )   ;  
         }   )   ;  

     }

Another Example

Showcase from example (simple as ****)



If you need more details(or more features?), just contact me

Similar projects

Plugin →