Migrate to custom network context

This commit is contained in:
DBotThePony 2023-12-31 17:01:57 +07:00
parent b2d7f6c002
commit 242876d533
Signed by: DBot
GPG Key ID: DCC23B5715498507
15 changed files with 76 additions and 76 deletions

View File

@ -13,7 +13,6 @@ import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener
import net.minecraft.util.profiling.ProfilerFiller
import net.minecraftforge.event.AddReloadListenerEvent
import net.minecraftforge.event.OnDatapackSyncEvent
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.network.PacketDistributor
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.MINECRAFT_SERVER
@ -26,6 +25,7 @@ import ru.dbotthepony.mc.otm.core.fromNetwork
import ru.dbotthepony.mc.otm.core.set
import ru.dbotthepony.mc.otm.core.toNetwork
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.onceServer
import java.util.LinkedList
@ -111,12 +111,11 @@ object AndroidResearchManager : SimpleJsonResourceReloadListener(GsonBuilder().s
LOGGER.debug("Constructed android research registry packet, ${buff.writerIndex()} bytes in size")
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
if (NULLABLE_MINECRAFT_SERVER is IntegratedServer) {
if (NULLABLE_MINECRAFT_SERVER is IntegratedServer)
return
}
val builder = ImmutableMap.builder<ResourceLocation, AndroidResearchType>()

View File

@ -5,7 +5,6 @@ import net.minecraft.client.multiplayer.ClientLevel
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.item.ItemEntity
import net.minecraftforge.event.network.CustomPayloadEvent
import ru.dbotthepony.mc.otm.config.AndroidConfig
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
@ -20,6 +19,7 @@ import ru.dbotthepony.mc.otm.core.math.plus
import ru.dbotthepony.mc.otm.core.position
import ru.dbotthepony.mc.otm.core.math.times
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
import java.util.UUID
@ -44,7 +44,7 @@ class ItemEntityDataPacket(val itemUUID: Int, val owner: UUID? = null, val age:
buff.writeBoolean(hasPickupDelay)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val level = minecraft.player?.level() as ClientLevel? ?: return
val entity = level.getEntity(itemUUID) as ItemEntity? ?: return
datatable[entity] = SharedItemEntityData(owner, age, lifespan, hasPickupDelay)

View File

@ -4,7 +4,6 @@ import net.minecraft.client.gui.GuiGraphics
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.server.level.ServerPlayer
import net.minecraft.sounds.SoundSource
import net.minecraftforge.event.network.CustomPayloadEvent
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
@ -16,19 +15,19 @@ import ru.dbotthepony.mc.otm.core.math.RGBAColor
import ru.dbotthepony.mc.otm.core.math.Vector
import ru.dbotthepony.mc.otm.core.math.plus
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
import ru.dbotthepony.mc.otm.network.SmokeParticlesPacket
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
import ru.dbotthepony.mc.otm.registry.MSoundEvents
import java.util.function.Supplier
object TriggerJumpBoostPacket : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {
// no op
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val mattery = context.sender?.matteryPlayer ?: return
if (!mattery.isAndroid)
@ -39,15 +38,13 @@ object TriggerJumpBoostPacket : MatteryPacket {
if (feature.isActive && feature.cooldown <= 4 && mattery.androidEnergy.extractEnergyExact(AndroidConfig.JumpBoost.ENERGY_COST, false)) {
feature.putOnCooldown()
context.sender?.let {
it.level().playSound(
it, it,
MSoundEvents.ANDROID_JUMP_BOOST, SoundSource.PLAYERS,
1f, 1f
)
context.sender.level().playSound(
context.sender, context.sender,
MSoundEvents.ANDROID_JUMP_BOOST, SoundSource.PLAYERS,
1f, 1f
)
GenericNetworkChannel.makeSmoke(it, it.x, it.y, it.z)
}
GenericNetworkChannel.makeSmoke(context.sender, context.sender.x, context.sender.y, context.sender.z)
}
}
}

View File

@ -8,7 +8,6 @@ import net.minecraft.sounds.SoundSource
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.monster.warden.Warden
import net.minecraftforge.event.network.CustomPayloadEvent
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
@ -26,6 +25,7 @@ import ru.dbotthepony.mc.otm.core.math.plus
import ru.dbotthepony.mc.otm.core.math.roundToIntVector
import ru.dbotthepony.mc.otm.core.math.times
import ru.dbotthepony.mc.otm.core.position
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
import ru.dbotthepony.mc.otm.network.ShockwaveEffectPacket
@ -44,7 +44,7 @@ object TriggerShockwavePacket : MatteryPacket {
// no op
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val shockwave = context.sender?.matteryPlayer?.getFeature(AndroidFeatures.SHOCKWAVE) ?: return
if (!shockwave.isOnCooldown && shockwave.isActive && shockwave.airTicks > 0) {

View File

@ -13,15 +13,14 @@ import net.minecraft.world.inventory.InventoryMenu
import net.minecraft.world.inventory.Slot
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import net.minecraftforge.event.network.CustomPayloadEvent
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
import ru.dbotthepony.mc.otm.capability.matteryPlayer
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import java.util.*
import java.util.function.Supplier
private val menuConfigurations = WeakHashMap<AbstractContainerMenu, MenuConfiguration>()
@ -224,7 +223,7 @@ class InventoryScrollPacket(val scroll: Int) : MatteryPacket {
}.scroll = scroll
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
play(context.sender ?: throw IllegalStateException("Illegal side"))
}

View File

@ -21,7 +21,6 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.event.TickEvent
import net.minecraftforge.event.TickEvent.ServerTickEvent
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.capability.FlowDirection
import ru.dbotthepony.mc.otm.capability.MatteryCapability
@ -50,6 +49,7 @@ import ru.dbotthepony.mc.otm.isClientThread
import ru.dbotthepony.mc.otm.isServerThread
import ru.dbotthepony.mc.otm.lazyPerServer
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import java.util.*
import java.util.function.Function
@ -372,7 +372,7 @@ class QuantumBatteryItem(val savedataID: String, val balanceValues: EnergyBalanc
buff.writeDecimal(received)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val data = type.clientData.computeIfAbsent(uuid, Function { UnboundValues(it) })
data.energy = energy
data.passed = passed

View File

@ -18,7 +18,6 @@ import net.minecraftforge.client.event.RenderHandEvent
import net.minecraftforge.client.event.RenderPlayerEvent
import net.minecraftforge.client.event.ViewportEvent
import net.minecraftforge.event.TickEvent
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.fml.LogicalSide
import ru.dbotthepony.mc.otm.capability.matteryEnergy
import ru.dbotthepony.mc.otm.client.font
@ -41,6 +40,7 @@ import ru.dbotthepony.mc.otm.core.nbt.ints
import ru.dbotthepony.mc.otm.core.nbt.uuids
import ru.dbotthepony.mc.otm.core.tagNotNull
import ru.dbotthepony.mc.otm.core.util.formatPower
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.network.WeaponNetworkChannel
import java.util.*
@ -60,7 +60,7 @@ enum class WeaponScopePacket(val scope: Boolean) : MatteryPacket {
buff.writeBoolean(scope)
}
override fun play(context: CustomPayloadEvent.Context){
override fun play(context: MNetworkContext) {
// TODO: Manual synchronization
val stack = context.sender!!.mainHandItem
val item = stack.item as? AbstractWeaponItem<*> ?: return
@ -80,7 +80,7 @@ enum class WeaponFireInputPacket(val primary: Boolean) : MatteryPacket {
buff.writeBoolean(primary)
}
override fun play(context: CustomPayloadEvent.Context){
override fun play(context: MNetworkContext) {
// TODO: Manual synchronization
val stack = context.sender!!.mainHandItem
val item = stack.item as? AbstractWeaponItem<*> ?: return
@ -91,9 +91,9 @@ enum class WeaponFireInputPacket(val primary: Boolean) : MatteryPacket {
item.dataTable = null
if (primary)
item.tryPrimaryFire(stack, context.sender!!)
item.tryPrimaryFire(stack, context.sender)
else
item.trySecondaryFire(stack, context.sender!!)
item.trySecondaryFire(stack, context.sender)
(item as AbstractWeaponItem<WeaponDataTable>).dataTable = predictedData
}

View File

@ -97,6 +97,7 @@ import ru.dbotthepony.mc.otm.core.util.writeCollection
import ru.dbotthepony.mc.otm.core.writeItemType
import ru.dbotthepony.mc.otm.milliTime
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.registry.RegistryDelegate
import ru.dbotthepony.mc.otm.secondTime
@ -1888,7 +1889,7 @@ object MatterManager {
buff.writeBytes(payload, 0, length)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
if (SERVER_IS_LIVE)
return // singleplayer or LAN host

View File

@ -24,7 +24,6 @@ import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.enchantment.EnchantmentHelper.hasBindingCurse
import net.minecraft.world.level.block.entity.BlockEntity
import net.minecraftforge.event.network.CustomPayloadEvent
import ru.dbotthepony.mc.otm.capability.IMatteryUpgrade
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.UpgradeType
@ -55,6 +54,7 @@ import ru.dbotthepony.mc.otm.core.util.NullValueCodec
import ru.dbotthepony.mc.otm.core.util.VarIntValueCodec
import ru.dbotthepony.mc.otm.menu.input.InstantBooleanInput
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
import ru.dbotthepony.mc.otm.network.MNetworkContext
import ru.dbotthepony.mc.otm.network.MatteryPacket
import ru.dbotthepony.mc.otm.network.MenuFieldPacket
import ru.dbotthepony.mc.otm.network.MenuNetworkChannel
@ -118,9 +118,9 @@ abstract class MatteryMenu(
buff.writeBytes(payload)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val menu = context.sender?.containerMenu as? MatteryMenu ?: return
if (menu.containerId != containerId || !menu.stillValid(context.sender!!)) return
if (menu.containerId != containerId || !menu.stillValid(context.sender)) return
val input = menu.playerInputs.getOrNull(inputId) ?: return
if (!input.test(context.sender)) return
input.invoke(input.codec.read(DataInputStream(FastByteArrayInputStream(payload))))

View File

@ -11,7 +11,6 @@ import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.ClickAction
import net.minecraft.world.inventory.ClickType
import net.minecraft.world.item.ItemStack
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.network.PacketDistributor
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.core.addSorted
@ -42,7 +41,7 @@ data class ItemViewInteractPacket(val stackID: Int, val type: ClickType, val act
buff.writeEnum(action)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val sender = context.sender ?: return
if (!sender.isSpectator) {
@ -59,7 +58,7 @@ data class ItemViewInteractPacket(val stackID: Int, val type: ClickType, val act
}
abstract class NetworkedItemViewPacket : MatteryPacket {
final override fun play(context: CustomPayloadEvent.Context) {
final override fun play(context: MNetworkContext) {
val get = Minecraft.getInstance().player?.containerMenu ?: return
val view = (get as? INetworkedItemViewProvider)?.networkedItemView ?: throw IllegalStateException("No NetworkedItemView is present in currently open menu")
action(view)

View File

@ -5,8 +5,6 @@ import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.item.Item
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.network.PacketDistributor
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.block.entity.matter.MatterPanelBlockEntity
import ru.dbotthepony.mc.otm.capability.matter.*
@ -26,14 +24,13 @@ import ru.dbotthepony.mc.otm.network.*
import ru.dbotthepony.mc.otm.registry.MMenus
import java.util.*
import java.util.function.Predicate
import java.util.function.Supplier
class CancelTaskPacket(val id: UUID) : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {
buff.writeUUID(id)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val sender = context.sender!!
(sender.containerMenu as? MatterPanelMenu)?.receiveTaskCancel(sender, id)
}
@ -51,7 +48,7 @@ class PatternsChangePacket(val isUpdate: Boolean, val patterns: Collection<Patte
buff.writeCollection(patterns, PatternState::write)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val menu = minecraft.player?.containerMenu as? MatterPanelMenu ?: return
if (isUpdate) {
@ -74,7 +71,7 @@ class TasksChangePacket(val isUpdate: Boolean, val tasks: Collection<Replication
buff.writeCollection(tasks, ReplicationTask::write)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val menu = minecraft.player?.containerMenu as? MatterPanelMenu ?: return
if (isUpdate) {
@ -99,7 +96,7 @@ class ReplicationRequestPacket(val id: UUID, amount: Int) : MatteryPacket {
buff.writeInt(amount)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val sender = context.sender ?: return
val menu = sender.containerMenu as? MatterPanelMenu ?: return

View File

@ -9,7 +9,6 @@ import net.minecraft.network.FriendlyByteBuf
import net.minecraft.server.level.ServerPlayer
import net.minecraft.util.RandomSource
import net.minecraft.world.level.Level
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.network.NetworkDirection
import net.minecraftforge.network.PacketDistributor
import org.apache.logging.log4j.LogManager
@ -30,7 +29,7 @@ class SmokeParticlesPacket(val x: Double, val y: Double, val z: Double) : Matter
buff.writeDouble(z)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
minecraft.player?.level()?.let {
makeSmoke(x, y, z, it.random, it)
}
@ -100,7 +99,7 @@ class BlockEntitySyncPacket(val position: BlockPos, val buffer: ByteArray, val v
}
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
execute()
}

View File

@ -14,15 +14,25 @@ import net.minecraftforge.network.SimpleChannel
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.NULLABLE_MINECRAFT_SERVER
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.core.GetterSetter
import java.util.concurrent.CompletableFuture
import java.util.concurrent.ConcurrentLinkedQueue
import java.util.concurrent.locks.LockSupport
import java.util.function.BiConsumer
import java.util.function.Function
import kotlin.reflect.KClass
class MNetworkContext(val sender: ServerPlayer?, packetHandled: GetterSetter<Boolean>, private val enqueuer: (Runnable) -> CompletableFuture<*>) {
var packetHandled by packetHandled
fun enqueueWork(callback: Runnable): CompletableFuture<*> {
return enqueuer(callback)
}
}
interface MatteryPacket {
fun write(buff: FriendlyByteBuf)
fun play(context: CustomPayloadEvent.Context)
fun play(context: MNetworkContext)
}
abstract class MatteryNetworkChannel(val version: Int, val name: String) {
@ -76,7 +86,7 @@ abstract class MatteryNetworkChannel(val version: Int, val name: String) {
packetClass: Class<T>,
writer: BiConsumer<T, FriendlyByteBuf>,
reader: Function<FriendlyByteBuf, T>,
handler: BiConsumer<T, CustomPayloadEvent.Context>,
handler: (T, MNetworkContext) -> Unit,
direction: NetworkDirection? = null,
handleOnMainThread: Boolean = true,
) {
@ -85,11 +95,12 @@ abstract class MatteryNetworkChannel(val version: Int, val name: String) {
}
val builder = channel.messageBuilder(packetClass, direction)
val bridgeHandler = BiConsumer<T, CustomPayloadEvent.Context> { a, b -> handler(a, MNetworkContext(b.sender, GetterSetter.of({ b.packetHandled }, { b.packetHandled = it }), b::enqueueWork)) }
if (handleOnMainThread) {
builder.consumerMainThread(handler)
builder.consumerMainThread(bridgeHandler)
} else {
builder.consumerNetworkThread(handler)
builder.consumerNetworkThread(bridgeHandler)
}
builder.encoder(writer)

View File

@ -8,7 +8,6 @@ import net.minecraft.network.protocol.game.ClientboundSetCarriedItemPacket
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.item.ItemStack
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.network.NetworkDirection.PLAY_TO_CLIENT
import net.minecraftforge.network.NetworkDirection.PLAY_TO_SERVER
import org.apache.logging.log4j.LogManager
@ -54,7 +53,7 @@ class MatteryPlayerFieldPacket(val bytes: ByteArray, val length: Int, val isPubl
buff.writeBytes(bytes, 0, length)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val player: MatteryPlayerCapability
if (target != null) {
@ -89,7 +88,7 @@ class AndroidResearchRequestPacket(val type: AndroidResearchType) : MatteryPacke
buff.writeUtf(type.id.toString())
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val ply = context.sender ?: return
if (ply.isSpectator) return
val android = ply.matteryPlayer ?: return
@ -114,7 +113,7 @@ class AndroidResearchSyncPacket(val type: AndroidResearchType, val dataList: Fas
buff.writeBytes(dataList.array, 0, dataList.length)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
dataBytes ?: throw NullPointerException("No data bytes array is present")
val android = minecraft.player?.matteryPlayer ?: return
android.getResearch(type).applyNetworkPayload(ByteArrayInputStream(dataBytes))
@ -137,7 +136,7 @@ class AndroidFeatureSyncPacket(val type: AndroidFeatureType<*>, val dataList: Fa
buff.writeBytes(dataList.array, 0, dataList.length)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
dataBytes ?: throw NullPointerException("No data bytes array is present")
val android = minecraft.player?.matteryPlayer ?: return
android.computeIfAbsent(type).applyNetworkPayload(ByteArrayInputStream(dataBytes))
@ -158,7 +157,7 @@ class AndroidFeatureRemovePacket(val type: AndroidFeatureType<*>) : MatteryPacke
buff.writeInt(MRegistry.ANDROID_FEATURES.getID(type))
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val android = minecraft.player?.matteryPlayer ?: return
android.removeFeature(type)
}
@ -181,7 +180,7 @@ class PlayerIterationPacket(val iteration: Int, val deathLog: List<Pair<Int, Com
}
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
MatteryGUI.iteration = iteration
@ -213,7 +212,7 @@ class ExopackCarriedPacket(val itemStack: ItemStack, val containerState: Int) :
buff.writeInt(containerState)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val mattery = minecraft.player?.matteryPlayer ?: return
if (mattery.hasExopack) {
@ -236,7 +235,7 @@ class ExopackSlotPacket(val slotId: Int, val itemStack: ItemStack, val container
buff.writeInt(containerState)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
if (slotId < 0) {
LOGGER.error("Unknown slot with ID {} in exosuit menu", slotId)
return
@ -281,7 +280,7 @@ class ExopackMenuInitPacket(val slots: List<ItemStack>, val carried: ItemStack,
buff.writeInt(containerState)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val mattery = minecraft.player?.matteryPlayer ?: return
if (mattery.hasExopack) {
@ -309,7 +308,7 @@ class ExopackMenuInitPacket(val slots: List<ItemStack>, val carried: ItemStack,
object ExopackMenuOpen : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val player = context.sender ?: return
val mattery = player.matteryPlayer ?: return
@ -325,7 +324,7 @@ class SwitchAndroidFeaturePacket(val type: AndroidFeatureType<*>, val newState:
buff.writeBoolean(newState)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val matteryPlayer = context.sender?.matteryPlayer ?: return
if (!matteryPlayer.isAndroid) {
@ -358,7 +357,7 @@ class ActivateAndroidFeaturePacket(val type: AndroidFeatureType<*>) : MatteryPac
buff.writeInt(MRegistry.ANDROID_FEATURES.getID(type))
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val matteryPlayer = context.sender?.matteryPlayer ?: return
if (!matteryPlayer.isAndroid || matteryPlayer.ply.isSpectator) {
@ -388,7 +387,7 @@ class PickItemFromInventoryPacket(
buff.writeVarInt(sourceExosuitSlot)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
val player = context.sender ?: return
val mattery = player.matteryPlayer ?: return
@ -422,7 +421,7 @@ class GlitchPacket(val millis: Long) : MatteryPacket {
buff.writeVarLong(millis)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
GlitchRenderer.glitchFor(millis)
}
@ -441,7 +440,7 @@ class ShockwaveEffectPacket(val pos: Vector) : MatteryPacket {
buff.writeDouble(pos.z)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
ShockwaveRenderer.handle(this)
}
@ -456,7 +455,7 @@ class ShockwaveEffectPacket(val pos: Vector) : MatteryPacket {
object DisplayExopackPacket : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
context.sender?.matteryPlayer?.isExopackVisible = true
}
@ -465,7 +464,7 @@ object DisplayExopackPacket : MatteryPacket {
object HideExopackPacket : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
context.sender?.matteryPlayer?.isExopackVisible = false
}
@ -474,7 +473,7 @@ object HideExopackPacket : MatteryPacket {
object EnableExopackGlowPacket : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
context.sender?.matteryPlayer?.exopackGlows = true
}
@ -483,7 +482,7 @@ object EnableExopackGlowPacket : MatteryPacket {
object DisableExopackGlowPacket : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
context.sender?.matteryPlayer?.exopackGlows = false
}
@ -492,7 +491,7 @@ object DisableExopackGlowPacket : MatteryPacket {
object ResetExopackColorPacket : MatteryPacket {
override fun write(buff: FriendlyByteBuf) {}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
context.sender?.matteryPlayer?.exopackColor = null
}
@ -505,7 +504,7 @@ data class SetExopackColorPacket(val color: RGBAColor) : MatteryPacket {
buff.writeFloat(color.blue)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
context.sender?.matteryPlayer?.exopackColor = color
}
@ -522,7 +521,7 @@ data class ExopackSmokePacket(val player: UUID) : MatteryPacket {
buff.writeUUID(player)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
context.packetHandled = true
// minecraft.player?.level()?.getPlayerByUUID(player)?.matteryPlayer?.spawnExopackSmoke = true

View File

@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.network
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.world.item.ItemStack
import net.minecraftforge.event.network.CustomPayloadEvent
import net.minecraftforge.network.NetworkDirection
import ru.dbotthepony.mc.otm.capability.matteryPlayer
import ru.dbotthepony.mc.otm.client.minecraft
@ -29,7 +28,7 @@ class MenuFieldPacket(val containerId: Int, val bytes: ByteArray, val length: In
buff.writeBytes(bytes, 0, length)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
if (containerId == ExopackInventoryMenu.CONTAINER_ID) {
minecraft.player?.matteryPlayer?.exoPackMenu?.mSynchronizer?.read(ByteArrayInputStream(bytes, 0, length))
} else {
@ -54,7 +53,7 @@ class SetCarriedPacket(val item: ItemStack) : MatteryPacket {
buff.writeItem(item)
}
override fun play(context: CustomPayloadEvent.Context) {
override fun play(context: MNetworkContext) {
minecraft.player?.containerMenu?.carried = item
}