diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventListener.java b/src/main/java/de/bixilon/minosoft/modding/event/EventListener.java index 84e165cca..88d6e4b09 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/EventListener.java +++ b/src/main/java/de/bixilon/minosoft/modding/event/EventListener.java @@ -13,8 +13,7 @@ package de.bixilon.minosoft.modding.event; -import de.bixilon.minosoft.modding.event.events.ChatMessageReceivingEvent; -import de.bixilon.minosoft.modding.event.events.ChatMessageSendingEvent; +import de.bixilon.minosoft.modding.event.events.*; public class EventListener { public void onChatMessageReceiving(ChatMessageReceivingEvent event) { @@ -23,4 +22,21 @@ public class EventListener { public void onChatMessageSending(ChatMessageSendingEvent event) { } + public void onLoginDisconnect(LoginDisconnectEvent event) { + } + + public void onDisconnect(DisconnectEvent event) { + } + + public void onResourcePackChange(ResourcePackChangeEvent event) { + } + + public void onBlockBreakAnimation(BlockBreakAnimationEvent event) { + } + + public void onHealthChange(UpdateHealthEvent event) { + } + + public void onOpenSignEditor(OpenSignEditorEvent 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 new file mode 100644 index 000000000..f06cb0291 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.java @@ -0,0 +1,58 @@ +/* + * Codename 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.game.datatypes.world.BlockPosition; +import de.bixilon.minosoft.modding.event.EventListener; +import de.bixilon.minosoft.protocol.network.Connection; +import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketBlockBreakAnimation; + +@MinimumProtocolVersion(protocolId = 32) +public class BlockBreakAnimationEvent extends CancelableEvent { + private final int entityId; + private final BlockPosition position; + private final byte stage; + + + public BlockBreakAnimationEvent(Connection connection, int entityId, BlockPosition position, byte stage) { + super(connection); + this.entityId = entityId; + this.position = position; + this.stage = stage; + } + + public BlockBreakAnimationEvent(Connection connection, PacketBlockBreakAnimation pkg) { + super(connection); + this.entityId = pkg.getEntityId(); + this.position = pkg.getPosition(); + this.stage = pkg.getStage(); + } + + public int getEntityId() { + return entityId; + } + + public BlockPosition getPosition() { + return position; + } + + public byte getStage() { + return stage; + } + + @Override + public void handle(EventListener listener) { + listener.onBlockBreakAnimation(this); + } +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/CancelableEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/CancelableEvent.java new file mode 100644 index 000000000..f13b7454c --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/CancelableEvent.java @@ -0,0 +1,32 @@ +/* + * Codename 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; + +public abstract class CancelableEvent extends Event { + private boolean cancelled = false; + + protected CancelableEvent(Connection connection) { + super(connection); + } + + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceivingEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceivingEvent.java index cde41e1e3..779cf58c8 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceivingEvent.java +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageReceivingEvent.java @@ -21,7 +21,7 @@ import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketChatMessageRe import java.util.UUID; -public class ChatMessageReceivingEvent extends Event { +public class ChatMessageReceivingEvent extends CancelableEvent { private final TextComponent message; private final ChatTextPositions position; private final UUID sender; diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendingEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendingEvent.java index 8ba9fd4f9..1c94b6035 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendingEvent.java +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ChatMessageSendingEvent.java @@ -16,8 +16,8 @@ package de.bixilon.minosoft.modding.event.events; import de.bixilon.minosoft.modding.event.EventListener; import de.bixilon.minosoft.protocol.network.Connection; -public class ChatMessageSendingEvent extends Event { - private final String message; +public class ChatMessageSendingEvent extends CancelableEvent { + private String message; public ChatMessageSendingEvent(Connection connection, String message) { super(connection); @@ -28,6 +28,10 @@ public class ChatMessageSendingEvent extends Event { return message; } + public void setMessage(String message) { + this.message = message; + } + @Override public void handle(EventListener listener) { listener.onChatMessageSending(this); diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/DisconnectEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/DisconnectEvent.java new file mode 100644 index 000000000..a383ba061 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/DisconnectEvent.java @@ -0,0 +1,42 @@ +/* + * Codename 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.game.datatypes.TextComponent; +import de.bixilon.minosoft.modding.event.EventListener; +import de.bixilon.minosoft.protocol.network.Connection; +import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginDisconnect; + +public class DisconnectEvent extends Event { + private final TextComponent reason; + + public DisconnectEvent(Connection connection, TextComponent reason) { + super(connection); + this.reason = reason; + } + + public DisconnectEvent(Connection connection, PacketLoginDisconnect pkg) { + super(connection); + this.reason = pkg.getReason(); + } + + public TextComponent getReason() { + return reason; + } + + @Override + public void handle(EventListener listener) { + listener.onDisconnect(this); + } +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/Event.java b/src/main/java/de/bixilon/minosoft/modding/event/events/Event.java index 11a03bb8b..58b75622a 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/Event.java +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/Event.java @@ -20,7 +20,6 @@ import javax.annotation.Nullable; public abstract class Event { private final Connection connection; - private boolean cancelled = false; protected Event(Connection connection) { this.connection = connection; @@ -31,13 +30,5 @@ public abstract class Event { return connection; } - public boolean isCancelled() { - return cancelled; - } - - public void setCancelled(boolean cancelled) { - this.cancelled = cancelled; - } - public abstract void handle(EventListener listener); } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/LoginDisconnectEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/LoginDisconnectEvent.java new file mode 100644 index 000000000..90d0ecceb --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/LoginDisconnectEvent.java @@ -0,0 +1,42 @@ +/* + * Codename 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.game.datatypes.TextComponent; +import de.bixilon.minosoft.modding.event.EventListener; +import de.bixilon.minosoft.protocol.network.Connection; +import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketDisconnect; + +public class LoginDisconnectEvent extends Event { + private final TextComponent reason; + + public LoginDisconnectEvent(Connection connection, TextComponent reason) { + super(connection); + this.reason = reason; + } + + public LoginDisconnectEvent(Connection connection, PacketDisconnect pkg) { + super(connection); + this.reason = pkg.getReason(); + } + + public TextComponent getReason() { + return reason; + } + + @Override + public void handle(EventListener listener) { + listener.onLoginDisconnect(this); + } +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.java new file mode 100644 index 000000000..4dad23309 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.java @@ -0,0 +1,42 @@ +/* + * Codename 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.game.datatypes.world.BlockPosition; +import de.bixilon.minosoft.modding.event.EventListener; +import de.bixilon.minosoft.protocol.network.Connection; +import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketOpenSignEditor; + +public class OpenSignEditorEvent extends CancelableEvent { + private final BlockPosition position; + + public OpenSignEditorEvent(Connection connection, BlockPosition position) { + super(connection); + this.position = position; + } + + public OpenSignEditorEvent(Connection connection, PacketOpenSignEditor pkg) { + super(connection); + this.position = pkg.getPosition(); + } + + public BlockPosition getPosition() { + return position; + } + + @Override + public void handle(EventListener listener) { + listener.onOpenSignEditor(this); + } +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackChangeEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackChangeEvent.java new file mode 100644 index 000000000..e78a0ade9 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackChangeEvent.java @@ -0,0 +1,59 @@ +/* + * Codename 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.EventListener; +import de.bixilon.minosoft.protocol.network.Connection; +import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketResourcePackSend; + +@MinimumProtocolVersion(protocolId = 32) +public class ResourcePackChangeEvent extends CancelableEvent { + private String url; + private String hash; + + public ResourcePackChangeEvent(Connection connection, String url, String hash) { + super(connection); + this.url = url; + this.hash = hash; + } + + public ResourcePackChangeEvent(Connection connection, PacketResourcePackSend pkg) { + super(connection); + this.url = pkg.getUrl(); + this.hash = pkg.getHash(); + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @MaximumProtocolVersion(protocolId = 204) + public String getHash() { + return hash; + } + + @MaximumProtocolVersion(protocolId = 204) + public void setHash(String hash) { + this.hash = hash; + } + + @Override + public void handle(EventListener listener) { + listener.onResourcePackChange(this); + } +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/UpdateHealthEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/UpdateHealthEvent.java new file mode 100644 index 000000000..d446e96ee --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/UpdateHealthEvent.java @@ -0,0 +1,55 @@ +/* + * Codename 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.EventListener; +import de.bixilon.minosoft.protocol.network.Connection; +import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketUpdateHealth; + +public class UpdateHealthEvent extends Event { + private final float health; + private final int food; + private final float saturation; + + public UpdateHealthEvent(Connection connection, float health, int food, float saturation) { + super(connection); + this.health = health; + this.food = food; + this.saturation = saturation; + } + + public UpdateHealthEvent(Connection connection, PacketUpdateHealth pkg) { + super(connection); + this.health = pkg.getHealth(); + this.food = pkg.getFood(); + this.saturation = pkg.getSaturation(); + } + + public float getHealth() { + return health; + } + + public int getFood() { + return food; + } + + public float getSaturation() { + return saturation; + } + + @Override + public void handle(EventListener listener) { + listener.onHealthChange(this); + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java index 601802d01..9ac72f134 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java +++ b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java @@ -27,6 +27,7 @@ import de.bixilon.minosoft.logging.Log; import de.bixilon.minosoft.logging.LogLevels; import de.bixilon.minosoft.modding.event.EventListener; import de.bixilon.minosoft.modding.event.EventManager; +import de.bixilon.minosoft.modding.event.events.CancelableEvent; import de.bixilon.minosoft.modding.event.events.Event; import de.bixilon.minosoft.ping.ServerListPing; import de.bixilon.minosoft.protocol.modding.channels.DefaultPluginChannels; @@ -433,6 +434,9 @@ public class Connection { public boolean fireEvent(Event event) { Minosoft.eventManagers.forEach((eventManager -> eventManager.getGlobalEventListeners().forEach(event::handle))); eventListeners.forEach(event::handle); - return event.isCancelled(); + if (event instanceof CancelableEvent) { + return ((CancelableEvent) event).isCancelled(); + } + return false; } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PackerResourcePackSend.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketResourcePackSend.java similarity index 96% rename from src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PackerResourcePackSend.java rename to src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketResourcePackSend.java index f4074dbd5..f760e8861 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PackerResourcePackSend.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketResourcePackSend.java @@ -18,7 +18,7 @@ import de.bixilon.minosoft.protocol.packets.ClientboundPacket; import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.PacketHandler; -public class PackerResourcePackSend implements ClientboundPacket { +public class PacketResourcePackSend implements ClientboundPacket { String url; String hash; diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java index 2e301de5b..522d97e68 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java @@ -29,7 +29,7 @@ import de.bixilon.minosoft.game.datatypes.scoreboard.Team; import de.bixilon.minosoft.game.datatypes.world.BlockPosition; import de.bixilon.minosoft.game.datatypes.world.Chunk; import de.bixilon.minosoft.logging.Log; -import de.bixilon.minosoft.modding.event.events.ChatMessageReceivingEvent; +import de.bixilon.minosoft.modding.event.events.*; import de.bixilon.minosoft.protocol.network.Connection; import de.bixilon.minosoft.protocol.packets.clientbound.login.*; import de.bixilon.minosoft.protocol.packets.clientbound.play.*; @@ -37,7 +37,6 @@ import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusPong; import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusResponse; import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketEncryptionResponse; import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketKeepAliveResponse; -import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketResourcePackStatus; import de.bixilon.minosoft.util.nbt.tag.CompoundTag; import de.bixilon.minosoft.util.nbt.tag.StringTag; @@ -113,6 +112,7 @@ public class PacketHandler { } public void handle(PacketLoginDisconnect pkg) { + connection.fireEvent(new LoginDisconnectEvent(connection, pkg.getReason())); Log.info(String.format("Disconnecting from server (reason=%s)", pkg.getReason().getColoredMessage())); connection.disconnect(); } @@ -167,6 +167,8 @@ public class PacketHandler { } public void handle(PacketUpdateHealth pkg) { + connection.fireEvent(new UpdateHealthEvent(connection, pkg)); + connection.getPlayer().setFood(pkg.getFood()); connection.getPlayer().setHealth(pkg.getHealth()); connection.getPlayer().setSaturation(pkg.getSaturation()); @@ -193,6 +195,7 @@ public class PacketHandler { } public void handle(PacketDisconnect pkg) { + connection.fireEvent(new LoginDisconnectEvent(connection, pkg)); // got kicked connection.disconnect(); } @@ -306,7 +309,10 @@ public class PacketHandler { } public void handle(PacketOpenSignEditor pkg) { - // ToDo + OpenSignEditorEvent event = new OpenSignEditorEvent(connection, pkg); + if (connection.fireEvent(event)) { + return; + } } public void handle(PacketSpawnObject pkg) { @@ -381,7 +387,6 @@ public class PacketHandler { } public void handle(PacketUseBed pkg) { - // ToDo } public void handle(PacketBlockEntityMetadata pkg) { @@ -389,11 +394,13 @@ public class PacketHandler { } public void handle(PacketBlockBreakAnimation pkg) { - // ToDo + BlockBreakAnimationEvent event = new BlockBreakAnimationEvent(connection, pkg); + if (connection.fireEvent(event)) { + return; + } } public void handle(PacketBlockAction pkg) { - // ToDo } public void handle(PacketExplosion pkg) { @@ -509,9 +516,12 @@ public class PacketHandler { connection.getPlayer().setTabFooter(pkg.getFooter()); } - public void handle(PackerResourcePackSend pkg) { + public void handle(PacketResourcePackSend pkg) { + ResourcePackChangeEvent event = new ResourcePackChangeEvent(connection, pkg); + if (connection.fireEvent(event)) { + return; + } // ToDo ask user, download pack. for now just send an okay - connection.sendPacket(new PacketResourcePackStatus(pkg.getHash(), PacketResourcePackStatus.ResourcePackStates.SUCCESSFULLY)); } public void handle(PacketEntityProperties pkg) { 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 759f1a635..8b124dd59 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketSender.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketSender.java @@ -14,6 +14,7 @@ package de.bixilon.minosoft.protocol.protocol; import de.bixilon.minosoft.game.datatypes.player.Hands; +import de.bixilon.minosoft.modding.event.events.ChatMessageSendingEvent; import de.bixilon.minosoft.protocol.network.Connection; import de.bixilon.minosoft.protocol.packets.serverbound.play.*; @@ -31,7 +32,11 @@ public class PacketSender { } public void sendChatMessage(String message) { - connection.sendPacket(new PacketChatMessageSending(message)); + ChatMessageSendingEvent event = new ChatMessageSendingEvent(connection, message); + if (connection.fireEvent(event)) { + return; + } + connection.sendPacket(new PacketChatMessageSending(event.getMessage())); } public void spectateEntity(UUID entityUUID) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Packets.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Packets.java index 4a59cbb34..07e960670 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Packets.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Packets.java @@ -156,7 +156,7 @@ public class Packets { PLAY_UNLOCK_RECIPES(PacketUnlockRecipes.class), PLAY_DESTROY_ENTITIES(PacketDestroyEntity.class), PLAY_REMOVE_ENTITY_EFFECT(PacketRemoveEntityEffect.class), - PLAY_RESOURCE_PACK_SEND(PackerResourcePackSend.class), + PLAY_RESOURCE_PACK_SEND(PacketResourcePackSend.class), PLAY_RESPAWN(PacketRespawn.class), PLAY_ENTITY_HEAD_ROTATION(PacketEntityHeadRotation.class), PLAY_SELECT_ADVANCEMENT_TAB(PacketSelectAdvancementTab.class),