├── .editorconfig
├── .env
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── config.yml
│ └── feature_request.yml
├── PULL_REQUEST_TEMPLATE.md
├── renovate.json5
├── stale.yml
└── workflows
│ ├── codeql-analysis.yml
│ ├── delete-launchermeta-branch.yml
│ ├── gradle-release.yml
│ ├── gradle.yml
│ └── prbranch.yml
├── .gitignore
├── .idea
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── copyright
│ ├── CloudNet.xml
│ └── profiles_settings.xml
└── inspectionProfiles
│ ├── CloudNet.xml
│ └── profiles_settings.xml
├── .img
├── header.png
└── logo.png
├── .template
├── start.bat
├── start.command
└── start.sh
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── LICENSE_HEADER
├── README.md
├── bom
└── build.gradle.kts
├── build-extensions
├── build.gradle.kts
└── src
│ └── main
│ └── kotlin
│ ├── Files.kt
│ ├── Versions.kt
│ ├── cloudnet.parent-build-logic.gradle.kts
│ ├── extensions.kt
│ ├── publishing-extensions.kt
│ └── updater-extensions.kt
├── build.gradle.kts
├── checkstyle.xml
├── crowdin.yml
├── docker-compose.yml
├── driver
├── ap
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── driver
│ │ │ └── ap
│ │ │ ├── registry
│ │ │ ├── AutoServiceMapping.java
│ │ │ └── AutoServiceProcessor.java
│ │ │ └── util
│ │ │ └── ProcessingUtil.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── javax.annotation.processing.Processor
├── api
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── driver
│ │ │ ├── CloudNetVersion.java
│ │ │ ├── ComponentInfo.java
│ │ │ ├── DriverEnvironment.java
│ │ │ ├── base
│ │ │ ├── JavaVersion.java
│ │ │ └── Named.java
│ │ │ ├── channel
│ │ │ ├── ChannelMessage.java
│ │ │ ├── ChannelMessageSender.java
│ │ │ └── ChannelMessageTarget.java
│ │ │ ├── cluster
│ │ │ ├── NetworkCluster.java
│ │ │ ├── NetworkClusterNode.java
│ │ │ └── NodeInfoSnapshot.java
│ │ │ ├── command
│ │ │ └── CommandInfo.java
│ │ │ ├── database
│ │ │ ├── Database.java
│ │ │ └── DatabaseProvider.java
│ │ │ ├── document
│ │ │ ├── Document.java
│ │ │ ├── DocumentFactory.java
│ │ │ ├── DocumentParseException.java
│ │ │ ├── DocumentSerialisationException.java
│ │ │ ├── SerialisationStyle.java
│ │ │ ├── StandardSerialisationStyle.java
│ │ │ ├── annotations
│ │ │ │ ├── DocumentFieldRename.java
│ │ │ │ └── DocumentValueIgnore.java
│ │ │ ├── property
│ │ │ │ ├── DefaultedDocPropertyHolder.java
│ │ │ │ ├── DefaultingDocProperty.java
│ │ │ │ ├── DocProperty.java
│ │ │ │ ├── DocPropertyHolder.java
│ │ │ │ ├── ReadOnlyDocProperty.java
│ │ │ │ ├── RewritingDocProperty.java
│ │ │ │ └── StandardDocProperty.java
│ │ │ └── send
│ │ │ │ ├── DocumentSend.java
│ │ │ │ ├── ElementVisitor.java
│ │ │ │ └── element
│ │ │ │ ├── ArrayElement.java
│ │ │ │ ├── Element.java
│ │ │ │ ├── NullElement.java
│ │ │ │ ├── ObjectElement.java
│ │ │ │ └── PrimitiveElement.java
│ │ │ ├── event
│ │ │ ├── Cancelable.java
│ │ │ ├── Event.java
│ │ │ ├── EventListener.java
│ │ │ ├── EventListenerException.java
│ │ │ ├── EventManager.java
│ │ │ ├── InvocationOrder.java
│ │ │ ├── RegisteredEventListener.java
│ │ │ └── events
│ │ │ │ ├── channel
│ │ │ │ └── ChannelMessageReceiveEvent.java
│ │ │ │ ├── group
│ │ │ │ ├── GroupConfigurationAddEvent.java
│ │ │ │ ├── GroupConfigurationEvent.java
│ │ │ │ └── GroupConfigurationRemoveEvent.java
│ │ │ │ ├── module
│ │ │ │ ├── ModuleEvent.java
│ │ │ │ ├── ModulePostInstallDependencyEvent.java
│ │ │ │ ├── ModulePostLoadEvent.java
│ │ │ │ ├── ModulePostReloadEvent.java
│ │ │ │ ├── ModulePostStartEvent.java
│ │ │ │ ├── ModulePostStopEvent.java
│ │ │ │ ├── ModulePostUnloadEvent.java
│ │ │ │ ├── ModulePreInstallDependencyEvent.java
│ │ │ │ ├── ModulePreLoadEvent.java
│ │ │ │ ├── ModulePreReloadEvent.java
│ │ │ │ ├── ModulePreStartEvent.java
│ │ │ │ ├── ModulePreStopEvent.java
│ │ │ │ ├── ModulePreUnloadEvent.java
│ │ │ │ └── UnloadedModuleEvent.java
│ │ │ │ ├── network
│ │ │ │ ├── ChannelType.java
│ │ │ │ ├── NetworkChannelCloseEvent.java
│ │ │ │ ├── NetworkChannelInitEvent.java
│ │ │ │ └── NetworkEvent.java
│ │ │ │ ├── service
│ │ │ │ ├── CloudServiceDeferredStateEvent.java
│ │ │ │ ├── CloudServiceEvent.java
│ │ │ │ ├── CloudServiceLifecycleChangeEvent.java
│ │ │ │ ├── CloudServiceLogEntryEvent.java
│ │ │ │ └── CloudServiceUpdateEvent.java
│ │ │ │ └── task
│ │ │ │ ├── ServiceTaskAddEvent.java
│ │ │ │ ├── ServiceTaskEvent.java
│ │ │ │ └── ServiceTaskRemoveEvent.java
│ │ │ ├── inject
│ │ │ ├── BootLayerConfigurator.java
│ │ │ ├── DefaultInjectionLayer.java
│ │ │ ├── InjectUtil.java
│ │ │ ├── InjectionLayer.java
│ │ │ ├── InjectionLayerHolder.java
│ │ │ ├── InjectionLayerProvider.java
│ │ │ ├── InjectionLayerRegistry.java
│ │ │ ├── NamedImpl.java
│ │ │ └── UncloseableInjectionLayer.java
│ │ │ ├── language
│ │ │ ├── I18n.java
│ │ │ ├── PropertiesTranslationProvider.java
│ │ │ └── TranslationProvider.java
│ │ │ ├── module
│ │ │ ├── DefaultModule.java
│ │ │ ├── Module.java
│ │ │ ├── ModuleConfiguration.java
│ │ │ ├── ModuleConfigurationNotFoundException.java
│ │ │ ├── ModuleDependency.java
│ │ │ ├── ModuleDependencyLoader.java
│ │ │ ├── ModuleDependencyNotFoundException.java
│ │ │ ├── ModuleDependencyOutdatedException.java
│ │ │ ├── ModuleLifeCycle.java
│ │ │ ├── ModuleProvider.java
│ │ │ ├── ModuleProviderHandler.java
│ │ │ ├── ModuleRepository.java
│ │ │ ├── ModuleTask.java
│ │ │ ├── ModuleTaskEntry.java
│ │ │ ├── ModuleWrapper.java
│ │ │ └── driver
│ │ │ │ ├── DriverModule.java
│ │ │ │ └── ModuleConfigurationInvalidException.java
│ │ │ ├── network
│ │ │ ├── HostAndPort.java
│ │ │ ├── NetworkChannel.java
│ │ │ ├── NetworkChannelHandler.java
│ │ │ ├── NetworkClient.java
│ │ │ ├── NetworkComponent.java
│ │ │ ├── NetworkServer.java
│ │ │ ├── buffer
│ │ │ │ ├── DataBuf.java
│ │ │ │ ├── DataBufFactory.java
│ │ │ │ └── DataBufable.java
│ │ │ ├── chunk
│ │ │ │ ├── ChunkSessionInformation.java
│ │ │ │ ├── ChunkedFileQueryBuilder.java
│ │ │ │ ├── ChunkedPacketHandler.java
│ │ │ │ ├── ChunkedPacketProvider.java
│ │ │ │ ├── ChunkedPacketSender.java
│ │ │ │ ├── TransferStatus.java
│ │ │ │ └── event
│ │ │ │ │ ├── ChunkedPacketSessionOpenEvent.java
│ │ │ │ │ ├── EventChunkHandlerFactory.java
│ │ │ │ │ └── FileQueryRequestEvent.java
│ │ │ ├── object
│ │ │ │ ├── ObjectMapper.java
│ │ │ │ └── ObjectSerializer.java
│ │ │ ├── protocol
│ │ │ │ ├── BasePacket.java
│ │ │ │ ├── EmptyPacket.java
│ │ │ │ ├── Packet.java
│ │ │ │ ├── PacketListener.java
│ │ │ │ ├── PacketListenerRegistry.java
│ │ │ │ ├── PacketSender.java
│ │ │ │ └── QueryPacketManager.java
│ │ │ ├── rpc
│ │ │ │ ├── ChainableRPC.java
│ │ │ │ ├── RPC.java
│ │ │ │ ├── RPCChain.java
│ │ │ │ ├── RPCExecutable.java
│ │ │ │ ├── RPCProvider.java
│ │ │ │ ├── RPCSender.java
│ │ │ │ ├── annotation
│ │ │ │ │ ├── RPCChained.java
│ │ │ │ │ ├── RPCFieldGetter.java
│ │ │ │ │ ├── RPCIgnore.java
│ │ │ │ │ ├── RPCInvocationTarget.java
│ │ │ │ │ ├── RPCNoResult.java
│ │ │ │ │ └── RPCTimeout.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── MissingObjectSerializerException.java
│ │ │ │ │ ├── RPCException.java
│ │ │ │ │ └── RPCExecutionException.java
│ │ │ │ ├── factory
│ │ │ │ │ ├── RPCFactory.java
│ │ │ │ │ └── RPCImplementationBuilder.java
│ │ │ │ ├── handler
│ │ │ │ │ ├── RPCHandler.java
│ │ │ │ │ ├── RPCHandlerRegistry.java
│ │ │ │ │ ├── RPCInvocationContext.java
│ │ │ │ │ └── RPCInvocationResult.java
│ │ │ │ └── introspec
│ │ │ │ │ └── RPCMethodMetadata.java
│ │ │ └── ssl
│ │ │ │ └── SSLConfiguration.java
│ │ │ ├── provider
│ │ │ ├── CloudMessenger.java
│ │ │ ├── CloudServiceFactory.java
│ │ │ ├── CloudServiceProvider.java
│ │ │ ├── ClusterNodeProvider.java
│ │ │ ├── GroupConfigurationProvider.java
│ │ │ ├── ServiceTaskProvider.java
│ │ │ └── SpecificCloudServiceProvider.java
│ │ │ ├── registry
│ │ │ ├── AutoService.java
│ │ │ ├── Service.java
│ │ │ ├── ServiceRegistry.java
│ │ │ ├── ServiceRegistryHolder.java
│ │ │ └── ServiceRegistryRegistration.java
│ │ │ ├── service
│ │ │ ├── GroupConfiguration.java
│ │ │ ├── ProcessConfiguration.java
│ │ │ ├── ProcessSnapshot.java
│ │ │ ├── ServiceConfiguration.java
│ │ │ ├── ServiceConfigurationBase.java
│ │ │ ├── ServiceCreateResult.java
│ │ │ ├── ServiceCreateRetryConfiguration.java
│ │ │ ├── ServiceDeployment.java
│ │ │ ├── ServiceEnvironment.java
│ │ │ ├── ServiceEnvironmentType.java
│ │ │ ├── ServiceId.java
│ │ │ ├── ServiceInfoSnapshot.java
│ │ │ ├── ServiceLifeCycle.java
│ │ │ ├── ServiceRemoteInclusion.java
│ │ │ ├── ServiceTask.java
│ │ │ ├── ServiceTemplate.java
│ │ │ └── ThreadSnapshot.java
│ │ │ └── template
│ │ │ ├── FileInfo.java
│ │ │ ├── TemplateStorage.java
│ │ │ └── TemplateStorageProvider.java
│ │ └── test
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── driver
│ │ └── base
│ │ └── JavaVersionTest.java
├── build.gradle.kts
└── impl
│ ├── build.gradle.kts
│ └── src
│ ├── main
│ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── driver
│ │ │ └── impl
│ │ │ ├── document
│ │ │ ├── empty
│ │ │ │ ├── EmptyDocument.java
│ │ │ │ ├── EmptyDocumentFactory.java
│ │ │ │ └── EmptyDocumentSend.java
│ │ │ └── gson
│ │ │ │ ├── DelegateTypeAdapterFactory.java
│ │ │ │ ├── DocumentTypeAdapter.java
│ │ │ │ ├── DurationTypeAdapter.java
│ │ │ │ ├── GsonDocumentExclusionStrategy.java
│ │ │ │ ├── GsonDocumentFactory.java
│ │ │ │ ├── GsonDocumentFieldNamingStrategy.java
│ │ │ │ ├── GsonProvider.java
│ │ │ │ ├── ImmutableGsonDocument.java
│ │ │ │ ├── MutableGsonDocument.java
│ │ │ │ ├── PathTypeAdapter.java
│ │ │ │ ├── PatternTypeAdapter.java
│ │ │ │ ├── TimeTypeAdapter.java
│ │ │ │ └── send
│ │ │ │ ├── GsonArrayVisitor.java
│ │ │ │ ├── GsonDocumentSend.java
│ │ │ │ ├── GsonObjectVisitor.java
│ │ │ │ ├── GsonPrimitiveConverter.java
│ │ │ │ └── GsonRootObjectVisitor.java
│ │ │ ├── event
│ │ │ ├── DefaultEventManager.java
│ │ │ └── DefaultRegisteredEventListener.java
│ │ │ ├── language
│ │ │ └── DefaultI18n.java
│ │ │ ├── module
│ │ │ ├── DefaultModuleDependencyLoader.java
│ │ │ ├── DefaultModuleProvider.java
│ │ │ ├── DefaultModuleProviderHandler.java
│ │ │ ├── DefaultModuleTaskEntry.java
│ │ │ ├── DefaultModuleWrapper.java
│ │ │ ├── ModuleDependencyUtil.java
│ │ │ ├── ModuleHelper.java
│ │ │ └── ModuleURLClassLoader.java
│ │ │ ├── network
│ │ │ ├── DefaultNetworkChannel.java
│ │ │ ├── NetworkConstants.java
│ │ │ ├── chunk
│ │ │ │ ├── ChunkedSessionRegistry.java
│ │ │ │ ├── DefaultChunkedPacketProvider.java
│ │ │ │ ├── DefaultFileChunkPacketSender.java
│ │ │ │ ├── DefaultFileChunkedPacketHandler.java
│ │ │ │ ├── builder
│ │ │ │ │ ├── DefaultChunkedFileQueryBuilder.java
│ │ │ │ │ └── DefaultChunkedPacketSenderBuilder.java
│ │ │ │ ├── network
│ │ │ │ │ ├── ChunkedPacket.java
│ │ │ │ │ └── ChunkedPacketListener.java
│ │ │ │ └── splitter
│ │ │ │ │ └── NetworkChannelsPacketSplitter.java
│ │ │ ├── netty
│ │ │ │ ├── NettyNetworkChannel.java
│ │ │ │ ├── NettyNetworkHandler.java
│ │ │ │ ├── NettyOptionSettingChannelInitializer.java
│ │ │ │ ├── NettyTransport.java
│ │ │ │ ├── NettyUtil.java
│ │ │ │ ├── buffer
│ │ │ │ │ ├── NettyDataBufFactory.java
│ │ │ │ │ ├── NettyImmutableDataBuf.java
│ │ │ │ │ └── NettyMutableDataBuf.java
│ │ │ │ ├── client
│ │ │ │ │ ├── NettyNetworkClient.java
│ │ │ │ │ ├── NettyNetworkClientHandler.java
│ │ │ │ │ └── NettyNetworkClientInitializer.java
│ │ │ │ ├── codec
│ │ │ │ │ ├── NettyPacketDecoder.java
│ │ │ │ │ ├── NettyPacketEncoder.java
│ │ │ │ │ ├── VarInt32FrameDecoder.java
│ │ │ │ │ └── VarInt32FramePrepender.java
│ │ │ │ └── server
│ │ │ │ │ ├── NettyNetworkServer.java
│ │ │ │ │ ├── NettyNetworkServerHandler.java
│ │ │ │ │ └── NettyNetworkServerInitializer.java
│ │ │ ├── object
│ │ │ │ ├── DefaultObjectMapper.java
│ │ │ │ ├── ObjectMapperInjectRegistration.java
│ │ │ │ ├── data
│ │ │ │ │ ├── AllocationStatistic.java
│ │ │ │ │ ├── DataClassCodec.java
│ │ │ │ │ ├── DataClassCodecGenerator.java
│ │ │ │ │ └── DataClassSerializer.java
│ │ │ │ └── serializers
│ │ │ │ │ ├── CollectionObjectSerializer.java
│ │ │ │ │ ├── DataBufObjectSerializer.java
│ │ │ │ │ ├── DataBufableObjectSerializer.java
│ │ │ │ │ ├── DocumentObjectSerializer.java
│ │ │ │ │ ├── EnumObjectSerializer.java
│ │ │ │ │ ├── FunctionalObjectSerializer.java
│ │ │ │ │ ├── MapObjectSerializer.java
│ │ │ │ │ ├── OptionalObjectSerializer.java
│ │ │ │ │ ├── PathObjectSerializer.java
│ │ │ │ │ ├── PatternObjectSerializer.java
│ │ │ │ │ ├── TimeObjectSerializer.java
│ │ │ │ │ └── UUIDObjectSerializer.java
│ │ │ ├── protocol
│ │ │ │ ├── DefaultPacketListenerRegistry.java
│ │ │ │ └── DefaultQueryPacketManager.java
│ │ │ ├── rpc
│ │ │ │ ├── DefaultRPCFactory.java
│ │ │ │ ├── DefaultRPCProvider.java
│ │ │ │ ├── RPCRequestPacket.java
│ │ │ │ ├── generation
│ │ │ │ │ ├── BasicRPCMethodGenerator.java
│ │ │ │ │ ├── ChainedRPCMethodGenerator.java
│ │ │ │ │ ├── DefaultRPCImplementationBuilder.java
│ │ │ │ │ ├── RPCGenerationCache.java
│ │ │ │ │ ├── RPCGenerationConstants.java
│ │ │ │ │ ├── RPCGenerationContext.java
│ │ │ │ │ ├── RPCImplementationGenerator.java
│ │ │ │ │ ├── RPCInternalInstanceFactory.java
│ │ │ │ │ └── RPCMethodGenerator.java
│ │ │ │ ├── handler
│ │ │ │ │ ├── DefaultRPCHandler.java
│ │ │ │ │ ├── DefaultRPCHandlerBuilder.java
│ │ │ │ │ ├── DefaultRPCHandlerRegistry.java
│ │ │ │ │ ├── DefaultRPCInvocationContext.java
│ │ │ │ │ ├── invoker
│ │ │ │ │ │ ├── MethodInvoker.java
│ │ │ │ │ │ └── MethodInvokerGenerator.java
│ │ │ │ │ └── util
│ │ │ │ │ │ └── RPCExceptionUtil.java
│ │ │ │ ├── introspec
│ │ │ │ │ ├── DefaultRPCMethodMetadata.java
│ │ │ │ │ └── RPCClassMetadata.java
│ │ │ │ ├── listener
│ │ │ │ │ └── RPCPacketListener.java
│ │ │ │ ├── rpc
│ │ │ │ │ ├── DefaultRPC.java
│ │ │ │ │ ├── DefaultRPCChain.java
│ │ │ │ │ └── RPCResultMapper.java
│ │ │ │ └── sender
│ │ │ │ │ ├── DefaultRPCSender.java
│ │ │ │ │ └── DefaultRPCSenderBuilder.java
│ │ │ ├── scheduler
│ │ │ │ ├── FallbackRejectionHandler.java
│ │ │ │ ├── NetworkTaskScheduler.java
│ │ │ │ ├── ScalingNetworkTaskScheduler.java
│ │ │ │ ├── TaskSchedulingAction.java
│ │ │ │ └── TimedSynchronousQueue.java
│ │ │ └── standard
│ │ │ │ ├── AuthorizationPacket.java
│ │ │ │ └── ChannelMessagePacket.java
│ │ │ ├── registry
│ │ │ ├── AutoServiceMapping.java
│ │ │ ├── DefaultServiceRegistry.java
│ │ │ ├── FixedInstanceServiceRegistration.java
│ │ │ ├── NewInstanceServiceRegistration.java
│ │ │ ├── ProxiedServiceRegistration.java
│ │ │ ├── ServiceAnnotationInjectConfigurator.java
│ │ │ └── ServiceRegistrationsBinding.java
│ │ │ └── template
│ │ │ └── RemoteTemplateStorage.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── eu.cloudnetservice.driver.inject.BootLayerConfigurator
│ └── test
│ └── java
│ └── eu
│ └── cloudnetservice
│ └── driver
│ └── impl
│ ├── document
│ ├── DocumentPropertyTest.java
│ ├── DocumentSerialisationTest.java
│ ├── DocumentTest.java
│ ├── DocumentValueTestClass.java
│ └── gson
│ │ └── JavaTimeSerializerTest.java
│ ├── event
│ └── DefaultEventManagerTest.java
│ ├── junit
│ ├── EnableServicesInject.java
│ └── EnableServicesInjectExtension.java
│ ├── language
│ └── I18nTest.java
│ ├── module
│ └── ModuleDependencyUtilTest.java
│ ├── network
│ ├── HostAndPortTest.java
│ ├── NetworkTestCase.java
│ ├── chunk
│ │ └── ChunkedPacketSenderTest.java
│ ├── netty
│ │ ├── NettyTransportTest.java
│ │ ├── NettyUtilTest.java
│ │ ├── codec
│ │ │ └── NettyPacketCodecTest.java
│ │ └── communication
│ │ │ └── NettyNetworkServerClientTest.java
│ ├── protocol
│ │ ├── DefaultPacketListenerRegistryTest.java
│ │ └── DefaultQueryPacketManagerTest.java
│ ├── rpc
│ │ ├── RPCSenderTest.java
│ │ ├── generation
│ │ │ ├── api
│ │ │ │ ├── BaseDatabase.java
│ │ │ │ ├── RPCImplementationGeneratorTest.java
│ │ │ │ ├── SenderNeedingDatabase.java
│ │ │ │ └── TestRPCParameters.java
│ │ │ └── chain
│ │ │ │ └── RPCChainImplementationGeneratorTest.java
│ │ ├── handler
│ │ │ ├── RPCNetworkHandlingTest.java
│ │ │ └── RPCPacketListenerTest.java
│ │ ├── object
│ │ │ ├── AllPrimitiveTypesDataClass.java
│ │ │ ├── DefaultObjectMapperTest.java
│ │ │ └── ObjectWithSpecialGetter.java
│ │ └── registry
│ │ │ └── DefaultRPCHandlerRegistryTest.java
│ └── scheduler
│ │ └── ScalingNetworkTaskSchedulerTest.java
│ └── registry
│ └── ServiceRegistryTest.java
├── ext
├── adventure-helper
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── ext
│ │ │ ├── adventure
│ │ │ └── AdventureTextFormatLookup.java
│ │ │ ├── bungee
│ │ │ └── BungeeComponentUtil.java
│ │ │ └── component
│ │ │ ├── AdventureComponentFormat.java
│ │ │ ├── BungeeComponentFormat.java
│ │ │ ├── ComponentConverter.java
│ │ │ ├── ComponentFormat.java
│ │ │ ├── ComponentFormats.java
│ │ │ ├── JavaEditionComponentFormat.java
│ │ │ └── MappingConverter.java
│ │ └── test
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── ext
│ │ ├── adventure
│ │ └── AdventureTextFormatLookupTest.java
│ │ └── component
│ │ └── ComponentFormatsTest.java
├── build.gradle.kts
├── bukkit-command
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── ext
│ │ └── bukkitcommands
│ │ └── BaseTabExecutor.java
├── modlauncher
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── ext
│ │ │ └── modlauncher
│ │ │ └── CloudNetLaunchPluginService.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── cpw.mods.modlauncher.serviceapi.ILaunchPluginService
├── platform-inject-support
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── ext
│ │ │ └── platforminject
│ │ │ ├── api
│ │ │ ├── PlatformEntrypoint.java
│ │ │ ├── PlatformPluginInfo.java
│ │ │ ├── PlatformPluginManager.java
│ │ │ ├── data
│ │ │ │ ├── ParsedPluginData.java
│ │ │ │ └── PluginDataParser.java
│ │ │ ├── defaults
│ │ │ │ ├── BasePlatformPluginManager.java
│ │ │ │ └── DefaultPlatformPluginInfo.java
│ │ │ ├── generator
│ │ │ │ ├── PlatformMainClassGenerator.java
│ │ │ │ └── PluginInfoGenerator.java
│ │ │ ├── inject
│ │ │ │ └── BindingsInstaller.java
│ │ │ ├── mapping
│ │ │ │ ├── Container.java
│ │ │ │ └── PlatformedContainer.java
│ │ │ ├── registry
│ │ │ │ └── PlatformManagerRegistryHolder.java
│ │ │ ├── spi
│ │ │ │ ├── PlatformDataGeneratorProvider.java
│ │ │ │ ├── PlatformPluginManagerProvider.java
│ │ │ │ └── PlatformPluginManagerRegistry.java
│ │ │ ├── stereotype
│ │ │ │ ├── Command.java
│ │ │ │ ├── ConstructionListener.java
│ │ │ │ ├── Dependency.java
│ │ │ │ ├── ExternalDependency.java
│ │ │ │ ├── PlatformPlugin.java
│ │ │ │ ├── ProvidesFor.java
│ │ │ │ └── Repository.java
│ │ │ └── util
│ │ │ │ ├── FunctionalUtil.java
│ │ │ │ └── PluginUtil.java
│ │ │ └── loader
│ │ │ └── PlatformInjectSupportLoader.java
│ ├── build.gradle.kts
│ ├── loader
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── ext
│ │ │ └── platforminject
│ │ │ └── loader
│ │ │ ├── JarInJarClassLoader.java
│ │ │ ├── PlatformInjectLoaderLazy.java
│ │ │ └── PlatformInjectSupportLoader.java
│ ├── processor
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── eu
│ │ │ │ └── cloudnetservice
│ │ │ │ └── ext
│ │ │ │ └── platforminject
│ │ │ │ └── processor
│ │ │ │ ├── BindingClassGenerator.java
│ │ │ │ ├── PlatformPluginProcessor.java
│ │ │ │ ├── classgen
│ │ │ │ ├── BaseMainClassGenerator.java
│ │ │ │ ├── JavapoetMainClassGenerator.java
│ │ │ │ └── MethodBasedMainClassGenerator.java
│ │ │ │ ├── id
│ │ │ │ ├── AllowedCharRange.java
│ │ │ │ ├── CharRange.java
│ │ │ │ └── PluginIdGenerator.java
│ │ │ │ ├── infogen
│ │ │ │ └── NightConfigInfoGenerator.java
│ │ │ │ ├── platform
│ │ │ │ ├── bukkit
│ │ │ │ │ ├── BukkitMainClassGenerator.java
│ │ │ │ │ ├── BukkitPlatformInfoProvider.java
│ │ │ │ │ └── BukkitPluginInfoGenerator.java
│ │ │ │ ├── bungeecord
│ │ │ │ │ ├── BungeeCordMainClassGenerator.java
│ │ │ │ │ ├── BungeeCordPlatformInfoProvider.java
│ │ │ │ │ └── BungeeCordPluginInfoGenerator.java
│ │ │ │ ├── fabric
│ │ │ │ │ ├── FabricMainClassGenerator.java
│ │ │ │ │ ├── FabricPlatformInfoProvider.java
│ │ │ │ │ └── FabricPluginInfoGenerator.java
│ │ │ │ ├── limboloohp
│ │ │ │ │ ├── LimboLoohpMainClassGenerator.java
│ │ │ │ │ ├── LimboLoohpPlatformInfoProvider.java
│ │ │ │ │ └── LimboLoohpPluginInfoGenerator.java
│ │ │ │ ├── minestom
│ │ │ │ │ ├── MinestomMainClassGenerator.java
│ │ │ │ │ ├── MinestomPlatformInfoProvider.java
│ │ │ │ │ └── MinestomPluginInfoGenerator.java
│ │ │ │ ├── nukkit
│ │ │ │ │ ├── NukkitMainClassGenerator.java
│ │ │ │ │ ├── NukkitPlatformInfoProvider.java
│ │ │ │ │ └── NukkitPluginInfoGenerator.java
│ │ │ │ ├── sponge
│ │ │ │ │ ├── SpongeMainClassGenerator.java
│ │ │ │ │ ├── SpongePlatformInfoProvider.java
│ │ │ │ │ └── SpongePluginInfoGenerator.java
│ │ │ │ ├── velocity
│ │ │ │ │ ├── VelocityMainClassGenerator.java
│ │ │ │ │ ├── VelocityPlatformInfoProvider.java
│ │ │ │ │ └── VelocityPluginInfoGenerator.java
│ │ │ │ └── waterdog
│ │ │ │ │ ├── WaterDogMainClassGenerator.java
│ │ │ │ │ ├── WaterDogPlatformInfoProvider.java
│ │ │ │ │ └── WaterDogPluginInfoGenerator.java
│ │ │ │ └── util
│ │ │ │ ├── ConfigUtil.java
│ │ │ │ ├── GeantyrefUtil.java
│ │ │ │ ├── PatternUtil.java
│ │ │ │ ├── ResourceUtil.java
│ │ │ │ └── TypeUtil.java
│ │ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── gradle
│ │ │ └── incremental.annotation.processors
│ │ │ └── services
│ │ │ ├── eu.cloudnetservice.ext.platforminject.api.spi.PlatformDataGeneratorProvider
│ │ │ └── javax.annotation.processing.Processor
│ └── runtime
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── ext
│ │ │ └── platforminject
│ │ │ └── runtime
│ │ │ ├── DefaultPlatformPluginManagerRegistry.java
│ │ │ ├── platform
│ │ │ ├── bukkit
│ │ │ │ ├── BukkitPlatformManagerProvider.java
│ │ │ │ └── BukkitPlatformPluginManager.java
│ │ │ ├── bungeecord
│ │ │ │ ├── BungeeCordPlatformManagerProvider.java
│ │ │ │ └── BungeeCordPlatformPluginManager.java
│ │ │ ├── fabric
│ │ │ │ ├── FabricPlatformManagerProvider.java
│ │ │ │ └── FabricPlatformPluginManager.java
│ │ │ ├── limboloohp
│ │ │ │ ├── LimboLoohpPlatformManagerProvider.java
│ │ │ │ └── LimboLoohpPlatformPluginManager.java
│ │ │ ├── minestom
│ │ │ │ ├── MinestomPlatformManagerProvider.java
│ │ │ │ └── MinestomPlatformPluginManager.java
│ │ │ ├── nukkit
│ │ │ │ ├── NukkitPlatformManagerProvider.java
│ │ │ │ └── NukkitPlatformPluginManager.java
│ │ │ ├── sponge
│ │ │ │ ├── SpongePlatformManagerProvider.java
│ │ │ │ └── SpongePlatformPluginManager.java
│ │ │ ├── velocity
│ │ │ │ ├── VelocityPlatformManagerProvider.java
│ │ │ │ └── VelocityPlatformPluginManager.java
│ │ │ └── waterdog
│ │ │ │ ├── WaterDogPlatformManagerProvider.java
│ │ │ │ └── WaterDogPlatformPluginManager.java
│ │ │ └── util
│ │ │ └── LazyClassInstantiationUtil.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── eu.cloudnetservice.ext.platforminject.api.spi.PlatformPluginManagerProvider
│ │ └── eu.cloudnetservice.ext.platforminject.api.spi.PlatformPluginManagerRegistry
└── updater
│ ├── build.gradle.kts
│ └── src
│ └── main
│ └── java
│ └── eu
│ └── cloudnetservice
│ └── ext
│ └── updater
│ ├── Updater.java
│ ├── UpdaterRegistry.java
│ ├── defaults
│ └── DefaultUpdaterRegistry.java
│ └── util
│ ├── ChecksumUtil.java
│ └── GitHubUtil.java
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── launcher
├── build.gradle.kts
├── java22
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── eu
│ │ │ │ └── cloudnetservice
│ │ │ │ └── launcher
│ │ │ │ └── java22
│ │ │ │ ├── ApplicationBootstrap.java
│ │ │ │ ├── ApplicationLock.java
│ │ │ │ ├── CloudNetLauncher.java
│ │ │ │ ├── cnl
│ │ │ │ ├── CnlCommand.java
│ │ │ │ ├── CnlInterpreter.java
│ │ │ │ └── defaults
│ │ │ │ │ └── VarCnlCommand.java
│ │ │ │ ├── dependency
│ │ │ │ ├── Dependency.java
│ │ │ │ ├── DependencyHelper.java
│ │ │ │ └── Repository.java
│ │ │ │ ├── updater
│ │ │ │ ├── LauncherUpdaterContext.java
│ │ │ │ ├── LauncherUpdaterRegistry.java
│ │ │ │ ├── updaters
│ │ │ │ │ ├── LauncherChecksumsFileUpdater.java
│ │ │ │ │ ├── LauncherCloudNetUpdater.java
│ │ │ │ │ ├── LauncherModuleJsonUpdater.java
│ │ │ │ │ ├── LauncherPatcherUpdater.java
│ │ │ │ │ └── LauncherUpdater.java
│ │ │ │ └── util
│ │ │ │ │ └── FileDownloadUpdateHelper.java
│ │ │ │ └── util
│ │ │ │ ├── BootstrapUtil.java
│ │ │ │ ├── CommandLineHelper.java
│ │ │ │ ├── Environment.java
│ │ │ │ └── HttpUtil.java
│ │ └── resources
│ │ │ └── launcher.cnl
│ │ └── test
│ │ └── resources
│ │ └── test.cnl
├── java8
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── launcher
│ │ └── java8
│ │ └── Launcher.java
└── patcher
│ ├── build.gradle.kts
│ └── src
│ └── main
│ └── java
│ └── eu
│ └── cloudnetservice
│ └── launcher
│ └── patcher
│ └── CloudNetLauncherPatcher.java
├── modules.json
├── modules
├── bridge
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── bridge
│ │ │ ├── BridgeDocProperties.java
│ │ │ ├── BridgeManagement.java
│ │ │ ├── BridgeServiceHelper.java
│ │ │ ├── WorldPosition.java
│ │ │ ├── config
│ │ │ ├── BridgeConfiguration.java
│ │ │ ├── ProxyFallback.java
│ │ │ └── ProxyFallbackConfiguration.java
│ │ │ ├── event
│ │ │ ├── BridgeConfigurationUpdateEvent.java
│ │ │ ├── BridgeDeleteCloudOfflinePlayerEvent.java
│ │ │ ├── BridgeProxyPlayerDisconnectEvent.java
│ │ │ ├── BridgeProxyPlayerLoginEvent.java
│ │ │ ├── BridgeProxyPlayerServerSwitchEvent.java
│ │ │ ├── BridgeServerPlayerDisconnectEvent.java
│ │ │ ├── BridgeServerPlayerLoginEvent.java
│ │ │ ├── BridgeUpdateCloudOfflinePlayerEvent.java
│ │ │ └── BridgeUpdateCloudPlayerEvent.java
│ │ │ ├── node
│ │ │ └── event
│ │ │ │ └── LocalPlayerPreLoginEvent.java
│ │ │ └── player
│ │ │ ├── CloudOfflinePlayer.java
│ │ │ ├── CloudPlayer.java
│ │ │ ├── NetworkPlayerProxyInfo.java
│ │ │ ├── NetworkPlayerServerInfo.java
│ │ │ ├── NetworkServiceInfo.java
│ │ │ ├── PlayerManager.java
│ │ │ ├── PlayerProvider.java
│ │ │ ├── ServicePlayer.java
│ │ │ └── executor
│ │ │ ├── PlayerExecutor.java
│ │ │ └── ServerSelectorType.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── bridge
│ │ │ └── impl
│ │ │ ├── InternalBridgeManagement.java
│ │ │ ├── node
│ │ │ ├── CloudNetBridgeModule.java
│ │ │ ├── NodeBridgeManagement.java
│ │ │ ├── command
│ │ │ │ ├── BridgeCommand.java
│ │ │ │ └── PlayersCommand.java
│ │ │ ├── listener
│ │ │ │ ├── BridgeLocalProxyPlayerDisconnectListener.java
│ │ │ │ └── NodeSetupListener.java
│ │ │ ├── network
│ │ │ │ ├── NodeBridgeChannelMessageListener.java
│ │ │ │ └── NodePlayerChannelMessageListener.java
│ │ │ └── player
│ │ │ │ ├── NodePlayerExecutor.java
│ │ │ │ ├── NodePlayerManager.java
│ │ │ │ └── NodePlayerProvider.java
│ │ │ ├── platform
│ │ │ ├── PlatformBridgeManagement.java
│ │ │ ├── PlatformPlayerExecutor.java
│ │ │ ├── PlatformPlayerExecutorAdapter.java
│ │ │ ├── PlatformPlayerManager.java
│ │ │ ├── bukkit
│ │ │ │ ├── BukkitBridgeManagement.java
│ │ │ │ ├── BukkitBridgePlugin.java
│ │ │ │ ├── BukkitDirectPlayerExecutor.java
│ │ │ │ ├── BukkitPlayerManagementListener.java
│ │ │ │ └── BukkitUtil.java
│ │ │ ├── bungeecord
│ │ │ │ ├── BungeeCordBridgeManagement.java
│ │ │ │ ├── BungeeCordBridgePlugin.java
│ │ │ │ ├── BungeeCordDirectPlayerExecutor.java
│ │ │ │ ├── BungeeCordHelper.java
│ │ │ │ ├── BungeeCordPlayerManagementListener.java
│ │ │ │ └── command
│ │ │ │ │ ├── BungeeCordCloudCommand.java
│ │ │ │ │ ├── BungeeCordFakeReloadCommand.java
│ │ │ │ │ └── BungeeCordHubCommand.java
│ │ │ ├── fabric
│ │ │ │ ├── FabricBridgeInitializer.java
│ │ │ │ ├── FabricBridgeManagement.java
│ │ │ │ ├── FabricDirectPlayerExecutor.java
│ │ │ │ ├── access
│ │ │ │ │ └── CustomPayloadAccessor.java
│ │ │ │ ├── mixin
│ │ │ │ │ ├── forwarding
│ │ │ │ │ │ ├── ClientIntentionPacketMixin.java
│ │ │ │ │ │ ├── CompressionThresholdMixin.java
│ │ │ │ │ │ ├── ServerHandshakePacketListenerMixin.java
│ │ │ │ │ │ └── ServerLoginPacketListenerMixin.java
│ │ │ │ │ ├── handling
│ │ │ │ │ │ ├── MinecraftServerMixin.java
│ │ │ │ │ │ └── PlayerListMixin.java
│ │ │ │ │ └── payload
│ │ │ │ │ │ └── CustomPayloadMixin.java
│ │ │ │ └── util
│ │ │ │ │ ├── BridgedServer.java
│ │ │ │ │ └── FabricInjectionHolder.java
│ │ │ ├── fallback
│ │ │ │ └── FallbackProfile.java
│ │ │ ├── helper
│ │ │ │ ├── ProxyPlatformHelper.java
│ │ │ │ └── ServerPlatformHelper.java
│ │ │ ├── limboloohp
│ │ │ │ ├── LimboLoohpBridgeManagement.java
│ │ │ │ ├── LimboLoohpBridgePlugin.java
│ │ │ │ ├── LimboLoohpDirectPlayerExecutor.java
│ │ │ │ └── LimboLoohpPlayerManagementListener.java
│ │ │ ├── listener
│ │ │ │ ├── PlatformChannelMessageListener.java
│ │ │ │ └── PlatformInformationListener.java
│ │ │ ├── minestom
│ │ │ │ ├── MinestomBridgeExtension.java
│ │ │ │ ├── MinestomBridgeManagement.java
│ │ │ │ ├── MinestomDefaultPermissionChecker.java
│ │ │ │ ├── MinestomDirectPlayerExecutor.java
│ │ │ │ ├── MinestomPermissionChecker.java
│ │ │ │ └── MinestomPlayerManagementListener.java
│ │ │ ├── nukkit
│ │ │ │ ├── NukkitBridgeManagement.java
│ │ │ │ ├── NukkitBridgePlugin.java
│ │ │ │ ├── NukkitDirectPlayerExecutor.java
│ │ │ │ └── NukkitPlayerManagementListener.java
│ │ │ ├── sponge
│ │ │ │ ├── SpongeAddressAccessor.java
│ │ │ │ ├── SpongeBridgeManagement.java
│ │ │ │ ├── SpongeBridgePlugin.java
│ │ │ │ ├── SpongeDirectPlayerExecutor.java
│ │ │ │ └── SpongePlayerManagementListener.java
│ │ │ ├── velocity
│ │ │ │ ├── VelocityBridgeManagement.java
│ │ │ │ ├── VelocityBridgePlugin.java
│ │ │ │ ├── VelocityDirectPlayerExecutor.java
│ │ │ │ ├── VelocityPlayerManagementListener.java
│ │ │ │ └── commands
│ │ │ │ │ ├── VelocityCloudCommand.java
│ │ │ │ │ └── VelocityHubCommand.java
│ │ │ └── waterdog
│ │ │ │ ├── WaterDogPEBridgeManagement.java
│ │ │ │ ├── WaterDogPEBridgePlugin.java
│ │ │ │ ├── WaterDogPEDirectPlayerExecutor.java
│ │ │ │ ├── WaterDogPEHandlers.java
│ │ │ │ ├── WaterDogPEPlayerManagementListener.java
│ │ │ │ └── command
│ │ │ │ ├── WaterDogPECloudCommand.java
│ │ │ │ └── WaterDogPEHubCommand.java
│ │ │ ├── rpc
│ │ │ ├── ComponentObjectSerializer.java
│ │ │ └── TitleObjectSerializer.java
│ │ │ └── util
│ │ │ └── BridgeHostAndPortUtil.java
│ │ └── resources
│ │ ├── META-INF
│ │ └── sponge_plugins.json.template
│ │ ├── cloudnet_bridge.accesswidener
│ │ ├── cloudnet_bridge.mixins.json
│ │ └── fabric.mod.json.template
├── build.gradle.kts
├── cloudflare
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── cloudflare
│ │ │ └── config
│ │ │ ├── CloudflareConfiguration.java
│ │ │ ├── CloudflareConfigurationEntry.java
│ │ │ └── CloudflareGroupConfiguration.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── cloudflare
│ │ └── impl
│ │ ├── CloudNetCloudflareModule.java
│ │ ├── cloudflare
│ │ ├── CloudFlareRecordManager.java
│ │ └── DnsRecordDetail.java
│ │ ├── dns
│ │ ├── DnsRecord.java
│ │ ├── DnsType.java
│ │ └── SrvRecord.java
│ │ └── listener
│ │ └── CloudflareServiceStateListener.java
├── database-mongodb
│ ├── api
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── mongodb
│ │ │ └── config
│ │ │ └── MongoDBConnectionConfig.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── mongodb
│ │ │ └── impl
│ │ │ ├── CloudNetMongoDatabaseModule.java
│ │ │ ├── MongoDBDatabase.java
│ │ │ └── MongoDBDatabaseProvider.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── mongodb
│ │ │ ├── MongoDBDatabaseTest.java
│ │ │ └── junit
│ │ │ ├── EnableServicesInject.java
│ │ │ └── EnableServicesInjectExtension.java
│ │ └── resources
│ │ └── logback-test.xml
├── database-mysql
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── mysql
│ │ │ └── config
│ │ │ ├── MySQLConfiguration.java
│ │ │ └── MySQLConnectionEndpoint.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── mysql
│ │ │ └── impl
│ │ │ ├── CloudNetMySQLDatabaseModule.java
│ │ │ ├── MySQLDatabase.java
│ │ │ └── MySQLDatabaseProvider.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── mysql
│ │ │ └── impl
│ │ │ ├── MySQLDatabaseTest.java
│ │ │ └── junit
│ │ │ ├── EnableServicesInject.java
│ │ │ └── EnableServicesInjectExtension.java
│ │ └── resources
│ │ └── logback-test.xml
├── dockerized-services
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ └── java
│ │ │ │ └── eu
│ │ │ │ └── cloudnetservice
│ │ │ │ └── modules
│ │ │ │ └── docker
│ │ │ │ └── config
│ │ │ │ ├── DockerConfiguration.java
│ │ │ │ ├── DockerImage.java
│ │ │ │ ├── DockerPortMapping.java
│ │ │ │ └── TaskDockerConfig.java
│ │ │ └── test
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── docker
│ │ │ └── config
│ │ │ └── DockerImageTest.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── docker
│ │ └── impl
│ │ ├── DockerCommand.java
│ │ ├── DockerizedLocalCloudServiceFactory.java
│ │ ├── DockerizedService.java
│ │ ├── DockerizedServiceLogCache.java
│ │ └── DockerizedServicesModule.java
├── influx
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── influx
│ │ │ ├── InfluxConfiguration.java
│ │ │ └── publish
│ │ │ └── Publisher.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── influx
│ │ └── impl
│ │ ├── InfluxModule.java
│ │ ├── publishers
│ │ ├── ConnectedNodeInfoPublisher.java
│ │ └── RunningServiceProcessSnapshotPublisher.java
│ │ └── util
│ │ └── PointUtil.java
├── labymod
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── labymod
│ │ │ ├── LabyModManagement.java
│ │ │ └── config
│ │ │ ├── LabyModBanner.java
│ │ │ ├── LabyModConfiguration.java
│ │ │ ├── LabyModPermissions.java
│ │ │ └── LabyModServiceDisplay.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── labymod
│ │ └── impl
│ │ ├── node
│ │ ├── CloudNetLabyModModule.java
│ │ ├── NodeLabyModListener.java
│ │ └── NodeLabyModManagement.java
│ │ └── platform
│ │ ├── PlatformLabyModListener.java
│ │ ├── PlatformLabyModManagement.java
│ │ ├── bungeecord
│ │ ├── BungeeCordLabyModListener.java
│ │ └── BungeeCordLabyModPlugin.java
│ │ └── velocity
│ │ ├── VelocityLabyModListener.java
│ │ └── VelocityLabyModPlugin.java
├── npcs
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── npc
│ │ │ ├── NPC.java
│ │ │ ├── NPCManagement.java
│ │ │ ├── configuration
│ │ │ ├── InventoryConfiguration.java
│ │ │ ├── ItemLayout.java
│ │ │ ├── LabyModEmoteConfiguration.java
│ │ │ ├── NPCConfiguration.java
│ │ │ ├── NPCConfigurationEntry.java
│ │ │ └── NPCPoolOptions.java
│ │ │ └── platform
│ │ │ └── PlatformSelectorEntity.java
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── npc
│ │ └── impl
│ │ ├── AbstractNPCManagement.java
│ │ ├── InternalNPCManagement.java
│ │ ├── SharedChannelMessageListener.java
│ │ ├── _deprecated
│ │ ├── CloudNPC.java
│ │ ├── NPCAction.java
│ │ ├── NPCConstants.java
│ │ ├── configuration
│ │ │ ├── NPCConfiguration.java
│ │ │ └── NPCConfigurationEntry.java
│ │ └── package-info.java
│ │ ├── node
│ │ ├── CloudNetNPCModule.java
│ │ ├── NPCCommand.java
│ │ ├── NodeNPCManagement.java
│ │ └── listeners
│ │ │ ├── NodeChannelMessageListener.java
│ │ │ └── NodeSetupListener.java
│ │ └── platform
│ │ ├── CloudNetServiceListener.java
│ │ ├── PlatformNPCManagement.java
│ │ └── bukkit
│ │ ├── BukkitNPCPlugin.java
│ │ ├── BukkitPlatformNPCManagement.java
│ │ ├── command
│ │ └── NPCCommand.java
│ │ ├── entity
│ │ ├── BukkitPlatformSelectorEntity.java
│ │ ├── EntityBukkitPlatformSelectorEntity.java
│ │ └── NPCBukkitPlatformSelector.java
│ │ ├── listener
│ │ ├── BukkitEntityProtectionListener.java
│ │ ├── BukkitFunctionalityListener.java
│ │ └── BukkitWorldListener.java
│ │ └── util
│ │ └── ReflectionUtil.java
├── report
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── report
│ │ │ └── config
│ │ │ ├── PasteServer.java
│ │ │ └── ReportConfiguration.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── report
│ │ │ └── impl
│ │ │ ├── CloudNetReportModule.java
│ │ │ ├── command
│ │ │ └── ReportCommand.java
│ │ │ ├── emitter
│ │ │ ├── EmitterService.java
│ │ │ ├── ReportDataEmitter.java
│ │ │ ├── ReportDataWriter.java
│ │ │ ├── SpecificReportDataEmitter.java
│ │ │ └── defaults
│ │ │ │ ├── GroupConfigDataEmitter.java
│ │ │ │ ├── HeapDumpDataEmitter.java
│ │ │ │ ├── LocalModuleDataEmitter.java
│ │ │ │ ├── LocalNodeConfigDataEmitter.java
│ │ │ │ ├── NodeServerDataEmitter.java
│ │ │ │ ├── ServiceInfoDataEmitter.java
│ │ │ │ ├── ServiceTasksDataEmitter.java
│ │ │ │ ├── SystemInfoDataEmitter.java
│ │ │ │ └── ThreadInfoDataEmitter.java
│ │ │ └── util
│ │ │ └── ReportConstants.java
│ │ └── test
│ │ └── resources
│ │ └── logback-test.xml
├── signs
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── signs
│ │ │ ├── Sign.java
│ │ │ ├── SignManagement.java
│ │ │ └── configuration
│ │ │ ├── SignConfigurationEntry.java
│ │ │ ├── SignGroupConfiguration.java
│ │ │ ├── SignLayout.java
│ │ │ ├── SignLayoutsHolder.java
│ │ │ └── SignsConfiguration.java
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── signs
│ │ │ └── impl
│ │ │ ├── AbstractSignManagement.java
│ │ │ ├── InternalSignManagement.java
│ │ │ ├── SharedChannelMessageListener.java
│ │ │ ├── _deprecated
│ │ │ ├── Sign.java
│ │ │ ├── SignConstants.java
│ │ │ ├── SignLayout.java
│ │ │ ├── configuration
│ │ │ │ ├── SignConfiguration.java
│ │ │ │ ├── SignConfigurationReaderAndWriter.java
│ │ │ │ └── entry
│ │ │ │ │ ├── SignConfigurationEntry.java
│ │ │ │ │ ├── SignConfigurationEntryType.java
│ │ │ │ │ ├── SignConfigurationTaskEntry.java
│ │ │ │ │ └── SignLayoutConfiguration.java
│ │ │ └── package-info.java
│ │ │ ├── node
│ │ │ ├── CloudNetSignsModule.java
│ │ │ ├── NodeSignManagement.java
│ │ │ ├── NodeSignsListener.java
│ │ │ ├── SignCommand.java
│ │ │ ├── configuration
│ │ │ │ ├── NodeSignsConfigurationHelper.java
│ │ │ │ └── SignConfigurationType.java
│ │ │ └── util
│ │ │ │ └── SignEntryTaskSetup.java
│ │ │ ├── platform
│ │ │ ├── PlatformSign.java
│ │ │ ├── PlatformSignManagement.java
│ │ │ ├── SignsPlatformListener.java
│ │ │ ├── bukkit
│ │ │ │ ├── BukkitCompatibility.java
│ │ │ │ ├── BukkitPlatformSign.java
│ │ │ │ ├── BukkitSignManagement.java
│ │ │ │ ├── BukkitSignsPlugin.java
│ │ │ │ ├── event
│ │ │ │ │ └── BukkitCloudSignInteractEvent.java
│ │ │ │ └── functionality
│ │ │ │ │ ├── SignInteractListener.java
│ │ │ │ │ └── SignsCommand.java
│ │ │ ├── minestom
│ │ │ │ ├── MinestomPlatformSign.java
│ │ │ │ ├── MinestomSignBlockHandler.java
│ │ │ │ ├── MinestomSignManagement.java
│ │ │ │ ├── MinestomSignsExtension.java
│ │ │ │ ├── event
│ │ │ │ │ └── MinestomCloudSignInteractEvent.java
│ │ │ │ └── functionality
│ │ │ │ │ ├── SignInteractListener.java
│ │ │ │ │ └── SignsCommand.java
│ │ │ ├── nukkit
│ │ │ │ ├── NukkitPlatformSign.java
│ │ │ │ ├── NukkitSignManagement.java
│ │ │ │ ├── NukkitSignsPlugin.java
│ │ │ │ ├── event
│ │ │ │ │ └── NukkitCloudSignInteractEvent.java
│ │ │ │ └── functionality
│ │ │ │ │ ├── SignInteractListener.java
│ │ │ │ │ └── SignsCommand.java
│ │ │ └── sponge
│ │ │ │ ├── CommandRegistrationListener.java
│ │ │ │ ├── SpongePlatformSign.java
│ │ │ │ ├── SpongeSignManagement.java
│ │ │ │ ├── SpongeSignsPlugin.java
│ │ │ │ ├── event
│ │ │ │ └── SpongeCloudSignInteractEvent.java
│ │ │ │ └── functionality
│ │ │ │ ├── SignInteractListener.java
│ │ │ │ └── SignsCommand.java
│ │ │ └── util
│ │ │ ├── LayoutUtil.java
│ │ │ └── PriorityUtil.java
│ │ └── resources
│ │ └── META-INF
│ │ └── sponge_plugins.json.template
├── smart
│ ├── api
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── smart
│ │ │ └── SmartServiceTaskConfig.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── smart
│ │ └── impl
│ │ ├── CloudNetSmartModule.java
│ │ ├── SmartCommand.java
│ │ ├── listener
│ │ ├── CloudNetLocalServiceListener.java
│ │ ├── CloudNetLocalServiceTaskListener.java
│ │ └── CloudNetTickListener.java
│ │ └── util
│ │ └── SmartUtil.java
├── storage-s3
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── s3
│ │ │ └── config
│ │ │ └── S3TemplateStorageConfig.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── s3
│ │ │ └── impl
│ │ │ ├── S3TemplateStorage.java
│ │ │ └── S3TemplateStorageModule.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── s3
│ │ │ └── S3TemplateStorageTest.java
│ │ └── resources
│ │ └── logback-test.xml
├── storage-sftp
│ ├── api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── sftp
│ │ │ └── config
│ │ │ └── SFTPTemplateStorageConfig.java
│ ├── build.gradle.kts
│ └── impl
│ │ ├── build.gradle.kts
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── sftp
│ │ │ └── impl
│ │ │ ├── SFTPClientPool.java
│ │ │ ├── SFTPTemplateStorage.java
│ │ │ ├── SFTPTemplateStorageModule.java
│ │ │ └── sshj
│ │ │ ├── ActiveHeartbeatKeepAliveProvider.java
│ │ │ └── FilteringLocalFileSource.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── modules
│ │ │ └── sftp
│ │ │ └── impl
│ │ │ └── SFTPTemplateStorageTest.java
│ │ └── resources
│ │ ├── hostkey.pem
│ │ └── logback-test.xml
└── syncproxy
│ ├── api
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── syncproxy
│ │ ├── SyncProxyConfigurationUpdateEvent.java
│ │ ├── SyncProxyConstants.java
│ │ ├── SyncProxyManagement.java
│ │ └── config
│ │ ├── SyncProxyConfiguration.java
│ │ ├── SyncProxyLoginConfiguration.java
│ │ ├── SyncProxyMotd.java
│ │ ├── SyncProxyTabList.java
│ │ └── SyncProxyTabListConfiguration.java
│ ├── build.gradle.kts
│ └── impl
│ ├── build.gradle.kts
│ └── src
│ ├── main
│ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── modules
│ │ └── syncproxy
│ │ └── impl
│ │ ├── node
│ │ ├── CloudNetSyncProxyModule.java
│ │ ├── NodeSyncProxyManagement.java
│ │ ├── command
│ │ │ └── SyncProxyCommand.java
│ │ └── listener
│ │ │ └── NodeSyncProxyChannelMessageListener.java
│ │ └── platform
│ │ ├── PlatformSyncProxyManagement.java
│ │ ├── bungee
│ │ ├── BungeeCordSyncProxyListener.java
│ │ ├── BungeeCordSyncProxyManagement.java
│ │ └── BungeeCordSyncProxyPlugin.java
│ │ ├── listener
│ │ └── SyncProxyCloudListener.java
│ │ ├── velocity
│ │ ├── VelocitySyncProxyListener.java
│ │ ├── VelocitySyncProxyManagement.java
│ │ └── VelocitySyncProxyPlugin.java
│ │ └── waterdog
│ │ ├── WaterDogPESyncProxyListener.java
│ │ ├── WaterDogPESyncProxyManagement.java
│ │ └── WaterDogPESyncProxyPlugin.java
│ └── test
│ └── resources
│ └── logback-test.xml
├── node
├── api
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── node
│ │ ├── cluster
│ │ ├── LocalNodeServer.java
│ │ ├── NodeServer.java
│ │ ├── NodeServerProvider.java
│ │ ├── NodeServerState.java
│ │ └── sync
│ │ │ ├── DataSyncHandler.java
│ │ │ └── DataSyncRegistry.java
│ │ ├── command
│ │ ├── CommandProvider.java
│ │ ├── annotation
│ │ │ ├── CommandAlias.java
│ │ │ ├── Description.java
│ │ │ ├── Documentation.java
│ │ │ └── EnableConfirmSkipFlag.java
│ │ ├── exception
│ │ │ └── ArgumentNotAvailableException.java
│ │ └── source
│ │ │ └── CommandSource.java
│ │ ├── config
│ │ └── Configuration.java
│ │ ├── database
│ │ └── LocalDatabase.java
│ │ ├── event
│ │ ├── CloudNetNodePostInitializationEvent.java
│ │ ├── cluster
│ │ │ ├── LocalNodeSnapshotConfigureEvent.java
│ │ │ └── NetworkClusterNodeInfoUpdateEvent.java
│ │ ├── command
│ │ │ ├── CommandInvalidSyntaxEvent.java
│ │ │ ├── CommandNotFoundEvent.java
│ │ │ ├── CommandPostProcessEvent.java
│ │ │ ├── CommandPreProcessEvent.java
│ │ │ └── CommandProcessEvent.java
│ │ ├── group
│ │ │ ├── LocalGroupConfigurationAddEvent.java
│ │ │ └── LocalGroupConfigurationRemoveEvent.java
│ │ ├── instance
│ │ │ ├── CloudNetTickEvent.java
│ │ │ └── CloudNetTickServiceStartEvent.java
│ │ ├── network
│ │ │ ├── NetworkClusterNodeAuthSuccessEvent.java
│ │ │ ├── NetworkClusterNodeReconnectEvent.java
│ │ │ └── NetworkServiceAuthSuccessEvent.java
│ │ ├── service
│ │ │ ├── CloudServiceConfigurationPrePrepareEvent.java
│ │ │ ├── CloudServiceCreateEvent.java
│ │ │ ├── CloudServiceDeploymentEvent.java
│ │ │ ├── CloudServiceEvent.java
│ │ │ ├── CloudServiceNodeSelectEvent.java
│ │ │ ├── CloudServicePostLifecycleEvent.java
│ │ │ ├── CloudServicePostPrepareEvent.java
│ │ │ ├── CloudServicePostProcessStartEvent.java
│ │ │ ├── CloudServicePreForceStopEvent.java
│ │ │ ├── CloudServicePreLifecycleEvent.java
│ │ │ ├── CloudServicePreLoadInclusionEvent.java
│ │ │ ├── CloudServicePrePrepareEvent.java
│ │ │ ├── CloudServicePreProcessStartEvent.java
│ │ │ └── CloudServiceTemplateLoadEvent.java
│ │ ├── task
│ │ │ ├── LocalServiceTaskAddEvent.java
│ │ │ └── LocalServiceTaskRemoveEvent.java
│ │ └── template
│ │ │ └── ServiceTemplateInstallEvent.java
│ │ ├── service
│ │ ├── CloudService.java
│ │ ├── CloudServiceManager.java
│ │ ├── LocalCloudServiceFactory.java
│ │ ├── ServiceConfigurationPreparer.java
│ │ ├── ServiceConsoleLineHandler.java
│ │ └── ServiceConsoleLogCache.java
│ │ └── tick
│ │ ├── Scheduler.java
│ │ ├── ShutdownHandler.java
│ │ └── TickLoop.java
├── build.gradle.kts
└── impl
│ ├── build.gradle.kts
│ └── src
│ ├── main
│ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── node
│ │ │ └── impl
│ │ │ ├── Node.java
│ │ │ ├── boot
│ │ │ ├── BootFactories.java
│ │ │ └── Bootstrap.java
│ │ │ ├── cluster
│ │ │ ├── defaults
│ │ │ │ ├── DefaultLocalNodeServer.java
│ │ │ │ ├── DefaultNodeServerProvider.java
│ │ │ │ └── RemoteNodeServer.java
│ │ │ ├── sync
│ │ │ │ ├── DefaultDataSyncHandler.java
│ │ │ │ ├── DefaultDataSyncRegistry.java
│ │ │ │ └── prettyprint
│ │ │ │ │ ├── GulfArrayDiffPrinter.java
│ │ │ │ │ ├── GulfHelper.java
│ │ │ │ │ ├── GulfMapDiffPrinter.java
│ │ │ │ │ └── GulfPrettyPrint.java
│ │ │ ├── task
│ │ │ │ ├── LocalNodeUpdateTask.java
│ │ │ │ └── NodeDisconnectTrackerTask.java
│ │ │ └── util
│ │ │ │ ├── NodeDisconnectHandler.java
│ │ │ │ └── QueuedNetworkChannel.java
│ │ │ ├── command
│ │ │ ├── defaults
│ │ │ │ ├── AerogelInjectionService.java
│ │ │ │ ├── DefaultCaptionHandler.java
│ │ │ │ ├── DefaultCommandManager.java
│ │ │ │ ├── DefaultCommandPostProcessor.java
│ │ │ │ ├── DefaultCommandPreProcessor.java
│ │ │ │ ├── DefaultCommandProvider.java
│ │ │ │ └── DefaultSuggestionProcessor.java
│ │ │ ├── exception
│ │ │ │ └── CommandExceptionHandler.java
│ │ │ ├── source
│ │ │ │ ├── ConsoleCommandSource.java
│ │ │ │ └── DriverCommandSource.java
│ │ │ └── sub
│ │ │ │ ├── ClearCommand.java
│ │ │ │ ├── ClusterCommand.java
│ │ │ │ ├── ConfigCommand.java
│ │ │ │ ├── CreateCommand.java
│ │ │ │ ├── DevCommand.java
│ │ │ │ ├── ExitCommand.java
│ │ │ │ ├── GroupsCommand.java
│ │ │ │ ├── HelpCommand.java
│ │ │ │ ├── MeCommand.java
│ │ │ │ ├── MigrateCommand.java
│ │ │ │ ├── ModulesCommand.java
│ │ │ │ ├── ServiceCommand.java
│ │ │ │ ├── TasksCommand.java
│ │ │ │ ├── TemplateCommand.java
│ │ │ │ └── VersionCommand.java
│ │ │ ├── config
│ │ │ ├── ConfigurationUtil.java
│ │ │ └── JsonConfiguration.java
│ │ │ ├── console
│ │ │ ├── Console.java
│ │ │ ├── ConsoleColor.java
│ │ │ ├── ConsoleReadThread.java
│ │ │ ├── JLine3Completer.java
│ │ │ ├── JLine3CompletionMatcher.java
│ │ │ ├── JLine3Console.java
│ │ │ ├── animation
│ │ │ │ ├── AbstractConsoleAnimation.java
│ │ │ │ ├── progressbar
│ │ │ │ │ ├── ConsoleProgressAnimation.java
│ │ │ │ │ ├── ConsoleProgressWrappers.java
│ │ │ │ │ └── wrapper
│ │ │ │ │ │ ├── WrappedInputStream.java
│ │ │ │ │ │ └── WrappedIterator.java
│ │ │ │ └── setup
│ │ │ │ │ ├── ConsoleAnswerTabCompleteHandler.java
│ │ │ │ │ ├── ConsoleSetupAnimation.java
│ │ │ │ │ └── answer
│ │ │ │ │ ├── Parsers.java
│ │ │ │ │ ├── QuestionAnswerType.java
│ │ │ │ │ └── QuestionListEntry.java
│ │ │ ├── handler
│ │ │ │ ├── ConsoleInputHandler.java
│ │ │ │ ├── ConsoleTabCompleteHandler.java
│ │ │ │ └── Toggleable.java
│ │ │ ├── log
│ │ │ │ ├── ConsoleLevelConversion.java
│ │ │ │ └── ConsoleLogAppender.java
│ │ │ └── util
│ │ │ │ └── HeaderReader.java
│ │ │ ├── database
│ │ │ ├── AbstractDatabase.java
│ │ │ ├── AbstractNodeDatabaseProvider.java
│ │ │ ├── NodeDatabaseProvider.java
│ │ │ ├── h2
│ │ │ │ ├── H2Database.java
│ │ │ │ └── H2DatabaseProvider.java
│ │ │ ├── sql
│ │ │ │ ├── SQLDatabase.java
│ │ │ │ └── SQLDatabaseProvider.java
│ │ │ ├── util
│ │ │ │ └── LocalDatabaseUtil.java
│ │ │ └── xodus
│ │ │ │ ├── XodusDatabase.java
│ │ │ │ └── XodusDatabaseProvider.java
│ │ │ ├── event
│ │ │ ├── log
│ │ │ │ └── LoggingEntryEvent.java
│ │ │ └── setup
│ │ │ │ ├── SetupCancelledEvent.java
│ │ │ │ ├── SetupCompleteEvent.java
│ │ │ │ ├── SetupEvent.java
│ │ │ │ ├── SetupInitiateEvent.java
│ │ │ │ └── SetupResponseEvent.java
│ │ │ ├── log
│ │ │ └── QueuedConsoleLogAppender.java
│ │ │ ├── module
│ │ │ ├── ModuleEntry.java
│ │ │ ├── ModulesHolder.java
│ │ │ ├── NodeModuleProviderHandler.java
│ │ │ ├── listener
│ │ │ │ └── PluginIncludeListener.java
│ │ │ ├── updater
│ │ │ │ ├── ModuleUpdater.java
│ │ │ │ ├── ModuleUpdaterContext.java
│ │ │ │ └── ModuleUpdaterRegistry.java
│ │ │ └── util
│ │ │ │ └── ModuleUpdateUtil.java
│ │ │ ├── network
│ │ │ ├── DefaultNetworkClientChannelHandler.java
│ │ │ ├── DefaultNetworkServerChannelHandler.java
│ │ │ ├── NodeNetworkUtil.java
│ │ │ ├── chunk
│ │ │ │ ├── FileDeployCallbackListener.java
│ │ │ │ ├── FileQueryChannelMessageListener.java
│ │ │ │ ├── StaticServiceDeployCallback.java
│ │ │ │ ├── TemplateDeployCallback.java
│ │ │ │ └── TemplateFileDeployCallback.java
│ │ │ ├── listener
│ │ │ │ ├── AuthorizationPacketListener.java
│ │ │ │ ├── AuthorizationResponsePacketListener.java
│ │ │ │ ├── ChannelMessagePacketListener.java
│ │ │ │ ├── ServiceSyncAckPacketListener.java
│ │ │ │ └── message
│ │ │ │ │ ├── GroupChannelMessageListener.java
│ │ │ │ │ ├── NodeChannelMessageListener.java
│ │ │ │ │ ├── ServiceChannelMessageListener.java
│ │ │ │ │ └── TaskChannelMessageListener.java
│ │ │ └── packet
│ │ │ │ ├── AuthorizationResponsePacket.java
│ │ │ │ └── ServiceSyncAckPacket.java
│ │ │ ├── provider
│ │ │ ├── NodeClusterNodeProvider.java
│ │ │ ├── NodeGroupConfigurationProvider.java
│ │ │ ├── NodeMessenger.java
│ │ │ └── NodeServiceTaskProvider.java
│ │ │ ├── service
│ │ │ ├── InternalCloudService.java
│ │ │ ├── InternalCloudServiceManager.java
│ │ │ └── defaults
│ │ │ │ ├── AbstractService.java
│ │ │ │ ├── DefaultCloudServiceManager.java
│ │ │ │ ├── JVMService.java
│ │ │ │ ├── NodeCloudServiceFactory.java
│ │ │ │ ├── ServiceCreateRetryTracker.java
│ │ │ │ ├── config
│ │ │ │ ├── AbstractServiceConfigurationPreparer.java
│ │ │ │ ├── BungeeConfigurationPreparer.java
│ │ │ │ ├── GlowstoneConfigurationPreparer.java
│ │ │ │ ├── LimboLoohpServiceConfigurationPreparer.java
│ │ │ │ ├── NukkitConfigurationPreparer.java
│ │ │ │ ├── VanillaServiceConfigurationPreparer.java
│ │ │ │ ├── VelocityConfigurationPreparer.java
│ │ │ │ └── WaterdogPEConfigurationPreparer.java
│ │ │ │ ├── factory
│ │ │ │ ├── BaseLocalCloudServiceFactory.java
│ │ │ │ └── JVMLocalCloudServiceFactory.java
│ │ │ │ ├── log
│ │ │ │ ├── AbstractServiceLogCache.java
│ │ │ │ ├── NonBlockingLineReader.java
│ │ │ │ ├── ProcessServiceLogCache.java
│ │ │ │ └── ProcessServiceLogReadScheduler.java
│ │ │ │ └── provider
│ │ │ │ ├── EmptySpecificCloudServiceProvider.java
│ │ │ │ └── RemoteNodeCloudServiceProvider.java
│ │ │ ├── setup
│ │ │ ├── DefaultClusterSetup.java
│ │ │ ├── DefaultConfigSetup.java
│ │ │ ├── DefaultInstallation.java
│ │ │ ├── DefaultSetup.java
│ │ │ ├── DefaultTaskSetup.java
│ │ │ └── SpecificTaskSetup.java
│ │ │ ├── template
│ │ │ ├── LocalTemplateStorage.java
│ │ │ ├── NodeTemplateStorageProvider.java
│ │ │ ├── TemplateStorageUtil.java
│ │ │ └── listener
│ │ │ │ └── TemplatePrepareListener.java
│ │ │ ├── tick
│ │ │ ├── DefaultShutdownHandler.java
│ │ │ └── DefaultTickLoop.java
│ │ │ ├── util
│ │ │ ├── JavaVersionResolver.java
│ │ │ ├── NetworkUtil.java
│ │ │ └── WildcardUtil.java
│ │ │ └── version
│ │ │ ├── ServiceVersion.java
│ │ │ ├── ServiceVersionProvider.java
│ │ │ ├── ServiceVersionType.java
│ │ │ ├── execute
│ │ │ ├── InstallStep.java
│ │ │ ├── InstallStepExecutor.java
│ │ │ └── defaults
│ │ │ │ ├── BuildStepExecutor.java
│ │ │ │ ├── CopyFilterStepExecutor.java
│ │ │ │ ├── DeployStepExecutor.java
│ │ │ │ ├── DownloadStepExecutor.java
│ │ │ │ ├── FabricApiVersionFetch.java
│ │ │ │ ├── PaperApiVersionFetchStepExecutor.java
│ │ │ │ ├── SpongeApiVersionFetchStepExecutor.java
│ │ │ │ └── UnzipStepExecutor.java
│ │ │ └── information
│ │ │ ├── FileSystemVersionInstaller.java
│ │ │ ├── TemplateVersionInstaller.java
│ │ │ └── VersionInstaller.java
│ └── resources
│ │ ├── files
│ │ ├── bungee
│ │ │ └── config.yml
│ │ ├── glowstone
│ │ │ └── glowstone.yml
│ │ ├── limboloohp
│ │ │ ├── server.properties
│ │ │ └── spawn.schem
│ │ ├── nms
│ │ │ ├── bukkit.yml
│ │ │ ├── server.properties
│ │ │ ├── spigot.yml
│ │ │ └── sponge.conf
│ │ ├── nukkit
│ │ │ ├── nukkit.yml
│ │ │ └── server.properties
│ │ ├── server-icon.png
│ │ ├── velocity
│ │ │ └── velocity.toml
│ │ ├── versions.json
│ │ └── waterdogpe
│ │ │ └── config.yml
│ │ ├── header.txt
│ │ ├── lang
│ │ ├── de_DE.properties
│ │ └── en_US.properties
│ │ └── logback.xml
│ └── test
│ ├── java
│ └── eu
│ │ └── cloudnetservice
│ │ └── node
│ │ └── impl
│ │ ├── command
│ │ └── CommandProviderTest.java
│ │ ├── database
│ │ ├── h2
│ │ │ └── H2DatabaseTest.java
│ │ └── xodus
│ │ │ └── XodusDatabaseTest.java
│ │ ├── junit
│ │ ├── EnableServicesInject.java
│ │ └── EnableServicesInjectExtension.java
│ │ ├── service
│ │ └── defaults
│ │ │ └── log
│ │ │ └── NonBlockingLineReaderTest.java
│ │ ├── template
│ │ └── LocalTemplateStorageTest.java
│ │ └── util
│ │ └── WildcardUtilTest.java
│ └── resources
│ ├── local_template_storage.zip
│ └── logback-test.xml
├── plugins
├── build.gradle.kts
├── luckperms
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── java
│ │ └── eu
│ │ └── cloudnetservice
│ │ └── plugins
│ │ └── luckperms
│ │ ├── BukkitLuckPermsPlugin.java
│ │ ├── BungeecordLuckPermsPlugin.java
│ │ ├── CloudNetContextCalculator.java
│ │ ├── FabricLuckPermsPlugin.java
│ │ ├── NukkitLuckPermsPlugin.java
│ │ ├── SpongeLuckPermsPlugin.java
│ │ ├── VelocityLuckPermsPlugin.java
│ │ └── WaterDogLuckPermsPlugin.java
└── papi-expansion
│ ├── build.gradle.kts
│ └── src
│ └── main
│ └── java
│ └── eu
│ └── cloudnetservice
│ └── plugins
│ └── papi
│ └── CloudNetPapiExpansion.java
├── settings.gradle.kts
├── utils
├── base
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── utils
│ │ │ └── base
│ │ │ ├── ClassAllocationUtil.java
│ │ │ ├── CodeGenerationUtil.java
│ │ │ ├── StringUtil.java
│ │ │ ├── column
│ │ │ ├── ColumnEntry.java
│ │ │ ├── ColumnFormatter.java
│ │ │ └── RowedFormatter.java
│ │ │ ├── concurrent
│ │ │ ├── CountingTask.java
│ │ │ ├── ListenableTask.java
│ │ │ └── TaskUtil.java
│ │ │ ├── io
│ │ │ ├── FileUtil.java
│ │ │ ├── ListenableOutputStream.java
│ │ │ ├── LogOutputStream.java
│ │ │ └── ZipUtil.java
│ │ │ └── resource
│ │ │ ├── CpuUsageResolver.java
│ │ │ ├── ResourceFormatter.java
│ │ │ └── ResourceResolver.java
│ │ └── test
│ │ ├── java
│ │ └── eu
│ │ │ └── cloudnetservice
│ │ │ └── utils
│ │ │ └── base
│ │ │ ├── ClassAllocationUtilTest.java
│ │ │ ├── StringUtilTest.java
│ │ │ ├── column
│ │ │ ├── ColumnTextFormatterTest.java
│ │ │ └── RowedFormatterTest.java
│ │ │ ├── concurrent
│ │ │ ├── CompletedTaskTest.java
│ │ │ ├── CountingTaskTest.java
│ │ │ ├── ListenableTaskTest.java
│ │ │ └── TaskUtilTest.java
│ │ │ ├── io
│ │ │ └── ZipUtilTest.java
│ │ │ └── resource
│ │ │ ├── CpuUsageResolverTest.java
│ │ │ ├── ResourceFormatterTest.java
│ │ │ └── ResourceResolverTest.java
│ │ └── resources
│ │ ├── empty_zip_file.zip
│ │ └── file_utils_resources.zip
└── build.gradle.kts
└── wrapper-jvm
├── api
├── build.gradle.kts
└── src
│ └── main
│ └── java
│ └── eu
│ └── cloudnetservice
│ └── wrapper
│ ├── configuration
│ └── WrapperConfiguration.java
│ ├── event
│ ├── ApplicationPostStartEvent.java
│ ├── ApplicationPreStartEvent.java
│ ├── ServiceInfoPropertiesConfigureEvent.java
│ └── ServiceInfoSnapshotPublishEvent.java
│ ├── holder
│ └── ServiceInfoHolder.java
│ └── transform
│ ├── ClassTransformer.java
│ └── ClassTransformerRegistry.java
├── build.gradle.kts
└── impl
├── build.gradle.kts
└── src
└── main
├── java
└── eu
│ └── cloudnetservice
│ └── wrapper
│ └── impl
│ ├── Main.java
│ ├── Premain.java
│ ├── ShutdownHandler.java
│ ├── Wrapper.java
│ ├── configuration
│ └── DocumentWrapperConfiguration.java
│ ├── database
│ ├── WrapperDatabase.java
│ └── WrapperDatabaseProvider.java
│ ├── holder
│ └── WrapperServiceInfoHolder.java
│ ├── inject
│ ├── BootFactories.java
│ └── RPCFactories.java
│ ├── network
│ ├── NetworkClientChannelHandler.java
│ ├── chunk
│ │ └── TemplateStorageCallbackListener.java
│ └── listener
│ │ ├── AuthorizationPacketListener.java
│ │ ├── ChannelMessagePacketListener.java
│ │ └── message
│ │ ├── GroupChannelMessageListener.java
│ │ ├── ServiceChannelMessageListener.java
│ │ └── TaskChannelMessageListener.java
│ ├── provider
│ ├── WrapperMessenger.java
│ └── WrapperTemplateStorageProvider.java
│ └── transform
│ ├── DefaultClassTransformerRegistry.java
│ ├── bukkit
│ ├── BukkitCommodoreTransformer.java
│ ├── BukkitJavaVersionCheckTransformer.java
│ ├── FAWEConfigTransformer.java
│ ├── FAWEReflectionUtilsTransformer.java
│ ├── FAWEWorldEditDownloadURLTransformer.java
│ ├── PaperConfigTransformer.java
│ └── WorldEditJava8DetectorTransformer.java
│ ├── guava
│ ├── GuavaLittleEndianByteArrayTransformer.java
│ ├── GuavaTransformUtil.java
│ ├── GuavaUnsafeAtomicHelperTransformer.java
│ └── GuavaUnsignedBytesTransformer.java
│ ├── minestom
│ └── MinestomStopCleanlyTransformer.java
│ ├── netty
│ └── OldEpollDisableTransformer.java
│ ├── spark
│ └── OldAsyncProfilerDisableTransformer.java
│ └── util
│ └── SourceProvidingMethodTransform.java
└── resources
├── META-INF
└── services
│ ├── eu.cloudnetservice.wrapper.transform.ClassTransformer
│ └── org.jboss.shrinkwrap.resolver.spi.format.FormatProcessor
├── lang
└── en_US.properties
└── logback.xml
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://editorconfig.org/
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | # Unix-style newlines with a newline ending every file
7 | [*]
8 | charset = utf-8
9 | end_of_line = lf
10 | indent_size = 2
11 | indent_style = space
12 | max_line_length = 120
13 | insert_final_newline = true
--------------------------------------------------------------------------------
/.env:
--------------------------------------------------------------------------------
1 | MEMORY=512
2 | JAVA_COMPOSE_OPTS=-XX:+UseZGC -XX:+PerfDisableSharedMem
3 | CLOUDNET_COMPOSE_OPTS=
4 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize as LF in the repository, OS native locally
2 | * text eol=lf
3 |
4 | # These are explicitly windows files and should use crlf
5 | *.bat text eol=crlf
6 |
7 | # These files are text and should be normalized (Convert crlf => lf)
8 | *.bash text eol=lf
9 | *.css text diff=css
10 | *.htm text diff=html
11 | *.html text diff=html
12 | *.java text diff=java
13 | *.sh text eol=lf
14 |
15 | # These files are binary and should be left untouched
16 | # (binary is a macro for -text -diff)
17 | *.a binary
18 | *.lib binary
19 | *.icns binary
20 | *.png binary
21 | *.jpg binary
22 | *.jpeg binary
23 | *.gif binary
24 | *.ico binary
25 | *.mov binary
26 | *.mp4 binary
27 | *.mp3 binary
28 | *.flv binary
29 | *.fla binary
30 | *.swf binary
31 | *.gz binary
32 | *.zip binary
33 | *.jar binary
34 | *.tar binary
35 | *.tar.gz binary
36 | *.7z binary
37 | *.ttf binary
38 | *.pyc binary
39 | *.gpg binary
40 | *.bin binary
41 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: Discord
4 | url: https://discord.cloudnetservice.eu
5 | about: |
6 | If you need general support on CloudNet, you should use our Discord server. We and the community can help you
7 | help you there faster and more targeted.
8 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
9 |
10 | ### Motivation
11 |
12 |
13 | ### Modification
14 |
15 |
16 | ### Result
17 |
18 |
19 | ##### Other context
20 |
21 | Fixes #
22 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | daysUntilStale: 15
2 | daysUntilClose: 5
3 | staleLabel: "r: stale"
4 | exemptLabels:
5 | - "pinned"
6 | - "t: bug"
7 | - "t: security"
8 | - "t: new platform"
9 | - "s: blocked"
10 | - "s: needs triage"
11 | - "s: we need to go deeper"
12 |
13 | markComment: >
14 | This issue has been automatically marked as stale because it has not had
15 | recent activity. It will be closed if no further activity occurs. Thank you
16 | for your contributions.
17 | closeComment: >
18 | This issue has been automatically closed because it had no activity since the
19 | last call. If the issue still applies to the most recent supported
20 | version, please open a new issue referencing this original issue.
21 |
--------------------------------------------------------------------------------
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | name: "CodeQL"
2 |
3 | on:
4 | pull_request:
5 | schedule:
6 | - cron: '00 2 * * *'
7 |
8 | concurrency:
9 | cancel-in-progress: true
10 | group: cq-${{ github.event.pull_request.number || github.job }}
11 |
12 | jobs:
13 | analyze:
14 | name: Analyze
15 | runs-on: ubuntu-latest
16 | if: ${{ !startsWith(github.ref, 'refs/heads/renovate/') }}
17 |
18 | steps:
19 | - name: Checkout repository
20 | uses: actions/checkout@v4
21 |
22 | - name: Setup java
23 | uses: actions/setup-java@v4
24 | with:
25 | java-version: 24
26 | check-latest: true
27 | distribution: 'zulu'
28 |
29 | - name: Setup Gradle
30 | uses: gradle/actions/setup-gradle@v4
31 | with:
32 | cache-read-only: true
33 | add-job-summary: always
34 |
35 | - name: Initialize CodeQL
36 | uses: github/codeql-action/init@v3
37 | with:
38 | tools: linked
39 | languages: 'java'
40 |
41 | - name: Autobuild
42 | uses: github/codeql-action/autobuild@v3
43 |
44 | - name: Perform CodeQL Analysis
45 | uses: github/codeql-action/analyze@v3
46 |
--------------------------------------------------------------------------------
/.github/workflows/delete-launchermeta-branch.yml:
--------------------------------------------------------------------------------
1 | name: Remove deleted branch from launchermeta
2 | on:
3 | delete:
4 |
5 | jobs:
6 | remove_deleted_branch:
7 | runs-on: ubuntu-latest
8 | name: Remove deleted branch
9 | if: github.event.ref_type == 'branch'
10 |
11 | steps:
12 | - name: Setup ssh agent
13 | uses: webfactory/ssh-agent@v0.9.1
14 | with:
15 | ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
16 |
17 | - name: Delete branch from launchermeta
18 | run: |
19 | # init git configuration
20 | git config --global user.name "CloudNetAutomation";
21 | git config --global user.email "CloudNetAutomation@users.noreply.github.com";
22 |
23 | # clone the repo from the remote, without objects (partial clone)
24 | git clone --filter=blob:none --no-checkout git@github.com:CloudNetService/launchermeta.git del_temp;
25 |
26 | # navigate into the cloned repo and remove the delete branch (while ignoring all errors)
27 | cd del_temp;
28 | git push origin --delete "${{ github.event.ref }}" || true;
29 |
--------------------------------------------------------------------------------
/.github/workflows/gradle-release.yml:
--------------------------------------------------------------------------------
1 | name: "Publish to maven central"
2 |
3 | on:
4 | push:
5 | tags: [ "4.*" ]
6 |
7 | jobs:
8 | build:
9 | environment: release
10 | runs-on: ubuntu-latest
11 | name: Publish to maven central
12 |
13 | steps:
14 | - name: Checkout repository
15 | uses: actions/checkout@v4
16 |
17 | - name: Setup java
18 | uses: actions/setup-java@v4
19 | with:
20 | java-version: 24
21 | check-latest: true
22 | distribution: 'zulu'
23 |
24 | - name: Setup Gradle
25 | uses: gradle/actions/setup-gradle@v4
26 | with:
27 | cache-read-only: true
28 | add-job-summary: always
29 |
30 | - name: Publish release to central portal
31 | run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
32 | env:
33 | CENTRAL_USER: "${{ secrets.CENTRAL_USER }}"
34 | CENTRAL_PASSWORD: "${{ secrets.CENTRAL_PASSWORD }}"
35 | SIGNING_KEY: "${{ secrets.SIGNING_KEY }}"
36 | SIGNING_KEY_PASSWORD: "${{ secrets.SIGNING_KEY_PASSWORD }}"
37 |
--------------------------------------------------------------------------------
/.github/workflows/prbranch.yml:
--------------------------------------------------------------------------------
1 | name: Validate target PR branch
2 |
3 | on:
4 | pull_request:
5 | types: [ opened, edited ]
6 |
7 | jobs:
8 | check-branch:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - uses: Vankka/pr-target-branch-action@v3
12 | with:
13 | target: release
14 | exclude: beta
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # include specific folders in .idea/
2 | !.idea
3 | .idea/*
4 | # copyright settings
5 | !/.idea/copyright
6 | .idea/copyright/*
7 | !/.idea/copyright/CloudNet.xml
8 | !/.idea/copyright/profiles_settings.xml
9 | # Code Style settings
10 | !/.idea/codeStyles
11 | .idea/codeStyles/*
12 | !/.idea/codeStyles/Project.xml
13 | !/.idea/codeStyles/codeStyleConfig.xml
14 | # Inspection profiles
15 | !/.idea/inspectionProfiles
16 | .idea/inspectionProfiles/*
17 | !/.idea/inspectionProfiles/CloudNet.xml
18 | !/.idea/inspectionProfiles/profiles_settings.xml
19 |
20 | # gradle
21 | .gradle/
22 | build/
23 |
24 | # fleet
25 | .fleet/
26 |
27 | # eclipse
28 | *.classpath
29 | *.project
30 | *.settings
31 | /bin/
32 | /subprojects/*/bin/
33 | .metadata/
34 | atlassian-ide-plugin.xml
35 |
36 | # NetBeans
37 | .nb-gradle
38 | .nb-gradle-properties
39 |
40 | # Vim
41 | *.sw[nop]
42 |
43 | # Emacs
44 | *~
45 | \#*\#
46 | .\#*
47 |
48 | # Textmate
49 | .textmate
50 |
51 | # Sublime Text
52 | *.sublime-*
53 |
54 | # jEnv
55 | .java-version
56 |
57 | # macOS
58 | .DS_Store
59 |
60 | # HPROF
61 | *.hprof
62 |
63 | # Work dirs
64 | /incoming-distributions
65 | /intTestHomeDir
66 |
67 | # Logs
68 | /*.log
69 |
70 | # delombok
71 | */src/main/lombok
72 |
73 | # CloudNet
74 | .launchermeta/
75 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/copyright/CloudNet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.img/header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/.img/header.png
--------------------------------------------------------------------------------
/.img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/.img/logo.png
--------------------------------------------------------------------------------
/.template/start.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | @rem check if java is installed
4 | WHERE java >nul 2>nul
5 | IF %ERRORLEVEL% NEQ 0 (
6 | ECHO No valid java installation was found, please install java in order to run CloudNet
7 | EXIT /b 1
8 | ) ELSE (
9 | :: DO NOT CHANGE THE SUPPLIED MEMORY HERE. THIS HAS NO EFFECT ON THE NODE INSTANCE. USE THE launcher.cnl INSTEAD
10 | java -Xms128M -Xmx128M -XX:+UseZGC -XX:+PerfDisableSharedMem -jar launcher.jar
11 | )
12 |
--------------------------------------------------------------------------------
/.template/start.command:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")" || exit 1
4 |
5 | # check if java is installed
6 | if [ -x "$(command -v java)" ]; then
7 | # DO NOT CHANGE THE SUPPLIED MEMORY HERE. THIS HAS NO EFFECT ON THE NODE INSTANCE. USE THE launcher.cnl INSTEAD
8 | java -Xms128M -Xmx128M -XX:+UseZGC -XX:+PerfDisableSharedMem -jar launcher.jar
9 | else
10 | echo "No valid java installation was found, please install java in order to run CloudNet"
11 | exit 1
12 | fi
13 |
--------------------------------------------------------------------------------
/.template/start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | cd "$(dirname "$(readlink -fn "$0")")" || exit 1
4 |
5 | # check if java is installed
6 | if [ -x "$(command -v java)" ]; then
7 | # if screen is present use that
8 | # this check is elevated as tmux is sometimes present by default
9 | if [ -x "$(command -v screen)" ]; then
10 | # DO NOT CHANGE THE SUPPLIED MEMORY HERE. THIS HAS NO EFFECT ON THE NODE INSTANCE. USE THE launcher.cnl INSTEAD
11 | screen -DRSq CloudNet java -Xms128M -Xmx128M -XX:+UseZGC -XX:+PerfDisableSharedMem -jar launcher.jar
12 | elif [ -x "$(command -v tmux)" ]; then
13 | # DO NOT CHANGE THE SUPPLIED MEMORY HERE. THIS HAS NO EFFECT ON THE NODE INSTANCE. USE THE launcher.cnl INSTEAD
14 | tmux new-session -As CloudNet java -Xms128M -Xmx128M -XX:+UseZGC -XX:+PerfDisableSharedMem -jar launcher.jar
15 | else
16 | echo "No screen or tmux installation found, you need to install at least one of them to run CloudNet"
17 | exit 1
18 | fi
19 | else
20 | echo "No valid java installation was found, please install java in order to run CloudNet"
21 | exit 1
22 | fi
23 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM azul/zulu-openjdk:24-jre-headless AS build
2 |
3 | COPY . /home/cloudnet-build
4 | WORKDIR /home/cloudnet-build
5 |
6 | RUN chmod +x gradlew && ./gradlew -x test --no-daemon --stacktrace
7 |
8 | FROM azul/zulu-openjdk:24-jre-headless
9 |
10 | RUN mkdir -p /cloudnet
11 | WORKDIR /cloudnet
12 | VOLUME /cloudnet
13 |
14 | COPY --from=build /home/cloudnet-build/launcher/java22/build/libs/launcher.jar .
15 | ENTRYPOINT exec java $JAVA_OPTS -jar launcher.jar $CLOUDNET_OPTS
16 |
--------------------------------------------------------------------------------
/LICENSE_HEADER:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 |
--------------------------------------------------------------------------------
/bom/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | id("java-platform")
19 | }
20 |
21 | dependencies {
22 | constraints {
23 | collectSubProjects(rootProject, mutableListOf()).forEach {
24 | api(project(it))
25 | }
26 | }
27 | }
28 |
29 | fun collectSubProjects(root: Project, paths: MutableList): List {
30 | root.subprojects.forEach {
31 | paths.add(it.path)
32 | collectSubProjects(it, paths)
33 | }
34 | // just to make it look cleaner :)
35 | return paths
36 | }
37 |
38 | configurePublishing("javaPlatform")
39 |
--------------------------------------------------------------------------------
/build-extensions/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | `kotlin-dsl`
19 | }
20 |
21 | repositories {
22 | gradlePluginPortal()
23 | }
24 |
25 | dependencies {
26 | implementation("net.kyori", "indra-common", "3.1.3")
27 | implementation("com.google.code.gson", "gson", "2.13.1")
28 | }
29 |
--------------------------------------------------------------------------------
/build-extensions/src/main/kotlin/Versions.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | object Versions {
18 |
19 | // internal versions
20 | const val cloudNet = "4.0.0-RC13-SNAPSHOT"
21 | const val cloudNetCodeName = "Blizzard"
22 | }
23 |
--------------------------------------------------------------------------------
/build-extensions/src/main/kotlin/cloudnet.parent-build-logic.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | id("net.kyori.indra.git")
19 | }
20 |
--------------------------------------------------------------------------------
/crowdin.yml:
--------------------------------------------------------------------------------
1 | files:
2 | - source: /node/src/main/resources/lang/en_US.properties
3 | translation: /node/src/main/resources/lang/%locale_with_underscore%.properties
4 | commit_message: "[ci skip]"
5 | pull_request_labels:
6 | - "t: translation"
7 | - "s: accepted"
8 | pull_request_title: "chore: pull latest crowdin translation changes"
9 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "3.9"
2 | services:
3 | cloudnet:
4 | build:
5 | context: .
6 | dockerfile: Dockerfile
7 | ports:
8 | - "1410:1410"
9 | - "2812:2812"
10 | env_file:
11 | - .env
12 | environment:
13 | - JAVA_OPTS=-Xms${MEMORY}M -Xmx${MEMORY}M ${JAVA_COMPOSE_OPTS}
14 | - CLOUDNET_OPTS=${CLOUDNET_COMPOSE_OPTS}
15 | volumes:
16 | - cloudnet:/cloudnet
17 | restart: unless-stopped
18 | stdin_open: true
19 | tty: true
20 | volumes:
21 | cloudnet: { }
22 |
--------------------------------------------------------------------------------
/driver/ap/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "implementation"(projects.driver.driverApi)
19 | }
20 |
--------------------------------------------------------------------------------
/driver/ap/src/main/resources/META-INF/services/javax.annotation.processing.Processor:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | eu.cloudnetservice.driver.ap.registry.AutoServiceProcessor
18 |
--------------------------------------------------------------------------------
/driver/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "api"(libs.vavr)
19 | "api"(libs.slf4jApi)
20 | "api"(libs.geantyref)
21 | "api"(libs.bundles.aerogel)
22 | "implementation"(libs.guava)
23 | }
24 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/ComponentInfo.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver;
18 |
19 | import lombok.NonNull;
20 |
21 | /**
22 | * Holds all information about the current component.
23 | *
24 | * @param environment the environment of the current component.
25 | * @param componentName the name of the current component.
26 | * @param nodeUniqueId the node unique id which is associated with this component.
27 | * @since 4.0
28 | */
29 | public record ComponentInfo(
30 | @NonNull DriverEnvironment environment,
31 | @NonNull String componentName,
32 | @NonNull String nodeUniqueId
33 | ) {
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/cluster/NetworkCluster.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.cluster;
18 |
19 | import java.util.Collection;
20 | import java.util.UUID;
21 | import lombok.NonNull;
22 |
23 | /**
24 | * Represents the main entry point which holds all information about a cluster configuration. Essentially, this class
25 | * holds everything a cluster needs to run.
26 | *
27 | * @param clusterId the id of the cluster which is running.
28 | * @param nodes all nodes which are running in the cluster.
29 | * @since 4.0
30 | */
31 | public record NetworkCluster(@NonNull UUID clusterId, @NonNull Collection nodes) {
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/document/SerialisationStyle.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.document;
18 |
19 | /**
20 | * An object that defines how to serialize a document. The standard options how a document can be serialized are defined
21 | * by {@link StandardSerialisationStyle}. All document implementations should at least support the standard styles.
22 | *
23 | * @since 4.0
24 | */
25 | public interface SerialisationStyle {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/document/send/element/NullElement.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.document.send.element;
18 |
19 | import eu.cloudnetservice.driver.document.send.ElementVisitor;
20 | import lombok.NonNull;
21 |
22 | /**
23 | * Represents a null value, or in other words a key without a specified value.
24 | *
25 | * @param key the key of this element or {@link Element#NO_KEY} if an array entry.
26 | * @since 4.0
27 | */
28 | public record NullElement(@NonNull String key) implements Element {
29 |
30 | /**
31 | * {@inheritDoc}
32 | */
33 | @Override
34 | public void accept(@NonNull ElementVisitor visitor) {
35 | visitor.visitNull(this);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/event/Event.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.event;
18 |
19 | /**
20 | * Represents an event which can be fired. This class is just a marker class to indicate that a class is an event.
21 | * Events can be fired by using {@link EventManager#callEvent(Event)} and listened to by using a method with only one
22 | * parameter (the event to listen to) which is annotated with {@code @EventListener}.
23 | *
24 | * @see EventManager#callEvent(Event)
25 | * @see EventListener
26 | * @see Cancelable
27 | * @since 4.0
28 | */
29 | public abstract class Event {
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/event/events/task/ServiceTaskRemoveEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.event.events.task;
18 |
19 | import eu.cloudnetservice.driver.service.ServiceTask;
20 | import lombok.NonNull;
21 |
22 | /**
23 | * An event being fired when a service task gets removed.
24 | *
25 | * @since 4.0
26 | */
27 | public final class ServiceTaskRemoveEvent extends ServiceTaskEvent {
28 |
29 | /**
30 | * Constructs a new service task remove event.
31 | *
32 | * @param task the task associated with this event.
33 | * @throws NullPointerException if the given task is null.
34 | */
35 | public ServiceTaskRemoveEvent(@NonNull ServiceTask task) {
36 | super(task);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/inject/InjectionLayerHolder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.inject;
18 |
19 | import dev.derklaro.aerogel.Injector;
20 | import lombok.NonNull;
21 |
22 | /**
23 | * Represents a holder which holds an injection layer.
24 | *
25 | * @param the type of injector the layer uses.
26 | * @since 4.0
27 | */
28 | @FunctionalInterface
29 | public interface InjectionLayerHolder {
30 |
31 | /**
32 | * Get the injection layer associated with this holder.
33 | *
34 | * @return the injection layer of this holder.
35 | */
36 | @NonNull InjectionLayer injectionLayer();
37 | }
38 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/network/chunk/TransferStatus.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.network.chunk;
18 |
19 | /**
20 | * Represents the status of a finished chunked packet transfer.
21 | *
22 | * @since 4.0
23 | */
24 | public enum TransferStatus {
25 |
26 | /**
27 | * The transfer is currently running and unfinished.
28 | */
29 | RUNNING,
30 | /**
31 | * The transfer was completed successfully.
32 | */
33 | SUCCESS,
34 | /**
35 | * The transfer failed for some reason.
36 | */
37 | FAILURE,
38 | }
39 |
--------------------------------------------------------------------------------
/driver/api/src/main/java/eu/cloudnetservice/driver/network/rpc/annotation/RPCNoResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.network.rpc.annotation;
18 |
19 | import java.lang.annotation.Documented;
20 | import java.lang.annotation.ElementType;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 |
25 | /**
26 | * Marks a method in an api class which returns void but should not wait to the result signal of the remote rpc to
27 | * become available.
28 | *
29 | * @since 4.0
30 | */
31 | @Documented
32 | @Target(ElementType.METHOD)
33 | @Retention(RetentionPolicy.RUNTIME)
34 | public @interface RPCNoResult {
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/driver/build.gradle.kts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/driver/build.gradle.kts
--------------------------------------------------------------------------------
/driver/impl/src/main/java/eu/cloudnetservice/driver/impl/network/scheduler/NetworkTaskScheduler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.impl.network.scheduler;
18 |
19 | import java.util.concurrent.Executor;
20 |
21 | /**
22 | * A scheduler for tasks that are triggered by incoming network calls and should be handled non-blocking (for execute
23 | * invocations) with the lowest latency possible.
24 | *
25 | * @since 4.0
26 | */
27 | public interface NetworkTaskScheduler extends Executor {
28 |
29 | /**
30 | * Triggers a shutdown operation on this scheduler, interrupting all currently running tasks and preventing new tasks
31 | * from being scheduled.
32 | */
33 | void shutdown();
34 | }
35 |
--------------------------------------------------------------------------------
/driver/impl/src/main/resources/META-INF/services/eu.cloudnetservice.driver.inject.BootLayerConfigurator:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | eu.cloudnetservice.driver.impl.registry.ServiceAnnotationInjectConfigurator
18 | eu.cloudnetservice.driver.impl.network.object.ObjectMapperInjectRegistration
19 |
--------------------------------------------------------------------------------
/driver/impl/src/test/java/eu/cloudnetservice/driver/impl/junit/EnableServicesInject.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.impl.junit;
18 |
19 | import java.lang.annotation.ElementType;
20 | import java.lang.annotation.Inherited;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 | import org.junit.jupiter.api.extension.ExtendWith;
25 |
26 | @Inherited
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | @ExtendWith(EnableServicesInjectExtension.class)
30 | public @interface EnableServicesInject {
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/driver/impl/src/test/java/eu/cloudnetservice/driver/impl/network/netty/NettyTransportTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.impl.network.netty;
18 |
19 | import org.junit.jupiter.api.Assertions;
20 | import org.junit.jupiter.api.Test;
21 |
22 | public class NettyTransportTest {
23 |
24 | @Test
25 | void testNoNativeIsRespected() {
26 | var noNativeNettyTransport = NettyTransport.availableTransport(true);
27 | Assertions.assertEquals(NettyTransport.NIO, noNativeNettyTransport);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/driver/impl/src/test/java/eu/cloudnetservice/driver/impl/network/rpc/generation/api/SenderNeedingDatabase.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.impl.network.rpc.generation.api;
18 |
19 | import eu.cloudnetservice.driver.network.rpc.RPCSender;
20 | import eu.cloudnetservice.driver.network.rpc.annotation.RPCInvocationTarget;
21 |
22 | public abstract class SenderNeedingDatabase extends BaseDatabase {
23 |
24 | public final RPCSender rpcSender;
25 |
26 | @RPCInvocationTarget
27 | public SenderNeedingDatabase(RPCSender rpcSender) {
28 | this.rpcSender = rpcSender;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/driver/impl/src/test/java/eu/cloudnetservice/driver/impl/network/rpc/object/AllPrimitiveTypesDataClass.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.impl.network.rpc.object;
18 |
19 | public record AllPrimitiveTypesDataClass(
20 | byte b,
21 | short s,
22 | int i,
23 | long l,
24 | float f,
25 | double d,
26 | char c,
27 | String string,
28 | boolean bol
29 | ) {
30 |
31 | public AllPrimitiveTypesDataClass() {
32 | this((byte) 1, (short) 2, 3, 4L, 5F, 6D, '/', "Hello, World!", true);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/driver/impl/src/test/java/eu/cloudnetservice/driver/impl/network/rpc/object/ObjectWithSpecialGetter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.driver.impl.network.rpc.object;
18 |
19 | import eu.cloudnetservice.driver.network.rpc.annotation.RPCFieldGetter;
20 | import java.util.UUID;
21 |
22 | public record ObjectWithSpecialGetter(
23 | @RPCFieldGetter("reallyNoAGetterIDontKnowWhatThisIsId") UUID id,
24 | String username
25 | ) {
26 |
27 | public UUID reallyNoAGetterIDontKnowWhatThisIsId() {
28 | return UUID.fromString("bcc582ed-494d-4b93-86cb-b58564651a26");
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/ext/adventure-helper/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "compileOnly"(libs.adventureApi)
19 | "compileOnly"(libs.adventureSerializerLegacy)
20 | "compileOnly"(libs.bungeecordChat)
21 | }
22 |
23 | configurations {
24 | named("testImplementation").get().extendsFrom(named("compileOnly").get())
25 | }
26 |
--------------------------------------------------------------------------------
/ext/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/ext/bukkit-command/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | repositories {
18 | maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
19 | }
20 |
21 | dependencies {
22 | "compileOnly"(libs.spigot)
23 | }
24 |
--------------------------------------------------------------------------------
/ext/modlauncher/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | repositories {
18 | maven("https://repo.spongepowered.org/maven/")
19 | }
20 |
21 | dependencies {
22 | "compileOnly"(libs.modLauncher)
23 | }
24 |
--------------------------------------------------------------------------------
/ext/modlauncher/src/main/resources/META-INF/services/cpw.mods.modlauncher.serviceapi.ILaunchPluginService:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | eu.cloudnetservice.ext.modlauncher.CloudNetLaunchPluginService
18 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "compileOnlyApi"(projects.driver.driverApi)
19 | }
20 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/PlatformEntrypoint.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api;
18 |
19 | public interface PlatformEntrypoint {
20 |
21 | default void onLoad() {
22 | }
23 |
24 | default void onDisable() {
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/PlatformPluginInfo.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api;
18 |
19 | import dev.derklaro.aerogel.Injector;
20 | import eu.cloudnetservice.driver.inject.InjectionLayerHolder;
21 | import lombok.NonNull;
22 |
23 | public interface PlatformPluginInfo extends InjectionLayerHolder {
24 |
25 | @NonNull
26 | I id();
27 |
28 | @NonNull
29 | T platformData();
30 |
31 | @NonNull
32 | P platformPluginInstance();
33 |
34 | @NonNull
35 | Class extends PlatformEntrypoint> platformPluginClass();
36 |
37 | void close();
38 | }
39 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/generator/PluginInfoGenerator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api.generator;
18 |
19 | import eu.cloudnetservice.ext.platforminject.api.data.ParsedPluginData;
20 | import java.io.IOException;
21 | import javax.annotation.processing.Filer;
22 | import lombok.NonNull;
23 |
24 | @FunctionalInterface
25 | public interface PluginInfoGenerator {
26 |
27 | void generatePluginInfo(
28 | @NonNull ParsedPluginData pluginData,
29 | @NonNull String platformMainClassName,
30 | @NonNull Filer filer) throws IOException;
31 | }
32 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/inject/BindingsInstaller.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api.inject;
18 |
19 | import eu.cloudnetservice.driver.inject.InjectionLayer;
20 | import lombok.NonNull;
21 |
22 | @FunctionalInterface
23 | public interface BindingsInstaller {
24 |
25 | void applyBindings(@NonNull InjectionLayer> injectionLayer);
26 | }
27 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/mapping/Container.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api.mapping;
18 |
19 | import lombok.NonNull;
20 |
21 | public record Container(@NonNull Object pluginInstance, @NonNull C container) {
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/mapping/PlatformedContainer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api.mapping;
18 |
19 | import lombok.NonNull;
20 |
21 | public record PlatformedContainer(
22 | @NonNull Object pluginInstance,
23 | @NonNull C container,
24 | @NonNull I platformInstance
25 | ) {
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/stereotype/ConstructionListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api.stereotype;
18 |
19 | import java.lang.annotation.Documented;
20 | import java.lang.annotation.ElementType;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 | import lombok.NonNull;
25 |
26 | @Documented
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | public @interface ConstructionListener {
30 |
31 | @NonNull Class> value();
32 | }
33 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/stereotype/Dependency.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api.stereotype;
18 |
19 | import java.lang.annotation.Documented;
20 | import java.lang.annotation.ElementType;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 | import lombok.NonNull;
25 |
26 | @Documented
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | public @interface Dependency {
30 |
31 | @NonNull String name();
32 |
33 | @NonNull String version() default "";
34 |
35 | boolean optional() default false;
36 | }
37 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/api/stereotype/Repository.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.api.stereotype;
18 |
19 | import java.lang.annotation.Documented;
20 | import java.lang.annotation.ElementType;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 | import lombok.NonNull;
25 |
26 | @Documented
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | public @interface Repository {
30 |
31 | @NonNull String id();
32 |
33 | @NonNull String url();
34 | }
35 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/api/src/main/java/eu/cloudnetservice/ext/platforminject/loader/PlatformInjectSupportLoader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.loader;
18 |
19 | import lombok.NonNull;
20 |
21 | // marker class, see loader project for implementation
22 | public final class PlatformInjectSupportLoader {
23 |
24 | public static void loadPlugin(
25 | @NonNull String platform,
26 | @NonNull Class> pluginClass,
27 | @NonNull Object platformData,
28 | @NonNull ClassLoader platformClassLoader
29 | ) {
30 | }
31 |
32 | public static void disablePlugin(@NonNull String platform, @NonNull Object platformData) {
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/loader/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "api"(projects.ext.platformInjectSupport.platformInjectApi)
19 | "implementation"(projects.utils.utilsBase)
20 | }
21 |
22 | tasks.withType {
23 | // depend on the output of the jar task
24 | val jarTask = projects.ext.platformInjectSupport.platformInjectRuntime.dependencyProject.tasks.getByName("jar")
25 | dependsOn(jarTask)
26 |
27 | // copy over the final output file
28 | from("../runtime/build/libs") {
29 | include(Files.injectSupport)
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/processor/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "implementation"(libs.javapoet)
19 | "implementation"(libs.bundles.nightConfig)
20 | "implementation"(projects.ext.platformInjectSupport.platformInjectApi)
21 | }
22 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/processor/src/main/java/eu/cloudnetservice/ext/platforminject/processor/id/CharRange.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.processor.id;
18 |
19 | import lombok.NonNull;
20 |
21 | public record CharRange(char lowerBounds, char upperBounds) {
22 |
23 | public static @NonNull CharRange range(char singleBound) {
24 | return new CharRange(singleBound, singleBound);
25 | }
26 |
27 | public static @NonNull CharRange range(char lowerBounds, char upperBounds) {
28 | return new CharRange(lowerBounds, upperBounds);
29 | }
30 |
31 | public boolean inRange(char c) {
32 | return c >= this.lowerBounds && c <= this.upperBounds;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/processor/src/main/java/eu/cloudnetservice/ext/platforminject/processor/platform/limboloohp/LimboLoohpPlatformInfoProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.processor.platform.limboloohp;
18 |
19 | import eu.cloudnetservice.ext.platforminject.api.data.PluginDataParser;
20 | import eu.cloudnetservice.ext.platforminject.api.spi.PlatformDataGeneratorProvider;
21 |
22 | public final class LimboLoohpPlatformInfoProvider extends PlatformDataGeneratorProvider {
23 |
24 | public LimboLoohpPlatformInfoProvider() {
25 | super(
26 | "limboloohp",
27 | LimboLoohpPluginInfoGenerator::new,
28 | LimboLoohpMainClassGenerator::new,
29 | PluginDataParser::create);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/processor/src/main/resources/META-INF/gradle/incremental.annotation.processors:
--------------------------------------------------------------------------------
1 | eu.cloudnetservice.ext.platforminject.processor.PlatformPluginProcessor,aggregating
2 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | eu.cloudnetservice.ext.platforminject.processor.PlatformPluginProcessor
18 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/runtime/src/main/java/eu/cloudnetservice/ext/platforminject/runtime/platform/fabric/FabricPlatformManagerProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.platforminject.runtime.platform.fabric;
18 |
19 | import static eu.cloudnetservice.ext.platforminject.runtime.util.LazyClassInstantiationUtil.makeLazyLoader;
20 |
21 | import eu.cloudnetservice.ext.platforminject.api.spi.PlatformPluginManagerProvider;
22 |
23 | public final class FabricPlatformManagerProvider extends PlatformPluginManagerProvider {
24 |
25 | public FabricPlatformManagerProvider() {
26 | super("fabric", makeLazyLoader(FabricPlatformManagerProvider.class, "FabricPlatformPluginManager"));
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/ext/platform-inject-support/runtime/src/main/resources/META-INF/services/eu.cloudnetservice.ext.platforminject.api.spi.PlatformPluginManagerRegistry:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | eu.cloudnetservice.ext.platforminject.runtime.DefaultPlatformPluginManagerRegistry
18 |
--------------------------------------------------------------------------------
/ext/updater/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 |
--------------------------------------------------------------------------------
/ext/updater/src/main/java/eu/cloudnetservice/ext/updater/Updater.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.updater;
18 |
19 | import lombok.NonNull;
20 |
21 | @FunctionalInterface
22 | public interface Updater {
23 |
24 | void executeUpdates(@NonNull T context, boolean onlyIfRequired) throws Exception;
25 | }
26 |
--------------------------------------------------------------------------------
/ext/updater/src/main/java/eu/cloudnetservice/ext/updater/UpdaterRegistry.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.updater;
18 |
19 | import lombok.NonNull;
20 |
21 | public interface UpdaterRegistry {
22 |
23 | void runUpdater(@NonNull C context, boolean onlyRequiredUpdates) throws Exception;
24 |
25 | void registerUpdater(@NonNull Updater updater);
26 | }
27 |
--------------------------------------------------------------------------------
/ext/updater/src/main/java/eu/cloudnetservice/ext/updater/util/GitHubUtil.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.ext.updater.util;
18 |
19 | import java.net.URI;
20 | import lombok.NonNull;
21 |
22 | public final class GitHubUtil {
23 |
24 | private static final String GITHUB_URL_FORMAT = "https://github.com/%s/raw/%s/%s";
25 |
26 | private GitHubUtil() {
27 | throw new UnsupportedOperationException();
28 | }
29 |
30 | public static @NonNull URI buildUri(@NonNull String repo, @NonNull String branch, @NonNull String filePath) {
31 | return URI.create(String.format(GITHUB_URL_FORMAT, repo, branch, filePath));
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | org.gradle.caching=true
17 | org.gradle.parallel=true
18 | org.gradle.warning.mode=all
19 | org.gradle.logging.level=info
20 | org.gradle.jvmargs=-Xmx5G -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8
21 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionSha256Sum=7197a12f450794931532469d4ff21a59ea2c1cd59a3ec3f89c035c3c420a6999
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
5 | networkTimeout=10000
6 | validateDistributionUrl=true
7 | zipStoreBase=GRADLE_USER_HOME
8 | zipStorePath=wrapper/dists
9 |
--------------------------------------------------------------------------------
/launcher/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/launcher/java22/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | alias(libs.plugins.shadow)
19 | }
20 |
21 | tasks.withType {
22 | archiveFileName.set(Files.launcher)
23 | }
24 |
25 | dependencies {
26 | "implementation"(projects.ext.updater)
27 | "implementation"(projects.launcher.java8)
28 | }
29 |
30 | applyJarMetadata("eu.cloudnetservice.launcher.java8.Launcher", "eu.cloudnetservice.launcher")
31 |
--------------------------------------------------------------------------------
/launcher/java22/src/main/java/eu/cloudnetservice/launcher/java22/cnl/CnlCommand.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.launcher.java22.cnl;
18 |
19 | import java.util.Queue;
20 | import lombok.NonNull;
21 |
22 | @FunctionalInterface
23 | public interface CnlCommand {
24 |
25 | void execute(@NonNull Queue arguments);
26 | }
27 |
--------------------------------------------------------------------------------
/launcher/java22/src/main/java/eu/cloudnetservice/launcher/java22/cnl/defaults/VarCnlCommand.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.launcher.java22.cnl.defaults;
18 |
19 | import eu.cloudnetservice.launcher.java22.cnl.CnlCommand;
20 | import java.util.Queue;
21 | import lombok.NonNull;
22 |
23 | public final class VarCnlCommand implements CnlCommand {
24 |
25 | @Override
26 | public void execute(@NonNull Queue arguments) {
27 | System.setProperty(arguments.remove(), String.join(" ", arguments));
28 | // remove all arguments
29 | arguments.clear();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/launcher/java22/src/main/java/eu/cloudnetservice/launcher/java22/updater/LauncherUpdaterContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.launcher.java22.updater;
18 |
19 | import eu.cloudnetservice.launcher.java22.CloudNetLauncher;
20 | import java.util.Properties;
21 | import lombok.NonNull;
22 |
23 | public record LauncherUpdaterContext(
24 | @NonNull CloudNetLauncher launcher,
25 | @NonNull String repo,
26 | @NonNull String branch,
27 | @NonNull Properties checksums
28 | ) {
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/launcher/java22/src/main/java/eu/cloudnetservice/launcher/java22/util/BootstrapUtil.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.launcher.java22.util;
18 |
19 | import java.util.concurrent.TimeUnit;
20 |
21 | public final class BootstrapUtil {
22 |
23 | private BootstrapUtil() {
24 | throw new UnsupportedOperationException();
25 | }
26 |
27 | public static void waitAndExit() {
28 | try {
29 | TimeUnit.SECONDS.sleep(5);
30 | } catch (InterruptedException ignored) {
31 | }
32 |
33 | // goodbye!
34 | System.exit(1);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/launcher/java22/src/test/resources/test.cnl:
--------------------------------------------------------------------------------
1 | var test_val Hello, world!
2 | var val signature
3 | var $val_value This is our $val
--------------------------------------------------------------------------------
/launcher/java8/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | tasks.withType {
18 | sourceCompatibility = JavaVersion.VERSION_1_8.toString()
19 | targetCompatibility = JavaVersion.VERSION_1_8.toString()
20 | }
21 |
--------------------------------------------------------------------------------
/launcher/patcher/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | tasks.withType {
18 | archiveFileName.set(Files.launcherPatcher)
19 | }
20 |
21 | tasks.withType {
22 | sourceCompatibility = JavaVersion.VERSION_17.toString()
23 | targetCompatibility = JavaVersion.VERSION_17.toString()
24 | }
25 |
26 | applyJarMetadata("eu.cloudnetservice.launcher.patcher.CloudNetLauncherPatcher", "eu.cloudnetservice.launcher")
27 |
--------------------------------------------------------------------------------
/modules.json:
--------------------------------------------------------------------------------
1 | {
2 | "entries": [
3 | {
4 | "official": true,
5 | "name": "CloudNet-Rest",
6 | "website": "https://github.com/CloudNetService/module-rest",
7 | "version": "0.2.0",
8 | "sha3256": "6047a4e4bfec69733750f9062cca19a3d28480d206c4b724030bed5db84f2d55",
9 | "description": "Module which provides a REST API for managing resources within the CloudNet system",
10 | "url": "https://github.com/CloudNetService/module-rest/releases/download/0.2.0/cloudnet-rest.jar",
11 | "maintainers": [
12 | "CloudNetService"
13 | ],
14 | "releaseNotes": [],
15 | "dependingModules": []
16 | }
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/modules/bridge/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | dependencies {
17 | "api"(libs.adventureApi)
18 | "compileOnly"(projects.wrapperJvm.wrapperJvmApi)
19 | }
20 |
--------------------------------------------------------------------------------
/modules/bridge/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/fabric/access/CustomPayloadAccessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.bridge.impl.platform.fabric.access;
18 |
19 | import io.netty.buffer.ByteBuf;
20 |
21 | public interface CustomPayloadAccessor {
22 |
23 | void cloudnet_bridge$setData(ByteBuf data);
24 |
25 | ByteBuf cloudnet_bridge$getData();
26 | }
27 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/fallback/FallbackProfile.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.bridge.impl.platform.fallback;
18 |
19 | import java.util.HashSet;
20 | import java.util.Set;
21 | import lombok.NonNull;
22 |
23 | public final class FallbackProfile {
24 |
25 | private final Set triedServices = new HashSet<>();
26 |
27 | public void reset() {
28 | this.triedServices.clear();
29 | }
30 |
31 | public void selectService(@NonNull String service) {
32 | this.triedServices.add(service);
33 | }
34 |
35 | public boolean hasTried(@NonNull String service) {
36 | return this.triedServices.contains(service);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/minestom/MinestomDefaultPermissionChecker.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.bridge.impl.platform.minestom;
18 |
19 | import eu.cloudnetservice.driver.registry.AutoService;
20 | import lombok.NonNull;
21 | import net.minestom.server.entity.Player;
22 |
23 | @AutoService(services = MinestomPermissionChecker.class, name = "default", markAsDefault = true)
24 | public class MinestomDefaultPermissionChecker implements MinestomPermissionChecker {
25 |
26 | @Override
27 | public boolean hasPermission(@NonNull Player player, @NonNull String permission) {
28 | return player.getPermissionLevel() > 0;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/minestom/MinestomPermissionChecker.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.bridge.impl.platform.minestom;
18 |
19 | import lombok.NonNull;
20 | import net.minestom.server.entity.Player;
21 |
22 | @FunctionalInterface
23 | public interface MinestomPermissionChecker {
24 |
25 | boolean hasPermission(@NonNull Player player, @NonNull String permission);
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/resources/META-INF/sponge_plugins.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "license": "Apache-2.0"
3 | }
4 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/resources/cloudnet_bridge.accesswidener:
--------------------------------------------------------------------------------
1 | accessWidener v2 named
2 | # fields
3 | accessible field net/minecraft/network/protocol/handshake/ClientIntentionPacket hostName Ljava/lang/String;
4 | mutable field net/minecraft/network/protocol/handshake/ClientIntentionPacket hostName Ljava/lang/String;
5 | accessible field net/minecraft/server/network/ServerCommonPacketListenerImpl connection Lnet/minecraft/network/Connection;
6 | accessible field net/minecraft/network/Connection channel Lio/netty/channel/Channel;
7 | accessible field net/minecraft/network/Connection address Ljava/net/SocketAddress;
8 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/resources/cloudnet_bridge.mixins.json:
--------------------------------------------------------------------------------
1 | {
2 | "required": true,
3 | "compatibilityLevel": "JAVA_16",
4 | "package": "eu.cloudnetservice.modules.bridge.impl.platform.fabric.mixin",
5 | "server": [
6 | "forwarding.ClientIntentionPacketMixin",
7 | "forwarding.CompressionThresholdMixin",
8 | "forwarding.ServerHandshakePacketListenerMixin",
9 | "forwarding.ServerLoginPacketListenerMixin",
10 | "handling.MinecraftServerMixin",
11 | "handling.PlayerListMixin",
12 | "payload.CustomPayloadMixin"
13 | ],
14 | "injectors": {
15 | "defaultRequire": 1
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/modules/bridge/impl/src/main/resources/fabric.mod.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "license": "Apache 2.0",
3 | "mixins": [
4 | "cloudnet_bridge.mixins.json"
5 | ],
6 | "accessWidener": "cloudnet_bridge.accesswidener"
7 | }
8 |
--------------------------------------------------------------------------------
/modules/cloudflare/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "compileOnly"(projects.utils.utilsBase)
19 | }
20 |
--------------------------------------------------------------------------------
/modules/cloudflare/api/src/main/java/eu/cloudnetservice/modules/cloudflare/config/CloudflareConfiguration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.cloudflare.config;
18 |
19 | import java.util.Collection;
20 | import lombok.NonNull;
21 |
22 | public record CloudflareConfiguration(@NonNull Collection entries) {
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/modules/cloudflare/api/src/main/java/eu/cloudnetservice/modules/cloudflare/config/CloudflareGroupConfiguration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.cloudflare.config;
18 |
19 | import lombok.NonNull;
20 |
21 | public record CloudflareGroupConfiguration(@NonNull String name, @NonNull String sub, int priority, int weight) {
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/modules/cloudflare/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/cloudflare/impl/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | alias(libs.plugins.shadow)
19 | }
20 |
21 | tasks.withType {
22 | archiveFileName.set(Files.cloudflare)
23 | }
24 |
25 | dependencies {
26 | "compileOnly"(libs.bundles.unirest)
27 | "compileOnly"(projects.node.nodeImpl)
28 | "compileOnly"(projects.utils.utilsBase)
29 |
30 | "implementation"(projects.modules.cloudflare.cloudflareApi)
31 | }
32 |
33 | moduleJson {
34 | author = "CloudNetService"
35 | name = "CloudNet-CloudFlare"
36 | main = "eu.cloudnetservice.modules.cloudflare.impl.CloudNetCloudflareModule"
37 | description = "Node extension for automatic creation of SRV entries for proxy services"
38 | storesSensitiveData = true
39 | }
40 |
--------------------------------------------------------------------------------
/modules/cloudflare/impl/src/main/java/eu/cloudnetservice/modules/cloudflare/impl/cloudflare/DnsRecordDetail.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.cloudflare.impl.cloudflare;
18 |
19 | import eu.cloudnetservice.modules.cloudflare.config.CloudflareConfigurationEntry;
20 | import eu.cloudnetservice.modules.cloudflare.impl.dns.DnsRecord;
21 | import lombok.NonNull;
22 |
23 | public record DnsRecordDetail(
24 | @NonNull String id,
25 | @NonNull DnsRecord dnsRecord,
26 | @NonNull CloudflareConfigurationEntry configurationEntry
27 | ) {
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/modules/cloudflare/impl/src/main/java/eu/cloudnetservice/modules/cloudflare/impl/dns/DnsType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.cloudflare.impl.dns;
18 |
19 | public enum DnsType {
20 |
21 | A,
22 | AAAA,
23 | HTTPS,
24 | TXT,
25 | SRV,
26 | LOC,
27 | MX,
28 | NS,
29 | SPF,
30 | CERT,
31 | DNSKEY,
32 | DS,
33 | NAPTR,
34 | SMIMEA,
35 | SSHFP,
36 | SVCB,
37 | TLSA,
38 | URI
39 | }
40 |
--------------------------------------------------------------------------------
/modules/database-mongodb/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/database-mongodb/impl/src/test/java/eu/cloudnetservice/modules/mongodb/junit/EnableServicesInject.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.mongodb.junit;
18 |
19 | import java.lang.annotation.ElementType;
20 | import java.lang.annotation.Inherited;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 | import org.junit.jupiter.api.extension.ExtendWith;
25 |
26 | @Inherited
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | @ExtendWith(EnableServicesInjectExtension.class)
30 | public @interface EnableServicesInject {
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/modules/database-mongodb/impl/src/test/resources/logback-test.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 | [%d{dd.MM HH:mm:ss.SSS}] %-5level: %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/modules/database-mysql/api/build.gradle.kts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/modules/database-mysql/api/build.gradle.kts
--------------------------------------------------------------------------------
/modules/database-mysql/api/src/main/java/eu/cloudnetservice/modules/mysql/config/MySQLConnectionEndpoint.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.mysql.config;
18 |
19 | import eu.cloudnetservice.driver.network.HostAndPort;
20 | import lombok.NonNull;
21 |
22 | public record MySQLConnectionEndpoint(@NonNull String database, @NonNull HostAndPort address) {
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/modules/database-mysql/build.gradle.kts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/modules/database-mysql/build.gradle.kts
--------------------------------------------------------------------------------
/modules/database-mysql/impl/src/test/java/eu/cloudnetservice/modules/mysql/impl/junit/EnableServicesInject.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.mysql.impl.junit;
18 |
19 | import java.lang.annotation.ElementType;
20 | import java.lang.annotation.Inherited;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 | import org.junit.jupiter.api.extension.ExtendWith;
25 |
26 | @Inherited
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | @ExtendWith(EnableServicesInjectExtension.class)
30 | public @interface EnableServicesInject {
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/modules/database-mysql/impl/src/test/resources/logback-test.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 | [%d{dd.MM HH:mm:ss.SSS}] %-5level: %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/modules/dockerized-services/api/build.gradle.kts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/modules/dockerized-services/api/build.gradle.kts
--------------------------------------------------------------------------------
/modules/dockerized-services/api/src/main/java/eu/cloudnetservice/modules/docker/config/DockerPortMapping.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.docker.config;
18 |
19 | import lombok.NonNull;
20 | import org.jetbrains.annotations.Range;
21 |
22 | public record DockerPortMapping(@NonNull Protocol protocol, @Range(from = 0, to = 0xFFFF) int port) {
23 |
24 | public enum Protocol {
25 | TCP,
26 | UDP,
27 | SCTP,
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/modules/dockerized-services/build.gradle.kts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/modules/dockerized-services/build.gradle.kts
--------------------------------------------------------------------------------
/modules/influx/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "compileOnly"(libs.influxClient)
19 | }
20 |
--------------------------------------------------------------------------------
/modules/influx/api/src/main/java/eu/cloudnetservice/modules/influx/InfluxConfiguration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.influx;
18 |
19 | import eu.cloudnetservice.driver.network.HostAndPort;
20 | import lombok.NonNull;
21 |
22 | public record InfluxConfiguration(
23 | @NonNull HostAndPort databaseAddress,
24 | @NonNull String token,
25 | @NonNull String org,
26 | @NonNull String bucket,
27 | int publishDelaySeconds
28 | ) {
29 |
30 | public @NonNull String connectUrl() {
31 | // ignore ports < 0
32 | if (this.databaseAddress.validPort()) {
33 | return this.databaseAddress.toString();
34 | } else {
35 | return this.databaseAddress.host();
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/modules/influx/api/src/main/java/eu/cloudnetservice/modules/influx/publish/Publisher.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.influx.publish;
18 |
19 | import com.influxdb.client.write.Point;
20 | import java.util.Collection;
21 | import lombok.NonNull;
22 |
23 | @FunctionalInterface
24 | public interface Publisher {
25 |
26 | @NonNull Collection createPoints();
27 | }
28 |
--------------------------------------------------------------------------------
/modules/influx/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/influx/impl/src/main/java/eu/cloudnetservice/modules/influx/impl/util/PointUtil.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.influx.impl.util;
18 |
19 | import com.influxdb.client.domain.WritePrecision;
20 | import com.influxdb.client.write.Point;
21 | import lombok.NonNull;
22 |
23 | public final class PointUtil {
24 |
25 | private PointUtil() {
26 | throw new UnsupportedOperationException();
27 | }
28 |
29 | public static @NonNull Point point(@NonNull String measurement) {
30 | return Point.measurement(measurement).time(System.currentTimeMillis(), WritePrecision.MS);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/modules/labymod/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "compileOnly"(projects.modules.bridge.bridgeApi)
19 | }
20 |
--------------------------------------------------------------------------------
/modules/labymod/api/src/main/java/eu/cloudnetservice/modules/labymod/LabyModManagement.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.labymod;
18 |
19 | import eu.cloudnetservice.modules.labymod.config.LabyModConfiguration;
20 | import lombok.NonNull;
21 |
22 | public interface LabyModManagement {
23 |
24 | String LABYMOD_CLIENT_CHANNEL = "labymod3:main";
25 | String LABYMOD_MODULE_CHANNEL = "labymod_internal";
26 | String LABYMOD_UPDATE_CONFIG = "update_labymod_config";
27 |
28 | @NonNull
29 | LabyModConfiguration configuration();
30 |
31 | void configuration(@NonNull LabyModConfiguration configuration);
32 | }
33 |
--------------------------------------------------------------------------------
/modules/labymod/api/src/main/java/eu/cloudnetservice/modules/labymod/config/LabyModBanner.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.labymod.config;
18 |
19 | import lombok.NonNull;
20 |
21 | public record LabyModBanner(boolean enabled, @NonNull String bannerUrl) {
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/modules/labymod/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/npcs/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "compileOnly"(projects.modules.bridge.bridgeApi)
19 | }
20 |
--------------------------------------------------------------------------------
/modules/npcs/impl/src/main/java/eu/cloudnetservice/modules/npc/impl/InternalNPCManagement.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.npc.impl;
18 |
19 | import eu.cloudnetservice.modules.bridge.WorldPosition;
20 | import eu.cloudnetservice.modules.npc.NPC;
21 | import eu.cloudnetservice.modules.npc.NPCManagement;
22 | import eu.cloudnetservice.modules.npc.configuration.NPCConfiguration;
23 | import lombok.NonNull;
24 |
25 | public interface InternalNPCManagement extends NPCManagement {
26 |
27 | void handleInternalNPCCreate(@NonNull NPC npc);
28 |
29 | void handleInternalNPCRemove(@NonNull WorldPosition position);
30 |
31 | void handleInternalNPCConfigUpdate(@NonNull NPCConfiguration configuration);
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/modules/npcs/impl/src/main/java/eu/cloudnetservice/modules/npc/impl/_deprecated/NPCAction.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.npc.impl._deprecated;
18 |
19 |
20 | public enum NPCAction {
21 |
22 | OPEN_INVENTORY,
23 | DIRECT_CONNECT_RANDOM,
24 | DIRECT_CONNECT_LOWEST_PLAYERS,
25 | DIRECT_CONNECT_HIGHEST_PLAYERS,
26 | NOTHING
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/modules/npcs/impl/src/main/java/eu/cloudnetservice/modules/npc/impl/_deprecated/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @Deprecated
18 | @ApiStatus.ScheduledForRemoval
19 | package eu.cloudnetservice.modules.npc.impl._deprecated;
20 |
21 | import org.jetbrains.annotations.ApiStatus;
22 |
--------------------------------------------------------------------------------
/modules/report/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/report/api/src/main/java/eu/cloudnetservice/modules/report/config/ReportConfiguration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.report.config;
18 |
19 | import java.util.Collection;
20 | import lombok.NonNull;
21 |
22 | public record ReportConfiguration(@NonNull Collection pasteServers) {
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/modules/report/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/report/impl/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | alias(libs.plugins.shadow)
19 | }
20 |
21 | tasks.withType {
22 | archiveFileName.set(Files.report)
23 | }
24 |
25 | dependencies {
26 | "moduleLibrary"(libs.oshi)
27 | "compileOnly"(libs.unirest)
28 | "compileOnly"(projects.utils.utilsBase)
29 | "implementation"(projects.modules.report.reportApi)
30 |
31 | "annotationProcessor"(projects.driver.driverAp)
32 | }
33 |
34 | moduleJson {
35 | name = "CloudNet-Report"
36 | author = "CloudNetService"
37 | main = "eu.cloudnetservice.modules.report.impl.CloudNetReportModule"
38 | description = "Node extension to automatically report and paste a snapshot of the current CloudNet runtime"
39 | }
40 |
--------------------------------------------------------------------------------
/modules/report/impl/src/main/java/eu/cloudnetservice/modules/report/impl/emitter/ReportDataEmitter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.report.impl.emitter;
18 |
19 | import lombok.NonNull;
20 |
21 | public interface ReportDataEmitter {
22 |
23 | default @NonNull Class> emittingType() {
24 | return Object.class;
25 | }
26 |
27 | @NonNull ReportDataWriter emitData(@NonNull ReportDataWriter writer);
28 | }
29 |
--------------------------------------------------------------------------------
/modules/report/impl/src/main/java/eu/cloudnetservice/modules/report/impl/util/ReportConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.report.impl.util;
18 |
19 | import java.time.format.DateTimeFormatter;
20 |
21 | public final class ReportConstants {
22 |
23 | public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss");
24 |
25 | private ReportConstants() {
26 | throw new UnsupportedOperationException();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/modules/report/impl/src/test/resources/logback-test.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 | [%d{dd.MM HH:mm:ss.SSS}] %-5level: %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/modules/signs/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "compileOnly"(projects.modules.bridge.bridgeApi)
19 | }
20 |
--------------------------------------------------------------------------------
/modules/signs/impl/src/main/java/eu/cloudnetservice/modules/signs/impl/_deprecated/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /**
18 | * Placeholder to bridge the old objects to the new mappings for auto conversation. Will be removed in the next
19 | * release.
20 | */
21 | @Deprecated
22 | @ApiStatus.ScheduledForRemoval
23 | package eu.cloudnetservice.modules.signs.impl._deprecated;
24 |
25 | import org.jetbrains.annotations.ApiStatus;
26 |
--------------------------------------------------------------------------------
/modules/signs/impl/src/main/resources/META-INF/sponge_plugins.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "license": "Apache-2.0"
3 | }
4 |
--------------------------------------------------------------------------------
/modules/smart/build.gradle.kts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/modules/smart/build.gradle.kts
--------------------------------------------------------------------------------
/modules/storage-s3/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/storage-s3/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/storage-s3/impl/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | alias(libs.plugins.shadow)
19 | }
20 |
21 | tasks.withType {
22 | archiveFileName.set(Files.storageS3)
23 | }
24 |
25 | dependencies {
26 | "moduleLibrary"(libs.awsSdk)
27 | "compileOnly"(projects.utils.utilsBase)
28 | "implementation"(projects.modules.storageS3.storageS3Api)
29 |
30 | "testImplementation"(projects.utils.utilsBase)
31 | }
32 |
33 | moduleJson {
34 | author = "CloudNetService"
35 | name = "CloudNet-Storage-S3"
36 | main = "eu.cloudnetservice.modules.s3.impl.S3TemplateStorageModule"
37 | description = "CloudNet extension, which includes the s3 storage system"
38 | runtimeModule = true
39 | storesSensitiveData = true
40 | }
41 |
--------------------------------------------------------------------------------
/modules/storage-s3/impl/src/test/resources/logback-test.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 | [%d{dd.MM HH:mm:ss.SSS}] %-5level: %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/modules/storage-sftp/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/storage-sftp/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/storage-sftp/impl/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | plugins {
18 | alias(libs.plugins.shadow)
19 | }
20 |
21 | tasks.withType {
22 | archiveFileName.set(Files.storageSftp)
23 | }
24 |
25 | dependencies {
26 | "moduleLibrary"(libs.sshj)
27 | "compileOnly"(projects.utils.utilsBase)
28 | "implementation"(projects.modules.storageSftp.storageSftpApi)
29 | }
30 |
31 | moduleJson {
32 | author = "CloudNetService"
33 | name = "CloudNet-Storage-SFTP"
34 | main = "eu.cloudnetservice.modules.sftp.impl.SFTPTemplateStorageModule"
35 | description = "CloudNet extension, which includes the sftp storage system"
36 | storesSensitiveData = true
37 | runtimeModule = true
38 | }
39 |
--------------------------------------------------------------------------------
/modules/storage-sftp/impl/src/test/resources/hostkey.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN RSA PRIVATE KEY-----
2 | MIICXAIBAAKBgQDdfIWeSV4o68dRrKSzFd/Bk51E65UTmmSrmW0O1ohtzi6HzsDP
3 | jXgCtlTt3FqTcfFfI92IlTr4JWqC9UK1QT1ZTeng0MkPQmv68hDANHbt5CpETZHj
4 | W5q4OOgWhVvj5IyOC2NZHtKlJBkdsMAa15ouOOJLzBvAvbqOR/yUROsEiQIDAQAB
5 | AoGBANG3JDW6NoP8rF/zXoeLgLCj+tfVUPSczhGFVrQkAk4mWfyRkhN0WlwHFOec
6 | K89MpkV1ij/XPVzU4MNbQ2yod1KiDylzvweYv+EaEhASCmYNs6LS03punml42SL9
7 | 97tOmWfVJXxlQoLiY6jHPU97vTc65k8gL+gmmrpchsW0aqmZAkEA/c8zfmKvY37T
8 | cxcLLwzwsqqH7g2KZGTf9aRmx2ebdW+QKviJJhbdluDgl1TNNFj5vCLznFDRHiqJ
9 | wq0wkZ39cwJBAN9l5v3kdXj21UrurNPdlV0n2GZBt2vblooQC37XHF97r2zM7Ou+
10 | Lg6MyfJClyguhWL9dxnGbf3btQ0l3KDstxMCQCRaiEqjAfIjWVATzeNIXDWLHXso
11 | b1kf5cA+cwY+vdKdTy4IeUR+Y/DXdvPWDqpf0C11aCVMohdLCn5a5ikFUycCQDhV
12 | K/BuAallJNfmY7JxN87r00fF3ojWMJnT/fIYMFFrkQrwifXQWTDWE76BSDibsosJ
13 | u1TGksnm8zrDh2UVC/0CQFrHTiSl/3DHvWAbOJawGKg46cnlDcAhSyV8Frs8/dlP
14 | 7YGG3eqkw++lsghqmFO6mRUTKsBmiiB2wgLGhL5pyYY=
15 | -----END RSA PRIVATE KEY-----
16 |
--------------------------------------------------------------------------------
/modules/storage-sftp/impl/src/test/resources/logback-test.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 | [%d{dd.MM HH:mm:ss.SSS}] %-5level: %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/modules/syncproxy/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | dependencies {
17 | "compileOnly"(projects.modules.bridge.bridgeApi)
18 | }
19 |
--------------------------------------------------------------------------------
/modules/syncproxy/api/src/main/java/eu/cloudnetservice/modules/syncproxy/SyncProxyConfigurationUpdateEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.syncproxy;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.modules.syncproxy.config.SyncProxyConfiguration;
21 | import lombok.NonNull;
22 |
23 | public class SyncProxyConfigurationUpdateEvent extends Event {
24 |
25 | private final SyncProxyConfiguration configuration;
26 |
27 | public SyncProxyConfigurationUpdateEvent(@NonNull SyncProxyConfiguration configuration) {
28 | this.configuration = configuration;
29 | }
30 |
31 | public @NonNull SyncProxyConfiguration configuration() {
32 | return this.configuration;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/modules/syncproxy/api/src/main/java/eu/cloudnetservice/modules/syncproxy/SyncProxyConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.syncproxy;
18 |
19 | public final class SyncProxyConstants {
20 |
21 | public static final String SYNC_PROXY_CHANNEL = "sync_proxy_internal";
22 | public static final String SYNC_PROXY_UPDATE_CONFIG = "update_syncproxy_config";
23 | public static final String SYNC_PROXY_CONFIG_REQUEST = "request_syncproxy_config";
24 |
25 | private SyncProxyConstants() {
26 | throw new UnsupportedOperationException();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/modules/syncproxy/api/src/main/java/eu/cloudnetservice/modules/syncproxy/SyncProxyManagement.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.modules.syncproxy;
18 |
19 | import eu.cloudnetservice.modules.syncproxy.config.SyncProxyConfiguration;
20 | import lombok.NonNull;
21 |
22 | public interface SyncProxyManagement {
23 |
24 | @NonNull
25 | SyncProxyConfiguration configuration();
26 |
27 | void configuration(@NonNull SyncProxyConfiguration configuration);
28 | }
29 |
--------------------------------------------------------------------------------
/modules/syncproxy/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/modules/syncproxy/impl/src/test/resources/logback-test.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 | [%d{dd.MM HH:mm:ss.SSS}] %-5level: %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/node/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | api(projects.driver.driverApi)
19 | compileOnlyApi(libs.bundles.cloud)
20 | }
21 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/cluster/LocalNodeServer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.cluster;
18 |
19 | public interface LocalNodeServer extends NodeServer {
20 |
21 | void updateLocalSnapshot();
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/cluster/NodeServerState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.cluster;
18 |
19 | public enum NodeServerState {
20 | UNAVAILABLE,
21 | SYNCING,
22 | READY,
23 | DISCONNECTED
24 | }
25 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/CloudNetNodePostInitializationEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 |
21 | public final class CloudNetNodePostInitializationEvent extends Event {
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/cluster/LocalNodeSnapshotConfigureEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.cluster;
18 |
19 | import eu.cloudnetservice.driver.cluster.NodeInfoSnapshot;
20 | import eu.cloudnetservice.driver.event.Event;
21 | import lombok.NonNull;
22 |
23 | public final class LocalNodeSnapshotConfigureEvent extends Event {
24 |
25 | private final NodeInfoSnapshot nodeInfoSnapshot;
26 |
27 | public LocalNodeSnapshotConfigureEvent(@NonNull NodeInfoSnapshot nodeInfoSnapshot) {
28 | this.nodeInfoSnapshot = nodeInfoSnapshot;
29 | }
30 |
31 | public @NonNull NodeInfoSnapshot snapshot() {
32 | return this.nodeInfoSnapshot;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/group/LocalGroupConfigurationAddEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.group;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.driver.service.GroupConfiguration;
21 | import lombok.NonNull;
22 |
23 | public class LocalGroupConfigurationAddEvent extends Event {
24 |
25 | private GroupConfiguration group;
26 |
27 | public LocalGroupConfigurationAddEvent(@NonNull GroupConfiguration group) {
28 | this.group = group;
29 | }
30 |
31 | public @NonNull GroupConfiguration group() {
32 | return this.group;
33 | }
34 |
35 | public void group(@NonNull GroupConfiguration group) {
36 | this.group = group;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/group/LocalGroupConfigurationRemoveEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.group;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.driver.service.GroupConfiguration;
21 | import lombok.NonNull;
22 |
23 | public class LocalGroupConfigurationRemoveEvent extends Event {
24 |
25 | private final GroupConfiguration group;
26 |
27 | public LocalGroupConfigurationRemoveEvent(@NonNull GroupConfiguration group) {
28 | this.group = group;
29 | }
30 |
31 | public @NonNull GroupConfiguration group() {
32 | return this.group;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/instance/CloudNetTickEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.instance;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.node.tick.TickLoop;
21 | import lombok.NonNull;
22 |
23 | public final class CloudNetTickEvent extends Event {
24 |
25 | private final TickLoop ticker;
26 |
27 | public CloudNetTickEvent(@NonNull TickLoop ticker) {
28 | this.ticker = ticker;
29 | }
30 |
31 | public @NonNull TickLoop ticker() {
32 | return this.ticker;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/instance/CloudNetTickServiceStartEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.instance;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.node.tick.TickLoop;
21 | import lombok.NonNull;
22 |
23 | public class CloudNetTickServiceStartEvent extends Event {
24 |
25 | private final TickLoop ticker;
26 |
27 | public CloudNetTickServiceStartEvent(@NonNull TickLoop ticker) {
28 | this.ticker = ticker;
29 | }
30 |
31 | public @NonNull TickLoop ticker() {
32 | return this.ticker;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/service/CloudServiceCreateEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.service;
18 |
19 | import eu.cloudnetservice.node.service.CloudService;
20 | import lombok.NonNull;
21 |
22 | public final class CloudServiceCreateEvent extends CloudServiceEvent {
23 |
24 | public CloudServiceCreateEvent(@NonNull CloudService service) {
25 | super(service);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/service/CloudServicePostPrepareEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.service;
18 |
19 | import eu.cloudnetservice.node.service.CloudService;
20 | import lombok.NonNull;
21 |
22 | public final class CloudServicePostPrepareEvent extends CloudServiceEvent {
23 |
24 | public CloudServicePostPrepareEvent(@NonNull CloudService service) {
25 | super(service);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/service/CloudServicePostProcessStartEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.service;
18 |
19 | import eu.cloudnetservice.node.service.CloudService;
20 | import lombok.NonNull;
21 |
22 | public final class CloudServicePostProcessStartEvent extends CloudServiceEvent {
23 |
24 | public CloudServicePostProcessStartEvent(@NonNull CloudService service) {
25 | super(service);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/service/CloudServicePreForceStopEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.service;
18 |
19 | import eu.cloudnetservice.node.service.CloudService;
20 | import lombok.NonNull;
21 |
22 | public final class CloudServicePreForceStopEvent extends CloudServiceEvent {
23 |
24 | public CloudServicePreForceStopEvent(@NonNull CloudService service) {
25 | super(service);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/service/CloudServicePrePrepareEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.service;
18 |
19 | import eu.cloudnetservice.node.service.CloudService;
20 | import lombok.NonNull;
21 |
22 | public final class CloudServicePrePrepareEvent extends CloudServiceEvent {
23 |
24 | public CloudServicePrePrepareEvent(@NonNull CloudService service) {
25 | super(service);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/service/CloudServicePreProcessStartEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.service;
18 |
19 | import eu.cloudnetservice.node.service.CloudService;
20 | import lombok.NonNull;
21 |
22 | public final class CloudServicePreProcessStartEvent extends CloudServiceEvent {
23 |
24 | public CloudServicePreProcessStartEvent(@NonNull CloudService service) {
25 | super(service);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/task/LocalServiceTaskAddEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.task;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.driver.service.ServiceTask;
21 | import lombok.NonNull;
22 |
23 | public final class LocalServiceTaskAddEvent extends Event {
24 |
25 | private ServiceTask task;
26 |
27 | public LocalServiceTaskAddEvent(@NonNull ServiceTask task) {
28 | this.task = task;
29 | }
30 |
31 | public @NonNull ServiceTask task() {
32 | return this.task;
33 | }
34 |
35 | public void task(@NonNull ServiceTask task) {
36 | this.task = task;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/event/task/LocalServiceTaskRemoveEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.event.task;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.driver.service.ServiceTask;
21 | import lombok.NonNull;
22 |
23 | public class LocalServiceTaskRemoveEvent extends Event {
24 |
25 | private final ServiceTask task;
26 |
27 | public LocalServiceTaskRemoveEvent(@NonNull ServiceTask task) {
28 | this.task = task;
29 | }
30 |
31 | public @NonNull ServiceTask task() {
32 | return this.task;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/service/LocalCloudServiceFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.service;
18 |
19 | import eu.cloudnetservice.driver.base.Named;
20 | import eu.cloudnetservice.driver.service.ServiceConfiguration;
21 | import lombok.NonNull;
22 |
23 | public interface LocalCloudServiceFactory extends Named {
24 |
25 | @NonNull CloudService createCloudService(@NonNull CloudServiceManager manager, @NonNull ServiceConfiguration configuration);
26 | }
27 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/service/ServiceConfigurationPreparer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.service;
18 |
19 | import lombok.NonNull;
20 |
21 | @FunctionalInterface
22 | public interface ServiceConfigurationPreparer {
23 |
24 | void configure(@NonNull CloudService cloudService);
25 | }
26 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/service/ServiceConsoleLineHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.service;
18 |
19 | import lombok.NonNull;
20 |
21 | @FunctionalInterface
22 | public interface ServiceConsoleLineHandler {
23 |
24 | void handleLine(@NonNull ServiceConsoleLogCache source, @NonNull String line, boolean stderr);
25 | }
26 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/tick/ShutdownHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.tick;
18 |
19 | public interface ShutdownHandler {
20 |
21 | void shutdown();
22 | }
23 |
--------------------------------------------------------------------------------
/node/api/src/main/java/eu/cloudnetservice/node/tick/TickLoop.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.tick;
18 |
19 | import lombok.NonNull;
20 |
21 | public interface TickLoop {
22 |
23 | int TPS = 10;
24 |
25 | @NonNull Scheduler scheduler();
26 |
27 | boolean running();
28 |
29 | void pause();
30 |
31 | void resume();
32 |
33 | long currentTick();
34 | }
35 |
--------------------------------------------------------------------------------
/node/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 |
18 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/cluster/sync/prettyprint/GulfHelper.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.cluster.sync.prettyprint;
18 |
19 | import dev.derklaro.gulf.Gulf;
20 | import dev.derklaro.gulf.diff.Change;
21 | import java.util.Collection;
22 | import lombok.NonNull;
23 | import org.jetbrains.annotations.Nullable;
24 |
25 | public final class GulfHelper {
26 |
27 | private static final Gulf GULF = Gulf.builder().build();
28 |
29 | private GulfHelper() {
30 | throw new UnsupportedOperationException();
31 | }
32 |
33 | public static @NonNull Collection> findChanges(@Nullable Object left, @Nullable Object right) {
34 | return GULF.findChanges(left, right);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/command/sub/ClearCommand.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.command.sub;
18 |
19 | import eu.cloudnetservice.node.command.annotation.Description;
20 | import eu.cloudnetservice.node.impl.console.Console;
21 | import jakarta.inject.Singleton;
22 | import lombok.NonNull;
23 | import org.incendo.cloud.annotations.Command;
24 | import org.incendo.cloud.annotations.Permission;
25 |
26 | @Singleton
27 | @Permission("cloudnet.command.clear")
28 | @Description("command-clear-description")
29 | public final class ClearCommand {
30 |
31 | @Command("clear")
32 | public void clearConsole(@NonNull Console console) {
33 | console.clearScreen();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/console/handler/ConsoleInputHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.console.handler;
18 |
19 | import lombok.NonNull;
20 |
21 | public abstract class ConsoleInputHandler extends Toggleable {
22 |
23 | public abstract void handleInput(@NonNull String line);
24 | }
25 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/console/handler/ConsoleTabCompleteHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.console.handler;
18 |
19 | import java.util.Collection;
20 | import lombok.NonNull;
21 |
22 | public abstract class ConsoleTabCompleteHandler extends Toggleable {
23 |
24 | public abstract @NonNull Collection completeInput(@NonNull String line);
25 | }
26 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/console/handler/Toggleable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.console.handler;
18 |
19 | public abstract class Toggleable {
20 |
21 | private boolean enabled = true;
22 |
23 | public boolean enabled() {
24 | return this.enabled;
25 | }
26 |
27 | public void enabled(boolean enabled) {
28 | this.enabled = enabled;
29 | }
30 |
31 | public void toggle() {
32 | this.enabled = !this.enabled;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/database/NodeDatabaseProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.database;
18 |
19 | import eu.cloudnetservice.driver.base.Named;
20 | import eu.cloudnetservice.driver.database.DatabaseProvider;
21 | import eu.cloudnetservice.node.database.LocalDatabase;
22 | import lombok.NonNull;
23 |
24 | public interface NodeDatabaseProvider extends DatabaseProvider, Named, AutoCloseable {
25 |
26 | boolean init() throws Exception;
27 |
28 | @Override
29 | @NonNull
30 | LocalDatabase database(@NonNull String name);
31 | }
32 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/event/log/LoggingEntryEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.event.log;
18 |
19 | import ch.qos.logback.classic.spi.ILoggingEvent;
20 | import eu.cloudnetservice.driver.event.Event;
21 | import lombok.NonNull;
22 |
23 | public final class LoggingEntryEvent extends Event {
24 |
25 | private final ILoggingEvent record;
26 |
27 | public LoggingEntryEvent(@NonNull ILoggingEvent record) {
28 | this.record = record;
29 | }
30 |
31 | public @NonNull ILoggingEvent logEntry() {
32 | return this.record;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/event/setup/SetupCancelledEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.event.setup;
18 |
19 | import eu.cloudnetservice.node.impl.console.animation.setup.ConsoleSetupAnimation;
20 | import lombok.NonNull;
21 |
22 | public class SetupCancelledEvent extends SetupEvent {
23 |
24 | public SetupCancelledEvent(@NonNull ConsoleSetupAnimation setup) {
25 | super(setup);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/event/setup/SetupCompleteEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.event.setup;
18 |
19 | import eu.cloudnetservice.node.impl.console.animation.setup.ConsoleSetupAnimation;
20 | import lombok.NonNull;
21 |
22 | public class SetupCompleteEvent extends SetupEvent {
23 |
24 | public SetupCompleteEvent(@NonNull ConsoleSetupAnimation setup) {
25 | super(setup);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/event/setup/SetupEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.event.setup;
18 |
19 | import eu.cloudnetservice.driver.event.Event;
20 | import eu.cloudnetservice.node.impl.console.animation.setup.ConsoleSetupAnimation;
21 | import lombok.NonNull;
22 |
23 | public class SetupEvent extends Event {
24 |
25 | private final ConsoleSetupAnimation setup;
26 |
27 | public SetupEvent(@NonNull ConsoleSetupAnimation setup) {
28 | this.setup = setup;
29 | }
30 |
31 | public @NonNull ConsoleSetupAnimation setup() {
32 | return this.setup;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/event/setup/SetupInitiateEvent.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.event.setup;
18 |
19 | import eu.cloudnetservice.node.impl.console.animation.setup.ConsoleSetupAnimation;
20 | import lombok.NonNull;
21 |
22 | public class SetupInitiateEvent extends SetupEvent {
23 |
24 | public SetupInitiateEvent(@NonNull ConsoleSetupAnimation setup) {
25 | super(setup);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/module/updater/ModuleUpdaterContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.module.updater;
18 |
19 | import eu.cloudnetservice.node.impl.module.ModulesHolder;
20 | import java.nio.file.Path;
21 | import java.util.Map;
22 | import lombok.NonNull;
23 |
24 | public record ModuleUpdaterContext(
25 | @NonNull ModulesHolder modules,
26 | @NonNull Map moduleNames,
27 | @NonNull String updaterRepo,
28 | @NonNull String updaterBranch
29 | ) {
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/service/InternalCloudService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.service;
18 |
19 | import eu.cloudnetservice.driver.network.NetworkChannel;
20 | import eu.cloudnetservice.driver.service.ServiceInfoSnapshot;
21 | import eu.cloudnetservice.node.service.CloudService;
22 | import lombok.NonNull;
23 | import org.jetbrains.annotations.Nullable;
24 |
25 | public interface InternalCloudService extends CloudService {
26 |
27 | void networkChannel(@Nullable NetworkChannel channel);
28 |
29 | void handleServiceRegister();
30 |
31 | void updateServiceInfoSnapshot(@NonNull ServiceInfoSnapshot serviceInfoSnapshot);
32 | }
33 |
--------------------------------------------------------------------------------
/node/impl/src/main/java/eu/cloudnetservice/node/impl/setup/DefaultSetup.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.setup;
18 |
19 | import eu.cloudnetservice.node.impl.console.animation.setup.ConsoleSetupAnimation;
20 | import lombok.NonNull;
21 |
22 | public interface DefaultSetup {
23 |
24 | void applyQuestions(@NonNull ConsoleSetupAnimation animation);
25 |
26 | default void handleResults(@NonNull ConsoleSetupAnimation animation) {
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/node/impl/src/main/resources/files/limboloohp/server.properties:
--------------------------------------------------------------------------------
1 | #For explaination of what each of the options does, please visit:
2 | #https://github.com/LOOHP/Limbo/blob/master/src/main/resources/server.properties
3 | #Thu May 23 16:16:17 CEST 2024
4 | allow-chat=true
5 | allow-flight=false
6 | bungee-guard=false
7 | bungeecord=true
8 | default-gamemode=creative
9 | enforce-whitelist=false
10 | forwarding-secrets=
11 | handshake-verbose=true
12 | level-dimension=minecraft\:overworld
13 | level-name=world;spawn.schem
14 | log-player-ip-addresses=true
15 | max-players=500
16 | motd={"text"\:"","extra"\:[{"text"\:"Limbo Server\!","color"\:"yellow"}]}
17 | reduced-debug-info=true
18 | required-resource-pack=false
19 | resource-pack=
20 | resource-pack-prompt={"text"\:"","extra"\:[{"text"\:"Install server resource pack\!","color"\:"yellow"}]}
21 | resource-pack-sha1=
22 | server-ip=0.0.0.0
23 | server-port=30000
24 | tab-footer=
25 | tab-header=
26 | ticks-per-second=5
27 | velocity-modern=false
28 | version=Limbo\!
29 | view-distance=6
30 | world-spawn=world;20.5;17;22.5;-90;0
31 |
--------------------------------------------------------------------------------
/node/impl/src/main/resources/files/limboloohp/spawn.schem:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/node/impl/src/main/resources/files/limboloohp/spawn.schem
--------------------------------------------------------------------------------
/node/impl/src/main/resources/files/nms/bukkit.yml:
--------------------------------------------------------------------------------
1 | settings:
2 | allow-end: true
3 | warn-on-overload: true
4 | permissions-file: permissions.yml
5 | update-folder: update
6 | plugin-profiling: false
7 | connection-throttle: 0
8 | query-plugins: true
9 | deprecated-verbose: default
10 | shutdown-message: Server closed
11 | minimum-api: none
12 | use-map-color-cache: true
13 | spawn-limits:
14 | monsters: 70
15 | animals: 10
16 | water-animals: 5
17 | water-ambient: 20
18 | water-underground-creature: 5
19 | axolotls: 5
20 | ambient: 15
21 | chunk-gc:
22 | period-in-ticks: 600
23 | ticks-per:
24 | animal-spawns: 400
25 | monster-spawns: 1
26 | water-spawns: 1
27 | water-ambient-spawns: 1
28 | water-underground-creature-spawns: 1
29 | axolotl-spawns: 1
30 | ambient-spawns: 1
31 | autosave: -1
32 | aliases: now-in-commands.yml
33 |
--------------------------------------------------------------------------------
/node/impl/src/main/resources/files/nukkit/server.properties:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | #Properties Config file
18 | #2022-07-16 09:50:15
19 | motd=A Nukkit Powered Server
20 | sub-motd=https://nukkitx.com
21 | server-port=19132
22 | server-ip=0.0.0.0
23 | view-distance=10
24 | white-list=off
25 | achievements=on
26 | announce-player-achievements=on
27 | spawn-protection=16
28 | max-players=20
29 | allow-flight=off
30 | spawn-animals=on
31 | spawn-mobs=on
32 | gamemode=0
33 | force-gamemode=off
34 | hardcore=off
35 | pvp=on
36 | difficulty=1
37 | generator-settings=
38 | level-name=world
39 | level-seed=
40 | level-type=DEFAULT
41 | allow-nether=on
42 | enable-query=on
43 | enable-rcon=off
44 | rcon.password=
45 | auto-save=on
46 | force-resources=off
47 | xbox-auth=off
48 |
--------------------------------------------------------------------------------
/node/impl/src/main/resources/files/server-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/node/impl/src/main/resources/files/server-icon.png
--------------------------------------------------------------------------------
/node/impl/src/main/resources/header.txt:
--------------------------------------------------------------------------------
1 |
2 | &c ___ _ _ &b __ __ _____ &8[&7%codename%&8]
3 | &c / __\ | ___ _ _ __| |&b /\ \ \/__\/__ \
4 | &c / / | |/ _ \| | | |/ _` |&b/ \/ /_\ / /\/
5 | &c / /___| | (_) | |_| | (_| &b/ /\ //__ / /
6 | &c \____/|_|\___/ \__,_|\__,_&b\_\ \/\__/ \/
7 | &7 (%version%)
8 |
9 | &8«&b*&8»&7 The Cloud Network Environment Technology
10 | &8«&b*&8»&7 The modern Minecraft service management solution
11 | &8«&b*&8»&7 Discord Support: https://discord.cloudnetservice.eu/
12 |
13 |
--------------------------------------------------------------------------------
/node/impl/src/test/java/eu/cloudnetservice/node/impl/junit/EnableServicesInject.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.node.impl.junit;
18 |
19 | import java.lang.annotation.ElementType;
20 | import java.lang.annotation.Inherited;
21 | import java.lang.annotation.Retention;
22 | import java.lang.annotation.RetentionPolicy;
23 | import java.lang.annotation.Target;
24 | import org.junit.jupiter.api.extension.ExtendWith;
25 |
26 | @Inherited
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | @ExtendWith(EnableServicesInjectExtension.class)
30 | public @interface EnableServicesInject {
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/node/impl/src/test/resources/local_template_storage.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/node/impl/src/test/resources/local_template_storage.zip
--------------------------------------------------------------------------------
/node/impl/src/test/resources/logback-test.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 | [%d{dd.MM HH:mm:ss.SSS}] %-5level: %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/plugins/luckperms/build.gradle.kts:
--------------------------------------------------------------------------------
1 | import net.fabricmc.loom.task.RemapJarTask
2 |
3 | /*
4 | * Copyright 2019-2023 CloudNetService team & contributors
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | plugins {
20 | alias(libs.plugins.fabricLoom)
21 | }
22 |
23 |
24 | dependencies {
25 | "compileOnly"(libs.bundles.proxyPlatform)
26 | "compileOnly"(libs.bundles.serverPlatform)
27 |
28 | "compileOnly"(libs.luckPermsApi)
29 | "compileOnly"(projects.wrapperJvm.wrapperJvmApi)
30 | "compileOnly"(projects.modules.bridge.bridgeApi)
31 |
32 | "minecraft"(libs.minecraft)
33 | "modCompileOnly"(libs.fabricLoader)
34 | "mappings"(loom.officialMojangMappings())
35 | }
36 |
37 | tasks.withType {
38 | // base setup
39 | archiveFileName.set(Files.luckPermsPlugin)
40 | }
41 |
--------------------------------------------------------------------------------
/plugins/papi-expansion/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | tasks.withType {
18 | archiveFileName.set(Files.papiExpansion)
19 | }
20 |
21 | repositories {
22 | maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
23 | }
24 |
25 | dependencies {
26 | compileOnly(libs.spigot)
27 | compileOnly(libs.placeholderApi)
28 | compileOnly(projects.wrapperJvm.wrapperJvmApi)
29 | compileOnly(projects.modules.bridge.bridgeApi)
30 | }
31 |
--------------------------------------------------------------------------------
/utils/base/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "api"(libs.vavr)
19 | "implementation"(libs.guava)
20 | // todo(derklaro): well this dependency is here now but i'm not really happy with that - util classes
21 | // should not be responsible for logging, any they should especially not just log
22 | // all exceptions instead of passing them to the caller (see primarily FileUtil)
23 | "implementation"(libs.slf4jApi)
24 | }
25 |
--------------------------------------------------------------------------------
/utils/base/src/test/java/eu/cloudnetservice/utils/base/resource/CpuUsageResolverTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.utils.base.resource;
18 |
19 | import org.junit.jupiter.api.Assertions;
20 | import org.junit.jupiter.api.Test;
21 |
22 | public class CpuUsageResolverTest {
23 |
24 | @Test
25 | void testCpuUsageResolve() {
26 | var processCpuUsage = Assertions.assertDoesNotThrow(CpuUsageResolver::processCpuLoad);
27 | Assertions.assertTrue(processCpuUsage >= -1 && processCpuUsage <= 100);
28 |
29 | var systemCpuUsage = Assertions.assertDoesNotThrow(CpuUsageResolver::systemCpuLoad);
30 | Assertions.assertTrue(systemCpuUsage >= -1 && systemCpuUsage <= 100);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/utils/base/src/test/resources/empty_zip_file.zip:
--------------------------------------------------------------------------------
1 | PK
--------------------------------------------------------------------------------
/utils/base/src/test/resources/file_utils_resources.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CloudNetService/CloudNet/adbe832b8864908c17b9161c2ff69395d6527273/utils/base/src/test/resources/file_utils_resources.zip
--------------------------------------------------------------------------------
/utils/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/wrapper-jvm/api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | dependencies {
18 | "api"(projects.driver.driverApi)
19 | }
20 |
--------------------------------------------------------------------------------
/wrapper-jvm/build.gradle.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/database/WrapperDatabase.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019-2024 CloudNetService team & contributors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package eu.cloudnetservice.wrapper.impl.database;
18 |
19 | import eu.cloudnetservice.driver.database.Database;
20 | import eu.cloudnetservice.driver.network.rpc.annotation.RPCInvocationTarget;
21 | import lombok.NonNull;
22 |
23 | public abstract class WrapperDatabase implements Database {
24 |
25 | private final String name;
26 |
27 | @RPCInvocationTarget
28 | public WrapperDatabase(@NonNull String name) {
29 | this.name = name;
30 | }
31 |
32 | @Override
33 | public @NonNull String name() {
34 | return this.name;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/wrapper-jvm/impl/src/main/resources/META-INF/services/org.jboss.shrinkwrap.resolver.spi.format.FormatProcessor:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | org.jboss.shrinkwrap.resolver.impl.maven.format.MavenResolvedArtifactProcessor
18 |
--------------------------------------------------------------------------------
/wrapper-jvm/impl/src/main/resources/lang/en_US.properties:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2019-2024 CloudNetService team & contributors
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 |
--------------------------------------------------------------------------------