Code Monkey home page Code Monkey logo

cloudnet's Introduction

CloudNet: The Cloud Network Environment Technology

CloudNet Logo

Build Release

Adding CloudNet to your build

CloudNet is using the eu.cloudnetservice.cloudnet group id and is available through maven central. The most important submodules are:

artifact id usage
driver When developing plugins or modules, available on all platforms.
node When developing a module which needs more specific access to node functions than the driver can offer.
wrapper-jvm When developing plugins which need some more specific access to the service api than the driver can offer.
bridge When trying to catch player events and/or interacting with players regardless where they are on the network.
bom When you want to import all dependencies with the same version based on the imported bill of materials.

To add the CloudNet dependency using gradle (replace %version% with the latest version shown in the badge above):

repositories {
  // ensure maven central is added
  mavenCentral()
}

dependencies {
  // optional - you can also specify versions directly
  implementation platform('eu.cloudnetservice.cloudnet:bom:%version%')
  compileOnly 'eu.cloudnetservice.cloudnet:driver'

  // without bom
  compileOnly 'eu.cloudnetservice.cloudnet:driver:%version%'
}

To add the CloudNet dependency using maven (replace %version% with the latest version shown in the badge above):

<!-- optional - you can also specify versions directly -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>eu.cloudnetservice.cloudnet</groupId>
      <artifactId>bom</artifactId>
      <version>%version%</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>eu.cloudnetservice.cloudnet</groupId>
    <artifactId>driver</artifactId>
    <version>%version%</version> <!-- only needed when bom is not used -->
    <scope>provided</scope>
  </dependency>
</dependencies>

Snapshots

Snapshots for CloudNet are build off the nightly branch and are available from the sonatype snapshot repository: https://s01.oss.sonatype.org/content/repositories/snapshots/. You can declare a dependency on CloudNet as shown above just append the -SNAPSHOT suffix to the version.

Links

Compile from source

To compile CloudNet you need JDK 17 and an internet connection. Then clone this repository and run ./gradlew inside the cloned project.

Warnings

  1. Api methods which are marked with @ApiStatus.Internal can change or get removed without a warning, even between patch releases. We recommend to not use these methods and try to find an alternative for them.
  2. Api methods which are marked with @ApiStatus.Experimental can change or get removed without a warning, even between patch releases. While the api method is still in an experimental state, that does not mean that the implementation is considered experimental.
  3. Api methods which are marked with @Deprecated should get replaced as soon as possible (the javadoc of the method will contain and explanation why the method is deprecated and how to replace the usage). This annotation is in most cases paired with @ApiStatus.ScheduledForRemoval indicating the minor version when the method gets removed.
  4. Serialized forms of all classes are subject to change. Do not persist classes and assume that a future version will still be compatible with the stored version.
  5. Dependencies which are not exposed directly might be upgraded to the next major release without a warning. Be aware of that when including dependencies and relying on CloudNet shipping them bundled.

cloudnet's People

Contributors

0utplay avatar a6doff avatar b0ykoe avatar byroadrunner avatar chaosfreak93 avatar cloudnetautomation avatar davidmayr avatar dependabot-preview[bot] avatar dependabot[bot] avatar derklaro avatar derrop avatar docimin avatar florianpreuss avatar gianttreelp avatar juliarn avatar manuelkollus avatar markustieger avatar meldiron avatar mooziii avatar pascalku avatar renovate[bot] avatar robothanzo avatar sarsum avatar schucko1337 avatar score2 avatar sj-tom avatar themeinerlp avatar thisisfel1x avatar whereareiam avatar zlvkas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudnet's Issues

Players remain online

Describe the bug

When you stop a proxy with players it sometimes happens that the players are still marked as online by the cloud.

Steps for reproducing

Steps to reproduce the behavior:
1. Start Proxy
2. Join Proxy
3. Stop Proxy via /end
4. check playerstatus via console command or api
Steps to reproduce the exception:
1. -


**Expected behavior**
The player is displayed as Offline


**Screenshots**
-


**Please provide us information about your environment and used assets**
 System specs: 8 GB RAM, 2vCores, 80 GB SSD
 OS: centOS 7
 Version:  v3.0.0 Tsunami RELEASE  (https://discordapp.com/channels/325362837184577536/536594705643864093/580456188991242241)



**Additional context**
<!-- Add any other context about the problem here. -->

"screen write " command

Please describe the proposed feature

This command should send a command to every open screen that you don't have to write "ser NAME command " to send a command to the screen.

Unavaible to compile.

Tenchuu@DESKTOP-K2IAUP3 MINGW64 ~/Desktop
$ git clone https://github.com/CloudNetService/CloudNet-v3.git
Cloning into 'CloudNet-v3'...
remote: Enumerating objects: 201, done.
remote: Counting objects: 100% (201/201), done.
remote: Compressing objects: 100% (122/122), done.
remote: Total 9579 (delta 41), reused 98 (delta 18), pack-reused 9378
Receiving objects: 100% (9579/9579), 85.30 MiB | 29.45 MiB/s, done.
Resolving deltas: 100% (4737/4737), done.
Updating files: 100% (923/923), done.

Tenchuu@DESKTOP-K2IAUP3 MINGW64 ~/Desktop
$ cd CloudNet-3.X
bash: cd: CloudNet-3.X: No such file or directory

Tenchuu@DESKTOP-K2IAUP3 MINGW64 ~/Desktop
$ cd CloudNet-v3/

Tenchuu@DESKTOP-K2IAUP3 MINGW64 ~/Desktop/CloudNet-v3 (master)
$ ./gradlew.bat
Downloading https://services.gradle.org/distributions/gradle-5.4.1-bin.zip
...................................................................................

Welcome to Gradle 5.4.1!

Here are the highlights of this release:
 - Run builds with JDK12
 - New API for Incremental Tasks
 - Updates to native projects, including Swift 5 support

For more details see https://docs.gradle.org/5.4.1/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

> Task :cloudnet-common:compileJava
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:5: warning: Unsafe is internal proprietary API and may be removed in a future release
import sun.misc.Unsafe;
               ^
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:5: warning: Unsafe is internal proprietary API and may be removed in a future release
import sun.misc.Unsafe;
               ^
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:5: warning: Unsafe is internal proprietary API and may be removed in a future release
import sun.misc.Unsafe;
               ^
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:5: warning: Unsafe is internal proprietary API and may be removed in a future release
import sun.misc.Unsafe;
               ^
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:22: warning: Unsafe is internal proprietary API and may be removed in a future release
    @Getter
    ^
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:29: warning: Unsafe is internal proprietary API and may be removed in a future release
            Field field = Unsafe.class.getDeclaredField("theUnsafe");
                          ^
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:31: warning: Unsafe is internal proprietary API and may be removed in a future release
            unsafe = (Unsafe) field.get(null);
                      ^
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\unsafe\ReflectUnsafe.java:22: warning: Unsafe is internal proprietary API and may be removed in a future release
    @Getter
    ^
Note: C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\main\java\de\dytanic\cloudnet\common\concurrent\DefaultTaskScheduler.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
8 warnings

> Task :cloudnet-driver:compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :cloudnet:compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :cloudnet-common:compileTestJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-common\src\test\java\de\dytanic\cloudnet\common\collection\MapsTest.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :cloudnet-driver:compileTestJava
Note: C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-driver\src\test\java\de\dytanic\cloudnet\driver\network\netty\NettyWebSocketServerExample.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :cloudnet-modules:cloudnet-bridge:compileJava FAILED
C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-modules\cloudnet-bridge\src\main\java\de\dytanic\cloudnet\ext\bridge\gomint\event\GoMintBridgeEvent.java:3: error: cannot access Event
import io.gomint.event.Event;
                      ^
  bad class file: C:\Users\Tenchuu\Desktop\CloudNet-v3\cloudnet-modules\libs\gomint-1.0-SNAPSHOT.jar(io/gomint/event/Event.class)
    class file has wrong version 55.0, should be 52.0
    Please remove or make sure it appears in the correct subdirectory of the classpath.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':cloudnet-modules:cloudnet-bridge:compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 25s
38 actionable tasks: 20 executed, 18 up-to-date

That should not be normal or?

Time to make some changes to CloudNet's codebase

So, I "analyzed" CloudNet's code and oh boy, a lot of work needs to be done. By work I mean actual code and performance optimization, debugging etc.

Most things can probably be done using IntelliJ's advanced refactoring tools, like searching for something and replacing it, but there's also stuff on the list which needs to be done by hand.

Pending:

  • [approved] Use builders where applicable
  • [approved] Create data classes where applicable
  • [wip] Replace pure string concats abc += "def" with StringBuilder appends
  • [approved] Replace java.io classes with java.nio classes where applicable, might require @Deprecated declarations
  • [approved] Some abstract classes and interfaces are waayyy too fat. Requires separation. Might require @Deprecated declarations
  • [approved] Return Collection<?> types instead of List<?>, Set<?> or any other extending interface or class of Collection. Might require @Deprecated declarations
  • [approved] Use lazy type initialization. (Let a field be initialized by a getter or setter, if the field is null. A lot of stuff in CloudNet might not be needed by anyone or anything)

Work in progress:

  • Replace inline statements with block statements
  • Calls to functions located in own class should use the this. accessor
  • Calls to functions located in super class should use the super. accessor ONLY IF the function is not overridden by the child class
  • Try catch blocks shouldn't silently dispose any exceptions/throwables. (Re-)Throw, print or log them
  • Parameter validations shouldn't silently dispose any exceptions. (Re-)Throw, print or log them
  • Re-arrange fields correctly
  • Re-arrange functions correctly
  • Separate chained field declarations
  • Validate the state of parameters (Is the int negative?, is the string blank even though it shouldn't be?, is the passed varargs array empty?)
  • Validate the parameter for null
  • Use Guava's Preconditions instead of own validation class

Done:

  • Lombok should not be used in such complex application. The only thing Lombok could be used for is generating #equals(), #hashCode() and #toString(). Using @Getter, @Setter and any other Lombok annotations is highly discouraged blurs a class' logic

More to come

Server updates

Every second a server is updated, even if nothing has really changed. This may cause performance problems with many servers. Therefore I would only trigger the events if something really changed on the server (player, game status etc.). The other data about the server like memory usage will probably not be required every second.

BungeeCord fallbacks

When having this fallback configuration for example:

"bungeeFallbackConfigurations": [
  {
	"targetGroup": "Proxy",
	"defaultFallbackTask": "Lobby",
	"fallbacks": [
	  {
		"priority": 1,
		"task": "Lobby",
		"permission": null
	  },
	  {
		"priority": 1,
		"task": "TestServer",
		"permission": null
	  }
	]
  }
]

A player is still only able to connect if a service of the "defaultFallbackTask" is available, so "Lobby". If there is no Lobby online, but an instance of "TestServer", the bungeecord says there is no fallback server available, although the "TestServer" task is defined as a fallback.

Cluster Shutdown doesnt work properly

Describe the bug

The nodes seems to shutdown nearly completely but the screens keeps open

Please provide us information about your environment and used assets

  • OS: Debian 10 on 4 Servers
  • Version: CloudNet Eruption 3.2.2-RELEASE-6577bbd

Don't use/call the Object::finalize method

The way the Object::finalize method is used in this project is not its intended way, according to Javadoc it is:

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

I would recommend removing these lines since they are obsolete (there could be even more these are just the ones I found while looking through the source code):

https://github.com/CloudNetService/CloudNet-v3/blob/1a255441f7832a461253634a13a605d370fddf4f/cloudnet-common/src/main/java/de/dytanic/cloudnet/common/io/FileUtils.java#L91
https://github.com/CloudNetService/CloudNet-v3/blob/1a255441f7832a461253634a13a605d370fddf4f/cloudnet-driver/src/main/java/de/dytanic/cloudnet/driver/module/FinalizeURLClassLoader.java#L66
https://github.com/CloudNetService/CloudNet-v3/blob/1a255441f7832a461253634a13a605d370fddf4f/cloudnet-driver/src/main/java/de/dytanic/cloudnet/driver/network/protocol/Packet.java#L53

I also wouldn't recommend using the finalize​ method to clean up since in later java versions it's deprecated because:

The finalization mechanism is inherently problematic. Finalization can lead to performance issues, deadlocks, and hangs. Errors in finalizers can lead to resource leaks; there is no way to cancel finalization if it is no longer necessary; and no ordering is specified among calls to finalize methods of different objects.

Exception when creating a permission group

Describe the bug

https://pastes.cf/Yr2teTGV24/

Steps for reproducing

  1. Type "perms create group NAME 0" into the console
  2. See the exception from above in every screen

Expected behavior

The group should be created (which it it), but without any errors

Please provide us information about your environment and used assets

This shouldn't matter, but:
System specs: CPU = Intel i7 6700k; DDR 4 2400 MHz 16 GB HyperX RAM; 2 TB Seagate HDD
OS: Windows 10
Version: https://github.com/CloudNetService/CloudNet-v3/tree/6530b93faf1eca66d0468ead61036d76b38ffec0

Velocity not downloading

Describe the bug

Steps for reproducing

Expected behavior

Screenshots

Please provide us information about your environment and used assets

Additional context

New api methods

Please describe the proposed feature

BridgePlayerManager#broadcastMessage(String message, String permission)
BridgePlayerManager#broadcastMessage(String message)
BridgePlayerManager#broadcastMessage(BaseComponent[] message, String permission)
BridgePlayerManager#broadcastMessage(BaseComponent[] message)
to broadcast messages over the whole network

Ports Freigabe

Servus,
wollte mal Fragen welche Ports man alle Freigeben muss. Oder müsste man alle Freigeben?
Vielen Dank für die Antwort :)

Synchronize the Gson version with the one used in Bungeecord and Minecraft

The cloudnet-common module is completely compiled into the Bungeecord and Bukkit plugins.
Due to mismatching Gson versions, some usage of Gson in conjunction with CloudNet is broken and fails.

Example error message:

java.lang.LinkageError: loader constraint violation: when resolving method "de.dytanic.cloudnet.common.document.gson.JsonDocument.<init>(Lcom/google/gson/JsonObject;)V" the class loader (instance of net/md_5/bungee/api/plugin/PluginClassloader) of the current class, de/web/bungeeplugin/partysystem2/listener/Events, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for the method's defining class, de/dytanic/cloudnet/common/document/gson/JsonDocument, have different Class objects for the type com/google/gson/JsonObject used in the signature

Wrapper log on startup doesn't contain line breaks

Describe the bug

If you use "System.out.println" more than once in the Wrapper before the application (e. g. spigot) is running, all lines are printed in one line, only if you add the line seperator to the end of the string, all lines are printed seperately.

Steps for reproducing

  1. print some lines on wrapper startup (in a module in the wrapper on the STARTED or LOADED state or directly in the wrapper)
  2. see the log using the screen command or in temp/services/SERVICE/.wrapper/logs/ (or for static services in local/services)

Expected behavior

The printed lines using "System.out.println" should all be printed seperately without the line seperator at the end of the string

Please provide us information about your environment and used assets
System specs: CPU = Intel i7 6700k, RAM = 16 GB DDR4 2400 MHz
OS: Windows 10
Version: Current dev version

Max allowed right margin of 80 characters is way to overkill

The max allowed right margin with an astonishing amount of 80 characters is way to overkill and should be a lot higher. Increasing the max character amount makes the code easier to read and doesn't force developers to shift each and every single parameter of functions or constructors or else into a new line.

I'd recommend to set the max right margin to about 110 up to 130 characters.

1.14.2 crashes at the V3

Describe the bug

Server starts easily with the Spigot / PaperMC 1.14.2 but crashes after 5 minutes ca.

Error code:
InvalidTargetException

Steps for reproducing

Expected behavior

currently none available

Screenshots

currently none available

  • System specs: Technical information about your hardware [e.g. CPU = Intel i5 7th Gen etc.]
  • OS: Linux (Debian 9) & Windows 10
  • Version: CloudNet 3 Release

Additional context

currently none available

Wrong PlayerCount

Describe the bug

Sometimes the player count in the TabList is displayed wrong
image

Steps for reproducing

🤷‍♂

Fallbacks not working properly

Describe the bug

When a lobby is starting, users may also be connected to that server, even if it's not running. This causes that the user disconnects with "could not connect to a default or fallback server ..." or it just stays in the loading screen, depending on the state of the server.

Expected behavior

The users should be sent to running lobbies and starting lobbies should be ignored.

Proxy starts; other servers don't

Describe the bug

Proxy starts up, Lobby and Test Server tries to start up; fails (every time) and then deletes the temp server things and then I can connect to Bungee/Proxy then Lobby isn't up so nothing happens

Steps for reproducing

Steps to reproduce the behavior:
  1. Go to 'the start up thing'
  2. Click on 'start up'
  3. Let it start up...
  4. Proxy starts up susessfully;
  5. Lobby and Test-Server starts to start, stops and detetes.
  6. Number 5 repeats still /stop is done.
UNKNOWN

Expected behavior

So, the Proxy, Lobby and Test Server is meant to start up.

Screenshots

https://pastie.io/xutggy.cs Console if it helps

Please provide us information about your environment and used assets

System specs: Processor - 2.26 GHz Intel Core 2 Duo Memory - 8 GB 1067 MHZ DDr3 Graphics NVIDIA GeForce 9400M 256MB

OS: MacOS High Sierra
Version: 3.0.0 Tsunami RELEASE

Additional context

N/A

ServiceInfoSnapshotUtil.getPlayers ist immer Null

Hey Ihr Lieben,

ich weiß nicht ob das ein Bug ist oder ich etwas falsch mache aber wenn ich ServiceInfoSnapshotUtil.getPlayers(serviceInfoSnapshot) bekomme ich immer null zurück.

P.S. Das ist nur bei getPlayers null

Im code habe ich das stehen:

        for (ServiceInfoSnapshot serviceInfoSnapshot : CloudNetDriver.getInstance().getCloudService("Lobby")) {
            int players = ServiceInfoSnapshotUtil.getPlayers(serviceInfoSnapshot).size();

und players ist immer null.

und dieser Error kommt:

[30.07 21:23:33.763] INFO: [Lobby-1] org.bukkit.event.EventException: null
[30.07 21:23:33.763] INFO: [Lobby-1]    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:235) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:202) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:198) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:991) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:26) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_222]
[30.07 21:23:33.763] INFO: [Lobby-1]    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_222]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.763] INFO: [Lobby-1]    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
[30.07 21:23:33.763] INFO: [Lobby-1] Caused by: java.lang.NullPointerException
[30.07 21:23:33.764] INFO: [Lobby-1]    at de.wildcards.lobbysystem.listeners.SwitcherMenu.invMenu(SwitcherMenu.java:53) ~[?:?]
[30.07 21:23:33.764] INFO: [Lobby-1]    at de.wildcards.lobbysystem.listeners.SwitcherMenu.onPlayerInteract(SwitcherMenu.java:32) ~[?:?]
[30.07 21:23:33.764] INFO: [Lobby-1]    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_222]
[30.07 21:23:33.764] INFO: [Lobby-1]    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_222]
[30.07 21:23:33.764] INFO: [Lobby-1]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_222]
[30.07 21:23:33.855] INFO: [Lobby-1]    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_222]
[30.07 21:23:33.855] INFO: [Lobby-1]    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
[30.07 21:23:33.856] INFO: [Lobby-1]    ... 18 more

Minecraft version: Spigot 1.12.2
OS: Linux Debian

Bad classes in gomint

Describe the bug

Can't build cloudnet modules because of newer java version clasess in gomint.

Steps for reproducing

./gradlew cloudnet-modules:cloudnet-bridge:build

Message

> Task :cloudnet-modules:cloudnet-bridge:compileJava FAILED
D:\Work\CloudNet\cloudnet-modules\cloudnet-bridge\src\main\java\de\dytanic\cloudnet\ext\bridge\gomint\event\GoMintBridgeEvent.java:3: error: cannot access Event
import io.gomint.event.Event;
                      ^
  bad class file: D:\Work\CloudNet\cloudnet-modules\libs\gomint-1.0-SNAPSHOT.jar(io/gomint/event/Event.class)
    class file has wrong version 55.0, should be 52.0
    Please remove or make sure it appears in the correct subdirectory of the classpath.
FAILURE: Build failed with an exception.

Please provide us information about your environment and used assets

OS: Windows 7
Version: Last master commit

Check if groups exist before adding them to a task

Please describe the proposed feature

When using "tasks task TASK add group GROUP", there is no check if the given group even exists, so you can add non-existing groups to a task. We should add a check there if this group exists.

Additional context
The group shouldn't be added to the task, but instead there should be a message that this group doesn't exist
image

Temp services should not use special characters (replace # with _)

Describe the bug

Some plugins doesnt work due to # character for temp servers (the path is /root/CloudNet/temp/services/Economy-Hub-1#34595385-69f1-4da4-ac4d-3fa90e1d3b78/plugins)

Steps for reproducing

Cant share jar of plugins but they throw errors like:
http://java.io.FileNotFoundException: /root/CloudNet/temp/services/Economy-Hub-1%23804f3165-9993-4484-a270-c0846d02de69/plugins/VillagerBlock.jar (No such file or directory).

Expected behavior

Not throwing errors. You can solve this by not using # in the folder name but some other character like _

Please provide us information about your environment and used assets
Tried both Linux Debian, Windows 10. Anyway, problem is in plugin not cloudnet, cloudnet just need to change from # in folder name to something else.

NPE in NodeCloudNetModule

Describe the bug

If you use CloudPermissionsPermissionManagement in a NodeCloudNetModule, the instance (getInstance()) is null.

Steps for reproducing

Steps to reproduce the behavior:
1. Create NodeCloudNetModule
2. Get eg. PermissionUser (CloudPermissionsPermissionManagement.getInstance().getUser(this.uuid))
3. See npe error

Additional context

How to bypass it without changing the cloud source code:

if (CloudPermissionsPermissionManagement.getInstance() == null) 
  new CloudPermissionsPermissionManagement();

Create issue and pull request templates for CloudNet's repository

I'd recommend creating issue and pull request templates for this repository. Issue and pull request templates are pretty neat since they give the user/developer clear instructions how to properly write an issue or create a pull request. Such instructions could be:

Issue template for bug

  • Describe the problem
  • Expected outcome/behavior
  • Any ideas how to fix
  • Please provide OS details

Issue template for feature request

  • Describe the feature
  • Why this feature, what are the benefits
  • Any alternatives?
  • Related issues/discussions

Pull request template

  • Make sure you have read our guidelines
  • Make sure your code is properly formatted
  • Describe the opposed changes
  • Any considerations?
  • Reference issues if there are any

It would organize issues and pull request and provides a clear workflow, how to properly create issues and pull requests .

Empty Bridge config on reload

Describe the bug

If you delete the bridge config while CloudNet is running and then reload the bridge module, an empty config will be generated

Steps for reproducing

  1. Start CloudNet
  2. delete bridge config
  3. execute "bridge" command
  4. see the empty bridge config

Expected behavior

the default bridge config should be generated

Simplenametags prefix color

Describe the bug

In 1.13+, there should be a color property set in the scoreboard team of the player, this isn't the case currently, so the prefix isn't displayed properly.

Cloud Sign isn't Working

Describe the bug

The cloudsign plugin in the server isn't working
Whenever I trying to create a sign using /cloudsign create bw
It just shows /cloudsign create

I am sure cloud-bridge is installed, it is within cloudnet server group and the servergroup exists.

Out of Memory nach Cluster Push all

Nachdem der Push abgeschlossen ist kommt der Fehler, eigentlich ist aber noch eine Menge RAM frei (~12GB) ausserdem tritt der Fehler nicht auf wenn nicht alle Nodes online sind.

[18.02 03:43:15.115] ERROR: io.netty.handler.codec.EncoderException: java.lang.OutOfMemoryError: Direct buffer memory [18.02 03:43:15.115] ERROR: at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:125) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:716) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:708) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:791) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:701) [18.02 03:43:15.115] ERROR: at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:113) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:716) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:763) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:789) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:757) [18.02 03:43:15.115] ERROR: at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1031) [18.02 03:43:15.115] ERROR: at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:310) [18.02 03:43:15.115] ERROR: at de.dytanic.cloudnet.driver.network.netty.NettyNetworkChannel.sendPacket0(NettyNetworkChannel.java:79) [18.02 03:43:15.115] ERROR: at de.dytanic.cloudnet.driver.network.netty.NettyNetworkChannel.lambda$sendPacket$1(NettyNetworkChannel.java:56) [18.02 03:43:15.115] ERROR: at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [18.02 03:43:15.115] ERROR: at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:405) [18.02 03:43:15.115] ERROR: at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:338) [18.02 03:43:15.115] ERROR: at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906) [18.02 03:43:15.115] ERROR: at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [18.02 03:43:15.115] ERROR: at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [18.02 03:43:15.115] ERROR: at java.base/java.lang.Thread.run(Thread.java:834) [18.02 03:43:15.115] ERROR: Caused by: java.lang.OutOfMemoryError: Direct buffer memory [18.02 03:43:15.115] ERROR: at java.base/java.nio.Bits.reserveMemory(Bits.java:175) [18.02 03:43:15.115] ERROR: at java.base/java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:118) [18.02 03:43:15.115] ERROR: at java.base/java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:317) [18.02 03:43:15.115] ERROR: at io.netty.buffer.PoolArena$DirectArena.allocateDirect(PoolArena.java:772) [18.02 03:43:15.115] ERROR: at io.netty.buffer.PoolArena$DirectArena.newUnpooledChunk(PoolArena.java:762) [18.02 03:43:15.115] ERROR: at io.netty.buffer.PoolArena.allocateHuge(PoolArena.java:260) [18.02 03:43:15.115] ERROR: at io.netty.buffer.PoolArena.allocate(PoolArena.java:232) [18.02 03:43:15.115] ERROR: at io.netty.buffer.PoolArena.reallocate(PoolArena.java:400) [18.02 03:43:15.115] ERROR: at io.netty.buffer.PooledByteBuf.capacity(PooledByteBuf.java:120) [18.02 03:43:15.115] ERROR: at io.netty.buffer.AbstractByteBuf.ensureWritable0(AbstractByteBuf.java:295) [18.02 03:43:15.115] ERROR: at io.netty.buffer.AbstractByteBuf.ensureWritable(AbstractByteBuf.java:274) [18.02 03:43:15.115] ERROR: at de.dytanic.cloudnet.driver.network.netty.NettyPacketLengthSerializer.encode(NettyPacketLengthSerializer.java:21) [18.02 03:43:15.115] ERROR: at de.dytanic.cloudnet.driver.network.netty.NettyPacketLengthSerializer.encode(NettyPacketLengthSerializer.java:11) [18.02 03:43:15.115] ERROR: at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) [18.02 03:43:15.115] ERROR: ... 20 more

CloudNet should follow Sun's codestyle, not Google's

Sun's codestyle has been practiced by plugin developers and Bukkit itself since millennia. People got used to this particular codestyle and it would be a bad idea to change it, just for one simple reason: Enforcing people to use Google's codestyle, even though they're used to Sun's, might decrease the amount of contributions done to CloudNet.

SyncProxyModule only checks whitelist

The sync proxy modules does only check if the player is on the whitelist on maintenance and ignores that the player might have the permission to join.

Waterdog for better support for Nukkit.

Please describe the proposed feature

Add Waterdog. It's a Waterfall fork working for Nukkit and all types of bedrock server software. Very fast and good. It supports 100% bungeecord plugins.

Additional context

Tab complete for "/cloud ..."

Please describe the proposed feature

When you tab complete in MC on "/cloud ", you don't get any response, so we could send the request from the proxy to the cloud to get the tab completions which you also get when you tab complete in the console

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.