Skip to content
This repository was archived by the owner on Jun 7, 2022. It is now read-only.

Commit 74d5490

Browse files
authored
Merge pull request #96 from CloudNetService/development
Merge development into master branch
2 parents 94be7cd + 1af764e commit 74d5490

File tree

18 files changed

+137
-70
lines changed

18 files changed

+137
-70
lines changed

Jenkinsfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pipeline {
1515
}
1616
stage('Version') {
1717
steps {
18-
sh 'mvn versions:set -DnewVersion=2.1.14.1'
18+
sh 'mvn versions:set -DnewVersion=2.1.14.2'
1919
}
2020
}
2121
stage('Compile') {

cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/player/PermissionProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ public static String getGroupPrefix(String groupName)
175175
final PermissionPool permissionPool = CloudAPI.getInstance().getPermissionPool();
176176
if (permissionPool.getGroups().containsKey(groupName))
177177
return permissionPool.getGroups().get(groupName).getPrefix();
178-
178+
179179
return null;
180180
}
181181

@@ -193,7 +193,7 @@ public static String getGroupSuffix(String groupName)
193193
final PermissionPool permissionPool = CloudAPI.getInstance().getPermissionPool();
194194
if (permissionPool.getGroups().containsKey(groupName))
195195
return permissionPool.getGroups().get(groupName).getSuffix();
196-
196+
197197
return null;
198198
}
199199

@@ -222,7 +222,7 @@ public static String getGroupDisplay(String groupName)
222222
final PermissionPool permissionPool = CloudAPI.getInstance().getPermissionPool();
223223
if (permissionPool.getGroups().containsKey(groupName))
224224
return permissionPool.getGroups().get(groupName).getDisplay();
225-
225+
226226
return null;
227227
}
228228

@@ -239,7 +239,7 @@ public static Collection<String> getImplementedGroups(String groupName)
239239
final PermissionPool permissionPool = CloudAPI.getInstance().getPermissionPool();
240240
if (permissionPool.getGroups().containsKey(groupName))
241241
return Collections.unmodifiableCollection(permissionPool.getGroups().get(groupName).getImplementGroups());
242-
242+
243243
return null;
244244
}
245245

cloudnet-core/src/main/java/de/dytanic/cloudnetcore/CloudConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public CloudConfig load() throws Exception
201201
);
202202
this.formatSplitter = configuration.getString("general.server-name-splitter");
203203
this.networkProperties = configuration.getSection("networkproperties").self;
204-
204+
205205
if (!configuration.getSection("general").self.containsKey("disabled-modules"))
206206
{
207207
configuration.set("general.disabled-modules", new ArrayList<>());
@@ -232,7 +232,7 @@ public CloudConfig load() throws Exception
232232
}.getType());
233233

234234
this.userDocument = Document.loadDocument(usersPath);
235-
235+
236236
return this;
237237
}
238238

cloudnet-core/src/main/java/de/dytanic/cloudnetcore/CloudNet.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,15 +129,15 @@ public boolean bootstrap() throws Exception
129129
System.out.println("Loading Modules...");
130130
moduleManager.loadModules();
131131
}
132-
132+
133133
for (WrapperMeta wrapperMeta : config.getWrappers())
134134
{
135135
System.out.println("Loading Wrapper " + wrapperMeta.getId() + " @ " + wrapperMeta.getHostName());
136136
this.wrappers.put(wrapperMeta.getId(), new Wrapper(wrapperMeta));
137137
}
138138

139139
this.users = config.getUsers();
140-
140+
141141
NetworkUtils.addAll(this.serverGroups, config.getServerGroups(), new Acceptable<ServerGroup>() {
142142
@Override
143143
public boolean isAccepted(ServerGroup value)
@@ -177,7 +177,7 @@ public boolean isAccepted(ProxyGroup value)
177177

178178
RUNNING = true;
179179
Runtime.getRuntime().addShutdownHook(new Thread(this));
180-
180+
181181
{
182182
if (!optionSet.has("onlyConsole"))
183183
{
@@ -240,9 +240,9 @@ public void reload() throws Exception
240240
this.users.clear();
241241
this.serverGroups.clear();
242242
this.proxyGroups.clear();
243-
243+
244244
this.config.load();
245-
245+
246246
this.users = config.getUsers();
247247

248248
NetworkUtils.addAll(this.serverGroups, config.getServerGroups(), new Acceptable<ServerGroup>() {

cloudnet-core/src/main/java/de/dytanic/cloudnetcore/command/CommandDebug.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ public CommandDebug()
2222
public void onExecuteCommand(CommandSender sender, String[] args)
2323
{
2424
CloudNet.getLogger().setDebugging(!CloudNet.getLogger().isDebugging());
25-
if (CloudNet.getLogger().isDebugging()) {
25+
if (CloudNet.getLogger().isDebugging())
26+
{
2627
sender.sendMessage("debugging was enabled");
27-
} else {
28+
} else
29+
{
2830
sender.sendMessage("debugging was disabled");
2931
}
3032
}

cloudnet-core/src/main/java/de/dytanic/cloudnetcore/network/NetworkManager.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import de.dytanic.cloudnet.lib.player.OfflinePlayer;
1515
import de.dytanic.cloudnet.lib.player.PlayerCommandExecution;
1616
import de.dytanic.cloudnet.lib.player.PlayerConnection;
17+
import de.dytanic.cloudnet.lib.scheduler.TaskScheduler;
1718
import de.dytanic.cloudnet.lib.server.ServerGroup;
1819
import de.dytanic.cloudnet.lib.server.ServerGroupMode;
1920
import de.dytanic.cloudnet.lib.server.SimpleServerGroup;
@@ -45,7 +46,6 @@
4546
import java.util.Collection;
4647
import java.util.LinkedList;
4748
import java.util.UUID;
48-
import java.util.concurrent.ExecutorService;
4949

5050
/**
5151
* Created by Tareko on 19.07.2017.
@@ -56,7 +56,6 @@ public final class NetworkManager {
5656
private java.util.Map<UUID, CloudPlayer> waitingPlayers = NetworkUtils.newConcurrentHashMap();
5757
private java.util.Map<UUID, CloudPlayer> onlinePlayers = NetworkUtils.newConcurrentHashMap();
5858
private Document moduleProperties = new Document();
59-
private ExecutorService executorService = java.util.concurrent.Executors.newFixedThreadPool(4);
6059

6160
private MessageConfig messageConfig;
6261

@@ -101,12 +100,14 @@ public void handlePlayerLoginRequest(ProxyServer proxyServer, PlayerConnection c
101100
OfflinePlayer offlinePlayer = null;
102101

103102
CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " database contains");
104-
if (!playerDatabase.containsPlayer(cloudPlayerConnection.getUniqueId())) {
103+
if (!playerDatabase.containsPlayer(cloudPlayerConnection.getUniqueId()))
104+
{
105105
CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " database register");
106106
offlinePlayer = playerDatabase.registerPlayer(cloudPlayerConnection);
107107
}
108108

109-
if (offlinePlayer == null) {
109+
if (offlinePlayer == null)
110+
{
110111
CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " database get");
111112
offlinePlayer = playerDatabase.getPlayer(cloudPlayerConnection.getUniqueId());
112113
}
@@ -115,7 +116,8 @@ public void handlePlayerLoginRequest(ProxyServer proxyServer, PlayerConnection c
115116
CloudPlayer cloudPlayer = new CloudPlayer(offlinePlayer, cloudPlayerConnection, proxyServer.getServerId());
116117
cloudPlayer.setPlayerExecutor(CorePlayerExecutor.INSTANCE);
117118

118-
if (cloudPlayer.getFirstLogin() == null) {
119+
if (cloudPlayer.getFirstLogin() == null)
120+
{
119121
CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " set firstLogin");
120122
cloudPlayer.setFirstLogin(System.currentTimeMillis());
121123
}
@@ -350,7 +352,10 @@ public boolean accept(INetworkComponent networkComponent)
350352

351353
public NetworkManager sendAll(Packet packet, ChannelFilter filter)
352354
{
353-
this.executorService.submit(() -> {
355+
TaskScheduler.runtimeScheduler().schedule(new Runnable() {
356+
@Override
357+
public void run()
358+
{
354359
for (Wrapper cn : CloudNet.getInstance().getWrappers().values())
355360
{
356361
if (cn.getChannel() != null && filter.accept(cn))
@@ -368,7 +373,9 @@ public NetworkManager sendAll(Packet packet, ChannelFilter filter)
368373
if (cloudServer.getChannel() != null && filter.accept(cloudServer))
369374
cloudServer.sendPacket(packet);
370375

371-
}});
376+
}
377+
}
378+
});
372379
return this;
373380
}
374381

cloudnet-core/src/main/java/de/dytanic/cloudnetcore/network/components/INetworkComponent.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import de.dytanic.cloudnet.lib.network.protocol.packet.Packet;
1111
import de.dytanic.cloudnet.lib.network.protocol.packet.PacketSender;
1212
import de.dytanic.cloudnetcore.CloudNet;
13+
import io.netty.channel.ChannelFutureListener;
1314

1415
/**
1516
* Created by Tareko on 27.05.2017.
@@ -35,8 +36,8 @@ default void sendPacket(Packet packet)
3536
{
3637
try
3738
{
38-
getChannel().writeAndFlush(packet);
39-
} catch (Exception ex)
39+
getChannel().writeAndFlush(packet).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
40+
} catch (Exception ignored)
4041
{
4142
}
4243
} else
@@ -47,10 +48,9 @@ public void run()
4748
{
4849
try
4950
{
50-
getChannel().writeAndFlush(packet);
51-
} catch (Exception ex)
51+
getChannel().writeAndFlush(packet).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
52+
} catch (Exception ignored)
5253
{
53-
5454
}
5555
}
5656
});

cloudnet-core/src/main/java/de/dytanic/cloudnetcore/serverlog/ServerLogManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void appendScreenData(Collection<ScreenInfo> screenInfos)
6262
{
6363
this.screenInfos.getS(key).addAll(screenInfos);
6464

65-
while (this.screenInfos.getS(key).size() > 64)
65+
while (this.screenInfos.getS(key).size() >= 64)
6666
this.screenInfos.getS(key).poll();
6767
}
6868
}

cloudnet-core/src/main/resources/files/log.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727

2828

29+
2930
</style>
3031
</head>
3132
<body>

cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/network/NetworkConnection.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ public boolean tryConnect(boolean ssl, SimpleChannelInboundHandler<Packet> defau
6767
{
6868
try
6969
{
70-
if (ssl) sslContext = SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build();
70+
if (ssl)
71+
sslContext = SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build();
7172

7273
Bootstrap bootstrap = new Bootstrap()
7374
.option(ChannelOption.AUTO_READ, true)

cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ServerGroup.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
import java.lang.reflect.Type;
1515
import java.util.ArrayList;
16-
import java.util.Arrays;
1716
import java.util.Collection;
1817
import java.util.Collections;
1918

cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/handlers/ReadConsoleLogHandler.java

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
package de.dytanic.cloudnetwrapper.handlers;
22

3-
import de.dytanic.cloudnet.lib.server.screen.ScreenInfo;
43
import de.dytanic.cloudnetwrapper.CloudNetWrapper;
5-
import de.dytanic.cloudnetwrapper.network.packet.out.PacketOutSendScreenLine;
4+
import de.dytanic.cloudnetwrapper.screen.AbstractScreenService;
65
import de.dytanic.cloudnetwrapper.server.BungeeCord;
76
import de.dytanic.cloudnetwrapper.server.CloudGameServer;
87
import de.dytanic.cloudnetwrapper.server.GameServer;
9-
import de.dytanic.cloudnetwrapper.server.process.ServerDispatcher;
108

119
import java.io.InputStream;
1210
import java.nio.charset.StandardCharsets;
13-
import java.util.Collections;
1411

1512
public final class ReadConsoleLogHandler implements IWrapperHandler {
1613

1714
private final StringBuffer stringBuffer = new StringBuffer();
1815

1916
private final byte[] buffer = new byte[1024];
2017

21-
private int len;
22-
2318
@Override
2419
public void run(CloudNetWrapper obj)
2520
{
@@ -36,32 +31,36 @@ public void run(CloudNetWrapper obj)
3631
readConsoleLog(gameServer);
3732
}
3833

39-
private synchronized void readConsoleLog(ServerDispatcher server)
34+
private synchronized void readConsoleLog(AbstractScreenService server)
4035
{
4136
if (server.getInstance().isAlive() && server.getInstance().getInputStream() != null)
4237
{
43-
try
44-
{
38+
readStream(server, server.getInstance().getInputStream());
39+
readStream(server, server.getInstance().getErrorStream());
40+
}
41+
}
4542

46-
InputStream inputStream = server.getInstance().getInputStream();
43+
private synchronized void readStream(AbstractScreenService screenService, InputStream inputStream)
44+
{
45+
try
46+
{
47+
int len;
48+
while (inputStream.available() > 0 && (len = inputStream.read(buffer, 0, buffer.length)) != -1)
49+
stringBuffer.append(new String(buffer, 0, len, StandardCharsets.UTF_8));
50+
51+
String stringText = stringBuffer.toString();
52+
if (!stringText.contains("\n") && !stringText.contains("\r")) return;
4753

48-
while (inputStream.available() > 0 && (len = inputStream.read(buffer, 0, buffer.length)) != -1)
49-
stringBuffer.append(new String(buffer, 0, len, StandardCharsets.UTF_8));
54+
for (String input : stringText.split("\r"))
55+
for (String text : input.split("\n"))
56+
if (!text.trim().isEmpty())
57+
screenService.addCachedItem(text);
5058

51-
for (String input : stringBuffer.toString().split("\r"))
52-
for (String text : input.split("\n"))
53-
if (!text.trim().isEmpty())
54-
{
55-
CloudNetWrapper.getInstance().getNetworkConnection()
56-
.sendPacket(new PacketOutSendScreenLine(Collections.singletonList(new ScreenInfo(server.getServiceId(), input))));
57-
}
59+
stringBuffer.setLength(0);
5860

59-
} catch (Exception ignored)
60-
{
61-
} finally
62-
{
63-
stringBuffer.setLength(0);
64-
}
61+
} catch (Exception ignored)
62+
{
63+
stringBuffer.setLength(0);
6564
}
6665
}
6766

cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/network/packet/in/PacketInScreen.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,47 @@
44

55
package de.dytanic.cloudnetwrapper.network.packet.in;
66

7+
import com.google.gson.reflect.TypeToken;
8+
import de.dytanic.cloudnet.lib.DefaultType;
79
import de.dytanic.cloudnet.lib.network.protocol.packet.PacketInHandler;
810
import de.dytanic.cloudnet.lib.network.protocol.packet.PacketSender;
11+
import de.dytanic.cloudnet.lib.server.info.ProxyInfo;
12+
import de.dytanic.cloudnet.lib.server.info.ServerInfo;
913
import de.dytanic.cloudnet.lib.utility.document.Document;
14+
import de.dytanic.cloudnetwrapper.CloudNetWrapper;
15+
import de.dytanic.cloudnetwrapper.server.BungeeCord;
16+
import de.dytanic.cloudnetwrapper.server.GameServer;
1017

1118
public final class PacketInScreen extends PacketInHandler {
1219

1320
@Override
1421
public void handleInput(Document data, PacketSender packetSender)
1522
{
16-
/*
1723
if (data.getObject("type", DefaultType.class) != DefaultType.BUNGEE_CORD)
1824
{
1925
ServerInfo server = data.getObject("serverInfo", new TypeToken<ServerInfo>() {
2026
}.getType());
2127
if (CloudNetWrapper.getInstance().getServers().containsKey(server.getServiceId().getServerId()))
2228
{
2329
GameServer gameServer = CloudNetWrapper.getInstance().getServers().get(server.getServiceId().getServerId());
30+
2431
if (data.getBoolean("enable"))
25-
CloudNetWrapper.getInstance().getScreenProvider().putScreenRequest(gameServer);
32+
gameServer.enableScreenSystem();
2633
else
27-
CloudNetWrapper.getInstance().getScreenProvider().cancel(gameServer);
34+
gameServer.disableScreenSystem();
2835
}
2936
} else
3037
{
3138
ProxyInfo server = data.getObject("proxyInfo", new TypeToken<ProxyInfo>() {
3239
}.getType());
3340
if (CloudNetWrapper.getInstance().getProxys().containsKey(server.getServiceId().getServerId()))
3441
{
35-
BungeeCord gameServer = CloudNetWrapper.getInstance().getProxys().get(server.getServiceId().getServerId());
42+
BungeeCord bungee = CloudNetWrapper.getInstance().getProxys().get(server.getServiceId().getServerId());
3643
if (data.getBoolean("enable"))
37-
CloudNetWrapper.getInstance().getScreenProvider().putScreenRequest(gameServer);
38-
else if (CloudNetWrapper.getInstance().getScreenProvider().contains(gameServer))
39-
CloudNetWrapper.getInstance().getScreenProvider().cancel(gameServer);
44+
bungee.enableScreenSystem();
45+
else
46+
bungee.disableScreenSystem();
4047
}
4148
}
42-
*/
4349
}
4450
}

0 commit comments

Comments
 (0)