Migrate to custom network context
This commit is contained in:
parent
b2d7f6c002
commit
242876d533
@ -13,7 +13,6 @@ import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener
|
|||||||
import net.minecraft.util.profiling.ProfilerFiller
|
import net.minecraft.util.profiling.ProfilerFiller
|
||||||
import net.minecraftforge.event.AddReloadListenerEvent
|
import net.minecraftforge.event.AddReloadListenerEvent
|
||||||
import net.minecraftforge.event.OnDatapackSyncEvent
|
import net.minecraftforge.event.OnDatapackSyncEvent
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import net.minecraftforge.network.PacketDistributor
|
import net.minecraftforge.network.PacketDistributor
|
||||||
import org.apache.logging.log4j.LogManager
|
import org.apache.logging.log4j.LogManager
|
||||||
import ru.dbotthepony.mc.otm.MINECRAFT_SERVER
|
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.set
|
||||||
import ru.dbotthepony.mc.otm.core.toNetwork
|
import ru.dbotthepony.mc.otm.core.toNetwork
|
||||||
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
|
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.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.onceServer
|
import ru.dbotthepony.mc.otm.onceServer
|
||||||
import java.util.LinkedList
|
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")
|
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
|
context.packetHandled = true
|
||||||
|
|
||||||
if (NULLABLE_MINECRAFT_SERVER is IntegratedServer) {
|
if (NULLABLE_MINECRAFT_SERVER is IntegratedServer)
|
||||||
return
|
return
|
||||||
}
|
|
||||||
|
|
||||||
val builder = ImmutableMap.builder<ResourceLocation, AndroidResearchType>()
|
val builder = ImmutableMap.builder<ResourceLocation, AndroidResearchType>()
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import net.minecraft.client.multiplayer.ClientLevel
|
|||||||
import net.minecraft.network.FriendlyByteBuf
|
import net.minecraft.network.FriendlyByteBuf
|
||||||
import net.minecraft.world.entity.Entity
|
import net.minecraft.world.entity.Entity
|
||||||
import net.minecraft.world.entity.item.ItemEntity
|
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.config.AndroidConfig
|
||||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
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.position
|
||||||
import ru.dbotthepony.mc.otm.core.math.times
|
import ru.dbotthepony.mc.otm.core.math.times
|
||||||
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
|
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.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
@ -44,7 +44,7 @@ class ItemEntityDataPacket(val itemUUID: Int, val owner: UUID? = null, val age:
|
|||||||
buff.writeBoolean(hasPickupDelay)
|
buff.writeBoolean(hasPickupDelay)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val level = minecraft.player?.level() as ClientLevel? ?: return
|
val level = minecraft.player?.level() as ClientLevel? ?: return
|
||||||
val entity = level.getEntity(itemUUID) as ItemEntity? ?: return
|
val entity = level.getEntity(itemUUID) as ItemEntity? ?: return
|
||||||
datatable[entity] = SharedItemEntityData(owner, age, lifespan, hasPickupDelay)
|
datatable[entity] = SharedItemEntityData(owner, age, lifespan, hasPickupDelay)
|
||||||
|
@ -4,7 +4,6 @@ import net.minecraft.client.gui.GuiGraphics
|
|||||||
import net.minecraft.network.FriendlyByteBuf
|
import net.minecraft.network.FriendlyByteBuf
|
||||||
import net.minecraft.server.level.ServerPlayer
|
import net.minecraft.server.level.ServerPlayer
|
||||||
import net.minecraft.sounds.SoundSource
|
import net.minecraft.sounds.SoundSource
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
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.Vector
|
||||||
import ru.dbotthepony.mc.otm.core.math.plus
|
import ru.dbotthepony.mc.otm.core.math.plus
|
||||||
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
|
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.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
|
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
|
||||||
import ru.dbotthepony.mc.otm.network.SmokeParticlesPacket
|
import ru.dbotthepony.mc.otm.network.SmokeParticlesPacket
|
||||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||||
import ru.dbotthepony.mc.otm.registry.MSoundEvents
|
import ru.dbotthepony.mc.otm.registry.MSoundEvents
|
||||||
import java.util.function.Supplier
|
|
||||||
|
|
||||||
object TriggerJumpBoostPacket : MatteryPacket {
|
object TriggerJumpBoostPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {
|
override fun write(buff: FriendlyByteBuf) {
|
||||||
// no op
|
// no op
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val mattery = context.sender?.matteryPlayer ?: return
|
val mattery = context.sender?.matteryPlayer ?: return
|
||||||
|
|
||||||
if (!mattery.isAndroid)
|
if (!mattery.isAndroid)
|
||||||
@ -39,15 +38,13 @@ object TriggerJumpBoostPacket : MatteryPacket {
|
|||||||
if (feature.isActive && feature.cooldown <= 4 && mattery.androidEnergy.extractEnergyExact(AndroidConfig.JumpBoost.ENERGY_COST, false)) {
|
if (feature.isActive && feature.cooldown <= 4 && mattery.androidEnergy.extractEnergyExact(AndroidConfig.JumpBoost.ENERGY_COST, false)) {
|
||||||
feature.putOnCooldown()
|
feature.putOnCooldown()
|
||||||
|
|
||||||
context.sender?.let {
|
context.sender.level().playSound(
|
||||||
it.level().playSound(
|
context.sender, context.sender,
|
||||||
it, it,
|
|
||||||
MSoundEvents.ANDROID_JUMP_BOOST, SoundSource.PLAYERS,
|
MSoundEvents.ANDROID_JUMP_BOOST, SoundSource.PLAYERS,
|
||||||
1f, 1f
|
1f, 1f
|
||||||
)
|
)
|
||||||
|
|
||||||
GenericNetworkChannel.makeSmoke(it, it.x, it.y, it.z)
|
GenericNetworkChannel.makeSmoke(context.sender, context.sender.x, context.sender.y, context.sender.z)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ import net.minecraft.sounds.SoundSource
|
|||||||
import net.minecraft.world.entity.Entity
|
import net.minecraft.world.entity.Entity
|
||||||
import net.minecraft.world.entity.LivingEntity
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import net.minecraft.world.entity.monster.warden.Warden
|
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.android.AndroidSwitchableFeature
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
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.roundToIntVector
|
||||||
import ru.dbotthepony.mc.otm.core.math.times
|
import ru.dbotthepony.mc.otm.core.math.times
|
||||||
import ru.dbotthepony.mc.otm.core.position
|
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.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
|
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
|
||||||
import ru.dbotthepony.mc.otm.network.ShockwaveEffectPacket
|
import ru.dbotthepony.mc.otm.network.ShockwaveEffectPacket
|
||||||
@ -44,7 +44,7 @@ object TriggerShockwavePacket : MatteryPacket {
|
|||||||
// no op
|
// no op
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val shockwave = context.sender?.matteryPlayer?.getFeature(AndroidFeatures.SHOCKWAVE) ?: return
|
val shockwave = context.sender?.matteryPlayer?.getFeature(AndroidFeatures.SHOCKWAVE) ?: return
|
||||||
|
|
||||||
if (!shockwave.isOnCooldown && shockwave.isActive && shockwave.airTicks > 0) {
|
if (!shockwave.isOnCooldown && shockwave.isActive && shockwave.airTicks > 0) {
|
||||||
|
@ -13,15 +13,14 @@ import net.minecraft.world.inventory.InventoryMenu
|
|||||||
import net.minecraft.world.inventory.Slot
|
import net.minecraft.world.inventory.Slot
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraft.world.item.Items
|
import net.minecraft.world.item.Items
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import org.apache.logging.log4j.LogManager
|
import org.apache.logging.log4j.LogManager
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.MatterySlot
|
import ru.dbotthepony.mc.otm.menu.MatterySlot
|
||||||
|
import ru.dbotthepony.mc.otm.network.MNetworkContext
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryPacket
|
import ru.dbotthepony.mc.otm.network.MatteryPacket
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.function.Supplier
|
|
||||||
|
|
||||||
private val menuConfigurations = WeakHashMap<AbstractContainerMenu, MenuConfiguration>()
|
private val menuConfigurations = WeakHashMap<AbstractContainerMenu, MenuConfiguration>()
|
||||||
|
|
||||||
@ -224,7 +223,7 @@ class InventoryScrollPacket(val scroll: Int) : MatteryPacket {
|
|||||||
}.scroll = scroll
|
}.scroll = scroll
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
play(context.sender ?: throw IllegalStateException("Illegal side"))
|
play(context.sender ?: throw IllegalStateException("Illegal side"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider
|
|||||||
import net.minecraftforge.common.util.LazyOptional
|
import net.minecraftforge.common.util.LazyOptional
|
||||||
import net.minecraftforge.event.TickEvent
|
import net.minecraftforge.event.TickEvent
|
||||||
import net.minecraftforge.event.TickEvent.ServerTickEvent
|
import net.minecraftforge.event.TickEvent.ServerTickEvent
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries
|
import net.minecraftforge.registries.ForgeRegistries
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
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.isServerThread
|
||||||
import ru.dbotthepony.mc.otm.lazyPerServer
|
import ru.dbotthepony.mc.otm.lazyPerServer
|
||||||
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
|
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.MatteryPacket
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.function.Function
|
import java.util.function.Function
|
||||||
@ -372,7 +372,7 @@ class QuantumBatteryItem(val savedataID: String, val balanceValues: EnergyBalanc
|
|||||||
buff.writeDecimal(received)
|
buff.writeDecimal(received)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val data = type.clientData.computeIfAbsent(uuid, Function { UnboundValues(it) })
|
val data = type.clientData.computeIfAbsent(uuid, Function { UnboundValues(it) })
|
||||||
data.energy = energy
|
data.energy = energy
|
||||||
data.passed = passed
|
data.passed = passed
|
||||||
|
@ -18,7 +18,6 @@ import net.minecraftforge.client.event.RenderHandEvent
|
|||||||
import net.minecraftforge.client.event.RenderPlayerEvent
|
import net.minecraftforge.client.event.RenderPlayerEvent
|
||||||
import net.minecraftforge.client.event.ViewportEvent
|
import net.minecraftforge.client.event.ViewportEvent
|
||||||
import net.minecraftforge.event.TickEvent
|
import net.minecraftforge.event.TickEvent
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import net.minecraftforge.fml.LogicalSide
|
import net.minecraftforge.fml.LogicalSide
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryEnergy
|
import ru.dbotthepony.mc.otm.capability.matteryEnergy
|
||||||
import ru.dbotthepony.mc.otm.client.font
|
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.nbt.uuids
|
||||||
import ru.dbotthepony.mc.otm.core.tagNotNull
|
import ru.dbotthepony.mc.otm.core.tagNotNull
|
||||||
import ru.dbotthepony.mc.otm.core.util.formatPower
|
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.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.network.WeaponNetworkChannel
|
import ru.dbotthepony.mc.otm.network.WeaponNetworkChannel
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -60,7 +60,7 @@ enum class WeaponScopePacket(val scope: Boolean) : MatteryPacket {
|
|||||||
buff.writeBoolean(scope)
|
buff.writeBoolean(scope)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context){
|
override fun play(context: MNetworkContext) {
|
||||||
// TODO: Manual synchronization
|
// TODO: Manual synchronization
|
||||||
val stack = context.sender!!.mainHandItem
|
val stack = context.sender!!.mainHandItem
|
||||||
val item = stack.item as? AbstractWeaponItem<*> ?: return
|
val item = stack.item as? AbstractWeaponItem<*> ?: return
|
||||||
@ -80,7 +80,7 @@ enum class WeaponFireInputPacket(val primary: Boolean) : MatteryPacket {
|
|||||||
buff.writeBoolean(primary)
|
buff.writeBoolean(primary)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context){
|
override fun play(context: MNetworkContext) {
|
||||||
// TODO: Manual synchronization
|
// TODO: Manual synchronization
|
||||||
val stack = context.sender!!.mainHandItem
|
val stack = context.sender!!.mainHandItem
|
||||||
val item = stack.item as? AbstractWeaponItem<*> ?: return
|
val item = stack.item as? AbstractWeaponItem<*> ?: return
|
||||||
@ -91,9 +91,9 @@ enum class WeaponFireInputPacket(val primary: Boolean) : MatteryPacket {
|
|||||||
item.dataTable = null
|
item.dataTable = null
|
||||||
|
|
||||||
if (primary)
|
if (primary)
|
||||||
item.tryPrimaryFire(stack, context.sender!!)
|
item.tryPrimaryFire(stack, context.sender)
|
||||||
else
|
else
|
||||||
item.trySecondaryFire(stack, context.sender!!)
|
item.trySecondaryFire(stack, context.sender)
|
||||||
|
|
||||||
(item as AbstractWeaponItem<WeaponDataTable>).dataTable = predictedData
|
(item as AbstractWeaponItem<WeaponDataTable>).dataTable = predictedData
|
||||||
}
|
}
|
||||||
|
@ -97,6 +97,7 @@ import ru.dbotthepony.mc.otm.core.util.writeCollection
|
|||||||
import ru.dbotthepony.mc.otm.core.writeItemType
|
import ru.dbotthepony.mc.otm.core.writeItemType
|
||||||
import ru.dbotthepony.mc.otm.milliTime
|
import ru.dbotthepony.mc.otm.milliTime
|
||||||
import ru.dbotthepony.mc.otm.network.GenericNetworkChannel
|
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.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.registry.RegistryDelegate
|
import ru.dbotthepony.mc.otm.registry.RegistryDelegate
|
||||||
import ru.dbotthepony.mc.otm.secondTime
|
import ru.dbotthepony.mc.otm.secondTime
|
||||||
@ -1888,7 +1889,7 @@ object MatterManager {
|
|||||||
buff.writeBytes(payload, 0, length)
|
buff.writeBytes(payload, 0, length)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
if (SERVER_IS_LIVE)
|
if (SERVER_IS_LIVE)
|
||||||
return // singleplayer or LAN host
|
return // singleplayer or LAN host
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ import net.minecraft.world.item.Item
|
|||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentHelper.hasBindingCurse
|
import net.minecraft.world.item.enchantment.EnchantmentHelper.hasBindingCurse
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity
|
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.IMatteryUpgrade
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
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.core.util.VarIntValueCodec
|
||||||
import ru.dbotthepony.mc.otm.menu.input.InstantBooleanInput
|
import ru.dbotthepony.mc.otm.menu.input.InstantBooleanInput
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
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.MatteryPacket
|
||||||
import ru.dbotthepony.mc.otm.network.MenuFieldPacket
|
import ru.dbotthepony.mc.otm.network.MenuFieldPacket
|
||||||
import ru.dbotthepony.mc.otm.network.MenuNetworkChannel
|
import ru.dbotthepony.mc.otm.network.MenuNetworkChannel
|
||||||
@ -118,9 +118,9 @@ abstract class MatteryMenu(
|
|||||||
buff.writeBytes(payload)
|
buff.writeBytes(payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val menu = context.sender?.containerMenu as? MatteryMenu ?: return
|
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
|
val input = menu.playerInputs.getOrNull(inputId) ?: return
|
||||||
if (!input.test(context.sender)) return
|
if (!input.test(context.sender)) return
|
||||||
input.invoke(input.codec.read(DataInputStream(FastByteArrayInputStream(payload))))
|
input.invoke(input.codec.read(DataInputStream(FastByteArrayInputStream(payload))))
|
||||||
|
@ -11,7 +11,6 @@ import net.minecraft.world.entity.player.Player
|
|||||||
import net.minecraft.world.inventory.ClickAction
|
import net.minecraft.world.inventory.ClickAction
|
||||||
import net.minecraft.world.inventory.ClickType
|
import net.minecraft.world.inventory.ClickType
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import net.minecraftforge.network.PacketDistributor
|
import net.minecraftforge.network.PacketDistributor
|
||||||
import ru.dbotthepony.mc.otm.client.minecraft
|
import ru.dbotthepony.mc.otm.client.minecraft
|
||||||
import ru.dbotthepony.mc.otm.core.addSorted
|
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)
|
buff.writeEnum(action)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val sender = context.sender ?: return
|
val sender = context.sender ?: return
|
||||||
|
|
||||||
if (!sender.isSpectator) {
|
if (!sender.isSpectator) {
|
||||||
@ -59,7 +58,7 @@ data class ItemViewInteractPacket(val stackID: Int, val type: ClickType, val act
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class NetworkedItemViewPacket : MatteryPacket {
|
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 get = Minecraft.getInstance().player?.containerMenu ?: return
|
||||||
val view = (get as? INetworkedItemViewProvider)?.networkedItemView ?: throw IllegalStateException("No NetworkedItemView is present in currently open menu")
|
val view = (get as? INetworkedItemViewProvider)?.networkedItemView ?: throw IllegalStateException("No NetworkedItemView is present in currently open menu")
|
||||||
action(view)
|
action(view)
|
||||||
|
@ -5,8 +5,6 @@ import net.minecraft.server.level.ServerPlayer
|
|||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.item.Item
|
import net.minecraft.world.item.Item
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import net.minecraftforge.network.PacketDistributor
|
|
||||||
import org.apache.logging.log4j.LogManager
|
import org.apache.logging.log4j.LogManager
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterPanelBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterPanelBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.*
|
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 ru.dbotthepony.mc.otm.registry.MMenus
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.function.Predicate
|
import java.util.function.Predicate
|
||||||
import java.util.function.Supplier
|
|
||||||
|
|
||||||
class CancelTaskPacket(val id: UUID) : MatteryPacket {
|
class CancelTaskPacket(val id: UUID) : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {
|
override fun write(buff: FriendlyByteBuf) {
|
||||||
buff.writeUUID(id)
|
buff.writeUUID(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val sender = context.sender!!
|
val sender = context.sender!!
|
||||||
(sender.containerMenu as? MatterPanelMenu)?.receiveTaskCancel(sender, id)
|
(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)
|
buff.writeCollection(patterns, PatternState::write)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val menu = minecraft.player?.containerMenu as? MatterPanelMenu ?: return
|
val menu = minecraft.player?.containerMenu as? MatterPanelMenu ?: return
|
||||||
|
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
@ -74,7 +71,7 @@ class TasksChangePacket(val isUpdate: Boolean, val tasks: Collection<Replication
|
|||||||
buff.writeCollection(tasks, ReplicationTask::write)
|
buff.writeCollection(tasks, ReplicationTask::write)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val menu = minecraft.player?.containerMenu as? MatterPanelMenu ?: return
|
val menu = minecraft.player?.containerMenu as? MatterPanelMenu ?: return
|
||||||
|
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
@ -99,7 +96,7 @@ class ReplicationRequestPacket(val id: UUID, amount: Int) : MatteryPacket {
|
|||||||
buff.writeInt(amount)
|
buff.writeInt(amount)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val sender = context.sender ?: return
|
val sender = context.sender ?: return
|
||||||
val menu = sender.containerMenu as? MatterPanelMenu ?: return
|
val menu = sender.containerMenu as? MatterPanelMenu ?: return
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ import net.minecraft.network.FriendlyByteBuf
|
|||||||
import net.minecraft.server.level.ServerPlayer
|
import net.minecraft.server.level.ServerPlayer
|
||||||
import net.minecraft.util.RandomSource
|
import net.minecraft.util.RandomSource
|
||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import net.minecraftforge.network.NetworkDirection
|
import net.minecraftforge.network.NetworkDirection
|
||||||
import net.minecraftforge.network.PacketDistributor
|
import net.minecraftforge.network.PacketDistributor
|
||||||
import org.apache.logging.log4j.LogManager
|
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)
|
buff.writeDouble(z)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
minecraft.player?.level()?.let {
|
minecraft.player?.level()?.let {
|
||||||
makeSmoke(x, y, z, it.random, it)
|
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()
|
execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,15 +14,25 @@ import net.minecraftforge.network.SimpleChannel
|
|||||||
import org.apache.logging.log4j.LogManager
|
import org.apache.logging.log4j.LogManager
|
||||||
import ru.dbotthepony.mc.otm.NULLABLE_MINECRAFT_SERVER
|
import ru.dbotthepony.mc.otm.NULLABLE_MINECRAFT_SERVER
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
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.ConcurrentLinkedQueue
|
||||||
import java.util.concurrent.locks.LockSupport
|
import java.util.concurrent.locks.LockSupport
|
||||||
import java.util.function.BiConsumer
|
import java.util.function.BiConsumer
|
||||||
import java.util.function.Function
|
import java.util.function.Function
|
||||||
import kotlin.reflect.KClass
|
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 {
|
interface MatteryPacket {
|
||||||
fun write(buff: FriendlyByteBuf)
|
fun write(buff: FriendlyByteBuf)
|
||||||
fun play(context: CustomPayloadEvent.Context)
|
fun play(context: MNetworkContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class MatteryNetworkChannel(val version: Int, val name: String) {
|
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>,
|
packetClass: Class<T>,
|
||||||
writer: BiConsumer<T, FriendlyByteBuf>,
|
writer: BiConsumer<T, FriendlyByteBuf>,
|
||||||
reader: Function<FriendlyByteBuf, T>,
|
reader: Function<FriendlyByteBuf, T>,
|
||||||
handler: BiConsumer<T, CustomPayloadEvent.Context>,
|
handler: (T, MNetworkContext) -> Unit,
|
||||||
direction: NetworkDirection? = null,
|
direction: NetworkDirection? = null,
|
||||||
handleOnMainThread: Boolean = true,
|
handleOnMainThread: Boolean = true,
|
||||||
) {
|
) {
|
||||||
@ -85,11 +95,12 @@ abstract class MatteryNetworkChannel(val version: Int, val name: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val builder = channel.messageBuilder(packetClass, direction)
|
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) {
|
if (handleOnMainThread) {
|
||||||
builder.consumerMainThread(handler)
|
builder.consumerMainThread(bridgeHandler)
|
||||||
} else {
|
} else {
|
||||||
builder.consumerNetworkThread(handler)
|
builder.consumerNetworkThread(bridgeHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.encoder(writer)
|
builder.encoder(writer)
|
||||||
|
@ -8,7 +8,6 @@ import net.minecraft.network.protocol.game.ClientboundSetCarriedItemPacket
|
|||||||
import net.minecraft.resources.ResourceLocation
|
import net.minecraft.resources.ResourceLocation
|
||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import net.minecraft.world.item.ItemStack
|
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_CLIENT
|
||||||
import net.minecraftforge.network.NetworkDirection.PLAY_TO_SERVER
|
import net.minecraftforge.network.NetworkDirection.PLAY_TO_SERVER
|
||||||
import org.apache.logging.log4j.LogManager
|
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)
|
buff.writeBytes(bytes, 0, length)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val player: MatteryPlayerCapability
|
val player: MatteryPlayerCapability
|
||||||
|
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
@ -89,7 +88,7 @@ class AndroidResearchRequestPacket(val type: AndroidResearchType) : MatteryPacke
|
|||||||
buff.writeUtf(type.id.toString())
|
buff.writeUtf(type.id.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val ply = context.sender ?: return
|
val ply = context.sender ?: return
|
||||||
if (ply.isSpectator) return
|
if (ply.isSpectator) return
|
||||||
val android = ply.matteryPlayer ?: 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)
|
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")
|
dataBytes ?: throw NullPointerException("No data bytes array is present")
|
||||||
val android = minecraft.player?.matteryPlayer ?: return
|
val android = minecraft.player?.matteryPlayer ?: return
|
||||||
android.getResearch(type).applyNetworkPayload(ByteArrayInputStream(dataBytes))
|
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)
|
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")
|
dataBytes ?: throw NullPointerException("No data bytes array is present")
|
||||||
val android = minecraft.player?.matteryPlayer ?: return
|
val android = minecraft.player?.matteryPlayer ?: return
|
||||||
android.computeIfAbsent(type).applyNetworkPayload(ByteArrayInputStream(dataBytes))
|
android.computeIfAbsent(type).applyNetworkPayload(ByteArrayInputStream(dataBytes))
|
||||||
@ -158,7 +157,7 @@ class AndroidFeatureRemovePacket(val type: AndroidFeatureType<*>) : MatteryPacke
|
|||||||
buff.writeInt(MRegistry.ANDROID_FEATURES.getID(type))
|
buff.writeInt(MRegistry.ANDROID_FEATURES.getID(type))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val android = minecraft.player?.matteryPlayer ?: return
|
val android = minecraft.player?.matteryPlayer ?: return
|
||||||
android.removeFeature(type)
|
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
|
context.packetHandled = true
|
||||||
|
|
||||||
MatteryGUI.iteration = iteration
|
MatteryGUI.iteration = iteration
|
||||||
@ -213,7 +212,7 @@ class ExopackCarriedPacket(val itemStack: ItemStack, val containerState: Int) :
|
|||||||
buff.writeInt(containerState)
|
buff.writeInt(containerState)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val mattery = minecraft.player?.matteryPlayer ?: return
|
val mattery = minecraft.player?.matteryPlayer ?: return
|
||||||
|
|
||||||
if (mattery.hasExopack) {
|
if (mattery.hasExopack) {
|
||||||
@ -236,7 +235,7 @@ class ExopackSlotPacket(val slotId: Int, val itemStack: ItemStack, val container
|
|||||||
buff.writeInt(containerState)
|
buff.writeInt(containerState)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
if (slotId < 0) {
|
if (slotId < 0) {
|
||||||
LOGGER.error("Unknown slot with ID {} in exosuit menu", slotId)
|
LOGGER.error("Unknown slot with ID {} in exosuit menu", slotId)
|
||||||
return
|
return
|
||||||
@ -281,7 +280,7 @@ class ExopackMenuInitPacket(val slots: List<ItemStack>, val carried: ItemStack,
|
|||||||
buff.writeInt(containerState)
|
buff.writeInt(containerState)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val mattery = minecraft.player?.matteryPlayer ?: return
|
val mattery = minecraft.player?.matteryPlayer ?: return
|
||||||
|
|
||||||
if (mattery.hasExopack) {
|
if (mattery.hasExopack) {
|
||||||
@ -309,7 +308,7 @@ class ExopackMenuInitPacket(val slots: List<ItemStack>, val carried: ItemStack,
|
|||||||
object ExopackMenuOpen : MatteryPacket {
|
object ExopackMenuOpen : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val player = context.sender ?: return
|
val player = context.sender ?: return
|
||||||
val mattery = player.matteryPlayer ?: return
|
val mattery = player.matteryPlayer ?: return
|
||||||
|
|
||||||
@ -325,7 +324,7 @@ class SwitchAndroidFeaturePacket(val type: AndroidFeatureType<*>, val newState:
|
|||||||
buff.writeBoolean(newState)
|
buff.writeBoolean(newState)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val matteryPlayer = context.sender?.matteryPlayer ?: return
|
val matteryPlayer = context.sender?.matteryPlayer ?: return
|
||||||
|
|
||||||
if (!matteryPlayer.isAndroid) {
|
if (!matteryPlayer.isAndroid) {
|
||||||
@ -358,7 +357,7 @@ class ActivateAndroidFeaturePacket(val type: AndroidFeatureType<*>) : MatteryPac
|
|||||||
buff.writeInt(MRegistry.ANDROID_FEATURES.getID(type))
|
buff.writeInt(MRegistry.ANDROID_FEATURES.getID(type))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val matteryPlayer = context.sender?.matteryPlayer ?: return
|
val matteryPlayer = context.sender?.matteryPlayer ?: return
|
||||||
|
|
||||||
if (!matteryPlayer.isAndroid || matteryPlayer.ply.isSpectator) {
|
if (!matteryPlayer.isAndroid || matteryPlayer.ply.isSpectator) {
|
||||||
@ -388,7 +387,7 @@ class PickItemFromInventoryPacket(
|
|||||||
buff.writeVarInt(sourceExosuitSlot)
|
buff.writeVarInt(sourceExosuitSlot)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
val player = context.sender ?: return
|
val player = context.sender ?: return
|
||||||
val mattery = player.matteryPlayer ?: return
|
val mattery = player.matteryPlayer ?: return
|
||||||
|
|
||||||
@ -422,7 +421,7 @@ class GlitchPacket(val millis: Long) : MatteryPacket {
|
|||||||
buff.writeVarLong(millis)
|
buff.writeVarLong(millis)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
GlitchRenderer.glitchFor(millis)
|
GlitchRenderer.glitchFor(millis)
|
||||||
}
|
}
|
||||||
@ -441,7 +440,7 @@ class ShockwaveEffectPacket(val pos: Vector) : MatteryPacket {
|
|||||||
buff.writeDouble(pos.z)
|
buff.writeDouble(pos.z)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
ShockwaveRenderer.handle(this)
|
ShockwaveRenderer.handle(this)
|
||||||
}
|
}
|
||||||
@ -456,7 +455,7 @@ class ShockwaveEffectPacket(val pos: Vector) : MatteryPacket {
|
|||||||
object DisplayExopackPacket : MatteryPacket {
|
object DisplayExopackPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
context.sender?.matteryPlayer?.isExopackVisible = true
|
context.sender?.matteryPlayer?.isExopackVisible = true
|
||||||
}
|
}
|
||||||
@ -465,7 +464,7 @@ object DisplayExopackPacket : MatteryPacket {
|
|||||||
object HideExopackPacket : MatteryPacket {
|
object HideExopackPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
context.sender?.matteryPlayer?.isExopackVisible = false
|
context.sender?.matteryPlayer?.isExopackVisible = false
|
||||||
}
|
}
|
||||||
@ -474,7 +473,7 @@ object HideExopackPacket : MatteryPacket {
|
|||||||
object EnableExopackGlowPacket : MatteryPacket {
|
object EnableExopackGlowPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
context.sender?.matteryPlayer?.exopackGlows = true
|
context.sender?.matteryPlayer?.exopackGlows = true
|
||||||
}
|
}
|
||||||
@ -483,7 +482,7 @@ object EnableExopackGlowPacket : MatteryPacket {
|
|||||||
object DisableExopackGlowPacket : MatteryPacket {
|
object DisableExopackGlowPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
context.sender?.matteryPlayer?.exopackGlows = false
|
context.sender?.matteryPlayer?.exopackGlows = false
|
||||||
}
|
}
|
||||||
@ -492,7 +491,7 @@ object DisableExopackGlowPacket : MatteryPacket {
|
|||||||
object ResetExopackColorPacket : MatteryPacket {
|
object ResetExopackColorPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
context.sender?.matteryPlayer?.exopackColor = null
|
context.sender?.matteryPlayer?.exopackColor = null
|
||||||
}
|
}
|
||||||
@ -505,7 +504,7 @@ data class SetExopackColorPacket(val color: RGBAColor) : MatteryPacket {
|
|||||||
buff.writeFloat(color.blue)
|
buff.writeFloat(color.blue)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
context.sender?.matteryPlayer?.exopackColor = color
|
context.sender?.matteryPlayer?.exopackColor = color
|
||||||
}
|
}
|
||||||
@ -522,7 +521,7 @@ data class ExopackSmokePacket(val player: UUID) : MatteryPacket {
|
|||||||
buff.writeUUID(player)
|
buff.writeUUID(player)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
context.packetHandled = true
|
context.packetHandled = true
|
||||||
// minecraft.player?.level()?.getPlayerByUUID(player)?.matteryPlayer?.spawnExopackSmoke = true
|
// minecraft.player?.level()?.getPlayerByUUID(player)?.matteryPlayer?.spawnExopackSmoke = true
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.network
|
|||||||
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
||||||
import net.minecraft.network.FriendlyByteBuf
|
import net.minecraft.network.FriendlyByteBuf
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraftforge.event.network.CustomPayloadEvent
|
|
||||||
import net.minecraftforge.network.NetworkDirection
|
import net.minecraftforge.network.NetworkDirection
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.client.minecraft
|
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)
|
buff.writeBytes(bytes, 0, length)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
if (containerId == ExopackInventoryMenu.CONTAINER_ID) {
|
if (containerId == ExopackInventoryMenu.CONTAINER_ID) {
|
||||||
minecraft.player?.matteryPlayer?.exoPackMenu?.mSynchronizer?.read(ByteArrayInputStream(bytes, 0, length))
|
minecraft.player?.matteryPlayer?.exoPackMenu?.mSynchronizer?.read(ByteArrayInputStream(bytes, 0, length))
|
||||||
} else {
|
} else {
|
||||||
@ -54,7 +53,7 @@ class SetCarriedPacket(val item: ItemStack) : MatteryPacket {
|
|||||||
buff.writeItem(item)
|
buff.writeItem(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun play(context: CustomPayloadEvent.Context) {
|
override fun play(context: MNetworkContext) {
|
||||||
minecraft.player?.containerMenu?.carried = item
|
minecraft.player?.containerMenu?.carried = item
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user