Advertisement
JavaFactory

Untitled

Jul 14th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.36 KB | None | 0 0
  1. package de.leonhard.sapphire.lib
  2.  
  3. import co.aikar.commands.BaseCommand
  4. import co.aikar.commands.ConditionFailedException
  5. import de.leonhard.sapphire.Constants
  6. import de.leonhard.sapphire.Sapphire
  7. import net.md_5.bungee.api.ChatColor
  8. //import net.md_5.bungee.api.ProxyServer
  9. //import net.md_5.bungee.api.connection.ProxiedPlayer
  10. import org.apache.commons.lang.StringUtils
  11. //import org.bukkit.Bukkit
  12. import org.bukkit.command.CommandSender
  13.  
  14. //import org.bukkit.entity.Player
  15. //import java.util.*
  16.  
  17. abstract class UniversalCommand : BaseCommand() {
  18. private var libSender: LibSender? = null
  19. private val messages = Sapphire.getMessages()
  20. //TODO
  21. /*
  22. ->@MinArgsLength Annotation
  23. ->Validate true besser benennen
  24. _>ReturnTell mit ArrayList
  25.  
  26. MultiLinguality besser.
  27. -
  28. */
  29.  
  30. protected fun isFalse(toCheck: Boolean, falseMessage: String? = null) {
  31. if (!toCheck)
  32. returnTell(falseMessage)
  33. }
  34.  
  35. protected fun isTrue(toCheck: Boolean, trueMessage: String? = null) {
  36. if (toCheck)
  37. returnTell(trueMessage)
  38. }
  39.  
  40. /*
  41. Blank vs empty: -> Both checks for null
  42. Empty > Komplett leer isEmpty(" ") = false isBlank(" ") = true
  43. Blank > Enthalt nur Leerzeichen
  44. https://stackoverflow.com/questions/23419087/stringutils-isblank-vs-string-isempty
  45. */
  46.  
  47. protected fun getIntFromArgs(index: Int, noIntMessage: String? = messages.provideAnInteger(), args: Array<String> = origArgs): Int {
  48. return parseInt(args[index], noIntMessage)
  49. }
  50.  
  51. protected fun getDoubleFromArgs(index: Int, noIntMessage: String? = messages.provideAnDouble(), args: Array<String> = origArgs): Double {
  52. return parseDouble(args[index], noIntMessage)
  53. }
  54.  
  55. protected fun parseInt(string: String, noIntMessage: String? = messages.provideAnInteger()): Int {
  56. var result = 0
  57. if (string.isBlank())
  58. returnTell(noIntMessage)
  59. if (!StringUtils.isNumeric(string))
  60. returnTell(noIntMessage)
  61. try {
  62. result = string.toInt()
  63. } catch (e: IllegalArgumentException) {
  64. returnTell(noIntMessage)
  65. }
  66. return result
  67. }
  68.  
  69. protected fun parseDouble(string: String, noDoubleMessage: String? = messages.provideAnInteger()): Double {
  70. var result = 0.0
  71. if (string.isBlank())
  72. returnTell(noDoubleMessage)
  73. if (!StringUtils.isNumeric(string))
  74. returnTell(noDoubleMessage)
  75. try {
  76. result = string.toDouble()
  77. } catch (e: IllegalArgumentException) {
  78. returnTell(noDoubleMessage)
  79. }
  80. return result
  81. }
  82.  
  83. protected fun send(message: String, prefix: String = Sapphire.PREFIX) {
  84. libSender = LibSender(currentCommandIssuer.getIssuer())
  85. libSender?.send(message, prefix)
  86. }
  87.  
  88. protected fun send(message: Array<String>, prefix: String = Sapphire.PREFIX) {
  89. libSender = LibSender(currentCommandIssuer.getIssuer())
  90. libSender?.send(message, prefix)
  91.  
  92. }
  93.  
  94. protected fun send(sender: Any, message: String, prefix: String = Sapphire.PREFIX) {
  95. val target: LibSender = LibSender(sender)
  96. target.send(message, prefix)
  97. }
  98.  
  99. protected fun send(message: String) {
  100. libSender = LibSender(currentCommandIssuer.getIssuer())
  101. libSender?.send("ยง7$message", Sapphire.PREFIX)
  102. }
  103.  
  104. protected fun checkPermission(permission: String, noPermMessage: String? = messages.noPerm()) {
  105. libSender = LibSender(currentCommandIssuer.getIssuer())
  106. val hasPerm = libSender?.hasPermission(permission) ?: false
  107. if (!hasPerm) {
  108. returnTell(noPermMessage)
  109. }
  110. }
  111.  
  112. // protected fun isPlayer(falseMessage: String? = messages.provideAnPlayer()) {
  113. // libSender = LibSender(currentCommandIssuer.getIssuer())
  114. // if (Environment.isBungee() && libSender?.sender !is ProxiedPlayer) returnTell(falseMessage)
  115. // if (!Environment.isBungee() && libSender?.sender !is Player) returnTell(falseMessage)
  116. // }
  117.  
  118. protected fun checkPermission(permission: Array<String>, noPermMessage: String? = messages.noPerm()) {
  119. libSender = LibSender(currentCommandIssuer.getIssuer())
  120. val hasPerm = libSender?.hasPermission(permission) ?: false
  121. if (!hasPerm) {
  122. returnTell(noPermMessage)
  123. }
  124. }
  125.  
  126. protected fun checkByPassOrCMDPerm(cmdPerm: String, noPermMessage: String? = messages.noPerm()) {
  127. checkPermission(arrayOf(Constants.OP, Constants.COMMAND_BYPASS, cmdPerm), noPermMessage)
  128. }
  129.  
  130. protected fun checkOpOrSetup(noPermMessage: String? = messages.noPerm()) {
  131. checkPermission(arrayOf(Constants.OP, Constants.SETUP))
  132. }
  133.  
  134. protected fun <T> createLibSender(sender: T) {
  135. try {
  136. if (sender is CommandSender)
  137. this.libSender = LibSender(sender)
  138. } catch (ignored: Throwable) {
  139.  
  140. }
  141.  
  142. try {
  143. if (sender is net.md_5.bungee.api.CommandSender) {
  144. this.libSender = LibSender(sender)
  145. }
  146. } catch (ignored: Throwable) {
  147.  
  148. }
  149.  
  150. }
  151.  
  152. protected fun checkArgsStrict(requiredLength: Int, falseMessage: String? = messages.useHelp(defaultRegisteredCommand.getCommand())) {
  153. libSender = LibSender(currentCommandIssuer.getIssuer())
  154. if (origArgs.size != requiredLength) {
  155. returnTell(falseMessage)
  156. }
  157. }
  158.  
  159. protected fun checkArgsMaxLength(maxLength: Int, toLongMessage: String? = messages.useHelp(defaultRegisteredCommand.getCommand())) {
  160. isTrue(origArgs.size > maxLength, toLongMessage)
  161. }
  162.  
  163. protected fun <T> getOrReturn(toGet: T?, nullMessage: String): T {
  164. if (toGet == null)
  165. returnTell(nullMessage)
  166. return toGet!!
  167. }
  168.  
  169. protected fun returnTell(message: String?) {
  170. libSender = LibSender(currentCommandIssuer.getIssuer())
  171. if (message != null && !message.isBlank()) {
  172. send(message)
  173. }
  174. throw ConditionFailedException()
  175. }
  176.  
  177.  
  178. protected fun checkArgsMinLength(minLength: Int, falseMessage: String? = messages.useHelp(defaultRegisteredCommand.getCommand())) {
  179. libSender = LibSender(currentCommandIssuer)
  180. if (origArgs.size < minLength) {
  181. returnTell(falseMessage)
  182. }
  183. }
  184.  
  185. protected fun checkNotNull(toCheck: Any?, nullMessage: String? = null) {
  186. libSender = LibSender(currentCommandIssuer)
  187. if (toCheck == null)
  188. returnTell(nullMessage)
  189. }
  190.  
  191. protected fun <T> setSender(sender: T) {
  192. createLibSender(sender)
  193. }
  194.  
  195. // protected fun getPlayerIfOnlineBungee(name: String, notOnlineMessage: String? = messages.playerNotOnline(name)): ProxiedPlayer {
  196. // if (!Environment.isBungee())
  197. // throw IllegalStateException("Accessing bungee while not on bungee")
  198. //
  199. // if (ProxyServer.getInstance().getPlayer(name) != null)
  200. // return ProxyServer.getInstance().getPlayer(name)
  201. //
  202. // returnTell(notOnlineMessage)
  203. // return libSender as ProxiedPlayer //Will never be executed
  204. // }
  205. //
  206. // protected fun getPlayerIfOnlineSpigot(name: String, notOnlineMessage: String? = messages.playerNotOnline(name)): Player {
  207. // if (Environment.isBungee())
  208. // throw IllegalStateException("Accessing spigot while not on spigot")
  209. //
  210. // val player = Bukkit.getPlayer(name)
  211. // if (player != null)
  212. // return player
  213. //
  214. // returnTell(notOnlineMessage)
  215. // return libSender as Player //Will never be executed
  216. // }
  217. //
  218. //
  219. // protected fun isOnline(uuid: UUID, noPlayerMessage: String? = messages.playerNotOnline()) {
  220. // if (Environment.isBungee() && libSender?.sender is ProxiedPlayer && ProxyServer.getInstance().getPlayer(uuid) != null) return
  221. // if (!Environment.isBungee() && libSender?.sender is Player && Bukkit.getPlayer(uuid) != null) return
  222. // returnTell(noPlayerMessage)
  223. // }
  224. //
  225. // protected fun isOnline(name: String, noPlayerMessage: String? = null) {
  226. // if (Environment.isBungee() && ProxyServer.getInstance().getPlayer(name) != null) return
  227. // if (!Environment.isBungee() && Bukkit.getPlayer(name) != null) return
  228. // returnTell(noPlayerMessage)
  229. // }
  230.  
  231. abstract fun doHelp()
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement