From a3b5956cdd9c7ecc73a9b103ef109ac2d274b20d Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Fri, 15 May 2020 14:41:08 +0300 Subject: [PATCH] set favicon server --- build.gradle | 2 ++ .../network/impl/handler/StatusHandler.java | 17 +++++++++++++---- src/main/resources/icon.png | Bin 0 -> 1675 bytes 3 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/icon.png diff --git a/build.gradle b/build.gradle index e540db7..e5b7eca 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ ext { netty: ['io.netty:netty-all:4.1.22.Final'], slf4j: ["org.slf4j:slf4j-api:$slf4j_version", "org.slf4j:jcl-over-slf4j:$slf4j_version"], + commons: ['commons-io:commons-io:2.6'] ] } @@ -41,5 +42,6 @@ dependencies { /* COMPONENTS */ implementation library.guice implementation library.netty + implementation library.commons implementation project(':protocol') } \ No newline at end of file diff --git a/src/main/java/mc/server/network/impl/handler/StatusHandler.java b/src/main/java/mc/server/network/impl/handler/StatusHandler.java index b7bb44e..9289e1b 100644 --- a/src/main/java/mc/server/network/impl/handler/StatusHandler.java +++ b/src/main/java/mc/server/network/impl/handler/StatusHandler.java @@ -1,21 +1,24 @@ package mc.server.network.impl.handler; -import com.google.inject.Inject; import io.netty.channel.ChannelHandlerContext; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import mc.protocol.ProtocolConstant; import mc.protocol.dto.ServerInfo; import mc.protocol.status.client.StatusServerRequest; import mc.protocol.status.server.StatusServerResponse; import mc.protocol.text.Text; +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.util.Base64; @Slf4j -@RequiredArgsConstructor(onConstructor = @__({ @Inject })) public class StatusHandler extends AbstractPacketHandler { + private static final String FAVICON_HEADER = "data:image/png;base64,"; + @Override - protected void channelRead1(ChannelHandlerContext ctx, StatusServerRequest packet) { + protected void channelRead1(ChannelHandlerContext ctx, StatusServerRequest packet) throws Exception { log.info("{}", packet); final ServerInfo.Version version = new ServerInfo.Version(); @@ -25,10 +28,16 @@ public class StatusHandler extends AbstractPacketHandler { final ServerInfo serverInfo = new ServerInfo(); serverInfo.setVersion(version); serverInfo.setDescription(Text.of("MC-SERVER 1.8.8")); + serverInfo.setFaviconBase64(getEmbeddedIconBase64()); StatusServerResponse response = new StatusServerResponse(); response.setServerInfoDto(serverInfo); ctx.channel().writeAndFlush(response); } + + private String getEmbeddedIconBase64() throws IOException { + return FAVICON_HEADER + Base64.getEncoder() + .encodeToString(IOUtils.toByteArray(getClass().getResourceAsStream("/icon.png"))); + } } diff --git a/src/main/resources/icon.png b/src/main/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d512fc5472e1d4b4573ba22b5e3e71587dbd4c9f GIT binary patch literal 1675 zcmV;626Xv}P)09zrl&^1WzcGf>6{pC7KKEp~p(7 zm8$R+BqT&YDrzr1B0?|WNG@&Q)Kgp3N=;EK4kUb5;xDLFQ7H?^5{eKeBm_fnt9);4 z_pn}j*IwH*J2STPlPs-g-^_dS+u4~n@6BpcQ&VUHf&eZ8_=ZvbTL2dT7&48Zlvb7b zWGbk@IDkU&w+{BsqbR#>t3NK?x*}u~Fo3erLlWB^vb8%Pv0Z5doP}xJElKUw!>yvO zvoabJC13)kF_$IS!i&pA-4h~>1O)0youCA81SSzd02{oOy^Me#(LSBG!vOFzZzbLl zunv>ycEuMkC(ICQ1s(zlywz-H;Z9ZWW}5U?3LZ=s>>jR;tiWJoJf zw-5CQ_z4`7NgE>svoEgDYHWu5;9OG&Pkzm3mLSdy4dU>?XFOGcl+vm`)fxfZ4n-@F z$z)&{%r1$mpxZKd-HS2Xdx)26p7GAxI{*OLY!-<`0>NNo_e9tA>y*+#dzl*nM@0Kttz#*yDvK`y0*UpH(X>rVM`=}ojZD5?-?68 zq@O*oAGpUcqZTpe|NcS26u0jodJ?uL0i9_bW z_df{fuSbHe>%US;Pg?}Y3}8Ai{Ui;auiD@8`Fxm}eSv&FkFG=6uy3{yxxs?>ov>&iFj2AYnKF#@HDT^oJ?v4^y(6l?EFLn)FF< z&!Nv9|DWEx>pGj;p?VT@gGGXL0-oNyTUFMI4zfaJc6d`jsUOhyZg1&2^>`W|b_B3J z}SADsBhDam=pu7tF21QY! zHr^DC17%nElnM=gpO5)x_XJfV6bgY-dKysd2jm)r!diuRyu3TL6L1uQXYSnKkAz*z zbE|8JMz;b0mX}xHM*(49<594blX76Clq0kgpu}Cvt*)Ub*hj@Jf9O$#f;+9AFM2|wG0Lza89UDD8SgLuKs%Ajn^iH5Dtfd8VR6U1mpl*0q`ZO zlA{L?a2qCqcs#}|8;ixRpvD8Obxh8}8aU1hGM>^mZY^%KS8vW6cX}DiT;b5AY>MG;n+=(kc=NAqF@e7;k1M1aoy@HHNc! z?+Ay(AcXt^&I8_FQe$6%<4{F2NFanD7K;S|oZ+qOH8;2cbC@xmD^^7UAq0ew>qT2U zIc}oK(PKsB=NbvhBq5nhf)H}9sQZ{mTe7mlmth)nu%3_z387HPdg6yPGkzxJV@=uV z@!K$o&;VR@6W}4Cv$NCc^woGgZnZ1*^IVlN!6B3*%|V!lvCacbBzy;81Wour^M8T$ Vqx`lI%8LL1002ovPDHLkV1m=#{XPHy literal 0 HcmV?d00001