Merge pull request #8 from MiGoYAm/main

Added display of brand name under F3
This commit is contained in:
Max 2021-12-12 21:21:25 +02:00 committed by GitHub
commit fd3d67bc07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 81 additions and 16 deletions

View File

@ -7,7 +7,10 @@ import org.spongepowered.configurate.yaml.YamlConfigurationLoader;
import ru.nanit.limbo.server.data.*; import ru.nanit.limbo.server.data.*;
import ru.nanit.limbo.util.Colors; import ru.nanit.limbo.util.Colors;
import java.io.*; import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketAddress; import java.net.SocketAddress;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
@ -25,9 +28,11 @@ public final class LimboConfig {
private Position spawnPosition; private Position spawnPosition;
private int gameMode; private int gameMode;
private boolean useBrandName;
private boolean useJoinMessage; private boolean useJoinMessage;
private boolean useBossBar; private boolean useBossBar;
private boolean useTitle; private boolean useTitle;
private String brandName;
private String joinMessage; private String joinMessage;
private BossBar bossBar; private BossBar bossBar;
private Title title; private Title title;
@ -59,10 +64,14 @@ public final class LimboConfig {
dimensionType = conf.node("dimension").getString(); dimensionType = conf.node("dimension").getString();
spawnPosition = conf.node("spawnPosition").get(Position.class); spawnPosition = conf.node("spawnPosition").get(Position.class);
gameMode = conf.node("gameMode").getInt(); gameMode = conf.node("gameMode").getInt();
useBrandName = conf.node("brandName", "enable").getBoolean();
useJoinMessage = conf.node("joinMessage", "enable").getBoolean(); useJoinMessage = conf.node("joinMessage", "enable").getBoolean();
useBossBar = conf.node("bossBar", "enable").getBoolean(); useBossBar = conf.node("bossBar", "enable").getBoolean();
useTitle = conf.node("title", "enable").getBoolean(); useTitle = conf.node("title", "enable").getBoolean();
if(useBrandName)
brandName = conf.node("brandName", "content").getString();
if (useJoinMessage) if (useJoinMessage)
joinMessage = Colors.of(conf.node("joinMessage", "text").getString("")); joinMessage = Colors.of(conf.node("joinMessage", "text").getString(""));
@ -144,6 +153,10 @@ public final class LimboConfig {
return debugLevel; return debugLevel;
} }
public boolean isUseBrandName() {
return useBrandName;
}
public boolean isUseJoinMessage() { public boolean isUseJoinMessage() {
return useJoinMessage; return useJoinMessage;
} }
@ -156,6 +169,10 @@ public final class LimboConfig {
return useTitle; return useTitle;
} }
public String getBrandName() {
return brandName;
}
public String getJoinMessage() { public String getJoinMessage() {
return joinMessage; return joinMessage;
} }

View File

@ -2,7 +2,6 @@ package ru.nanit.limbo.configuration;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.ConfigurationNode;
import org.spongepowered.configurate.serialize.SerializationException;
import org.spongepowered.configurate.serialize.TypeSerializer; import org.spongepowered.configurate.serialize.TypeSerializer;
import java.lang.reflect.Type; import java.lang.reflect.Type;

View File

@ -4,9 +4,9 @@ import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline; import io.netty.channel.ChannelPipeline;
import io.netty.handler.timeout.ReadTimeoutHandler; import io.netty.handler.timeout.ReadTimeoutHandler;
import ru.nanit.limbo.connection.pipeline.VarIntFrameDecoder;
import ru.nanit.limbo.connection.pipeline.PacketDecoder; import ru.nanit.limbo.connection.pipeline.PacketDecoder;
import ru.nanit.limbo.connection.pipeline.PacketEncoder; import ru.nanit.limbo.connection.pipeline.PacketEncoder;
import ru.nanit.limbo.connection.pipeline.VarIntFrameDecoder;
import ru.nanit.limbo.connection.pipeline.VarIntLengthEncoder; import ru.nanit.limbo.connection.pipeline.VarIntLengthEncoder;
import ru.nanit.limbo.server.LimboServer; import ru.nanit.limbo.server.LimboServer;

View File

@ -10,13 +10,13 @@ import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInboundHandlerAdapter;
import ru.nanit.limbo.LimboConstants; import ru.nanit.limbo.LimboConstants;
import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.PreEncodedPacket;
import ru.nanit.limbo.protocol.packets.login.*;
import ru.nanit.limbo.protocol.packets.play.*;
import ru.nanit.limbo.connection.pipeline.PacketDecoder; import ru.nanit.limbo.connection.pipeline.PacketDecoder;
import ru.nanit.limbo.connection.pipeline.PacketEncoder; import ru.nanit.limbo.connection.pipeline.PacketEncoder;
import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.PreEncodedPacket;
import ru.nanit.limbo.protocol.packets.PacketHandshake; import ru.nanit.limbo.protocol.packets.PacketHandshake;
import ru.nanit.limbo.protocol.packets.login.*;
import ru.nanit.limbo.protocol.packets.play.*;
import ru.nanit.limbo.protocol.packets.status.PacketStatusPing; import ru.nanit.limbo.protocol.packets.status.PacketStatusPing;
import ru.nanit.limbo.protocol.packets.status.PacketStatusRequest; import ru.nanit.limbo.protocol.packets.status.PacketStatusRequest;
import ru.nanit.limbo.protocol.packets.status.PacketStatusResponse; import ru.nanit.limbo.protocol.packets.status.PacketStatusResponse;
@ -41,6 +41,7 @@ public class ClientConnection extends ChannelInboundHandlerAdapter {
private static PreEncodedPacket PACKET_LOGIN_SUCCESS; private static PreEncodedPacket PACKET_LOGIN_SUCCESS;
private static PreEncodedPacket PACKET_JOIN_GAME; private static PreEncodedPacket PACKET_JOIN_GAME;
private static PreEncodedPacket PACKET_PLUGIN_MESSAGE;
private static PreEncodedPacket PACKET_PLAYER_ABILITIES; private static PreEncodedPacket PACKET_PLAYER_ABILITIES;
private static PreEncodedPacket PACKET_PLAYER_INFO; private static PreEncodedPacket PACKET_PLAYER_INFO;
private static PreEncodedPacket PACKET_DECLARE_COMMANDS; private static PreEncodedPacket PACKET_DECLARE_COMMANDS;
@ -221,6 +222,9 @@ public class ClientConnection extends ChannelInboundHandlerAdapter {
if (clientVersion.moreOrEqual(Version.V1_13)){ if (clientVersion.moreOrEqual(Version.V1_13)){
writePacket(PACKET_DECLARE_COMMANDS); writePacket(PACKET_DECLARE_COMMANDS);
if(PACKET_PLUGIN_MESSAGE != null)
writePacket(PACKET_PLUGIN_MESSAGE);
} }
if (PACKET_BOSS_BAR != null && clientVersion.moreOrEqual(Version.V1_9)) if (PACKET_BOSS_BAR != null && clientVersion.moreOrEqual(Version.V1_9))
@ -411,6 +415,13 @@ public class ClientConnection extends ChannelInboundHandlerAdapter {
PACKET_PLAYER_INFO = PreEncodedPacket.of(info); PACKET_PLAYER_INFO = PreEncodedPacket.of(info);
PACKET_DECLARE_COMMANDS = PreEncodedPacket.of(declareCommands); PACKET_DECLARE_COMMANDS = PreEncodedPacket.of(declareCommands);
if (server.getConfig().isUseBrandName()){
PacketPluginMessage pluginMessage = new PacketPluginMessage();
pluginMessage.setChannel("minecraft:brand");
pluginMessage.setMessage(server.getConfig().getBrandName());
PACKET_PLUGIN_MESSAGE = PreEncodedPacket.of(pluginMessage);
}
if (server.getConfig().isUseJoinMessage()) { if (server.getConfig().isUseJoinMessage()) {
PacketChatMessage joinMessage = new PacketChatMessage(); PacketChatMessage joinMessage = new PacketChatMessage();
joinMessage.setJsonData(server.getConfig().getJoinMessage()); joinMessage.setJsonData(server.getConfig().getJoinMessage());

View File

@ -3,7 +3,8 @@ package ru.nanit.limbo.connection.pipeline;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder; import io.netty.handler.codec.MessageToMessageDecoder;
import ru.nanit.limbo.protocol.*; import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.Packet;
import ru.nanit.limbo.protocol.registry.State; import ru.nanit.limbo.protocol.registry.State;
import ru.nanit.limbo.protocol.registry.Version; import ru.nanit.limbo.protocol.registry.Version;
import ru.nanit.limbo.util.Logger; import ru.nanit.limbo.util.Logger;

View File

@ -1,6 +1,7 @@
package ru.nanit.limbo.protocol.packets.login; package ru.nanit.limbo.protocol.packets.login;
import ru.nanit.limbo.protocol.*; import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.PacketIn;
import ru.nanit.limbo.protocol.registry.Version; import ru.nanit.limbo.protocol.registry.Version;
public class PacketLoginStart implements PacketIn { public class PacketLoginStart implements PacketIn {

View File

@ -0,0 +1,23 @@
package ru.nanit.limbo.protocol.packets.play;
import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.PacketOut;
import ru.nanit.limbo.protocol.registry.Version;
public class PacketPluginMessage implements PacketOut {
private String channel;
private String message;
public void setChannel(String channel){
this.channel = channel;
}
public void setMessage(String message){
this.message = message;
}
@Override
public void encode(ByteMessage msg, Version version) {
msg.writeString(channel);
msg.writeString(message);
}
}

View File

@ -1,6 +1,7 @@
package ru.nanit.limbo.protocol.packets.status; package ru.nanit.limbo.protocol.packets.status;
import ru.nanit.limbo.protocol.*; import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.PacketIn;
import ru.nanit.limbo.protocol.registry.Version; import ru.nanit.limbo.protocol.registry.Version;
public class PacketStatusRequest implements PacketIn { public class PacketStatusRequest implements PacketIn {

View File

@ -1,6 +1,7 @@
package ru.nanit.limbo.protocol.packets.status; package ru.nanit.limbo.protocol.packets.status;
import ru.nanit.limbo.protocol.*; import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.PacketOut;
import ru.nanit.limbo.protocol.registry.Version; import ru.nanit.limbo.protocol.registry.Version;
import ru.nanit.limbo.server.LimboServer; import ru.nanit.limbo.server.LimboServer;

View File

@ -1,18 +1,18 @@
package ru.nanit.limbo.protocol.registry; package ru.nanit.limbo.protocol.registry;
import ru.nanit.limbo.protocol.Packet; import ru.nanit.limbo.protocol.Packet;
import ru.nanit.limbo.protocol.packets.*; import ru.nanit.limbo.protocol.packets.PacketHandshake;
import ru.nanit.limbo.protocol.packets.login.*; import ru.nanit.limbo.protocol.packets.login.*;
import ru.nanit.limbo.protocol.packets.play.*; import ru.nanit.limbo.protocol.packets.play.*;
import ru.nanit.limbo.protocol.packets.status.PacketStatusPing; import ru.nanit.limbo.protocol.packets.status.PacketStatusPing;
import ru.nanit.limbo.protocol.packets.status.PacketStatusRequest; import ru.nanit.limbo.protocol.packets.status.PacketStatusRequest;
import ru.nanit.limbo.protocol.packets.status.PacketStatusResponse; import ru.nanit.limbo.protocol.packets.status.PacketStatusResponse;
import static ru.nanit.limbo.protocol.registry.Version.*;
import java.util.*; import java.util.*;
import java.util.function.Supplier; import java.util.function.Supplier;
import static ru.nanit.limbo.protocol.registry.Version.*;
public enum State { public enum State {
HANDSHAKING(0) { HANDSHAKING(0) {
@ -87,6 +87,14 @@ public enum State {
map(0x24, V1_16_2, V1_16_4), map(0x24, V1_16_2, V1_16_4),
map(0x26, V1_17, V1_18) map(0x26, V1_17, V1_18)
); );
clientBound.register(PacketPluginMessage::new,
map(0x19, V1_13, V1_13_2),
map(0x18, V1_14, V1_14_4),
map(0x19, V1_15,V1_15_2),
map(0x18, V1_16, V1_16_1),
map(0x17, V1_16_2, V1_16_4),
map(0x18, V1_17, V1_18)
);
clientBound.register(PacketPlayerAbilities::new, clientBound.register(PacketPlayerAbilities::new,
map(0x39, V1_8, V1_8), map(0x39, V1_8, V1_8),
map(0x2B, V1_9, V1_12), map(0x2B, V1_9, V1_12),

View File

@ -13,7 +13,6 @@ import io.netty.util.ResourceLeakDetector;
import ru.nanit.limbo.configuration.LimboConfig; import ru.nanit.limbo.configuration.LimboConfig;
import ru.nanit.limbo.connection.ClientChannelInitializer; import ru.nanit.limbo.connection.ClientChannelInitializer;
import ru.nanit.limbo.connection.ClientConnection; import ru.nanit.limbo.connection.ClientConnection;
import ru.nanit.limbo.protocol.registry.State;
import ru.nanit.limbo.util.Logger; import ru.nanit.limbo.util.Logger;
import ru.nanit.limbo.world.DimensionRegistry; import ru.nanit.limbo.world.DimensionRegistry;

View File

@ -2,7 +2,6 @@ package ru.nanit.limbo.server.data;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.ConfigurationNode;
import org.spongepowered.configurate.serialize.SerializationException;
import org.spongepowered.configurate.serialize.TypeSerializer; import org.spongepowered.configurate.serialize.TypeSerializer;
import ru.nanit.limbo.util.Colors; import ru.nanit.limbo.util.Colors;

View File

@ -34,6 +34,11 @@ spawnPosition:
# 3 - Spectator (hide all UI bars) # 3 - Spectator (hide all UI bars)
gameMode: 3 gameMode: 3
# Server name which is shown under F3
brandName:
enable: true
content: 'NanoLimbo'
# Message sends when player join to server # Message sends when player join to server
joinMessage: joinMessage:
enable: true enable: true