diff --git a/pom.xml b/pom.xml index 863093c..a7dfd16 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.loohp.limbo Limbo Limbo - 0.4.1-ALPHA + 0.4.2-ALPHA Standalone Limbo Minecraft Server. https://github.com/LOOHP/Limbo diff --git a/src/main/java/com/loohp/limbo/Console.java b/src/main/java/com/loohp/limbo/Console.java index bffa3e0..b726246 100644 --- a/src/main/java/com/loohp/limbo/Console.java +++ b/src/main/java/com/loohp/limbo/Console.java @@ -103,10 +103,12 @@ public class Console implements CommandSender { tabReader.setAutosuggestion(SuggestionType.NONE); } + @Override public String getName() { return CONSOLE; } + @Override public boolean hasPermission(String permission) { return Limbo.getInstance().getPermissionsManager().hasPermission(this, permission); } @@ -121,6 +123,7 @@ public class Console implements CommandSender { sendMessage(component); } + @Override public void sendMessage(String message, UUID uuid) { sendMessage(message); } @@ -135,6 +138,7 @@ public class Console implements CommandSender { sendMessage(String.join("", Arrays.asList(component).stream().map(each -> each.toLegacyText()).collect(Collectors.toList()))); } + @Override public void sendMessage(String message) { stashLine(); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); diff --git a/src/main/java/com/loohp/limbo/Entity/EntityType.java b/src/main/java/com/loohp/limbo/Entity/EntityType.java index fa179f3..9350376 100644 --- a/src/main/java/com/loohp/limbo/Entity/EntityType.java +++ b/src/main/java/com/loohp/limbo/Entity/EntityType.java @@ -3,6 +3,7 @@ package com.loohp.limbo.Entity; import java.util.HashMap; import java.util.Map; +import com.loohp.limbo.Location.Location; import com.loohp.limbo.Player.Player; import com.loohp.limbo.Utils.NamespacedKey; import com.loohp.limbo.World.World; diff --git a/src/main/java/com/loohp/limbo/Events/PlayerChatEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerChatEvent.java similarity index 90% rename from src/main/java/com/loohp/limbo/Events/PlayerChatEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerChatEvent.java index 9cc7e69..218280c 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerChatEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerChatEvent.java @@ -1,5 +1,6 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Player; +import com.loohp.limbo.Events.Cancellable; import com.loohp.limbo.Player.Player; public class PlayerChatEvent extends PlayerEvent implements Cancellable { diff --git a/src/main/java/com/loohp/limbo/Events/PlayerEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerEvent.java similarity index 74% rename from src/main/java/com/loohp/limbo/Events/PlayerEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerEvent.java index e45dea6..f0f45a8 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerEvent.java @@ -1,5 +1,6 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Player; +import com.loohp.limbo.Events.Event; import com.loohp.limbo.Player.Player; public class PlayerEvent extends Event { diff --git a/src/main/java/com/loohp/limbo/Events/PlayerJoinEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerJoinEvent.java similarity index 91% rename from src/main/java/com/loohp/limbo/Events/PlayerJoinEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerJoinEvent.java index 9a4d45a..e6b665d 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerJoinEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerJoinEvent.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Player; import com.loohp.limbo.Location.Location; import com.loohp.limbo.Player.Player; diff --git a/src/main/java/com/loohp/limbo/Events/PlayerLoginEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerLoginEvent.java similarity index 88% rename from src/main/java/com/loohp/limbo/Events/PlayerLoginEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerLoginEvent.java index 781c8d4..97af21b 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerLoginEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerLoginEvent.java @@ -1,5 +1,7 @@ -package com.loohp.limbo.Events; +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 net.md_5.bungee.api.chat.BaseComponent; diff --git a/src/main/java/com/loohp/limbo/Events/PlayerMoveEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerMoveEvent.java similarity index 96% rename from src/main/java/com/loohp/limbo/Events/PlayerMoveEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerMoveEvent.java index 39f6721..5ddb40b 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerMoveEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerMoveEvent.java @@ -1,5 +1,6 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Player; +import com.loohp.limbo.Events.Cancellable; import com.loohp.limbo.Location.Location; import com.loohp.limbo.Player.Player; diff --git a/src/main/java/com/loohp/limbo/Events/PlayerQuitEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerQuitEvent.java similarity index 80% rename from src/main/java/com/loohp/limbo/Events/PlayerQuitEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerQuitEvent.java index 88de2eb..f4182ae 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerQuitEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerQuitEvent.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Player; import com.loohp.limbo.Player.Player; diff --git a/src/main/java/com/loohp/limbo/Events/PlayerSelectedSlotChangeEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerSelectedSlotChangeEvent.java similarity index 88% rename from src/main/java/com/loohp/limbo/Events/PlayerSelectedSlotChangeEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerSelectedSlotChangeEvent.java index a1003cf..5a34a70 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerSelectedSlotChangeEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerSelectedSlotChangeEvent.java @@ -1,5 +1,6 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Player; +import com.loohp.limbo.Events.Cancellable; import com.loohp.limbo.Player.Player; public class PlayerSelectedSlotChangeEvent extends PlayerEvent implements Cancellable { diff --git a/src/main/java/com/loohp/limbo/Events/PlayerTeleportEvent.java b/src/main/java/com/loohp/limbo/Events/Player/PlayerTeleportEvent.java similarity index 86% rename from src/main/java/com/loohp/limbo/Events/PlayerTeleportEvent.java rename to src/main/java/com/loohp/limbo/Events/Player/PlayerTeleportEvent.java index e1a63ed..53db1c1 100644 --- a/src/main/java/com/loohp/limbo/Events/PlayerTeleportEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Player/PlayerTeleportEvent.java @@ -1,4 +1,4 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Player; import com.loohp.limbo.Location.Location; import com.loohp.limbo.Player.Player; diff --git a/src/main/java/com/loohp/limbo/Events/StatusPingEvent.java b/src/main/java/com/loohp/limbo/Events/Status/StatusPingEvent.java similarity index 95% rename from src/main/java/com/loohp/limbo/Events/StatusPingEvent.java rename to src/main/java/com/loohp/limbo/Events/Status/StatusPingEvent.java index 5784212..6036c45 100644 --- a/src/main/java/com/loohp/limbo/Events/StatusPingEvent.java +++ b/src/main/java/com/loohp/limbo/Events/Status/StatusPingEvent.java @@ -1,7 +1,8 @@ -package com.loohp.limbo.Events; +package com.loohp.limbo.Events.Status; import java.awt.image.BufferedImage; +import com.loohp.limbo.Events.Event; import com.loohp.limbo.Server.ClientConnection; import net.md_5.bungee.api.chat.BaseComponent; diff --git a/src/main/java/com/loohp/limbo/File/ServerProperties.java b/src/main/java/com/loohp/limbo/File/ServerProperties.java index c0c684f..3f544f6 100644 --- a/src/main/java/com/loohp/limbo/File/ServerProperties.java +++ b/src/main/java/com/loohp/limbo/File/ServerProperties.java @@ -42,6 +42,7 @@ public class ServerProperties { private boolean bungeecord; private int viewDistance; private double ticksPerSecond; + private boolean handshakeVerbose; Optional favicon; @@ -92,6 +93,7 @@ public class ServerProperties { bungeecord = Boolean.parseBoolean(prop.getProperty("bungeecord")); viewDistance = Integer.parseInt(prop.getProperty("view-distance")); ticksPerSecond = Double.parseDouble(prop.getProperty("ticks-per-second")); + handshakeVerbose = Boolean.parseBoolean(prop.getProperty("handshake-verbose")); File png = new File("server-icon.png"); if (png.exists()) { @@ -193,4 +195,8 @@ public class ServerProperties { return ticksPerSecond; } + public boolean handshakeVerboseEnabled() { + return handshakeVerbose; + } + } diff --git a/src/main/java/com/loohp/limbo/Player/Player.java b/src/main/java/com/loohp/limbo/Player/Player.java index c8ca1a3..3fe03d7 100644 --- a/src/main/java/com/loohp/limbo/Player/Player.java +++ b/src/main/java/com/loohp/limbo/Player/Player.java @@ -10,8 +10,8 @@ import com.loohp.limbo.Entity.DataWatcher.WatchableField; import com.loohp.limbo.Entity.DataWatcher.WatchableObjectType; import com.loohp.limbo.Entity.EntityType; import com.loohp.limbo.Entity.LivingEntity; -import com.loohp.limbo.Events.PlayerChatEvent; -import com.loohp.limbo.Events.PlayerTeleportEvent; +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; diff --git a/src/main/java/com/loohp/limbo/Server/ClientConnection.java b/src/main/java/com/loohp/limbo/Server/ClientConnection.java index a42e0e5..3d65c0f 100644 --- a/src/main/java/com/loohp/limbo/Server/ClientConnection.java +++ b/src/main/java/com/loohp/limbo/Server/ClientConnection.java @@ -16,14 +16,13 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; -import com.loohp.limbo.DeclareCommands; import com.loohp.limbo.Limbo; -import com.loohp.limbo.Events.PlayerJoinEvent; -import com.loohp.limbo.Events.PlayerLoginEvent; -import com.loohp.limbo.Events.PlayerMoveEvent; -import com.loohp.limbo.Events.PlayerQuitEvent; -import com.loohp.limbo.Events.PlayerSelectedSlotChangeEvent; -import com.loohp.limbo.Events.StatusPingEvent; +import com.loohp.limbo.Events.Player.PlayerJoinEvent; +import com.loohp.limbo.Events.Player.PlayerLoginEvent; +import com.loohp.limbo.Events.Player.PlayerMoveEvent; +import com.loohp.limbo.Events.Player.PlayerQuitEvent; +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.Player.Player; @@ -63,6 +62,7 @@ import com.loohp.limbo.Server.Packets.PacketStatusOutPong; import com.loohp.limbo.Server.Packets.PacketStatusOutResponse; import com.loohp.limbo.Utils.CustomStringUtils; import com.loohp.limbo.Utils.DataTypeIO; +import com.loohp.limbo.Utils.DeclareCommands; import com.loohp.limbo.Utils.GameMode; import com.loohp.limbo.Utils.MojangAPIUtils; import com.loohp.limbo.Utils.MojangAPIUtils.SkinResponse; @@ -157,7 +157,7 @@ public class ClientConnection extends Thread { } catch (IOException e) {} } - public void disconnectDuringLogin(BaseComponent[] reason) { + private void disconnectDuringLogin(BaseComponent[] reason) { try { PacketLoginOutDisconnect packet = new PacketLoginOutDisconnect(ComponentSerializer.toString(reason)); sendPacket(packet); @@ -205,88 +205,95 @@ public class ClientConnection extends Thread { UUID bungeeUUID = null; SkinResponse bungeeSkin = null; - switch (handshake.getHandshakeType()) { - case STATUS: - state = ClientState.STATUS; - while (client_socket.isConnected()) { - DataTypeIO.readVarInt(input); - int packetId = DataTypeIO.readVarInt(input); - Class packetType = Packet.getStatusIn().get(packetId); - if (packetType == null) { - //do nothing - } else if (packetType.equals(PacketStatusInRequest.class)) { - String str = client_socket.getInetAddress().getHostName() + ":" + client_socket.getPort(); - Limbo.getInstance().getConsole().sendMessage("[/" + str + "] <-> Handshake Status has pinged"); - ServerProperties p = Limbo.getInstance().getServerProperties(); - StatusPingEvent event = Limbo.getInstance().getEventsManager().callEvent(new StatusPingEvent(this, p.getVersionString(), p.getProtocol(), ComponentSerializer.parse(p.getMotdJson()), p.getMaxPlayers(), Limbo.getInstance().getPlayers().size(), p.getFavicon().orElse(null))); - PacketStatusOutResponse packet = new PacketStatusOutResponse(Limbo.getInstance().buildServerListResponseJson(event.getVersion(), event.getProtocol(), event.getMotd(), event.getMaxPlayers(), event.getPlayersOnline(), event.getFavicon())); - sendPacket(packet); - } else if (packetType.equals(PacketStatusInPing.class)) { - PacketStatusInPing ping = new PacketStatusInPing(input); - PacketStatusOutPong packet = new PacketStatusOutPong(ping.getPayload()); - sendPacket(packet); - break; + try { + switch (handshake.getHandshakeType()) { + case STATUS: + state = ClientState.STATUS; + while (client_socket.isConnected()) { + DataTypeIO.readVarInt(input); + int packetId = DataTypeIO.readVarInt(input); + Class packetType = Packet.getStatusIn().get(packetId); + if (packetType == null) { + //do nothing + } else if (packetType.equals(PacketStatusInRequest.class)) { + String str = client_socket.getInetAddress().getHostName() + ":" + client_socket.getPort(); + if (Limbo.getInstance().getServerProperties().handshakeVerboseEnabled()) { + Limbo.getInstance().getConsole().sendMessage("[/" + str + "] <-> Handshake Status has pinged"); + } + ServerProperties p = Limbo.getInstance().getServerProperties(); + StatusPingEvent event = Limbo.getInstance().getEventsManager().callEvent(new StatusPingEvent(this, p.getVersionString(), p.getProtocol(), ComponentSerializer.parse(p.getMotdJson()), p.getMaxPlayers(), Limbo.getInstance().getPlayers().size(), p.getFavicon().orElse(null))); + PacketStatusOutResponse packet = new PacketStatusOutResponse(Limbo.getInstance().buildServerListResponseJson(event.getVersion(), event.getProtocol(), event.getMotd(), event.getMaxPlayers(), event.getPlayersOnline(), event.getFavicon())); + sendPacket(packet); + } else if (packetType.equals(PacketStatusInPing.class)) { + PacketStatusInPing ping = new PacketStatusInPing(input); + PacketStatusOutPong packet = new PacketStatusOutPong(ping.getPayload()); + sendPacket(packet); + break; + } } - } - break; - case LOGIN: - state = ClientState.LOGIN; - - if (isBungeecord) { - try { - String[] data = bungeeForwarding.split("\\x00"); - //String host = data[0]; - String ip = data[1]; - - bungeeUUID = UUID.fromString(data[2].replaceFirst("([0-9a-fA-F]{8})([0-9a-fA-F]{4})([0-9a-fA-F]{4})([0-9a-fA-F]{4})([0-9a-fA-F]+)", "$1-$2-$3-$4-$5")); - inetAddress = InetAddress.getByName(ip); - - if (data.length > 3) { - String skinJson = data[3]; - - String skin = skinJson.split("\"value\":\"")[1].split("\"")[0]; - String signature = skinJson.split("\"signature\":\"")[1].split("\"")[0]; - bungeeSkin = new SkinResponse(skin, signature); - } - } catch (Exception e) { - Limbo.getInstance().getConsole().sendMessage("If you wish to use bungeecord's IP forwarding, please enable that in your bungeecord config.yml as well!"); - disconnectDuringLogin(new BaseComponent[] {new TextComponent(ChatColor.RED + "Please connect from the proxy!")}); - } - } - - while (client_socket.isConnected()) { - int size = DataTypeIO.readVarInt(input); - int packetId = DataTypeIO.readVarInt(input); - Class packetType = Packet.getLoginIn().get(packetId); + break; + case LOGIN: + state = ClientState.LOGIN; - if (packetType == null) { - input.skipBytes(size - DataTypeIO.getVarIntLength(packetId)); - } else if (packetType.equals(PacketLoginInLoginStart.class)) { - PacketLoginInLoginStart start = new PacketLoginInLoginStart(input); - String username = start.getUsername(); - UUID uuid = isBungeecord ? bungeeUUID : UUID.nameUUIDFromBytes(("OfflinePlayer:" + username).getBytes(StandardCharsets.UTF_8)); + if (isBungeecord) { + try { + String[] data = bungeeForwarding.split("\\x00"); + //String host = data[0]; + String ip = data[1]; + + bungeeUUID = UUID.fromString(data[2].replaceFirst("([0-9a-fA-F]{8})([0-9a-fA-F]{4})([0-9a-fA-F]{4})([0-9a-fA-F]{4})([0-9a-fA-F]+)", "$1-$2-$3-$4-$5")); + inetAddress = InetAddress.getByName(ip); + + if (data.length > 3) { + String skinJson = data[3]; + + String skin = skinJson.split("\"value\":\"")[1].split("\"")[0]; + String signature = skinJson.split("\"signature\":\"")[1].split("\"")[0]; + bungeeSkin = new SkinResponse(skin, signature); + } + } catch (Exception e) { + Limbo.getInstance().getConsole().sendMessage("If you wish to use bungeecord's IP forwarding, please enable that in your bungeecord config.yml as well!"); + disconnectDuringLogin(new BaseComponent[] {new TextComponent(ChatColor.RED + "Please connect from the proxy!")}); + } + } + + while (client_socket.isConnected()) { + int size = DataTypeIO.readVarInt(input); + int packetId = DataTypeIO.readVarInt(input); + Class packetType = Packet.getLoginIn().get(packetId); - PacketLoginOutLoginSuccess success = new PacketLoginOutLoginSuccess(uuid, username); - sendPacket(success); - - state = ClientState.PLAY; - - player = new Player(this, username, uuid, Limbo.getInstance().getNextEntityId(), Limbo.getInstance().getServerProperties().getWorldSpawn(), new PlayerInteractManager()); - player.setSkinLayers((byte) (0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40)); - Limbo.getInstance().addPlayer(player); - - break; - } else { - input.skipBytes(size - DataTypeIO.getVarIntLength(packetId)); + if (packetType == null) { + input.skipBytes(size - DataTypeIO.getVarIntLength(packetId)); + } else if (packetType.equals(PacketLoginInLoginStart.class)) { + PacketLoginInLoginStart start = new PacketLoginInLoginStart(input); + String username = start.getUsername(); + UUID uuid = isBungeecord ? bungeeUUID : UUID.nameUUIDFromBytes(("OfflinePlayer:" + username).getBytes(StandardCharsets.UTF_8)); + + PacketLoginOutLoginSuccess success = new PacketLoginOutLoginSuccess(uuid, username); + sendPacket(success); + + state = ClientState.PLAY; + + player = new Player(this, username, uuid, Limbo.getInstance().getNextEntityId(), Limbo.getInstance().getServerProperties().getWorldSpawn(), new PlayerInteractManager()); + player.setSkinLayers((byte) (0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40)); + Limbo.getInstance().addPlayer(player); + + break; + } else { + input.skipBytes(size - DataTypeIO.getVarIntLength(packetId)); + } + } + + PlayerLoginEvent event = Limbo.getInstance().getEventsManager().callEvent(new PlayerLoginEvent(this, false)); + if (event.isCancelled()) { + disconnectDuringLogin(event.getCancelReason()); } - } - - PlayerLoginEvent event = Limbo.getInstance().getEventsManager().callEvent(new PlayerLoginEvent(this, false)); - if (event.isCancelled()) { - disconnectDuringLogin(event.getCancelReason()); - } - - break; + + break; + } + } catch (Exception e) { + client_socket.close(); + state = ClientState.DISCONNECTED; } if (state == ClientState.PLAY) { diff --git a/src/main/java/com/loohp/limbo/Server/KeepAliveSender.java b/src/main/java/com/loohp/limbo/Server/KeepAliveSender.java index 9fdf717..bbcd023 100644 --- a/src/main/java/com/loohp/limbo/Server/KeepAliveSender.java +++ b/src/main/java/com/loohp/limbo/Server/KeepAliveSender.java @@ -22,7 +22,7 @@ public class KeepAliveSender extends Thread { while (true) { try { for (ClientConnection client : Limbo.getInstance().getServerConnection().getClients()) { - if (client.getClientState().equals(ClientState.PLAY)) { + if (client.getClientState() != null && client.getClientState().equals(ClientState.PLAY)) { try { PacketPlayOutKeepAlive packet = new PacketPlayOutKeepAlive(random.nextLong()); client.setLastKeepAlivePayLoad(packet.getPayload()); diff --git a/src/main/java/com/loohp/limbo/DeclareCommands.java b/src/main/java/com/loohp/limbo/Utils/DeclareCommands.java similarity index 96% rename from src/main/java/com/loohp/limbo/DeclareCommands.java rename to src/main/java/com/loohp/limbo/Utils/DeclareCommands.java index 6d63c28..74b31a7 100644 --- a/src/main/java/com/loohp/limbo/DeclareCommands.java +++ b/src/main/java/com/loohp/limbo/Utils/DeclareCommands.java @@ -1,4 +1,4 @@ -package com.loohp.limbo; +package com.loohp.limbo.Utils; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -6,9 +6,9 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; 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.Utils.DataTypeIO; public class DeclareCommands { diff --git a/src/main/resources/server.properties b/src/main/resources/server.properties index 84030f4..6211af4 100644 --- a/src/main/resources/server.properties +++ b/src/main/resources/server.properties @@ -34,6 +34,9 @@ view-distance=6 #Ticks per second of the server ticks-per-second=5 +#Should a message be printed to the console when a handshake occurs +handshake-verbose=true + #Server list message in Json motd={"text":"","extra":[{"text":"Limbo Server!","color":"yellow"}]}