Skip to content

Commit

Permalink
Show if a new version is available on startup and on /authy
Browse files Browse the repository at this point in the history
  • Loading branch information
Iru21 committed Feb 19, 2023
1 parent b9fbdaa commit 8b7f58d
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 4 deletions.
17 changes: 14 additions & 3 deletions src/main/kotlin/me/iru/Authy.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,18 @@ import me.iru.data.migration.DatabaseMigration
import me.iru.events.BlockEvents
import me.iru.process.JoinProcess
import me.iru.utils.CommandFilter
import me.iru.utils.isNewVersionAvailable
import me.iru.utils.registerCommand
import org.bukkit.ChatColor
import org.bukkit.entity.Player
import org.bukkit.plugin.java.JavaPlugin

class Authy : JavaPlugin() {
val version = this.description.version
val pluginName: String = this.description.name
val CommandFilter : CommandFilter = CommandFilter()
var latestVersion = this.version

private val pluginName = this.description.name
private val commandFilter = CommandFilter()

val prefix = "${ChatColor.DARK_GRAY}[${ChatColor.GOLD}$pluginName${ChatColor.DARK_GRAY}]"

Expand Down Expand Up @@ -56,14 +59,22 @@ class Authy : JavaPlugin() {
registerCommand(cAuthy())
registerCommand(cPin())

with(CommandFilter) { registerFilter() }
with(commandFilter) { registerFilter() }

server.consoleSender.sendMessage("$prefix ${ChatColor.GREEN}Enabled $version")

val players = server.onlinePlayers
for(player : Player in players) {
JoinProcess(player).run()
}

this.server.scheduler.runTaskAsynchronously(this, Runnable {
val v = isNewVersionAvailable()
if(v.first) {
this.latestVersion = v.second
server.consoleSender.sendMessage("$prefix ${ChatColor.YELLOW}New version available - ${ChatColor.GREEN}${this.latestVersion}${ChatColor.YELLOW}!")
}
})
}

override fun onDisable() {
Expand Down
6 changes: 5 additions & 1 deletion src/main/kotlin/me/iru/commands/cAuthy.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ class cAuthy(override var name: String = "authy") : ICommand {
val translations = Authy.translations
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
if(args.size != 1) {
sender.sendMessage("§8[§6Authy§8] §7Created by: §cIru21 §8- §7https://github.com/Iru21/")
sender.sendMessage("§8[§6Authy§8] §7Created by§8: §cIru §8- §7https://iru.codes")
sender.sendMessage("§8[§6Authy§8] §7Version§8: §c${authy.version}")
if(authy.latestVersion != authy.version) {
sender.sendMessage("§8[§6Authy§8] §7New version available§8: §c${authy.latestVersion}§8!")
}
return true
} else if(args[0].lowercase() == "reload") {
if(sender.hasPermission("authy.reload")) {
Expand Down
38 changes: 38 additions & 0 deletions src/main/kotlin/me/iru/utils/versionChecker.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package me.iru.utils

import com.google.gson.JsonObject
import com.google.gson.JsonParser
import me.iru.Authy
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse


fun isNewVersionAvailable(): Pair<Boolean, String> {
val latestRelease = getLatestRelease()
val latestVersion = latestRelease.get("tag_name").asString
return Pair(versionToNum(Authy.instance.version) < versionToNum(latestVersion), latestVersion)
}

private fun versionToNum(ver: String): Int {
val v = ver.removePrefix("v")
var a = 0
val b = v.split(".")
a += b[0].toInt() * 100
a += b[1].toInt() * 10
a += b[2].toInt()
return a
}

private fun getLatestRelease(): JsonObject {
val client = HttpClient.newHttpClient()
val request = HttpRequest.newBuilder(
URI.create("https://api.github.com/repos/Iru21/Authy/releases/latest"))
.header("accept", "application/json")
.build()

val res = client.send(request, HttpResponse.BodyHandlers.ofString())
val d: String = res.body()
return JsonParser().parse(d).asJsonObject
}

0 comments on commit 8b7f58d

Please sign in to comment.