diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowCloseEvent.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowCloseEvent.kt
index 58b826fcc..b59f0955d 100644
--- a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowCloseEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowCloseEvent.kt
@@ -16,8 +16,9 @@ package de.bixilon.minosoft.gui.rendering.modding.events
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.Rendering
import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow
+import de.bixilon.minosoft.modding.event.events.CancelableEvent
class WindowCloseEvent(
renderWindow: RenderWindow = Rendering.currentContext!!,
val window: BaseWindow,
-) : RenderEvent(renderWindow)
+) : RenderEvent(renderWindow), CancelableEvent
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerMethod.kt b/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerMethod.kt
index 157ee5e6d..5f22ee08c 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerMethod.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerMethod.kt
@@ -32,7 +32,7 @@ class EventInvokerMethod(
if (!method.parameters[0].type.isAssignableFrom(event.javaClass)) {
return
}
- if (!this.isIgnoreCancelled && event is CancelableEvent && event.isCancelled) {
+ if (!this.isIgnoreCancelled && event is CancelableEvent && event.cancelled) {
return
}
method(listener, event)
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.java
deleted file mode 100644
index f6532e54b..000000000
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.java
+++ /dev/null
@@ -1,50 +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.protocol.network.connection.PlayConnection;
-import de.bixilon.minosoft.protocol.packets.s2c.play.BlockBreakAnimationS2CP;
-import glm_.vec3.Vec3i;
-
-public class BlockBreakAnimationEvent extends CancelableEvent {
- private final int entityId;
- private final Vec3i position;
- private final int stage;
-
- public BlockBreakAnimationEvent(PlayConnection connection, int entityId, Vec3i position, int stage) {
- super(connection);
- this.entityId = entityId;
- this.position = position;
- this.stage = stage;
- }
-
- public BlockBreakAnimationEvent(PlayConnection connection, BlockBreakAnimationS2CP pkg) {
- super(connection);
- this.entityId = pkg.getAnimationId();
- this.position = pkg.getBlockPosition();
- this.stage = pkg.getStage();
- }
-
- public int getEntityId() {
- return this.entityId;
- }
-
- public Vec3i getPosition() {
- return this.position;
- }
-
- public int getStage() {
- return this.stage;
- }
-}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.kt
new file mode 100644
index 000000000..ae615c815
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.kt
@@ -0,0 +1,29 @@
+/*
+ * 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.modding.event.EventInitiators
+import de.bixilon.minosoft.protocol.network.connection.PlayConnection
+import de.bixilon.minosoft.protocol.packets.s2c.play.BlockBreakAnimationS2CP
+import glm_.vec3.Vec3i
+
+class BlockBreakAnimationEvent(
+ connection: PlayConnection,
+ initiator: EventInitiators,
+ val animationId: Int,
+ val blockPosition: Vec3i,
+ val stage: Int,
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
+
+ constructor(connection: PlayConnection, packet: BlockBreakAnimationS2CP) : this(connection, EventInitiators.SERVER, packet.animationId, packet.blockPosition, packet.stage)
+}
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 30cc340bb..b7cd3c75c 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,12 +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.util.KUtil.synchronizedSetOf
-abstract class CancelableEvent @JvmOverloads constructor(
- connection: PlayConnection,
- initiator: EventInitiators = EventInitiators.DEFAULT,
-) : PlayConnectionEvent(connection, initiator) {
- var isCancelled = false
+interface CancelableEvent {
+ var cancelled: Boolean
+ get() = CANCELLED_EVENTS.contains(this)
+ set(value) {
+ if (value) {
+ CANCELLED_EVENTS -= this
+ } else {
+ CANCELLED_EVENTS += this
+ }
+ }
+
+ private companion object {
+ val CANCELLED_EVENTS: MutableSet = synchronizedSetOf()
+ }
}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceiveEvent.kt
index 330a4132a..1854d9a9d 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceiveEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceiveEvent.kt
@@ -25,7 +25,7 @@ class ChatMessageReceiveEvent(
val message: ChatComponent,
val position: ChatTextPositions,
val sender: UUID?,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
constructor(connection: PlayConnection, packet: ChatMessageS2CP) : this(connection, EventInitiators.SERVER, packet.message, packet.position, packet.sender)
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendEvent.kt
index 39016dd19..068442f47 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendEvent.kt
@@ -15,4 +15,4 @@ package de.bixilon.minosoft.modding.event.events
import de.bixilon.minosoft.modding.event.EventInitiators
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
-class ChatMessageSendEvent(connection: PlayConnection, val message: String) : CancelableEvent(connection, EventInitiators.CLIENT)
+class ChatMessageSendEvent(connection: PlayConnection, val message: String) : PlayConnectionEvent(connection, EventInitiators.CLIENT), CancelableEvent
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt
index a97d8c0f9..bcd3a2d05 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt
@@ -25,7 +25,7 @@ class CollectItemAnimationEvent(
val collectedEntity: Entity,
val collector: LivingEntity,
val count: Int,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
constructor(connection: PlayConnection, packet: ItemCollectAnimationS2CP) : this(connection, EventInitiators.SERVER, connection.world.entities[packet.itemEntityId]!!.unsafeCast(), connection.world.entities[packet.collectorEntityId]!!.unsafeCast(), packet.count)
}
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 de87c62ee..8d2614734 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
@@ -24,7 +24,7 @@ class ContainerCloseEvent(
connection: PlayConnection,
initiator: EventInitiators,
val containerId: Int,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
constructor(connection: PlayConnection, packet: ContainerCloseS2CP) : this(connection, EventInitiators.SERVER, packet.containerId)
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ExperienceChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ExperienceChangeEvent.kt
index bb0dbea29..f49b435e7 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/ExperienceChangeEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ExperienceChangeEvent.kt
@@ -22,7 +22,7 @@ class ExperienceChangeEvent(
val bar: Float,
val level: Int,
val total: Int,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
constructor(connection: PlayConnection, packet: ExperienceSetS2CP) : this(connection, EventInitiators.SERVER, packet.bar, packet.level, packet.total)
}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/JoinGameEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/JoinGameEvent.java
deleted file mode 100644
index 185fc9516..000000000
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/JoinGameEvent.java
+++ /dev/null
@@ -1,110 +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 com.google.common.collect.HashBiMap;
-import de.bixilon.minosoft.data.Difficulties;
-import de.bixilon.minosoft.data.abilities.Gamemodes;
-import de.bixilon.minosoft.data.registries.Dimension;
-import de.bixilon.minosoft.data.registries.ResourceLocation;
-import de.bixilon.minosoft.protocol.network.connection.PlayConnection;
-import de.bixilon.minosoft.protocol.packets.s2c.play.JoinGameS2CP;
-
-public class JoinGameEvent extends CancelableEvent {
- private final int entityId;
- private final boolean hardcore;
- private final Gamemodes gamemode;
- private final Dimension dimension;
- private final Difficulties difficulty;
- private final int viewDistance;
- private final int maxPlayers;
- private final boolean reducedDebugScreen;
- private final boolean enableRespawnScreen;
- private final long hashedSeed;
- private final HashBiMap dimensions;
-
- public JoinGameEvent(PlayConnection connection, int entityId, boolean hardcore, Gamemodes gamemode, Dimension dimension, Difficulties difficulty, int viewDistance, int maxPlayers, boolean reducedDebugScreen, boolean enableRespawnScreen, long hashedSeed, HashBiMap dimensions) {
- super(connection);
- this.entityId = entityId;
- this.hardcore = hardcore;
- this.gamemode = gamemode;
- this.dimension = dimension;
- this.difficulty = difficulty;
- this.viewDistance = viewDistance;
- this.maxPlayers = maxPlayers;
- this.reducedDebugScreen = reducedDebugScreen;
- this.enableRespawnScreen = enableRespawnScreen;
- this.hashedSeed = hashedSeed;
- this.dimensions = dimensions;
- }
-
- public JoinGameEvent(PlayConnection connection, JoinGameS2CP pkg) {
- super(connection);
- this.entityId = pkg.getEntityId();
- this.hardcore = pkg.isHardcore();
- this.gamemode = pkg.getGamemode();
- this.dimension = pkg.getDimension();
- this.difficulty = pkg.getDifficulty();
- this.viewDistance = pkg.getViewDistance();
- this.maxPlayers = pkg.getMaxPlayers();
- this.reducedDebugScreen = pkg.isReducedDebugScreen();
- this.enableRespawnScreen = pkg.isEnableRespawnScreen();
- this.hashedSeed = pkg.getHashedSeed();
- this.dimensions = pkg.getDimensions();
- }
-
- public int getEntityId() {
- return this.entityId;
- }
-
- public boolean isHardcore() {
- return this.hardcore;
- }
-
- public Gamemodes getGamemode() {
- return this.gamemode;
- }
-
- public Dimension getDimension() {
- return this.dimension;
- }
-
- public Difficulties getDifficulty() {
- return this.difficulty;
- }
-
- public int getViewDistance() {
- return this.viewDistance;
- }
-
- public int getMaxPlayers() {
- return this.maxPlayers;
- }
-
- public boolean isReducedDebugScreen() {
- return this.reducedDebugScreen;
- }
-
- public boolean isEnableRespawnScreen() {
- return this.enableRespawnScreen;
- }
-
- public long getHashedSeed() {
- return this.hashedSeed;
- }
-
- public HashBiMap getDimensions() {
- return this.dimensions;
- }
-}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt
index da544ee23..eb0040b54 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt
@@ -21,7 +21,7 @@ class OpenSignEditorEvent(
connection: PlayConnection,
initiator: EventInitiators,
val blockPosition: Vec3i,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
constructor(connection: PlayConnection, packet: SignEditorOpenS2CP) : this(connection, EventInitiators.SERVER, packet.blockPosition)
}
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 63c9f70de..be8ff928f 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
@@ -27,7 +27,7 @@ class ParticleSpawnEvent(
val speed: Float,
val count: Int,
val data: ParticleData,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
val position: Vec3d = position
get() = Vec3d(field)
val offset: Vec3 = offset
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 514ae2e29..442a29b2b 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
@@ -29,7 +29,7 @@ class PlaySoundEvent(
val soundEvent: SoundEvent,
val volume: Float,
val pitch: Float,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
val position: Vec3 = position
get() = Vec3(field)
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.kt
index d37f7988a..1f05ff569 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListInfoChangeEvent.kt
@@ -22,7 +22,7 @@ class PlayerListInfoChangeEvent(
initiator: EventInitiators,
val header: ChatComponent,
val footer: ChatComponent,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
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/PlayerListItemChangeEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListItemChangeEvent.kt
similarity index 56%
rename from src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListItemChangeEvent.java
rename to src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListItemChangeEvent.kt
index 137f2103d..39f9396ae 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListItemChangeEvent.java
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PlayerListItemChangeEvent.kt
@@ -10,30 +10,19 @@
*
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
+package de.bixilon.minosoft.modding.event.events
-package de.bixilon.minosoft.modding.event.events;
+import de.bixilon.minosoft.data.player.tab.TabListItemData
+import de.bixilon.minosoft.modding.event.EventInitiators
+import de.bixilon.minosoft.protocol.network.connection.PlayConnection
+import de.bixilon.minosoft.protocol.packets.s2c.play.TabListDataS2CP
+import java.util.*
-import de.bixilon.minosoft.data.player.tab.TabListItemData;
-import de.bixilon.minosoft.protocol.network.connection.PlayConnection;
-import de.bixilon.minosoft.protocol.packets.s2c.play.TabListDataS2CP;
+class PlayerListItemChangeEvent(
+ connection: PlayConnection,
+ initiator: EventInitiators,
+ val items: Map,
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
-import java.util.Map;
-import java.util.UUID;
-
-public class PlayerListItemChangeEvent extends CancelableEvent {
- private final Map items;
-
- public PlayerListItemChangeEvent(PlayConnection connection, Map items) {
- super(connection);
- this.items = items;
- }
-
- public PlayerListItemChangeEvent(PlayConnection connection, TabListDataS2CP pkg) {
- super(connection);
- this.items = pkg.getItems();
- }
-
- public Map getItems() {
- return this.items;
- }
+ constructor(connection: PlayConnection, packet: TabListDataS2CP) : this(connection, EventInitiators.SERVER, packet.items)
}
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 0baceb5aa..19512c6a7 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
@@ -20,10 +20,10 @@ import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
class PluginMessageReceiveEvent(
connection: PlayConnection,
- initiators: EventInitiators,
+ initiator: EventInitiators,
val channel: ResourceLocation,
data: PlayInByteBuffer,
-) : CancelableEvent(connection, initiators) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
val data: PlayInByteBuffer = data
get() = PlayInByteBuffer(field)
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt
index 440cb1275..7355627a3 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt
@@ -23,7 +23,7 @@ class ResourcePackRequestEvent(
val url: String,
val hash: String,
val promptText: ChatComponent?,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
constructor(connection: PlayConnection, packet: ResourcepackRequestS2CP) : this(connection, EventInitiators.SERVER, packet.url, packet.hash, packet.promptText)
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 80cbb28db..44ee68e00 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
@@ -21,7 +21,7 @@ class TimeChangeEvent(
initiator: EventInitiators,
val age: Long,
val time: Long,
-) : CancelableEvent(connection, initiator) {
+) : PlayConnectionEvent(connection, initiator), CancelableEvent {
constructor(connection: PlayConnection, packet: WorldTimeSetS2CP) : this(connection, EventInitiators.SERVER, packet.age, packet.time)
diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt
index 14c2b07d4..f5b8edc46 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt
+++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt
@@ -65,7 +65,9 @@ abstract class Connection : EventMaster {
eventInvoker(event)
}
if (event is CancelableEvent) {
- return event.isCancelled
+ val cancelled = event.cancelled
+ event.cancelled = false // Cleanup memory
+ return cancelled
}
return false
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt
index 9909a9952..942d3b682 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt
+++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt
@@ -21,7 +21,6 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
import de.bixilon.minosoft.data.world.biome.accessor.BlockBiomeAccessor
import de.bixilon.minosoft.data.world.biome.accessor.NoiseBiomeAccessor
import de.bixilon.minosoft.modding.channels.DefaultPluginChannels
-import de.bixilon.minosoft.modding.event.events.JoinGameEvent
import de.bixilon.minosoft.protocol.ErrorHandler
import de.bixilon.minosoft.protocol.network.connection.Connection
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
@@ -140,9 +139,6 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun handle(connection: PlayConnection) {
- if (connection.fireEvent(JoinGameEvent(connection, this))) {
- return
- }
val playerEntity = connection.player
playerEntity.tabListItem.gamemode = gamemode