From 85045e1e4a15e0a5657d189e83dd202a2c37f2b0 Mon Sep 17 00:00:00 2001 From: Yuuta Liang Date: Wed, 13 Jul 2022 11:16:27 -0700 Subject: First Commit Signed-off-by: Trumeet --- src/main/java/moe/ymc/acron/s2c/Entity.java | 19 +++++++++++++++ src/main/java/moe/ymc/acron/s2c/Event.java | 4 ++++ .../java/moe/ymc/acron/s2c/EventCmdDenied.java | 7 ++++++ src/main/java/moe/ymc/acron/s2c/EventCmdOut.java | 12 ++++++++++ src/main/java/moe/ymc/acron/s2c/EventCmdRes.java | 9 +++++++ .../java/moe/ymc/acron/s2c/EventDisconnected.java | 10 ++++++++ .../java/moe/ymc/acron/s2c/EventEntityDeath.java | 10 ++++++++ src/main/java/moe/ymc/acron/s2c/EventError.java | 9 +++++++ src/main/java/moe/ymc/acron/s2c/EventLagging.java | 8 +++++++ src/main/java/moe/ymc/acron/s2c/EventOk.java | 7 ++++++ .../java/moe/ymc/acron/s2c/EventPlayerJoined.java | 8 +++++++ .../java/moe/ymc/acron/s2c/EventPlayerMessage.java | 10 ++++++++ src/main/java/moe/ymc/acron/s2c/EventQueue.java | 28 ++++++++++++++++++++++ 13 files changed, 141 insertions(+) create mode 100644 src/main/java/moe/ymc/acron/s2c/Entity.java create mode 100644 src/main/java/moe/ymc/acron/s2c/Event.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventCmdDenied.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventCmdOut.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventCmdRes.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventDisconnected.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventEntityDeath.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventError.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventLagging.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventOk.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventPlayerJoined.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventPlayerMessage.java create mode 100644 src/main/java/moe/ymc/acron/s2c/EventQueue.java (limited to 'src/main/java/moe/ymc/acron/s2c') diff --git a/src/main/java/moe/ymc/acron/s2c/Entity.java b/src/main/java/moe/ymc/acron/s2c/Entity.java new file mode 100644 index 0000000..97bd567 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/Entity.java @@ -0,0 +1,19 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import com.mojang.authlib.GameProfile; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public record Entity(@SerializedName("name") @NotNull String name, + @SerializedName("uuid") @NotNull UUID uuid) { + public Entity(@NotNull net.minecraft.entity.Entity entity) { + this(entity.getName().getString(), + entity.getUuid()); + } + + public Entity(@NotNull GameProfile profile) { + this(profile.getName(), profile.getId()); + } +} diff --git a/src/main/java/moe/ymc/acron/s2c/Event.java b/src/main/java/moe/ymc/acron/s2c/Event.java new file mode 100644 index 0000000..1abc35c --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/Event.java @@ -0,0 +1,4 @@ +package moe.ymc.acron.s2c; + +public interface Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventCmdDenied.java b/src/main/java/moe/ymc/acron/s2c/EventCmdDenied.java new file mode 100644 index 0000000..912b430 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventCmdDenied.java @@ -0,0 +1,7 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; + +public record EventCmdDenied(@SerializedName("id") int id) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventCmdOut.java b/src/main/java/moe/ymc/acron/s2c/EventCmdOut.java new file mode 100644 index 0000000..3b8d06e --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventCmdOut.java @@ -0,0 +1,12 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public record EventCmdOut(@SerializedName("id") int id, + @SerializedName("sender") @NotNull UUID sender, + @SerializedName("text") @NotNull String text) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventCmdRes.java b/src/main/java/moe/ymc/acron/s2c/EventCmdRes.java new file mode 100644 index 0000000..dae858a --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventCmdRes.java @@ -0,0 +1,9 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; + +public record EventCmdRes(@SerializedName("id") int id, + @SerializedName("success") boolean success, + @SerializedName("result") int result) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventDisconnected.java b/src/main/java/moe/ymc/acron/s2c/EventDisconnected.java new file mode 100644 index 0000000..bf0e279 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventDisconnected.java @@ -0,0 +1,10 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public record EventDisconnected(@SerializedName("player") @Nullable Entity player, + @SerializedName("reason") @NotNull String reason) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventEntityDeath.java b/src/main/java/moe/ymc/acron/s2c/EventEntityDeath.java new file mode 100644 index 0000000..201cdf3 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventEntityDeath.java @@ -0,0 +1,10 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.NotNull; + +// TODO: More detailed death report. +public record EventEntityDeath(@SerializedName("entity") @NotNull Entity entity, + @SerializedName("message") @NotNull String message) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventError.java b/src/main/java/moe/ymc/acron/s2c/EventError.java new file mode 100644 index 0000000..7f48fa8 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventError.java @@ -0,0 +1,9 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.Nullable; + +public record EventError(@SerializedName("id") int id, + @SerializedName("message") @Nullable String message) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventLagging.java b/src/main/java/moe/ymc/acron/s2c/EventLagging.java new file mode 100644 index 0000000..d0a3f61 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventLagging.java @@ -0,0 +1,8 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; + +public record EventLagging(@SerializedName("ms") long ms, + @SerializedName("ticks") long ticks) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventOk.java b/src/main/java/moe/ymc/acron/s2c/EventOk.java new file mode 100644 index 0000000..5be5c65 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventOk.java @@ -0,0 +1,7 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; + +public record EventOk(@SerializedName("id") int id) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventPlayerJoined.java b/src/main/java/moe/ymc/acron/s2c/EventPlayerJoined.java new file mode 100644 index 0000000..eaadee1 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventPlayerJoined.java @@ -0,0 +1,8 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.NotNull; + +public record EventPlayerJoined(@SerializedName("player") @NotNull Entity player) + implements Event { +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventPlayerMessage.java b/src/main/java/moe/ymc/acron/s2c/EventPlayerMessage.java new file mode 100644 index 0000000..f5273ac --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventPlayerMessage.java @@ -0,0 +1,10 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.NotNull; + +public record EventPlayerMessage(@SerializedName("player") @NotNull Entity player, + @SerializedName("text") @NotNull String text) + implements Event { + +} diff --git a/src/main/java/moe/ymc/acron/s2c/EventQueue.java b/src/main/java/moe/ymc/acron/s2c/EventQueue.java new file mode 100644 index 0000000..8c470a1 --- /dev/null +++ b/src/main/java/moe/ymc/acron/s2c/EventQueue.java @@ -0,0 +1,28 @@ +package moe.ymc.acron.s2c; + +import io.netty.channel.Channel; +import io.netty.channel.group.ChannelGroup; +import io.netty.channel.group.DefaultChannelGroup; +import io.netty.util.concurrent.GlobalEventExecutor; +import moe.ymc.acron.serialization.Serializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.NotNull; + +public class EventQueue { + private static final Logger LOGGER = LogManager.getLogger(); + + private static final ChannelGroup sMessageRecipients = + new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + + public static void registerMessageRecipient(@NotNull Channel channel) { + sMessageRecipients.add(channel); + } + + public static void enqueue(@NotNull Event message) { + LOGGER.debug("Enqueue: {} ({} channels)", + message, + sMessageRecipients.size()); + sMessageRecipients.writeAndFlush(Serializer.serialize(message)); + } +} -- cgit v1.2.3