Skip to content

Commit b2623dd

Browse files
Merge pull request #133 from Rubenicos/feature/bedrock-delay
Add delayed menu switch for bedrock players
2 parents 8dbd930 + 350b027 commit b2623dd

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

plugin/src/main/kotlin/trplugins/menu/module/display/Menu.kt

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import taboolib.common.platform.function.submit
88
import taboolib.module.configuration.Configuration
99
import taboolib.module.lang.Type
1010
import taboolib.platform.util.cancelNextChat
11+
import trplugins.menu.TrMenu
1112
import trplugins.menu.api.event.MenuOpenEvent
1213
import trplugins.menu.api.event.MenuPageChangeEvent
1314
import trplugins.menu.api.receptacle.provider.PlatformProvider
@@ -36,6 +37,7 @@ class Menu(
3637
companion object {
3738

3839
val menus = mutableListOf<Menu>()
40+
val BEDROCK_DELAY get() = TrMenu.SETTINGS.getLong("Options.Bedrock-Open-Delay", 20L)
3941

4042
}
4143

@@ -69,9 +71,11 @@ class Menu(
6971

7072
val determinedPage = page ?: settings.determinePage(session)
7173

74+
var menuSwitch = false
7275
if (session.menu == this) {
7376
return page(viewer, determinedPage)
7477
} else if (session.menu != null) {
78+
menuSwitch = true
7579
if (PlatformProvider.isBedrockPlayer(viewer)) {
7680
session.receptacle?.close(true)
7781
}
@@ -105,10 +109,21 @@ class Menu(
105109
loadIcon(session)
106110
loadTasks(session)
107111

108-
receptacle.open(viewer)
109-
settings.properties.forEach { (id, value) ->
110-
if (id >= 0 && value != null) {
111-
receptacle.property(id, value)
112+
if (menuSwitch && BEDROCK_DELAY > 0 && PlatformProvider.isBedrockPlayer(viewer)) {
113+
submit(async = Bukkit.isPrimaryThread(), delay = BEDROCK_DELAY) {
114+
receptacle.open(viewer)
115+
settings.properties.forEach { (id, value) ->
116+
if (id >= 0 && value != null) {
117+
receptacle.property(id, value)
118+
}
119+
}
120+
}
121+
} else {
122+
receptacle.open(viewer)
123+
settings.properties.forEach { (id, value) ->
124+
if (id >= 0 && value != null) {
125+
receptacle.property(id, value)
126+
}
112127
}
113128
}
114129
}
@@ -152,7 +167,13 @@ class Menu(
152167
} else {
153168
session.receptacle?.title(title, update = false)
154169
}
155-
receptacle.open(viewer)
170+
if (BEDROCK_DELAY > 0 && PlatformProvider.isBedrockPlayer(viewer)) {
171+
submit(async = Bukkit.isPrimaryThread(), delay = BEDROCK_DELAY) {
172+
receptacle.open(viewer)
173+
}
174+
} else {
175+
receptacle.open(viewer)
176+
}
156177
}
157178
}
158179

plugin/src/main/resources/settings.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Options:
1111
Bedrock: false
1212
Packet-Inventory:
1313
Create-Id: false
14+
Bedrock-Open-Delay: 20
1415

1516
Placeholders:
1617
JavaScript-Parse: false

0 commit comments

Comments
 (0)