From b2d7f6c00235d1cf68ec61a47738ffb62c0d3e14 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 31 Dec 2023 16:52:17 +0700 Subject: [PATCH 1/2] Set copyIdeResources to true --- build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 9426d470c..4c71e581e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -181,6 +181,8 @@ configurations { minecraft { mappings("official", mc_version) + copyIdeResources.set(true) + accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) runs { From 242876d533c4bac4e60aa2c5b000eb80bed8f090 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 31 Dec 2023 17:01:57 +0700 Subject: [PATCH 2/2] Migrate to custom network context --- .../mc/otm/android/AndroidResearchManager.kt | 7 ++- .../otm/android/feature/ItemMagnetFeature.kt | 4 +- .../otm/android/feature/JumpBoostFeature.kt | 19 ++++---- .../otm/android/feature/ShockwaveFeature.kt | 4 +- .../vanilla/ExtendedInventoryHandler.kt | 5 +-- .../mc/otm/item/QuantumBatteryItem.kt | 4 +- .../mc/otm/item/weapon/AbstractWeaponItem.kt | 10 ++--- .../mc/otm/matter/MatterManager.kt | 3 +- .../ru/dbotthepony/mc/otm/menu/MatteryMenu.kt | 6 +-- .../mc/otm/menu/data/NetworkedItemView.kt | 5 +-- .../mc/otm/menu/matter/MatterPanelMenu.kt | 11 ++--- .../mc/otm/network/GenericNetworkChannel.kt | 5 +-- .../mc/otm/network/MatteryNetworkChannel.kt | 19 ++++++-- .../network/MatteryPlayerNetworkChannel.kt | 45 +++++++++---------- .../mc/otm/network/MenuNetworkChannel.kt | 5 +-- 15 files changed, 76 insertions(+), 76 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchManager.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchManager.kt index a7713349c..86eaa2846 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchManager.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchManager.kt @@ -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() diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt index 77741942c..1112beb02 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ItemMagnetFeature.kt @@ -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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/JumpBoostFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/JumpBoostFeature.kt index 1c38e41ca..904efea81 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/JumpBoostFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/JumpBoostFeature.kt @@ -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) } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt index 02289c405..a1bbe002f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt @@ -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) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/ExtendedInventoryHandler.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/ExtendedInventoryHandler.kt index a950b227e..910a6933f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/ExtendedInventoryHandler.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/vanilla/ExtendedInventoryHandler.kt @@ -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() @@ -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")) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt index 9c481ffa6..9abcfed1b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt @@ -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 diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt index 31cf99e7e..5c8a81d7d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt @@ -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).dataTable = predictedData } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt index 8aa89b1a0..18f0572ff 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt @@ -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 diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt index 37d98e6fe..387ace84b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt @@ -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)))) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt index 12dda814a..f79daf008 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt @@ -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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterPanelMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterPanelMenu.kt index 8a08a7dfa..1827a4877 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterPanelMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterPanelMenu.kt @@ -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, 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, writer: BiConsumer, reader: Function, - handler: BiConsumer, + 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 { 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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerNetworkChannel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerNetworkChannel.kt index e07e301c1..de0d36f7c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerNetworkChannel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryPlayerNetworkChannel.kt @@ -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, 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, 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 diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MenuNetworkChannel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MenuNetworkChannel.kt index d85d4defe..dacc8ad7f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MenuNetworkChannel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MenuNetworkChannel.kt @@ -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 }