From ba1c190eac4e71f8f4d7688e2cf5e32c56f9024e Mon Sep 17 00:00:00 2001 From: Tarek Date: Sat, 26 Jan 2019 20:09:27 +0100 Subject: [PATCH 01/53] removed paper --- .../de/dytanic/cloudnetwrapper/setup/SetupSpigotVersion.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/setup/SetupSpigotVersion.java b/cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/setup/SetupSpigotVersion.java index 8c3ddaa3f..1bc8a3d60 100644 --- a/cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/setup/SetupSpigotVersion.java +++ b/cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/setup/SetupSpigotVersion.java @@ -48,7 +48,7 @@ public void run(ConsoleReader reader) { System.out.println("No spigot.jar has been found!"); - System.out.println("Choose a minecraft server version [\"paper\" (coming soon), \"spigot\"]"); + System.out.println("Choose a minecraft server version [" +/*"\"paper\" (coming soon)", */"\"spigot\"]"); String answer = null; @@ -69,9 +69,11 @@ public void run(ConsoleReader reader) case "spigot": answer = "spigot"; break; + /* case "paper": answer = "paper"; break; + */ default: System.out.println("This version is not supported!"); } From 737efa31fec061759c3cbd632a0130235ec949ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 22 Jan 2019 05:46:11 +0000 Subject: [PATCH 02/53] Bump dependency.netty.version from 4.1.32.Final to 4.1.33.Final Bumps `dependency.netty.version` from 4.1.32.Final to 4.1.33.Final. Updates `netty-transport-native-epoll` from 4.1.32.Final to 4.1.33.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.32.Final...netty-4.1.33.Final) Updates `netty-transport-native-kqueue` from 4.1.32.Final to 4.1.33.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.32.Final...netty-4.1.33.Final) Updates `netty-codec` from 4.1.32.Final to 4.1.33.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.32.Final...netty-4.1.33.Final) Updates `netty-handler` from 4.1.32.Final to 4.1.33.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.32.Final...netty-4.1.33.Final) Updates `netty-codec-http` from 4.1.32.Final to 4.1.33.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.32.Final...netty-4.1.33.Final) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 25af653e0..8ef0f49bb 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ RELEASE 1.18.4 - 4.1.32.Final + 4.1.33.Final 2.8.5 2.14.6 5.0.4 From 415a844bfcfcc89165dbd37b1923f4428f2b3c4f Mon Sep 17 00:00:00 2001 From: Tarek Date: Sun, 3 Feb 2019 21:34:05 +0100 Subject: [PATCH 03/53] removed stacktrace because --- .../dytanic/cloudnet/logging/CloudLogger.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/cloudnet-cord/cloudnet-log/src/main/java/de/dytanic/cloudnet/logging/CloudLogger.java b/cloudnet-cord/cloudnet-log/src/main/java/de/dytanic/cloudnet/logging/CloudLogger.java index 2d873eead..fbdb7be3c 100644 --- a/cloudnet-cord/cloudnet-log/src/main/java/de/dytanic/cloudnet/logging/CloudLogger.java +++ b/cloudnet-cord/cloudnet-log/src/main/java/de/dytanic/cloudnet/logging/CloudLogger.java @@ -31,7 +31,7 @@ */ @Getter public class CloudLogger - extends Logger { + extends Logger { private final String separator = System.getProperty("line.separator"); private final LoggingFormatter formatter = new LoggingFormatter(); @@ -155,9 +155,8 @@ public void publish(LogRecord record) reader.print(ConsoleReader.RESET_LINE + getFormatter().format(record)); reader.drawLine(); reader.flush(); - } catch (IOException e) + } catch (Throwable ignored) { - e.printStackTrace(); } } } @@ -175,7 +174,7 @@ public void close() throws SecurityException } private class LoggingFormatter - extends Formatter { + extends Formatter { private final DateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); @@ -191,13 +190,13 @@ public String format(LogRecord record) } return ConsoleReader.RESET_LINE + - "[" + - format.format(record.getMillis()) + - "] " + - record.getLevel().getName() + - ": " + - formatMessage(record) + - "\n" + builder.toString(); + "[" + + format.format(record.getMillis()) + + "] " + + record.getLevel().getName() + + ": " + + formatMessage(record) + + "\n" + builder.toString(); } } } From 835ebf16d06450cec8e963f4d89b225339e047f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 4 Feb 2019 07:28:33 +0000 Subject: [PATCH 04/53] Bump typetools from 0.6.0 to 0.6.1 Bumps [typetools](https://github.com/jhalterman/typetools) from 0.6.0 to 0.6.1. - [Release notes](https://github.com/jhalterman/typetools/releases) - [Changelog](https://github.com/jhalterman/typetools/blob/master/CHANGELOG.md) - [Commits](https://github.com/jhalterman/typetools/compare/typetools-0.6.0...typetools-0.6.1) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8ef0f49bb..9ed6971ed 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 1.8-1.12 1.8.8 1.6 - 0.6.0 + 0.6.1 4.12 From b0ec0b06ece5a66ae0caa88c260f337310c5b542 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 12 Feb 2019 06:30:18 +0000 Subject: [PATCH 05/53] Bump lombok from 1.18.4 to 1.18.6 Bumps [lombok](https://github.com/rzwitserloot/lombok) from 1.18.4 to 1.18.6. - [Release notes](https://github.com/rzwitserloot/lombok/releases) - [Changelog](https://github.com/rzwitserloot/lombok/blob/master/doc/changelog.markdown) - [Commits](https://github.com/rzwitserloot/lombok/compare/v1.18.4...v1.18.6) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9ed6971ed..378801619 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 2.1.14.3 RELEASE - 1.18.4 + 1.18.6 4.1.33.Final 2.8.5 2.14.6 From fdcf4d438c2474c20570ba971b8a7ea6da0a6047 Mon Sep 17 00:00:00 2001 From: Marvin Date: Sun, 24 Feb 2019 23:00:08 +0100 Subject: [PATCH 06/53] Fix incomplete set of effective permissions. Closes #104 Signed-off-by: Marvin --- .../internal/util/CloudPermissible.java | 42 +++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java index 1086291db..d7930f22b 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java @@ -7,15 +7,13 @@ import de.dytanic.cloudnet.api.CloudAPI; import de.dytanic.cloudnet.bridge.CloudServer; import de.dytanic.cloudnet.lib.player.CloudPlayer; +import de.dytanic.cloudnet.lib.player.permission.PermissionEntity; import org.bukkit.entity.Player; import org.bukkit.permissions.PermissibleBase; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionAttachmentInfo; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; /** * Created by Tareko on 18.08.2017. @@ -24,30 +22,48 @@ public class CloudPermissible extends PermissibleBase { private UUID uniqueId; + private Map permissions = new HashMap<>(); + public CloudPermissible(Player player) { super(player); this.uniqueId = player.getUniqueId(); player.setOp(false); + recalculatePermissions(); } @Override public Set getEffectivePermissions() { - final Map permissions = CloudServer.getInstance().getCloudPlayers().get(this.uniqueId).getPermissionEntity().getPermissions(); - Set set = new HashSet<>(); - for (Map.Entry entry : permissions.entrySet()) - { - PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, entry.getKey(), null, entry.getValue()); - set.add(permissionAttachmentInfo); + return new HashSet<>(permissions.values()); + } + + @Override + public void recalculatePermissions() { + this.permissions.clear(); + if (this.uniqueId == null) { + return; } - return set; + PermissionEntity permissionEntity = CloudServer.getInstance().getCloudPlayers().get(this.uniqueId).getPermissionEntity(); + final Map playerPermissions = permissionEntity.getPermissions(); + playerPermissions.forEach((key, value) -> { + PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, key, null, value); + permissions.put(key, permissionAttachmentInfo); + }); + permissionEntity.getGroups().stream() + .filter(g -> g.getTimeout() > System.currentTimeMillis()) + .map(g -> CloudAPI.getInstance().getPermissionGroup(g.getGroup())) + .forEach(g -> { + g.getPermissions().forEach((key, value) -> { + PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, key, null, value); + permissions.put(key, permissionAttachmentInfo); + }); + }); } @Override - public boolean isPermissionSet(String name) - { + public boolean isPermissionSet(String name) { return hasPermission(name); } From 25442d856709d7db95fc4c91eb55c81fa8bf3393 Mon Sep 17 00:00:00 2001 From: Marvin Date: Mon, 25 Feb 2019 18:32:20 +0100 Subject: [PATCH 07/53] Collect implemented groups to gather their permissions for the effective permission set. Closes #104 Signed-off-by: Marvin --- .../bridge/internal/util/CloudPermissible.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java index d7930f22b..51ec83677 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java @@ -8,12 +8,14 @@ import de.dytanic.cloudnet.bridge.CloudServer; import de.dytanic.cloudnet.lib.player.CloudPlayer; import de.dytanic.cloudnet.lib.player.permission.PermissionEntity; +import de.dytanic.cloudnet.lib.player.permission.PermissionGroup; import org.bukkit.entity.Player; import org.bukkit.permissions.PermissibleBase; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionAttachmentInfo; import java.util.*; +import java.util.stream.Stream; /** * Created by Tareko on 18.08.2017. @@ -54,6 +56,15 @@ public void recalculatePermissions() { permissionEntity.getGroups().stream() .filter(g -> g.getTimeout() > System.currentTimeMillis()) .map(g -> CloudAPI.getInstance().getPermissionGroup(g.getGroup())) + .filter(Objects::nonNull) + .flatMap(g -> { + Stream.Builder builder = Stream.builder().add(g); + g.getImplementGroups().stream() + .map(i -> CloudAPI.getInstance().getPermissionGroup(i)) + .filter(Objects::nonNull) + .forEach(builder); + return builder.build(); + }) .forEach(g -> { g.getPermissions().forEach((key, value) -> { PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, key, null, value); From e9f7d1d1ce7dbd2d7f26fa6b2da76c11d2a37e75 Mon Sep 17 00:00:00 2001 From: Tarek Date: Wed, 27 Feb 2019 20:39:25 +0100 Subject: [PATCH 08/53] added dns record remove failure message + break the while condition --- .../cloudflare/CloudFlareService.java | 58 +++++++++---------- .../CloudFlareDNSRecordException.java | 5 ++ 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java index d66666fd5..0155f4304 100644 --- a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java +++ b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java @@ -140,30 +140,30 @@ public void addProxy(ProxyProcessMeta proxyServer, CloudFlareDatabase cloudFlare if (cloudFlareProxyGroup.getSub().startsWith("@")) { srvRecord = new SRVRecord( - "_minecraft._tcp." + cloudFlareConfig.getDomainName(), - "SRV 1 1 " + proxyServer.getPort() + " " + proxyServer.getServiceId().getWrapperId() + "." + - cloudFlareConfig.getDomainName(), - "_minecraft", - "_tcp", + "_minecraft._tcp." + cloudFlareConfig.getDomainName(), + "SRV 1 1 " + proxyServer.getPort() + " " + proxyServer.getServiceId().getWrapperId() + "." + cloudFlareConfig.getDomainName(), - 1, - 1, - proxyServer.getPort(), - proxyServer.getServiceId().getWrapperId() + "." + cloudFlareConfig.getDomainName() + "_minecraft", + "_tcp", + cloudFlareConfig.getDomainName(), + 1, + 1, + proxyServer.getPort(), + proxyServer.getServiceId().getWrapperId() + "." + cloudFlareConfig.getDomainName() ); } else { srvRecord = new SRVRecord( - "_minecraft._tcp." + cloudFlareConfig.getDomainName(), - "SRV 1 1 " + proxyServer.getPort() + " " + proxyServer.getServiceId().getWrapperId() + "." + - cloudFlareConfig.getDomainName(), - "_minecraft", - "_tcp", - cloudFlareProxyGroup.getSub(), - 1, - 1, - proxyServer.getPort(), - proxyServer.getServiceId().getWrapperId() + "." + cloudFlareConfig.getDomainName() + "_minecraft._tcp." + cloudFlareConfig.getDomainName(), + "SRV 1 1 " + proxyServer.getPort() + " " + proxyServer.getServiceId().getWrapperId() + "." + + cloudFlareConfig.getDomainName(), + "_minecraft", + "_tcp", + cloudFlareProxyGroup.getSub(), + 1, + 1, + proxyServer.getPort(), + proxyServer.getServiceId().getWrapperId() + "." + cloudFlareConfig.getDomainName() ); } PostResponse postResponse = this.createRecord(cloudFlareConfig, srvRecord); @@ -210,7 +210,7 @@ public boolean isAccepted(MultiValue postResponseStringMul deleteRecord(postResponse.getFirst()); NetworkUtils.sleepUninterruptedly(500); - } + } else break; } } @@ -241,16 +241,16 @@ public PostResponse createRecord(CloudFlareConfig cloudFlareConfig, DNSRecord dn dataOutputStream.writeBytes(values); dataOutputStream.flush(); } - try (InputStream inputStream = httpPost.getInputStream()) + + try (InputStream inputStream = httpPost.getResponseCode() < 400 ? httpPost.getInputStream() : httpPost.getErrorStream()) { JsonObject jsonObject = toJsonInput(inputStream); if (jsonObject.get("success").getAsBoolean()) { System.out.println(prefix + "DNSRecord [" + dnsRecord.getName() + "/" + dnsRecord.getType() + "] was created"); } else - { throw new CloudFlareDNSRecordException("Failed to create DNSRecord \n " + jsonObject.toString()); - } + httpPost.disconnect(); return new PostResponse(cloudFlareConfig, dnsRecord, jsonObject.get("result").getAsJsonObject().get("id").getAsString()); } @@ -281,13 +281,14 @@ public void deleteRecord(PostResponse postResponse) delete.setRequestProperty("Content-Type", "application/json"); delete.connect(); - try (InputStream inputStream = delete.getInputStream()) + try (InputStream inputStream = delete.getResponseCode() < 400 ? delete.getInputStream() : delete.getErrorStream()) { JsonObject jsonObject = toJsonInput(inputStream); if (jsonObject.get("success").getAsBoolean()) { System.out.println(prefix + " DNSRecord [" + postResponse.getId() + "] was removed"); - } + } else + throw new CloudFlareDNSRecordException("Failed to delete DNSRecord \n " + jsonObject.toString()); } delete.disconnect(); @@ -302,12 +303,11 @@ private JsonObject toJsonInput(InputStream inputStream) StringBuilder stringBuilder = new StringBuilder(); String input; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + try { - while ((input = bufferedReader.readLine()) != null) - { - stringBuilder.append(input); - } + while ((input = bufferedReader.readLine()) != null) stringBuilder.append(input); + } catch (IOException e) { e.printStackTrace(); diff --git a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/exception/CloudFlareDNSRecordException.java b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/exception/CloudFlareDNSRecordException.java index d92046abb..8d4d395e7 100644 --- a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/exception/CloudFlareDNSRecordException.java +++ b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/exception/CloudFlareDNSRecordException.java @@ -18,4 +18,9 @@ public CloudFlareDNSRecordException(String message) { super(message); } + + public CloudFlareDNSRecordException(String message, Throwable cause) + { + super(message, cause); + } } From 064a87b06c0c8417a86cdac9d6cc40ee92405f1b Mon Sep 17 00:00:00 2001 From: Tarek Date: Thu, 28 Feb 2019 21:39:28 +0100 Subject: [PATCH 09/53] removed while loop --- .../cloudflare/CloudFlareService.java | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java index 0155f4304..3ff9ecef1 100644 --- a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java +++ b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java @@ -183,17 +183,15 @@ public void removeProxy(ProxyProcessMeta proxyServer, CloudFlareDatabase cloudFl { //if (!bungeeSRVRecords.containsKey(proxyServer.getServiceId().getServerId())) return; - while (true) - { - Collection> postResponses = CollectionWrapper.filterMany(bungeeSRVRecords.values(), new Acceptable>() { - @Override - public boolean isAccepted(MultiValue postResponseStringMultiValue) - { - return postResponseStringMultiValue.getSecond().equalsIgnoreCase(proxyServer.getServiceId().getServerId()); - } - }); + Collection> postResponses = CollectionWrapper.filterMany(bungeeSRVRecords.values(), new Acceptable>() { + @Override + public boolean isAccepted(MultiValue postResponseStringMultiValue) + { + return postResponseStringMultiValue.getSecond().equalsIgnoreCase(proxyServer.getServiceId().getServerId()); + } + }); - //MultiValue postResponse = bungeeSRVRecords.get(proxyServer.getServiceId().getServerId()); + //MultiValue postResponse = bungeeSRVRecords.get(proxyServer.getServiceId().getServerId()); /* if (postResponse != null) { @@ -202,16 +200,15 @@ public boolean isAccepted(MultiValue postResponseStringMul } else break; */ - for (MultiValue postResponse : postResponses) - if (postResponse != null) - { - bungeeSRVRecords.remove(postResponse.getSecond()); - cloudFlareDatabase.remove(postResponse.getFirst().getId()); - deleteRecord(postResponse.getFirst()); + for (MultiValue postResponse : postResponses) + if (postResponse != null) + { + bungeeSRVRecords.remove(postResponse.getSecond()); + cloudFlareDatabase.remove(postResponse.getFirst().getId()); + deleteRecord(postResponse.getFirst()); - NetworkUtils.sleepUninterruptedly(500); - } else break; - } + NetworkUtils.sleepUninterruptedly(500); + } } /** From ccbde76144454ad8ea25a7bbd12116e86ed98e8e Mon Sep 17 00:00:00 2001 From: byRoadrunner Date: Fri, 1 Mar 2019 15:08:18 +0100 Subject: [PATCH 10/53] Update README.md Removed Codacy Badge --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 33844c6e0..fa494b68b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/799a64c742ba47a2818936fcf6a25800)](https://app.codacy.com/app/byRoadrunner/CloudNet?utm_source=github.com&utm_medium=referral&utm_content=CloudNetService/CloudNet&utm_campaign=badger) [![Build Status](https://ci.cloudnetservice.eu/buildStatus/icon?job=CloudNetService/CloudNet/master)](https://ci.cloudnetservice.eu/job/CloudNetService/job/CloudNet/master) [![star this repo](http://githubbadges.com/star.svg?user=CloudNetService&repo=CloudNet)](https://github.com/CloudNetService/CloudNet) [![fork this repo](http://githubbadges.com/fork.svg?user=CloudNetService&repo=CloudNet)](https://github.com/CloudNetService/CloudNet/fork) From d399e1328e0ccbdaa61135622751bd676b144140 Mon Sep 17 00:00:00 2001 From: byRoadrunner Date: Fri, 1 Mar 2019 15:11:37 +0100 Subject: [PATCH 11/53] Changed Vault Repo Added a temporary fix for the offline Vault repo --- cloudnet-api/cloudnet-api-bridge/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/pom.xml b/cloudnet-api/cloudnet-api-bridge/pom.xml index 2595274bb..72ed193d5 100644 --- a/cloudnet-api/cloudnet-api-bridge/pom.xml +++ b/cloudnet-api/cloudnet-api-bridge/pom.xml @@ -15,8 +15,8 @@ - vault-repo - http://nexus.hc.to/content/repositories/pub_releases + jitpack.io + https://jitpack.io From a9f3cade0f29d18685cb32c60af704c90ae6e375 Mon Sep 17 00:00:00 2001 From: Marvin Date: Fri, 1 Mar 2019 15:17:36 +0100 Subject: [PATCH 12/53] Bump Vault-API version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 378801619..ec9adfab1 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ 1.23 1.8-1.12 1.8.8 - 1.6 + 1.7 0.6.1 4.12 From 06a46cb822f4678e88c54697b7bab4cf4da31e2c Mon Sep 17 00:00:00 2001 From: byRoadrunner Date: Fri, 1 Mar 2019 15:32:12 +0100 Subject: [PATCH 13/53] Fixed groupId of Vault --- cloudnet-api/cloudnet-api-bridge/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudnet-api/cloudnet-api-bridge/pom.xml b/cloudnet-api/cloudnet-api-bridge/pom.xml index 72ed193d5..ac5483e42 100644 --- a/cloudnet-api/cloudnet-api-bridge/pom.xml +++ b/cloudnet-api/cloudnet-api-bridge/pom.xml @@ -28,7 +28,7 @@ compile - net.milkbowl.vault + com.github.MilkBowl VaultAPI ${dependency.vaultapi.version} provided From 1811c30c5ac0ff4cf243ac7973e4db3bc8c720d9 Mon Sep 17 00:00:00 2001 From: Tarek Date: Fri, 1 Mar 2019 19:03:23 +0100 Subject: [PATCH 14/53] finally fixed cloudflare bug --- .../de/dytanic/cloudnet/cloudflare/CloudFlareService.java | 5 ++++- .../dytanic/cloudnetcore/cloudflare/CloudFlareModule.java | 7 +++---- .../cloudnetcore/cloudflare/listener/ProxyAddListener.java | 2 +- .../cloudflare/listener/ProxyRemoveListener.java | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java index 3ff9ecef1..0fce47a9e 100644 --- a/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java +++ b/cloudnet-cord/cloudnet-cloudflare/src/main/java/de/dytanic/cloudnet/cloudflare/CloudFlareService.java @@ -105,6 +105,8 @@ public boolean shutdown(CloudFlareDatabase cloudFlareDatabase) for (MultiValue id : cloudFlareDatabase.getAndRemove().values()) { + if (id.getFirst() == null) continue; + this.deleteRecord(id.getFirst()); NetworkUtils.sleepUninterruptedly(500); } @@ -169,6 +171,7 @@ public void addProxy(ProxyProcessMeta proxyServer, CloudFlareDatabase cloudFlare PostResponse postResponse = this.createRecord(cloudFlareConfig, srvRecord); cloudFlareDatabase.add(postResponse); this.bungeeSRVRecords.put(postResponse.getId(), new MultiValue<>(postResponse, proxyServer.getServiceId().getServerId())); + NetworkUtils.sleepUninterruptedly(500); } } } @@ -283,7 +286,7 @@ public void deleteRecord(PostResponse postResponse) JsonObject jsonObject = toJsonInput(inputStream); if (jsonObject.get("success").getAsBoolean()) { - System.out.println(prefix + " DNSRecord [" + postResponse.getId() + "] was removed"); + System.out.println(prefix + "DNSRecord [" + postResponse.getId() + "] was removed"); } else throw new CloudFlareDNSRecordException("Failed to delete DNSRecord \n " + jsonObject.toString()); } diff --git a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/CloudFlareModule.java b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/CloudFlareModule.java index fdc4edf3d..356c252d9 100644 --- a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/CloudFlareModule.java +++ b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/CloudFlareModule.java @@ -31,7 +31,7 @@ public class CloudFlareModule extends CoreModule { private ConfigCloudFlare configCloudFlare; - private final ExecutorService executor = Executors.newFixedThreadPool(1); + private final ExecutorService executor = Executors.newSingleThreadExecutor(); private CloudFlareDatabase cloudFlareDatabase; @@ -77,13 +77,12 @@ public SimpledWrapperInfo doCatch(Wrapper key) public void onShutdown() { - executor.shutdown(); + executor.shutdownNow(); try { - executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); CloudFlareService.getInstance().shutdown(cloudFlareDatabase); - } catch (Exception ex) + } catch (Exception ignored) { } } diff --git a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyAddListener.java b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyAddListener.java index 98aae6698..ab2470fbf 100644 --- a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyAddListener.java +++ b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyAddListener.java @@ -23,7 +23,7 @@ public void onCall(ProxyAddEvent event) public void run() { CloudFlareService.getInstance().addProxy(event.getProxyServer().getProcessMeta(), CloudFlareModule.getInstance().getCloudFlareDatabase()); - NetworkUtils.sleepUninterruptedly(400); + NetworkUtils.sleepUninterruptedly(500); } }); } diff --git a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyRemoveListener.java b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyRemoveListener.java index 0bd68a0fd..fc5ca726a 100644 --- a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyRemoveListener.java +++ b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/java/de/dytanic/cloudnetcore/cloudflare/listener/ProxyRemoveListener.java @@ -23,7 +23,7 @@ public void onCall(ProxyRemoveEvent event) public void run() { CloudFlareService.getInstance().removeProxy(event.getProxyServer().getProcessMeta(), CloudFlareModule.getInstance().getCloudFlareDatabase()); - NetworkUtils.sleepUninterruptedly(400); + NetworkUtils.sleepUninterruptedly(500); } }); } From 0e437e7baee5ef3ef4d57a6ca8f2ab10835030c9 Mon Sep 17 00:00:00 2001 From: Marvin Date: Fri, 1 Mar 2019 19:02:05 +0100 Subject: [PATCH 15/53] Exclude bukkit from VaultAPI dependency --- cloudnet-api/cloudnet-api-bridge/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cloudnet-api/cloudnet-api-bridge/pom.xml b/cloudnet-api/cloudnet-api-bridge/pom.xml index ac5483e42..ff1b39471 100644 --- a/cloudnet-api/cloudnet-api-bridge/pom.xml +++ b/cloudnet-api/cloudnet-api-bridge/pom.xml @@ -32,6 +32,12 @@ VaultAPI ${dependency.vaultapi.version} provided + + + org.bukkit + bukkit + + From e5d184f03cb666f8c6ff8158ac002bb093ad699b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Fri, 1 Mar 2019 18:27:56 +0000 Subject: [PATCH 16/53] Bump snakeyaml from 1.23 to 1.24 Bumps [snakeyaml](https://bitbucket.org/asomov/snakeyaml) from 1.23 to 1.24. - [Commits](https://bitbucket.org/asomov/snakeyaml/commits) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ec9adfab1..49387cd22 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ 2.8.5 2.14.6 5.0.4 - 1.23 + 1.24 1.8-1.12 1.8.8 1.7 From 1e0299d8513d851e89f7214caeb18379efd99ad0 Mon Sep 17 00:00:00 2001 From: Marvin Date: Mon, 18 Feb 2019 22:53:49 +0100 Subject: [PATCH 17/53] Add logger to CloudAPI and initialize it in the bootstrap classes, add debug subcommand to /cloud and /cloudserver Signed-off-by: Marvin --- .../cloudnet/bridge/BukkitBootstrap.java | 384 +++++++++--------- .../cloudnet/bridge/ProxiedBootstrap.java | 3 +- .../command/bukkit/CommandCloudServer.java | 15 +- .../command/proxied/CommandCloud.java | 11 +- .../de/dytanic/cloudnet/api/CloudAPI.java | 27 ++ 5 files changed, 244 insertions(+), 196 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/BukkitBootstrap.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/BukkitBootstrap.java index 7f0a9eccd..4fd233d7a 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/BukkitBootstrap.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/BukkitBootstrap.java @@ -1,191 +1,193 @@ -/* - * Copyright (c) Tarek Hosni El Alaoui 2017 - */ - -package de.dytanic.cloudnet.bridge; - -import de.dytanic.cloudnet.api.CloudAPI; -import de.dytanic.cloudnet.api.config.CloudConfigLoader; -import de.dytanic.cloudnet.api.config.ConfigTypeLoader; -import de.dytanic.cloudnet.bridge.event.bukkit.BukkitCloudServerInitEvent; -import de.dytanic.cloudnet.bridge.internal.command.bukkit.CommandCloudServer; -import de.dytanic.cloudnet.bridge.internal.command.bukkit.CommandResource; -import de.dytanic.cloudnet.bridge.internal.listener.bukkit.BukkitListener; -import de.dytanic.cloudnet.bridge.internal.serverselectors.MobSelector; -import de.dytanic.cloudnet.bridge.internal.serverselectors.SignSelector; -import de.dytanic.cloudnet.bridge.internal.serverselectors.packet.in.PacketInMobSelector; -import de.dytanic.cloudnet.bridge.internal.serverselectors.packet.in.PacketInSignSelector; -import de.dytanic.cloudnet.lib.network.protocol.packet.PacketRC; -import de.dytanic.cloudnet.lib.server.ServerGroupMode; -import org.bukkit.Bukkit; -import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.event.server.ServerListPingEvent; -import org.bukkit.plugin.java.JavaPlugin; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.net.InetSocketAddress; -import java.nio.file.Paths; - -/** - * Created by Tareko on 17.08.2017. - */ -public final class BukkitBootstrap extends JavaPlugin implements Runnable { - - @Override - public void onLoad() - { - CloudAPI cloudAPI = new CloudAPI(new CloudConfigLoader(Paths.get("CLOUD/connection.json"), Paths.get("CLOUD/config.json"), ConfigTypeLoader.INTERNAL), this); - cloudAPI.getNetworkConnection().getPacketManager().registerHandler(PacketRC.SERVER_SELECTORS + 1, PacketInSignSelector.class); - cloudAPI.getNetworkConnection().getPacketManager().registerHandler(PacketRC.SERVER_SELECTORS + 2, PacketInMobSelector.class); - } - - @Override - public void onEnable() - { - new CloudServer(this, CloudAPI.getInstance()); - - CloudAPI.getInstance().bootstrap(); - checkRegistryAccess(); - - try - { - Field field = Class.forName("org.spigotmc.AsyncCatcher").getDeclaredField("enabled"); - field.setAccessible(true); - field.set(null, false); - } catch (Exception ex) - { - } - - getServer().getPluginManager().registerEvents(new BukkitListener(), this); - - CloudServer.getInstance().registerCommand(new CommandResource()); - getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); - getServer().getMessenger().registerOutgoingPluginChannel(this, "cloudnet:main"); - - enableTasks(); - loadPlayers(); - } - - @Override - public void onDisable() - { - - getServer().getMessenger().unregisterOutgoingPluginChannel(this); - - if (CloudAPI.getInstance() != null) - { - CloudServer.getInstance().updateDisable(); - CloudAPI.getInstance().shutdown(); - } - - CloudAPI.getInstance().getNetworkHandlerProvider().clear(); - - if (SignSelector.getInstance() != null && SignSelector.getInstance().getWorker() != null) - SignSelector.getInstance().getWorker().stop(); - - if (MobSelector.getInstance() != null) - MobSelector.getInstance().shutdown(); - - Bukkit.getScheduler().cancelTasks(this); - } - - @Deprecated - @Override - public void run() - { - getServer().getPluginManager().disablePlugin(this); - Bukkit.shutdown(); - } - - private void checkRegistryAccess() - { - try - { - Class.forName("net.md_5.bungee.api.chat.BaseComponent"); - Class.forName("de.dytanic.cloudnet.bridge.internal.chat.DocumentRegistry").getMethod("fire").invoke(null); - } catch (Exception ignored) - { - } - } - - private void loadPlayers() - { - for (Player all : getServer().getOnlinePlayers()) - CloudServer.getInstance().getPlayerAndCache(all.getUniqueId()); - } - - private void enableTasks() - { - Bukkit.getScheduler().runTask(this, new Runnable() { - @Override - public void run() - { - if (CloudServer.getInstance().getGroupData() != null) - { - if (CloudAPI.getInstance().getServerGroupData(CloudAPI.getInstance().getGroup()).getMode().equals(ServerGroupMode.LOBBY) || - CloudAPI.getInstance().getServerGroupData(CloudAPI.getInstance().getGroup()).getMode().equals(ServerGroupMode.STATIC_LOBBY)) - { - CommandCloudServer server = new CommandCloudServer(); - - getCommand("cloudserver").setExecutor(server); - getCommand("cloudserver").setPermission("cloudnet.command.cloudserver"); - getCommand("cloudserver").setTabCompleter(server); - } - - Bukkit.getPluginManager().callEvent(new BukkitCloudServerInitEvent(CloudServer.getInstance())); - CloudServer.getInstance().update(); - - if (CloudAPI.getInstance().getServerGroupData(CloudAPI.getInstance().getGroup()).getAdvancedServerConfig().isDisableAutoSavingForWorlds()) - for (World world : Bukkit.getWorlds()) - world.setAutoSave(false); - } - - if (CloudServer.getInstance().getGroupData() != null) - { - getServer().getScheduler().runTaskTimer(BukkitBootstrap.this, new Runnable() { - @Override - public void run() - { - try - { - ServerListPingEvent serverListPingEvent = new ServerListPingEvent( - new InetSocketAddress("127.0.0.1", 53345).getAddress(), - CloudServer.getInstance().getMotd(), Bukkit.getOnlinePlayers().size(), CloudServer.getInstance().getMaxPlayers() - ); - Bukkit.getPluginManager().callEvent(serverListPingEvent); - if (!serverListPingEvent.getMotd().equals(CloudServer.getInstance().getMotd())) - { - CloudServer.getInstance().setMotd(serverListPingEvent.getMotd()); - if (serverListPingEvent.getMotd().toLowerCase().contains("running") || serverListPingEvent.getMotd().toLowerCase().contains("ingame")) - { - CloudServer.getInstance().changeToIngame(); - } - } - - if (serverListPingEvent.getMaxPlayers() != CloudServer.getInstance().getMaxPlayers()) - { - CloudServer.getInstance().setMaxPlayers(serverListPingEvent.getMaxPlayers()); - } - } catch (Exception ex) - { - } - } - }, 0, 5); - } - - if (CloudAPI.getInstance().getPermissionPool() != null && - (getServer().getPluginManager().isPluginEnabled("VaultAPI") || getServer().getPluginManager().isPluginEnabled("Vault"))) - try - { - Class.forName("de.dytanic.cloudnet.bridge.vault.VaultInvoker").getMethod("invoke").invoke(null); - } catch (IllegalAccessException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException e) - { - e.printStackTrace(); - } - } - }); - } - -} +/* + * Copyright (c) Tarek Hosni El Alaoui 2017 + */ + +package de.dytanic.cloudnet.bridge; + +import de.dytanic.cloudnet.api.CloudAPI; +import de.dytanic.cloudnet.api.config.CloudConfigLoader; +import de.dytanic.cloudnet.api.config.ConfigTypeLoader; +import de.dytanic.cloudnet.bridge.event.bukkit.BukkitCloudServerInitEvent; +import de.dytanic.cloudnet.bridge.internal.command.bukkit.CommandCloudServer; +import de.dytanic.cloudnet.bridge.internal.command.bukkit.CommandResource; +import de.dytanic.cloudnet.bridge.internal.listener.bukkit.BukkitListener; +import de.dytanic.cloudnet.bridge.internal.serverselectors.MobSelector; +import de.dytanic.cloudnet.bridge.internal.serverselectors.SignSelector; +import de.dytanic.cloudnet.bridge.internal.serverselectors.packet.in.PacketInMobSelector; +import de.dytanic.cloudnet.bridge.internal.serverselectors.packet.in.PacketInSignSelector; +import de.dytanic.cloudnet.lib.network.protocol.packet.PacketRC; +import de.dytanic.cloudnet.lib.server.ServerGroupMode; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.event.server.ServerListPingEvent; +import org.bukkit.plugin.java.JavaPlugin; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.net.InetSocketAddress; +import java.nio.file.Paths; + +/** + * Created by Tareko on 17.08.2017. + */ +public final class BukkitBootstrap extends JavaPlugin implements Runnable { + + @Override + public void onLoad() + { + CloudAPI cloudAPI = new CloudAPI(new CloudConfigLoader(Paths.get("CLOUD/connection.json"), Paths.get("CLOUD/config.json"), ConfigTypeLoader.INTERNAL), this); + cloudAPI.getNetworkConnection().getPacketManager().registerHandler(PacketRC.SERVER_SELECTORS + 1, PacketInSignSelector.class); + cloudAPI.getNetworkConnection().getPacketManager().registerHandler(PacketRC.SERVER_SELECTORS + 2, PacketInMobSelector.class); + + cloudAPI.setLogger(getLogger()); + } + + @Override + public void onEnable() + { + new CloudServer(this, CloudAPI.getInstance()); + + CloudAPI.getInstance().bootstrap(); + checkRegistryAccess(); + + try + { + Field field = Class.forName("org.spigotmc.AsyncCatcher").getDeclaredField("enabled"); + field.setAccessible(true); + field.set(null, false); + } catch (Exception ex) + { + } + + getServer().getPluginManager().registerEvents(new BukkitListener(), this); + + CloudServer.getInstance().registerCommand(new CommandResource()); + getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); + getServer().getMessenger().registerOutgoingPluginChannel(this, "cloudnet:main"); + + enableTasks(); + loadPlayers(); + } + + @Override + public void onDisable() + { + + getServer().getMessenger().unregisterOutgoingPluginChannel(this); + + if (CloudAPI.getInstance() != null) + { + CloudServer.getInstance().updateDisable(); + CloudAPI.getInstance().shutdown(); + } + + CloudAPI.getInstance().getNetworkHandlerProvider().clear(); + + if (SignSelector.getInstance() != null && SignSelector.getInstance().getWorker() != null) + SignSelector.getInstance().getWorker().stop(); + + if (MobSelector.getInstance() != null) + MobSelector.getInstance().shutdown(); + + Bukkit.getScheduler().cancelTasks(this); + } + + @Deprecated + @Override + public void run() + { + getServer().getPluginManager().disablePlugin(this); + Bukkit.shutdown(); + } + + private void checkRegistryAccess() + { + try + { + Class.forName("net.md_5.bungee.api.chat.BaseComponent"); + Class.forName("de.dytanic.cloudnet.bridge.internal.chat.DocumentRegistry").getMethod("fire").invoke(null); + } catch (Exception ignored) + { + } + } + + private void loadPlayers() + { + for (Player all : getServer().getOnlinePlayers()) + CloudServer.getInstance().getPlayerAndCache(all.getUniqueId()); + } + + private void enableTasks() + { + Bukkit.getScheduler().runTask(this, new Runnable() { + @Override + public void run() + { + if (CloudServer.getInstance().getGroupData() != null) + { + if (CloudAPI.getInstance().getServerGroupData(CloudAPI.getInstance().getGroup()).getMode().equals(ServerGroupMode.LOBBY) || + CloudAPI.getInstance().getServerGroupData(CloudAPI.getInstance().getGroup()).getMode().equals(ServerGroupMode.STATIC_LOBBY)) + { + CommandCloudServer server = new CommandCloudServer(); + + getCommand("cloudserver").setExecutor(server); + getCommand("cloudserver").setPermission("cloudnet.command.cloudserver"); + getCommand("cloudserver").setTabCompleter(server); + } + + Bukkit.getPluginManager().callEvent(new BukkitCloudServerInitEvent(CloudServer.getInstance())); + CloudServer.getInstance().update(); + + if (CloudAPI.getInstance().getServerGroupData(CloudAPI.getInstance().getGroup()).getAdvancedServerConfig().isDisableAutoSavingForWorlds()) + for (World world : Bukkit.getWorlds()) + world.setAutoSave(false); + } + + if (CloudServer.getInstance().getGroupData() != null) + { + getServer().getScheduler().runTaskTimer(BukkitBootstrap.this, new Runnable() { + @Override + public void run() + { + try + { + ServerListPingEvent serverListPingEvent = new ServerListPingEvent( + new InetSocketAddress("127.0.0.1", 53345).getAddress(), + CloudServer.getInstance().getMotd(), Bukkit.getOnlinePlayers().size(), CloudServer.getInstance().getMaxPlayers() + ); + Bukkit.getPluginManager().callEvent(serverListPingEvent); + if (!serverListPingEvent.getMotd().equals(CloudServer.getInstance().getMotd())) + { + CloudServer.getInstance().setMotd(serverListPingEvent.getMotd()); + if (serverListPingEvent.getMotd().toLowerCase().contains("running") || serverListPingEvent.getMotd().toLowerCase().contains("ingame")) + { + CloudServer.getInstance().changeToIngame(); + } + } + + if (serverListPingEvent.getMaxPlayers() != CloudServer.getInstance().getMaxPlayers()) + { + CloudServer.getInstance().setMaxPlayers(serverListPingEvent.getMaxPlayers()); + } + } catch (Exception ex) + { + } + } + }, 0, 5); + } + + if (CloudAPI.getInstance().getPermissionPool() != null && + (getServer().getPluginManager().isPluginEnabled("VaultAPI") || getServer().getPluginManager().isPluginEnabled("Vault"))) + try + { + Class.forName("de.dytanic.cloudnet.bridge.vault.VaultInvoker").getMethod("invoke").invoke(null); + } catch (IllegalAccessException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException e) + { + e.printStackTrace(); + } + } + }); + } + +} diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/ProxiedBootstrap.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/ProxiedBootstrap.java index 0546c2a4d..2c7ed836a 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/ProxiedBootstrap.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/ProxiedBootstrap.java @@ -37,6 +37,7 @@ public void run() getProxy().stop("CloudNet-Stop!"); } }); + CloudAPI.getInstance().setLogger(getLogger()); } @Override @@ -97,4 +98,4 @@ public void onDisable() if (CloudAPI.getInstance() != null) CloudAPI.getInstance().shutdown(); } -} \ No newline at end of file +} diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java index bec70a44c..b5f448972 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java @@ -186,7 +186,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock((Set) null, 15); + Block block = player.getTargetBlock(null, 15); if (block.getState() instanceof org.bukkit.block.Sign) if (!SignSelector.getInstance().containsPosition(block.getLocation())) { @@ -248,7 +248,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock((Set) null, 15); + Block block = player.getTargetBlock(null, 15); if (block.getState() instanceof org.bukkit.block.Sign) { if (SignSelector.getInstance().containsPosition(block.getLocation())) @@ -294,6 +294,14 @@ public void run(MobSelector.MobImpl obj) commandSender.sendMessage("- " + entityType.name()); } } + if (args[0].equalsIgnoreCase("debug")) { + CloudAPI.getInstance().setDebug(!CloudAPI.getInstance().isDebug()); + if(CloudAPI.getInstance().isDebug()) { + commandSender.sendMessage("§aDebug output for server has been enabled."); + } else { + commandSender.sendMessage("§cDebug output for server has been disabled."); + } + } break; case 3: if (args[0].equalsIgnoreCase("setItem")) @@ -339,6 +347,7 @@ public boolean isAccepted(MobSelector.MobImpl value) commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs setItem "); commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs editMobLine "); } + commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs debug"); break; } @@ -350,4 +359,4 @@ public List onTabComplete(CommandSender commandSender, Command command, { return new LinkedList<>(CloudAPI.getInstance().getServerGroupMap().keySet()); } -} \ No newline at end of file +} diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java index 777aa78c6..e2a517a4d 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java @@ -210,6 +210,14 @@ public void execute(CommandSender commandSender, String[] args) commandSender.sendMessage(builder.substring(0)); return; } + if (args[0].equalsIgnoreCase("debug")) { + CloudAPI.getInstance().setDebug(!CloudAPI.getInstance().isDebug()); + if(CloudAPI.getInstance().isDebug()) { + commandSender.sendMessage("§aDebug output for proxy has been enabled."); + } else { + commandSender.sendMessage("§cDebug output for proxy has been disabled."); + } + } break; case 2: if (args[0].equalsIgnoreCase("toggle")) @@ -570,6 +578,7 @@ public boolean isAccepted(Template value) CloudAPI.getInstance().getPrefix() + "§7/cloud copy ", CloudAPI.getInstance().getPrefix() + "§7/cloud version", CloudAPI.getInstance().getPrefix() + "§7/cloud statistics", + CloudAPI.getInstance().getPrefix() + "§7/cloud debug", NetworkUtils.SPACE_STRING ); break; @@ -601,7 +610,7 @@ public Iterable onTabComplete(CommandSender commandSender, String[] args tabCompletes = ImmutableList .of("toggle", "setMaxPlayers", "whitelist", "start", "startcs", "cmds", "cmdp", "stop", "stopGroup" , "ustopGroup", "listProxys", "listOnline", "listServers", "log", "listGroups", "rl", "list" - , "maintenance", "copy", "version", "statistics"); + , "maintenance", "copy", "version", "statistics", "debug"); break; } case 2: diff --git a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java index 0fe50c499..6fd469052 100644 --- a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java +++ b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java @@ -40,6 +40,8 @@ import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Level; +import java.util.logging.Logger; public final class CloudAPI implements MetaObj { @@ -60,6 +62,12 @@ public final class CloudAPI implements MetaObj { private NetworkHandlerProvider networkHandlerProvider = new NetworkHandlerProvider(); private DatabaseManager databaseManager = new DatabaseManager(); + /** + * Logger instance set by the respective bootstrap. + * Don't use in constructor! + */ + private Logger logger; + public CloudAPI(CloudConfigLoader loader, Runnable cancelTask) { instance = this; @@ -1225,4 +1233,23 @@ private CloudPlayer checkAndGet(String name) return cloudService != null ? cloudService.getCachedPlayer(name) : null; } + public Logger getLogger() { + return logger; + } + + public void setLogger(Logger logger) { + this.logger = logger; + } + + public boolean isDebug() { + return logger.isLoggable(Level.FINEST); + } + + public void setDebug(boolean debug) { + if (debug) { + logger.setLevel(Level.ALL); + } else { + logger.setLevel(Level.INFO); + } + } } From a85f0a6f1d1df412707b8f6fe72bc7a04eb24456 Mon Sep 17 00:00:00 2001 From: Marvin Date: Mon, 18 Feb 2019 23:32:55 +0100 Subject: [PATCH 18/53] Add debug output and rewrite parts of VaultPermissionImpl.java (fix groupHas) Signed-off-by: Marvin --- .../internal/util/CloudPermissible.java | 8 +- .../bridge/vault/VaultPermissionImpl.java | 162 +++++++----------- 2 files changed, 70 insertions(+), 100 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java index 51ec83677..33a931658 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java @@ -96,9 +96,11 @@ public boolean hasPermission(String inName) if (inName.equalsIgnoreCase("bukkit.broadcast.user")) return true; CloudPlayer cloudPlayer = CloudServer.getInstance().getCloudPlayers().get(this.uniqueId); - if (cloudPlayer != null) - return cloudPlayer.getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), inName, CloudAPI.getInstance().getGroup()); - else + if (cloudPlayer != null) { + boolean hasPermission = cloudPlayer.getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), inName, CloudAPI.getInstance().getGroup()); + CloudAPI.getInstance().getLogger().finest(cloudPlayer.getName() + " hasPermission \"" + inName + "\": " + hasPermission); + return hasPermission; + } else return false; } diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java index 259fe43c8..9d13b8663 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java @@ -6,189 +6,157 @@ import de.dytanic.cloudnet.lib.player.permission.GroupEntityData; import de.dytanic.cloudnet.lib.player.permission.PermissionEntity; import de.dytanic.cloudnet.lib.player.permission.PermissionGroup; -import de.dytanic.cloudnet.lib.utility.Acceptable; -import de.dytanic.cloudnet.lib.utility.CollectionWrapper; +import lombok.val; import net.milkbowl.vault.permission.Permission; +import java.util.Optional; + /** * Created by Tareko on 25.11.2017. */ public class VaultPermissionImpl extends Permission { @Override - public String getName() - { + public String getName() { return "CloudNet-Permission"; } @Override - public boolean isEnabled() - { + public boolean isEnabled() { return CloudAPI.getInstance().getPermissionPool() != null; } @Override - public boolean hasSuperPermsCompat() - { + public boolean hasSuperPermsCompat() { return true; } @Override - public boolean playerHas(String s, String s1, String s2) - { - PermissionEntity permissionEntity = getPlayer(s1).getPermissionEntity(); - return permissionEntity.hasPermission(CloudAPI.getInstance().getPermissionPool(), s2, null); + public boolean playerHas(String world, String player, String permission) { + val offlinePlayer = getPlayer(player); + PermissionEntity permissionEntity = offlinePlayer.getPermissionEntity(); + val hasPermission = permissionEntity.hasPermission(CloudAPI.getInstance().getPermissionPool(), permission, null); + CloudAPI.getInstance().getLogger().finest(player + " hasPermission \"" + permission + "\": " + hasPermission); + return hasPermission; } @Override - public boolean playerAdd(String s, String s1, String s2) - { - OfflinePlayer offlinePlayer = getPlayer(s1); + public boolean playerAdd(String world, String player, String permission) { + OfflinePlayer offlinePlayer = getPlayer(player); PermissionEntity permissionEntity = offlinePlayer.getPermissionEntity(); - permissionEntity.getPermissions().put(s2, true); + permissionEntity.getPermissions().put(permission, true); offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); + CloudAPI.getInstance().getLogger().finest(player + " added permission \"" + permission + "\""); return true; } @Override - public boolean playerRemove(String s, String s1, String s2) - { - OfflinePlayer offlinePlayer = getPlayer(s1); + public boolean playerRemove(String world, String player, String permission) { + OfflinePlayer offlinePlayer = getPlayer(player); PermissionEntity permissionEntity = offlinePlayer.getPermissionEntity(); - permissionEntity.getPermissions().remove(s2); + permissionEntity.getPermissions().remove(permission); offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); + CloudAPI.getInstance().getLogger().finest(player + " removed permission \"" + permission + "\""); return true; } @Override - public boolean groupHas(String s, String s1, String s2) - { - OfflinePlayer offlinePlayer = getPlayer(s1); - PermissionEntity permissionEntity = offlinePlayer.getPermissionEntity(); - return permissionEntity.isInGroup(s2); + public boolean groupHas(String world, String group, String permission) { + PermissionGroup permissionGroup = CloudAPI.getInstance().getPermissionGroup(group); + return permissionGroup.getPermissions().getOrDefault(permission, false); } @Override - public boolean groupAdd(String s, String s1, String s2) - { - PermissionGroup permissionGroup = CloudAPI.getInstance().getPermissionGroup(s1); - permissionGroup.getPermissions().put(s2, true); + public boolean groupAdd(String world, String group, String permission) { + PermissionGroup permissionGroup = CloudAPI.getInstance().getPermissionGroup(group); + permissionGroup.getPermissions().put(permission, true); CloudAPI.getInstance().updatePermissionGroup(permissionGroup); + CloudAPI.getInstance().getLogger().finest(group + " added permission \"" + permission + "\""); return true; } @Override - public boolean groupRemove(String s, String s1, String s2) - { - PermissionGroup permissionGroup = CloudAPI.getInstance().getPermissionGroup(s1); - permissionGroup.getPermissions().remove(s2); + public boolean groupRemove(String world, String group, String permission) { + PermissionGroup permissionGroup = CloudAPI.getInstance().getPermissionGroup(group); + permissionGroup.getPermissions().remove(permission); CloudAPI.getInstance().updatePermissionGroup(permissionGroup); + CloudAPI.getInstance().getLogger().finest(group + " removed permission \"" + permission + "\""); return true; } @Override - public boolean playerInGroup(String s, String s1, String s2) - { - OfflinePlayer offlinePlayer = getPlayer(s1); + public boolean playerInGroup(String world, String player, String group) { + OfflinePlayer offlinePlayer = getPlayer(player); PermissionEntity permissionEntity = offlinePlayer.getPermissionEntity(); - return permissionEntity.isInGroup(s2); + return permissionEntity.isInGroup(group); } @Override - public boolean playerAddGroup(String s, String s1, String s2) - { - OfflinePlayer offlinePlayer = getPlayer(s1); + public boolean playerAddGroup(String world, String player, String group) { + OfflinePlayer offlinePlayer = getPlayer(player); PermissionEntity permissionEntity = offlinePlayer.getPermissionEntity(); - GroupEntityData groupEntityData = CollectionWrapper.filter(permissionEntity.getGroups(), new Acceptable() { - @Override - public boolean isAccepted(GroupEntityData groupEntityData) - { - return groupEntityData.getGroup().equalsIgnoreCase(s2); - } - }); - - if (groupEntityData != null) - { - permissionEntity.getGroups().remove(groupEntityData); - groupEntityData = new GroupEntityData(groupEntityData.getGroup(), 0); - } else - { - groupEntityData = new GroupEntityData(groupEntityData.getGroup(), 0); - } - - permissionEntity.getGroups().add(groupEntityData); + Optional groupEntityData = permissionEntity.getGroups().stream() + .filter(ged -> ged.getGroup().equalsIgnoreCase(group)) + .findFirst(); + groupEntityData.ifPresent(entityData -> permissionEntity.getGroups().remove(entityData)); + + permissionEntity.getGroups().add(new GroupEntityData(group, 0)); offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); + CloudAPI.getInstance().getLogger().finest(player + " added to group \"" + group + "\""); return true; } @Override - public boolean playerRemoveGroup(String s, String s1, String s2) - { - OfflinePlayer offlinePlayer = getPlayer(s1); + public boolean playerRemoveGroup(String world, String player, String group) { + OfflinePlayer offlinePlayer = getPlayer(player); PermissionEntity permissionEntity = offlinePlayer.getPermissionEntity(); + permissionEntity.getGroups().stream() + .filter(ged -> ged.getGroup().equalsIgnoreCase(group)) + .findFirst() + .ifPresent(ged -> { + permissionEntity.getGroups().remove(ged); + }); - GroupEntityData groupEntityData = CollectionWrapper.filter(permissionEntity.getGroups(), new Acceptable() { - @Override - public boolean isAccepted(GroupEntityData groupEntityData) - { - return groupEntityData.getGroup().equalsIgnoreCase(s2); - } - }); - - if (groupEntityData != null) permissionEntity.getGroups().remove(groupEntityData); offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); + CloudAPI.getInstance().getLogger().finest(player + " removed from group \"" + group + "\""); return true; } @Override - public String[] getPlayerGroups(String s, String s1) - { - PermissionEntity permissionEntity = getPlayer(s1).getPermissionEntity(); - String[] data = new String[permissionEntity.getGroups().size()]; - short i = 0; - for (GroupEntityData groupEntityData : permissionEntity.getGroups()) - { - data[i++] = groupEntityData.getGroup(); - } - return data; + public String[] getPlayerGroups(String world, String player) { + PermissionEntity permissionEntity = getPlayer(player).getPermissionEntity(); + return (String[]) permissionEntity.getGroups().stream() + .map(GroupEntityData::getGroup) + .toArray(); } @Override - public String getPrimaryGroup(String s, String s1) - { - return getPlayer(s1).getPermissionEntity().getHighestPermissionGroup( + public String getPrimaryGroup(String world, String player) { + return getPlayer(player).getPermissionEntity().getHighestPermissionGroup( CloudAPI.getInstance().getPermissionPool() ).getName(); } @Override - public String[] getGroups() - { - String[] groups = new String[CloudAPI.getInstance().getPermissionPool().getGroups().size()]; - int i = 0; - for (String group : CloudAPI.getInstance().getPermissionPool().getGroups().keySet()) groups[i++] = group; - - return groups; + public String[] getGroups() { + return (String[]) CloudAPI.getInstance().getPermissionPool().getGroups().keySet().toArray(); } @Override - public boolean hasGroupSupport() - { + public boolean hasGroupSupport() { return true; } - private void updatePlayer(OfflinePlayer offlinePlayer) - { + private void updatePlayer(OfflinePlayer offlinePlayer) { CloudAPI.getInstance().updatePlayer(offlinePlayer); } - private OfflinePlayer getPlayer(String name) - { + private OfflinePlayer getPlayer(String name) { OfflinePlayer offlinePlayer = CloudServer.getInstance().getCachedPlayer(name); if (offlinePlayer == null) @@ -197,4 +165,4 @@ private OfflinePlayer getPlayer(String name) return offlinePlayer; } -} \ No newline at end of file +} From 3c16425c72ae0150fcb6e75cba59c8359c300c7b Mon Sep 17 00:00:00 2001 From: Marvin Date: Tue, 19 Feb 2019 17:50:51 +0100 Subject: [PATCH 19/53] Add debug output to the ProxiedListener.java Signed-off-by: Marvin --- .../listener/proxied/ProxiedListener.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java index 47f1d8196..1edd90824 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java @@ -46,6 +46,7 @@ import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; +import java.util.logging.Level; /** * Created by Tareko on 18.08.2017. @@ -89,6 +90,12 @@ public void handleProxyPing(ProxyPingEvent event) @EventHandler public void handlePluginMessage(PluginMessageEvent e) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handlePluginMessage", + "Handling plugin message event: ", + e); if (e.getTag().equals("MC|BSign") || e.getTag().equals("MC|BEdit")) if (CloudProxy.getInstance().getProxyGroup() != null && CloudProxy.getInstance().getProxyGroup().getProxyConfig().getCustomPayloadFixer()) e.setCancelled(true); @@ -97,6 +104,12 @@ public void handlePluginMessage(PluginMessageEvent e) @EventHandler(priority = EventPriority.HIGHEST) public void handlePlayerServerSwitch(ServerSwitchEvent e) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handlePlayerServerSwitch", + "Handling server switch event: ", + e); CloudPlayer cloudPlayer = CloudProxy.getInstance().getCloudPlayers().get(e.getPlayer().getUniqueId()); cloudPlayer.setServer(e.getPlayer().getServer().getInfo().getName()); @@ -117,6 +130,12 @@ public void handlePlayerServerSwitch(ServerSwitchEvent e) @EventHandler(priority = EventPriority.LOWEST) public void handleLogin(LoginEvent e) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handleLogin", + "Handling login event: ", + e); PlayerConnection playerConnection = new PlayerConnection( e.getConnection().getUniqueId(), e.getConnection().getName(), e.getConnection().getVersion(), @@ -133,6 +152,7 @@ public void handleLogin(LoginEvent e) if (cloudPlayer == null) { + CloudAPI.getInstance().getLogger().finest("cloudPlayer is null!"); e.setCancelReason(TextComponent.fromLegacyText("§cUnverified login. Reason: §e" + (result.contains("reason") ? result.getString("reason") : "no reason defined"))); e.setCancelled(true); return; @@ -181,6 +201,12 @@ public void handleLogin(LoginEvent e) @EventHandler public void handlePost(PostLoginEvent e) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handlePost", + "Handling post login event: ", + e); CloudProxy.getInstance().update(); CloudAPI.getInstance().getNetworkConnection().sendPacket(new PacketOutLoginSuccess(e.getPlayer().getUniqueId())); @@ -284,7 +310,12 @@ public void run() @EventHandler(priority = EventPriority.HIGHEST) public void handleServerConnect(ServerConnectEvent event) { - + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handleServerConnect", + "Handling server connect event: ", + event); if (event.getPlayer().getServer() == null) { String fallback = CloudProxy.getInstance().fallback(event.getPlayer()); @@ -411,4 +442,4 @@ private void initTabHeaderFooter(ProxiedPlayer proxiedPlayer) ))); } -} \ No newline at end of file +} From 7e0664bf0a45407941f494853bae4075d62ea4e5 Mon Sep 17 00:00:00 2001 From: Marvin Date: Tue, 19 Feb 2019 18:07:41 +0100 Subject: [PATCH 20/53] Add debug output to BukkitListener.java Signed-off-by: Marvin --- .../listener/bukkit/BukkitListener.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java index 74075a7b3..65558bb9e 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java @@ -28,6 +28,7 @@ import java.util.HashSet; import java.util.UUID; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.logging.Level; /** * Created by Tareko on 17.08.2017. @@ -39,6 +40,12 @@ public final class BukkitListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void handle0(AsyncPlayerPreLoginEvent e) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handle0", + "Handling async player pre login event: ", + e); for (Player all : Bukkit.getOnlinePlayers()) if (all.getUniqueId().equals(e.getUniqueId())) { @@ -52,6 +59,12 @@ public void handle0(AsyncPlayerPreLoginEvent e) @EventHandler public void handle(BukkitSubChannelMessageEvent event) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handle", + "Handling bukkit sub channel message event: ", + event); if (event.getChannel().equalsIgnoreCase("cloudnet_internal") || event.getMessage().equalsIgnoreCase("server_connect_request")) { @@ -73,6 +86,12 @@ public void run() @EventHandler(priority = EventPriority.HIGHEST) public void handleLast(PlayerLoginEvent event) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handleLast", + "Handling player login event: ", + event); if (this.kicks.contains(event.getPlayer().getUniqueId())) { this.kicks.remove(event.getPlayer().getUniqueId()); @@ -84,6 +103,12 @@ public void handleLast(PlayerLoginEvent event) @EventHandler(priority = EventPriority.LOWEST) public void handleFirst(PlayerLoginEvent event) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "handleFirst", + "Handling player login event: ", + event); if (CloudServer.getInstance().getCloudPlayers().containsKey(event.getPlayer().getUniqueId()) && requests.contains(event.getPlayer().getUniqueId())) { requests.remove(event.getPlayer().getUniqueId()); From 9a034dec678aec53fcfc099b39e8f6d0ccf0e303 Mon Sep 17 00:00:00 2001 From: Marvin Date: Tue, 19 Feb 2019 19:13:09 +0100 Subject: [PATCH 21/53] Add @ToString annotations to classes that need it and add a bunch more debug output Signed-off-by: Marvin --- .../listener/bukkit/BukkitListener.java | 8 +- .../listener/proxied/ProxiedListener.java | 10 +- .../de/dytanic/cloudnet/api/CloudAPI.java | 120 ++++++++++++++++++ .../cloudnet/lib/network/WrapperInfo.java | 4 +- .../cloudnet/lib/server/ProxyGroup.java | 4 +- .../cloudnet/lib/server/ServerConfig.java | 4 +- .../cloudnet/lib/server/info/ProxyInfo.java | 4 +- .../cloudnet/lib/server/info/ServerInfo.java | 4 +- .../lib/server/template/Template.java | 4 +- 9 files changed, 147 insertions(+), 15 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java index 65558bb9e..6f9ec40e4 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java @@ -44,7 +44,7 @@ public void handle0(AsyncPlayerPreLoginEvent e) Level.FINEST, this.getClass().getSimpleName(), "handle0", - "Handling async player pre login event: ", + "Handling async player pre login event: %s", e); for (Player all : Bukkit.getOnlinePlayers()) if (all.getUniqueId().equals(e.getUniqueId())) @@ -63,7 +63,7 @@ public void handle(BukkitSubChannelMessageEvent event) Level.FINEST, this.getClass().getSimpleName(), "handle", - "Handling bukkit sub channel message event: ", + "Handling bukkit sub channel message event: %s", event); if (event.getChannel().equalsIgnoreCase("cloudnet_internal") || event.getMessage().equalsIgnoreCase("server_connect_request")) @@ -90,7 +90,7 @@ public void handleLast(PlayerLoginEvent event) Level.FINEST, this.getClass().getSimpleName(), "handleLast", - "Handling player login event: ", + "Handling player login event: %s", event); if (this.kicks.contains(event.getPlayer().getUniqueId())) { @@ -107,7 +107,7 @@ public void handleFirst(PlayerLoginEvent event) Level.FINEST, this.getClass().getSimpleName(), "handleFirst", - "Handling player login event: ", + "Handling player login event: %s", event); if (CloudServer.getInstance().getCloudPlayers().containsKey(event.getPlayer().getUniqueId()) && requests.contains(event.getPlayer().getUniqueId())) { diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java index 1edd90824..7f3368012 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java @@ -94,7 +94,7 @@ public void handlePluginMessage(PluginMessageEvent e) Level.FINEST, this.getClass().getSimpleName(), "handlePluginMessage", - "Handling plugin message event: ", + "Handling plugin message event: %s", e); if (e.getTag().equals("MC|BSign") || e.getTag().equals("MC|BEdit")) if (CloudProxy.getInstance().getProxyGroup() != null && CloudProxy.getInstance().getProxyGroup().getProxyConfig().getCustomPayloadFixer()) @@ -108,7 +108,7 @@ public void handlePlayerServerSwitch(ServerSwitchEvent e) Level.FINEST, this.getClass().getSimpleName(), "handlePlayerServerSwitch", - "Handling server switch event: ", + "Handling server switch event: %s", e); CloudPlayer cloudPlayer = CloudProxy.getInstance().getCloudPlayers().get(e.getPlayer().getUniqueId()); cloudPlayer.setServer(e.getPlayer().getServer().getInfo().getName()); @@ -134,7 +134,7 @@ public void handleLogin(LoginEvent e) Level.FINEST, this.getClass().getSimpleName(), "handleLogin", - "Handling login event: ", + "Handling login event: %s", e); PlayerConnection playerConnection = new PlayerConnection( e.getConnection().getUniqueId(), @@ -205,7 +205,7 @@ public void handlePost(PostLoginEvent e) Level.FINEST, this.getClass().getSimpleName(), "handlePost", - "Handling post login event: ", + "Handling post login event: %s", e); CloudProxy.getInstance().update(); CloudAPI.getInstance().getNetworkConnection().sendPacket(new PacketOutLoginSuccess(e.getPlayer().getUniqueId())); @@ -314,7 +314,7 @@ public void handleServerConnect(ServerConnectEvent event) Level.FINEST, this.getClass().getSimpleName(), "handleServerConnect", - "Handling server connect event: ", + "Handling server connect event: %s", event); if (event.getPlayer().getServer() == null) { diff --git a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java index 6fd469052..d63490d31 100644 --- a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java +++ b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java @@ -124,6 +124,12 @@ public void shutdown() public CloudAPI update(ServerInfo serverInfo) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "update", + "Updating server info: %s", + serverInfo); if (networkConnection.isConnected()) networkConnection.sendPacket(new PacketOutUpdateServerInfo(serverInfo)); return this; @@ -131,6 +137,12 @@ public CloudAPI update(ServerInfo serverInfo) public CloudAPI update(ProxyInfo proxyInfo) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "update", + "Updating proxy info: %s", + proxyInfo); if (networkConnection.isConnected()) networkConnection.sendPacket(new PacketOutUpdateProxyInfo(proxyInfo)); return this; @@ -439,6 +451,12 @@ public void updateServerGroup(ServerGroup serverGroup) */ public void updatePermissionGroup(PermissionGroup permissionGroup) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "updatePermissionGroup", + "Updating permission group: %s", + permissionGroup); networkConnection.sendPacket(new PacketOutUpdatePermissionGroup(permissionGroup)); } @@ -449,6 +467,12 @@ public void updatePermissionGroup(PermissionGroup permissionGroup) */ public void updateProxyGroup(ProxyGroup proxyGroup) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "updateProxyGroup", + "Updating proxy group: %s", + proxyGroup); networkConnection.sendPacket(new PacketOutUpdateProxyGroup(proxyGroup)); } @@ -457,6 +481,12 @@ public void updateProxyGroup(ProxyGroup proxyGroup) */ public void sendCloudCommand(String commandLine) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "sendCloudCommand", + "Sending cloud command: %s", + commandLine); networkConnection.sendPacket(new PacketOutExecuteCommand(commandLine)); } @@ -467,6 +497,12 @@ public void sendCloudCommand(String commandLine) */ public void dispatchConsoleMessage(String output) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "dispatchConsoleMessage", + "Dispatching console message: %s", + output); networkConnection.sendPacket(new PacketOutDispatchConsoleMessage(output)); } @@ -479,6 +515,12 @@ public void dispatchConsoleMessage(String output) */ public void sendConsoleMessage(DefaultType defaultType, String serverId, String commandLine) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "sendConsoleMessage", + "Sending console message: %s %s %s", + new Object[]{defaultType, serverId, commandLine}); networkConnection.sendPacket(new PacketOutServerDispatchCommand(defaultType, serverId, commandLine)); } @@ -499,6 +541,12 @@ public Map getProxyGroupMap() */ public void stopServer(String serverId) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "stopServer", + "Stopping server: %s", + serverId); networkConnection.sendPacket(new PacketOutStopServer(serverId)); } @@ -507,6 +555,12 @@ public void stopServer(String serverId) */ public void stopProxy(String proxyId) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "stopProxy", + "Stopping proxy: %s", + proxyId); networkConnection.sendPacket(new PacketOutStopProxy(proxyId)); } @@ -517,6 +571,12 @@ public void stopProxy(String proxyId) */ public String createServerLogUrl(String serverId) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "createServerLogUrl", + "Creating server log url: %s", + serverId); String rnd = NetworkUtils.randomString(10); networkConnection.sendPacket(new PacketOutCreateServerLog(rnd, serverId)); ConnectableAddress connectableAddress = cloudConfigLoader.loadConnnection(); @@ -592,6 +652,12 @@ public void startProxy(WrapperInfo wrapperInfo, ProxyGroup proxyGroup, int memor */ public void startProxy(ProxyGroup proxyGroup, int memory, String[] processParameters, String url, Collection plugins, Document properties) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startProxy", + "Starting proxy: %s, %d, %s, %s, %s, %s", + new Object[]{proxyGroup, memory, processParameters, url, plugins, properties}); networkConnection.sendPacket(new PacketOutStartProxy(proxyGroup, memory, processParameters, url, plugins, properties)); } @@ -602,6 +668,12 @@ public void startProxy(ProxyGroup proxyGroup, int memory, String[] processParame */ public void startProxy(WrapperInfo wrapperInfo, ProxyGroup proxyGroup, int memory, String[] processParameters, String url, Collection plugins, Document properties) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startProxy", + "Starting proxy: %s, %s, %d, %s, %s, %s, %s", + new Object[]{wrapperInfo, proxyGroup, memory, processParameters, url, plugins, properties}); networkConnection.sendPacket(new PacketOutStartProxy(wrapperInfo.getServerId(), proxyGroup, memory, processParameters, url, plugins, properties)); } @@ -875,6 +947,12 @@ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleSer */ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startGameServer", + "Starting game server: %s, %s, %d, %s, %s, %s, %s, %s, %s, %s", + new Object[]{simpleServerGroup, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins}); networkConnection.sendPacket(new PacketOutStartServer(simpleServerGroup.getName(), memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -894,6 +972,12 @@ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig se */ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins, String serverId) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startGameServer", + "Starting game server: %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", + new Object[]{simpleServerGroup, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins, serverId}); networkConnection.sendPacket(new PacketOutStartServer(simpleServerGroup.getName(), memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -913,6 +997,12 @@ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig se */ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleServerGroup, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startGameServer", + "Starting game server: %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", + new Object[]{wrapperInfo, simpleServerGroup, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins}); networkConnection.sendPacket(new PacketOutStartServer(wrapperInfo, simpleServerGroup.getName(), memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -932,6 +1022,12 @@ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleSer */ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleServerGroup, String serverId, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startGameServer", + "Starting game server: %s, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", + new Object[]{wrapperInfo, simpleServerGroup, serverId, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins}); networkConnection.sendPacket(new PacketOutStartServer(wrapperInfo, simpleServerGroup.getName(), serverId, memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -957,6 +1053,12 @@ public void startCloudServer(WrapperInfo wrapperInfo, String serverName, ServerC public void startCloudServer(WrapperInfo wrapperInfo, String serverName, ServerConfig serverConfig, int memory, boolean priorityStop, String[] processPreParameters, Collection plugins, Properties properties, ServerGroupType serverGroupType) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startCloudServer", + "Starting cloud server: %s, %s, %s, %d, %s, %s, %s, %s, %s", + new Object[]{wrapperInfo, serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType}); networkConnection.sendPacket(new PacketOutStartCloudServer(wrapperInfo, serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType)); } @@ -982,6 +1084,12 @@ public void startCloudServer(String serverName, ServerConfig serverConfig, int m public void startCloudServer(String serverName, ServerConfig serverConfig, int memory, boolean priorityStop, String[] processPreParameters, Collection plugins, Properties properties, ServerGroupType serverGroupType) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startCloudServer", + "Starting cloud server: %s, %s, %d, %s, %s, %s, %s, %s", + new Object[]{serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType}); networkConnection.sendPacket(new PacketOutStartCloudServer(serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType)); } @@ -994,6 +1102,12 @@ public void startCloudServer(String serverName, ServerConfig serverConfig, int m */ public void updatePlayer(CloudPlayer cloudPlayer) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "updatePlayer", + "Updating cloud player: %s, ", + cloudPlayer); networkConnection.sendPacket(new PacketOutUpdatePlayer(CloudPlayer.newOfflinePlayer(cloudPlayer))); } @@ -1004,6 +1118,12 @@ public void updatePlayer(CloudPlayer cloudPlayer) */ public void updatePlayer(OfflinePlayer offlinePlayer) { + CloudAPI.getInstance().getLogger().logp( + Level.FINEST, + this.getClass().getSimpleName(), + "updatePlayer", + "Updating offline player: %s, ", + offlinePlayer); networkConnection.sendPacket(new PacketOutUpdatePlayer(offlinePlayer)); } diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/network/WrapperInfo.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/network/WrapperInfo.java index 1efde0e74..73696769a 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/network/WrapperInfo.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/network/WrapperInfo.java @@ -2,12 +2,14 @@ import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.ToString; /** * Created by Tareko on 29.06.2017. */ @Getter @AllArgsConstructor +@ToString public class WrapperInfo { private String serverId; @@ -18,4 +20,4 @@ public class WrapperInfo { private int process_queue_size; private int memory; -} \ No newline at end of file +} diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ProxyGroup.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ProxyGroup.java index 49b9cbd18..e8939123d 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ProxyGroup.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ProxyGroup.java @@ -12,6 +12,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import lombok.ToString; import java.util.Collection; @@ -21,6 +22,7 @@ @Getter @Setter @AllArgsConstructor +@ToString public class ProxyGroup implements Nameable { @@ -37,4 +39,4 @@ public class ProxyGroup protected ProxyGroupMode proxyGroupMode; protected WrappedMap settings; -} \ No newline at end of file +} diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ServerConfig.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ServerConfig.java index e4c0413ce..420d32483 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ServerConfig.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/ServerConfig.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import lombok.ToString; /** * Created by Tareko on 25.07.2017. @@ -11,6 +12,7 @@ @AllArgsConstructor @Getter @Setter +@ToString public class ServerConfig { private boolean hideServer; @@ -21,4 +23,4 @@ public class ServerConfig { private long startup; -} \ No newline at end of file +} diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ProxyInfo.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ProxyInfo.java index 3544a42ba..c3ab5d158 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ProxyInfo.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ProxyInfo.java @@ -4,6 +4,7 @@ import de.dytanic.cloudnet.lib.service.ServiceId; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.ToString; import java.util.List; import java.util.UUID; @@ -13,6 +14,7 @@ */ @AllArgsConstructor @Getter +@ToString public class ProxyInfo { private ServiceId serviceId; @@ -29,4 +31,4 @@ public SimpleProxyInfo toSimple() return new SimpleProxyInfo(serviceId, online, host, port, memory, onlineCount); } -} \ No newline at end of file +} diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ServerInfo.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ServerInfo.java index 03ce01f47..e177ac34e 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ServerInfo.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/info/ServerInfo.java @@ -7,6 +7,7 @@ import de.dytanic.cloudnet.lib.service.ServiceId; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.ToString; import java.lang.reflect.Type; import java.util.List; @@ -16,6 +17,7 @@ */ @Getter @AllArgsConstructor +@ToString public class ServerInfo { public static final Type TYPE = new TypeToken() { @@ -50,4 +52,4 @@ public SimpleServerInfo toSimple() return new SimpleServerInfo(serviceId, host, port, onlineCount, maxPlayers); } -} \ No newline at end of file +} diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/template/Template.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/template/Template.java index fc00716a6..8c2ee1579 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/template/Template.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/server/template/Template.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import lombok.ToString; import java.util.Collection; @@ -13,6 +14,7 @@ @Getter @Setter @AllArgsConstructor +@ToString public class Template { private String name; @@ -21,4 +23,4 @@ public class Template { private String[] processPreParameters; private Collection installablePlugins; -} \ No newline at end of file +} From c009b664aaecf6f32f05c1e39290696323108aee Mon Sep 17 00:00:00 2001 From: Marvin Date: Tue, 19 Feb 2019 20:10:26 +0100 Subject: [PATCH 22/53] Try to remove ambigous getTargetBlock call Signed-off-by: Marvin --- .../bridge/internal/command/bukkit/CommandCloudServer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java index b5f448972..5121e5da3 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java @@ -186,7 +186,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock(null, 15); + Block block = player.getTargetBlock((Set) null, 15); if (block.getState() instanceof org.bukkit.block.Sign) if (!SignSelector.getInstance().containsPosition(block.getLocation())) { @@ -248,7 +248,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock(null, 15); + Block block = player.getTargetBlock((Set) null, 15); if (block.getState() instanceof org.bukkit.block.Sign) { if (SignSelector.getInstance().containsPosition(block.getLocation())) From 5240049480a175c60f76890bdb53cff782dfc468 Mon Sep 17 00:00:00 2001 From: Marvin Date: Fri, 1 Mar 2019 14:56:14 +0100 Subject: [PATCH 23/53] Add command logging in debug mode Signed-off-by: Marvin --- .../internal/command/bukkit/CommandCloudServer.java | 13 ++++++++----- .../internal/command/bukkit/CommandResource.java | 9 +++++++-- .../internal/command/proxied/CommandCloud.java | 4 ++++ .../bridge/internal/command/proxied/CommandHub.java | 8 +++++++- .../command/proxied/CommandPermissions.java | 6 +++++- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java index 5121e5da3..cce994df5 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java @@ -19,7 +19,6 @@ import de.dytanic.cloudnet.lib.utility.CollectionWrapper; import de.dytanic.cloudnet.lib.utility.document.Document; import de.dytanic.cloudnet.lib.utility.threading.Runnabled; -import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -28,9 +27,9 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import java.util.Set; import java.util.UUID; /** @@ -39,8 +38,12 @@ public final class CommandCloudServer implements CommandExecutor, TabExecutor { @Override - public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) + public boolean onCommand(CommandSender commandSender, Command command, String label, String[] args) { + CloudAPI.getInstance().getLogger().finest( + String.format("%s executed %s (label = %s) with arguments %s", + commandSender, command, label, Arrays.toString(args)) + ); if (!(commandSender instanceof Player)) return false; Player player = (Player) commandSender; @@ -186,7 +189,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock((Set) null, 15); + Block block = player.getTargetBlock(null, 15); if (block.getState() instanceof org.bukkit.block.Sign) if (!SignSelector.getInstance().containsPosition(block.getLocation())) { @@ -248,7 +251,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock((Set) null, 15); + Block block = player.getTargetBlock(null, 15); if (block.getState() instanceof org.bukkit.block.Sign) { if (SignSelector.getInstance().containsPosition(block.getLocation())) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandResource.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandResource.java index eb0e35811..3afeea181 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandResource.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandResource.java @@ -11,6 +11,7 @@ import org.bukkit.command.CommandSender; import java.lang.management.ManagementFactory; +import java.util.Arrays; /** * Created by Tareko on 07.07.2017. @@ -25,8 +26,12 @@ public CommandResource() } @Override - public boolean execute(CommandSender sender, String s, String[] args) + public boolean execute(CommandSender sender, String alias, String[] args) { + CloudAPI.getInstance().getLogger().finest( + String.format("%s executed %s with arguments %s", + sender, alias, Arrays.toString(args)) + ); if (!testPermission(sender)) return false; long used = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() / 1048576L; long max = Runtime.getRuntime().maxMemory() / 1048576L; @@ -40,4 +45,4 @@ public boolean execute(CommandSender sender, String s, String[] args) sender.sendMessage(CloudAPI.getInstance().getPrefix() + NetworkUtils.SPACE_STRING); return false; } -} \ No newline at end of file +} diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java index e2a517a4d..2f3844cf2 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java @@ -49,6 +49,10 @@ public CommandCloud() @Override public void execute(CommandSender commandSender, String[] args) { + CloudAPI.getInstance().getLogger().finest( + String.format("%s executed %s with arguments %s", + commandSender, this, Arrays.toString(args)) + ); if (args.length > 2) { if (args[0].equalsIgnoreCase("cmds") && commandSender.hasPermission("cloudnet.command.cloud.commandserver")) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandHub.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandHub.java index 5b752a721..ed5021e68 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandHub.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandHub.java @@ -14,6 +14,8 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; +import java.util.Arrays; + /** * Created by Tareko on 20.08.2017. */ @@ -33,6 +35,10 @@ public String[] getAliases() @Override public void execute(CommandSender commandSender, String[] args) { + CloudAPI.getInstance().getLogger().finest( + String.format("%s executed %s with arguments %s", + commandSender, this, Arrays.toString(args)) + ); if (!(commandSender instanceof ProxiedPlayer)) return; ServerInfo serverInfo = CloudProxy.getInstance().getCachedServers().get(((ProxiedPlayer) commandSender).getServer().getInfo().getName()); @@ -61,4 +67,4 @@ public void execute(CommandSender commandSender, String[] args) CloudAPI.getInstance().getCloudNetwork().getMessages().getString("hubCommandNoServerFound"))); else ((ProxiedPlayer) commandSender).connect(ProxyServer.getInstance().getServerInfo(fallback)); } -} \ No newline at end of file +} diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java index b8c804ad0..3d1ec47b1 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java @@ -35,6 +35,10 @@ public CommandPermissions() @Override public void execute(CommandSender sender, String[] args) { + CloudAPI.getInstance().getLogger().finest( + String.format("%s executed %s with arguments %s", + sender, this, Arrays.toString(args)) + ); PermissionPool permissionPool = CloudAPI.getInstance().getPermissionPool(); if (args.length > 0) { @@ -528,4 +532,4 @@ private boolean permissionIsSet(Map permissions, String permiss } return false; } -} \ No newline at end of file +} From c10a61507e21939097af3c2a93fc04429e70d0fc Mon Sep 17 00:00:00 2001 From: Marvin Date: Fri, 1 Mar 2019 20:35:16 +0100 Subject: [PATCH 24/53] Fix ambiguous method call --- .../internal/command/bukkit/CommandCloudServer.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java index cce994df5..8261e7397 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java @@ -19,6 +19,7 @@ import de.dytanic.cloudnet.lib.utility.CollectionWrapper; import de.dytanic.cloudnet.lib.utility.document.Document; import de.dytanic.cloudnet.lib.utility.threading.Runnabled; +import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -27,10 +28,7 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.UUID; +import java.util.*; /** * Created by Tareko on 23.08.2017. @@ -189,7 +187,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock(null, 15); + Block block = player.getTargetBlock((Set) null, 15); if (block.getState() instanceof org.bukkit.block.Sign) if (!SignSelector.getInstance().containsPosition(block.getLocation())) { @@ -251,7 +249,7 @@ public boolean isAccepted(MobSelector.MobImpl value) return false; } - Block block = player.getTargetBlock(null, 15); + Block block = player.getTargetBlock((Set) null, 15); if (block.getState() instanceof org.bukkit.block.Sign) { if (SignSelector.getInstance().containsPosition(block.getLocation())) From 48701666a3ccafb7c604331d0f15cce649e2440f Mon Sep 17 00:00:00 2001 From: Sarsum <33085157+Sarsum@users.noreply.github.com> Date: Sat, 2 Mar 2019 19:10:41 +0100 Subject: [PATCH 25/53] Updated Screen creation The start.sh will now attach to a running screen, otherwhise a new one gets created --- .template/CloudNet-Master/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.template/CloudNet-Master/start.sh b/.template/CloudNet-Master/start.sh index 3c7fec14b..1f92debff 100644 --- a/.template/CloudNet-Master/start.sh +++ b/.template/CloudNet-Master/start.sh @@ -1,2 +1,2 @@ #!/bin/sh -screen -S CloudNet java -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:CompileThreshold=100 -XX:MaxPermSize=256M -Xmx128m -jar CloudNet-Master.jar \ No newline at end of file +screen -RS CloudNet java -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:CompileThreshold=100 -XX:MaxPermSize=256M -Xmx128m -jar CloudNet-Master.jar From 7308085f412281d4e123b05c851bb43fb0235619 Mon Sep 17 00:00:00 2001 From: Sarsum <33085157+Sarsum@users.noreply.github.com> Date: Sat, 2 Mar 2019 19:12:20 +0100 Subject: [PATCH 26/53] Updated Warpper Screen creation The start.sh will now attach to the running wrapper screen, otherwhise a new one gets created --- .template/CloudNet-Wrapper/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.template/CloudNet-Wrapper/start.sh b/.template/CloudNet-Wrapper/start.sh index 16fc61d39..4171d98f7 100644 --- a/.template/CloudNet-Wrapper/start.sh +++ b/.template/CloudNet-Wrapper/start.sh @@ -1,2 +1,2 @@ #!/bin/sh -screen -S Wrapper-1 java -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:CompileThreshold=100 -XX:MaxPermSize=256M -Xmx64m -jar CloudNet-Wrapper.jar +screen -RS Wrapper-1 java -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:CompileThreshold=100 -XX:MaxPermSize=256M -Xmx64m -jar CloudNet-Wrapper.jar From b661dc9243495b851304039e47e3b85bd4315bc8 Mon Sep 17 00:00:00 2001 From: Tarek Date: Mon, 4 Mar 2019 20:22:27 +0100 Subject: [PATCH 27/53] changed version string to 2.1.15 + set cloudflare module version to 1.13.2 --- Jenkinsfile | 2 +- .../internal/util/CloudPermissible.java | 50 +++++++++++-------- .../bridge/vault/VaultPermissionImpl.java | 5 +- .../main/resources/modules/modules.properties | 2 +- .../src/main/resources/module.properties | 2 +- pom.xml | 2 +- 6 files changed, 34 insertions(+), 29 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d970da20a..cbd256d92 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ pipeline { } stage('Version') { steps { - sh 'mvn versions:set -DnewVersion=2.1.14.3' + sh 'mvn versions:set -DnewVersion=2.1.15' } } stage('Compile') { diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java index 33a931658..feb9cd3fe 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java @@ -42,11 +42,12 @@ public Set getEffectivePermissions() } @Override - public void recalculatePermissions() { + public void recalculatePermissions() + { this.permissions.clear(); - if (this.uniqueId == null) { - return; - } + + if (this.uniqueId == null) return; + PermissionEntity permissionEntity = CloudServer.getInstance().getCloudPlayers().get(this.uniqueId).getPermissionEntity(); final Map playerPermissions = permissionEntity.getPermissions(); playerPermissions.forEach((key, value) -> { @@ -54,27 +55,29 @@ public void recalculatePermissions() { permissions.put(key, permissionAttachmentInfo); }); permissionEntity.getGroups().stream() - .filter(g -> g.getTimeout() > System.currentTimeMillis()) - .map(g -> CloudAPI.getInstance().getPermissionGroup(g.getGroup())) - .filter(Objects::nonNull) - .flatMap(g -> { - Stream.Builder builder = Stream.builder().add(g); - g.getImplementGroups().stream() - .map(i -> CloudAPI.getInstance().getPermissionGroup(i)) - .filter(Objects::nonNull) - .forEach(builder); - return builder.build(); - }) - .forEach(g -> { - g.getPermissions().forEach((key, value) -> { - PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, key, null, value); - permissions.put(key, permissionAttachmentInfo); - }); + .filter(g -> g.getTimeout() > System.currentTimeMillis()) + .map(g -> CloudAPI.getInstance().getPermissionGroup(g.getGroup())) + .filter(Objects::nonNull) + .flatMap(g -> { + Stream.Builder builder = Stream.builder().add(g); + g.getImplementGroups().stream() + .map(i -> CloudAPI.getInstance().getPermissionGroup(i)) + .filter(Objects::nonNull) + .forEach(builder); + + return builder.build(); + }) + .forEach(g -> { + g.getPermissions().forEach((key, value) -> { + PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, key, null, value); + permissions.put(key, permissionAttachmentInfo); }); + }); } @Override - public boolean isPermissionSet(String name) { + public boolean isPermissionSet(String name) + { return hasPermission(name); } @@ -96,10 +99,13 @@ public boolean hasPermission(String inName) if (inName.equalsIgnoreCase("bukkit.broadcast.user")) return true; CloudPlayer cloudPlayer = CloudServer.getInstance().getCloudPlayers().get(this.uniqueId); - if (cloudPlayer != null) { + + if (cloudPlayer != null) + { boolean hasPermission = cloudPlayer.getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), inName, CloudAPI.getInstance().getGroup()); CloudAPI.getInstance().getLogger().finest(cloudPlayer.getName() + " hasPermission \"" + inName + "\": " + hasPermission); return hasPermission; + } else return false; } diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java index 9d13b8663..404187cfd 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java @@ -144,7 +144,7 @@ public String getPrimaryGroup(String world, String player) { @Override public String[] getGroups() { - return (String[]) CloudAPI.getInstance().getPermissionPool().getGroups().keySet().toArray(); + return CloudAPI.getInstance().getPermissionPool().getGroups().keySet().toArray(new String[0]); } @Override @@ -164,5 +164,4 @@ private OfflinePlayer getPlayer(String name) { return offlinePlayer; } - -} +} \ No newline at end of file diff --git a/cloudnet-core/src/main/resources/modules/modules.properties b/cloudnet-core/src/main/resources/modules/modules.properties index 461071822..0b1f3d61b 100644 --- a/cloudnet-core/src/main/resources/modules/modules.properties +++ b/cloudnet-core/src/main/resources/modules/modules.properties @@ -4,5 +4,5 @@ CloudNet-Service-PermissionModule=1.0.0.2 CloudNet-Service-MobModule=1.0.0.2 CloudNet-Service-SignsModule=1.0.0.2 -CloudNet-Service-CloudFlareModule=1.0.0.2 +CloudNet-Service-CloudFlareModule=1.0.0.3 CloudNet-Service-NotifyServiceModule=1.0.0.2 \ No newline at end of file diff --git a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/resources/module.properties b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/resources/module.properties index 78ec14061..82b1b3ca5 100644 --- a/cloudnet-modules/cloudnet-modules-cloudflare/src/main/resources/module.properties +++ b/cloudnet-modules/cloudnet-modules-cloudflare/src/main/resources/module.properties @@ -2,6 +2,6 @@ # Copyright (c) Tarek Hosni El Alaoui 2017 # name=CloudNet-Service-CloudFlareModule -version=1.0.0.2 +version=1.0.0.3 author=Dytanic main=de.dytanic.cloudnetcore.cloudflare.CloudFlareModule \ No newline at end of file diff --git a/pom.xml b/pom.xml index 49387cd22..88355a8af 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ 1.8 UTF-8 UTF-8 - 2.1.14.3 + 2.1.15 RELEASE 1.18.6 From f5eff79b85d097694de9117ab72c7c37b05c355f Mon Sep 17 00:00:00 2001 From: Marvin Date: Sat, 9 Mar 2019 19:43:05 +0100 Subject: [PATCH 28/53] Initialize permissions field earlier --- .../cloudnet/bridge/internal/util/CloudPermissible.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java index feb9cd3fe..655990f9e 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java @@ -24,12 +24,13 @@ public class CloudPermissible extends PermissibleBase { private UUID uniqueId; - private Map permissions = new HashMap<>(); + private Map permissions; public CloudPermissible(Player player) { super(player); this.uniqueId = player.getUniqueId(); + this.permissions = new HashMap<>(); player.setOp(false); recalculatePermissions(); From 6c984b76ede97e6f37c62337cd83e1f7951ec1a5 Mon Sep 17 00:00:00 2001 From: Marvin Date: Sat, 9 Mar 2019 19:51:11 +0100 Subject: [PATCH 29/53] Fix initialization again --- .../internal/util/CloudPermissible.java | 74 +++++++++---------- 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java index 655990f9e..c12a3a1fb 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/CloudPermissible.java @@ -15,6 +15,7 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Stream; /** @@ -24,28 +25,28 @@ public class CloudPermissible extends PermissibleBase { private UUID uniqueId; - private Map permissions; + private Map permissions = new ConcurrentHashMap<>(); - public CloudPermissible(Player player) - { + public CloudPermissible(Player player) { super(player); this.uniqueId = player.getUniqueId(); - this.permissions = new HashMap<>(); player.setOp(false); recalculatePermissions(); } @Override - public Set getEffectivePermissions() - { + public Set getEffectivePermissions() { return new HashSet<>(permissions.values()); } @Override - public void recalculatePermissions() - { - this.permissions.clear(); + public void recalculatePermissions() { + if (this.permissions != null) { + this.permissions.clear(); + } else { + this.permissions = new ConcurrentHashMap<>(); + } if (this.uniqueId == null) return; @@ -56,53 +57,48 @@ public void recalculatePermissions() permissions.put(key, permissionAttachmentInfo); }); permissionEntity.getGroups().stream() - .filter(g -> g.getTimeout() > System.currentTimeMillis()) - .map(g -> CloudAPI.getInstance().getPermissionGroup(g.getGroup())) - .filter(Objects::nonNull) - .flatMap(g -> { - Stream.Builder builder = Stream.builder().add(g); - g.getImplementGroups().stream() - .map(i -> CloudAPI.getInstance().getPermissionGroup(i)) - .filter(Objects::nonNull) - .forEach(builder); - - return builder.build(); - }) - .forEach(g -> { - g.getPermissions().forEach((key, value) -> { - PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, key, null, value); - permissions.put(key, permissionAttachmentInfo); + .filter(g -> g.getTimeout() > System.currentTimeMillis()) + .map(g -> CloudAPI.getInstance().getPermissionGroup(g.getGroup())) + .filter(Objects::nonNull) + .flatMap(g -> { + Stream.Builder builder = Stream.builder().add(g); + g.getImplementGroups().stream() + .map(i -> CloudAPI.getInstance().getPermissionGroup(i)) + .filter(Objects::nonNull) + .forEach(builder); + + return builder.build(); + }) + .forEach(g -> { + g.getPermissions().forEach((key, value) -> { + PermissionAttachmentInfo permissionAttachmentInfo = new PermissionAttachmentInfo(this, key, null, value); + permissions.put(key, permissionAttachmentInfo); + }); }); - }); } @Override - public boolean isPermissionSet(String name) - { + public boolean isPermissionSet(String name) { return hasPermission(name); } @Override - public boolean isPermissionSet(Permission perm) - { + public boolean isPermissionSet(Permission perm) { return hasPermission(perm.getName()); } @Override - public boolean hasPermission(Permission perm) - { + public boolean hasPermission(Permission perm) { return hasPermission(perm.getName()); } @Override - public boolean hasPermission(String inName) - { + public boolean hasPermission(String inName) { if (inName.equalsIgnoreCase("bukkit.broadcast.user")) return true; CloudPlayer cloudPlayer = CloudServer.getInstance().getCloudPlayers().get(this.uniqueId); - if (cloudPlayer != null) - { + if (cloudPlayer != null) { boolean hasPermission = cloudPlayer.getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), inName, CloudAPI.getInstance().getGroup()); CloudAPI.getInstance().getLogger().finest(cloudPlayer.getName() + " hasPermission \"" + inName + "\": " + hasPermission); return hasPermission; @@ -112,13 +108,11 @@ public boolean hasPermission(String inName) } @Override - public boolean isOp() - { + public boolean isOp() { return false; } - public UUID getUniqueId() - { + public UUID getUniqueId() { return uniqueId; } } From 8109e194a8c502fc4b2b82ccaf8d8c63d475b090 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 11 Mar 2019 06:51:16 +0000 Subject: [PATCH 30/53] Bump dependency.netty.version from 4.1.33.Final to 4.1.34.Final Bumps `dependency.netty.version` from 4.1.33.Final to 4.1.34.Final. Updates `netty-transport-native-epoll` from 4.1.33.Final to 4.1.34.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.33.Final...netty-4.1.34.Final) Updates `netty-transport-native-kqueue` from 4.1.33.Final to 4.1.34.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.33.Final...netty-4.1.34.Final) Updates `netty-codec` from 4.1.33.Final to 4.1.34.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.33.Final...netty-4.1.34.Final) Updates `netty-handler` from 4.1.33.Final to 4.1.34.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.33.Final...netty-4.1.34.Final) Updates `netty-codec-http` from 4.1.33.Final to 4.1.34.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.33.Final...netty-4.1.34.Final) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 88355a8af..9779ab052 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ RELEASE 1.18.6 - 4.1.33.Final + 4.1.34.Final 2.8.5 2.14.6 5.0.4 From 91678900f9b963a9872534b87dae17a193aa68db Mon Sep 17 00:00:00 2001 From: Tarek Date: Fri, 15 Mar 2019 20:40:55 +0100 Subject: [PATCH 31/53] reformat code + set delay to 25 milliseconds --- .../listener/proxied/ProxiedListener.java | 141 +++++++++--------- 1 file changed, 71 insertions(+), 70 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java index 7f3368012..808a31c53 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java @@ -91,11 +91,11 @@ public void handleProxyPing(ProxyPingEvent event) public void handlePluginMessage(PluginMessageEvent e) { CloudAPI.getInstance().getLogger().logp( - Level.FINEST, - this.getClass().getSimpleName(), - "handlePluginMessage", - "Handling plugin message event: %s", - e); + Level.FINEST, + this.getClass().getSimpleName(), + "handlePluginMessage", + "Handling plugin message event: %s", + e); if (e.getTag().equals("MC|BSign") || e.getTag().equals("MC|BEdit")) if (CloudProxy.getInstance().getProxyGroup() != null && CloudProxy.getInstance().getProxyGroup().getProxyConfig().getCustomPayloadFixer()) e.setCancelled(true); @@ -105,25 +105,25 @@ public void handlePluginMessage(PluginMessageEvent e) public void handlePlayerServerSwitch(ServerSwitchEvent e) { CloudAPI.getInstance().getLogger().logp( - Level.FINEST, - this.getClass().getSimpleName(), - "handlePlayerServerSwitch", - "Handling server switch event: %s", - e); + Level.FINEST, + this.getClass().getSimpleName(), + "handlePlayerServerSwitch", + "Handling server switch event: %s", + e); CloudPlayer cloudPlayer = CloudProxy.getInstance().getCloudPlayers().get(e.getPlayer().getUniqueId()); cloudPlayer.setServer(e.getPlayer().getServer().getInfo().getName()); CloudAPI.getInstance().getNetworkConnection().sendPacket(new PacketOutUpdateOnlinePlayer(cloudPlayer)); CloudAPI.getInstance().sendCustomSubProxyMessage( - "cloudnet_internal", - "player_server_switch", - new Document("player", cloudPlayer) - .append("server", e.getPlayer().getServer().getInfo().getName()) + "cloudnet_internal", + "player_server_switch", + new Document("player", cloudPlayer) + .append("server", e.getPlayer().getServer().getInfo().getName()) ); if (CloudProxy.getInstance().getProxyGroup() != null && CloudProxy.getInstance().getProxyGroup().getProxyConfig().isEnabled() && - CloudProxy.getInstance().getProxyGroup().getProxyConfig().getTabList().isEnabled()) + CloudProxy.getInstance().getProxyGroup().getProxyConfig().getTabList().isEnabled()) initTabHeaderFooter(e.getPlayer()); } @@ -131,21 +131,21 @@ public void handlePlayerServerSwitch(ServerSwitchEvent e) public void handleLogin(LoginEvent e) { CloudAPI.getInstance().getLogger().logp( - Level.FINEST, - this.getClass().getSimpleName(), - "handleLogin", - "Handling login event: %s", - e); + Level.FINEST, + this.getClass().getSimpleName(), + "handleLogin", + "Handling login event: %s", + e); PlayerConnection playerConnection = new PlayerConnection( - e.getConnection().getUniqueId(), - e.getConnection().getName(), e.getConnection().getVersion(), - e.getConnection().getAddress().getAddress().getHostAddress(), - e.getConnection().getAddress().getPort(), e.getConnection().isOnlineMode(), - e.getConnection().isLegacy() + e.getConnection().getUniqueId(), + e.getConnection().getName(), e.getConnection().getVersion(), + e.getConnection().getAddress().getAddress().getHostAddress(), + e.getConnection().getAddress().getPort(), e.getConnection().isOnlineMode(), + e.getConnection().isLegacy() ); Document result = CloudAPI.getInstance().getNetworkConnection().getPacketManager().sendQuery(new PacketOutPlayerLoginRequest(playerConnection), - CloudAPI.getInstance().getNetworkConnection()).getResult(); + CloudAPI.getInstance().getNetworkConnection()).getResult(); CloudPlayer cloudPlayer = result.getObject("player", new TypeToken() { }.getType()); @@ -168,9 +168,9 @@ public void handleLogin(LoginEvent e) PermissionCheckEvent permissionCheckEvent = new PermissionCheckEvent(cloudCommandSender, "cloudnet.maintenance", false); if (!proxyConfig.getWhitelist().contains(e.getConnection().getName()) && - !proxyConfig.getWhitelist().contains(e.getConnection().getUniqueId().toString()) - && - !ProxyServer.getInstance().getPluginManager().callEvent(permissionCheckEvent).hasPermission()) + !proxyConfig.getWhitelist().contains(e.getConnection().getUniqueId().toString()) + && + !ProxyServer.getInstance().getPluginManager().callEvent(permissionCheckEvent).hasPermission()) { e.setCancelled(true); e.setCancelReason(ChatColor.translateAlternateColorCodes('&', CloudAPI.getInstance().getCloudNetwork().getMessages().getString("kick-maintenance"))); @@ -202,11 +202,12 @@ public void handleLogin(LoginEvent e) public void handlePost(PostLoginEvent e) { CloudAPI.getInstance().getLogger().logp( - Level.FINEST, - this.getClass().getSimpleName(), - "handlePost", - "Handling post login event: %s", - e); + Level.FINEST, + this.getClass().getSimpleName(), + "handlePost", + "Handling post login event: %s", + e); + CloudProxy.getInstance().update(); CloudAPI.getInstance().getNetworkConnection().sendPacket(new PacketOutLoginSuccess(e.getPlayer().getUniqueId())); @@ -278,11 +279,11 @@ public void handlePermissionCheck(PermissionCheckEvent e) { if (CloudProxy.getInstance().getCloudPlayers().containsKey(((ProxiedPlayer) e.getSender()).getUniqueId())) e.setHasPermission(CloudProxy.getInstance().getCloudPlayers().get(((ProxiedPlayer) e.getSender()).getUniqueId()) - .getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), e.getPermission(), CloudAPI.getInstance().getGroup())); + .getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), e.getPermission(), CloudAPI.getInstance().getGroup())); } else if (e.getSender() instanceof CloudPlayerCommandSender) { e.setHasPermission(((CloudPlayerCommandSender) e.getSender()).getCloudPlayer() - .getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), e.getPermission(), CloudAPI.getInstance().getGroup())); + .getPermissionEntity().hasPermission(CloudAPI.getInstance().getPermissionPool(), e.getPermission(), CloudAPI.getInstance().getGroup())); } } @@ -311,19 +312,19 @@ public void run() public void handleServerConnect(ServerConnectEvent event) { CloudAPI.getInstance().getLogger().logp( - Level.FINEST, - this.getClass().getSimpleName(), - "handleServerConnect", - "Handling server connect event: %s", - event); + Level.FINEST, + this.getClass().getSimpleName(), + "handleServerConnect", + "Handling server connect event: %s", + event); if (event.getPlayer().getServer() == null) { String fallback = CloudProxy.getInstance().fallback(event.getPlayer()); ProxiedPlayerFallbackEvent proxiedPlayerFallbackEvent = new ProxiedPlayerFallbackEvent( - event.getPlayer(), - CloudAPI.getInstance().getOnlinePlayer(event.getPlayer().getUniqueId()), - ProxiedPlayerFallbackEvent.FallbackType.SERVER_KICK, - fallback + event.getPlayer(), + CloudAPI.getInstance().getOnlinePlayer(event.getPlayer().getUniqueId()), + ProxiedPlayerFallbackEvent.FallbackType.SERVER_KICK, + fallback ); ProxyServer.getInstance().getPluginManager().callEvent(proxiedPlayerFallbackEvent); @@ -334,12 +335,12 @@ public void handleServerConnect(ServerConnectEvent event) event.setTarget(ProxyServer.getInstance().getServerInfo(fallback)); CloudAPI.getInstance().getNetworkConnection().getChannel().writeAndFlush(new PacketOutCustomSubChannelMessage(DefaultType.BUKKIT, event.getTarget().getName(), "cloudnet_internal", "server_connect_request", new Document("uniqueId", event.getPlayer().getUniqueId()))); - NetworkUtils.sleepUninterruptedly(6); + NetworkUtils.sleepUninterruptedly(25); } else event.setCancelled(true); } else { CloudAPI.getInstance().getNetworkConnection().getChannel().writeAndFlush(new PacketOutCustomSubChannelMessage(DefaultType.BUKKIT, event.getTarget().getName(), "cloudnet_internal", "server_connect_request", new Document("uniqueId", event.getPlayer().getUniqueId()))); - NetworkUtils.sleepUninterruptedly(6); + NetworkUtils.sleepUninterruptedly(25); } } @@ -359,10 +360,10 @@ public void handleServerKick(ServerKickEvent e) } ProxiedPlayerFallbackEvent proxiedPlayerFallbackEvent = new ProxiedPlayerFallbackEvent( - e.getPlayer(), - CloudAPI.getInstance().getOnlinePlayer(e.getPlayer().getUniqueId()), - ProxiedPlayerFallbackEvent.FallbackType.SERVER_KICK, - fallback + e.getPlayer(), + CloudAPI.getInstance().getOnlinePlayer(e.getPlayer().getUniqueId()), + ProxiedPlayerFallbackEvent.FallbackType.SERVER_KICK, + fallback ); ProxyServer.getInstance().getPluginManager().callEvent(proxiedPlayerFallbackEvent); @@ -385,7 +386,7 @@ public void handleOnlineCountUpdate(ProxiedOnlineCountUpdateEvent e) public void run() { if (CloudProxy.getInstance().getProxyGroup() != null && CloudProxy.getInstance().getProxyGroup().getProxyConfig().isEnabled() && - CloudProxy.getInstance().getProxyGroup().getProxyConfig().getTabList().isEnabled()) + CloudProxy.getInstance().getProxyGroup().getProxyConfig().getTabList().isEnabled()) { for (ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers()) initTabHeaderFooter(proxiedPlayer); @@ -410,8 +411,8 @@ public void handleChannel(PluginMessageEvent pluginMessageEvent) break; case "fallback": ((ProxiedPlayer) pluginMessageEvent.getReceiver()).connect(ProxyServer.getInstance() - .getServerInfo(CloudProxy.getInstance() - .fallback(((ProxiedPlayer) pluginMessageEvent.getReceiver())))); + .getServerInfo(CloudProxy.getInstance() + .fallback(((ProxiedPlayer) pluginMessageEvent.getReceiver())))); break; case "command": ProxyServer.getInstance().getPluginManager().dispatchCommand(((ProxiedPlayer) pluginMessageEvent.getReceiver()), byteArrayDataInput.readUTF()); @@ -424,22 +425,22 @@ private void initTabHeaderFooter(ProxiedPlayer proxiedPlayer) { TabList tabList = CloudProxy.getInstance().getProxyGroup().getProxyConfig().getTabList(); proxiedPlayer.setTabHeader( - new TextComponent(ChatColor.translateAlternateColorCodes('&', tabList.getHeader() - .replace("%proxy%", CloudAPI.getInstance().getServerId()) - .replace("%server%", (proxiedPlayer.getServer() != null ? proxiedPlayer.getServer().getInfo().getName() : CloudProxy.getInstance().getProxyGroup().getName())) - .replace("%online_players%", CloudAPI.getInstance().getOnlineCount() + NetworkUtils.EMPTY_STRING) - .replace("%max_players%", CloudProxy.getInstance().getProxyGroup().getProxyConfig().getMaxPlayers() + NetworkUtils.EMPTY_STRING) - .replace("%group%", (proxiedPlayer.getServer() != null && CloudProxy.getInstance().getCachedServers().containsKey(proxiedPlayer.getServer().getInfo().getName()) ? CloudProxy.getInstance().getCachedServers().get(proxiedPlayer.getServer().getInfo().getName()).getServiceId().getGroup() : "Hub")) - .replace("%proxy_group%", CloudProxy.getInstance().getProxyGroup().getName()) - )), - new TextComponent(ChatColor.translateAlternateColorCodes('&', tabList.getFooter() - .replace("%proxy%", CloudAPI.getInstance().getServerId()) - .replace("%server%", (proxiedPlayer.getServer() != null ? proxiedPlayer.getServer().getInfo().getName() : CloudProxy.getInstance().getProxyGroup().getName())) - .replace("%online_players%", CloudAPI.getInstance().getOnlineCount() + NetworkUtils.EMPTY_STRING) - .replace("%max_players%", CloudProxy.getInstance().getProxyGroup().getProxyConfig().getMaxPlayers() + NetworkUtils.EMPTY_STRING) - .replace("%group%", (proxiedPlayer.getServer() != null && CloudProxy.getInstance().getCachedServers().containsKey(proxiedPlayer.getServer().getInfo().getName()) ? CloudProxy.getInstance().getCachedServers().get(proxiedPlayer.getServer().getInfo().getName()).getServiceId().getGroup() : "Hub")) - .replace("%proxy_group%", CloudProxy.getInstance().getProxyGroup().getName()) - ))); + new TextComponent(ChatColor.translateAlternateColorCodes('&', tabList.getHeader() + .replace("%proxy%", CloudAPI.getInstance().getServerId()) + .replace("%server%", (proxiedPlayer.getServer() != null ? proxiedPlayer.getServer().getInfo().getName() : CloudProxy.getInstance().getProxyGroup().getName())) + .replace("%online_players%", CloudAPI.getInstance().getOnlineCount() + NetworkUtils.EMPTY_STRING) + .replace("%max_players%", CloudProxy.getInstance().getProxyGroup().getProxyConfig().getMaxPlayers() + NetworkUtils.EMPTY_STRING) + .replace("%group%", (proxiedPlayer.getServer() != null && CloudProxy.getInstance().getCachedServers().containsKey(proxiedPlayer.getServer().getInfo().getName()) ? CloudProxy.getInstance().getCachedServers().get(proxiedPlayer.getServer().getInfo().getName()).getServiceId().getGroup() : "Hub")) + .replace("%proxy_group%", CloudProxy.getInstance().getProxyGroup().getName()) + )), + new TextComponent(ChatColor.translateAlternateColorCodes('&', tabList.getFooter() + .replace("%proxy%", CloudAPI.getInstance().getServerId()) + .replace("%server%", (proxiedPlayer.getServer() != null ? proxiedPlayer.getServer().getInfo().getName() : CloudProxy.getInstance().getProxyGroup().getName())) + .replace("%online_players%", CloudAPI.getInstance().getOnlineCount() + NetworkUtils.EMPTY_STRING) + .replace("%max_players%", CloudProxy.getInstance().getProxyGroup().getProxyConfig().getMaxPlayers() + NetworkUtils.EMPTY_STRING) + .replace("%group%", (proxiedPlayer.getServer() != null && CloudProxy.getInstance().getCachedServers().containsKey(proxiedPlayer.getServer().getInfo().getName()) ? CloudProxy.getInstance().getCachedServers().get(proxiedPlayer.getServer().getInfo().getName()).getServiceId().getGroup() : "Hub")) + .replace("%proxy_group%", CloudProxy.getInstance().getProxyGroup().getName()) + ))); } } From 95785569d50119dfc7a7aac188eb2e8525745b7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 5 Mar 2019 05:34:47 +0000 Subject: [PATCH 32/53] Bump maven-javadoc-plugin from 3.0.1 to 3.1.0 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.0.1 to 3.1.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.0.1...maven-javadoc-plugin-3.1.0) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9779ab052..8074dc0f7 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ 4.12 3.2.1 - 3.0.1 + 3.1.0 3.1.1 3.1.0 1.8 From 4a61c3a41a9def1889b01f51b5f3fa90656347f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 18 Apr 2019 05:25:39 +0000 Subject: [PATCH 33/53] Bump dependency.netty.version from 4.1.34.Final to 4.1.35.Final Bumps `dependency.netty.version` from 4.1.34.Final to 4.1.35.Final. Updates `netty-transport-native-epoll` from 4.1.34.Final to 4.1.35.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.34.Final...netty-4.1.35.Final) Updates `netty-transport-native-kqueue` from 4.1.34.Final to 4.1.35.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.34.Final...netty-4.1.35.Final) Updates `netty-codec` from 4.1.34.Final to 4.1.35.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.34.Final...netty-4.1.35.Final) Updates `netty-handler` from 4.1.34.Final to 4.1.35.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.34.Final...netty-4.1.35.Final) Updates `netty-codec-http` from 4.1.34.Final to 4.1.35.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.34.Final...netty-4.1.35.Final) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8074dc0f7..6adac5d7d 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ RELEASE 1.18.6 - 4.1.34.Final + 4.1.35.Final 2.8.5 2.14.6 5.0.4 From 77223533a68812cbbb1916db687dd75ffca157f2 Mon Sep 17 00:00:00 2001 From: McRuben <37866812+McRuben@users.noreply.github.com> Date: Sun, 10 Mar 2019 18:08:10 +0100 Subject: [PATCH 34/53] Print the StackTrace when a ServerGroup-file couldn't be loaded --- .../src/main/java/de/dytanic/cloudnetcore/CloudConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/CloudConfig.java b/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/CloudConfig.java index a511b90f4..9f07fa969 100644 --- a/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/CloudConfig.java +++ b/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/CloudConfig.java @@ -345,6 +345,7 @@ public java.util.Map getServerGroups() groups.put(serverGroup.getName(), serverGroup); } catch (Throwable ex) { + ex.printStackTrace(); System.out.println("Cannot load servergroup file [" + file.getName() + "]"); } } From d96b83b7cd36a270998cad1484de1bd0c6a76d95 Mon Sep 17 00:00:00 2001 From: Panamo Date: Wed, 24 Apr 2019 15:07:31 +0200 Subject: [PATCH 35/53] Make calling of CloudServer events sync to prevent issues with Spigot 1.14 --- .../dytanic/cloudnet/bridge/CloudServer.java | 56 +++++++++++++------ 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java index a11c603b4..6033e7608 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java @@ -548,55 +548,64 @@ private class NetworkHandlerImpl implements NetworkHandler { @Override public void onServerAdd(ServerInfo serverInfo) { - Bukkit.getPluginManager().callEvent(new BukkitServerAddEvent(serverInfo)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitServerAddEvent(serverInfo))); } @Override public void onServerInfoUpdate(ServerInfo serverInfo) { - Bukkit.getPluginManager().callEvent(new BukkitServerInfoUpdateEvent(serverInfo)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitServerInfoUpdateEvent(serverInfo))); } @Override public void onServerRemove(ServerInfo serverInfo) { - Bukkit.getPluginManager().callEvent(new BukkitServerRemoveEvent(serverInfo)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitServerRemoveEvent(serverInfo))); } @Override public void onProxyAdd(ProxyInfo proxyInfo) { - Bukkit.getPluginManager().callEvent(new BukkitProxyAddEvent(proxyInfo)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitProxyAddEvent(proxyInfo))); } @Override public void onProxyInfoUpdate(ProxyInfo proxyInfo) { - Bukkit.getPluginManager().callEvent(new BukkitProxyInfoUpdateEvent(proxyInfo)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitProxyInfoUpdateEvent(proxyInfo))); } @Override public void onProxyRemove(ProxyInfo proxyInfo) { - Bukkit.getPluginManager().callEvent(new BukkitProxyRemoveEvent(proxyInfo)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitProxyRemoveEvent(proxyInfo))); } @Override public void onCloudNetworkUpdate(CloudNetwork cloudNetwork) { - Bukkit.getPluginManager().callEvent(new BukkitCloudNetworkUpdateEvent(cloudNetwork)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitCloudNetworkUpdateEvent(cloudNetwork))); } @Override public void onCustomChannelMessageReceive(String channel, String message, Document document) { - Bukkit.getPluginManager().callEvent(new BukkitCustomChannelMessageReceiveEvent(channel, message, document)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitCustomChannelMessageReceiveEvent(channel, message, document))); } @Override public void onCustomSubChannelMessageReceive(String channel, String message, Document document) { - Bukkit.getPluginManager().callEvent(new BukkitSubChannelMessageEvent(channel, message, document)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitSubChannelMessageEvent(channel, message, document))); if (channel.equalsIgnoreCase("cloudnet_internal")) { @@ -611,9 +620,17 @@ public void onCustomSubChannelMessageReceive(String channel, String message, Doc Files.copy(urlConnection.getInputStream(), Paths.get("plugins/" + document.getString("name") + ".jar")); File file = new File("plugins/" + document.getString("name") + ".jar"); - Plugin plugin = Bukkit.getPluginManager().loadPlugin(file); - Bukkit.getPluginManager().enablePlugin(plugin); - } catch (IOException | InvalidDescriptionException | InvalidPluginException e) + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), () -> { + try + { + Plugin plugin = Bukkit.getPluginManager().loadPlugin(file); + Bukkit.getPluginManager().enablePlugin(plugin); + } catch (InvalidPluginException | InvalidDescriptionException e) + { + e.printStackTrace(); + } + }); + } catch (IOException e) { e.printStackTrace(); } @@ -626,13 +643,15 @@ public void onCustomSubChannelMessageReceive(String channel, String message, Doc public void onPlayerLoginNetwork(CloudPlayer cloudPlayer) { //cloudPlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); - Bukkit.getPluginManager().callEvent(new BukkitPlayerLoginNetworkEvent(cloudPlayer)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitPlayerLoginNetworkEvent(cloudPlayer))); } @Override public void onPlayerDisconnectNetwork(CloudPlayer cloudPlayer) { - Bukkit.getPluginManager().callEvent(new BukkitPlayerDisconnectEvent(cloudPlayer)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitPlayerDisconnectEvent(cloudPlayer))); } @Override @@ -648,19 +667,22 @@ public void onPlayerUpdate(CloudPlayer cloudPlayer) { cloudPlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); } - Bukkit.getPluginManager().callEvent(new BukkitPlayerUpdateEvent(cloudPlayer)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitPlayerUpdateEvent(cloudPlayer))); } @Override public void onOfflinePlayerUpdate(OfflinePlayer offlinePlayer) { - Bukkit.getPluginManager().callEvent(new BukkitOfflinePlayerUpdateEvent(offlinePlayer)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitOfflinePlayerUpdateEvent(offlinePlayer))); } @Override public void onUpdateOnlineCount(int onlineCount) { - Bukkit.getPluginManager().callEvent(new BukkitOnlineCountUpdateEvent(onlineCount)); + Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), + () -> Bukkit.getPluginManager().callEvent(new BukkitOnlineCountUpdateEvent(onlineCount))); } } } From 4d137d5bde4314e3052460673725512056fca2c6 Mon Sep 17 00:00:00 2001 From: Panamo Date: Wed, 24 Apr 2019 15:29:47 +0200 Subject: [PATCH 36/53] Make BukkitCloudEvent async --- .../dytanic/cloudnet/bridge/CloudServer.java | 42 +++++++------------ .../bridge/event/bukkit/BukkitCloudEvent.java | 7 ++++ 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java index 6033e7608..bc6f26a2e 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java @@ -548,64 +548,55 @@ private class NetworkHandlerImpl implements NetworkHandler { @Override public void onServerAdd(ServerInfo serverInfo) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitServerAddEvent(serverInfo))); + Bukkit.getPluginManager().callEvent(new BukkitServerAddEvent(serverInfo)); } @Override public void onServerInfoUpdate(ServerInfo serverInfo) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitServerInfoUpdateEvent(serverInfo))); + Bukkit.getPluginManager().callEvent(new BukkitServerInfoUpdateEvent(serverInfo)); } @Override public void onServerRemove(ServerInfo serverInfo) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitServerRemoveEvent(serverInfo))); + Bukkit.getPluginManager().callEvent(new BukkitServerRemoveEvent(serverInfo)); } @Override public void onProxyAdd(ProxyInfo proxyInfo) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitProxyAddEvent(proxyInfo))); + Bukkit.getPluginManager().callEvent(new BukkitProxyAddEvent(proxyInfo)); } @Override public void onProxyInfoUpdate(ProxyInfo proxyInfo) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitProxyInfoUpdateEvent(proxyInfo))); + Bukkit.getPluginManager().callEvent(new BukkitProxyInfoUpdateEvent(proxyInfo)); } @Override public void onProxyRemove(ProxyInfo proxyInfo) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitProxyRemoveEvent(proxyInfo))); + Bukkit.getPluginManager().callEvent(new BukkitProxyRemoveEvent(proxyInfo)); } @Override public void onCloudNetworkUpdate(CloudNetwork cloudNetwork) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitCloudNetworkUpdateEvent(cloudNetwork))); + Bukkit.getPluginManager().callEvent(new BukkitCloudNetworkUpdateEvent(cloudNetwork)); } @Override public void onCustomChannelMessageReceive(String channel, String message, Document document) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitCustomChannelMessageReceiveEvent(channel, message, document))); + Bukkit.getPluginManager().callEvent(new BukkitCustomChannelMessageReceiveEvent(channel, message, document)); } @Override public void onCustomSubChannelMessageReceive(String channel, String message, Document document) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitSubChannelMessageEvent(channel, message, document))); + Bukkit.getPluginManager().callEvent(new BukkitSubChannelMessageEvent(channel, message, document)); if (channel.equalsIgnoreCase("cloudnet_internal")) { @@ -643,15 +634,13 @@ public void onCustomSubChannelMessageReceive(String channel, String message, Doc public void onPlayerLoginNetwork(CloudPlayer cloudPlayer) { //cloudPlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitPlayerLoginNetworkEvent(cloudPlayer))); + Bukkit.getPluginManager().callEvent(new BukkitPlayerLoginNetworkEvent(cloudPlayer)); } @Override public void onPlayerDisconnectNetwork(CloudPlayer cloudPlayer) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitPlayerDisconnectEvent(cloudPlayer))); + Bukkit.getPluginManager().callEvent(new BukkitPlayerDisconnectEvent(cloudPlayer)); } @Override @@ -667,22 +656,19 @@ public void onPlayerUpdate(CloudPlayer cloudPlayer) { cloudPlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); } - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitPlayerUpdateEvent(cloudPlayer))); + Bukkit.getPluginManager().callEvent(new BukkitPlayerUpdateEvent(cloudPlayer)); } @Override public void onOfflinePlayerUpdate(OfflinePlayer offlinePlayer) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitOfflinePlayerUpdateEvent(offlinePlayer))); + Bukkit.getPluginManager().callEvent(new BukkitOfflinePlayerUpdateEvent(offlinePlayer)); } @Override public void onUpdateOnlineCount(int onlineCount) { - Bukkit.getScheduler().runTask(CloudServer.this.getPlugin(), - () -> Bukkit.getPluginManager().callEvent(new BukkitOnlineCountUpdateEvent(onlineCount))); + Bukkit.getPluginManager().callEvent(new BukkitOnlineCountUpdateEvent(onlineCount)); } } } diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java index b90043caa..63c086d70 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java @@ -13,6 +13,13 @@ */ public abstract class BukkitCloudEvent extends Event { + /** + * Marks BukkitCloudEvents as async + */ + public BukkitCloudEvent() { + super(true); + } + /** * Returns the CloudAPI instance * From e40e46961def81dfa1cdf385275becdd1fae1c94 Mon Sep 17 00:00:00 2001 From: Panamo Date: Wed, 24 Apr 2019 00:04:35 +0200 Subject: [PATCH 37/53] Change sorting of a players permissionGroups via joinPower to sorting via tagId --- .../cloudnet/lib/player/permission/PermissionEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java index 49673af0c..860658512 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java @@ -74,7 +74,7 @@ public PermissionGroup getHighestPermissionGroup(PermissionPool permissionPool) permissionGroup = permissionPool.getGroups().get(groupEntityData.getGroup()); else { - if (permissionGroup.getJoinPower() < permissionPool.getGroups().get(groupEntityData.getGroup()).getJoinPower()) + if (permissionGroup.getTagId() > permissionPool.getGroups().get(groupEntityData.getGroup()).getTagId()) { permissionGroup = permissionPool.getGroups().get(groupEntityData.getGroup()); } From e3b6cd85a18ff66ce60d7f0df0dea1166ab05e5d Mon Sep 17 00:00:00 2001 From: Panamo Date: Wed, 24 Apr 2019 00:36:55 +0200 Subject: [PATCH 38/53] Change PermissionProvider to return the highest joinPower of a player --- .../cloudnet/api/player/PermissionProvider.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/player/PermissionProvider.java b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/player/PermissionProvider.java index f23318cc0..85cc5fbc5 100644 --- a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/player/PermissionProvider.java +++ b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/player/PermissionProvider.java @@ -16,7 +16,7 @@ public final class PermissionProvider { private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy-HH:mm:ss"); /** - * Update the given player in the player database. + * Updates the given player in the player database. * * @param offlinePlayer the player to update */ @@ -36,7 +36,7 @@ public static void updatePermissionGroup(PermissionGroup permissionGroup) } /** - * Calculate the permission group timeout for the given days in future. + * Calculates the permission group timeout for the given days in future. * * @param value the amount of days * @return timeout value for use with {@link PermissionGroup} @@ -244,15 +244,19 @@ public static Collection getImplementedGroups(String groupName) } /** - * Gets the join power of the given player by their highest permission group. + * Gets the highest join power of the given player. * * @param player the player - * @return the join power of the highest permission group of the player + * @return the highest join power * @see PermissionGroup */ public static int getJoinPower(OfflinePlayer player) { - return player.getPermissionEntity().getHighestPermissionGroup(CloudAPI.getInstance().getPermissionPool()).getJoinPower(); + PermissionPool permissionPool = CloudAPI.getInstance().getPermissionPool(); + return player.getPermissionEntity().getGroups().stream() + .mapToInt(groupEntityData -> permissionPool.getGroups().get(groupEntityData.getGroup()).getJoinPower()) + .max() + .orElse(0); } /** From 82e911284446736ea647b5d7f5af58d3d0cd580e Mon Sep 17 00:00:00 2001 From: Panamo Date: Wed, 24 Apr 2019 19:28:51 +0200 Subject: [PATCH 39/53] Add Java streams to get highest permission group --- .../player/permission/PermissionEntity.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java index 860658512..5bf67d60d 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java @@ -6,6 +6,7 @@ import lombok.Setter; import java.util.Collection; +import java.util.Comparator; import java.util.Map; import java.util.UUID; @@ -66,21 +67,10 @@ else if (permissions.containsKey("*") && permissions.get("*")) public PermissionGroup getHighestPermissionGroup(PermissionPool permissionPool) { - PermissionGroup permissionGroup = null; - - for (GroupEntityData groupEntityData : getGroups()) - { - if (permissionGroup == null) - permissionGroup = permissionPool.getGroups().get(groupEntityData.getGroup()); - else - { - if (permissionGroup.getTagId() > permissionPool.getGroups().get(groupEntityData.getGroup()).getTagId()) - { - permissionGroup = permissionPool.getGroups().get(groupEntityData.getGroup()); - } - } - } - return permissionGroup; + return this.getGroups() + .stream() + .map(groupEntityData -> permissionPool.getGroups().get(groupEntityData.getGroup())) + .min(Comparator.comparingInt(PermissionGroup::getTagId)).orElse(null); } public boolean isInGroup(String group) From 1736d2ddb6984c96ae909779938e2447c930ac0c Mon Sep 17 00:00:00 2001 From: Panamo Date: Thu, 25 Apr 2019 22:57:13 +0200 Subject: [PATCH 40/53] Fix SignSelector and MobSelector to work on every MC Version Fix BukkitCloudEvent Add materialNames to config-objects containing materialIds Use 1.13+ material names with original defaults --- .../bridge/event/bukkit/BukkitCloudEvent.java | 5 +- .../command/bukkit/CommandCloudServer.java | 16 +++- .../internal/serverselectors/MobSelector.java | 19 +++-- .../serverselectors/SignSelector.java | 63 +++++++++------ .../packet/in/PacketInMobSelector.java | 79 ++++++++----------- .../internal/util/ItemStackBuilder.java | 50 +++++++++++- cloudnet-api/pom.xml | 7 +- .../player/permission/PermissionGroup.java | 10 +-- .../serverselectors/mob/MobItemLayout.java | 8 +- .../lib/serverselectors/mob/ServerMob.java | 5 ++ .../lib/serverselectors/sign/SignLayout.java | 7 +- .../cloudnet/lib/utility/MapWrapper.java | 19 ++--- .../cloudnetcore/mobs/config/ConfigMobs.java | 36 ++++----- .../permissions/config/ConfigPermissions.java | 6 +- .../signs/config/ConfigSignLayout.java | 76 +++++++++--------- pom.xml | 2 +- 16 files changed, 242 insertions(+), 166 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java index 63c086d70..fe83f1c23 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/event/bukkit/BukkitCloudEvent.java @@ -6,6 +6,7 @@ import de.dytanic.cloudnet.api.CloudAPI; import de.dytanic.cloudnet.bridge.CloudServer; +import org.bukkit.Bukkit; import org.bukkit.event.Event; /** @@ -14,10 +15,10 @@ public abstract class BukkitCloudEvent extends Event { /** - * Marks BukkitCloudEvents as async + * Marks this BukkitCloudEvent as async or sync based on on which thread it's being called */ public BukkitCloudEvent() { - super(true); + super(!Bukkit.isPrimaryThread()); } /** diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java index 8261e7397..2a1a93fe8 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java @@ -75,12 +75,20 @@ public boolean isAccepted(MobSelector.MobImpl value) if (stringBuilder.length() > 32) { - commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The display cannot be longe then 32 characters"); + commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The display cannot be longer then 32 characters"); return false; } + + String material = args[4].toUpperCase(); + + if(Material.getMaterial(material) == null) + { + commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "An item with this itemName does not exist"); + return false; + } + ServerMob serverMob = new ServerMob(UUID.randomUUID(), stringBuilder.substring(0, stringBuilder.length() - 1), args[2], entityType.name(), args[3], - NetworkUtils.checkIsNumber(args[4]) ? (Integer.parseInt(args[4]) != 0 ? Integer.parseInt(args[4]) : 138) : 138 - , args[5].equalsIgnoreCase("true"), + -1, material, args[5].equalsIgnoreCase("true"), MobSelector.getInstance().toPosition(CloudAPI.getInstance().getGroup(), player.getLocation()), "§8#§c%group% &bPlayers online §8|§7 %group_online% of %max_players%", new Document()); CloudAPI.getInstance().getNetworkConnection().sendPacket(new PacketOutAddMob(serverMob)); player.sendMessage(CloudAPI.getInstance().getPrefix() + "The mob will be created, please wait..."); @@ -340,7 +348,7 @@ public boolean isAccepted(MobSelector.MobImpl value) } if (MobSelector.getInstance() != null) { - commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs createMob "); + commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs createMob "); commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs removeMob "); commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs listMobs"); commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "/cs moblist"); diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/MobSelector.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/MobSelector.java index 5a80dceaf..233cf53f7 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/MobSelector.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/MobSelector.java @@ -156,7 +156,8 @@ public Inventory create(MobConfig mobConfig, ServerMob mob) private ItemStack transform(MobItemLayout mobItemLayout) { - return ItemStackBuilder.builder(mobItemLayout.getItemId(), 1, mobItemLayout.getSubId()) + Material material = ItemStackBuilder.getMaterialIgnoreVersion(mobItemLayout.getItemName(), mobItemLayout.getItemId()); + return material == null ? null : ItemStackBuilder.builder(material, 1, mobItemLayout.getSubId()) .lore(new ArrayList<>(CollectionWrapper.transform(mobItemLayout.getLore(), new Catcher() { @Override public String doCatch(String key) @@ -168,7 +169,8 @@ public String doCatch(String key) private ItemStack transform(MobItemLayout mobItemLayout, ServerInfo serverInfo) { - return ItemStackBuilder.builder(mobItemLayout.getItemId(), 1, mobItemLayout.getSubId()) + Material material = ItemStackBuilder.getMaterialIgnoreVersion(mobItemLayout.getItemName(), mobItemLayout.getItemId()); + return material == null ? null : ItemStackBuilder.builder(material, 1, mobItemLayout.getSubId()) .lore(new ArrayList<>(CollectionWrapper.transform(mobItemLayout.getLore(), new Catcher() { @Override public String doCatch(String key) @@ -457,7 +459,7 @@ public void handleInventoryClick(InventoryClickEvent e) if (inventories().contains(e.getInventory()) && e.getCurrentItem() != null && e.getSlot() == e.getRawSlot()) { e.setCancelled(true); - if (mobConfig.getItemLayout().getItemId() == e.getCurrentItem().getTypeId()) + if (ItemStackBuilder.getMaterialIgnoreVersion(mobConfig.getItemLayout().getItemName(), mobConfig.getItemLayout().getItemId()) == e.getCurrentItem().getType()) { MobImpl mob = find(e.getInventory()); if (mob.getServerPosition().containsKey(e.getSlot())) @@ -517,10 +519,13 @@ public MobImpl doCatch(ServerMob key) Entity armor = (Entity) armorStand; if (armor.getPassenger() == null && key.getItemId() != null) { - Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(key.getItemId())); - item.setPickupDelay(Integer.MAX_VALUE); - item.setTicksLived(Integer.MAX_VALUE); - armor.setPassenger(item); + Material material = ItemStackBuilder.getMaterialIgnoreVersion(key.getItemName(), key.getItemId()); + if(material != null) { + Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(material)); + item.setPickupDelay(Integer.MAX_VALUE); + item.setTicksLived(Integer.MAX_VALUE); + armor.setPassenger(item); + } } } diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java index 4a2eb03a3..95fede1c9 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java @@ -9,6 +9,7 @@ import de.dytanic.cloudnet.api.CloudAPI; import de.dytanic.cloudnet.api.handlers.adapter.NetworkHandlerAdapter; import de.dytanic.cloudnet.bridge.CloudServer; +import de.dytanic.cloudnet.bridge.internal.util.ItemStackBuilder; import de.dytanic.cloudnet.lib.NetworkUtils; import de.dytanic.cloudnet.lib.server.ServerState; import de.dytanic.cloudnet.lib.server.info.ServerInfo; @@ -23,12 +24,16 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockState; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.material.Attachable; +import org.bukkit.material.MaterialData; import org.bukkit.util.Vector; import java.util.*; @@ -87,7 +92,7 @@ public String doCatch(ServerInfo key) @EventHandler public void handleInteract(PlayerInteractEvent e) { - if ((e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) && (e.getClickedBlock().getType().equals(Material.SIGN_POST) || e.getClickedBlock().getType().equals(Material.WALL_SIGN))) + if ((e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) && e.getClickedBlock() != null && e.getClickedBlock().getState() instanceof org.bukkit.block.Sign) if (containsPosition(e.getClickedBlock().getLocation())) { Sign sign = getSignByPosition(e.getClickedBlock().getLocation()); @@ -272,7 +277,7 @@ public void run() @Override public void run() { - if (location.getBlock().getType().equals(Material.SIGN_POST) || location.getBlock().getType().equals(Material.WALL_SIGN)) + if (location.getBlock().getState() instanceof org.bukkit.block.Sign) try { Location entityLocation = entity.getLocation(); @@ -320,7 +325,7 @@ public void run() String[] layout = updateOfflineAndMaintenance(_signLayout.getSignLayout().clone(), sign); sign.setServerInfo(null); sendUpdateSynchronized(toLocation(sign.getPosition()), layout); - changeBlock(toLocation(sign.getPosition()), _signLayout.getBlockId(), _signLayout.getSubId()); + changeBlock(toLocation(sign.getPosition()), _signLayout.getBlockName(), _signLayout.getBlockId(),_signLayout.getSubId()); continue; } @@ -339,7 +344,7 @@ public void run() String[] layout = updateOfflineAndMaintenance(searchLayer.getSignLayout().clone(), sign); layout = updateOfflineAndMaintenance(layout, sign); sendUpdateSynchronized(location, layout); - changeBlock(location, searchLayer.getBlockId(), searchLayer.getSubId()); + changeBlock(location, searchLayer.getBlockName(), searchLayer.getBlockId(), searchLayer.getSubId()); continue; } @@ -361,7 +366,7 @@ public void run() } updateArray(layout, serverInfo); sendUpdateSynchronized(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } else { sign.setServerInfo(null); @@ -373,7 +378,7 @@ public void run() sign.setServerInfo(null); String[] layout = updateOfflineAndMaintenance(searchLayer.getSignLayout().clone(), sign); sendUpdateSynchronized(location, layout); - changeBlock(location, searchLayer.getBlockId(), searchLayer.getSubId()); + changeBlock(location, searchLayer.getBlockName(), searchLayer.getBlockId(), searchLayer.getSubId()); } continue; @@ -413,7 +418,7 @@ public void run() sign.setServerInfo(serverInfo); updateArray(layout, serverInfo); sendUpdateSynchronized(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } else { sign.setServerInfo(null); @@ -426,7 +431,7 @@ public void run() SignLayout _signLayout = getLayout(sign.getTargetGroup(), "maintenance"); String[] layout = updateOfflineAndMaintenance(_signLayout.getSignLayout().clone(), sign); sendUpdateSynchronized(location, layout); - changeBlock(location, _signLayout.getBlockId(), _signLayout.getSubId()); + changeBlock(location, _signLayout.getBlockName(), _signLayout.getBlockId(), _signLayout.getSubId()); } } } @@ -459,7 +464,7 @@ public boolean exists(Sign sign) if (Bukkit.getWorld(sign.getPosition().getWorld()) != null) { Location location = toLocation(sign.getPosition()); - return location.getBlock().getType() == Material.SIGN_POST || location.getBlock().getType() == Material.WALL_SIGN; + return location.getBlock().getState() instanceof org.bukkit.block.Sign; } else { return false; @@ -470,16 +475,24 @@ public boolean exists(Sign sign) } } - public void changeBlock(Location location, int id, int subId) + public void changeBlock(Location location, String blockName, int blockId, int subId) { Bukkit.getScheduler().runTask(CloudServer.getInstance().getPlugin(), new Runnable() { @Override public void run() { - if (id != -1 && id != 0 && subId != -1) + Material material = ItemStackBuilder.getMaterialIgnoreVersion(blockName, blockId); + if (material != null && subId != -1) { - org.bukkit.material.Sign sign = (org.bukkit.material.Sign) location.getBlock().getState().getData(); - location.getBlock().getRelative(sign.getAttachedFace()).setTypeIdAndData(id, (byte) subId, true); + MaterialData materialData = location.getBlock().getState().getData(); + if(materialData instanceof Attachable) { + Attachable attachable = (Attachable) materialData; + Block signBlock = location.getBlock().getRelative(attachable.getAttachedFace()); + BlockState blockState = signBlock.getState(); + blockState.setType(material); + blockState.setData(new MaterialData(material, (byte) subId)); + blockState.update(true); + } } } }); @@ -597,7 +610,7 @@ public void handleUpdate(Sign sign, ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(toLocation(sign.getPosition()), layout); - changeBlock(location, _signLayout.getBlockId(), _signLayout.getSubId()); + changeBlock(location, _signLayout.getBlockName(), _signLayout.getBlockId(), _signLayout.getSubId()); return; } @@ -634,7 +647,7 @@ public void handleUpdate(Sign sign, ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } else { sign.setServerInfo(null); @@ -670,7 +683,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(toLocation(sign.getPosition()), layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); return; } String[] layout; @@ -693,7 +706,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } else { sign.setServerInfo(null); @@ -719,7 +732,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(toLocation(next.getPosition()), layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); return; } String[] layout; @@ -742,7 +755,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } else { sign.setServerInfo(null); @@ -751,7 +764,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } } else @@ -772,7 +785,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(toLocation(sign.getPosition()), layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); return; } @@ -796,7 +809,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } else { newSign.setServerInfo(null); @@ -805,7 +818,7 @@ public void onServerAdd(ServerInfo serverInfo) for (Player all : Bukkit.getOnlinePlayers()) sendUpdate(all, location, layout); sendUpdateSynchronizedTask(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } } } @@ -875,14 +888,14 @@ public void run() sign.setServerInfo(serverInfo); updateArray(layout, serverInfo); sendUpdateSynchronized(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } else { sign.setServerInfo(null); SignLayout signLayout = getSearchingLayout(((ThreadImpl) worker).animationTick); String[] layout = updateOfflineAndMaintenance(signLayout.getSignLayout().clone(), sign); sendUpdateSynchronized(location, layout); - changeBlock(location, signLayout.getBlockId(), signLayout.getSubId()); + changeBlock(location, signLayout.getBlockName(), signLayout.getBlockId(), signLayout.getSubId()); } } else diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/packet/in/PacketInMobSelector.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/packet/in/PacketInMobSelector.java index 05fd9544e..584fb2037 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/packet/in/PacketInMobSelector.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/packet/in/PacketInMobSelector.java @@ -10,6 +10,7 @@ import de.dytanic.cloudnet.bridge.CloudServer; import de.dytanic.cloudnet.bridge.event.bukkit.BukkitMobInitEvent; import de.dytanic.cloudnet.bridge.internal.serverselectors.MobSelector; +import de.dytanic.cloudnet.bridge.internal.util.ItemStackBuilder; import de.dytanic.cloudnet.bridge.internal.util.ReflectionUtil; import de.dytanic.cloudnet.lib.NetworkUtils; import de.dytanic.cloudnet.lib.network.protocol.packet.PacketSender; @@ -39,8 +40,7 @@ public class PacketInMobSelector extends PacketInHandlerDefault { @Override - public void handleInput(Document data, PacketSender packetSender) - { + public void handleInput(Document data, PacketSender packetSender) { Map mobMap = data.getObject("mobs", new TypeToken>() { }.getType()); MobConfig mobConfig = data.getObject("mobConfig", new TypeToken() { @@ -48,53 +48,48 @@ public void handleInput(Document data, PacketSender packetSender) Map filteredMobs = MapWrapper.filter(mobMap, new Acceptable() { @Override - public boolean isAccepted(ServerMob value) - { + public boolean isAccepted(ServerMob value) { return value.getPosition().getGroup().equalsIgnoreCase(CloudAPI.getInstance().getGroup()); } }); - if (MobSelector.getInstance() != null) - { + if (MobSelector.getInstance() != null) { Bukkit.getScheduler().runTask(CloudServer.getInstance().getPlugin(), new Runnable() { @Override - public void run() - { + public void run() { MobSelector.getInstance().shutdown(); MobSelector.getInstance().setMobConfig(mobConfig); MobSelector.getInstance().setMobs(new HashMap<>()); MobSelector.getInstance().setMobs(MapWrapper.transform(filteredMobs, new Catcher() { @Override - public UUID doCatch(UUID key) - { + public UUID doCatch(UUID key) { return key; } }, new Catcher() { @Override - public MobSelector.MobImpl doCatch(ServerMob key) - { + public MobSelector.MobImpl doCatch(ServerMob key) { MobSelector.getInstance().toLocation(key.getPosition()).getChunk().load(); Entity entity = MobSelector.getInstance().toLocation(key.getPosition()).getWorld().spawnEntity(MobSelector.getInstance().toLocation(key.getPosition()), EntityType.valueOf(key.getType())); entity.setFireTicks(0); Object armorStand = ReflectionUtil.armorstandCreation(MobSelector.getInstance().toLocation(key.getPosition()), entity, key); - if (armorStand != null) - { + if (armorStand != null) { MobSelector.getInstance().updateCustom(key, armorStand); Entity armor = (Entity) armorStand; - if (armor.getPassenger() == null && key.getItemId() != null) - { - - Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(Material.getMaterial(key.getItemId()))); - item.setTicksLived(Integer.MAX_VALUE); - item.setPickupDelay(Integer.MAX_VALUE); - armor.setPassenger(item); + if (armor.getPassenger() == null && key.getItemId() != null) { + + Material material = ItemStackBuilder.getMaterialIgnoreVersion(key.getItemName(), key.getItemId()); + if(material != null) { + Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(material)); + item.setTicksLived(Integer.MAX_VALUE); + item.setPickupDelay(Integer.MAX_VALUE); + armor.setPassenger(item); + } } } - if (entity instanceof Villager) - { + if (entity instanceof Villager) { ((Villager) entity).setProfession(Villager.Profession.FARMER); } @@ -108,10 +103,8 @@ public MobSelector.MobImpl doCatch(ServerMob key) })); Bukkit.getScheduler().runTaskAsynchronously(CloudServer.getInstance().getPlugin(), new Runnable() { @Override - public void run() - { - for (ServerInfo serverInfo : MobSelector.getInstance().getServers().values()) - { + public void run() { + for (ServerInfo serverInfo : MobSelector.getInstance().getServers().values()) { MobSelector.getInstance().handleUpdate(serverInfo); } } @@ -119,43 +112,39 @@ public void run() } }); - } else - { + } else { MobSelector mobSelector = new MobSelector(mobConfig); MobSelector.getInstance().setMobs(new HashMap<>()); Bukkit.getScheduler().runTask(CloudServer.getInstance().getPlugin(), new Runnable() { @Override - public void run() - { + public void run() { MobSelector.getInstance().setMobs(MapWrapper.transform(filteredMobs, new Catcher() { @Override - public UUID doCatch(UUID key) - { + public UUID doCatch(UUID key) { return key; } }, new Catcher() { @Override - public MobSelector.MobImpl doCatch(ServerMob key) - { + public MobSelector.MobImpl doCatch(ServerMob key) { MobSelector.getInstance().toLocation(key.getPosition()).getChunk().load(); Entity entity = MobSelector.getInstance().toLocation(key.getPosition()).getWorld().spawnEntity(MobSelector.getInstance().toLocation(key.getPosition()), EntityType.valueOf(key.getType())); Object armorStand = ReflectionUtil.armorstandCreation(MobSelector.getInstance().toLocation(key.getPosition()), entity, key); - if (armorStand != null) - { + if (armorStand != null) { MobSelector.getInstance().updateCustom(key, armorStand); Entity armor = (Entity) armorStand; - if (armor.getPassenger() == null && key.getItemId() != null) - { - Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(Material.getMaterial(key.getItemId()))); - item.setTicksLived(Integer.MAX_VALUE); - item.setPickupDelay(Integer.MAX_VALUE); - armor.setPassenger(item); + if (armor.getPassenger() == null && key.getItemId() != null) { + Material material = ItemStackBuilder.getMaterialIgnoreVersion(key.getItemName(), key.getItemId()); + if (material != null) { + Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(material)); + item.setTicksLived(Integer.MAX_VALUE); + item.setPickupDelay(Integer.MAX_VALUE); + armor.setPassenger(item); + } } } - if (entity instanceof Villager) - { + if (entity instanceof Villager) { ((Villager) entity).setProfession(Villager.Profession.FARMER); } diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java index 9124e2aa4..4276127a5 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java @@ -4,6 +4,7 @@ package de.dytanic.cloudnet.bridge.internal.util; +import de.dytanic.cloudnet.api.CloudAPI; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -14,6 +15,7 @@ import java.util.Arrays; import java.util.List; +import java.util.logging.Level; /** * Created by Tareko on 26.08.2017. @@ -29,6 +31,9 @@ public ItemStackBuilder(Material material) this.itemMeta = itemStack.getItemMeta(); } + /** + * @deprecated will only work in versions lower than 1.13 + */ public ItemStackBuilder(int material) { this.itemStack = new ItemStack(Material.getMaterial(material)); @@ -41,6 +46,9 @@ public ItemStackBuilder(Material material, int amount) this.itemMeta = itemStack.getItemMeta(); } + /** + * @deprecated will only work in versions lower than 1.13 + */ public ItemStackBuilder(int material, int amount) { this.itemStack = new ItemStack(material, amount); @@ -53,12 +61,39 @@ public ItemStackBuilder(Material material, int amount, int sub) this.itemMeta = itemStack.getItemMeta(); } + /** + * @deprecated will only work in versions lower than 1.13 + */ + @Deprecated public ItemStackBuilder(int material, int amount, int sub) { - this.itemStack = new ItemStack(Material.getMaterial(material), amount, (short) sub); + this.itemStack = new ItemStack(material, amount, (short) sub); this.itemMeta = itemStack.getItemMeta(); } + /** + * Gets a Material whether by name or by id if not used in MC 1.13+ + * + * @param name the materialName of the wanted material or null when the id should be used + * @param id the materialId of the wanted material or any other number when the name should be used + * @return the material or null if not existing + */ + public static Material getMaterialIgnoreVersion(String name, int id) { + if(name == null) { + try { + return Material.getMaterial(id); + } catch (ExceptionInInitializerError | NoSuchMethodError exception) { + CloudAPI.getInstance().getLogger().logp(Level.WARNING, + ItemStackBuilder.class.getSimpleName(), + "getMaterialIgnoreVersion", + String.format("Can't get material by id %d! Beginning with MC 1.13 you HAVE to use material names!", id), + exception); + return null; + } + } + return Material.getMaterial(name); + } + public static ItemStackBuilder builder(Material material) { return new ItemStackBuilder(material); @@ -74,21 +109,34 @@ public static ItemStackBuilder builder(Material material, int amount, int sub) return new ItemStackBuilder(material, amount, sub); } + /** + * @deprecated will only work in versions lower than 1.13 + */ + @Deprecated public static ItemStackBuilder builder(int material) { return new ItemStackBuilder(material); } + /** + * @deprecated will only work in versions lower than 1.13 + */ + @Deprecated public static ItemStackBuilder builder(int material, int amount) { return new ItemStackBuilder(material, amount); } + /** + * @deprecated will only work in versions lower than 1.13 + */ + @Deprecated public static ItemStackBuilder builder(int material, int amount, int sub) { return new ItemStackBuilder(material, amount, sub); } + public ItemStackBuilder enchantment(Enchantment enchantment, int value) { itemMeta.addEnchant(enchantment, value, true); diff --git a/cloudnet-api/pom.xml b/cloudnet-api/pom.xml index 005fd99f9..eb66170ae 100644 --- a/cloudnet-api/pom.xml +++ b/cloudnet-api/pom.xml @@ -24,12 +24,11 @@ cloudnet-repo https://cloudnetservice.eu/repositories - spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - --> @@ -41,8 +40,8 @@ org.spigotmc - spigot - ${dependency.spigot.version} + spigot-api + ${dependency.spigot.version} provided diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java index d3fba9064..fcd61a488 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java @@ -3,8 +3,8 @@ import lombok.AllArgsConstructor; import lombok.Data; -import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Created by Tareko on 01.06.2017. @@ -20,9 +20,9 @@ public class PermissionGroup { protected int tagId; protected int joinPower; protected boolean defaultGroup; - protected HashMap permissions; - protected java.util.Map> serverGroupPermissions; - protected java.util.Map options; - protected java.util.List implementGroups; + protected Map permissions; + protected Map> serverGroupPermissions; + protected Map options; + protected List implementGroups; } \ No newline at end of file diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/MobItemLayout.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/MobItemLayout.java index c0a1c5644..d1469b06b 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/MobItemLayout.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/MobItemLayout.java @@ -12,7 +12,13 @@ @AllArgsConstructor public class MobItemLayout implements Cloneable { + /** + * itemIds are not supported in all versions, use {@link MobItemLayout#itemName} instead + */ + + @Deprecated private int itemId; + private String itemName; private int subId; private String display; private List lore; @@ -20,6 +26,6 @@ public class MobItemLayout implements Cloneable { @Override public MobItemLayout clone() { - return new MobItemLayout(itemId, subId, display, lore); + return new MobItemLayout(itemId, itemName, subId, display, lore); } } \ No newline at end of file diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/ServerMob.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/ServerMob.java index ac541c0a9..c951cfc0f 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/ServerMob.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/mob/ServerMob.java @@ -21,7 +21,12 @@ public class ServerMob implements Nameable { protected String name; protected String type; protected String targetGroup; + /** + * itemIds are not supported in all versions, use {@link ServerMob#itemName} instead + */ + @Deprecated protected Integer itemId; + protected String itemName; protected Boolean autoJoin; protected MobPosition position; protected String displayMessage; diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/sign/SignLayout.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/sign/SignLayout.java index 58efe7e63..bf72de345 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/sign/SignLayout.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/serverselectors/sign/SignLayout.java @@ -14,7 +14,12 @@ public class SignLayout private String name; private String[] signLayout; - private int blockId; + /** + * blockIds are not supported in all versions, use {@link SignLayout#blockName} instead + */ + @Deprecated + int blockId; + private String blockName; private int subId; } \ No newline at end of file diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/utility/MapWrapper.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/utility/MapWrapper.java index 754476280..6ec411fb7 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/utility/MapWrapper.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/utility/MapWrapper.java @@ -8,6 +8,7 @@ import java.util.Collection; import java.util.HashMap; +import java.util.Map; public final class MapWrapper { @@ -16,7 +17,7 @@ private MapWrapper() { } - public static java.util.Map collectionCatcherHashMap(Collection key, Catcher catcher) + public static Map collectionCatcherHashMap(Collection key, Catcher catcher) { HashMap kvHashMap = new HashMap<>(); for (V value : key) @@ -26,10 +27,10 @@ public static java.util.Map collectionCatcherHashMap(Collection key, C return kvHashMap; } - public static java.util.Map filter(java.util.Map map, Acceptable acceptable) + public static Map filter(Map map, Acceptable acceptable) { - java.util.Map filter = NetworkUtils.newConcurrentHashMap(); - for (java.util.Map.Entry value : map.entrySet()) + Map filter = NetworkUtils.newConcurrentHashMap(); + for (Map.Entry value : map.entrySet()) { if (acceptable.isAccepted(value.getValue())) { @@ -40,9 +41,9 @@ public static java.util.Map filter(java.util.Map map, Acceptable } @SafeVarargs - public static java.util.Map valueableHashMap(Return... returns) + public static Map valueableHashMap(Return... returns) { - java.util.HashMap map = new HashMap<>(); + HashMap map = new HashMap<>(); for (Return kvReturn : returns) { map.put(kvReturn.getFirst(), kvReturn.getSecond()); @@ -50,10 +51,10 @@ public static java.util.Map valueableHashMap(Return... returns) return map; } - public static java.util.Map transform(java.util.Map values, Catcher keyCatcher, Catcher valueCatcher) + public static Map transform(Map values, Catcher keyCatcher, Catcher valueCatcher) { - java.util.Map nkvkMap = new HashMap<>(); - for (java.util.Map.Entry entry : values.entrySet()) + Map nkvkMap = new HashMap<>(); + for (Map.Entry entry : values.entrySet()) { nkvkMap.put(keyCatcher.doCatch(entry.getKey()), valueCatcher.doCatch(entry.getValue())); } diff --git a/cloudnet-modules/cloudnet-modules-mobs/src/main/java/de/dytanic/cloudnetcore/mobs/config/ConfigMobs.java b/cloudnet-modules/cloudnet-modules-mobs/src/main/java/de/dytanic/cloudnetcore/mobs/config/ConfigMobs.java index de7f32ad9..fa5cfc768 100644 --- a/cloudnet-modules/cloudnet-modules-mobs/src/main/java/de/dytanic/cloudnetcore/mobs/config/ConfigMobs.java +++ b/cloudnet-modules/cloudnet-modules-mobs/src/main/java/de/dytanic/cloudnetcore/mobs/config/ConfigMobs.java @@ -17,6 +17,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; +import java.util.Collections; /** * Created by Tareko on 21.08.2017. @@ -25,31 +26,26 @@ public class ConfigMobs implements ILoader { private final Path path = Paths.get("local/servermob_config.json"); - public ConfigMobs() - { - if (!Files.exists(path)) - { + public ConfigMobs() { + if (!Files.exists(path)) { new Document() - .append("mobConfig", new MobConfig(54, 10, new MobItemLayout(388, 0, - "§6%server%", Arrays.asList(NetworkUtils.SPACE_STRING, "§e%state%", "§e%online_players% §8/§e%max_players%", "§e%motd%")), - MapWrapper.valueableHashMap( - new Return<>(1, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(2, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(3, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(4, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(5, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(6, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(7, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(8, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING))), - new Return<>(9, new MobItemLayout(160, 15, NetworkUtils.SPACE_STRING, Arrays.asList(NetworkUtils.SPACE_STRING)))) - ) - ).saveAsConfig(path); + .append("mobConfig", new MobConfig(54, 10, new MobItemLayout(388, "EMERALD", 0, + "§6%server%", Arrays.asList(NetworkUtils.SPACE_STRING, "§e%state%", "§e%online_players% §8/§e%max_players%", "§e%motd%")), + MapWrapper.valueableHashMap( + new Return<>(1, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING))), + new Return<>(2, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING))), + new Return<>(3, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING))), + new Return<>(5, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING))), + new Return<>(6, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING))), + new Return<>(7, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING))), + new Return<>(8, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING))), + new Return<>(9, new MobItemLayout(160, "BLACK_STAINED_GLASS_PANE", 15, NetworkUtils.SPACE_STRING, Collections.singletonList(NetworkUtils.SPACE_STRING)))) + )).saveAsConfig(path); } } @Override - public MobConfig load() - { + public MobConfig load() { return Document.loadDocument(path).getObject("mobConfig", new TypeToken() { }.getType()); } diff --git a/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java b/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java index 95755de63..c76c2a6ca 100644 --- a/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java +++ b/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java @@ -48,7 +48,7 @@ public ConfigPermissions() throws Exception 0, true, new HashMap<>(), - MapWrapper.valueableHashMap(new Return("Lobby", Arrays.asList("test.permission.for.group.Lobby"))), + MapWrapper.valueableHashMap(new Return<>("Lobby", Arrays.asList("test.permission.for.group.Lobby"))), new HashMap<>(), new ArrayList<>() ); @@ -62,8 +62,8 @@ public ConfigPermissions() throws Exception 0, 100, false, - (HashMap) MapWrapper.valueableHashMap(new Return<>("*", true)), - MapWrapper.valueableHashMap(new Return("Lobby", Arrays.asList("test.permission.for.group.Lobby"))), + MapWrapper.valueableHashMap(new Return<>("*", true)), + MapWrapper.valueableHashMap(new Return<>("Lobby", Arrays.asList("test.permission.for.group.Lobby"))), new HashMap<>(), new ArrayList<>() ); diff --git a/cloudnet-modules/cloudnet-modules-signs/src/main/java/de/dytanic/cloudnetcore/signs/config/ConfigSignLayout.java b/cloudnet-modules/cloudnet-modules-signs/src/main/java/de/dytanic/cloudnetcore/signs/config/ConfigSignLayout.java index 40efa4548..f46723076 100644 --- a/cloudnet-modules/cloudnet-modules-signs/src/main/java/de/dytanic/cloudnetcore/signs/config/ConfigSignLayout.java +++ b/cloudnet-modules/cloudnet-modules-signs/src/main/java/de/dytanic/cloudnetcore/signs/config/ConfigSignLayout.java @@ -33,46 +33,46 @@ public ConfigSignLayout() Arrays.asList(new SignGroupLayouts( "default", Arrays.asList( - new SignLayout("empty", new String[]{"%server%", "&e%state%", "%online_players%/%max_players%", "%motd%"}, 159, 0), - new SignLayout("online", new String[]{"%server%", "&e%state%", "%online_players%/%max_players%", "%motd%"}, 159, 0), - new SignLayout("full", new String[]{"%server%", "&ePREMIUM", "%online_players%/%max_players%", "%motd%"}, 159, 0), - new SignLayout("maintenance", new String[]{"§8§m---------", "maintenance", "§cmode", "§8§m---------"}, 159, 0) + new SignLayout("empty", new String[]{"%server%", "&e%state%", "%online_players%/%max_players%", "%motd%"}, 159, "BROWN_TERRACOTTA", 0), + new SignLayout("online", new String[]{"%server%", "&e%state%", "%online_players%/%max_players%", "%motd%"}, 159, "BROWN_TERRACOTTA", 0), + new SignLayout("full", new String[]{"%server%", "&ePREMIUM", "%online_players%/%max_players%", "%motd%"}, 159, "BROWN_TERRACOTTA", 0), + new SignLayout("maintenance", new String[]{"§8§m---------", "maintenance", "§cmode", "§8§m---------"}, 159, "BROWN_TERRACOTTA", 0) ) )) , new SearchingAnimation(33, 11, Arrays.asList( - new SignLayout("loading1", new String[]{"", "server loads...", "o ", ""}, 159, 14), - new SignLayout("loading2", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading3", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading4", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading5", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading6", new String[]{"", "server loads...", "o o ", ""}, 159, 14), - new SignLayout("loading7", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading8", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading9", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading10", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading11", new String[]{"", "server loads...", "o o o ", ""}, 159, 14), - new SignLayout("loading12", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading13", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading14", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading15", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading16", new String[]{"", "server loads...", "o o o o ", ""}, 159, 14), - new SignLayout("loading17", new String[]{"", "server loads...", " o o o o", ""}, 159, 14), - new SignLayout("loading18", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading19", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading20", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading21", new String[]{"", "server loads...", " o o o ", ""}, 159, 14), - new SignLayout("loading22", new String[]{"", "server loads...", " o o o", ""}, 159, 14), - new SignLayout("loading23", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading24", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading25", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading26", new String[]{"", "server loads...", " o o ", ""}, 159, 14), - new SignLayout("loading27", new String[]{"", "server loads...", " o o", ""}, 159, 14), - new SignLayout("loading28", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading29", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading30", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading31", new String[]{"", "server loads...", " o ", ""}, 159, 14), - new SignLayout("loading32", new String[]{"", "server loads...", " o", ""}, 159, 14), - new SignLayout("loading33", new String[]{"", "server loads...", " ", ""}, 159, 14) + new SignLayout("loading1", new String[]{"", "server loads...", "o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading2", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading3", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading4", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading5", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading6", new String[]{"", "server loads...", "o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading7", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading8", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading9", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading10", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading11", new String[]{"", "server loads...", "o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading12", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading13", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading14", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading15", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading16", new String[]{"", "server loads...", "o o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading17", new String[]{"", "server loads...", " o o o o", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading18", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading19", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading20", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading21", new String[]{"", "server loads...", " o o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading22", new String[]{"", "server loads...", " o o o", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading23", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading24", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading25", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading26", new String[]{"", "server loads...", " o o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading27", new String[]{"", "server loads...", " o o", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading28", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading29", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading30", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading31", new String[]{"", "server loads...", " o ", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading32", new String[]{"", "server loads...", " o", ""}, 159, "BROWN_TERRACOTTA", 14), + new SignLayout("loading33", new String[]{"", "server loads...", " ", ""}, 159, "BROWN_TERRACOTTA", 14) )))).saveAsConfig(path); } } @@ -128,7 +128,7 @@ public boolean isAccepted(SignLayout signLayout) }); if (signLayout == null) { - groupLayouts.getLayouts().add(new SignLayout("empty", new String[]{"%server%", "&6%state%", "%online_players%/%max_players%", "%motd%"}, 159, 1)); + groupLayouts.getLayouts().add(new SignLayout("empty", new String[]{"%server%", "&6%state%", "%online_players%/%max_players%", "%motd%"}, 159, "BROWN_TERRACOTTA", 1)); injectable = true; } } diff --git a/pom.xml b/pom.xml index 6adac5d7d..88ad4c699 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ 5.0.4 1.24 1.8-1.12 - 1.8.8 + 1.8.8-R0.1-SNAPSHOT 1.7 0.6.1 From cdbce2f849256eb2da446048f2932fc6b3417605 Mon Sep 17 00:00:00 2001 From: Panamo Date: Thu, 25 Apr 2019 23:15:38 +0200 Subject: [PATCH 41/53] Change every spigot-dependency to the spigot-api --- cloudnet-examples/pom.xml | 2 +- cloudnet-tools/pom.xml | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cloudnet-examples/pom.xml b/cloudnet-examples/pom.xml index 67bb46a44..77b15b6e5 100644 --- a/cloudnet-examples/pom.xml +++ b/cloudnet-examples/pom.xml @@ -44,7 +44,7 @@ org.spigotmc - spigot + spigot-api ${dependency.spigot.version} provided diff --git a/cloudnet-tools/pom.xml b/cloudnet-tools/pom.xml index 0c1695244..9205d63e5 100644 --- a/cloudnet-tools/pom.xml +++ b/cloudnet-tools/pom.xml @@ -24,6 +24,11 @@ cloudnet-repo https://cloudnetservice.eu/repositories + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + @@ -35,7 +40,7 @@ org.spigotmc - spigot + spigot-api ${dependency.spigot.version} provided From cf7c7f287c690b234638cf037d1ea584cbf807f2 Mon Sep 17 00:00:00 2001 From: Panamo Date: Fri, 26 Apr 2019 15:06:41 +0200 Subject: [PATCH 42/53] Add check wallSign-check in SignSelector --- .../serverselectors/SignSelector.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java index 95fede1c9..3a4661c52 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/serverselectors/SignSelector.java @@ -32,7 +32,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.material.Attachable; import org.bukkit.material.MaterialData; import org.bukkit.util.Vector; @@ -475,20 +474,19 @@ public boolean exists(Sign sign) } } - public void changeBlock(Location location, String blockName, int blockId, int subId) - { - Bukkit.getScheduler().runTask(CloudServer.getInstance().getPlugin(), new Runnable() { - @Override - public void run() - { - Material material = ItemStackBuilder.getMaterialIgnoreVersion(blockName, blockId); - if (material != null && subId != -1) - { - MaterialData materialData = location.getBlock().getState().getData(); - if(materialData instanceof Attachable) { - Attachable attachable = (Attachable) materialData; - Block signBlock = location.getBlock().getRelative(attachable.getAttachedFace()); - BlockState blockState = signBlock.getState(); + public void changeBlock(Location location, String blockName, int blockId, int subId) { + Bukkit.getScheduler().runTask(CloudServer.getInstance().getPlugin(), () -> { + Material material = ItemStackBuilder.getMaterialIgnoreVersion(blockName, blockId); + BlockState signBlockState = location.getBlock().getState(); + + if (material != null && subId != -1 && signBlockState instanceof org.bukkit.block.Sign) { + MaterialData materialData = signBlockState.getData(); + + if(materialData instanceof org.bukkit.material.Sign) { // this will return false in newer 1.14 spigot versions, even if it's a sign + org.bukkit.material.Sign materialSign = (org.bukkit.material.Sign) materialData; + if(materialSign.isWallSign()) { + Block backBlock = location.getBlock().getRelative(materialSign.getAttachedFace()); + BlockState blockState = backBlock.getState(); blockState.setType(material); blockState.setData(new MaterialData(material, (byte) subId)); blockState.update(true); From 5a246f926f75dc60870f5d019c4a407557a00d9e Mon Sep 17 00:00:00 2001 From: Phillipp Glanz Date: Sat, 27 Apr 2019 16:30:03 +0200 Subject: [PATCH 43/53] Fixed #114 Add team color - new config parameter - new command parameter(perms group setColor ) * Bungee * Master - Fallback color from 2.1.14.3 if color not set * Get last color of prefix and set as team color --- .../dytanic/cloudnet/bridge/CloudServer.java | 22 +++++++++++++++++++ .../command/proxied/CommandPermissions.java | 14 ++++++++++++ .../permission/DefaultPermissionGroup.java | 2 +- .../player/permission/PermissionGroup.java | 1 + .../command/CommandPermissions.java | 16 ++++++++++++++ .../permissions/config/ConfigPermissions.java | 7 +++++- 6 files changed, 60 insertions(+), 2 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java index bc6f26a2e..40e34f19b 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java @@ -27,6 +27,10 @@ import de.dytanic.cloudnet.lib.utility.Acceptable; import de.dytanic.cloudnet.lib.utility.CollectionWrapper; import de.dytanic.cloudnet.lib.utility.document.Document; +import java.lang.reflect.Method; +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -523,6 +527,24 @@ private void addTeamEntry(Player target, Player all, PermissionGroup permissionG { e.printStackTrace(); } + try { + Optional setColor = Optional.of(team.getClass().getDeclaredMethod("setColor", ChatColor.class)); + if (setColor.isPresent()) { + Method method = setColor.get(); + method.setAccessible(true); + if(permissionGroup.getColor().length() != 0){ + method.invoke(team,ChatColor.getByChar(permissionGroup.getColor().replaceAll("&","").replaceAll("§",""))); + }else{ + method.invoke(team,ChatColor.getByChar(ChatColor.getLastColors(permissionGroup.getPrefix().replace('&','§')).replaceAll("&","").replaceAll("§",""))); + } + + } + } catch (NoSuchMethodException ignored) { + } catch (IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + } + + team.setPrefix(ChatColor.translateAlternateColorCodes('&', permissionGroup.getPrefix())); team.setSuffix(ChatColor.translateAlternateColorCodes('&', permissionGroup.getSuffix())); diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java index 3d1ec47b1..d9870093b 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandPermissions.java @@ -154,6 +154,19 @@ public void execute(CommandSender sender, String[] args) sender.sendMessage("The specified permission group doesn't exist"); } } + if (args[2].equalsIgnoreCase("setColor")) + { + if (permissionPool.getGroups().containsKey(args[1])) + { + PermissionGroup permissionGroup = permissionPool.getGroups().get(args[1]); + permissionGroup.setColor(args[3]); + CloudAPI.getInstance().updatePermissionGroup(permissionGroup); + sender.sendMessage("You set the needed color of the permission group " + permissionGroup.getName() + " to \"" + permissionGroup.getColor() + "\""); + } else + { + sender.sendMessage("The specified permission group doesn't exist"); + } + } if (args[2].equalsIgnoreCase("setTagId")) { @@ -498,6 +511,7 @@ public void accept(PermissionGroup permissionGroup) CloudAPI.getInstance().getPrefix() + "/cperms GROUP setPrefix ", CloudAPI.getInstance().getPrefix() + "/cperms GROUP setTagId ", CloudAPI.getInstance().getPrefix() + "/cperms GROUP setDefault ", + CloudAPI.getInstance().getPrefix() + "/cperms GROUP setColor ", CloudAPI.getInstance().getPrefix() + "/cperms USER ", CloudAPI.getInstance().getPrefix() + "/cperms USER GROUP SET ", CloudAPI.getInstance().getPrefix() + "/cperms USER GROUP ADD ", diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/DefaultPermissionGroup.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/DefaultPermissionGroup.java index 0fcfd2ab0..89aef8634 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/DefaultPermissionGroup.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/DefaultPermissionGroup.java @@ -14,6 +14,6 @@ public class DefaultPermissionGroup extends PermissionGroup { public DefaultPermissionGroup(String name) { - super(name, "§e", "§f", "§7", 98, 0, false, new HashMap<>(), new HashMap<>(), new HashMap<>(), new ArrayList<>()); + super(name, "§c","§e", "§f", "§7", 98, 0, false, new HashMap<>(), new HashMap<>(), new HashMap<>(), new ArrayList<>()); } } \ No newline at end of file diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java index fcd61a488..dfd78a234 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionGroup.java @@ -14,6 +14,7 @@ public class PermissionGroup { protected String name; + protected String color; protected String prefix; protected String suffix; protected String display; diff --git a/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/command/CommandPermissions.java b/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/command/CommandPermissions.java index 60118ba0c..671d6c66c 100644 --- a/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/command/CommandPermissions.java +++ b/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/command/CommandPermissions.java @@ -136,6 +136,21 @@ public void run(String obj) sender.sendMessage("The specified permission group doesn't exist"); } } + if (args[2].equalsIgnoreCase("setColor")) + { + if (permissionPool.getGroups().containsKey(args[1])) + { + PermissionGroup permissionGroup = permissionPool.getGroups().get(args[1]); + permissionGroup.setColor(args[3].toLowerCase()); + PermissionModule.getInstance().getConfigPermission().updatePermissionGroup(permissionGroup); + CloudNet.getInstance().getNetworkManager().reload(); + CloudNet.getInstance().getNetworkManager().updateAll0(); + sender.sendMessage("You set the color for the permission group " + permissionGroup.getName() + " to \"" + permissionGroup.getColor() + "\""); + } else + { + sender.sendMessage("The specified permission group doesn't exist"); + } + } if (args[2].equalsIgnoreCase("setDefault")) { @@ -482,6 +497,7 @@ public void run(String obj) "perms GROUP setTagId ", "perms GROUP setDefault ", "perms GROUP setJoinPower ", + "perms GROUP setColor ", "perms USER ", "perms USER GROUP SET ", "perms USER GROUP ADD ", diff --git a/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java b/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java index c76c2a6ca..d01fe88d8 100644 --- a/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java +++ b/cloudnet-modules/cloudnet-modules-permission/src/main/java/de/dytanic/cloudnetcore/permissions/config/ConfigPermissions.java @@ -41,10 +41,12 @@ public ConfigPermissions() throws Exception { PermissionGroup member = new PermissionGroup( "default", + "&8", "§eMember §7▎ ", "§f", "§e", - 9999, + 9999 + , 0, true, new HashMap<>(), @@ -56,6 +58,7 @@ public ConfigPermissions() throws Exception PermissionGroup admin = new PermissionGroup( "Admin", + "&c", "§cAdmin §7▎ ", "§f", "§c", @@ -156,6 +159,7 @@ public void write(PermissionGroup permissionGroup, Configuration configuration) group.set("prefix", permissionGroup.getPrefix()); group.set("suffix", permissionGroup.getSuffix()); group.set("display", permissionGroup.getDisplay()); + group.set("color", permissionGroup.getColor()); group.set("tagId", permissionGroup.getTagId()); group.set("joinPower", permissionGroup.getJoinPower()); group.set("defaultGroup", permissionGroup.isDefaultGroup()); @@ -211,6 +215,7 @@ public Map read(Configuration configuration) PermissionGroup permissionGroup = new PermissionGroup( key, + group.getString("color"), group.getString("prefix"), group.getString("suffix"), group.getString("display"), From 3035020f1b92c0643f3b86707b89b3662e81c8fd Mon Sep 17 00:00:00 2001 From: Marvin Date: Sat, 27 Apr 2019 21:44:22 +0200 Subject: [PATCH 44/53] Refactor and fix logger calls to use proper String formatting Signed-off-by: Marvin --- .../listener/bukkit/BukkitListener.java | 12 +- .../listener/proxied/ProxiedListener.java | 15 +-- .../bridge/vault/VaultPermissionImpl.java | 14 +-- .../de/dytanic/cloudnet/api/CloudAPI.java | 108 +++++++----------- .../cloudnetcore/network/NetworkManager.java | 41 ++++--- 5 files changed, 80 insertions(+), 110 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java index 6f9ec40e4..63e07cb56 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/bukkit/BukkitListener.java @@ -44,8 +44,7 @@ public void handle0(AsyncPlayerPreLoginEvent e) Level.FINEST, this.getClass().getSimpleName(), "handle0", - "Handling async player pre login event: %s", - e); + String.format("Handling async player pre login event: %s", e)); for (Player all : Bukkit.getOnlinePlayers()) if (all.getUniqueId().equals(e.getUniqueId())) { @@ -63,8 +62,7 @@ public void handle(BukkitSubChannelMessageEvent event) Level.FINEST, this.getClass().getSimpleName(), "handle", - "Handling bukkit sub channel message event: %s", - event); + String.format("Handling bukkit sub channel message event: %s", event)); if (event.getChannel().equalsIgnoreCase("cloudnet_internal") || event.getMessage().equalsIgnoreCase("server_connect_request")) { @@ -90,8 +88,7 @@ public void handleLast(PlayerLoginEvent event) Level.FINEST, this.getClass().getSimpleName(), "handleLast", - "Handling player login event: %s", - event); + String.format("Handling player login event: %s", event)); if (this.kicks.contains(event.getPlayer().getUniqueId())) { this.kicks.remove(event.getPlayer().getUniqueId()); @@ -107,8 +104,7 @@ public void handleFirst(PlayerLoginEvent event) Level.FINEST, this.getClass().getSimpleName(), "handleFirst", - "Handling player login event: %s", - event); + String.format("Handling player login event: %s", event)); if (CloudServer.getInstance().getCloudPlayers().containsKey(event.getPlayer().getUniqueId()) && requests.contains(event.getPlayer().getUniqueId())) { requests.remove(event.getPlayer().getUniqueId()); diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java index 808a31c53..b72a81907 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/listener/proxied/ProxiedListener.java @@ -94,8 +94,7 @@ public void handlePluginMessage(PluginMessageEvent e) Level.FINEST, this.getClass().getSimpleName(), "handlePluginMessage", - "Handling plugin message event: %s", - e); + String.format("Handling plugin message event: %s", e)); if (e.getTag().equals("MC|BSign") || e.getTag().equals("MC|BEdit")) if (CloudProxy.getInstance().getProxyGroup() != null && CloudProxy.getInstance().getProxyGroup().getProxyConfig().getCustomPayloadFixer()) e.setCancelled(true); @@ -108,8 +107,7 @@ public void handlePlayerServerSwitch(ServerSwitchEvent e) Level.FINEST, this.getClass().getSimpleName(), "handlePlayerServerSwitch", - "Handling server switch event: %s", - e); + String.format("Handling server switch event: %s", e)); CloudPlayer cloudPlayer = CloudProxy.getInstance().getCloudPlayers().get(e.getPlayer().getUniqueId()); cloudPlayer.setServer(e.getPlayer().getServer().getInfo().getName()); @@ -134,8 +132,7 @@ public void handleLogin(LoginEvent e) Level.FINEST, this.getClass().getSimpleName(), "handleLogin", - "Handling login event: %s", - e); + String.format("Handling login event: %s", e)); PlayerConnection playerConnection = new PlayerConnection( e.getConnection().getUniqueId(), e.getConnection().getName(), e.getConnection().getVersion(), @@ -205,8 +202,7 @@ public void handlePost(PostLoginEvent e) Level.FINEST, this.getClass().getSimpleName(), "handlePost", - "Handling post login event: %s", - e); + String.format("Handling post login event: %s", e)); CloudProxy.getInstance().update(); CloudAPI.getInstance().getNetworkConnection().sendPacket(new PacketOutLoginSuccess(e.getPlayer().getUniqueId())); @@ -315,8 +311,7 @@ public void handleServerConnect(ServerConnectEvent event) Level.FINEST, this.getClass().getSimpleName(), "handleServerConnect", - "Handling server connect event: %s", - event); + String.format("Handling server connect event: %s", event)); if (event.getPlayer().getServer() == null) { String fallback = CloudProxy.getInstance().fallback(event.getPlayer()); diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java index 404187cfd..d58503e74 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/vault/VaultPermissionImpl.java @@ -47,7 +47,7 @@ public boolean playerAdd(String world, String player, String permission) { permissionEntity.getPermissions().put(permission, true); offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); - CloudAPI.getInstance().getLogger().finest(player + " added permission \"" + permission + "\""); + CloudAPI.getInstance().getLogger().finest(player + " added permission \"" + permission + '"'); return true; } @@ -58,7 +58,7 @@ public boolean playerRemove(String world, String player, String permission) { permissionEntity.getPermissions().remove(permission); offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); - CloudAPI.getInstance().getLogger().finest(player + " removed permission \"" + permission + "\""); + CloudAPI.getInstance().getLogger().finest(player + " removed permission \"" + permission + '"'); return true; } @@ -73,7 +73,7 @@ public boolean groupAdd(String world, String group, String permission) { PermissionGroup permissionGroup = CloudAPI.getInstance().getPermissionGroup(group); permissionGroup.getPermissions().put(permission, true); CloudAPI.getInstance().updatePermissionGroup(permissionGroup); - CloudAPI.getInstance().getLogger().finest(group + " added permission \"" + permission + "\""); + CloudAPI.getInstance().getLogger().finest(group + " added permission \"" + permission + '"'); return true; } @@ -82,7 +82,7 @@ public boolean groupRemove(String world, String group, String permission) { PermissionGroup permissionGroup = CloudAPI.getInstance().getPermissionGroup(group); permissionGroup.getPermissions().remove(permission); CloudAPI.getInstance().updatePermissionGroup(permissionGroup); - CloudAPI.getInstance().getLogger().finest(group + " removed permission \"" + permission + "\""); + CloudAPI.getInstance().getLogger().finest(group + " removed permission \"" + permission + '"'); return true; } @@ -106,7 +106,7 @@ public boolean playerAddGroup(String world, String player, String group) { permissionEntity.getGroups().add(new GroupEntityData(group, 0)); offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); - CloudAPI.getInstance().getLogger().finest(player + " added to group \"" + group + "\""); + CloudAPI.getInstance().getLogger().finest(player + " added to group \"" + group + '"'); return true; } @@ -123,7 +123,7 @@ public boolean playerRemoveGroup(String world, String player, String group) { offlinePlayer.setPermissionEntity(permissionEntity); updatePlayer(offlinePlayer); - CloudAPI.getInstance().getLogger().finest(player + " removed from group \"" + group + "\""); + CloudAPI.getInstance().getLogger().finest(player + " removed from group \"" + group + '"'); return true; } @@ -164,4 +164,4 @@ private OfflinePlayer getPlayer(String name) { return offlinePlayer; } -} \ No newline at end of file +} diff --git a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java index d63490d31..24a729bf4 100644 --- a/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java +++ b/cloudnet-api/cloudnet-api-core/src/main/java/de/dytanic/cloudnet/api/CloudAPI.java @@ -124,12 +124,11 @@ public void shutdown() public CloudAPI update(ServerInfo serverInfo) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "update", - "Updating server info: %s", - serverInfo); + String.format("Updating server info: %s", serverInfo)); if (networkConnection.isConnected()) networkConnection.sendPacket(new PacketOutUpdateServerInfo(serverInfo)); return this; @@ -137,12 +136,11 @@ public CloudAPI update(ServerInfo serverInfo) public CloudAPI update(ProxyInfo proxyInfo) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "update", - "Updating proxy info: %s", - proxyInfo); + String.format("Updating proxy info: %s", proxyInfo)); if (networkConnection.isConnected()) networkConnection.sendPacket(new PacketOutUpdateProxyInfo(proxyInfo)); return this; @@ -451,12 +449,11 @@ public void updateServerGroup(ServerGroup serverGroup) */ public void updatePermissionGroup(PermissionGroup permissionGroup) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "updatePermissionGroup", - "Updating permission group: %s", - permissionGroup); + String.format("Updating permission group: %s", permissionGroup)); networkConnection.sendPacket(new PacketOutUpdatePermissionGroup(permissionGroup)); } @@ -467,12 +464,11 @@ public void updatePermissionGroup(PermissionGroup permissionGroup) */ public void updateProxyGroup(ProxyGroup proxyGroup) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "updateProxyGroup", - "Updating proxy group: %s", - proxyGroup); + String.format("Updating proxy group: %s", proxyGroup)); networkConnection.sendPacket(new PacketOutUpdateProxyGroup(proxyGroup)); } @@ -481,12 +477,11 @@ public void updateProxyGroup(ProxyGroup proxyGroup) */ public void sendCloudCommand(String commandLine) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "sendCloudCommand", - "Sending cloud command: %s", - commandLine); + String.format("Sending cloud command: %s", commandLine)); networkConnection.sendPacket(new PacketOutExecuteCommand(commandLine)); } @@ -497,12 +492,11 @@ public void sendCloudCommand(String commandLine) */ public void dispatchConsoleMessage(String output) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "dispatchConsoleMessage", - "Dispatching console message: %s", - output); + String.format("Dispatching console message: %s", output)); networkConnection.sendPacket(new PacketOutDispatchConsoleMessage(output)); } @@ -515,12 +509,11 @@ public void dispatchConsoleMessage(String output) */ public void sendConsoleMessage(DefaultType defaultType, String serverId, String commandLine) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "sendConsoleMessage", - "Sending console message: %s %s %s", - new Object[]{defaultType, serverId, commandLine}); + String.format("Sending console message: %s %s %s", defaultType, serverId, commandLine)); networkConnection.sendPacket(new PacketOutServerDispatchCommand(defaultType, serverId, commandLine)); } @@ -537,16 +530,15 @@ public Map getProxyGroupMap() /** * Stop a game server with the parameter of the serverId * - * @param serverId + * @param serverId the server-id to stop */ public void stopServer(String serverId) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "stopServer", - "Stopping server: %s", - serverId); + String.format("Stopping server: %s", serverId)); networkConnection.sendPacket(new PacketOutStopServer(serverId)); } @@ -555,12 +547,11 @@ public void stopServer(String serverId) */ public void stopProxy(String proxyId) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "stopProxy", - "Stopping proxy: %s", - proxyId); + String.format("Stopping proxy: %s", proxyId)); networkConnection.sendPacket(new PacketOutStopProxy(proxyId)); } @@ -571,12 +562,11 @@ public void stopProxy(String proxyId) */ public String createServerLogUrl(String serverId) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "createServerLogUrl", - "Creating server log url: %s", - serverId); + String.format("Creating server log url: %s", serverId)); String rnd = NetworkUtils.randomString(10); networkConnection.sendPacket(new PacketOutCreateServerLog(rnd, serverId)); ConnectableAddress connectableAddress = cloudConfigLoader.loadConnnection(); @@ -652,12 +642,11 @@ public void startProxy(WrapperInfo wrapperInfo, ProxyGroup proxyGroup, int memor */ public void startProxy(ProxyGroup proxyGroup, int memory, String[] processParameters, String url, Collection plugins, Document properties) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "startProxy", - "Starting proxy: %s, %d, %s, %s, %s, %s", - new Object[]{proxyGroup, memory, processParameters, url, plugins, properties}); + String.format("Starting proxy: %s, %d, %s, %s, %s, %s", proxyGroup, memory, Arrays.toString(processParameters), url, plugins, properties)); networkConnection.sendPacket(new PacketOutStartProxy(proxyGroup, memory, processParameters, url, plugins, properties)); } @@ -668,12 +657,11 @@ public void startProxy(ProxyGroup proxyGroup, int memory, String[] processParame */ public void startProxy(WrapperInfo wrapperInfo, ProxyGroup proxyGroup, int memory, String[] processParameters, String url, Collection plugins, Document properties) { - CloudAPI.getInstance().getLogger().logp( - Level.FINEST, - this.getClass().getSimpleName(), - "startProxy", - "Starting proxy: %s, %s, %d, %s, %s, %s, %s", - new Object[]{wrapperInfo, proxyGroup, memory, processParameters, url, plugins, properties}); + this.logger.logp( + Level.FINEST, + this.getClass().getSimpleName(), + "startProxy", + String.format("Starting proxy: %s, %s, %d, %s, %s, %s, %s", wrapperInfo, proxyGroup, memory, Arrays.toString(processParameters), url, plugins, properties)); networkConnection.sendPacket(new PacketOutStartProxy(wrapperInfo.getServerId(), proxyGroup, memory, processParameters, url, plugins, properties)); } @@ -947,12 +935,11 @@ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleSer */ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "startGameServer", - "Starting game server: %s, %s, %d, %s, %s, %s, %s, %s, %s, %s", - new Object[]{simpleServerGroup, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins}); + String.format("Starting game server: %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", simpleServerGroup, serverConfig, memory, Arrays.toString(processParameters), template, customServerName, onlineMode, priorityStop, properties, url, plugins)); networkConnection.sendPacket(new PacketOutStartServer(simpleServerGroup.getName(), memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -972,12 +959,11 @@ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig se */ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins, String serverId) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "startGameServer", - "Starting game server: %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", - new Object[]{simpleServerGroup, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins, serverId}); + String.format("Starting game server: %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", simpleServerGroup, serverConfig, memory, Arrays.toString(processParameters), template, customServerName, onlineMode, priorityStop, properties, url, plugins, serverId)); networkConnection.sendPacket(new PacketOutStartServer(simpleServerGroup.getName(), memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -997,12 +983,11 @@ public void startGameServer(SimpleServerGroup simpleServerGroup, ServerConfig se */ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleServerGroup, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "startGameServer", - "Starting game server: %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", - new Object[]{wrapperInfo, simpleServerGroup, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins}); + String.format("Starting game server: %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", wrapperInfo, simpleServerGroup, serverConfig, memory, Arrays.toString(processParameters), template, customServerName, onlineMode, priorityStop, properties, url, plugins)); networkConnection.sendPacket(new PacketOutStartServer(wrapperInfo, simpleServerGroup.getName(), memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -1022,12 +1007,11 @@ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleSer */ public void startGameServer(WrapperInfo wrapperInfo, SimpleServerGroup simpleServerGroup, String serverId, ServerConfig serverConfig, int memory, String[] processParameters, Template template, String customServerName, boolean onlineMode, boolean priorityStop, Properties properties, String url, Collection plugins) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "startGameServer", - "Starting game server: %s, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", - new Object[]{wrapperInfo, simpleServerGroup, serverId, serverConfig, memory, processParameters, template, customServerName, onlineMode, priorityStop, properties, url, plugins}); + String.format("Starting game server: %s, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s", wrapperInfo, simpleServerGroup, serverId, serverConfig, memory, Arrays.toString(processParameters), template, customServerName, onlineMode, priorityStop, properties, url, plugins)); networkConnection.sendPacket(new PacketOutStartServer(wrapperInfo, simpleServerGroup.getName(), serverId, memory, serverConfig, properties, priorityStop, processParameters, template, customServerName, onlineMode, plugins, url)); } @@ -1053,12 +1037,11 @@ public void startCloudServer(WrapperInfo wrapperInfo, String serverName, ServerC public void startCloudServer(WrapperInfo wrapperInfo, String serverName, ServerConfig serverConfig, int memory, boolean priorityStop, String[] processPreParameters, Collection plugins, Properties properties, ServerGroupType serverGroupType) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "startCloudServer", - "Starting cloud server: %s, %s, %s, %d, %s, %s, %s, %s, %s", - new Object[]{wrapperInfo, serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType}); + String.format("Starting cloud server: %s, %s, %s, %d, %s, %s, %s, %s, %s", wrapperInfo, serverName, serverConfig, memory, priorityStop, Arrays.toString(processPreParameters), plugins, properties, serverGroupType)); networkConnection.sendPacket(new PacketOutStartCloudServer(wrapperInfo, serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType)); } @@ -1084,12 +1067,11 @@ public void startCloudServer(String serverName, ServerConfig serverConfig, int m public void startCloudServer(String serverName, ServerConfig serverConfig, int memory, boolean priorityStop, String[] processPreParameters, Collection plugins, Properties properties, ServerGroupType serverGroupType) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "startCloudServer", - "Starting cloud server: %s, %s, %d, %s, %s, %s, %s, %s", - new Object[]{serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType}); + String.format("Starting cloud server: %s, %s, %d, %s, %s, %s, %s, %s", serverName, serverConfig, memory, priorityStop, Arrays.toString(processPreParameters), plugins, properties, serverGroupType)); networkConnection.sendPacket(new PacketOutStartCloudServer(serverName, serverConfig, memory, priorityStop, processPreParameters, plugins, properties, serverGroupType)); } @@ -1102,12 +1084,11 @@ public void startCloudServer(String serverName, ServerConfig serverConfig, int m */ public void updatePlayer(CloudPlayer cloudPlayer) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "updatePlayer", - "Updating cloud player: %s, ", - cloudPlayer); + String.format(String.format("Updating cloud player: %s", cloudPlayer))); networkConnection.sendPacket(new PacketOutUpdatePlayer(CloudPlayer.newOfflinePlayer(cloudPlayer))); } @@ -1118,12 +1099,11 @@ public void updatePlayer(CloudPlayer cloudPlayer) */ public void updatePlayer(OfflinePlayer offlinePlayer) { - CloudAPI.getInstance().getLogger().logp( + this.logger.logp( Level.FINEST, this.getClass().getSimpleName(), "updatePlayer", - "Updating offline player: %s, ", - offlinePlayer); + String.format("Updating offline player: %s", offlinePlayer)); networkConnection.sendPacket(new PacketOutUpdatePlayer(offlinePlayer)); } diff --git a/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/network/NetworkManager.java b/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/network/NetworkManager.java index c91ddf269..16f024a47 100644 --- a/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/network/NetworkManager.java +++ b/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/network/NetworkManager.java @@ -85,61 +85,61 @@ public void updateAll0() public void handlePlayerLoginRequest(ProxyServer proxyServer, PlayerConnection cloudPlayerConnection, UUID uniqueId) { - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " onlinePlayers"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " onlinePlayers"); if (this.onlinePlayers.containsKey(cloudPlayerConnection.getUniqueId())) { proxyServer.sendPacketSynchronized(new PacketOutLoginPlayer(uniqueId, null, "Already connected in network")); return; } - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " call LoginRequestEvent"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " call LoginRequestEvent"); LoginRequestEvent loginRequestEvent = new LoginRequestEvent(proxyServer, cloudPlayerConnection); CloudNet.getInstance().getEventManager().callEvent(loginRequestEvent); PlayerDatabase playerDatabase = CloudNet.getInstance().getDbHandlers().getPlayerDatabase(); OfflinePlayer offlinePlayer = null; - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " database contains"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " database contains"); if (!playerDatabase.containsPlayer(cloudPlayerConnection.getUniqueId())) { - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " database register"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " database register"); offlinePlayer = playerDatabase.registerPlayer(cloudPlayerConnection); } if (offlinePlayer == null) { - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " database get"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " database get"); offlinePlayer = playerDatabase.getPlayer(cloudPlayerConnection.getUniqueId()); } - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " create CloudPlayer"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " create CloudPlayer"); CloudPlayer cloudPlayer = new CloudPlayer(offlinePlayer, cloudPlayerConnection, proxyServer.getServerId()); cloudPlayer.setPlayerExecutor(CorePlayerExecutor.INSTANCE); if (cloudPlayer.getFirstLogin() == null) { - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " set firstLogin"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " set firstLogin"); cloudPlayer.setFirstLogin(System.currentTimeMillis()); } - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " call PlayerInitEvent"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " call PlayerInitEvent"); CloudNet.getInstance().getEventManager().callEvent(new PlayerInitEvent(cloudPlayer)); - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " NameToUUIDDatabase append"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " NameToUUIDDatabase append"); CloudNet.getInstance().getDbHandlers().getNameToUUIDDatabase().append(new MultiValue<>(cloudPlayerConnection.getName(), cloudPlayerConnection.getUniqueId())); - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " NameToUUIDDatabase replace"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " NameToUUIDDatabase replace"); CloudNet.getInstance().getDbHandlers().getNameToUUIDDatabase().replace(new MultiValue<>(cloudPlayerConnection.getUniqueId(), cloudPlayerConnection.getName())); - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " setName"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " setName"); cloudPlayer.setName(cloudPlayerConnection.getName()); - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " updatePlayer"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " updatePlayer"); CloudNet.getInstance().getDbHandlers().getPlayerDatabase().updatePlayer(CloudPlayer.newOfflinePlayer(cloudPlayer)); - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " PacketOutLoginPlayer"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " PacketOutLoginPlayer"); proxyServer.sendPacket(new PacketOutLoginPlayer(uniqueId, cloudPlayer, "successful Login")); - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " waitingPlayers"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " waitingPlayers"); this.waitingPlayers.put(cloudPlayer.getUniqueId(), cloudPlayer); - CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + "#" + uniqueId + " handlePlayerLogin"); + CloudNet.getLogger().debug("player login request " + cloudPlayerConnection.getName() + '#' + uniqueId + " handlePlayerLogin"); handlePlayerLogin(cloudPlayer); } @@ -293,7 +293,7 @@ public void handleCommandExecute(PlayerCommandExecution playerCommandExecutor) if (cloudPlayer != null) { CloudNet.getLogger().info("Player [" + playerCommandExecutor.getName() + "] executed command [" + playerCommandExecutor.getCommandLine() + - "] on [" + cloudPlayer.getProxy() + NetworkUtils.SLASH_STRING + cloudPlayer.getServer() + "]"); + "] on [" + cloudPlayer.getProxy() + NetworkUtils.SLASH_STRING + cloudPlayer.getServer() + ']'); CloudNet.getInstance().getEventManager().callEvent(new CommandExecutionEvent(playerCommandExecutor)); StatisticManager.getInstance().playerCommandExecutions(); } @@ -306,7 +306,7 @@ public void handlePlayerUpdate(CloudPlayer cloudPlayer) this.sendAllUpdate(new PacketOutUpdatePlayer(cloudPlayer)); if (cloudPlayer.getServer() != null) - System.out.println("Player [" + cloudPlayer.getName() + NetworkUtils.SLASH_STRING + cloudPlayer.getUniqueId() + "/] update [server=" + cloudPlayer.getServer() + ", proxy=" + cloudPlayer.getProxy() + ", address=" + cloudPlayer.getPlayerConnection().getHost() + "]"); + System.out.println("Player [" + cloudPlayer.getName() + NetworkUtils.SLASH_STRING + cloudPlayer.getUniqueId() + "/] update [server=" + cloudPlayer.getServer() + ", proxy=" + cloudPlayer.getProxy() + ", address=" + cloudPlayer.getPlayerConnection().getHost() + ']'); } public void handleCustomChannelMessage(String channel, String message, Document document, PacketSender packetSender) @@ -414,10 +414,9 @@ public boolean accept(INetworkComponent networkComponent) (packet instanceof PacketOutUpdateServerInfo || packet instanceof PacketOutServerAdd || packet instanceof PacketOutServerRemove)) return true; - if (serverGroup.getAdvancedServerConfig().isNotifyPlayerUpdatesFromNoCurrentPlayer() && + return serverGroup.getAdvancedServerConfig().isNotifyPlayerUpdatesFromNoCurrentPlayer() && (packet instanceof PacketOutUpdatePlayer || packet instanceof PacketOutLoginPlayer || packet instanceof PacketOutLogoutPlayer || - packet instanceof PacketOutUpdateOfflinePlayer)) - return true; + packet instanceof PacketOutUpdateOfflinePlayer); } } @@ -522,4 +521,4 @@ public SimpleServerGroup doCatch(ServerGroup key) return cloudNetwork; } -} \ No newline at end of file +} From 8e5e8471999947c4532139c94468ba40690989f5 Mon Sep 17 00:00:00 2001 From: Marvin Date: Sun, 28 Apr 2019 01:30:27 +0200 Subject: [PATCH 45/53] Finally fix the debug output in spigot by changing the log4j context and configuration. This only affects the log file Signed-off-by: Marvin --- cloudnet-api/cloudnet-api-bridge/pom.xml | 12 ++++++++++++ .../command/bukkit/CommandCloudServer.java | 15 ++++++++++++++- .../internal/command/proxied/CommandCloud.java | 6 +++--- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/pom.xml b/cloudnet-api/cloudnet-api-bridge/pom.xml index ff1b39471..13b65c8e0 100644 --- a/cloudnet-api/cloudnet-api-bridge/pom.xml +++ b/cloudnet-api/cloudnet-api-bridge/pom.xml @@ -27,6 +27,18 @@ ${project.version} compile + + org.apache.logging.log4j + log4j-api + 2.11.2 + provided + + + org.apache.logging.log4j + log4j-core + 2.11.2 + provided + com.github.MilkBowl VaultAPI diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java index 2a1a93fe8..8a159d6f6 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/bukkit/CommandCloudServer.java @@ -19,6 +19,11 @@ import de.dytanic.cloudnet.lib.utility.CollectionWrapper; import de.dytanic.cloudnet.lib.utility.document.Document; import de.dytanic.cloudnet.lib.utility.threading.Runnabled; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.command.Command; @@ -305,11 +310,19 @@ public void run(MobSelector.MobImpl obj) } if (args[0].equalsIgnoreCase("debug")) { CloudAPI.getInstance().setDebug(!CloudAPI.getInstance().isDebug()); - if(CloudAPI.getInstance().isDebug()) { + + final LoggerContext context = (LoggerContext) LogManager.getContext(false); + final Configuration configuration = context.getConfiguration(); + final LoggerConfig rootLoggerConfig = configuration.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + + if (CloudAPI.getInstance().isDebug()) { + rootLoggerConfig.setLevel(Level.ALL); commandSender.sendMessage("§aDebug output for server has been enabled."); } else { + rootLoggerConfig.setLevel(Level.INFO); commandSender.sendMessage("§cDebug output for server has been disabled."); } + context.updateLoggers(configuration); } break; case 3: diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java index 2f3844cf2..85fcf6eec 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/command/proxied/CommandCloud.java @@ -214,12 +214,12 @@ public void execute(CommandSender commandSender, String[] args) commandSender.sendMessage(builder.substring(0)); return; } - if (args[0].equalsIgnoreCase("debug")) { + if (args[0].equalsIgnoreCase("debug") && commandSender.hasPermission("cloudnet.command.cloud.debug")) { CloudAPI.getInstance().setDebug(!CloudAPI.getInstance().isDebug()); if(CloudAPI.getInstance().isDebug()) { - commandSender.sendMessage("§aDebug output for proxy has been enabled."); + commandSender.sendMessage(TextComponent.fromLegacyText("§aDebug output for proxy has been enabled.")); } else { - commandSender.sendMessage("§cDebug output for proxy has been disabled."); + commandSender.sendMessage(TextComponent.fromLegacyText("§cDebug output for proxy has been disabled.")); } } break; From 92d29539aa905f70a15a88ac268a38a38d5ffc22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 1 May 2019 05:31:14 +0000 Subject: [PATCH 46/53] Bump dependency.netty.version from 4.1.35.Final to 4.1.36.Final Bumps `dependency.netty.version` from 4.1.35.Final to 4.1.36.Final. Updates `netty-transport-native-epoll` from 4.1.35.Final to 4.1.36.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.35.Final...netty-4.1.36.Final) Updates `netty-transport-native-kqueue` from 4.1.35.Final to 4.1.36.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.35.Final...netty-4.1.36.Final) Updates `netty-codec` from 4.1.35.Final to 4.1.36.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.35.Final...netty-4.1.36.Final) Updates `netty-handler` from 4.1.35.Final to 4.1.36.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.35.Final...netty-4.1.36.Final) Updates `netty-codec-http` from 4.1.35.Final to 4.1.36.Final - [Release notes](https://github.com/netty/netty/releases) - [Commits](https://github.com/netty/netty/compare/netty-4.1.35.Final...netty-4.1.36.Final) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 88ad4c699..34ee27a70 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ RELEASE 1.18.6 - 4.1.35.Final + 4.1.36.Final 2.8.5 2.14.6 5.0.4 From c009ee5a8d3615f821fe3d11ad59cc2437513d5a Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 1 May 2019 19:45:12 +0200 Subject: [PATCH 47/53] Return the actual permission value instead of true for wildcard permissions. This fixes negative wildcard permissions Signed-off-by: Marvin --- .../cloudnet/lib/player/permission/PermissionEntity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java index 5bf67d60d..8981064e3 100644 --- a/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java +++ b/cloudnet-lib/src/main/java/de/dytanic/cloudnet/lib/player/permission/PermissionEntity.java @@ -89,7 +89,7 @@ private boolean hasWildcardPermission(PermissionGroup permissionGroup, String pe { for (Map.Entry entry : permissionGroup.getPermissions().entrySet()) if (entry.getKey().endsWith("*") && entry.getKey().length() > 1 && permission.startsWith(entry.getKey().substring(0, entry.getKey().length() - 1))) - return true; + return entry.getValue(); if (group != null && permissionGroup.getServerGroupPermissions().containsKey(group)) for (String perms : permissionGroup.getServerGroupPermissions().get(group)) @@ -103,7 +103,7 @@ private boolean hasWildcardPermission(String permission) { for (Map.Entry entry : getPermissions().entrySet()) if (entry.getKey().endsWith("*") && entry.getKey().length() > 1 && permission.startsWith(entry.getKey().substring(0, entry.getKey().length() - 1))) - return true; + return entry.getValue(); return false; } From 0176c282ebaef28cd28932d9b620b9495135de10 Mon Sep 17 00:00:00 2001 From: Marvin Date: Fri, 3 May 2019 22:21:13 +0200 Subject: [PATCH 48/53] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fa494b68b..a0c534680 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,9 @@ Use of KVM virtualization or dedicated servers is recommended. ### Support - * Spigot-Support » 1.7.10 - 1.13.2 + * Spigot-Support » 1.7.10 - 1.14.2 * PaperSpigot, TacoSpigot, Hose, Torch - * BungeeCord-Support » 1.7.10 - 1.13.2 + * BungeeCord-Support » 1.7.10 - 1.14.2 * Flexpipe, HexaCord, Waterfall, TraverTine ### Discord @@ -61,14 +61,14 @@ Maven: de.dytanic.cloudnet cloudnet-api-bridge - 2.1.14 + 2.1.15 provided de.dytanic.cloudnet cloudnet-core - 2.1.14 + 2.1.15 provided From 1fc47538c45c6547e60ade239a4d46709cc71370 Mon Sep 17 00:00:00 2001 From: Marvin Date: Fri, 3 May 2019 22:30:45 +0200 Subject: [PATCH 49/53] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a0c534680..9ee961af1 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,9 @@ Use of KVM virtualization or dedicated servers is recommended. ### Support - * Spigot-Support » 1.7.10 - 1.14.2 + * Spigot-Support » 1.7.10 - 1.14 * PaperSpigot, TacoSpigot, Hose, Torch - * BungeeCord-Support » 1.7.10 - 1.14.2 + * BungeeCord-Support » 1.7.10 - 1.14 * Flexpipe, HexaCord, Waterfall, TraverTine ### Discord From c39dfd2a93ead6534f1c541ac9227841f1d0e634 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 7 May 2019 05:26:45 +0000 Subject: [PATCH 50/53] Bump lombok from 1.18.6 to 1.18.8 Bumps [lombok](https://github.com/rzwitserloot/lombok) from 1.18.6 to 1.18.8. - [Release notes](https://github.com/rzwitserloot/lombok/releases) - [Changelog](https://github.com/rzwitserloot/lombok/blob/master/doc/changelog.markdown) - [Commits](https://github.com/rzwitserloot/lombok/compare/v1.18.6...v1.18.8) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 34ee27a70..ede761337 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 2.1.15 RELEASE - 1.18.6 + 1.18.8 4.1.36.Final 2.8.5 2.14.6 From 203233df5e5aa6ea35a83b4b6d2e9c92252adf9b Mon Sep 17 00:00:00 2001 From: Panamo Date: Sat, 11 May 2019 11:16:31 +0200 Subject: [PATCH 51/53] Add missing deprecates Simplify getting of permissionGroup Remove useless Optional Remove useless method --- .../dytanic/cloudnet/bridge/CloudServer.java | 85 +++++++------------ .../internal/util/ItemStackBuilder.java | 2 + 2 files changed, 32 insertions(+), 55 deletions(-) diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java index 40e34f19b..53b322e95 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/CloudServer.java @@ -27,10 +27,6 @@ import de.dytanic.cloudnet.lib.utility.Acceptable; import de.dytanic.cloudnet.lib.utility.CollectionWrapper; import de.dytanic.cloudnet.lib.utility.document.Document; -import java.lang.reflect.Method; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -44,8 +40,8 @@ import java.io.File; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.net.URL; import java.net.URLConnection; import java.nio.file.Files; @@ -452,11 +448,9 @@ public void updateNameTags(Player player, Function play if (CloudAPI.getInstance().getPermissionPool() == null || !CloudAPI.getInstance().getPermissionPool().isAvailable()) return; - PermissionGroup playerPermissionGroup = playerPermissionGroupFunction != null ? playerPermissionGroupFunction.apply(player) : null; - - if (playerPermissionGroup == null) - playerPermissionGroup = getCloudPlayers().get(player.getUniqueId()) - .getPermissionEntity().getHighestPermissionGroup(CloudAPI.getInstance().getPermissionPool()); + PermissionGroup playerPermissionGroup = playerPermissionGroupFunction != null + ? playerPermissionGroupFunction.apply(player) + : getCloudPlayers().get(player.getUniqueId()).getPermissionEntity().getHighestPermissionGroup(CloudAPI.getInstance().getPermissionPool()); initScoreboard(player); @@ -487,57 +481,42 @@ public Map getClonedCloudPlayers() private void addTeamEntry(Player target, Player all, PermissionGroup permissionGroup) { String teamName = permissionGroup.getTagId() + permissionGroup.getName(); - try - { - if (teamName.length() > 16) - { - teamName = shortenStringTo16Bytes(teamName); - CloudAPI.getInstance().dispatchConsoleMessage("In order to prevent issues, the name (+ tagID) of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!"); - CloudAPI.getInstance().dispatchConsoleMessage("Please fix this issue by changing the name of the group in your perms.yml"); - Bukkit.broadcast("In order to prevent issues, the name (+ tagID) of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!", "cloudnet.notify"); - Bukkit.broadcast("Please fix this issue by changing the name of the group in your perms.yml", "cloudnet.notify"); - } - } catch (UnsupportedEncodingException e) + if (teamName.length() > 16) { - e.printStackTrace(); + teamName = teamName.substring(0, 16); + CloudAPI.getInstance().dispatchConsoleMessage("In order to prevent issues, the name (+ tagID) of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!"); + CloudAPI.getInstance().dispatchConsoleMessage("Please fix this issue by changing the name of the group in your perms.yml"); + Bukkit.broadcast("In order to prevent issues, the name (+ tagID) of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!", "cloudnet.notify"); + Bukkit.broadcast("Please fix this issue by changing the name of the group in your perms.yml", "cloudnet.notify"); } Team team = all.getScoreboard().getTeam(teamName); if (team == null) team = all.getScoreboard().registerNewTeam(teamName); - try + if (permissionGroup.getPrefix().length() > 16) { - if (permissionGroup.getPrefix().length() > 16) - { - permissionGroup.setPrefix(shortenStringTo16Bytes(permissionGroup.getPrefix())); - CloudAPI.getInstance().dispatchConsoleMessage("In order to prevent issues, the prefix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!"); - CloudAPI.getInstance().dispatchConsoleMessage("Please fix this issue by changing the prefix in your perms.yml"); - Bukkit.broadcast("In order to prevent issues, the prefix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!", "cloudnet.notify"); - Bukkit.broadcast("Please fix this issue by changing the prefix in your perms.yml", "cloudnet.notify"); - } - if (permissionGroup.getSuffix().length() > 16) - { - permissionGroup.setSuffix(shortenStringTo16Bytes(permissionGroup.getSuffix())); - CloudAPI.getInstance().dispatchConsoleMessage("In order to prevent issues, the suffix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!"); - CloudAPI.getInstance().dispatchConsoleMessage("Please fix this issue by changing the suffix in your perms.yml"); - Bukkit.broadcast("In order to prevent issues, the suffix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!", "cloudnet.notify"); - Bukkit.broadcast("Please fix this issue by changing the suffix in your perms.yml", "cloudnet.notify"); - } - } catch (UnsupportedEncodingException e) + permissionGroup.setPrefix(permissionGroup.getPrefix().substring(0, 16)); + CloudAPI.getInstance().dispatchConsoleMessage("In order to prevent issues, the prefix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!"); + CloudAPI.getInstance().dispatchConsoleMessage("Please fix this issue by changing the prefix in your perms.yml"); + Bukkit.broadcast("In order to prevent issues, the prefix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!", "cloudnet.notify"); + Bukkit.broadcast("Please fix this issue by changing the prefix in your perms.yml", "cloudnet.notify"); + } + if (permissionGroup.getSuffix().length() > 16) { - e.printStackTrace(); + permissionGroup.setSuffix(permissionGroup.getSuffix().substring(0, 16)); + CloudAPI.getInstance().dispatchConsoleMessage("In order to prevent issues, the suffix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!"); + CloudAPI.getInstance().dispatchConsoleMessage("Please fix this issue by changing the suffix in your perms.yml"); + Bukkit.broadcast("In order to prevent issues, the suffix of the group " + permissionGroup.getName() + " was temporarily shortened to 16 characters!", "cloudnet.notify"); + Bukkit.broadcast("Please fix this issue by changing the suffix in your perms.yml", "cloudnet.notify"); } - try { - Optional setColor = Optional.of(team.getClass().getDeclaredMethod("setColor", ChatColor.class)); - if (setColor.isPresent()) { - Method method = setColor.get(); - method.setAccessible(true); - if(permissionGroup.getColor().length() != 0){ - method.invoke(team,ChatColor.getByChar(permissionGroup.getColor().replaceAll("&","").replaceAll("§",""))); - }else{ - method.invoke(team,ChatColor.getByChar(ChatColor.getLastColors(permissionGroup.getPrefix().replace('&','§')).replaceAll("&","").replaceAll("§",""))); - } + try { + Method setColor = team.getClass().getDeclaredMethod("setColor", ChatColor.class); + setColor.setAccessible(true); + if(permissionGroup.getColor().length() != 0) { + setColor.invoke(team, ChatColor.getByChar(permissionGroup.getColor().replaceAll("&","").replaceAll("§",""))); + } else { + setColor.invoke(team, ChatColor.getByChar(ChatColor.getLastColors(permissionGroup.getPrefix().replace('&','§')).replaceAll("&","").replaceAll("§",""))); } } catch (NoSuchMethodException ignored) { } catch (IllegalAccessException | InvocationTargetException e) { @@ -553,10 +532,6 @@ private void addTeamEntry(Player target, Player all, PermissionGroup permissionG target.setDisplayName(ChatColor.translateAlternateColorCodes('&', permissionGroup.getDisplay() + target.getName())); } - private String shortenStringTo16Bytes(String input) throws UnsupportedEncodingException - { - return input.substring(0, 16); - } private void initScoreboard(Player all) { diff --git a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java index 4276127a5..d67ee01af 100644 --- a/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java +++ b/cloudnet-api/cloudnet-api-bridge/src/main/java/de/dytanic/cloudnet/bridge/internal/util/ItemStackBuilder.java @@ -34,6 +34,7 @@ public ItemStackBuilder(Material material) /** * @deprecated will only work in versions lower than 1.13 */ + @Deprecated public ItemStackBuilder(int material) { this.itemStack = new ItemStack(Material.getMaterial(material)); @@ -49,6 +50,7 @@ public ItemStackBuilder(Material material, int amount) /** * @deprecated will only work in versions lower than 1.13 */ + @Deprecated public ItemStackBuilder(int material, int amount) { this.itemStack = new ItemStack(material, amount); From 15d594d801ce922e9d254de891c0288f55262a25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 13 May 2019 05:35:42 +0000 Subject: [PATCH 52/53] Bump maven-jar-plugin from 3.1.1 to 3.1.2 Bumps [maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.1.1 to 3.1.2. - [Release notes](https://github.com/apache/maven-jar-plugin/releases) - [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.1.1...maven-jar-plugin-3.1.2) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ede761337..d6c87b537 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ 3.2.1 3.1.0 - 3.1.1 + 3.1.2 3.1.0 1.8 From a76db9e094c17fcc97c7a0970361c2a02db067aa Mon Sep 17 00:00:00 2001 From: byRoadrunner Date: Tue, 21 May 2019 19:24:47 +0200 Subject: [PATCH 53/53] Update pom.xml Downgraded javadoc plugin due to issues with the Javadocs --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d6c87b537..2dff663a3 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ 4.12 3.2.1 - 3.1.0 + 3.0.1 3.1.2 3.1.0 1.8