aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/moe/ymc/acron/s2c
diff options
context:
space:
mode:
authorYuuta Liang <yuuta@yuuta.moe>2022-07-13 11:16:27 -0700
committerTrumeet <yuuta@yuuta.moe>2022-07-13 11:16:27 -0700
commit85045e1e4a15e0a5657d189e83dd202a2c37f2b0 (patch)
tree944bc9ee7a86bd413dfc940e210f21d2434ec7d3 /src/main/java/moe/ymc/acron/s2c
downloadacron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.tar
acron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.tar.gz
acron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.tar.bz2
acron-85045e1e4a15e0a5657d189e83dd202a2c37f2b0.zip
First Commit
Signed-off-by: Trumeet <yuuta@yuuta.moe>
Diffstat (limited to 'src/main/java/moe/ymc/acron/s2c')
-rw-r--r--src/main/java/moe/ymc/acron/s2c/Entity.java19
-rw-r--r--src/main/java/moe/ymc/acron/s2c/Event.java4
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventCmdDenied.java7
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventCmdOut.java12
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventCmdRes.java9
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventDisconnected.java10
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventEntityDeath.java10
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventError.java9
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventLagging.java8
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventOk.java7
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventPlayerJoined.java8
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventPlayerMessage.java10
-rw-r--r--src/main/java/moe/ymc/acron/s2c/EventQueue.java28
13 files changed, 141 insertions, 0 deletions
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));
+ }
+}