|
19 | 19 |
|
20 | 20 | public class NetHandlerLoginServer implements INetHandlerLoginServer, ITickable |
21 | 21 | { |
22 | | -@@ -49,6 +54,8 @@ |
| 22 | +@@ -48,6 +53,11 @@ |
| 23 | + private final String field_147334_j = ""; |
23 | 24 | private SecretKey field_147335_k; |
24 | 25 | private EntityPlayerMP field_181025_l; |
25 | | - |
26 | | -+ public String hostname = ""; |
| 26 | ++ private static final com.github.benmanes.caffeine.cache.Cache<String, GameProfile> playerProfileResultCache = com.github.benmanes.caffeine.cache.Caffeine.newBuilder() |
| 27 | ++ .expireAfterWrite(catserver.server.CatServer.getConfig().playerProfileResultCacheMinutes, java.util.concurrent.TimeUnit.MINUTES) |
| 28 | ++ .build(); // CatRoom - Cache player profile result |
27 | 29 | + |
| 30 | ++ public String hostname = ""; |
| 31 | + |
28 | 32 | public NetHandlerLoginServer(MinecraftServer p_i45298_1_, NetworkManager p_i45298_2_) |
29 | 33 | { |
30 | | - this.field_147327_f = p_i45298_1_; |
31 | | -@@ -56,7 +63,6 @@ |
| 34 | +@@ -56,7 +66,6 @@ |
32 | 35 | field_147329_d.nextBytes(this.field_147330_e); |
33 | 36 | } |
34 | 37 |
|
35 | 38 | - @Override |
36 | 39 | public void func_73660_a() |
37 | 40 | { |
38 | 41 | if (this.field_147328_g == NetHandlerLoginServer.LoginState.READY_TO_ACCEPT) |
39 | | -@@ -70,16 +76,29 @@ |
| 42 | +@@ -70,16 +79,29 @@ |
40 | 43 | if (entityplayermp == null) |
41 | 44 | { |
42 | 45 | this.field_147328_g = NetHandlerLoginServer.LoginState.READY_TO_ACCEPT; |
|
70 | 73 |
|
71 | 74 | public void func_194026_b(ITextComponent p_194026_1_) |
72 | 75 | { |
73 | | -@@ -95,18 +114,48 @@ |
| 76 | +@@ -95,18 +117,48 @@ |
74 | 77 | } |
75 | 78 | } |
76 | 79 |
|
|
126 | 129 | } |
127 | 130 | else |
128 | 131 | { |
129 | | -@@ -133,12 +182,11 @@ |
| 132 | +@@ -133,12 +185,11 @@ |
130 | 133 | } |
131 | 134 | else |
132 | 135 | { |
|
140 | 143 | public void func_147231_a(ITextComponent p_147231_1_) |
141 | 144 | { |
142 | 145 | field_147332_c.info("{} lost connection: {}", this.func_147317_d(), p_147231_1_.func_150260_c()); |
143 | | -@@ -146,12 +194,9 @@ |
| 146 | +@@ -146,12 +197,9 @@ |
144 | 147 |
|
145 | 148 | public String func_147317_d() |
146 | 149 | { |
|
154 | 157 | public void func_147316_a(CPacketLoginStart p_147316_1_) |
155 | 158 | { |
156 | 159 | Validate.validState(this.field_147328_g == NetHandlerLoginServer.LoginState.HELLO, "Unexpected hello packet"); |
157 | | -@@ -164,11 +209,23 @@ |
| 160 | +@@ -164,11 +212,24 @@ |
158 | 161 | } |
159 | 162 | else |
160 | 163 | { |
161 | 164 | - this.field_147328_g = NetHandlerLoginServer.LoginState.READY_TO_ACCEPT; |
162 | 165 | + // Spigot start |
163 | | -+ new Thread(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER, "User Authenticator #" + NetHandlerLoginServer.field_147331_b.incrementAndGet()) { |
164 | | -+ @Override |
165 | | -+ public void run() { |
166 | | -+ try { |
167 | | -+ initUUID(); |
168 | | -+ new LoginHandler().fireEvents(); |
169 | | -+ } catch (Exception ex) { |
170 | | -+ disconnect("Failed to verify username!"); |
171 | | -+ field_147327_f.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + field_147337_i.getName(), ex); |
172 | | -+ } |
173 | | -+ } |
174 | | -+ }.start(); |
| 166 | ++ // CatRoom start - Virtual thread for User Authenticator |
| 167 | ++ Thread.ofVirtual() |
| 168 | ++ .name("User Authenticator #" + NetHandlerLoginServer.field_147331_b.incrementAndGet()) |
| 169 | ++ .start(() -> { |
| 170 | ++ try { |
| 171 | ++ initUUID(); |
| 172 | ++ new LoginHandler().fireEvents(); |
| 173 | ++ } catch (Exception ex) { |
| 174 | ++ disconnect("Failed to verify username!"); |
| 175 | ++ field_147327_f.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + field_147337_i.getName(), ex); |
| 176 | ++ } |
| 177 | ++ }); |
| 178 | ++ // CatRoom end - Virtual thread for User Authenticator |
175 | 179 | + // Spigot end |
176 | 180 | } |
177 | 181 | } |
|
180 | 184 | public void func_147315_a(CPacketEncryptionResponse p_147315_1_) |
181 | 185 | { |
182 | 186 | Validate.validState(this.field_147328_g == NetHandlerLoginServer.LoginState.KEY, "Unexpected key packet"); |
183 | | -@@ -183,32 +240,25 @@ |
| 187 | +@@ -183,32 +244,39 @@ |
184 | 188 | this.field_147335_k = p_147315_1_.func_149300_a(privatekey); |
185 | 189 | this.field_147328_g = NetHandlerLoginServer.LoginState.AUTHENTICATING; |
186 | 190 | this.field_147333_a.func_150727_a(this.field_147335_k); |
187 | 191 | - (new Thread("User Authenticator #" + field_147331_b.incrementAndGet()) |
188 | | -+ (new Thread(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER, "User Authenticator #" + field_147331_b.incrementAndGet()) |
| 192 | ++ // CatRoom start - Virtual thread for User Authenticator |
| 193 | ++ Thread.ofVirtual() |
| 194 | ++ .name("User Authenticator #" + field_147331_b.incrementAndGet()) |
| 195 | ++ .start(new Runnable() // CatRoom end - Virtual thread for User Authenticator |
189 | 196 | { |
190 | 197 | - @Override |
191 | 198 | public void run() |
|
204 | 211 | - .func_147130_as() |
205 | 212 | - .hasJoinedServer(new GameProfile(null, gameprofile.getName()), s, this.func_191235_a()); |
206 | 213 | + String s = (new BigInteger(CryptManager.func_75895_a("", NetHandlerLoginServer.this.field_147327_f.func_71250_E().getPublic(), NetHandlerLoginServer.this.field_147335_k))).toString(16); |
207 | | -+ NetHandlerLoginServer.this.field_147337_i = NetHandlerLoginServer.this.field_147327_f.func_147130_as().hasJoinedServer(new GameProfile((UUID)null, gameprofile.getName()), s, this.getAddress()); |
| 214 | ++ // CatRoom start - Cache player profile result |
| 215 | ++ if (catserver.server.CatServer.getConfig().cachePlayerProfileResult) { |
| 216 | ++ GameProfile gp = playerProfileResultCache.getIfPresent(gameprofile.getName()); |
| 217 | ++ if (gp == null) { |
| 218 | ++ gp = NetHandlerLoginServer.this.field_147327_f.func_147130_as().hasJoinedServer(new GameProfile((UUID)null, gameprofile.getName()), s, this.func_191235_a()); |
| 219 | ++ playerProfileResultCache.put(gameprofile.getName(), gp); |
| 220 | ++ } |
| 221 | ++ NetHandlerLoginServer.this.field_147337_i = gp; |
| 222 | ++ } else { |
| 223 | ++ NetHandlerLoginServer.this.field_147337_i = NetHandlerLoginServer.this.field_147327_f.func_147130_as().hasJoinedServer(new GameProfile((UUID) null, gameprofile.getName()), s, this.func_191235_a()); |
| 224 | ++ } |
| 225 | ++ // CatRoom end - Cache player profile result |
208 | 226 |
|
209 | 227 | if (NetHandlerLoginServer.this.field_147337_i != null) |
210 | 228 | { |
|
222 | 240 | } |
223 | 241 | else if (NetHandlerLoginServer.this.field_147327_f.func_71264_H()) |
224 | 242 | { |
225 | | -@@ -218,11 +268,11 @@ |
| 243 | +@@ -218,11 +286,11 @@ |
226 | 244 | } |
227 | 245 | else |
228 | 246 | { |
|
237 | 255 | { |
238 | 256 | if (NetHandlerLoginServer.this.field_147327_f.func_71264_H()) |
239 | 257 | { |
240 | | -@@ -232,23 +282,67 @@ |
| 258 | +@@ -232,23 +300,67 @@ |
241 | 259 | } |
242 | 260 | else |
243 | 261 | { |
|
254 | 272 | } |
255 | 273 | } |
256 | 274 | @Nullable |
257 | | -- private InetAddress func_191235_a() |
258 | | -+ private InetAddress getAddress() |
| 275 | + private InetAddress func_191235_a() |
259 | 276 | { |
260 | 277 | SocketAddress socketaddress = NetHandlerLoginServer.this.field_147333_a.func_74430_c(); |
261 | 278 | - return NetHandlerLoginServer.this.field_147327_f.func_190518_ac() && socketaddress instanceof InetSocketAddress |
|
268 | 285 | - } |
269 | 286 | + return NetHandlerLoginServer.this.field_147327_f.func_190518_ac() && socketaddress instanceof InetSocketAddress ? ((InetSocketAddress)socketaddress).getAddress() : null; |
270 | 287 | + } |
271 | | -+ }).start(); |
| 288 | ++ }); // CatRoom |
272 | 289 | + } |
273 | 290 | + } |
274 | 291 | + |
|
0 commit comments