Пакеты не работают

Версия Minecraft
1.12.2
1,470
19
189
Всем привет. Хочу отправить пакетом инт на гуи. Но он не работает.
Вот код:
Kotlin:
class ManaMessage: IMessage {
    companion object {
        private val player = Minecraft.getMinecraft().player!!
        private val manaCap = player.getCapability<Mana.IManaHandler>(Mana.CAPABILITY_MANA!!, null)
        var mana = manaCap?.getMana()
    }

    override fun fromBytes(buf: ByteBuf?) {
        mana = buf?.getInt(mana!!)
    }

    override fun toBytes(buf: ByteBuf?) {
        buf?.writeInt(mana!!)
    }
}
Kotlin:
class ManaMessageHandler : IMessageHandler<ManaMessage, IMessage> {
    override fun onMessage(message: ManaMessage?, ctx: MessageContext?): IMessage? {
        val mainThread = ctx?.serverHandler?.player?.world as WorldServer // or Minecraft.getMinecraft() on the client
        mainThread.addScheduledTask { println(String.format("Received %s from %s", ManaMessage.mana, ctx?.serverHandler.player.displayName)) }
        return null
    }
}
Kotlin:
class PacketsRegister {
    companion object {
        private val INSTANCE = SimpleNetworkWrapper(modid)

        fun registerMessages(){
            INSTANCE.registerMessage(ManaMessageHandler::class.java, ManaMessage::class.java, 0, Side.CLIENT)
        }
    }
}
PacketsRegister#registerMessages вызываю из init CommonProxy
Устанавливаю так:
Kotlin:
val mana = ManaMessage.mana
mc.fontRenderer.drawString(mana?.toString() + "/40", 35, 29, 0xffffff)
 
2,505
81
397
Ты пишешь, что хочешь отправить инт с сервера на клиент, но твой код говорил об обратном.

Kotlin:
class ManaMessage : IMessage {

    var mana: Int = 0

    constructor()

    constructor(player: EntityPlayer) {
        mana = player.getCapability(Mana.CAPABILITY_MANA!!, null)?.getMana() ?: 0
    }

    override fun toBytes(buf: ByteBuf) {
        buf.writeInt(mana)
    }

    override fun fromBytes(buf: ByteBuf) {
        mana = buf.getInt(mana)
    }
}

class ManaMessageHandler : IMessageHandler<ManaMessage, IMessage> {
    override fun onMessage(message: ManaMessage, ctx: MessageContext): IMessage? {
        val player = Minecraft.getMinecraft().thePlayer
        // вероятно, должно быть что-то типа этого
        player.getCapability(Mana.CAPABILITY_MANA!!, null)?.setMana(message.mana)
        return null
    }
}

// Так делать не очень правильно, но это аналог твоего кода
object PacketsRegister : SimpleNetworkWrapper(modid) {
    fun registerMessages() {
        registerMessage(ManaMessageHandler::class.java, ManaMessage::class.java, 0, Side.CLIENT)
    }
}
 
Последнее редактирование:
Сверху