Resolvido Como usar kotlin em plugins?

Discussão em 'Resolvidos' iniciado por Pedrolino, 17 Julho 2018.

  1. Pedrolino
    Offline

    Pedrolino Membro Conhecido VIP Sabotador.com VIP Sabotador.com

    Afiliado:
    16 Janeiro 2016
    Mensagens:
    15
    Sexo:
    Masculino
    Avaliações:
    +13 / -0
    Apelido no Minecraft:
    PedroIsBored
    Eu comecei um plugin meia-boca em java, e ai eu vi que fiz um erro e prefiro kotlin, mas depois de compilar o código (já em kotlin), o spigot não encontra as classes, e eu não tenho a minima ideia de como fazer o spigot usar as classes .kt

    Ai eu achei isso GitHub - GameModsBR/KotlinFun: Kotlin Library for Bukkit and BungeeCord plugins mas é muito velho.

    Depois, eu desisti, por que eu não presto.

    Alguém tem alguma ideia de como usar kotlin em plugins para spigot?
     
  2. Cael
    Offline

    Cael Veterano Veterano VIP Sabotador.com VIP Sabotador.com Ex-Staff

    Afiliado:
    8 Setembro 2014
    Mensagens:
    1,267
    Avaliações:
    +1,777 / -4
    Apelido no Minecraft:
    Cael
    • Gostei Gostei x 1
    • Concordo Concordo x 1
  3. Duyzee
    Offline

    Duyzee Membro Conhecido VIP Sabotador.com VIP Sabotador.com

    Afiliado:
    28 Fevereiro 2017
    Mensagens:
    714
    Sexo:
    Feminino
    Avaliações:
    +492 / -1
    Apelido no Minecraft:
    Duyzee
    Essa é minha dúvida, quero criar plugins com Kotlin mas não sei onde comecco
     
  4. Animadoria
    Offline

    Animadoria Membro Conhecido VIP Sabotador.com

    Afiliado:
    17 Agosto 2014
    Mensagens:
    753
    Avaliações:
    +591 / -2
    Apelido no Minecraft:
    Animadoria
    Vejam a resposta do Cael.
     
  5. joserobjr
    Offline

    joserobjr Administrador Equipe GameMods Administrador Programador YouTuber Veterano

    Afiliado:
    29 Junho 2009
    Mensagens:
    6,744
    Sexo:
    Masculino
    Avaliações:
    +4,835 / -0
    Apelido no Minecraft:
    joserobjr
    Criar plugin Bukkit em Kotlin é como criar em java.

    build.gradle:
    Código ( (Unknown Language)):
    plugins {
        id 'org.jetbrains.kotlin.jvm' version '1.2.51'
        id 'com.github.johnrengelman.shadow' version '2.0.4'
    }

    group 'exemplo'
    version '1.0-SNAPSHOT'

    repositories {
        mavenCentral()
        maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
        maven { url 'https://hub.spigotmc.org/nexus/content/repositories/public/' }
    }

    dependencies {
        compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
        compile 'org.spigotmc:spigot-api:1.13-pre7-R0.1-SNAPSHOT'
    }

    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }

    shadowJar {
        dependencies {
            //noinspection GroovyAssignabilityCheck
            include(dependency {
                it.moduleGroup == 'org.jetbrains.kotlin'
            })
        }
    }

    build.dependsOn shadowJar

    plugin-exemplo.kt
    Código (Kotlin):
    package exemplo

    import org.bukkit.Bukkit
    import org.bukkit.ChatColor
    import org.bukkit.command.Command
    import org.bukkit.command.CommandExecutor
    import org.bukkit.command.CommandSender
    import org.bukkit.entity.Player
    import org.bukkit.plugin.java.JavaPlugin
    import org.bukkit.scheduler.BukkitRunnable

    internal lateinit var meuPlugin: PluginDeExemplo

    class PluginDeExemplo: JavaPlugin() {
        override fun onEnable() {
            logger.info { "Olá Bukkit!" }
            meuPlugin = this

            getCommand("ceu").setExecutor { sender, command, label, args ->
                (sender as? Player)?.run {
                    teleport(location.add(0.0,100.0,0.0))
                    true
                } ?: false
            }

            getCommand("kabum").executor = ComandoKabum
        }
    }

    object ComandoKabum : CommandExecutor {
        private fun CommandSender.enviarErro(mensagem: String): Boolean {
            sendMessage("${ChatColor.RED}mensagem")
            return false
        }

        override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<String>): Boolean {
            val nomeAlvo = args.getOrElse(0) { (sender as? Player)?.name }
                    ?: return sender.enviarErro("Opa, quem você quer explodir?")

            val alvo = nomeAlvo.let { Bukkit.matchPlayer(it).firstOrNull() }
                    ?: return sender.enviarErro("Não encontrei o jogador $nomeAlvo, deve ter se escondido :(")

            alvo.world.createExplosion(alvo.location, 8F)
            sender.sendMessage("${ChatColor.GREEN}$alvo foi explodido com sucesso!")
            alvo.sendMessage("${ChatColor.GOLD}${sender.name} explodiu você!")
            return true
        }

    }
     
    • Vencedor Vencedor x 1
    • Útil Útil x 1
  6. Pedrolino
    Offline

    Pedrolino Membro Conhecido VIP Sabotador.com VIP Sabotador.com

    Afiliado:
    16 Janeiro 2016
    Mensagens:
    15
    Sexo:
    Masculino
    Avaliações:
    +13 / -0
    Apelido no Minecraft:
    PedroIsBored
    Eu consegui fazer o plugin usar as classes (com a resposta do Cael), agora é só arrumar o código pra funcionar.

    Vou tentar a do Jose também, caso eu não consiga arrumar o código
     

Compartilhe esta Página