diff --git a/pom.xml b/pom.xml index e9d46d6..bd395f3 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ com.loohp Limbo Limbo - 0.6.12-ALPHA + 0.6.13-ALPHA Standalone Limbo Minecraft Server. https://github.com/LOOHP/Limbo diff --git a/src/main/java/com/loohp/limbo/Limbo.java b/src/main/java/com/loohp/limbo/Limbo.java index 7d45a90..78e5559 100644 --- a/src/main/java/com/loohp/limbo/Limbo.java +++ b/src/main/java/com/loohp/limbo/Limbo.java @@ -87,7 +87,9 @@ import net.querz.nbt.io.NBTUtil; import net.querz.nbt.tag.CompoundTag; public class Limbo { - + + public static final String LIMBO_BRAND = "Limbo"; + private static Limbo instance; public static boolean noGui = false; diff --git a/src/main/java/com/loohp/limbo/file/ServerProperties.java b/src/main/java/com/loohp/limbo/file/ServerProperties.java index 492b279..b4c0729 100644 --- a/src/main/java/com/loohp/limbo/file/ServerProperties.java +++ b/src/main/java/com/loohp/limbo/file/ServerProperties.java @@ -80,7 +80,7 @@ public class ServerProperties { private Component tabHeader; private Component tabFooter; - Optional favicon; + private Optional favicon; public ServerProperties(File file) throws IOException { this.file = file; @@ -189,6 +189,10 @@ public class ServerProperties { return Limbo.getInstance().serverImplementationVersion; } + public String getServerModName() { + return Limbo.LIMBO_BRAND; + } + public boolean isBungeecord() { return bungeecord; } diff --git a/src/main/java/com/loohp/limbo/network/ClientConnection.java b/src/main/java/com/loohp/limbo/network/ClientConnection.java index ca827b2..b1f3cb1 100644 --- a/src/main/java/com/loohp/limbo/network/ClientConnection.java +++ b/src/main/java/com/loohp/limbo/network/ClientConnection.java @@ -60,6 +60,7 @@ 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.PacketPlayOutPluginMessaging; import com.loohp.limbo.network.protocol.packets.PacketPlayOutPositionAndLook; import com.loohp.limbo.network.protocol.packets.PacketPlayOutSpawnPosition; import com.loohp.limbo.network.protocol.packets.PacketPlayOutTabComplete; @@ -92,6 +93,7 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; +import java.io.ByteArrayOutputStream; import java.io.DataInput; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -117,6 +119,7 @@ import java.util.stream.Stream; public class ClientConnection extends Thread { private static final NamespacedKey DEFAULT_HANDLER_NAMESPACE = new NamespacedKey("default"); + private static final NamespacedKey BRAND_ANNOUNCE_CHANNEL = new NamespacedKey("brand"); private final Random random = new Random(); private final Socket clientSocket; @@ -464,6 +467,11 @@ public class ClientConnection extends Thread { sendPacket(join); Limbo.getInstance().getUnsafe().setPlayerGameModeSilently(player, properties.getDefaultGamemode()); + ByteArrayOutputStream brandOut = new ByteArrayOutputStream(); + DataTypeIO.writeString(new DataOutputStream(brandOut), properties.getServerModName(), StandardCharsets.UTF_8); + PacketPlayOutPluginMessaging brand = new PacketPlayOutPluginMessaging(BRAND_ANNOUNCE_CHANNEL, brandOut.toByteArray()); + sendPacket(brand); + SkinResponse skinresponce = (isVelocityModern || isBungeeGuard || isBungeecord) && forwardedSkin != null ? forwardedSkin : MojangAPIUtils.getSkinFromMojangServer(player.getName()); PlayerSkinProperty skin = skinresponce != null ? new PlayerSkinProperty(skinresponce.getSkin(), skinresponce.getSignature()) : null; PacketPlayOutPlayerInfo info = new PacketPlayOutPlayerInfo(PlayerInfoAction.ADD_PLAYER, player.getUniqueId(), new PlayerInfoData.PlayerInfoDataAddPlayer(player.getName(), Optional.ofNullable(skin), properties.getDefaultGamemode(), 0, false, Optional.empty())); diff --git a/src/main/java/com/loohp/limbo/utils/NamespacedKey.java b/src/main/java/com/loohp/limbo/utils/NamespacedKey.java index f8e160a..7733d2b 100644 --- a/src/main/java/com/loohp/limbo/utils/NamespacedKey.java +++ b/src/main/java/com/loohp/limbo/utils/NamespacedKey.java @@ -32,7 +32,7 @@ public class NamespacedKey { this.namespace = namespacedKey.substring(0, index); this.key = namespacedKey.substring(index + 1); } else { - this.namespace = "minecraft"; + this.namespace = MINECRAFT_KEY; this.key = namespacedKey; } }