From 5b36103e4d77d60b34138dd611d97cce9baa0f18 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Thu, 27 May 2021 16:54:50 +0200 Subject: [PATCH] event initiators --- .../minosoft/modding/event/EventInitiators.kt | 3 +- .../modding/event/events/BlockSetEvent.kt | 6 +-- .../modding/event/events/CancelableEvent.kt | 6 ++- .../modding/event/events/ConnectionEvent.kt | 6 ++- .../event/events/ContainerCloseEvent.kt | 13 ++--- .../event/events/EntityDestroyEvent.kt | 15 ++---- .../events/EntityEquipmentChangeEvent.kt | 6 ++- .../event/events/EntityMetaDataChangeEvent.kt | 6 ++- .../minosoft/modding/event/events/Event.kt | 16 ++++++- .../modding/event/events/ExplosionEvent.kt | 4 +- .../modding/event/events/MassBlockSetEvent.kt | 6 +-- .../event/events/ParticleSpawnEvent.kt | 6 ++- .../event/events/PlayConnectionEvent.kt | 6 ++- .../modding/event/events/PlaySoundEvent.kt | 6 ++- .../events/PlayerListInfoChangeEvent.java | 43 ----------------- ...eEvent.kt => PlayerListInfoChangeEvent.kt} | 14 +++++- .../event/events/PluginMessageReceiveEvent.kt | 6 ++- .../event/events/SelectHotbarSlotEvent.kt | 8 ++-- .../modding/event/events/TimeChangeEvent.kt | 6 ++- .../packets/s2c/play/EntityMetadataS2CP.kt | 7 +-- .../packets/s2c/play/HotbarSlotSetS2CP.kt | 4 +- .../protocol/protocol/PacketSender.java | 47 ++----------------- 22 files changed, 97 insertions(+), 143 deletions(-) delete mode 100644 src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.java rename src/main/java/de/bixilon/minosoft/modding/event/events/{OwnEntityMetaDataChangeEvent.kt => PlayerListInfoChangeEvent.kt} (62%) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventInitiators.kt b/src/main/java/de/bixilon/minosoft/modding/event/EventInitiators.kt index 0ef9bf110..3699e5f34 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/EventInitiators.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/EventInitiators.kt @@ -19,11 +19,12 @@ import de.bixilon.minosoft.util.enum.ValuesEnum enum class EventInitiators { CLIENT, SERVER, + UNKNOWN, ; companion object : ValuesEnum { override val VALUES: Array = values() override val NAME_MAP: Map = KUtil.getEnumValues(VALUES) - + val DEFAULT = UNKNOWN } } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/BlockSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockSetEvent.kt index f7276ddae..d8ef3bb6c 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/BlockSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockSetEvent.kt @@ -23,10 +23,10 @@ import glm_.vec3.Vec3i */ class BlockSetEvent( connection: PlayConnection, + initiator: EventInitiators = EventInitiators.DEFAULT, val blockPosition: Vec3i, val blockState: BlockState?, - val initiator: EventInitiators = EventInitiators.CLIENT, -) : PlayConnectionEvent(connection) { +) : PlayConnectionEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: BlockSetS2CP) : this(connection, packet.blockPosition, packet.blockState, EventInitiators.SERVER) + constructor(connection: PlayConnection, packet: BlockSetS2CP) : this(connection, EventInitiators.SERVER, packet.blockPosition, packet.blockState) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/CancelableEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/CancelableEvent.kt index 1e1e3983f..30cc340bb 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/CancelableEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/CancelableEvent.kt @@ -12,8 +12,12 @@ */ package de.bixilon.minosoft.modding.event.events +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection -abstract class CancelableEvent(connection: PlayConnection) : PlayConnectionEvent(connection) { +abstract class CancelableEvent @JvmOverloads constructor( + connection: PlayConnection, + initiator: EventInitiators = EventInitiators.DEFAULT, +) : PlayConnectionEvent(connection, initiator) { var isCancelled = false } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ConnectionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ConnectionEvent.kt index 9f57d5031..9808d52c7 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ConnectionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ConnectionEvent.kt @@ -12,6 +12,10 @@ */ package de.bixilon.minosoft.modding.event.events +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.Connection -abstract class ConnectionEvent(open val connection: Connection) : Event() +abstract class ConnectionEvent @JvmOverloads constructor( + open val connection: Connection, + val initiator: EventInitiators = EventInitiators.DEFAULT, +) : Event() diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ContainerCloseEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ContainerCloseEvent.kt index ef80804f2..de87c62ee 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ContainerCloseEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ContainerCloseEvent.kt @@ -12,6 +12,7 @@ */ package de.bixilon.minosoft.modding.event.events +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.play.ContainerCloseC2SP import de.bixilon.minosoft.protocol.packets.s2c.play.ContainerCloseS2CP @@ -21,16 +22,12 @@ import de.bixilon.minosoft.protocol.packets.s2c.play.ContainerCloseS2CP */ class ContainerCloseEvent( connection: PlayConnection, + initiator: EventInitiators, val containerId: Int, - val initiator: Initiators, -) : CancelableEvent(connection) { +) : CancelableEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: ContainerCloseS2CP) : this(connection, packet.containerId, Initiators.SERVER) + constructor(connection: PlayConnection, packet: ContainerCloseS2CP) : this(connection, EventInitiators.SERVER, packet.containerId) - constructor(connection: PlayConnection, packet: ContainerCloseC2SP) : this(connection, packet.containerId, Initiators.CLIENT) + constructor(connection: PlayConnection, packet: ContainerCloseC2SP) : this(connection, EventInitiators.CLIENT, packet.containerId) - enum class Initiators { - CLIENT, - SERVER, - } } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt index e08864d8e..10ae38001 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt @@ -13,23 +13,16 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.EntityDestroyS2CP class EntityDestroyEvent( connection: PlayConnection, + initiator: EventInitiators, val entities: List, -) : PlayConnectionEvent(connection) { +) : PlayConnectionEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: EntityDestroyS2CP) : this(connection, packet.entityIds.resolveEntityIds(connection)) + constructor(connection: PlayConnection, packet: EntityDestroyS2CP) : this(connection, EventInitiators.SERVER, packet.entityIds.entities(connection)) - companion object { - private fun List.resolveEntityIds(connection: PlayConnection): List { - val entities: MutableList = mutableListOf() - for (id in this) { - entities += connection.world.entities[id] ?: continue - } - return entities.toList() - } - } } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt index e83401be8..d5c98b67a 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt @@ -15,14 +15,16 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.inventory.InventorySlots.EquipmentSlots import de.bixilon.minosoft.data.inventory.ItemStack +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.EntityEquipmentS2CP class EntityEquipmentChangeEvent( connection: PlayConnection, + initiator: EventInitiators, val entity: Entity, val equipment: Map, -) : PlayConnectionEvent(connection) { +) : PlayConnectionEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: EntityEquipmentS2CP) : this(connection, connection.world.entities[packet.entityId]!!, packet.equipment) + constructor(connection: PlayConnection, packet: EntityEquipmentS2CP) : this(connection, EventInitiators.SERVER, connection.world.entities[packet.entityId]!!, packet.equipment) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityMetaDataChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityMetaDataChangeEvent.kt index e2b6c54b4..a48b3e762 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityMetaDataChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityMetaDataChangeEvent.kt @@ -13,13 +13,15 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.EntityMetadataS2CP class EntityMetaDataChangeEvent( connection: PlayConnection, + initiator: EventInitiators, val entity: Entity, -) : PlayConnectionEvent(connection) { +) : PlayConnectionEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: EntityMetadataS2CP) : this(connection, connection.world.entities[packet.entityId]!!) + constructor(connection: PlayConnection, packet: EntityMetadataS2CP) : this(connection, EventInitiators.SERVER, connection.world.entities[packet.entityId]!!) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt index 95757a2fa..8ed587e99 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt @@ -13,4 +13,18 @@ package de.bixilon.minosoft.modding.event.events -abstract class Event +import de.bixilon.minosoft.data.entities.entities.Entity +import de.bixilon.minosoft.protocol.network.connection.PlayConnection + +abstract class Event { + + companion object { + fun List.entities(connection: PlayConnection): List { + val entities: MutableList = mutableListOf() + for (id in this) { + entities += connection.world.entities[id] ?: continue + } + return entities.toList() + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt index 893e1c480..89661b648 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt @@ -12,18 +12,20 @@ */ package de.bixilon.minosoft.modding.event.events +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.ExplosionS2CP import glm_.vec3.Vec3 class ExplosionEvent( connection: PlayConnection, + initiator: EventInitiators, val position: Vec3, val power: Float, val explodedBlocks: List, val velocity: Vec3, ) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: ExplosionS2CP) : this(connection, packet.position, packet.power, packet.explodedBlocks, packet.velocity) + constructor(connection: PlayConnection, packet: ExplosionS2CP) : this(connection, EventInitiators.SERVER, packet.position, packet.power, packet.explodedBlocks, packet.velocity) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/MassBlockSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/MassBlockSetEvent.kt index ea7b974ab..92267c887 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/MassBlockSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/MassBlockSetEvent.kt @@ -24,11 +24,11 @@ import glm_.vec3.Vec3i */ class MassBlockSetEvent( connection: PlayConnection, + initiator: EventInitiators, val blocks: Map, val chunkPosition: Vec2i, - val initiator: EventInitiators = EventInitiators.CLIENT, -) : PlayConnectionEvent(connection) { +) : PlayConnectionEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: MassBlockSetS2CP) : this(connection, packet.blocks, packet.chunkPosition, EventInitiators.SERVER) + constructor(connection: PlayConnection, packet: MassBlockSetS2CP) : this(connection, EventInitiators.SERVER, packet.blocks, packet.chunkPosition) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt index ca1822da0..7dd6cad53 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt @@ -13,22 +13,24 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.mappings.particle.data.ParticleData +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.ParticleS2CP import glm_.vec3.Vec3 class ParticleSpawnEvent( connection: PlayConnection, + initiator: EventInitiators, position: Vec3, offset: Vec3, val speed: Float, val count: Int, val data: ParticleData, -) : CancelableEvent(connection) { +) : CancelableEvent(connection, initiator) { val position: Vec3 = position get() = Vec3(field) val offset: Vec3 = offset get() = Vec3(field) - constructor(connection: PlayConnection, packet: ParticleS2CP) : this(connection, packet.position, packet.offset, packet.speed, packet.count, packet.data) + constructor(connection: PlayConnection, packet: ParticleS2CP) : this(connection, EventInitiators.SERVER, packet.position, packet.offset, packet.speed, packet.count, packet.data) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PlayConnectionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayConnectionEvent.kt index aafb6c214..884cb81b3 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PlayConnectionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayConnectionEvent.kt @@ -12,6 +12,10 @@ */ package de.bixilon.minosoft.modding.event.events +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection -abstract class PlayConnectionEvent(override val connection: PlayConnection) : ConnectionEvent(connection) +abstract class PlayConnectionEvent @JvmOverloads constructor( + override val connection: PlayConnection, + initiator: EventInitiators = EventInitiators.DEFAULT, +) : ConnectionEvent(connection, initiator) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt index a2f9babdc..06477d755 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt @@ -15,20 +15,22 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.SoundCategories import de.bixilon.minosoft.data.mappings.sounds.SoundEvent +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.SoundEventS2CP import glm_.vec3.Vec3i class PlaySoundEvent( connection: PlayConnection, + initiator: EventInitiators, val category: SoundCategories?, position: Vec3i, val soundEvent: SoundEvent, val volume: Float, val pitch: Float, -) : CancelableEvent(connection) { +) : CancelableEvent(connection, initiator) { val position: Vec3i = position get() = Vec3i(field) - constructor(connection: PlayConnection, packet: SoundEventS2CP) : this(connection, packet.category, packet.position, packet.soundEvent, packet.volume, packet.pitch) + constructor(connection: PlayConnection, packet: SoundEventS2CP) : this(connection, EventInitiators.SERVER, packet.category, packet.position, packet.soundEvent, packet.volume, packet.pitch) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.java deleted file mode 100644 index 2d87fb810..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.modding.event.events; - -import de.bixilon.minosoft.data.text.ChatComponent; -import de.bixilon.minosoft.protocol.network.connection.PlayConnection; -import de.bixilon.minosoft.protocol.packets.s2c.play.TabListTextSetS2CP; - -public class PlayerListInfoChangeEvent extends CancelableEvent { - private final ChatComponent header; - private final ChatComponent footer; - - public PlayerListInfoChangeEvent(PlayConnection connection, ChatComponent header, ChatComponent footer) { - super(connection); - this.header = header; - this.footer = footer; - } - - public PlayerListInfoChangeEvent(PlayConnection connection, TabListTextSetS2CP pkg) { - super(connection); - this.header = pkg.getHeader(); - this.footer = pkg.getFooter(); - } - - public ChatComponent getHeader() { - return this.header; - } - - public ChatComponent getFooter() { - return this.footer; - } -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/OwnEntityMetaDataChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.kt similarity index 62% rename from src/main/java/de/bixilon/minosoft/modding/event/events/OwnEntityMetaDataChangeEvent.kt rename to src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.kt index dc3a749fe..d37f7988a 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/OwnEntityMetaDataChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.kt @@ -12,7 +12,17 @@ */ package de.bixilon.minosoft.modding.event.events -import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity +import de.bixilon.minosoft.data.text.ChatComponent +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection +import de.bixilon.minosoft.protocol.packets.s2c.play.TabListTextSetS2CP -class OwnEntityMetaDataChangeEvent(connection: PlayConnection, val entity: PlayerEntity) : PlayConnectionEvent(connection) +class PlayerListInfoChangeEvent( + connection: PlayConnection, + initiator: EventInitiators, + val header: ChatComponent, + val footer: ChatComponent, +) : CancelableEvent(connection, initiator) { + + constructor(connection: PlayConnection, packet: TabListTextSetS2CP) : this(connection, EventInitiators.SERVER, packet.header, packet.footer) +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt index 8bbea64f6..91f6a0205 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt @@ -13,17 +13,19 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.mappings.ResourceLocation +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.PluginMessageS2CP import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer class PluginMessageReceiveEvent( connection: PlayConnection, + initiators: EventInitiators, val channel: ResourceLocation, data: PlayInByteBuffer, -) : CancelableEvent(connection) { +) : CancelableEvent(connection, initiators) { val data: PlayInByteBuffer = data get() = PlayInByteBuffer(field) - constructor(connection: PlayConnection, packet: PluginMessageS2CP) : this(connection, packet.channel, packet.data) + constructor(connection: PlayConnection, packet: PluginMessageS2CP) : this(connection, EventInitiators.SERVER, packet.channel, packet.data) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/SelectHotbarSlotEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/SelectHotbarSlotEvent.kt index 12426f460..997b814d1 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/SelectHotbarSlotEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/SelectHotbarSlotEvent.kt @@ -12,16 +12,18 @@ */ package de.bixilon.minosoft.modding.event.events +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.play.HotbarSlotSetC2SP import de.bixilon.minosoft.protocol.packets.s2c.play.HotbarSlotSetS2CP class SelectHotbarSlotEvent( connection: PlayConnection, + initiator: EventInitiators, val slot: Int, -) : PlayConnectionEvent(connection) { +) : PlayConnectionEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: HotbarSlotSetC2SP) : this(connection, packet.slot) + constructor(connection: PlayConnection, packet: HotbarSlotSetC2SP) : this(connection, EventInitiators.CLIENT, packet.slot) - constructor(connection: PlayConnection, packet: HotbarSlotSetS2CP) : this(connection, packet.slot) + constructor(connection: PlayConnection, packet: HotbarSlotSetS2CP) : this(connection, EventInitiators.SERVER, packet.slot) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/TimeChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/TimeChangeEvent.kt index 74cbf3ccb..80cbb28db 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/TimeChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/TimeChangeEvent.kt @@ -12,15 +12,17 @@ */ package de.bixilon.minosoft.modding.event.events +import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.WorldTimeSetS2CP class TimeChangeEvent( connection: PlayConnection, + initiator: EventInitiators, val age: Long, val time: Long, -) : CancelableEvent(connection) { +) : CancelableEvent(connection, initiator) { - constructor(connection: PlayConnection, packet: WorldTimeSetS2CP) : this(connection, packet.age, packet.time) + constructor(connection: PlayConnection, packet: WorldTimeSetS2CP) : this(connection, EventInitiators.SERVER, packet.age, packet.time) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/EntityMetadataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/EntityMetadataS2CP.kt index b6afc562e..e5f11ce41 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/EntityMetadataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/EntityMetadataS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.data.entities.meta.EntityMetaData import de.bixilon.minosoft.modding.event.events.EntityMetaDataChangeEvent -import de.bixilon.minosoft.modding.event.events.OwnEntityMetaDataChangeEvent import de.bixilon.minosoft.protocol.network.connection.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer @@ -30,11 +29,7 @@ class EntityMetadataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { val entity = connection.world.entities[entityId] ?: return entity.entityMetaData = metaData - connection.fireEvent(EntityMetaDataChangeEvent(connection, entity)) - - if (entity === connection.player.entity) { - connection.fireEvent(OwnEntityMetaDataChangeEvent(connection, entity)) - } + connection.fireEvent(EntityMetaDataChangeEvent(connection, this)) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotSetS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotSetS2CP.kt index 3f7a58476..a3722697f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotSetS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotSetS2CP.kt @@ -21,10 +21,10 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType class HotbarSlotSetS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { - val slot: Int = buffer.readByte().toInt() + val slot: Int = buffer.readUnsignedByte() override fun handle(connection: PlayConnection) { - connection.fireEvent(SelectHotbarSlotEvent(connection, slot)) + connection.fireEvent(SelectHotbarSlotEvent(connection, this)) connection.player.selectedHotbarSlot = slot } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketSender.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketSender.java index 946c28a92..31008f11c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketSender.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketSender.java @@ -14,22 +14,16 @@ package de.bixilon.minosoft.protocol.protocol; import de.bixilon.minosoft.data.ChatTextPositions; -import de.bixilon.minosoft.data.entities.EntityRotation; -import de.bixilon.minosoft.data.mappings.ResourceLocation; -import de.bixilon.minosoft.data.player.Hands; import de.bixilon.minosoft.data.text.ChatComponent; import de.bixilon.minosoft.modding.event.events.ChatMessageReceivingEvent; import de.bixilon.minosoft.modding.event.events.ChatMessageSendingEvent; -import de.bixilon.minosoft.modding.event.events.ContainerCloseEvent; import de.bixilon.minosoft.protocol.network.connection.PlayConnection; -import de.bixilon.minosoft.protocol.packets.c2s.login.LoginPluginResponseC2SP; -import de.bixilon.minosoft.protocol.packets.c2s.play.*; +import de.bixilon.minosoft.protocol.packets.c2s.play.ChatMessageC2SP; +import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP; import de.bixilon.minosoft.util.logging.Log; import de.bixilon.minosoft.util.logging.LogMessageType; -import glm_.vec3.Vec3; - -import java.util.UUID; +@Deprecated public class PacketSender { public static final char[] ILLEGAL_CHAT_CHARS = {'ยง'}; private final PlayConnection connection; @@ -38,10 +32,6 @@ public class PacketSender { this.connection = connection; } - public void setFlyStatus(boolean flying) { - this.connection.sendPacket(new FlyToggleC2SP(flying)); - } - public void sendChatMessage(String message) { if (message.isBlank()) { // throw new IllegalArgumentException(("Chat message is blank!")); @@ -61,22 +51,6 @@ public class PacketSender { this.connection.sendPacket(new ChatMessageC2SP(event.getMessage())); } - public void spectateEntity(UUID entityUUID) { - this.connection.sendPacket(new EntitySpectateC2SP(entityUUID)); - } - - public void swingArm(Hands hand) { - this.connection.sendPacket(new ArmSwingC2SP(hand)); - } - - - public void closeWindow(byte windowId) { - ContainerCloseEvent event = new ContainerCloseEvent(this.connection, windowId, ContainerCloseEvent.Initiators.CLIENT); - if (this.connection.fireEvent(event)) { - return; - } - this.connection.sendPacket(new ContainerCloseC2SP(windowId)); - } public void respawn() { sendClientStatus(ClientActionC2SP.ClientActions.PERFORM_RESPAWN); @@ -86,21 +60,6 @@ public class PacketSender { this.connection.sendPacket(new ClientActionC2SP(status)); } - - public void sendPluginMessageData(ResourceLocation channel, OutByteBuffer toSend) { - this.connection.sendPacket(new PluginMessageC2SP(channel, toSend.toByteArray())); - } - - public void sendLoginPluginMessageResponse(int messageId, OutByteBuffer toSend) { - this.connection.sendPacket(new LoginPluginResponseC2SP(messageId, toSend.toByteArray())); - } - - public void setLocation(Vec3 position, EntityRotation rotation, boolean onGround) { - this.connection.sendPacket(new PositionAndRotationC2SP(position, rotation, onGround)); - this.connection.getPlayer().getEntity().setPosition(position); - this.connection.getPlayer().getEntity().setRotation(rotation); - } - public void sendFakeChatMessage(ChatComponent message, ChatTextPositions position) { this.connection.fireEvent(new ChatMessageReceivingEvent(this.connection, message, position, null)); }