Use sendNow in menus when sending data for first time

This commit is contained in:
DBotThePony 2023-07-30 11:01:22 +07:00
parent 1eb90a5c17
commit 5b30f2e916
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -402,14 +402,18 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
} }
} }
override fun broadcastChanges() { private var broadcastOnce = false
protected fun matteryBroadcast() {
val payload = mSynchronizer.collectNetworkPayload() val payload = mSynchronizer.collectNetworkPayload()
if (payload != null) { if (payload != null) {
if (broadcastOnce) {
MenuNetworkChannel.send(ply, MenuFieldPacket(containerId, payload)) MenuNetworkChannel.send(ply, MenuFieldPacket(containerId, payload))
} else {
MenuNetworkChannel.sendNow(ply, MenuFieldPacket(containerId, payload))
}
} }
super.broadcastChanges()
val consumer = PacketDistributor.PLAYER.with { ply as ServerPlayer } val consumer = PacketDistributor.PLAYER.with { ply as ServerPlayer }
@ -417,30 +421,26 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
val packet = slot.sendChanges() val packet = slot.sendChanges()
if (packet != null) { if (packet != null) {
if (broadcastOnce) {
MenuNetworkChannel.send(consumer, packet) MenuNetworkChannel.send(consumer, packet)
} else {
MenuNetworkChannel.sendNow(consumer, packet)
} }
} }
} }
broadcastOnce = true
}
override fun broadcastChanges() {
super.broadcastChanges()
matteryBroadcast()
}
override fun broadcastFullState() { override fun broadcastFullState() {
mSynchronizer.invalidate() mSynchronizer.invalidate()
val payload = mSynchronizer.collectNetworkPayload()
if (payload != null) {
MenuNetworkChannel.send(ply, MenuFieldPacket(containerId, payload))
}
super.broadcastFullState() super.broadcastFullState()
matteryBroadcast()
val consumer = PacketDistributor.PLAYER.with { ply as ServerPlayer }
for (slot in _filterSlots) {
val packet = slot.sendChanges(true)
if (packet != null) {
MenuNetworkChannel.send(consumer, packet)
}
}
} }
override fun stillValid(player: Player): Boolean { override fun stillValid(player: Player): Boolean {