From c60a4d07598e85cb00395e74751f526618074b46 Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+camotoy@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:15:33 +0100 Subject: [PATCH] Upcoming API changes for emote event --- .../api/event/bedrock/BedrockEmoteEvent.java | 66 ++++++++++++++ .../downstream/ServerDefineCommandsEvent.java | 7 +- .../event/java/ServerDefineCommandsEvent.java | 85 +++++++++++++++++++ 3 files changed, 155 insertions(+), 3 deletions(-) create mode 100644 api/src/main/java/org/geysermc/geyser/api/event/bedrock/BedrockEmoteEvent.java create mode 100644 api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java diff --git a/api/src/main/java/org/geysermc/geyser/api/event/bedrock/BedrockEmoteEvent.java b/api/src/main/java/org/geysermc/geyser/api/event/bedrock/BedrockEmoteEvent.java new file mode 100644 index 000000000..efe3f12d6 --- /dev/null +++ b/api/src/main/java/org/geysermc/geyser/api/event/bedrock/BedrockEmoteEvent.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.geyser.api.event.bedrock; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.geysermc.event.Cancellable; +import org.geysermc.geyser.api.connection.GeyserConnection; +import org.geysermc.geyser.api.event.connection.ConnectionEvent; + +/** + * Called whenever a Bedrock player performs an emote on their end, before it is broadcasted to the rest of the server. + */ +public final class BedrockEmoteEvent extends ConnectionEvent implements Cancellable { + private final String emoteId; + private boolean cancelled; + + public BedrockEmoteEvent(@NonNull GeyserConnection connection, @NonNull String emoteId) { + super(connection); + this.emoteId = emoteId; + } + + /** + * @return the emote ID that the Bedrock player is attempting to perform. + */ + @NonNull + public String emoteId() { + return emoteId; + } + + /** + * @return the cancel status of this event. A Bedrock player will still play this emote on its end even if this + * event is cancelled, but other Bedrock players will not see. + */ + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } +} diff --git a/api/src/main/java/org/geysermc/geyser/api/event/downstream/ServerDefineCommandsEvent.java b/api/src/main/java/org/geysermc/geyser/api/event/downstream/ServerDefineCommandsEvent.java index e46492b36..ff4a1d074 100644 --- a/api/src/main/java/org/geysermc/geyser/api/event/downstream/ServerDefineCommandsEvent.java +++ b/api/src/main/java/org/geysermc/geyser/api/event/downstream/ServerDefineCommandsEvent.java @@ -32,11 +32,11 @@ import org.geysermc.geyser.api.event.connection.ConnectionEvent; import java.util.Set; + /** - * Called when the Java server defines the commands available on the server. - *
- * This event is mapped to the existence of Brigadier on the server. + * @deprecated please use {@link org.geysermc.geyser.api.event.java.ServerDefineCommandsEvent}. */ +@Deprecated(forRemoval = true) public class ServerDefineCommandsEvent extends ConnectionEvent implements Cancellable { private final Set commands; private boolean cancelled; @@ -67,6 +67,7 @@ public class ServerDefineCommandsEvent extends ConnectionEvent implements Cancel this.cancelled = cancelled; } + @Deprecated(forRemoval = true) public interface CommandInfo { /** * Gets the name of the command. diff --git a/api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java b/api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java new file mode 100644 index 000000000..299c9d6dd --- /dev/null +++ b/api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.geyser.api.event.java; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.geysermc.event.Cancellable; +import org.geysermc.geyser.api.connection.GeyserConnection; +import org.geysermc.geyser.api.event.connection.ConnectionEvent; + +import java.util.Set; + +/** + * Called when the Java server defines the commands available on the server. + *
+ * This event is mapped to the existence of Brigadier on the server. + */ +public class ServerDefineCommandsEvent extends ConnectionEvent implements Cancellable { + private final Set commands; + private boolean cancelled; + + public ServerDefineCommandsEvent(@NonNull GeyserConnection connection, @NonNull Set commands) { + super(connection); + this.commands = commands; + } + + /** + * A collection of commands sent from the server. Any element in this collection can be removed, but no element can + * be added. + * + * @return a collection of the commands sent over + */ + @NonNull + public Set commands() { + return this.commands; + } + + @Override + public boolean isCancelled() { + return this.cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + public interface CommandInfo { + /** + * Gets the name of the command. + * + * @return the name of the command + */ + String name(); + + /** + * Gets the description of the command. + * + * @return the description of the command + */ + String description(); + } +}