diff options
author | Trumeet <yuuta@yuuta.moe> | 2022-07-26 19:06:11 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2022-07-26 19:06:11 -0700 |
commit | d8fe269327a1a51f2588a3573a4764613da16388 (patch) | |
tree | 97bd20983700bb13eba7f7d524d3c6d529303b46 /mod/src/main/java/moe/ymc/acron/s2c | |
parent | 31a5d2990ba666ce5ef4a1f79f7999a9bdfaac2a (diff) | |
download | acron-d8fe269327a1a51f2588a3573a4764613da16388.tar acron-d8fe269327a1a51f2588a3573a4764613da16388.tar.gz acron-d8fe269327a1a51f2588a3573a4764613da16388.tar.bz2 acron-d8fe269327a1a51f2588a3573a4764613da16388.zip |
Move the mod to mod/
Diffstat (limited to 'mod/src/main/java/moe/ymc/acron/s2c')
12 files changed, 166 insertions, 0 deletions
diff --git a/mod/src/main/java/moe/ymc/acron/s2c/Entity.java b/mod/src/main/java/moe/ymc/acron/s2c/Entity.java new file mode 100644 index 0000000..3e0add1 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/Entity.java @@ -0,0 +1,26 @@ +package moe.ymc.acron.s2c; + +import com.google.gson.annotations.SerializedName; +import com.mojang.authlib.GameProfile; +import moe.ymc.acron.common.Vec3d; +import moe.ymc.acron.common.WorldKey; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +public record Entity(@SerializedName("name") @NotNull String name, + @SerializedName("uuid") @NotNull UUID uuid, + @SerializedName("pos") @Nullable Vec3d pos, + @SerializedName("world") @Nullable WorldKey world) { + public Entity(@NotNull net.minecraft.entity.Entity entity) { + this(entity.getName().getString(), + entity.getUuid(), + new Vec3d(entity.getPos()), + WorldKey.create(entity.world.getRegistryKey().getValue())); + } + + public Entity(@NotNull GameProfile profile) { + this(profile.getName(), profile.getId(), null, null); + } +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/Event.java b/mod/src/main/java/moe/ymc/acron/s2c/Event.java new file mode 100644 index 0000000..1abc35c --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/Event.java @@ -0,0 +1,4 @@ +package moe.ymc.acron.s2c; + +public interface Event { +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/EventQueue.java b/mod/src/main/java/moe/ymc/acron/s2c/EventQueue.java new file mode 100644 index 0000000..8c470a1 --- /dev/null +++ b/mod/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)); + } +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/event/EventDisconnected.java b/mod/src/main/java/moe/ymc/acron/s2c/event/EventDisconnected.java new file mode 100644 index 0000000..610fc58 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/event/EventDisconnected.java @@ -0,0 +1,12 @@ +package moe.ymc.acron.s2c.event; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Entity; +import moe.ymc.acron.s2c.Event; +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/mod/src/main/java/moe/ymc/acron/s2c/event/EventEntityDeath.java b/mod/src/main/java/moe/ymc/acron/s2c/event/EventEntityDeath.java new file mode 100644 index 0000000..4735241 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/event/EventEntityDeath.java @@ -0,0 +1,12 @@ +package moe.ymc.acron.s2c.event; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Entity; +import moe.ymc.acron.s2c.Event; +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/mod/src/main/java/moe/ymc/acron/s2c/event/EventLagging.java b/mod/src/main/java/moe/ymc/acron/s2c/event/EventLagging.java new file mode 100644 index 0000000..30974df --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/event/EventLagging.java @@ -0,0 +1,9 @@ +package moe.ymc.acron.s2c.event; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Event; + +public record EventLagging(@SerializedName("ms") long ms, + @SerializedName("ticks") long ticks) + implements Event { +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/event/EventPlayerJoined.java b/mod/src/main/java/moe/ymc/acron/s2c/event/EventPlayerJoined.java new file mode 100644 index 0000000..408680b --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/event/EventPlayerJoined.java @@ -0,0 +1,10 @@ +package moe.ymc.acron.s2c.event; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Entity; +import moe.ymc.acron.s2c.Event; +import org.jetbrains.annotations.NotNull; + +public record EventPlayerJoined(@SerializedName("player") @NotNull Entity player) + implements Event { +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/event/EventPlayerMessage.java b/mod/src/main/java/moe/ymc/acron/s2c/event/EventPlayerMessage.java new file mode 100644 index 0000000..2769493 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/event/EventPlayerMessage.java @@ -0,0 +1,12 @@ +package moe.ymc.acron.s2c.event; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Entity; +import moe.ymc.acron.s2c.Event; +import org.jetbrains.annotations.NotNull; + +public record EventPlayerMessage(@SerializedName("player") @NotNull Entity player, + @SerializedName("text") @NotNull String text) + implements Event { + +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/response/EventCmdOut.java b/mod/src/main/java/moe/ymc/acron/s2c/response/EventCmdOut.java new file mode 100644 index 0000000..a4cb798 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/response/EventCmdOut.java @@ -0,0 +1,13 @@ +package moe.ymc.acron.s2c.response; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Event; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public record EventCmdOut(@SerializedName("id") int id, + @SerializedName("sender") @NotNull UUID sender, + @SerializedName("out") @NotNull String out) + implements Event { +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/response/EventCmdRes.java b/mod/src/main/java/moe/ymc/acron/s2c/response/EventCmdRes.java new file mode 100644 index 0000000..8c1b6a9 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/response/EventCmdRes.java @@ -0,0 +1,10 @@ +package moe.ymc.acron.s2c.response; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Event; + +public record EventCmdRes(@SerializedName("id") int id, + @SerializedName("success") boolean success, + @SerializedName("result") int result) + implements Event { +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/response/EventError.java b/mod/src/main/java/moe/ymc/acron/s2c/response/EventError.java new file mode 100644 index 0000000..370e8f3 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/response/EventError.java @@ -0,0 +1,22 @@ +package moe.ymc.acron.s2c.response; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Event; +import org.jetbrains.annotations.Nullable; + +public record EventError(@SerializedName("id") int id, + @SerializedName("code") int code, + @SerializedName("message") @Nullable String message) + implements Event { + public enum Code { + SERVER_ERROR(500), + BAD_REQUEST(400), + FORBIDDEN(403) + ; + + public final int value; + Code(int value) { + this.value = value; + } + } +} diff --git a/mod/src/main/java/moe/ymc/acron/s2c/response/EventOk.java b/mod/src/main/java/moe/ymc/acron/s2c/response/EventOk.java new file mode 100644 index 0000000..eb8c82d --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/s2c/response/EventOk.java @@ -0,0 +1,8 @@ +package moe.ymc.acron.s2c.response; + +import com.google.gson.annotations.SerializedName; +import moe.ymc.acron.s2c.Event; + +public record EventOk(@SerializedName("id") int id) + implements Event { +} |