Merge branch 'develop'
This commit is contained in:
@@ -118,6 +118,7 @@ import com.willfp.eco.internal.spigot.integrations.shop.ShopDeluxeSellwands
|
||||
import com.willfp.eco.internal.spigot.integrations.shop.ShopEconomyShopGUI
|
||||
import com.willfp.eco.internal.spigot.integrations.shop.ShopShopGuiPlus
|
||||
import com.willfp.eco.internal.spigot.integrations.shop.ShopZShop
|
||||
import com.willfp.eco.internal.spigot.metrics.PlayerflowHandler
|
||||
import com.willfp.eco.internal.spigot.proxy.FastItemStackFactoryProxy
|
||||
import com.willfp.eco.internal.spigot.proxy.PacketHandlerProxy
|
||||
import com.willfp.eco.internal.spigot.recipes.CraftingRecipeListener
|
||||
@@ -261,10 +262,13 @@ abstract class EcoSpigotPlugin : EcoPlugin() {
|
||||
ProfileSaver(this, profileHandler).startTicking()
|
||||
|
||||
this.scheduler.runTimer(
|
||||
{ getProxy(PacketHandlerProxy::class.java).clearDisplayFrames() },
|
||||
this.configYml.getInt("display-frame-ttl").toLong(),
|
||||
this.configYml.getInt("display-frame-ttl").toLong()
|
||||
)
|
||||
this.configYml.getInt("display-frame-ttl").toLong(),
|
||||
) { getProxy(PacketHandlerProxy::class.java).clearDisplayFrames() }
|
||||
|
||||
if (this.configYml.getBool("playerflow")) {
|
||||
PlayerflowHandler(this.scheduler).startTicking()
|
||||
}
|
||||
}
|
||||
|
||||
override fun handleAfterLoad() {
|
||||
|
||||
@@ -5,7 +5,9 @@ import com.willfp.eco.core.data.PlayerProfile
|
||||
import com.willfp.eco.core.data.Profile
|
||||
import com.willfp.eco.core.data.ServerProfile
|
||||
import com.willfp.eco.core.data.keys.PersistentDataKey
|
||||
import com.willfp.eco.core.data.keys.PersistentDataKeyType
|
||||
import com.willfp.eco.internal.spigot.data.storage.DataHandler
|
||||
import com.willfp.eco.util.namespacedKeyOf
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
@@ -64,11 +66,25 @@ class EcoPlayerProfile(
|
||||
}
|
||||
}
|
||||
|
||||
private val serverIDKey = PersistentDataKey(
|
||||
namespacedKeyOf("eco", "server_id"),
|
||||
PersistentDataKeyType.STRING,
|
||||
""
|
||||
)
|
||||
|
||||
class EcoServerProfile(
|
||||
data: MutableMap<PersistentDataKey<*>, Any>,
|
||||
handler: DataHandler,
|
||||
localHandler: DataHandler
|
||||
) : EcoProfile(data, serverProfileUUID, handler, localHandler), ServerProfile {
|
||||
override fun getServerID(): String {
|
||||
if (this.read(serverIDKey).isBlank()) {
|
||||
this.write(serverIDKey, UUID.randomUUID().toString())
|
||||
}
|
||||
|
||||
return this.read(serverIDKey)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "EcoServerProfile"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.willfp.eco.internal.spigot.metrics
|
||||
|
||||
import com.willfp.eco.core.Eco
|
||||
import com.willfp.eco.core.config.json
|
||||
import com.willfp.eco.core.data.ServerProfile
|
||||
import com.willfp.eco.core.scheduling.Scheduler
|
||||
import org.bukkit.Bukkit
|
||||
import java.net.URI
|
||||
import java.net.http.HttpClient
|
||||
import java.net.http.HttpRequest
|
||||
import java.net.http.HttpResponse
|
||||
|
||||
private const val PLAYERFLOW_URL = "https://playerflow.auxilor.io/api/v1/ping"
|
||||
|
||||
private val client = HttpClient.newBuilder().build()
|
||||
|
||||
class PlayerflowHandler(
|
||||
private val scheduler: Scheduler
|
||||
) {
|
||||
internal fun startTicking() {
|
||||
scheduler.runAsyncTimer(1200L, 1200L) {
|
||||
makeRequest()
|
||||
}
|
||||
}
|
||||
|
||||
private fun makeRequest() {
|
||||
val body = json {
|
||||
"uuid" to ServerProfile.load().serverID
|
||||
"players" to Bukkit.getOnlinePlayers().size
|
||||
"plugins" to Eco.get().loadedPlugins
|
||||
}.toPlaintext()
|
||||
|
||||
val request = HttpRequest.newBuilder()
|
||||
.uri(URI.create(PLAYERFLOW_URL))
|
||||
.header("Content-Type", "application/json")
|
||||
.POST(HttpRequest.BodyPublishers.ofString(body))
|
||||
.build()
|
||||
|
||||
try {
|
||||
client.send(request, HttpResponse.BodyHandlers.ofString())
|
||||
} catch (e: Exception) {
|
||||
// Silently fail
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,3 +91,9 @@ use-immediate-placeholder-translation-for-math: false
|
||||
# faster evaluation times (less CPU usage) at the expense of slightly more memory usage and
|
||||
# less reactive values.
|
||||
math-cache-ttl: 200
|
||||
|
||||
# If anonymous usage statistics should be tracked. This is very valuable information as it
|
||||
# helps understand how eco and other plugins are being used by logging player and server
|
||||
# counts. This is completely anonymous and no personal information is logged. This data
|
||||
# is primarily used for optimisation and server insights.
|
||||
playerflow: true
|
||||
|
||||
@@ -1 +1,7 @@
|
||||
multiple-in-craft: '&l&c! &fThis recipe requires &a%amount%&f of this item.'
|
||||
multiple-in-craft: '&l&c! &fThis recipe requires &a%amount%&f of this item.'
|
||||
|
||||
# Specify default display names for prices made through ConfiguredPrice#create
|
||||
# These will override any custom configured price display names.
|
||||
price-display:
|
||||
- type: example_type
|
||||
display: "&e%value% Price"
|
||||
|
||||
Reference in New Issue
Block a user