diff --git a/pom.xml b/pom.xml index 274a424..b6d27f8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.loohp Limbo Limbo - 0.6.8-ALPHA + 0.6.9-ALPHA Standalone Limbo Minecraft Server. https://github.com/LOOHP/Limbo @@ -117,7 +117,7 @@ - ${project.artifactId}-${project.version}-1.18 + ${project.artifactId}-${project.version}-1.18.1 @@ -234,6 +234,36 @@ jar compile + + net.kyori + adventure-text-serializer-gson + 4.9.3 + compile + + + net.kyori + adventure-text-serializer-legacy + 4.9.3 + compile + + + net.kyori + adventure-text-serializer-plain + 4.9.3 + compile + + + net.kyori + adventure-api + 4.9.3 + compile + + + net.kyori + adventure-nbt + 4.9.3 + compile + org.fusesource.jansi jansi diff --git a/src/main/java/com/loohp/limbo/Console.java b/src/main/java/com/loohp/limbo/Console.java index c54022f..de01798 100644 --- a/src/main/java/com/loohp/limbo/Console.java +++ b/src/main/java/com/loohp/limbo/Console.java @@ -34,6 +34,16 @@ import com.loohp.limbo.consolegui.ConsoleTextOutput; import com.loohp.limbo.utils.CustomStringUtils; import jline.console.ConsoleReader; +import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.inventory.Book; +import net.kyori.adventure.sound.Sound; +import net.kyori.adventure.sound.Sound.Emitter; +import net.kyori.adventure.sound.SoundStop; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; +import net.kyori.adventure.title.TitlePart; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.BaseComponent; @@ -113,11 +123,13 @@ public class Console implements CommandSender { return Limbo.getInstance().getPermissionsManager().hasPermission(this, permission); } + @Deprecated @Override public void sendMessage(BaseComponent component, UUID uuid) { sendMessage(component); } + @Deprecated @Override public void sendMessage(BaseComponent[] component, UUID uuid) { sendMessage(component); @@ -128,16 +140,83 @@ public class Console implements CommandSender { sendMessage(message); } + @Deprecated @Override public void sendMessage(BaseComponent component) { sendMessage(new BaseComponent[] {component}); } + @Deprecated @Override public void sendMessage(BaseComponent[] component) { sendMessage(String.join("", Arrays.asList(component).stream().map(each -> each.toLegacyText()).collect(Collectors.toList()))); } + @Override + public void sendMessage(Identity source, Component message, MessageType type) { + sendMessage(PlainTextComponentSerializer.plainText().serialize(message)); + } + + @Override + public void openBook(Book book) { + //ignore + } + + @Override + public void stopSound(SoundStop stop) { + //ignore + } + + @Override + public void playSound(Sound sound, Emitter emitter) { + //ignore + } + + @Override + public void playSound(Sound sound, double x, double y, double z) { + //ignore + } + + @Override + public void playSound(Sound sound) { + //ignore + } + + @Override + public void sendActionBar(Component message) { + //ignore + } + + @Override + public void sendPlayerListHeaderAndFooter(Component header, Component footer) { + //ignore + } + + @Override + public void sendTitlePart(TitlePart part, T value) { + //ignore + } + + @Override + public void clearTitle() { + //ignore + } + + @Override + public void resetTitle() { + //ignore + } + + @Override + public void showBossBar(BossBar bar) { + //ignore + } + + @Override + public void hideBossBar(BossBar bar) { + //ignore + } + @Override public void sendMessage(String message) { stashLine(); diff --git a/src/main/java/com/loohp/limbo/Limbo.java b/src/main/java/com/loohp/limbo/Limbo.java index 2588732..b4e98bf 100644 --- a/src/main/java/com/loohp/limbo/Limbo.java +++ b/src/main/java/com/loohp/limbo/Limbo.java @@ -43,16 +43,16 @@ import com.loohp.limbo.events.EventsManager; import com.loohp.limbo.file.ServerProperties; import com.loohp.limbo.location.Location; import com.loohp.limbo.metrics.Metrics; +import com.loohp.limbo.network.ServerConnection; +import com.loohp.limbo.network.protocol.packets.Packet; +import com.loohp.limbo.network.protocol.packets.PacketIn; +import com.loohp.limbo.network.protocol.packets.PacketOut; import com.loohp.limbo.permissions.PermissionsManager; import com.loohp.limbo.player.Player; import com.loohp.limbo.plugins.LimboPlugin; import com.loohp.limbo.plugins.PluginManager; import com.loohp.limbo.scheduler.LimboScheduler; import com.loohp.limbo.scheduler.Tick; -import com.loohp.limbo.server.ServerConnection; -import com.loohp.limbo.server.packets.Packet; -import com.loohp.limbo.server.packets.PacketIn; -import com.loohp.limbo.server.packets.PacketOut; import com.loohp.limbo.utils.CustomStringUtils; import com.loohp.limbo.utils.ImageUtils; import com.loohp.limbo.utils.NetworkUtils; @@ -61,8 +61,9 @@ import com.loohp.limbo.world.Environment; import com.loohp.limbo.world.Schematic; import com.loohp.limbo.world.World; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.querz.nbt.io.NBTUtil; import net.querz.nbt.tag.CompoundTag; @@ -106,7 +107,7 @@ public class Limbo { //=========================== - public final String serverImplementationVersion = "1.18"; + public final String serverImplementationVersion = "1.18.1"; public final int serverImplmentationProtocol = 757; public final String limboImplementationVersion; @@ -456,7 +457,7 @@ public class Limbo { } @SuppressWarnings("unchecked") - public String buildServerListResponseJson(String version, int protocol, BaseComponent[] motd, int maxPlayers, int playersOnline, BufferedImage favicon) throws IOException { + public String buildServerListResponseJson(String version, int protocol, Component motd, int maxPlayers, int playersOnline, BufferedImage favicon) throws IOException { JSONObject json = new JSONObject(); JSONObject versionJson = new JSONObject(); @@ -491,12 +492,12 @@ public class Limbo { Gson g = new GsonBuilder().create(); - return g.toJson(treeMap).replace("\"%MOTD%\"", ComponentSerializer.toString(motd)); + return g.toJson(treeMap).replace("\"%MOTD%\"", GsonComponentSerializer.gson().serialize(motd)); } - public String buildLegacyPingResponse(String version, BaseComponent[] motd, int maxPlayers, int playersOnline) { + public String buildLegacyPingResponse(String version, Component motd, int maxPlayers, int playersOnline) { String begin = "§1"; - return String.join("\00", begin, "127", version, String.join("", Arrays.asList(motd).stream().map(each -> each.toLegacyText()).collect(Collectors.toList())), String.valueOf(playersOnline), String.valueOf(maxPlayers)); + return String.join("\00", begin, "127", version, String.join("", Arrays.asList(motd).stream().map(each -> LegacyComponentSerializer.legacySection().serialize(each)).collect(Collectors.toList())), String.valueOf(playersOnline), String.valueOf(maxPlayers)); } protected void terminate() { diff --git a/src/main/java/com/loohp/limbo/commands/CommandSender.java b/src/main/java/com/loohp/limbo/commands/CommandSender.java index 7b7ecc0..3e02a85 100644 --- a/src/main/java/com/loohp/limbo/commands/CommandSender.java +++ b/src/main/java/com/loohp/limbo/commands/CommandSender.java @@ -2,9 +2,18 @@ package com.loohp.limbo.commands; import java.util.UUID; +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.inventory.Book; +import net.kyori.adventure.sound.Sound; +import net.kyori.adventure.sound.SoundStop; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.title.TitlePart; import net.md_5.bungee.api.chat.BaseComponent; -public interface CommandSender { +public interface CommandSender extends Audience { public void sendMessage(BaseComponent[] component, UUID uuid); @@ -21,5 +30,31 @@ public interface CommandSender { public boolean hasPermission(String permission); public String getName(); + + public void sendMessage(Identity source, Component message, MessageType type); + + public void openBook(Book book); + + public void stopSound(SoundStop stop); + + public void playSound(Sound sound, Sound.Emitter emitter); + + public void playSound(Sound sound, double x, double y, double z); + + public void playSound(Sound sound); + + public void sendActionBar(Component message); + + public void sendPlayerListHeaderAndFooter(Component header, Component footer); + + public void sendTitlePart(TitlePart part, T value); + + public void clearTitle(); + + public void resetTitle(); + + public void showBossBar(BossBar bar); + public void hideBossBar(BossBar bar); + } diff --git a/src/main/java/com/loohp/limbo/commands/DefaultCommands.java b/src/main/java/com/loohp/limbo/commands/DefaultCommands.java index eaddc46..91bc1ca 100644 --- a/src/main/java/com/loohp/limbo/commands/DefaultCommands.java +++ b/src/main/java/com/loohp/limbo/commands/DefaultCommands.java @@ -9,10 +9,9 @@ import com.loohp.limbo.Limbo; import com.loohp.limbo.player.Player; import com.loohp.limbo.utils.GameMode; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.api.chat.TranslatableComponent; public class DefaultCommands implements CommandExecutor, TabCompletor { @@ -55,7 +54,7 @@ public class DefaultCommands implements CommandExecutor, TabCompletor { if (args[0].equalsIgnoreCase("kick")) { if (sender.hasPermission("limboserver.kick")) { - BaseComponent reason = new TranslatableComponent("multiplayer.disconnect.kicked"); + Component reason = Component.translatable("multiplayer.disconnect.kicked"); boolean customReason = false; if (args.length > 1) { Player player = Limbo.getInstance().getPlayer(args[1]); @@ -63,13 +62,13 @@ public class DefaultCommands implements CommandExecutor, TabCompletor { if (args.length >= 2) { String reasonRaw = String.join(" ", Arrays.copyOfRange(args, 2, args.length)); if (reasonRaw.trim().length() > 0) { - reason = new TextComponent(reasonRaw); + reason = LegacyComponentSerializer.legacySection().deserialize(reasonRaw); customReason = true; } } player.disconnect(reason); if (customReason) { - sender.sendMessage(ChatColor.RED + "Kicked the player " + player.getName() + " for the reason: " + reason.toLegacyText()); + sender.sendMessage(ChatColor.RED + "Kicked the player " + player.getName() + " for the reason: " + LegacyComponentSerializer.legacySection().serialize(reason)); } else { sender.sendMessage(ChatColor.RED + "Kicked the player " + player.getName()); } diff --git a/src/main/java/com/loohp/limbo/entity/Entity.java b/src/main/java/com/loohp/limbo/entity/Entity.java index 5690d56..4eac66a 100644 --- a/src/main/java/com/loohp/limbo/entity/Entity.java +++ b/src/main/java/com/loohp/limbo/entity/Entity.java @@ -6,10 +6,12 @@ import com.loohp.limbo.Limbo; import com.loohp.limbo.entity.DataWatcher.WatchableField; import com.loohp.limbo.entity.DataWatcher.WatchableObjectType; import com.loohp.limbo.location.Location; +import com.loohp.limbo.utils.BungeecordAdventureConversionUtils; import com.loohp.limbo.world.World; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; public abstract class Entity { @@ -32,7 +34,7 @@ public abstract class Entity { @WatchableField(MetadataIndex = 1, WatchableObjectType = WatchableObjectType.VARINT) protected int air = 300; @WatchableField(MetadataIndex = 2, WatchableObjectType = WatchableObjectType.CHAT, IsOptional = true) - protected BaseComponent[] customName = null; + protected Component customName = null; @WatchableField(MetadataIndex = 3, WatchableObjectType = WatchableObjectType.BOOLEAN) protected boolean customNameVisible = false; @WatchableField(MetadataIndex = 4, WatchableObjectType = WatchableObjectType.BOOLEAN) @@ -100,20 +102,26 @@ public abstract class Entity { this.pitch = location.getPitch(); } - public BaseComponent[] getCustomName() { + public Component getCustomName() { return customName; } public void setCustomName(String name) { - this.customName = name == null ? null : new BaseComponent[] {new TextComponent(name)}; + this.customName = name == null ? null : LegacyComponentSerializer.legacySection().deserialize(name); } + public void setCustomName(Component component) { + this.customName = component; + } + + @Deprecated public void setCustomName(BaseComponent component) { - this.customName = component == null ? null : new BaseComponent[] {component}; + setCustomName(component == null ? null : BungeecordAdventureConversionUtils.toComponent(component)); } + @Deprecated public void setCustomName(BaseComponent[] components) { - this.customName = components; + setCustomName(components == null ? null : BungeecordAdventureConversionUtils.toComponent(components)); } public boolean isOnFire() { diff --git a/src/main/java/com/loohp/limbo/events/player/PlayerLoginEvent.java b/src/main/java/com/loohp/limbo/events/player/PlayerLoginEvent.java index e4845ce..7c9e60e 100644 --- a/src/main/java/com/loohp/limbo/events/player/PlayerLoginEvent.java +++ b/src/main/java/com/loohp/limbo/events/player/PlayerLoginEvent.java @@ -2,7 +2,7 @@ package com.loohp.limbo.events.player; import com.loohp.limbo.events.Cancellable; import com.loohp.limbo.events.Event; -import com.loohp.limbo.server.ClientConnection; +import com.loohp.limbo.network.ClientConnection; import net.md_5.bungee.api.chat.BaseComponent; diff --git a/src/main/java/com/loohp/limbo/events/player/PlayerResourcePackStatusEvent.java b/src/main/java/com/loohp/limbo/events/player/PlayerResourcePackStatusEvent.java index 91ecb8d..fddb509 100644 --- a/src/main/java/com/loohp/limbo/events/player/PlayerResourcePackStatusEvent.java +++ b/src/main/java/com/loohp/limbo/events/player/PlayerResourcePackStatusEvent.java @@ -1,7 +1,7 @@ package com.loohp.limbo.events.player; +import com.loohp.limbo.network.protocol.packets.PacketPlayInResourcePackStatus.EnumResourcePackStatus; import com.loohp.limbo.player.Player; -import com.loohp.limbo.server.packets.PacketPlayInResourcePackStatus.EnumResourcePackStatus; public class PlayerResourcePackStatusEvent extends PlayerEvent { diff --git a/src/main/java/com/loohp/limbo/events/status/StatusPingEvent.java b/src/main/java/com/loohp/limbo/events/status/StatusPingEvent.java index d076322..886024d 100644 --- a/src/main/java/com/loohp/limbo/events/status/StatusPingEvent.java +++ b/src/main/java/com/loohp/limbo/events/status/StatusPingEvent.java @@ -3,21 +3,21 @@ package com.loohp.limbo.events.status; import java.awt.image.BufferedImage; import com.loohp.limbo.events.Event; -import com.loohp.limbo.server.ClientConnection; +import com.loohp.limbo.network.ClientConnection; -import net.md_5.bungee.api.chat.BaseComponent; +import net.kyori.adventure.text.Component; public class StatusPingEvent extends Event { private ClientConnection connection; private String version; private int protocol; - private BaseComponent[] motd; + private Component motd; private int maxPlayers; private int playersOnline; private BufferedImage favicon; - public StatusPingEvent(ClientConnection connection, String version, int protocol, BaseComponent[] motd, int maxPlayers, int playersOnline, BufferedImage favicon) { + public StatusPingEvent(ClientConnection connection, String version, int protocol, Component motd, int maxPlayers, int playersOnline, BufferedImage favicon) { this.connection = connection; this.version = version; this.protocol = protocol; @@ -47,11 +47,11 @@ public class StatusPingEvent extends Event { this.protocol = protocol; } - public BaseComponent[] getMotd() { + public Component getMotd() { return motd; } - public void setMotd(BaseComponent[] motd) { + public void setMotd(Component motd) { this.motd = motd; } diff --git a/src/main/java/com/loohp/limbo/file/ServerProperties.java b/src/main/java/com/loohp/limbo/file/ServerProperties.java index 6f7d8b5..85c3beb 100644 --- a/src/main/java/com/loohp/limbo/file/ServerProperties.java +++ b/src/main/java/com/loohp/limbo/file/ServerProperties.java @@ -23,14 +23,12 @@ import com.loohp.limbo.utils.GameMode; import com.loohp.limbo.utils.NamespacedKey; import com.loohp.limbo.world.World; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class ServerProperties { public static final String COMMENT = "For explaination of what each of the options does, please visit:\nhttps://github.com/LOOHP/Limbo/blob/master/src/main/resources/server.properties"; - public static final BaseComponent[] EMPTY_CHAT_COMPONENT = new BaseComponent[] {new TextComponent("")}; private File file; private int maxPlayers; @@ -44,7 +42,7 @@ public class ServerProperties { private boolean reducedDebugInfo; private boolean allowFlight; private boolean allowChat; - private BaseComponent[] motd; + private Component motd; private String versionString; private int protocol; private boolean bungeecord; @@ -58,10 +56,10 @@ public class ServerProperties { private String resourcePackSHA1; private String resourcePackLink; private boolean resourcePackRequired; - private BaseComponent[] resourcePackPrompt; + private Component resourcePackPrompt; - private BaseComponent[] tabHeader; - private BaseComponent[] tabFooter; + private Component tabHeader; + private Component tabFooter; Optional favicon; @@ -109,7 +107,7 @@ public class ServerProperties { allowFlight = Boolean.parseBoolean(prop.getProperty("allow-flight")); allowChat = Boolean.parseBoolean(prop.getProperty("allow-chat")); String motdJson = prop.getProperty("motd"); - motd = motdJson.equals("") ? EMPTY_CHAT_COMPONENT : ComponentSerializer.parse(motdJson); + motd = motdJson.equals("") ? Component.empty() : GsonComponentSerializer.gson().deserialize(motdJson); versionString = prop.getProperty("version"); bungeecord = Boolean.parseBoolean(prop.getProperty("bungeecord")); velocityModern = Boolean.parseBoolean(prop.getProperty("velocity-modern")); @@ -141,12 +139,12 @@ public class ServerProperties { resourcePackSHA1 = prop.getProperty("resource-pack-sha1"); resourcePackRequired = Boolean.parseBoolean(prop.getProperty("required-resource-pack")); String resourcePackPromptJson = prop.getProperty("resource-pack-prompt"); - resourcePackPrompt = resourcePackPromptJson.equals("") ? null : ComponentSerializer.parse(resourcePackPromptJson); + resourcePackPrompt = resourcePackPromptJson.equals("") ? null : GsonComponentSerializer.gson().deserialize(resourcePackPromptJson); String tabHeaderJson = prop.getProperty("tab-header"); - tabHeader = tabHeaderJson.equals("") ? EMPTY_CHAT_COMPONENT : ComponentSerializer.parse(tabHeaderJson); + tabHeader = tabHeaderJson.equals("") ? Component.empty() : GsonComponentSerializer.gson().deserialize(tabHeaderJson); String tabFooterJson = prop.getProperty("tab-footer"); - tabFooter = tabFooterJson.equals("") ? EMPTY_CHAT_COMPONENT : ComponentSerializer.parse(tabFooterJson); + tabFooter = tabFooterJson.equals("") ? Component.empty() : GsonComponentSerializer.gson().deserialize(tabFooterJson); File png = new File("server-icon.png"); if (png.exists()) { @@ -244,7 +242,7 @@ public class ServerProperties { return this.allowChat; } - public BaseComponent[] getMotd() { + public Component getMotd() { return motd; } @@ -280,15 +278,15 @@ public class ServerProperties { return resourcePackRequired; } - public BaseComponent[] getResourcePackPrompt() { + public Component getResourcePackPrompt() { return resourcePackPrompt; } - public BaseComponent[] getTabHeader() { + public Component getTabHeader() { return tabHeader; } - public BaseComponent[] getTabFooter() { + public Component getTabFooter() { return tabFooter; } diff --git a/src/main/java/com/loohp/limbo/network/Channel.java b/src/main/java/com/loohp/limbo/network/Channel.java new file mode 100644 index 0000000..1f96c6e --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/Channel.java @@ -0,0 +1,5 @@ +package com.loohp.limbo.network; + +public class Channel { + +} diff --git a/src/main/java/com/loohp/limbo/server/ClientConnection.java b/src/main/java/com/loohp/limbo/network/ClientConnection.java similarity index 87% rename from src/main/java/com/loohp/limbo/server/ClientConnection.java rename to src/main/java/com/loohp/limbo/network/ClientConnection.java index f769298..bd3952e 100644 --- a/src/main/java/com/loohp/limbo/server/ClientConnection.java +++ b/src/main/java/com/loohp/limbo/network/ClientConnection.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server; +package com.loohp.limbo.network; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -33,47 +33,48 @@ import com.loohp.limbo.events.player.PlayerSelectedSlotChangeEvent; import com.loohp.limbo.events.status.StatusPingEvent; import com.loohp.limbo.file.ServerProperties; import com.loohp.limbo.location.Location; +import com.loohp.limbo.network.protocol.packets.Packet; +import com.loohp.limbo.network.protocol.packets.PacketHandshakingIn; +import com.loohp.limbo.network.protocol.packets.PacketLoginInLoginStart; +import com.loohp.limbo.network.protocol.packets.PacketLoginInPluginMessaging; +import com.loohp.limbo.network.protocol.packets.PacketLoginOutDisconnect; +import com.loohp.limbo.network.protocol.packets.PacketLoginOutLoginSuccess; +import com.loohp.limbo.network.protocol.packets.PacketLoginOutPluginMessaging; +import com.loohp.limbo.network.protocol.packets.PacketOut; +import com.loohp.limbo.network.protocol.packets.PacketPlayInChat; +import com.loohp.limbo.network.protocol.packets.PacketPlayInHeldItemChange; +import com.loohp.limbo.network.protocol.packets.PacketPlayInKeepAlive; +import com.loohp.limbo.network.protocol.packets.PacketPlayInPosition; +import com.loohp.limbo.network.protocol.packets.PacketPlayInPositionAndLook; +import com.loohp.limbo.network.protocol.packets.PacketPlayInResourcePackStatus; +import com.loohp.limbo.network.protocol.packets.PacketPlayInResourcePackStatus.EnumResourcePackStatus; +import com.loohp.limbo.network.protocol.packets.PacketPlayInRotation; +import com.loohp.limbo.network.protocol.packets.PacketPlayInTabComplete; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutDeclareCommands; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutDisconnect; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityMetadata; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameState; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutKeepAlive; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutLogin; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerAbilities; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerAbilities.PlayerAbilityFlags; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerInfo; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerInfo.PlayerInfoAction; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerInfo.PlayerInfoData; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerInfo.PlayerInfoData.PlayerInfoDataAddPlayer.PlayerSkinProperty; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPositionAndLook; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutSpawnPosition; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutTabComplete; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutTabComplete.TabCompleteMatches; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutUpdateViewPosition; +import com.loohp.limbo.network.protocol.packets.PacketStatusInPing; +import com.loohp.limbo.network.protocol.packets.PacketStatusInRequest; +import com.loohp.limbo.network.protocol.packets.PacketStatusOutPong; +import com.loohp.limbo.network.protocol.packets.PacketStatusOutResponse; import com.loohp.limbo.player.Player; import com.loohp.limbo.player.PlayerInteractManager; -import com.loohp.limbo.server.packets.Packet; -import com.loohp.limbo.server.packets.PacketHandshakingIn; -import com.loohp.limbo.server.packets.PacketLoginInLoginStart; -import com.loohp.limbo.server.packets.PacketLoginInPluginMessaging; -import com.loohp.limbo.server.packets.PacketLoginOutDisconnect; -import com.loohp.limbo.server.packets.PacketLoginOutLoginSuccess; -import com.loohp.limbo.server.packets.PacketLoginOutPluginMessaging; -import com.loohp.limbo.server.packets.PacketOut; -import com.loohp.limbo.server.packets.PacketPlayInChat; -import com.loohp.limbo.server.packets.PacketPlayInHeldItemChange; -import com.loohp.limbo.server.packets.PacketPlayInKeepAlive; -import com.loohp.limbo.server.packets.PacketPlayInPosition; -import com.loohp.limbo.server.packets.PacketPlayInPositionAndLook; -import com.loohp.limbo.server.packets.PacketPlayInResourcePackStatus; -import com.loohp.limbo.server.packets.PacketPlayInResourcePackStatus.EnumResourcePackStatus; -import com.loohp.limbo.server.packets.PacketPlayInRotation; -import com.loohp.limbo.server.packets.PacketPlayInTabComplete; -import com.loohp.limbo.server.packets.PacketPlayOutDeclareCommands; -import com.loohp.limbo.server.packets.PacketPlayOutDisconnect; -import com.loohp.limbo.server.packets.PacketPlayOutEntityMetadata; -import com.loohp.limbo.server.packets.PacketPlayOutGameState; -import com.loohp.limbo.server.packets.PacketPlayOutHeldItemChange; -import com.loohp.limbo.server.packets.PacketPlayOutKeepAlive; -import com.loohp.limbo.server.packets.PacketPlayOutLogin; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerAbilities; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerAbilities.PlayerAbilityFlags; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerInfo; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerInfo.PlayerInfoAction; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerInfo.PlayerInfoData; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerInfo.PlayerInfoData.PlayerInfoDataAddPlayer.PlayerSkinProperty; -import com.loohp.limbo.server.packets.PacketPlayOutPositionAndLook; -import com.loohp.limbo.server.packets.PacketPlayOutSpawnPosition; -import com.loohp.limbo.server.packets.PacketPlayOutTabComplete; -import com.loohp.limbo.server.packets.PacketPlayOutTabComplete.TabCompleteMatches; -import com.loohp.limbo.server.packets.PacketPlayOutUpdateViewPosition; -import com.loohp.limbo.server.packets.PacketStatusInPing; -import com.loohp.limbo.server.packets.PacketStatusInRequest; -import com.loohp.limbo.server.packets.PacketStatusOutPong; -import com.loohp.limbo.server.packets.PacketStatusOutResponse; +import com.loohp.limbo.utils.BungeecordAdventureConversionUtils; import com.loohp.limbo.utils.CheckedBiConsumer; import com.loohp.limbo.utils.CustomStringUtils; import com.loohp.limbo.utils.DataTypeIO; @@ -85,6 +86,7 @@ import com.loohp.limbo.utils.MojangAPIUtils.SkinResponse; import com.loohp.limbo.world.BlockPosition; import com.loohp.limbo.world.World; +import net.kyori.adventure.text.Component; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; @@ -181,6 +183,10 @@ public class ClientConnection extends Thread { } public void disconnect(BaseComponent[] reason) { + disconnect(BungeecordAdventureConversionUtils.toComponent(reason)); + } + + public void disconnect(Component reason) { try { PacketPlayOutDisconnect packet = new PacketPlayOutDisconnect(reason); sendPacket(packet); @@ -191,6 +197,10 @@ public class ClientConnection extends Thread { } private void disconnectDuringLogin(BaseComponent[] reason) { + disconnectDuringLogin(BungeecordAdventureConversionUtils.toComponent(reason)); + } + + private void disconnectDuringLogin(Component reason) { try { PacketLoginOutDisconnect packet = new PacketLoginOutDisconnect(reason); sendPacket(packet); @@ -452,7 +462,7 @@ public class ClientConnection extends Thread { } // PLAYER LIST HEADER AND FOOTER CODE CONRIBUTED BY GAMERDUCK123 - player.setPlayerListHeaderFooter(properties.getTabHeader(), properties.getTabFooter()); + player.sendPlayerListHeaderAndFooter(properties.getTabHeader(), properties.getTabFooter()); ready = true; diff --git a/src/main/java/com/loohp/limbo/server/ServerConnection.java b/src/main/java/com/loohp/limbo/network/ServerConnection.java similarity index 97% rename from src/main/java/com/loohp/limbo/server/ServerConnection.java rename to src/main/java/com/loohp/limbo/network/ServerConnection.java index e55245a..848f19d 100644 --- a/src/main/java/com/loohp/limbo/server/ServerConnection.java +++ b/src/main/java/com/loohp/limbo/network/ServerConnection.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server; +package com.loohp.limbo.network; import java.io.IOException; import java.net.InetAddress; diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundClearTitlesPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundClearTitlesPacket.java new file mode 100644 index 0000000..f627928 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundClearTitlesPacket.java @@ -0,0 +1,30 @@ +package com.loohp.limbo.network.protocol.packets; + +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class ClientboundClearTitlesPacket extends PacketOut { + + private boolean reset; + + public ClientboundClearTitlesPacket(boolean reset) { + this.reset = reset; + } + + public boolean isReset() { + return reset; + } + + @Override + public byte[] serializePacket() throws IOException { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + DataOutputStream output = new DataOutputStream(buffer); + output.writeByte(Packet.getPlayOut().get(getClass())); + output.writeBoolean(reset); + + return buffer.toByteArray(); + } + +} diff --git a/src/main/java/com/loohp/limbo/server/packets/ClientboundLevelChunkWithLightPacket.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundLevelChunkWithLightPacket.java similarity index 99% rename from src/main/java/com/loohp/limbo/server/packets/ClientboundLevelChunkWithLightPacket.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundLevelChunkWithLightPacket.java index 416c141..1d19730 100644 --- a/src/main/java/com/loohp/limbo/server/packets/ClientboundLevelChunkWithLightPacket.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundLevelChunkWithLightPacket.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleSubTitleText.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetSubtitleTextPacket.java similarity index 52% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleSubTitleText.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetSubtitleTextPacket.java index eed54b2..1312d86 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleSubTitleText.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetSubtitleTextPacket.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -7,17 +7,18 @@ import java.nio.charset.StandardCharsets; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; -public class PacketPlayOutSetTitleSubTitleText extends PacketOut { - private BaseComponent[] subTitle; +public class ClientboundSetSubtitleTextPacket extends PacketOut { + + private Component subTitle; - public PacketPlayOutSetTitleSubTitleText(BaseComponent[] subTitle) { + public ClientboundSetSubtitleTextPacket(Component subTitle) { this.subTitle = subTitle; } - public BaseComponent[] getSubTitle() { + public Component getSubTitle() { return subTitle; } @@ -27,7 +28,7 @@ public class PacketPlayOutSetTitleSubTitleText extends PacketOut { DataOutputStream output = new DataOutputStream(buffer); output.writeByte(Packet.getPlayOut().get(getClass())); - DataTypeIO.writeString(output, ComponentSerializer.toString(subTitle), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(subTitle), StandardCharsets.UTF_8); return buffer.toByteArray(); } diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleText.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitleTextPacket.java similarity index 53% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleText.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitleTextPacket.java index a1f6c3d..8b2afba 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleText.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitleTextPacket.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -7,18 +7,18 @@ import java.nio.charset.StandardCharsets; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; -public class PacketPlayOutSetTitleText extends PacketOut { +public class ClientboundSetTitleTextPacket extends PacketOut { - private BaseComponent[] titleText; + private Component titleText; - public PacketPlayOutSetTitleText(BaseComponent[] titleText) { + public ClientboundSetTitleTextPacket(Component titleText) { this.titleText = titleText; } - public BaseComponent[] getTitle() { + public Component getTitle() { return titleText; } @@ -28,7 +28,7 @@ public class PacketPlayOutSetTitleText extends PacketOut { DataOutputStream output = new DataOutputStream(buffer); output.writeByte(Packet.getPlayOut().get(getClass())); - DataTypeIO.writeString(output, ComponentSerializer.toString(titleText), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(titleText), StandardCharsets.UTF_8); return buffer.toByteArray(); } diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleTimes.java b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitlesAnimationPacket.java similarity index 63% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleTimes.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitlesAnimationPacket.java index caf06d6..b87edf9 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSetTitleTimes.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/ClientboundSetTitlesAnimationPacket.java @@ -1,30 +1,30 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; -public class PacketPlayOutSetTitleTimes extends PacketOut { +public class ClientboundSetTitlesAnimationPacket extends PacketOut { - private Integer fadeIn; - private Integer stay; - private Integer fadeOut; + private int fadeIn; + private int stay; + private int fadeOut; - public PacketPlayOutSetTitleTimes(Integer fadeIn, Integer stay, Integer fadeOut) { + public ClientboundSetTitlesAnimationPacket(int fadeIn, int stay, int fadeOut) { this.fadeIn = fadeIn; this.stay = stay; this.fadeOut = fadeOut; } - public Integer getFadeIn() { + public int getFadeIn() { return fadeIn; } - public Integer getStay() { + public int getStay() { return stay; } - public Integer getFadeOut() { + public int getFadeOut() { return fadeOut; } diff --git a/src/main/java/com/loohp/limbo/server/packets/Packet.java b/src/main/java/com/loohp/limbo/network/protocol/packets/Packet.java similarity index 97% rename from src/main/java/com/loohp/limbo/server/packets/Packet.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/Packet.java index cccf4fb..5366fc3 100644 --- a/src/main/java/com/loohp/limbo/server/packets/Packet.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/Packet.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.util.Map; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketHandshakingIn.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketHandshakingIn.java similarity index 96% rename from src/main/java/com/loohp/limbo/server/packets/PacketHandshakingIn.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketHandshakingIn.java index 483517b..6119438 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketHandshakingIn.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketHandshakingIn.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketIn.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketIn.java similarity index 50% rename from src/main/java/com/loohp/limbo/server/packets/PacketIn.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketIn.java index 3e19e4f..2af1e4c 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketIn.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketIn.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; public abstract class PacketIn extends Packet { diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketLoginInLoginStart.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInLoginStart.java similarity index 91% rename from src/main/java/com/loohp/limbo/server/packets/PacketLoginInLoginStart.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInLoginStart.java index 684c738..0488c3c 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketLoginInLoginStart.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInLoginStart.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketLoginInPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInPluginMessaging.java similarity index 96% rename from src/main/java/com/loohp/limbo/server/packets/PacketLoginInPluginMessaging.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInPluginMessaging.java index b94e599..5e89ddd 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketLoginInPluginMessaging.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginInPluginMessaging.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketLoginOutDisconnect.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutDisconnect.java similarity index 60% rename from src/main/java/com/loohp/limbo/server/packets/PacketLoginOutDisconnect.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutDisconnect.java index 0c4ed12..a63add6 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketLoginOutDisconnect.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutDisconnect.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -7,18 +7,18 @@ import java.nio.charset.StandardCharsets; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class PacketLoginOutDisconnect extends PacketOut { - private BaseComponent[] reason; + private Component reason; - public PacketLoginOutDisconnect(BaseComponent[] reason) { + public PacketLoginOutDisconnect(Component reason) { this.reason = reason; } - public BaseComponent[] getReason() { + public Component getReason() { return reason; } @@ -28,7 +28,7 @@ public class PacketLoginOutDisconnect extends PacketOut { DataOutputStream output = new DataOutputStream(buffer); output.writeByte(Packet.getLoginOut().get(getClass())); - DataTypeIO.writeString(output, ComponentSerializer.toString(reason), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(reason), StandardCharsets.UTF_8); return buffer.toByteArray(); } diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketLoginOutLoginSuccess.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutLoginSuccess.java similarity index 94% rename from src/main/java/com/loohp/limbo/server/packets/PacketLoginOutLoginSuccess.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutLoginSuccess.java index 12f5330..0c5ad89 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketLoginOutLoginSuccess.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutLoginSuccess.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketLoginOutPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutPluginMessaging.java similarity index 96% rename from src/main/java/com/loohp/limbo/server/packets/PacketLoginOutPluginMessaging.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutPluginMessaging.java index 65a2bb2..f4867a7 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketLoginOutPluginMessaging.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketLoginOutPluginMessaging.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketOut.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketOut.java similarity index 74% rename from src/main/java/com/loohp/limbo/server/packets/PacketOut.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketOut.java index 77bd0f0..ded4646 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketOut.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketOut.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInChat.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInChat.java similarity index 90% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInChat.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInChat.java index d14bae6..016b5ea 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInChat.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInChat.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInHeldItemChange.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInHeldItemChange.java similarity index 89% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInHeldItemChange.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInHeldItemChange.java index a8ad08a..6c62bd8 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInHeldItemChange.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInHeldItemChange.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInKeepAlive.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInKeepAlive.java similarity index 88% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInKeepAlive.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInKeepAlive.java index 9995c51..e01e3da 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInKeepAlive.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInKeepAlive.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPluginMessaging.java similarity index 95% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInPluginMessaging.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPluginMessaging.java index 5d5de1b..ffd4758 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInPluginMessaging.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPluginMessaging.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInPosition.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPosition.java similarity index 93% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInPosition.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPosition.java index 05f8702..35fe47f 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInPosition.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPosition.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInPositionAndLook.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPositionAndLook.java similarity index 94% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInPositionAndLook.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPositionAndLook.java index 36ad969..3b7ff32 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInPositionAndLook.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInPositionAndLook.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInResourcePackStatus.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInResourcePackStatus.java similarity index 95% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInResourcePackStatus.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInResourcePackStatus.java index 1e5b9d4..6c68ac5 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInResourcePackStatus.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInResourcePackStatus.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInRotation.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInRotation.java similarity index 92% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInRotation.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInRotation.java index 79b4d4e..826f465 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInRotation.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInRotation.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInTabComplete.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInTabComplete.java similarity index 92% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayInTabComplete.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInTabComplete.java index d64aa79..b62643f 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayInTabComplete.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInTabComplete.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutChat.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutChat.java similarity index 67% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutChat.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutChat.java index f7062b7..613925b 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutChat.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutChat.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -8,22 +8,22 @@ import java.util.UUID; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class PacketPlayOutChat extends PacketOut { - private BaseComponent[] message; + private Component message; private int position; private UUID sender; - public PacketPlayOutChat(BaseComponent[] message, int position, UUID sender) { + public PacketPlayOutChat(Component message, int position, UUID sender) { this.message = message; this.position = position; this.sender = sender; } - public BaseComponent[] getMessage() { + public Component getMessage() { return message; } @@ -41,7 +41,7 @@ public class PacketPlayOutChat extends PacketOut { DataOutputStream output = new DataOutputStream(buffer); output.writeByte(Packet.getPlayOut().get(getClass())); - DataTypeIO.writeString(output, ComponentSerializer.toString(message), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(message), StandardCharsets.UTF_8); output.writeByte(position); DataTypeIO.writeUUID(output, sender); diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutDeclareCommands.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDeclareCommands.java similarity index 92% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutDeclareCommands.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDeclareCommands.java index 9d2c287..2bafc8b 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutDeclareCommands.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDeclareCommands.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutDisconnect.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDisconnect.java similarity index 60% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutDisconnect.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDisconnect.java index 875d241..6c4ed16 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutDisconnect.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutDisconnect.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -7,18 +7,18 @@ import java.nio.charset.StandardCharsets; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class PacketPlayOutDisconnect extends PacketOut { - private BaseComponent[] reason; + private Component reason; - public PacketPlayOutDisconnect(BaseComponent[] reason) { + public PacketPlayOutDisconnect(Component reason) { this.reason = reason; } - public BaseComponent[] getReason() { + public Component getReason() { return reason; } @@ -28,7 +28,7 @@ public class PacketPlayOutDisconnect extends PacketOut { DataOutputStream output = new DataOutputStream(buffer); output.writeByte(Packet.getPlayOut().get(getClass())); - DataTypeIO.writeString(output, ComponentSerializer.toString(reason), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(reason), StandardCharsets.UTF_8); return buffer.toByteArray(); } diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutEntityDestroy.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityDestroy.java similarity index 94% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutEntityDestroy.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityDestroy.java index 38ffe06..d5823ae 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutEntityDestroy.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityDestroy.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutEntityMetadata.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityMetadata.java similarity index 93% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutEntityMetadata.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityMetadata.java index 1ab894f..bd02028 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutEntityMetadata.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutEntityMetadata.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -21,7 +21,8 @@ import com.loohp.limbo.utils.DataTypeIO; import com.loohp.limbo.utils.Rotation3f; import com.loohp.limbo.world.BlockPosition; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class PacketPlayOutEntityMetadata extends PacketOut { @@ -110,7 +111,7 @@ public class PacketPlayOutEntityMetadata extends PacketOut { output.writeByte((byte) watch.getValue()); break; case CHAT: - DataTypeIO.writeString(output, ComponentSerializer.toString(watch.getValue()), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize((Component) watch.getValue()), StandardCharsets.UTF_8); break; //case DIRECTION: // break; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutGameState.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutGameState.java similarity index 93% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutGameState.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutGameState.java index bcc68f6..f623345 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutGameState.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutGameState.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutHeldItemChange.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutHeldItemChange.java similarity index 93% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutHeldItemChange.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutHeldItemChange.java index b614925..8519f28 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutHeldItemChange.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutHeldItemChange.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutKeepAlive.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutKeepAlive.java similarity index 92% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutKeepAlive.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutKeepAlive.java index a8f9341..bd28465 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutKeepAlive.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutKeepAlive.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutLogin.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutLogin.java similarity index 98% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutLogin.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutLogin.java index 3a26c75..14e1f10 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutLogin.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutLogin.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerAbilities.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerAbilities.java similarity index 96% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerAbilities.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerAbilities.java index db9f172..f30a4d0 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerAbilities.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerAbilities.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerInfo.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerInfo.java similarity index 96% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerInfo.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerInfo.java index 58d8c95..8d462fd 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerInfo.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerInfo.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -7,7 +7,7 @@ import java.nio.charset.StandardCharsets; import java.util.Optional; import java.util.UUID; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerInfo.PlayerInfoData.PlayerInfoDataAddPlayer; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerInfo.PlayerInfoData.PlayerInfoDataAddPlayer; import com.loohp.limbo.utils.DataTypeIO; import com.loohp.limbo.utils.GameMode; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerListHeaderFooter.java similarity index 52% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerListHeaderFooter.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerListHeaderFooter.java index c69c383..3b5cfa3 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPlayerListHeaderFooter.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPlayerListHeaderFooter.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -7,24 +7,24 @@ import java.nio.charset.StandardCharsets; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class PacketPlayOutPlayerListHeaderFooter extends PacketOut{ - private BaseComponent[] header; - private BaseComponent[] footer; + private Component header; + private Component footer; - public PacketPlayOutPlayerListHeaderFooter(BaseComponent[] header, BaseComponent[] footer) { + public PacketPlayOutPlayerListHeaderFooter(Component header, Component footer) { this.header = header; this.footer = footer; } - public BaseComponent[] getHeader() { + public Component getHeader() { return header; } - public BaseComponent[] getFooter() { + public Component getFooter() { return footer; } @@ -35,8 +35,8 @@ public class PacketPlayOutPlayerListHeaderFooter extends PacketOut{ DataOutputStream output = new DataOutputStream(buffer); output.writeByte(Packet.getPlayOut().get(getClass())); - DataTypeIO.writeString(output, ComponentSerializer.toString(header), StandardCharsets.UTF_8); - DataTypeIO.writeString(output, ComponentSerializer.toString(footer), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(header), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(footer), StandardCharsets.UTF_8); return buffer.toByteArray(); } diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPluginMessaging.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPluginMessaging.java similarity index 95% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPluginMessaging.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPluginMessaging.java index b35ee6f..c861a86 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPluginMessaging.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPluginMessaging.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPositionAndLook.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPositionAndLook.java similarity index 97% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPositionAndLook.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPositionAndLook.java index 17b83e0..568c265 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutPositionAndLook.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutPositionAndLook.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutResourcePackSend.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutResourcePackSend.java similarity index 80% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutResourcePackSend.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutResourcePackSend.java index 2da6c0e..b0002ad 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutResourcePackSend.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutResourcePackSend.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -7,8 +7,8 @@ import java.nio.charset.StandardCharsets; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class PacketPlayOutResourcePackSend extends PacketOut { @@ -18,9 +18,9 @@ public class PacketPlayOutResourcePackSend extends PacketOut { private String hash; private boolean isForced; private boolean hasPromptMessage; - private BaseComponent[] promptMessage; + private Component promptMessage; - public PacketPlayOutResourcePackSend(String url, String hash, boolean isForced, boolean hasPromptMessage, BaseComponent[] promptMessage) { + public PacketPlayOutResourcePackSend(String url, String hash, boolean isForced, boolean hasPromptMessage, Component promptMessage) { if (hash.length() > MAX_HASH_LENGTH) { throw new IllegalArgumentException("Hash is too long (max " + MAX_HASH_LENGTH + ", was " + hash.length() + ")"); } @@ -50,7 +50,7 @@ public class PacketPlayOutResourcePackSend extends PacketOut { return hasPromptMessage; } - public BaseComponent[] getPromptMessage() { + public Component getPromptMessage() { return promptMessage; } @@ -65,7 +65,7 @@ public class PacketPlayOutResourcePackSend extends PacketOut { output.writeBoolean(isForced); output.writeBoolean(hasPromptMessage); if (hasPromptMessage) { - DataTypeIO.writeString(output, ComponentSerializer.toString(promptMessage), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(promptMessage), StandardCharsets.UTF_8); } return buffer.toByteArray(); } diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutRespawn.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutRespawn.java similarity index 98% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutRespawn.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutRespawn.java index 2cbf57f..1a3ea7d 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutRespawn.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutRespawn.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnEntity.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntity.java similarity index 97% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnEntity.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntity.java index 209f848..2d68e68 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnEntity.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntity.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnEntityLiving.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntityLiving.java similarity index 98% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnEntityLiving.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntityLiving.java index 687c7bd..59309a8 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnEntityLiving.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnEntityLiving.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnPosition.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnPosition.java similarity index 94% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnPosition.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnPosition.java index 6f0ac43..9f9ecbc 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutSpawnPosition.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSpawnPosition.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutTabComplete.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutTabComplete.java similarity index 73% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutTabComplete.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutTabComplete.java index 990f46a..7a2b613 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutTabComplete.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutTabComplete.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -8,8 +8,8 @@ import java.util.Optional; import com.loohp.limbo.utils.DataTypeIO; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.chat.ComponentSerializer; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; public class PacketPlayOutTabComplete extends PacketOut { @@ -56,7 +56,7 @@ public class PacketPlayOutTabComplete extends PacketOut { DataTypeIO.writeString(output, match.getMatch(), StandardCharsets.UTF_8); if (match.getTooltip().isPresent()) { output.writeBoolean(true); - DataTypeIO.writeString(output, ComponentSerializer.toString(match.getTooltip().get()), StandardCharsets.UTF_8); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(match.getTooltip().get()), StandardCharsets.UTF_8); } else { output.writeBoolean(false); } @@ -68,18 +68,23 @@ public class PacketPlayOutTabComplete extends PacketOut { public static class TabCompleteMatches { private String match; - private Optional tooltip; - - public TabCompleteMatches(String match, BaseComponent... tooltip) { + private Optional tooltip; + + public TabCompleteMatches(String match) { this.match = match; - this.tooltip = tooltip.length > 0 ? Optional.of(tooltip) : Optional.empty(); + this.tooltip = Optional.empty(); + } + + public TabCompleteMatches(String match, Component tooltip) { + this.match = match; + this.tooltip = Optional.ofNullable(tooltip); } public String getMatch() { return match; } - public Optional getTooltip() { + public Optional getTooltip() { return tooltip; } diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutUnloadChunk.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUnloadChunk.java similarity index 93% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutUnloadChunk.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUnloadChunk.java index ed105ef..a382858 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutUnloadChunk.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUnloadChunk.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutUpdateViewPosition.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUpdateViewPosition.java similarity index 94% rename from src/main/java/com/loohp/limbo/server/packets/PacketPlayOutUpdateViewPosition.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUpdateViewPosition.java index 8652c09..92dd7cf 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketPlayOutUpdateViewPosition.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutUpdateViewPosition.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketStatusInPing.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInPing.java similarity index 87% rename from src/main/java/com/loohp/limbo/server/packets/PacketStatusInPing.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInPing.java index df53ebd..a8119cf 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketStatusInPing.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInPing.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; import java.io.IOException; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketStatusInRequest.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInRequest.java similarity index 80% rename from src/main/java/com/loohp/limbo/server/packets/PacketStatusInRequest.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInRequest.java index 2d195f8..c2b822f 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketStatusInRequest.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusInRequest.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.DataInputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketStatusOutPong.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutPong.java similarity index 92% rename from src/main/java/com/loohp/limbo/server/packets/PacketStatusOutPong.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutPong.java index ebf85d8..3ea1695 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketStatusOutPong.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutPong.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/server/packets/PacketStatusOutResponse.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutResponse.java similarity index 93% rename from src/main/java/com/loohp/limbo/server/packets/PacketStatusOutResponse.java rename to src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutResponse.java index 695c333..1ad0ebe 100644 --- a/src/main/java/com/loohp/limbo/server/packets/PacketStatusOutResponse.java +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketStatusOutResponse.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.server.packets; +package com.loohp.limbo.network.protocol.packets; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/src/main/java/com/loohp/limbo/player/Player.java b/src/main/java/com/loohp/limbo/player/Player.java index 7c6ff4d..ecb9d1d 100644 --- a/src/main/java/com/loohp/limbo/player/Player.java +++ b/src/main/java/com/loohp/limbo/player/Player.java @@ -1,6 +1,7 @@ package com.loohp.limbo.player; import java.io.IOException; +import java.time.Duration; import java.util.UUID; import com.loohp.limbo.Limbo; @@ -13,19 +14,33 @@ import com.loohp.limbo.entity.LivingEntity; import com.loohp.limbo.events.player.PlayerChatEvent; import com.loohp.limbo.events.player.PlayerTeleportEvent; import com.loohp.limbo.location.Location; -import com.loohp.limbo.server.ClientConnection; -import com.loohp.limbo.server.packets.PacketPlayOutChat; -import com.loohp.limbo.server.packets.PacketPlayOutGameState; -import com.loohp.limbo.server.packets.PacketPlayOutHeldItemChange; -import com.loohp.limbo.server.packets.PacketPlayOutPlayerListHeaderFooter; -import com.loohp.limbo.server.packets.PacketPlayOutPositionAndLook; -import com.loohp.limbo.server.packets.PacketPlayOutResourcePackSend; -import com.loohp.limbo.server.packets.PacketPlayOutRespawn; -import com.loohp.limbo.server.packets.PacketPlayOutSetTitleSubTitleText; -import com.loohp.limbo.server.packets.PacketPlayOutSetTitleText; -import com.loohp.limbo.server.packets.PacketPlayOutSetTitleTimes; +import com.loohp.limbo.network.ClientConnection; +import com.loohp.limbo.network.protocol.packets.ClientboundClearTitlesPacket; +import com.loohp.limbo.network.protocol.packets.ClientboundSetSubtitleTextPacket; +import com.loohp.limbo.network.protocol.packets.ClientboundSetTitleTextPacket; +import com.loohp.limbo.network.protocol.packets.ClientboundSetTitlesAnimationPacket; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutChat; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameState; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerListHeaderFooter; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPositionAndLook; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutResourcePackSend; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutRespawn; +import com.loohp.limbo.utils.BungeecordAdventureConversionUtils; import com.loohp.limbo.utils.GameMode; +import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.inventory.Book; +import net.kyori.adventure.sound.Sound; +import net.kyori.adventure.sound.Sound.Emitter; +import net.kyori.adventure.sound.SoundStop; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import net.kyori.adventure.title.Title; +import net.kyori.adventure.title.Title.Times; +import net.kyori.adventure.title.TitlePart; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; @@ -34,7 +49,6 @@ import net.md_5.bungee.api.chat.TranslatableComponent; public class Player extends LivingEntity implements CommandSender { public static final String CHAT_DEFAULT_FORMAT = "<%name%> %message%"; - public static final BaseComponent[] EMPTY_CHAT_COMPONENT = new BaseComponent[] {new TextComponent("")}; public final ClientConnection clientConnection; public final PlayerInteractManager playerInteractManager; @@ -202,51 +216,55 @@ public class Player extends LivingEntity implements CommandSender { } public void sendMessage(String message, UUID uuid) { - sendMessage(new TextComponent(message), uuid); + sendMessage(Identity.identity(uuid), LegacyComponentSerializer.legacySection().deserialize(message)); } + @Deprecated public void sendMessage(BaseComponent component, UUID uuid) { sendMessage(new BaseComponent[] {component}, uuid); } + @Deprecated @Override public void sendMessage(BaseComponent[] component, UUID uuid) { - try { - PacketPlayOutChat chat = new PacketPlayOutChat(component, 0, uuid); - clientConnection.sendPacket(chat); - } catch (IOException e) {} + sendMessage(Identity.identity(uuid), BungeecordAdventureConversionUtils.toComponent(component)); } public void sendMessage(String message) { - sendMessage(new TextComponent(message)); + sendMessage(LegacyComponentSerializer.legacySection().deserialize(message)); } + @Deprecated public void sendMessage(BaseComponent component) { sendMessage(new BaseComponent[] {component}); } + @Deprecated @Override public void sendMessage(BaseComponent[] component) { - try { - PacketPlayOutChat chat = new PacketPlayOutChat(component, 0, new UUID(0, 0)); - clientConnection.sendPacket(chat); - } catch (IOException e) {} + sendMessage(BungeecordAdventureConversionUtils.toComponent(component)); } public void disconnect() { - disconnect(new TranslatableComponent("multiplayer.disconnect.kicked")); + disconnect(Component.translatable("multiplayer.disconnect.kicked")); } public void disconnect(String reason) { - disconnect(new TextComponent(reason)); + disconnect(LegacyComponentSerializer.legacySection().deserialize(reason)); } + public void disconnect(Component reason) { + clientConnection.disconnect(reason); + } + + @Deprecated public void disconnect(BaseComponent reason) { disconnect(new BaseComponent[] {reason}); } + @Deprecated public void disconnect(BaseComponent[] reason) { - clientConnection.disconnect(reason); + disconnect(BungeecordAdventureConversionUtils.toComponent(reason)); } public void chat(String message) { @@ -281,11 +299,17 @@ public class Player extends LivingEntity implements CommandSender { setResourcePack(url, hash, forced, (BaseComponent[]) null); } + @Deprecated public void setResourcePack(String url, String hash, boolean forced, BaseComponent promptmessage) { - setResourcePack(url, hash, forced, new BaseComponent[] {promptmessage}); + setResourcePack(url, hash, forced, promptmessage == null ? null : new BaseComponent[] {promptmessage}); } + @Deprecated public void setResourcePack(String url, String hash, boolean forced, BaseComponent[] promptmessage) { + setResourcePack(url, hash, forced, promptmessage == null ? null : BungeecordAdventureConversionUtils.toComponent(promptmessage)); + } + + public void setResourcePack(String url, String hash, boolean forced, Component promptmessage) { try { PacketPlayOutResourcePackSend packsend = new PacketPlayOutResourcePackSend(url, hash, forced, promptmessage != null, promptmessage); clientConnection.sendPacket(packsend); @@ -294,78 +318,175 @@ public class Player extends LivingEntity implements CommandSender { } } + @Deprecated public void setPlayerListHeaderFooter(BaseComponent[] header, BaseComponent[] footer) { + sendPlayerListHeaderAndFooter(header == null ? Component.empty() : BungeecordAdventureConversionUtils.toComponent(header), footer == null ? Component.empty() : BungeecordAdventureConversionUtils.toComponent(footer)); + } + + @Deprecated + public void setPlayerListHeaderFooter(BaseComponent header, BaseComponent footer) { + sendPlayerListHeaderAndFooter(header == null ? Component.empty() : BungeecordAdventureConversionUtils.toComponent(header), footer == null ? Component.empty() : BungeecordAdventureConversionUtils.toComponent(footer)); + } + + public void setPlayerListHeaderFooter(String header, String footer) { + sendPlayerListHeaderAndFooter(header == null ? Component.empty() : LegacyComponentSerializer.legacySection().deserialize(header), footer == null ? Component.empty() : LegacyComponentSerializer.legacySection().deserialize(footer)); + } + + @Deprecated + public void setTitle(BaseComponent[] title) { + sendTitlePart(TitlePart.TITLE, BungeecordAdventureConversionUtils.toComponent(title)); + } + + @Deprecated + public void setTitle(BaseComponent title) { + sendTitlePart(TitlePart.TITLE, BungeecordAdventureConversionUtils.toComponent(title)); + } + + public void setTitle(String title) { + sendTitlePart(TitlePart.TITLE, LegacyComponentSerializer.legacySection().deserialize(title)); + } + + @Deprecated + public void setSubTitle(BaseComponent[] subTitle) { + sendTitlePart(TitlePart.SUBTITLE, BungeecordAdventureConversionUtils.toComponent(subTitle)); + } + + @Deprecated + public void setSubTitle(BaseComponent subTitle) { + sendTitlePart(TitlePart.SUBTITLE, BungeecordAdventureConversionUtils.toComponent(subTitle)); + } + + public void setSubTitle(String subTitle) { + sendTitlePart(TitlePart.SUBTITLE, LegacyComponentSerializer.legacySection().deserialize(subTitle)); + } + + public void setTitleTimer(int fadeIn, int stay, int fadeOut) { + sendTitlePart(TitlePart.TIMES, Title.Times.of(Duration.ofMillis(fadeIn * 50), Duration.ofMillis(stay * 50), Duration.ofMillis(fadeOut * 50))); + } + + @Deprecated + public void setTitleSubTitle(BaseComponent[] title, BaseComponent[] subTitle, int fadeIn, int stay, int fadeOut) { + setTitleTimer(fadeIn, stay, fadeOut); + setTitle(title); + setSubTitle(subTitle); + } + + @Deprecated + public void setTitleSubTitle(BaseComponent title, BaseComponent subTitle, int fadeIn, int stay, int fadeOut) { + setTitleSubTitle(new BaseComponent[] {title}, new BaseComponent[] {subTitle}, fadeIn, stay, fadeOut); + } + + @Deprecated + public void setTitleSubTitle(String title, String subTitle, int fadeIn, int stay, int fadeOut) { + setTitleSubTitle(new BaseComponent[] {new TextComponent(title)}, new BaseComponent[] {new TextComponent(subTitle)}, fadeIn, stay, fadeOut); + } + + @Override + public void sendMessage(Identity source, Component message, MessageType type) { try { - PacketPlayOutPlayerListHeaderFooter packsend = new PacketPlayOutPlayerListHeaderFooter(header == null ? EMPTY_CHAT_COMPONENT : header, footer == null ? EMPTY_CHAT_COMPONENT : footer); + PacketPlayOutChat chat = new PacketPlayOutChat(message, 0, uuid); + clientConnection.sendPacket(chat); + } catch (IOException e) {} + } + + @Override + public void openBook(Book book) { + throw new UnsupportedOperationException("This function has not been implemented yet."); + } + + @Override + public void stopSound(SoundStop stop) { + throw new UnsupportedOperationException("This function has not been implemented yet."); + } + + @Override + public void playSound(Sound sound, Emitter emitter) { + throw new UnsupportedOperationException("This function has not been implemented yet."); + } + + @Override + public void playSound(Sound sound, double x, double y, double z) { + throw new UnsupportedOperationException("This function has not been implemented yet."); + } + + @Override + public void playSound(Sound sound) { + throw new UnsupportedOperationException("This function has not been implemented yet."); + } + + @Override + public void sendActionBar(Component message) { + try { + PacketPlayOutChat chat = new PacketPlayOutChat(message, 2, new UUID(0, 0)); + clientConnection.sendPacket(chat); + } catch (IOException e) {} + } + + @Override + public void sendPlayerListHeaderAndFooter(Component header, Component footer) { + try { + PacketPlayOutPlayerListHeaderFooter packsend = new PacketPlayOutPlayerListHeaderFooter(header, footer); clientConnection.sendPacket(packsend); } catch (IOException e) { e.printStackTrace(); } } - public void setPlayerListHeaderFooter(BaseComponent header, BaseComponent footer) { - setPlayerListHeaderFooter(header == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {header}, footer == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {footer}); + @Override + public void sendTitlePart(TitlePart part, T value) { + if (part.equals(TitlePart.TITLE)) { + try { + ClientboundSetTitleTextPacket setTitle = new ClientboundSetTitleTextPacket((Component) value); + clientConnection.sendPacket(setTitle); + } catch (IOException e) { + e.printStackTrace(); + } + } else if (part.equals(TitlePart.SUBTITLE)) { + try { + ClientboundSetSubtitleTextPacket setSubTitle = new ClientboundSetSubtitleTextPacket((Component) value); + clientConnection.sendPacket(setSubTitle); + } catch (IOException e) { + e.printStackTrace(); + } + } else if (part.equals(TitlePart.TIMES)) { + try { + Title.Times times = (Times) value; + ClientboundSetTitlesAnimationPacket setSubTitle = new ClientboundSetTitlesAnimationPacket((int) (times.fadeIn().toMillis() / 50), (int) (times.stay().toMillis() / 50), (int) (times.fadeOut().toMillis() / 50)); + clientConnection.sendPacket(setSubTitle); + } catch (IOException e) { + e.printStackTrace(); + } + } } - - public void setPlayerListHeaderFooter(String header, String footer) { - setPlayerListHeaderFooter(header == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {new TextComponent(header)}, footer == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {new TextComponent(footer)}); - } - - public void setTitle(BaseComponent[] title) { + + @Override + public void clearTitle() { try { - PacketPlayOutSetTitleText setTitle = new PacketPlayOutSetTitleText(title == null ? EMPTY_CHAT_COMPONENT : title); - clientConnection.sendPacket(setTitle); + ClientboundClearTitlesPacket clearTitle = new ClientboundClearTitlesPacket(false); + clientConnection.sendPacket(clearTitle); } catch (IOException e) { e.printStackTrace(); } } - - public void setTitle(BaseComponent title) { - setTitle(title == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {title}); - } - - public void setTitle(String title) { - setTitle(title == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {new TextComponent(title)}); - } - - public void setSubTitle(BaseComponent[] subTitle) { + + @Override + public void resetTitle() { try { - PacketPlayOutSetTitleSubTitleText setSubTitle = new PacketPlayOutSetTitleSubTitleText(subTitle == null ? EMPTY_CHAT_COMPONENT : subTitle); - clientConnection.sendPacket(setSubTitle); + ClientboundClearTitlesPacket clearTitle = new ClientboundClearTitlesPacket(true); + clientConnection.sendPacket(clearTitle); } catch (IOException e) { e.printStackTrace(); } } - - public void setSubTitle(BaseComponent subTitle) { - setSubTitle(subTitle == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {subTitle}); + + @Override + public void showBossBar(BossBar bar) { + throw new UnsupportedOperationException("This function has not been implemented yet."); } - - public void setSubTitle(String subTitle) { - setSubTitle(subTitle == null ? EMPTY_CHAT_COMPONENT : new BaseComponent[] {new TextComponent(subTitle)}); - } - - public void setTitleTimer(Integer fadeIn, Integer stay, Integer fadeOut) { - try { - PacketPlayOutSetTitleTimes setTitleTimes = new PacketPlayOutSetTitleTimes(fadeIn, stay, fadeOut); - clientConnection.sendPacket(setTitleTimes); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void setTitleSubTitle(BaseComponent[] title, BaseComponent[] subTitle, Integer fadeIn, Integer stay, Integer fadeOut) { - setTitleTimer(fadeIn, stay, fadeOut); - setTitle(title); - setSubTitle(subTitle); - } - - public void setTitleSubTitle(BaseComponent title, BaseComponent subTitle, Integer fadeIn, Integer stay, Integer fadeOut) { - setTitleSubTitle(new BaseComponent[] {title}, new BaseComponent[] {subTitle}, fadeIn, stay, fadeOut); - } - - public void setTitleSubTitle(String title, String subTitle, Integer fadeIn, Integer stay, Integer fadeOut) { - setTitleSubTitle(new BaseComponent[] {new TextComponent(title)}, new BaseComponent[] {new TextComponent(subTitle)}, fadeIn, stay, fadeOut); + + @Override + public void hideBossBar(BossBar bar) { + throw new UnsupportedOperationException("This function has not been implemented yet."); } } diff --git a/src/main/java/com/loohp/limbo/player/PlayerInteractManager.java b/src/main/java/com/loohp/limbo/player/PlayerInteractManager.java index 2134269..17d81a5 100644 --- a/src/main/java/com/loohp/limbo/player/PlayerInteractManager.java +++ b/src/main/java/com/loohp/limbo/player/PlayerInteractManager.java @@ -13,12 +13,12 @@ import java.util.stream.Collectors; import com.loohp.limbo.Limbo; import com.loohp.limbo.entity.Entity; import com.loohp.limbo.location.Location; -import com.loohp.limbo.server.packets.ClientboundLevelChunkWithLightPacket; -import com.loohp.limbo.server.packets.PacketPlayOutEntityDestroy; -import com.loohp.limbo.server.packets.PacketPlayOutEntityMetadata; -import com.loohp.limbo.server.packets.PacketPlayOutSpawnEntity; -import com.loohp.limbo.server.packets.PacketPlayOutSpawnEntityLiving; -import com.loohp.limbo.server.packets.PacketPlayOutUnloadChunk; +import com.loohp.limbo.network.protocol.packets.ClientboundLevelChunkWithLightPacket; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityDestroy; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityMetadata; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutSpawnEntity; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutSpawnEntityLiving; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutUnloadChunk; import com.loohp.limbo.world.ChunkPosition; import com.loohp.limbo.world.World; diff --git a/src/main/java/com/loohp/limbo/utils/BungeeLoginMessageUtils.java b/src/main/java/com/loohp/limbo/utils/BungeeLoginMessageUtils.java index 97d66bc..4af1207 100644 --- a/src/main/java/com/loohp/limbo/utils/BungeeLoginMessageUtils.java +++ b/src/main/java/com/loohp/limbo/utils/BungeeLoginMessageUtils.java @@ -9,7 +9,7 @@ import java.util.UUID; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; -import com.loohp.limbo.server.packets.PacketPlayOutPluginMessaging; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutPluginMessaging; public class BungeeLoginMessageUtils { diff --git a/src/main/java/com/loohp/limbo/utils/BungeecordAdventureConversionUtils.java b/src/main/java/com/loohp/limbo/utils/BungeecordAdventureConversionUtils.java new file mode 100644 index 0000000..58af596 --- /dev/null +++ b/src/main/java/com/loohp/limbo/utils/BungeecordAdventureConversionUtils.java @@ -0,0 +1,18 @@ +package com.loohp.limbo.utils; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.chat.ComponentSerializer; + +public class BungeecordAdventureConversionUtils { + + public static Component toComponent(BaseComponent... components) { + return GsonComponentSerializer.gson().deserialize(ComponentSerializer.toString(components)); + } + + public static BaseComponent[] toComponent(Component component) { + return ComponentSerializer.parse(GsonComponentSerializer.gson().serialize(component)); + } + +} diff --git a/src/main/java/com/loohp/limbo/utils/DeclareCommands.java b/src/main/java/com/loohp/limbo/utils/DeclareCommands.java index 76005cd..11143c9 100644 --- a/src/main/java/com/loohp/limbo/utils/DeclareCommands.java +++ b/src/main/java/com/loohp/limbo/utils/DeclareCommands.java @@ -8,7 +8,7 @@ import java.util.List; import com.loohp.limbo.Limbo; import com.loohp.limbo.commands.CommandSender; -import com.loohp.limbo.server.packets.PacketPlayOutDeclareCommands; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutDeclareCommands; public class DeclareCommands { diff --git a/src/main/java/com/loohp/limbo/world/World.java b/src/main/java/com/loohp/limbo/world/World.java index f9fe639..50864c0 100644 --- a/src/main/java/com/loohp/limbo/world/World.java +++ b/src/main/java/com/loohp/limbo/world/World.java @@ -17,9 +17,9 @@ import com.loohp.limbo.entity.DataWatcher.WatchableObject; import com.loohp.limbo.entity.Entity; import com.loohp.limbo.entity.EntityType; import com.loohp.limbo.location.Location; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityDestroy; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityMetadata; import com.loohp.limbo.player.Player; -import com.loohp.limbo.server.packets.PacketPlayOutEntityDestroy; -import com.loohp.limbo.server.packets.PacketPlayOutEntityMetadata; import com.loohp.limbo.utils.SchematicConvertionUtils; import net.querz.mca.Chunk; diff --git a/src/main/resources/mapping.json b/src/main/resources/mapping.json index 5bbf2b6..a69d8d6 100644 --- a/src/main/resources/mapping.json +++ b/src/main/resources/mapping.json @@ -46,9 +46,10 @@ "PacketPlayOutHeldItemChange": "0x48", "PacketPlayOutPlayerListHeaderFooter": "0x5F", "PacketPlayOutResourcePackSend": "0x3C", - "PacketPlayOutSetTitleTimes": "0x5B", - "PacketPlayOutSetTitleText": "0x5A", - "PacketPlayOutSetTitleSubTitleText": "0x58" + "ClientboundSetTitlesAnimationPacket": "0x5B", + "ClientboundSetTitleTextPacket": "0x5A", + "ClientboundSetTitleTextPacket": "0x58", + "ClientboundClearTitlesPacket": "0x10" }, "StatusIn": { "0x01": "PacketStatusInPing",