This commit is contained in:
DBotThePony 2023-01-26 20:14:14 +07:00
parent 22ec96345b
commit fc1623b478
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -28,6 +28,7 @@ import ru.dbotthepony.mc.otm.network.FieldSynchronizer
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.network.MenuFieldPacket
import ru.dbotthepony.mc.otm.network.MenuNetworkChannel
import ru.dbotthepony.mc.otm.network.enqueueWork
import ru.dbotthepony.mc.otm.network.packetHandled
import ru.dbotthepony.mc.otm.network.sender
import java.io.DataInputStream
@ -68,13 +69,16 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
override fun play(context: Supplier<NetworkEvent.Context>) {
context.packetHandled = true
val menu = context.sender?.containerMenu as? MatteryMenu ?: return
if (menu.containerId != containerId) return
val input = menu.playerInputs.getOrNull(inputId) ?: return
if (!input.allowSpectators && context.sender!!.isSpectator) return
context.enqueueWork {
val menu = context.sender?.containerMenu as? MatteryMenu ?: return@enqueueWork
if (menu.containerId != containerId) return@enqueueWork
val input = menu.playerInputs.getOrNull(inputId) ?: return@enqueueWork
if (!input.allowSpectators && context.sender!!.isSpectator) return@enqueueWork
input.invoke(input.codec.read(DataInputStream(FastByteArrayInputStream(payload))))
}
}
}
inner class PlayerInput<V>(val codec: IStreamCodec<V>, val allowSpectators: Boolean = false, val handler: (V) -> Unit) {
val id = playerInputs.size