Skip to content

perf:优化头颅图标加载性能 #185

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions plugin/src/main/kotlin/trplugins/menu/TrMenu.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import trplugins.menu.module.internal.script.Bindings
import trplugins.menu.module.internal.script.evalScript
import trplugins.menu.module.internal.service.RegisterCommands
import trplugins.menu.module.internal.service.Shortcuts
import trplugins.menu.util.bukkit.Heads

/**
* @author Arasple
Expand Down Expand Up @@ -97,6 +98,8 @@ object TrMenu : Plugin() {
NMS.javaStaticInventory = SETTINGS.getBoolean("Options.Static-Inventory.Java", false)
NMS.bedrockStaticInventory = SETTINGS.getBoolean("Options.Static-Inventory.Bedrock", false)
NMS.createIdPacketInventory = SETTINGS.getBoolean("Options.Packet-Inventory.Create-Id", false)
Heads.headConnectTimeout = SETTINGS.getInt("Menu.Icon.Item.Head-Connect-Timeout", 500)
Heads.headReadTimeout = SETTINGS.getInt("Menu.Icon.Item.Head-Read-Timeout", 2500)
}

}
7 changes: 5 additions & 2 deletions plugin/src/main/kotlin/trplugins/menu/util/bukkit/Heads.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ object Heads {
private const val USER_API = "https://api.mojang.com/users/profiles/minecraft/"
private const val SESSION_API = "https://sessionserver.mojang.com/session/minecraft/profile/"

var headConnectTimeout: Int = 500
var headReadTimeout: Int = 2500

private val JSON_PARSER = JsonParser()
private val DEFAULT_HEAD = XMaterial.PLAYER_HEAD.parseItem()!!.apply {
if (runCatching { Material.PLAYER_HEAD }.isFailure) {
Expand Down Expand Up @@ -150,8 +153,8 @@ object Heads {
try {
val con = URL(url).openConnection()
// Java 8 require user agent
con.connectTimeout = 500
con.readTimeout = 2500
con.connectTimeout = headConnectTimeout
con.readTimeout = headReadTimeout
con.addRequestProperty("User-Agent", "Mozilla/5.0")
con.getInputStream().use { `in` ->
BufferedReader(InputStreamReader(`in`)).use { reader ->
Expand Down
2 changes: 2 additions & 0 deletions plugin/src/main/resources/settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ Menu:
Default-Name-Color: "&7"
Default-Lore-Color: "&7"
Pre-Color: false
Head-Connect-Timeout: 500
Head-Read-Timeout: 2500

Action:
Using-Component: true
Expand Down