From 64152878d0c11ce9427d9167d82a696c49ffa787 Mon Sep 17 00:00:00 2001 From: layue13 Date: Sun, 27 Sep 2026 22:39:16 +0800 Subject: [PATCH] Rename project to MoonBridge and expose standalone Bukkit API --- .gitea/workflows/verify.yml | 2 +- README.md | 12 +- backend-bukkit-api/build.gradle.kts | 74 ++++++++++++ .../bukkit/BukkitMessagingService.java | 6 +- backend-bukkit/build.gradle.kts | 16 +-- .../bukkit/MoonBridgeBackendPlugin.java} | 10 +- .../bukkit/OwnedMessagingService.java | 6 +- backend-bukkit/src/main/resources/config.yml | 2 +- backend-bukkit/src/main/resources/plugin.yml | 6 +- .../bukkit/OwnedMessagingServiceTest.java | 6 +- backend-channel-client/build.gradle.kts | 2 +- .../backendchannel/BackendChannelClient.java | 20 ++-- .../backendchannel/FrameCodec.java | 2 +- .../backendchannel/Wire.java | 2 +- .../BackendChannelClientTest.java | 22 ++-- benchmarks/CipherBenchmark.java | 2 +- benchmarks/ProxySessionBenchmark.java | 16 +-- benchmarks/RelayBenchmark.java | 10 +- benchmarks/run-cipher.ps1 | 4 +- benchmarks/run-proxy-session.ps1 | 4 +- benchmarks/run-relay.ps1 | 4 +- build.gradle.kts | 8 +- docs/architecture.md | 16 +-- docs/backend-channel-design.md | 28 ++++- docs/operations.md | 18 +-- docs/player-operations.md | 2 +- docs/plugins.md | 8 +- docs/testing.md | 2 +- messaging-api/build.gradle.kts | 2 +- .../messaging/Endpoint.java | 2 +- .../messaging/Message.java | 2 +- .../messaging/MessageChannel.java | 2 +- .../messaging/MessageHandler.java | 2 +- .../messaging/MessageKind.java | 2 +- .../messaging/Messaging.java | 2 +- .../messaging/MessagingException.java | 2 +- .../messaging/PublishResult.java | 2 +- .../messaging/SendReceipt.java | 2 +- .../messaging/SendResult.java | 2 +- .../messaging/Subscription.java | 2 +- .../messaging/internal/LocalMessaging.java | 26 ++--- .../internal/LocalMessagingTest.java | 20 ++-- messaging-protocol/build.gradle.kts | 2 +- .../messaging/protocol/MessageCodec.java | 14 +-- .../messaging/protocol/MessageCodecTest.java | 12 +- proxy-build-logic/build.gradle.kts | 8 +- ...MoonBridgeApplicationConventionsPlugin.kt} | 4 +- ...MoonBridgeJavaLibraryConventionsPlugin.kt} | 2 +- proxy-core/build.gradle.kts | 30 ++--- .../app/ProxyConfiguration.java | 4 +- .../app/ProxyConfigurationLoader.java | 4 +- .../app/ProxyMain.java | 24 ++-- .../app/StaticBackends.java | 10 +- .../core/auth/AuthenticatedEncryption.java | 2 +- .../core/auth/CipherBufferTransform.java | 2 +- .../core/auth/MinecraftCipherDecoder.java | 2 +- .../core/auth/MinecraftCipherEncoder.java | 2 +- .../core/auth/MinecraftEncryptionRequest.java | 6 +- .../auth/MinecraftEncryptionResponse.java | 6 +- .../core/auth/MojangSessionVerifier.java | 2 +- .../core/auth/OnlineModeCrypto.java | 2 +- .../core/auth/ProfileProperty.java | 2 +- .../core/auth/SessionVerifier.java | 2 +- .../core/auth/VerifiedProfile.java | 2 +- .../core/backend/BackendCatalog.java | 2 +- .../core/backend/BackendHandle.java | 2 +- .../core/backend/BackendId.java | 2 +- .../core/backend/BackendOwner.java | 2 +- .../core/backend/BackendRegistration.java | 2 +- .../core/backend/BackendView.java | 2 +- .../core/backend/InMemoryBackendCatalog.java | 2 +- .../core/control/BackendChannelTransport.java | 8 +- .../core/control/BackendControlService.java | 42 +++---- .../core/event/EventDispatcher.java | 4 +- .../forwarding/BungeeLegacyForwarding.java | 10 +- .../core/plugin/AsyncEventDispatcher.java | 6 +- .../plugin/PlacementTimeoutException.java | 2 +- .../core/plugin/PluginHost.java | 110 +++++++++--------- .../core/plugin/PluginLoadException.java | 2 +- .../plugin/PluginOverloadedException.java | 2 +- .../core/protocol/LoginStart.java | 2 +- .../core/protocol/Minecraft1710EntityIds.java | 2 +- .../protocol/Minecraft1710PlayPackets.java | 2 +- .../core/protocol/MinecraftFrameDecoder.java | 2 +- .../core/protocol/MinecraftFrameEncoder.java | 2 +- .../core/protocol/MinecraftHandshake.java | 2 +- .../protocol/MinecraftLoginDisconnect.java | 2 +- .../core/protocol/MinecraftLoginSuccess.java | 2 +- .../core/protocol/MinecraftTabCompletion.java | 2 +- .../core/protocol/MinecraftText.java | 2 +- .../core/protocol/ProtocolException.java | 2 +- .../core/protocol/ProtocolProfile.java | 2 +- .../core/protocol/ProtocolStrings.java | 2 +- .../core/protocol/ProtocolVarInt.java | 2 +- .../core/protocol/ServerListStatus.java | 4 +- .../core/relay/RawRelay.java | 4 +- .../core/session/ConnectionGate.java | 8 +- .../core/session/KeepAliveBridge.java | 4 +- .../core/session/PlayObservation.java | 8 +- .../session/PlayerCommandInterceptor.java | 6 +- .../core/session/ProxySessionListener.java | 48 ++++---- .../core/session/Session.java | 70 +++++------ .../core/session/SessionFrameEncoder.java | 6 +- .../core/session/TabCompletionBridge.java | 6 +- .../core/session/TransferCandidate.java | 10 +- .../core/session/TransferFrameBuffer.java | 4 +- .../core/session/TransferFrameHandler.java | 12 +- ...ple.yml => moonbridge-channel.example.yml} | 0 .../{strataproxy.yml => moonbridge.yml} | 2 +- .../app/ProxyConfigurationTest.java | 32 ++--- .../app/StaticBackendsTest.java | 10 +- .../auth/MinecraftCipherHandlersTest.java | 2 +- .../auth/MinecraftEncryptionCodecTest.java | 4 +- .../core/auth/MojangSessionVerifierTest.java | 2 +- .../core/auth/OnlineModeCryptoTest.java | 2 +- .../backend/InMemoryBackendCatalogTest.java | 2 +- .../control/BackendControlServiceTest.java | 38 +++--- .../control/UnifiedMessagingSocketTest.java | 12 +- .../BungeeLegacyForwardingTest.java | 10 +- .../core/plugin/AsyncEventDispatcherTest.java | 8 +- .../core/plugin/PluginHostCompletionTest.java | 26 ++--- .../core/plugin/PluginHostMessagingTest.java | 10 +- .../core/plugin/PluginHostTest.java | 66 +++++------ .../protocol/Minecraft1710EntityIdsTest.java | 2 +- .../Minecraft1710PlayPacketsTest.java | 2 +- .../MinecraftFrameDecoderTransitionTest.java | 2 +- .../core/protocol/MinecraftProtocolTest.java | 2 +- .../core/protocol/MinecraftTextTest.java | 2 +- .../core/protocol/ServerListStatusTest.java | 4 +- .../core/relay/RawRelaySocketTest.java | 2 +- .../core/relay/RawRelayTest.java | 2 +- .../core/session/DeferredBackendResolver.java | 2 +- .../core/session/KeepAliveBridgeTest.java | 4 +- .../core/session/PlayObservationTest.java | 6 +- .../session/ProxySessionListenerTest.java | 94 +++++++-------- .../ServerListStatusIntegrationTest.java | 12 +- .../session/SessionTransferDispatchTest.java | 6 +- .../core/session/SessionTransferTest.java | 32 ++--- .../core/session/TabCompletionBridgeTest.java | 8 +- .../core/session/TransferCandidateTest.java | 6 +- .../core/session/TransferFrameBufferTest.java | 4 +- .../session/TransferFrameHandlerTest.java | 8 +- proxy-plugin-api/build.gradle.kts | 6 +- .../api/AccessDecision.java | 2 +- .../api/CommandCompleter.java | 2 +- .../api/CommandCompletion.java | 2 +- .../api/CommandHandler.java | 2 +- .../api/CommandInvocation.java | 2 +- .../api/CommandRegistration.java | 2 +- .../api/Commands.java | 2 +- .../api/DisconnectResult.java | 2 +- .../api/InitialPlacementHandler.java | 2 +- .../api/MessageResult.java | 2 +- .../api/PlacementDecision.java | 2 +- .../api/PlainTextValidation.java | 2 +- .../api/PlayerIdentity.java | 2 +- .../api/PlayerView.java | 2 +- .../api/Players.java | 2 +- .../api/Plugin.java | 2 +- .../api/PluginContext.java | 6 +- .../api/ServerDefinition.java | 2 +- .../api/ServerRegistration.java | 2 +- .../api/ServerView.java | 2 +- .../api/Servers.java | 2 +- .../api/TransferResult.java | 2 +- .../api/TransferStatus.java | 2 +- .../api/event/ConnectionAdmissionEvent.java | 4 +- .../api/event/Event.java | 2 +- .../api/event/EventListener.java | 2 +- .../api/event/EventSubscription.java | 2 +- .../api/event/Events.java | 2 +- .../api/event/PlayerAdmissionEvent.java | 6 +- .../api/event/PlayerDisconnectedEvent.java | 4 +- .../api/event/ServerConnectedEvent.java | 4 +- .../api/ApiValueTypesTest.java | 2 +- .../api/event/EventsApiTest.java | 8 +- settings.gradle.kts | 3 +- smoke/BackendAcceptancePlugin.java | 16 +-- smoke/BackendObserverPlugin.java | 10 +- smoke/ChannelJava8Probe.java | 12 +- smoke/ChannelRouterFixture.java | 10 +- smoke/ProxyBackendAcceptancePlugin.java | 26 ++--- smoke/TcpRelayCapture.java | 2 +- smoke/UraniumTransferPlugin.java | 20 ++-- smoke/UraniumTransferProbe.java | 18 +-- smoke/backend-uranium.ps1 | 22 ++-- smoke/channel-java8.ps1 | 6 +- smoke/container-channel.sh | 16 +-- smoke/container-network.ps1 | 14 +-- smoke/container-network.py | 2 +- smoke/local-uranium-transfer.ps1 | 24 ++-- smoke/local-uranium.ps1 | 12 +- smoke/results/2026-09-27-moonbridge-api.md | 44 +++++++ 193 files changed, 934 insertions(+), 783 deletions(-) create mode 100644 backend-bukkit-api/build.gradle.kts rename {backend-bukkit/src/main/java/dev/strataproxy => backend-bukkit-api/src/main/java/dev/moonbridge}/bukkit/BukkitMessagingService.java (75%) rename backend-bukkit/src/main/java/dev/{strataproxy/bukkit/StrataProxyBackendPlugin.java => moonbridge/bukkit/MoonBridgeBackendPlugin.java} (89%) rename backend-bukkit/src/main/java/dev/{strataproxy => moonbridge}/bukkit/OwnedMessagingService.java (91%) rename backend-bukkit/src/test/java/dev/{strataproxy => moonbridge}/bukkit/OwnedMessagingServiceTest.java (96%) rename backend-channel-client/src/main/java/dev/{strataproxy => moonbridge}/backendchannel/BackendChannelClient.java (98%) rename backend-channel-client/src/main/java/dev/{strataproxy => moonbridge}/backendchannel/FrameCodec.java (95%) rename backend-channel-client/src/main/java/dev/{strataproxy => moonbridge}/backendchannel/Wire.java (99%) rename backend-channel-client/src/test/java/dev/{strataproxy => moonbridge}/backendchannel/BackendChannelClientTest.java (95%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/Endpoint.java (97%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/Message.java (99%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/MessageChannel.java (98%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/MessageHandler.java (92%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/MessageKind.java (80%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/Messaging.java (93%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/MessagingException.java (95%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/PublishResult.java (96%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/SendReceipt.java (93%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/SendResult.java (96%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/Subscription.java (85%) rename messaging-api/src/main/java/dev/{strataproxy => moonbridge}/messaging/internal/LocalMessaging.java (98%) rename messaging-api/src/test/java/dev/{strataproxy => moonbridge}/messaging/internal/LocalMessagingTest.java (97%) rename messaging-protocol/src/main/java/dev/{strataproxy => moonbridge}/messaging/protocol/MessageCodec.java (98%) rename messaging-protocol/src/test/java/dev/{strataproxy => moonbridge}/messaging/protocol/MessageCodecTest.java (95%) rename proxy-build-logic/src/main/kotlin/{StrataProxyApplicationConventionsPlugin.kt => MoonBridgeApplicationConventionsPlugin.kt} (59%) rename proxy-build-logic/src/main/kotlin/{StrataProxyJavaLibraryConventionsPlugin.kt => MoonBridgeJavaLibraryConventionsPlugin.kt} (94%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/app/ProxyConfiguration.java (99%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/app/ProxyConfigurationLoader.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/app/ProxyMain.java (88%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/app/StaticBackends.java (78%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/AuthenticatedEncryption.java (94%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/CipherBufferTransform.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/MinecraftCipherDecoder.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/MinecraftCipherEncoder.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/MinecraftEncryptionRequest.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/MinecraftEncryptionResponse.java (93%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/MojangSessionVerifier.java (99%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/OnlineModeCrypto.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/ProfileProperty.java (95%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/SessionVerifier.java (95%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/auth/VerifiedProfile.java (94%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/backend/BackendCatalog.java (92%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/backend/BackendHandle.java (90%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/backend/BackendId.java (89%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/backend/BackendOwner.java (92%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/backend/BackendRegistration.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/backend/BackendView.java (94%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/backend/InMemoryBackendCatalog.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/control/BackendChannelTransport.java (68%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/control/BackendControlService.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/event/EventDispatcher.java (78%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/forwarding/BungeeLegacyForwarding.java (93%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/plugin/AsyncEventDispatcher.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/plugin/PlacementTimeoutException.java (89%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/plugin/PluginHost.java (95%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/plugin/PluginLoadException.java (88%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/plugin/PluginOverloadedException.java (87%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/LoginStart.java (96%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/Minecraft1710EntityIds.java (99%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/Minecraft1710PlayPackets.java (99%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftFrameDecoder.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftFrameEncoder.java (95%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftHandshake.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftLoginDisconnect.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftLoginSuccess.java (95%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftTabCompletion.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftText.java (99%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/ProtocolException.java (87%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/ProtocolProfile.java (96%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/ProtocolStrings.java (96%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/ProtocolVarInt.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/protocol/ServerListStatus.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/relay/RawRelay.java (99%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/ConnectionGate.java (96%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/KeepAliveBridge.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/PlayObservation.java (94%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/PlayerCommandInterceptor.java (91%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/ProxySessionListener.java (93%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/Session.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/SessionFrameEncoder.java (74%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/TabCompletionBridge.java (98%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/TransferCandidate.java (95%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/TransferFrameBuffer.java (97%) rename proxy-core/src/main/java/dev/{strataproxy => moonbridge}/core/session/TransferFrameHandler.java (94%) rename proxy-core/src/main/resources/config/{strataproxy-channel.example.yml => moonbridge-channel.example.yml} (100%) rename proxy-core/src/main/resources/config/{strataproxy.yml => moonbridge.yml} (94%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/app/ProxyConfigurationTest.java (92%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/app/StaticBackendsTest.java (81%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/auth/MinecraftCipherHandlersTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/auth/MinecraftEncryptionCodecTest.java (96%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/auth/MojangSessionVerifierTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/auth/OnlineModeCryptoTest.java (98%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/backend/InMemoryBackendCatalogTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/control/BackendControlServiceTest.java (89%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/control/UnifiedMessagingSocketTest.java (97%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/forwarding/BungeeLegacyForwardingTest.java (92%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/plugin/AsyncEventDispatcherTest.java (95%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/plugin/PluginHostCompletionTest.java (95%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/plugin/PluginHostMessagingTest.java (96%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/plugin/PluginHostTest.java (96%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/protocol/Minecraft1710EntityIdsTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/protocol/Minecraft1710PlayPacketsTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftFrameDecoderTransitionTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftProtocolTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/protocol/MinecraftTextTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/protocol/ServerListStatusTest.java (96%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/relay/RawRelaySocketTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/relay/RawRelayTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/DeferredBackendResolver.java (98%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/KeepAliveBridgeTest.java (98%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/PlayObservationTest.java (96%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/ProxySessionListenerTest.java (98%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/ServerListStatusIntegrationTest.java (93%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/SessionTransferDispatchTest.java (93%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/SessionTransferTest.java (99%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/TabCompletionBridgeTest.java (97%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/TransferCandidateTest.java (96%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/TransferFrameBufferTest.java (96%) rename proxy-core/src/test/java/dev/{strataproxy => moonbridge}/core/session/TransferFrameHandlerTest.java (92%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/AccessDecision.java (96%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/CommandCompleter.java (93%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/CommandCompletion.java (93%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/CommandHandler.java (87%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/CommandInvocation.java (97%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/CommandRegistration.java (88%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/Commands.java (95%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/DisconnectResult.java (90%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/InitialPlacementHandler.java (94%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/MessageResult.java (94%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/PlacementDecision.java (97%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/PlainTextValidation.java (95%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/PlayerIdentity.java (93%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/PlayerView.java (96%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/Players.java (99%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/Plugin.java (96%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/PluginContext.java (83%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/ServerDefinition.java (97%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/ServerRegistration.java (94%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/ServerView.java (95%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/Servers.java (96%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/TransferResult.java (95%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/TransferStatus.java (85%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/ConnectionAdmissionEvent.java (86%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/Event.java (93%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/EventListener.java (87%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/EventSubscription.java (91%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/Events.java (98%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/PlayerAdmissionEvent.java (88%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/PlayerDisconnectedEvent.java (84%) rename proxy-plugin-api/src/main/java/dev/{strataproxy => moonbridge}/api/event/ServerConnectedEvent.java (92%) rename proxy-plugin-api/src/test/java/dev/{strataproxy => moonbridge}/api/ApiValueTypesTest.java (98%) rename proxy-plugin-api/src/test/java/dev/{strataproxy => moonbridge}/api/event/EventsApiTest.java (93%) create mode 100644 smoke/results/2026-09-27-moonbridge-api.md diff --git a/.gitea/workflows/verify.yml b/.gitea/workflows/verify.yml index cdcea9c..520a1ed 100644 --- a/.gitea/workflows/verify.yml +++ b/.gitea/workflows/verify.yml @@ -1,4 +1,4 @@ -name: Verify StrataProxy +name: Verify MoonBridge on: pull_request: diff --git a/README.md b/README.md index 65f2398..64d6bcb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# StrataProxy +# MoonBridge 面向 Minecraft 1.7.10 Forge 的玩家会话代理:登录认证、协议转发、跨后端转服,以及供插件使用的玩家、服务器目录、富文本、命令补全、类型化事件和 Channel 消息服务。后端插件共享认证连接,通过 channel 与 proxy 或其他 backend 通信。空岛分配、实例唤醒和 Ban 数据存储由插件实现。 @@ -17,13 +17,19 @@ ```powershell .\gradlew.bat check :proxy-core:installDist -.\proxy-core\build\install\strataproxy\bin\strataproxy.bat --config .\proxy-core\build\install\strataproxy\config\strataproxy.yml +.\proxy-core\build\install\moonbridge\bin\moonbridge.bat --config .\proxy-core\build\install\moonbridge\config\moonbridge.yml ``` 默认配置为 `OFFLINE`,仅监听 `127.0.0.1:25577`,后端为 `127.0.0.1:25565`。公开部署使用 `ONLINE_BUNGEE`,并限制玩家直连后端。详见[运行配置](docs/operations.md)。 +## 后端插件开发 + +服务器安装 `moonbridge-backend-bukkit` JAR(插件名 `MoonBridgeBackend`)。业务插件以 `compileOnly` / `provided` 依赖 `uk.potatolab:backend-bukkit-api:0.1.0-SNAPSHOT`,通过 `BukkitMessagingService` 获取共享消息服务;无需依赖宿主实现或创建网络连接。API 和完整接入示例见[后端插件接入](docs/backend-channel-design.md#后端插件接入)。 + +本次改名统一使用 `dev.moonbridge` 包名、`moonbridge` 启动命令和 `moonbridge.yml` 配置文件。现有插件需要重新编译,Bukkit 插件依赖声明和宿主配置目录改用 `MoonBridgeBackend`。历史验收记录保留当时的名称与构件路径。 + ## 验证状态 -`StrataProxyBackend` 后端宿主已通过两个真实 Uranium / Java 8 服务端的注册、通信、主线程回调、插件停用、重连及注销/租约验收,见[后端宿主验收记录](smoke/results/2026-09-27-backend-host.md)。这是无玩家、隔离服务端上的功能验收,不代表生产容量测试。 +`MoonBridgeBackend` 后端宿主与独立 API 已通过两个真实 Uranium / Java 8 服务端的注册、通信、主线程回调、插件停用、重连及注销/租约验收,见[改名与独立 API 验收记录](smoke/results/2026-09-27-moonbridge-api.md)。这是无玩家、隔离服务端上的功能验收,不代表生产容量测试。 已完成当前 Prism 整合包的真实 Mojang 认证、连续 20 次转服、历史 DNS/Agent 发行包烟测及同条件流量对照,见[验收记录](benchmarks/results/2026-09-26-prism-pack.md)。验收覆盖单玩家与本机后端;生产容量需按部署环境测量。已知 Uranium 候选服登录停滞的调查见[记录](smoke/results/2026-09-26-uranium-login-stalls.md)及 [Uranium #585](https://git.nest.potatolab.uk:8443/TDLM/Uranium/issues/585)。 diff --git a/backend-bukkit-api/build.gradle.kts b/backend-bukkit-api/build.gradle.kts new file mode 100644 index 0000000..7e026ca --- /dev/null +++ b/backend-bukkit-api/build.gradle.kts @@ -0,0 +1,74 @@ +import java.io.DataInputStream +import java.util.jar.JarFile + +plugins { + `java-library` + `maven-publish` +} + +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(25)) + withSourcesJar() + withJavadocJar() +} + +tasks.withType().configureEach { + options.release.set(8) + options.encoding = "UTF-8" +} + +dependencies { + api(project(":messaging-api")) + // Consumers compile with their server API; the running server supplies Bukkit. + compileOnly("org.spigotmc:spigot-api:1.8-R0.1-SNAPSHOT") { isTransitive = false } +} + +val verifyApiJar = tasks.register("verifyApiJar") { + group = "verification" + dependsOn(tasks.jar) + val apiJar = tasks.jar.flatMap { it.archiveFile } + inputs.file(apiJar) + doLast { + JarFile(apiJar.get().asFile).use { archive -> + val entries = archive.entries().asSequence().toList() + val classes = entries.filter { it.name.endsWith(".class") } + check(classes.map { it.name } == listOf("dev/moonbridge/bukkit/BukkitMessagingService.class")) { + "Bukkit API artifact must contain only the public service contract" + } + check(entries.none { it.name == "plugin.yml" }) { "API is not a deployable plugin" } + classes.forEach { entry -> + DataInputStream(archive.getInputStream(entry)).use { input -> + input.readInt() + input.readUnsignedShort() + check(input.readUnsignedShort() == 52) { "Bukkit API must target Java 8" } + } + } + } + } +} + +tasks.named("check") { dependsOn(verifyApiJar) } + +publishing { + publications { + create("bukkitApi") { + from(components["java"]) + artifactId = "backend-bukkit-api" + pom { + name.set("MoonBridge Bukkit API") + description.set("Java 8 service contract for plugins using the shared MoonBridge backend host.") + } + } + } + repositories { + maven { + name = "giteaPackages" + url = uri(providers.environmentVariable("MAVEN_URL") + .orElse("https://git.nest.potatolab.uk:8443/api/packages/layue13/maven").get()) + credentials { + username = providers.environmentVariable("MAVEN_USER").orElse("NONE").get() + password = providers.environmentVariable("MAVEN_PASSWORD").orElse("NONE").get() + } + } + } +} diff --git a/backend-bukkit/src/main/java/dev/strataproxy/bukkit/BukkitMessagingService.java b/backend-bukkit-api/src/main/java/dev/moonbridge/bukkit/BukkitMessagingService.java similarity index 75% rename from backend-bukkit/src/main/java/dev/strataproxy/bukkit/BukkitMessagingService.java rename to backend-bukkit-api/src/main/java/dev/moonbridge/bukkit/BukkitMessagingService.java index b8c8a1f..884a1f1 100644 --- a/backend-bukkit/src/main/java/dev/strataproxy/bukkit/BukkitMessagingService.java +++ b/backend-bukkit-api/src/main/java/dev/moonbridge/bukkit/BukkitMessagingService.java @@ -1,9 +1,9 @@ -package dev.strataproxy.bukkit; +package dev.moonbridge.bukkit; -import dev.strataproxy.messaging.Messaging; +import dev.moonbridge.messaging.Messaging; import org.bukkit.plugin.Plugin; -/** Shared service provided by the StrataProxyBackend Bukkit plugin. */ +/** Shared service provided by the MoonBridgeBackend Bukkit plugin. */ public interface BukkitMessagingService { /** * Returns this enabled plugin's owned messaging scope. Repeated lookups for diff --git a/backend-bukkit/build.gradle.kts b/backend-bukkit/build.gradle.kts index db9763d..861d1f7 100644 --- a/backend-bukkit/build.gradle.kts +++ b/backend-bukkit/build.gradle.kts @@ -18,7 +18,7 @@ tasks.withType().configureEach { } dependencies { - api(project(":messaging-api")) + api(project(":backend-bukkit-api")) implementation(project(":backend-channel-client")) compileOnly("org.spigotmc:spigot-api:1.8-R0.1-SNAPSHOT") { isTransitive = false } testImplementation("org.spigotmc:spigot-api:1.8-R0.1-SNAPSHOT") { isTransitive = false } @@ -34,7 +34,7 @@ tasks.withType().configureEach { useJUnitPlatform() } // One provider owns the API classes, codec and transport. Consumers use compileOnly // and plugin.yml depend, so Bukkit resolves the same service class identity. tasks.jar { - archiveBaseName.set("strataproxy-backend-bukkit") + archiveBaseName.set("moonbridge-backend-bukkit") dependsOn(configurations.runtimeClasspath) duplicatesStrategy = DuplicatesStrategy.EXCLUDE from({ configurations.runtimeClasspath.get().filter { it.extension == "jar" }.map { zipTree(it) } }) @@ -51,11 +51,11 @@ val verifyHostJar = tasks.register("verifyHostJar") { val entries = archive.entries().asSequence().toList() val names = entries.map { it.name } listOf("plugin.yml", "config.yml", - "dev/strataproxy/bukkit/BukkitMessagingService.class", - "dev/strataproxy/messaging/Message.class", - "dev/strataproxy/messaging/internal/LocalMessaging.class", - "dev/strataproxy/messaging/protocol/MessageCodec.class", - "dev/strataproxy/backendchannel/BackendChannelClient.class").forEach { + "dev/moonbridge/bukkit/BukkitMessagingService.class", + "dev/moonbridge/messaging/Message.class", + "dev/moonbridge/messaging/internal/LocalMessaging.class", + "dev/moonbridge/messaging/protocol/MessageCodec.class", + "dev/moonbridge/backendchannel/BackendChannelClient.class").forEach { check(names.count { name -> name == it } == 1) { "Host jar must contain exactly one $it" } } check(names.none { it.startsWith("org/bukkit/") }) { "Bukkit API must remain server-provided" } @@ -78,7 +78,7 @@ publishing { from(components["java"]) artifactId = "backend-bukkit" pom { - name.set("StrataProxy Backend Host") + name.set("MoonBridge Backend Host") description.set("Java 8 shared channel messaging service for Bukkit and Uranium plugins.") } } diff --git a/backend-bukkit/src/main/java/dev/strataproxy/bukkit/StrataProxyBackendPlugin.java b/backend-bukkit/src/main/java/dev/moonbridge/bukkit/MoonBridgeBackendPlugin.java similarity index 89% rename from backend-bukkit/src/main/java/dev/strataproxy/bukkit/StrataProxyBackendPlugin.java rename to backend-bukkit/src/main/java/dev/moonbridge/bukkit/MoonBridgeBackendPlugin.java index 4e1e0ec..4a164d5 100644 --- a/backend-bukkit/src/main/java/dev/strataproxy/bukkit/StrataProxyBackendPlugin.java +++ b/backend-bukkit/src/main/java/dev/moonbridge/bukkit/MoonBridgeBackendPlugin.java @@ -1,6 +1,6 @@ -package dev.strataproxy.bukkit; +package dev.moonbridge.bukkit; -import dev.strataproxy.backendchannel.BackendChannelClient; +import dev.moonbridge.backendchannel.BackendChannelClient; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.server.PluginDisableEvent; @@ -15,7 +15,7 @@ import java.util.concurrent.Executor; import java.util.concurrent.RejectedExecutionException; /** One process-level authenticated transport shared by all dependent plugins. */ -public final class StrataProxyBackendPlugin extends JavaPlugin implements Listener { +public final class MoonBridgeBackendPlugin extends JavaPlugin implements Listener { private volatile boolean stopping; private BackendChannelClient client; private OwnedMessagingService service; @@ -37,10 +37,10 @@ public final class StrataProxyBackendPlugin extends JavaPlugin implements Listen service = new OwnedMessagingService(client::messaging, this::mainThreadExecutor); getServer().getServicesManager().register(BukkitMessagingService.class, service, this, ServicePriority.Normal); getServer().getPluginManager().registerEvents(this, this); - getLogger().info("Shared StrataProxy messaging service started; registration runs asynchronously"); + getLogger().info("Shared MoonBridge messaging service started; registration runs asynchronously"); } catch (RuntimeException failure) { // Do not include configuration values or authentication peer data. - getLogger().severe("Cannot start StrataProxy messaging: " + failure.getClass().getSimpleName()); + getLogger().severe("Cannot start MoonBridge messaging: " + failure.getClass().getSimpleName()); getServer().getPluginManager().disablePlugin(this); } finally { if (secret != null) Arrays.fill(secret, (byte) 0); diff --git a/backend-bukkit/src/main/java/dev/strataproxy/bukkit/OwnedMessagingService.java b/backend-bukkit/src/main/java/dev/moonbridge/bukkit/OwnedMessagingService.java similarity index 91% rename from backend-bukkit/src/main/java/dev/strataproxy/bukkit/OwnedMessagingService.java rename to backend-bukkit/src/main/java/dev/moonbridge/bukkit/OwnedMessagingService.java index f21d47b..05df653 100644 --- a/backend-bukkit/src/main/java/dev/strataproxy/bukkit/OwnedMessagingService.java +++ b/backend-bukkit/src/main/java/dev/moonbridge/bukkit/OwnedMessagingService.java @@ -1,6 +1,6 @@ -package dev.strataproxy.bukkit; +package dev.moonbridge.bukkit; -import dev.strataproxy.messaging.Messaging; +import dev.moonbridge.messaging.Messaging; import org.bukkit.plugin.Plugin; import java.util.ArrayList; @@ -26,7 +26,7 @@ final class OwnedMessagingService implements BukkitMessagingService, AutoCloseab @Override public synchronized Messaging forPlugin(Plugin owner) { Objects.requireNonNull(owner, "owner"); - if (closed) throw new IllegalStateException("StrataProxy messaging host is disabled"); + if (closed) throw new IllegalStateException("MoonBridge messaging host is disabled"); if (!owner.isEnabled()) throw new IllegalStateException("Message owner is not enabled"); Messaging existing = owners.get(owner); if (existing != null) return existing; diff --git a/backend-bukkit/src/main/resources/config.yml b/backend-bukkit/src/main/resources/config.yml index 984eb44..0bfc24d 100644 --- a/backend-bukkit/src/main/resources/config.yml +++ b/backend-bukkit/src/main/resources/config.yml @@ -1,5 +1,5 @@ # Install exactly one host plugin per backend. Consumer plugins depend on -# StrataProxyBackend and obtain BukkitMessagingService from ServicesManager. +# MoonBridgeBackend and obtain BukkitMessagingService from ServicesManager. proxyHost: "127.0.0.1" proxyPort: 28081 instanceId: "island-a" diff --git a/backend-bukkit/src/main/resources/plugin.yml b/backend-bukkit/src/main/resources/plugin.yml index 9a0022d..385523e 100644 --- a/backend-bukkit/src/main/resources/plugin.yml +++ b/backend-bukkit/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ -name: StrataProxyBackend -main: dev.strataproxy.bukkit.StrataProxyBackendPlugin +name: MoonBridgeBackend +main: dev.moonbridge.bukkit.MoonBridgeBackendPlugin version: 0.1.0 -description: Shared backend host for StrataProxy +description: Shared backend host for MoonBridge load: STARTUP diff --git a/backend-bukkit/src/test/java/dev/strataproxy/bukkit/OwnedMessagingServiceTest.java b/backend-bukkit/src/test/java/dev/moonbridge/bukkit/OwnedMessagingServiceTest.java similarity index 96% rename from backend-bukkit/src/test/java/dev/strataproxy/bukkit/OwnedMessagingServiceTest.java rename to backend-bukkit/src/test/java/dev/moonbridge/bukkit/OwnedMessagingServiceTest.java index 60a7312..b9fcf78 100644 --- a/backend-bukkit/src/test/java/dev/strataproxy/bukkit/OwnedMessagingServiceTest.java +++ b/backend-bukkit/src/test/java/dev/moonbridge/bukkit/OwnedMessagingServiceTest.java @@ -1,7 +1,7 @@ -package dev.strataproxy.bukkit; +package dev.moonbridge.bukkit; -import dev.strataproxy.messaging.MessageChannel; -import dev.strataproxy.messaging.Messaging; +import dev.moonbridge.messaging.MessageChannel; +import dev.moonbridge.messaging.Messaging; import org.bukkit.plugin.Plugin; import org.junit.jupiter.api.Test; diff --git a/backend-channel-client/build.gradle.kts b/backend-channel-client/build.gradle.kts index 7caa9bd..6b62cb1 100644 --- a/backend-channel-client/build.gradle.kts +++ b/backend-channel-client/build.gradle.kts @@ -35,7 +35,7 @@ publishing { from(components["java"]) artifactId = "backend-channel-client" pom { - name.set("StrataProxy Backend Channel Client") + name.set("MoonBridge Backend Channel Client") description.set("Java 8-compatible backend control channel SDK.") } } diff --git a/backend-channel-client/src/main/java/dev/strataproxy/backendchannel/BackendChannelClient.java b/backend-channel-client/src/main/java/dev/moonbridge/backendchannel/BackendChannelClient.java similarity index 98% rename from backend-channel-client/src/main/java/dev/strataproxy/backendchannel/BackendChannelClient.java rename to backend-channel-client/src/main/java/dev/moonbridge/backendchannel/BackendChannelClient.java index fd28053..5db613c 100644 --- a/backend-channel-client/src/main/java/dev/strataproxy/backendchannel/BackendChannelClient.java +++ b/backend-channel-client/src/main/java/dev/moonbridge/backendchannel/BackendChannelClient.java @@ -1,14 +1,14 @@ -package dev.strataproxy.backendchannel; +package dev.moonbridge.backendchannel; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.Messaging; -import dev.strataproxy.messaging.MessagingException; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; -import dev.strataproxy.messaging.internal.LocalMessaging; -import dev.strataproxy.messaging.protocol.MessageCodec; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.Messaging; +import dev.moonbridge.messaging.MessagingException; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; +import dev.moonbridge.messaging.internal.LocalMessaging; +import dev.moonbridge.messaging.protocol.MessageCodec; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; diff --git a/backend-channel-client/src/main/java/dev/strataproxy/backendchannel/FrameCodec.java b/backend-channel-client/src/main/java/dev/moonbridge/backendchannel/FrameCodec.java similarity index 95% rename from backend-channel-client/src/main/java/dev/strataproxy/backendchannel/FrameCodec.java rename to backend-channel-client/src/main/java/dev/moonbridge/backendchannel/FrameCodec.java index 3cdb53f..5b74b83 100644 --- a/backend-channel-client/src/main/java/dev/strataproxy/backendchannel/FrameCodec.java +++ b/backend-channel-client/src/main/java/dev/moonbridge/backendchannel/FrameCodec.java @@ -1,4 +1,4 @@ -package dev.strataproxy.backendchannel; +package dev.moonbridge.backendchannel; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/backend-channel-client/src/main/java/dev/strataproxy/backendchannel/Wire.java b/backend-channel-client/src/main/java/dev/moonbridge/backendchannel/Wire.java similarity index 99% rename from backend-channel-client/src/main/java/dev/strataproxy/backendchannel/Wire.java rename to backend-channel-client/src/main/java/dev/moonbridge/backendchannel/Wire.java index 359616b..bb85245 100644 --- a/backend-channel-client/src/main/java/dev/strataproxy/backendchannel/Wire.java +++ b/backend-channel-client/src/main/java/dev/moonbridge/backendchannel/Wire.java @@ -1,4 +1,4 @@ -package dev.strataproxy.backendchannel; +package dev.moonbridge.backendchannel; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/backend-channel-client/src/test/java/dev/strataproxy/backendchannel/BackendChannelClientTest.java b/backend-channel-client/src/test/java/dev/moonbridge/backendchannel/BackendChannelClientTest.java similarity index 95% rename from backend-channel-client/src/test/java/dev/strataproxy/backendchannel/BackendChannelClientTest.java rename to backend-channel-client/src/test/java/dev/moonbridge/backendchannel/BackendChannelClientTest.java index 0f0c428..0a266e3 100644 --- a/backend-channel-client/src/test/java/dev/strataproxy/backendchannel/BackendChannelClientTest.java +++ b/backend-channel-client/src/test/java/dev/moonbridge/backendchannel/BackendChannelClientTest.java @@ -1,10 +1,10 @@ -package dev.strataproxy.backendchannel; +package dev.moonbridge.backendchannel; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.MessageChannel; -import dev.strataproxy.messaging.protocol.MessageCodec; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.MessageChannel; +import dev.moonbridge.messaging.protocol.MessageCodec; import org.junit.jupiter.api.Test; import javax.crypto.Mac; @@ -85,7 +85,7 @@ class BackendChannelClientTest { BackendChannelClient client = new BackendChannelClient("127.0.0.1", server.getLocalPort(), "backend-1", "island-a", "tcp://127.0.0.1:25565", "gen-1", "key-1", secret, 10_000L, 100L, 500L); - dev.strataproxy.messaging.Messaging messaging = client.messaging("test-plugin"); + dev.moonbridge.messaging.Messaging messaging = client.messaging("test-plugin"); MessageChannel channel = messaging.channel("backend:echo"); channel.onRequest(message -> CompletableFuture.completedFuture( (new String(message.payload(), StandardCharsets.UTF_8) + "!").getBytes(StandardCharsets.UTF_8))); @@ -128,7 +128,7 @@ class BackendChannelClientTest { }); BackendChannelClient client = new BackendChannelClient("127.0.0.1", server.getLocalPort(), "slow-peer", "island-slow", "tcp://127.0.0.1:25570", "gen-slow", "key-1", secret); - dev.strataproxy.messaging.Messaging messaging = client.messaging("slow-test"); + dev.moonbridge.messaging.Messaging messaging = client.messaging("slow-test"); try { assertTrue(client.awaitRegistered(5, TimeUnit.SECONDS)); byte[] payload = new byte[Message.MAX_PAYLOAD_BYTES]; @@ -172,7 +172,7 @@ class BackendChannelClientTest { if (afterExpiry.operationId != 129L) { assertTrue(afterExpiry.operationId >= 1L && afterExpiry.operationId <= 128L); assertEquals(MessageCodec.Response.Type.ERROR, afterExpiry.type); - assertEquals(dev.strataproxy.messaging.MessagingException.Code.TIMED_OUT, afterExpiry.errorCode); + assertEquals(dev.moonbridge.messaging.MessagingException.Code.TIMED_OUT, afterExpiry.errorCode); } } while (afterExpiry.operationId != 129L); assertEquals(MessageCodec.Response.Type.REPLY, afterExpiry.type); @@ -185,7 +185,7 @@ class BackendChannelClientTest { }); BackendChannelClient client = new BackendChannelClient("127.0.0.1", server.getLocalPort(), "hang-backend", "island-hang", "tcp://127.0.0.1:25571", "gen-hang", "key-1", secret); - dev.strataproxy.messaging.Messaging messaging = client.messaging("hang-test"); + dev.moonbridge.messaging.Messaging messaging = client.messaging("hang-test"); java.util.concurrent.atomic.AtomicInteger calls = new java.util.concurrent.atomic.AtomicInteger(); messaging.channel("test:hang").onRequest(message -> { int call = calls.incrementAndGet(); @@ -240,7 +240,7 @@ class BackendChannelClientTest { }); BackendChannelClient client = new BackendChannelClient("127.0.0.1", server.getLocalPort(), "reconnect-backend", "island-reconnect", "tcp://127.0.0.1:25572", "gen-reconnect", "key-1", secret, 10_000L, 25L, 100L); - dev.strataproxy.messaging.Messaging messaging = client.messaging("reconnect-test"); + dev.moonbridge.messaging.Messaging messaging = client.messaging("reconnect-test"); try { assertTrue(client.awaitRegistered(5, TimeUnit.SECONDS)); CompletableFuture old = messaging.channel("test:reconnect") diff --git a/benchmarks/CipherBenchmark.java b/benchmarks/CipherBenchmark.java index 40b9de9..98bfae2 100644 --- a/benchmarks/CipherBenchmark.java +++ b/benchmarks/CipherBenchmark.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; import com.sun.management.ThreadMXBean; import io.netty.buffer.ByteBuf; diff --git a/benchmarks/ProxySessionBenchmark.java b/benchmarks/ProxySessionBenchmark.java index 5982fbc..dd33989 100644 --- a/benchmarks/ProxySessionBenchmark.java +++ b/benchmarks/ProxySessionBenchmark.java @@ -1,12 +1,12 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.TransferStatus; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.TransferStatus; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/benchmarks/RelayBenchmark.java b/benchmarks/RelayBenchmark.java index 10f5a4b..ad199b6 100644 --- a/benchmarks/RelayBenchmark.java +++ b/benchmarks/RelayBenchmark.java @@ -1,9 +1,9 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.MinecraftFrameDecoder; -import dev.strataproxy.core.protocol.ProtocolProfile; -import dev.strataproxy.core.protocol.ProtocolVarInt; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.core.protocol.MinecraftFrameDecoder; +import dev.moonbridge.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.relay.RawRelay; import io.netty.bootstrap.Bootstrap; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; diff --git a/benchmarks/run-cipher.ps1 b/benchmarks/run-cipher.ps1 index b142f55..6378f91 100644 --- a/benchmarks/run-cipher.ps1 +++ b/benchmarks/run-cipher.ps1 @@ -7,7 +7,7 @@ param( $ErrorActionPreference = "Stop" $repoRoot = Split-Path -Parent $PSScriptRoot -$installLib = Join-Path $repoRoot "proxy-core\build\install\strataproxy\lib" +$installLib = Join-Path $repoRoot "proxy-core\build\install\moonbridge\lib" $classes = Join-Path $PSScriptRoot "build" Push-Location $repoRoot @@ -19,7 +19,7 @@ try { & javac -cp "$installLib\*" -d $classes (Join-Path $PSScriptRoot "CipherBenchmark.java") if ($LASTEXITCODE -ne 0) { throw "javac failed with exit code $LASTEXITCODE" } - & java -cp "$classes;$installLib\*" dev.strataproxy.core.session.CipherBenchmark ` + & java -cp "$classes;$installLib\*" dev.moonbridge.core.session.CipherBenchmark ` $Bytes $Iterations $Warmup $Rounds if ($LASTEXITCODE -ne 0) { throw "benchmark failed with exit code $LASTEXITCODE" } } finally { diff --git a/benchmarks/run-proxy-session.ps1 b/benchmarks/run-proxy-session.ps1 index ee05f9b..aab63e2 100644 --- a/benchmarks/run-proxy-session.ps1 +++ b/benchmarks/run-proxy-session.ps1 @@ -11,7 +11,7 @@ param( $ErrorActionPreference = "Stop" $repoRoot = Split-Path -Parent $PSScriptRoot -$installLib = Join-Path $repoRoot "proxy-core\build\install\strataproxy\lib" +$installLib = Join-Path $repoRoot "proxy-core\build\install\moonbridge\lib" $classes = Join-Path $PSScriptRoot "build" Push-Location $repoRoot @@ -23,7 +23,7 @@ try { & javac -cp "$installLib\*" -d $classes (Join-Path $PSScriptRoot "ProxySessionBenchmark.java") if ($LASTEXITCODE -ne 0) { throw "javac failed with exit code $LASTEXITCODE" } - & java -cp "$classes;$installLib\*" dev.strataproxy.core.session.ProxySessionBenchmark ` + & java -cp "$classes;$installLib\*" dev.moonbridge.core.session.ProxySessionBenchmark ` --connections $Connections --messages $Messages --warmup $Warmup --payload $Payload --repeats $Repeats ` --window $Window --mode $Mode --command-interceptor $CommandInterceptor if ($LASTEXITCODE -ne 0) { throw "benchmark failed with exit code $LASTEXITCODE" } diff --git a/benchmarks/run-relay.ps1 b/benchmarks/run-relay.ps1 index f40bcfe..f2ca893 100644 --- a/benchmarks/run-relay.ps1 +++ b/benchmarks/run-relay.ps1 @@ -9,7 +9,7 @@ param( $ErrorActionPreference = "Stop" $repoRoot = Split-Path -Parent $PSScriptRoot -$installLib = Join-Path $repoRoot "proxy-core\build\install\strataproxy\lib" +$installLib = Join-Path $repoRoot "proxy-core\build\install\moonbridge\lib" $classes = Join-Path $PSScriptRoot "build" Push-Location $repoRoot @@ -21,7 +21,7 @@ try { & javac -cp "$installLib\*" -d $classes (Join-Path $PSScriptRoot "RelayBenchmark.java") if ($LASTEXITCODE -ne 0) { throw "javac failed with exit code $LASTEXITCODE" } - & java -cp "$classes;$installLib\*" dev.strataproxy.core.session.RelayBenchmark ` + & java -cp "$classes;$installLib\*" dev.moonbridge.core.session.RelayBenchmark ` --connections $Connections --messages $Messages --warmup $Warmup --payload $Payload --repeats $Repeats --window $Window if ($LASTEXITCODE -ne 0) { throw "benchmark failed with exit code $LASTEXITCODE" } } diff --git a/build.gradle.kts b/build.gradle.kts index 5a3e2ae..5dc2a3c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,6 @@ plugins { - id("strataproxy.java-library-conventions") apply false - id("strataproxy.application-conventions") apply false + id("moonbridge.java-library-conventions") apply false + id("moonbridge.application-conventions") apply false } allprojects { @@ -11,11 +11,11 @@ allprojects { tasks.register("check") { group = "verification" dependsOn(":proxy-plugin-api:check", ":messaging-api:check", ":messaging-protocol:check", - ":backend-channel-client:check", ":backend-bukkit:check", ":proxy-core:check") + ":backend-channel-client:check", ":backend-bukkit-api:check", ":backend-bukkit:check", ":proxy-core:check") } tasks.register("publish") { group = "publishing" dependsOn(":proxy-plugin-api:publish", ":messaging-api:publish", ":messaging-protocol:publish", - ":backend-channel-client:publish", ":backend-bukkit:publish") + ":backend-channel-client:publish", ":backend-bukkit-api:publish", ":backend-bukkit:publish") } diff --git a/docs/architecture.md b/docs/architecture.md index 96a73b8..99b1f11 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -5,10 +5,10 @@ ## 模块 - `proxy-plugin-api` 定义插件外部接口:生命周期、玩家/服务器只读视图、后端注册、类型化事件、初始选服、命令和转服。核心实现位于 `proxy-core`;可选发现器位于 `plugins/`。 -- `ProxyMain` 读取严格 YAML 配置,先注册静态后端,再加载配置启用的插件,连接插件选服回调,最后启动 Netty 监听器。插件以 `META-INF/services/dev.strataproxy.api.Plugin` 声明,通过独立类加载器加载。 +- `ProxyMain` 读取严格 YAML 配置,先注册静态后端,再加载配置启用的插件,连接插件选服回调,最后启动 Netty 监听器。插件以 `META-INF/services/dev.moonbridge.api.Plugin` 声明,通过独立类加载器加载。 - 核心支持 Minecraft 1.7.10(协议 5)登录和转发。`OFFLINE` 信任客户端提交的名字;`ONLINE_BUNGEE` 在代理执行加密与会话验证,并将身份转发给受信任的旧版 Bungee 后端。 -入口可从 [`ProxyMain`](../proxy-core/src/main/java/dev/strataproxy/app/ProxyMain.java)、[`ProxySessionListener`](../proxy-core/src/main/java/dev/strataproxy/core/session/ProxySessionListener.java) 和 [`PluginHost`](../proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginHost.java) 追踪。 +入口可从 [`ProxyMain`](../proxy-core/src/main/java/dev/moonbridge/app/ProxyMain.java)、[`ProxySessionListener`](../proxy-core/src/main/java/dev/moonbridge/core/session/ProxySessionListener.java) 和 [`PluginHost`](../proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginHost.java) 追踪。 ## 会话与连接生命周期 @@ -28,7 +28,7 @@ flowchart LR F --> G[PLAY / Forge 握手与转发] ``` -普通转发沿用协议 5 帧边界,不重新编码普通帧。前后端通道绑定同一 Netty EventLoop,会话控制状态在该循环串行变更。Keep Alive ID 由代理转换并跟踪未完成请求;必要的玩家实体 ID 数据包在转服后改写。通道不可写时通过暂停对端读取施加背压。实现见 [`Session`](../proxy-core/src/main/java/dev/strataproxy/core/session/Session.java)、[`RawRelay`](../proxy-core/src/main/java/dev/strataproxy/core/relay/RawRelay.java) 与 [`KeepAliveBridge`](../proxy-core/src/main/java/dev/strataproxy/core/session/KeepAliveBridge.java)。 +普通转发沿用协议 5 帧边界,不重新编码普通帧。前后端通道绑定同一 Netty EventLoop,会话控制状态在该循环串行变更。Keep Alive ID 由代理转换并跟踪未完成请求;必要的玩家实体 ID 数据包在转服后改写。通道不可写时通过暂停对端读取施加背压。实现见 [`Session`](../proxy-core/src/main/java/dev/moonbridge/core/session/Session.java)、[`RawRelay`](../proxy-core/src/main/java/dev/moonbridge/core/relay/RawRelay.java) 与 [`KeepAliveBridge`](../proxy-core/src/main/java/dev/moonbridge/core/session/KeepAliveBridge.java)。 ## 后端目录与发现所有权 @@ -40,7 +40,7 @@ flowchart LR ## 转服、并发与错误边界 -转服先在旧后端保持服务的同时连接并登录候选后端。普通后端在 Join Game 后可进入切换;Forge 候选后端要等待客户端 Forge 握手链路切换及 Join Game,再进行世界切换。交接期间客户端与旧后端帧分别进入有上限的缓冲区;切换前失败时尽可能恢复旧链路并回放暂存帧,成功时改用候选链路并清理旧链路。候选连接失败不会立即破坏旧链路;Forge 客户端切换包写出后若目标拒绝或超时,旧链路无法安全恢复,代理会关闭会话。`NETWORK_READY` 只表示协议握手和代理发出的世界切换已完成,不表示目标服插件或玩法世界已准备好。接口定义见 [`Players`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/Players.java)、状态见 [`TransferStatus`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/TransferStatus.java)。 +转服先在旧后端保持服务的同时连接并登录候选后端。普通后端在 Join Game 后可进入切换;Forge 候选后端要等待客户端 Forge 握手链路切换及 Join Game,再进行世界切换。交接期间客户端与旧后端帧分别进入有上限的缓冲区;切换前失败时尽可能恢复旧链路并回放暂存帧,成功时改用候选链路并清理旧链路。候选连接失败不会立即破坏旧链路;Forge 客户端切换包写出后若目标拒绝或超时,旧链路无法安全恢复,代理会关闭会话。`NETWORK_READY` 只表示协议握手和代理发出的世界切换已完成,不表示目标服插件或玩法世界已准备好。接口定义见 [`Players`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/Players.java)、状态见 [`TransferStatus`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/TransferStatus.java)。 主要并发和失败界限: @@ -61,7 +61,7 @@ flowchart LR ## 相关源码 -- 插件 API:[`PluginContext`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/PluginContext.java)、[`Servers`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/Servers.java)、[`Players`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/Players.java) -- 会话和转服:[`Session`](../proxy-core/src/main/java/dev/strataproxy/core/session/Session.java)、[`TransferCandidate`](../proxy-core/src/main/java/dev/strataproxy/core/session/TransferCandidate.java)、[`TransferFrameBuffer`](../proxy-core/src/main/java/dev/strataproxy/core/session/TransferFrameBuffer.java) -- 目录:[`BackendCatalog`](../proxy-core/src/main/java/dev/strataproxy/core/backend/BackendCatalog.java)、[`InMemoryBackendCatalog`](../proxy-core/src/main/java/dev/strataproxy/core/backend/InMemoryBackendCatalog.java) -- 后端控制通道:[`BackendControlService`](../proxy-core/src/main/java/dev/strataproxy/core/control/BackendControlService.java) +- 插件 API:[`PluginContext`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/PluginContext.java)、[`Servers`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/Servers.java)、[`Players`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/Players.java) +- 会话和转服:[`Session`](../proxy-core/src/main/java/dev/moonbridge/core/session/Session.java)、[`TransferCandidate`](../proxy-core/src/main/java/dev/moonbridge/core/session/TransferCandidate.java)、[`TransferFrameBuffer`](../proxy-core/src/main/java/dev/moonbridge/core/session/TransferFrameBuffer.java) +- 目录:[`BackendCatalog`](../proxy-core/src/main/java/dev/moonbridge/core/backend/BackendCatalog.java)、[`InMemoryBackendCatalog`](../proxy-core/src/main/java/dev/moonbridge/core/backend/InMemoryBackendCatalog.java) +- 后端控制通道:[`BackendControlService`](../proxy-core/src/main/java/dev/moonbridge/core/control/BackendControlService.java) diff --git a/docs/backend-channel-design.md b/docs/backend-channel-design.md index f5397c5..019a060 100644 --- a/docs/backend-channel-design.md +++ b/docs/backend-channel-design.md @@ -25,19 +25,39 @@ flowchart LR ## 后端插件接入 -在 Bukkit/Uranium 后端安装一次 `backend-bukkit` 生成的 `strataproxy-backend-bukkit` JAR,插件名为 `StrataProxyBackend`。配置唯一的实例 ID、后端名称、代理控制地址、游戏地址与凭据。宿主异步建立连接,不在启动主线程等待网络。 +在 Bukkit/Uranium 后端安装一次 `backend-bukkit` 生成的 `moonbridge-backend-bukkit` JAR,插件名为 `MoonBridgeBackend`。配置唯一的实例 ID、后端名称、代理控制地址、游戏地址与凭据。宿主异步建立连接,不在启动主线程等待网络。 消费者 `plugin.yml` 声明: ```yaml -depend: [StrataProxyBackend] +depend: [MoonBridgeBackend] ``` -消费者仅将 `uk.potatolab:backend-bukkit` 作为 `compileOnly` / `provided` 依赖,不将 API、SDK 或宿主实现重新打包进自己的 JAR,确保各插件使用同一服务类。 +消费者依赖独立的 `uk.potatolab:backend-bukkit-api:0.1.0-SNAPSHOT`,它传递依赖平台无关的 `messaging-api`。`backend-bukkit` 是部署到服务器的宿主实现,`backend-channel-client` 是其他平台实现宿主时使用的传输 SDK,普通业务插件不依赖它们。 + +Gradle 示例(Bukkit API 仍由业务插件按目标服务器版本自行声明): + +```kotlin +repositories { + maven("https://git.nest.potatolab.uk:8443/api/packages/layue13/maven") +} +dependencies { + compileOnly("uk.potatolab:backend-bukkit-api:0.1.0-SNAPSHOT") +} +``` + +Maven 使用同一坐标并设置 `provided`。本地发行包的 `backend-api/` 也包含编译所需的两个 API JAR。不要把 API、SDK 或宿主实现重新打包进业务插件 JAR,也不要把 API JAR 单独放进服务器 `plugins/`;运行时由 `MoonBridgeBackend` 提供同一份 API 类和服务实现。 ```java +import dev.moonbridge.bukkit.BukkitMessagingService; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.MessageChannel; +import dev.moonbridge.messaging.Messaging; + +// 在业务插件的 onEnable 中取得服务;plugin.yml 声明 depend。 BukkitMessagingService service = getServer().getServicesManager() .load(BukkitMessagingService.class); +if (service == null) throw new IllegalStateException("MoonBridgeBackend service is unavailable"); Messaging messaging = service.forPlugin(this); MessageChannel channel = messaging.channel("islands:control"); @@ -80,7 +100,7 @@ Proxy 为每个插件管理独立的 scope,在停用时自动撤销。项目 ## 配置与部署 -代理在 `backendChannel.listen` 启动独立监听器。配置示例见 [strataproxy-channel.example.yml](../proxy-core/src/main/resources/config/strataproxy-channel.example.yml)。每个实例的 `secret` 至少 32 个 UTF-8 字节,`allowedHosts` 限制其广告游戏地址;`allowedNamespaces` 控制发送,`allowedReceiveNamespaces` 控制接收,未配置接收列表时继承发送列表,显式空列表表示禁止该方向的所有消息。跨后端路由同时检查源发送权限与目的接收权限。 +代理在 `backendChannel.listen` 启动独立监听器。配置示例见 [moonbridge-channel.example.yml](../proxy-core/src/main/resources/config/moonbridge-channel.example.yml)。每个实例的 `secret` 至少 32 个 UTF-8 字节,`allowedHosts` 限制其广告游戏地址;`allowedNamespaces` 控制发送,`allowedReceiveNamespaces` 控制接收,未配置接收列表时继承发送列表,显式空列表表示禁止该方向的所有消息。跨后端路由同时检查源发送权限与目的接收权限。 实例的游戏地址必须是代理实际可达的 `tcp://host:port`。Docker 中使用容器服务名,容器间不要使用 `127.0.0.1`。仅将玩家端口公开,控制端口放在私有网络。不要把真实凭据写入镜像或提交到仓库。 diff --git a/docs/operations.md b/docs/operations.md index 80f9119..d9618e5 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -4,14 +4,14 @@ ## 配置和启动 -默认配置模板为 [`strataproxy.yml`](../proxy-core/src/main/resources/config/strataproxy.yml)。发行包将示例配置放在 `config/`;自有插件 JAR 可放在 `plugins.directory` 指向的目录。相对 `plugins.directory` 从所选配置文件所在目录解析;`plugins.enabled` 以插件实现类全名为键,空映射不启用外部插件。插件可用设置由各插件在启动时校验。 +默认配置模板为 [`moonbridge.yml`](../proxy-core/src/main/resources/config/moonbridge.yml)。发行包将示例配置放在 `config/`;自有插件 JAR 可放在 `plugins.directory` 指向的目录。相对 `plugins.directory` 从所选配置文件所在目录解析;`plugins.enabled` 以插件实现类全名为键,空映射不启用外部插件。插件可用设置由各插件在启动时校验。 本地安装发行包并启动: ```powershell .\gradlew.bat :proxy-core:installDist -.\proxy-core\build\install\strataproxy\bin\strataproxy.bat --validate-config .\proxy-core\build\install\strataproxy\config\strataproxy.yml -.\proxy-core\build\install\strataproxy\bin\strataproxy.bat --config .\proxy-core\build\install\strataproxy\config\strataproxy.yml +.\proxy-core\build\install\moonbridge\bin\moonbridge.bat --validate-config .\proxy-core\build\install\moonbridge\config\moonbridge.yml +.\proxy-core\build\install\moonbridge\bin\moonbridge.bat --config .\proxy-core\build\install\moonbridge\config\moonbridge.yml ``` `--validate-config` 校验核心 YAML、静态后端注册和服务器列表图标;它不会加载插件,所以不会验证已启用插件的设置、后端连通性或登录流程。未知核心配置键会报错。 @@ -22,7 +22,7 @@ ```yaml status: - motd: "StrataProxy" + motd: "MoonBridge" maxPlayers: 100 # icon: "server-icon.png" ``` @@ -42,7 +42,7 @@ status: ## 可选后端发现 -后端控制通道示例见 [`strataproxy-channel.example.yml`](../proxy-core/src/main/resources/config/strataproxy-channel.example.yml),使用独立监听端口接收实例注册、心跳和双向消息;使用方法与限制见[后端控制通道](backend-channel-design.md)。 +后端控制通道示例见 [`moonbridge-channel.example.yml`](../proxy-core/src/main/resources/config/moonbridge-channel.example.yml),使用独立监听端口接收实例注册、心跳和双向消息;使用方法与限制见[后端控制通道](backend-channel-design.md)。 Docker 容器间的监听、服务名和地址配置见[配置与部署](backend-channel-design.md#配置与部署);`sh smoke/container-channel.sh` 可运行跨容器烟测。 @@ -62,10 +62,10 @@ Docker 容器间的监听、服务名和地址配置见[配置与部署](backend 现有测试可用于定位行为范围: -- 登录、认证和协议:`proxy-core/src/test/java/dev/strataproxy/core/auth/` 与 `proxy-core/src/test/java/dev/strataproxy/core/protocol/` -- 会话、断开、转服与缓冲:`proxy-core/src/test/java/dev/strataproxy/core/session/`,重点包括 `SessionTransferTest`、`SessionTransferDispatchTest`、`TransferFrameBufferTest` -- 插件生命周期、访问检查和 API:`proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostTest.java`、`proxy-core/src/test/java/dev/strataproxy/core/session/ProxySessionListenerTest.java`、`proxy-core/src/test/java/dev/strataproxy/app/ProxyConfigurationTest.java` 与 `proxy-plugin-api/src/test/` -- 控制通道:`proxy-core/src/test/java/dev/strataproxy/core/control/` 与 `backend-channel-client/src/test/` +- 登录、认证和协议:`proxy-core/src/test/java/dev/moonbridge/core/auth/` 与 `proxy-core/src/test/java/dev/moonbridge/core/protocol/` +- 会话、断开、转服与缓冲:`proxy-core/src/test/java/dev/moonbridge/core/session/`,重点包括 `SessionTransferTest`、`SessionTransferDispatchTest`、`TransferFrameBufferTest` +- 插件生命周期、访问检查和 API:`proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostTest.java`、`proxy-core/src/test/java/dev/moonbridge/core/session/ProxySessionListenerTest.java`、`proxy-core/src/test/java/dev/moonbridge/app/ProxyConfigurationTest.java` 与 `proxy-plugin-api/src/test/` +- 控制通道:`proxy-core/src/test/java/dev/moonbridge/core/control/` 与 `backend-channel-client/src/test/` 仓库另有本地 Uranium 协议探针和 Prism Forge 客户端记录,见 [`smoke/results`](../smoke/results/2026-09-25-local-uranium.md)、[转服记录](../smoke/results/2026-09-25-local-uranium-transfer.md) 和 [真实客户端记录](../smoke/results/2026-09-25-prism-forge-client.md)。这些记录支持其明确写出的单机环境、软件版本和探针路径。已知也出现过真实 Forge 客户端转服候选后端登录停滞,见[调查记录](../smoke/results/2026-09-26-uranium-login-stalls.md);已有成功样例不构成稳定性或生产验收。 diff --git a/docs/player-operations.md b/docs/player-operations.md index 91cfadf..e5989fc 100644 --- a/docs/player-operations.md +++ b/docs/player-operations.md @@ -44,7 +44,7 @@ CompletionStage disconnect(PlayerIdentity player, String reaso ```yaml status: - motd: "StrataProxy" + motd: "MoonBridge" maxPlayers: 100 # icon: "server-icon.png" ``` diff --git a/docs/plugins.md b/docs/plugins.md index 39953f3..93a14f3 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -1,12 +1,12 @@ # 插件开发 -插件依赖 `proxy-plugin-api`,不依赖 `proxy-core` 或 Netty。入口实现 `dev.strataproxy.api.Plugin`,提供公开无参构造器,在 JAR 的 `META-INF/services/dev.strataproxy.api.Plugin` 中声明实现类,并由配置中的 `plugins.enabled` 显式启用。 +插件依赖 `proxy-plugin-api`,不依赖 `proxy-core` 或 Netty。入口实现 `dev.moonbridge.api.Plugin`,提供公开无参构造器,在 JAR 的 `META-INF/services/dev.moonbridge.api.Plugin` 中声明实现类,并由配置中的 `plugins.enabled` 显式启用。 ## 生命周期和线程 `onLoad(PluginContext)` 获得 `players()`、`servers()`、`commands()`、`events()`、SLF4J `logger()` 和不可变 `settings()`。宿主在所有插件加载后调用 `onEnable()`;插件全部启用成功后、监听器启动前冻结事件订阅。事件订阅只能在 `onLoad` 或 `onEnable` 注册,运行期间可以随时撤销。初始化失败会终止启动并回收已创建的注册。 -事件通过 `PluginContext.events()` 提供的 `dev.strataproxy.api.event.Events` 订阅。所有事件都使用同一 sealed `Event`、`EventListener` 和 `Events.subscribe` 方法;监听器返回 `CompletionStage`。无结果事件使用 `Event`,准入事件返回 `AccessDecision`。数据库客户端、缓存和外部任务的生命周期由插件管理;返回 `CompletionStage` 表达异步结果,避免在回调里 `join()` 等待另一个任务。各连接的准入检查可以并发,插件共享数据必须支持并发访问。 +事件通过 `PluginContext.events()` 提供的 `dev.moonbridge.api.event.Events` 订阅。所有事件都使用同一 sealed `Event`、`EventListener` 和 `Events.subscribe` 方法;监听器返回 `CompletionStage`。无结果事件使用 `Event`,准入事件返回 `AccessDecision`。数据库客户端、缓存和外部任务的生命周期由插件管理;返回 `CompletionStage` 表达异步结果,避免在回调里 `join()` 等待另一个任务。各连接的准入检查可以并发,插件共享数据必须支持并发访问。 关闭或插件失败时,宿主移除该插件的事件订阅、后端与命令注册。关闭时,宿主先终止未决访问请求并停止接收新回调,再逆序调用 `onDisable()`。所有关闭钩子共享 10 秒期限;插件忽略中断时仍可能继续运行,因此插件必须自行停止数据库/调度器等资源。随后关闭类加载器。当前没有插件热卸载或热加载入口。 @@ -70,7 +70,7 @@ context.commands().register("where", command -> { ## 统一类型化事件 -`PluginContext.events()` 返回 `dev.strataproxy.api.event.Events`。事件统一使用泛型结果和异步监听器: +`PluginContext.events()` 返回 `dev.moonbridge.api.event.Events`。事件统一使用泛型结果和异步监听器: ```java sealed interface Event {} @@ -133,6 +133,6 @@ context.events().subscribe(PlayerDisconnectedEvent.class, event -> 统一事件模型让准入决策和会话通知共享同一类型、监听器、订阅表与派发实现,同时保留各类事件所需的运行策略。准入阶段执行有序且失败关闭的结果聚合;生命周期通知异步 FIFO 尽力交付并与会话处理隔离。没有 PLAY 包事件。目前没有事件 API 的专门基准,不能据此宣称性能收益或无开销。 -源码入口:[`PluginContext`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/PluginContext.java)、[`Events`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/event/Events.java)、[`AccessDecision`](../proxy-plugin-api/src/main/java/dev/strataproxy/api/AccessDecision.java)。 +源码入口:[`PluginContext`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/PluginContext.java)、[`Events`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/event/Events.java)、[`AccessDecision`](../proxy-plugin-api/src/main/java/dev/moonbridge/api/AccessDecision.java)。 富文本构造、MiniMessage 和异步命令补全示例见[消息与命令补全](messages-and-completion.md)。 diff --git a/docs/testing.md b/docs/testing.md index 1493141..7657ab2 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -113,7 +113,7 @@ PR 的 `.gitea/workflows/verify.yml` 独立运行 `gradlew check`,不使用 Ma ## 后端宿主真实服务端验收 -`smoke/backend-uranium.ps1` 将已经接受 EULA 的 Uranium 发行包中的服务端 JAR、运行库和 EULA 复制到全新隔离目录,启动两个 Java 8 后端及实际 Java 25 Proxy。它安装 `StrataProxyBackend`、两个独立的 Bukkit 业务插件和一个外部 Proxy 验收插件,通过正式插件 API 检查注册与消息服务;不会复制或修改原有世界、模组、插件及凭据。 +`smoke/backend-uranium.ps1` 将已经接受 EULA 的 Uranium 发行包中的服务端 JAR、运行库和 EULA 复制到全新隔离目录,启动两个 Java 8 后端及实际 Java 25 Proxy。它安装 `MoonBridgeBackend`、两个独立的 Bukkit 业务插件和一个外部 Proxy 验收插件,通过正式插件 API 检查注册与消息服务;不会复制或修改原有世界、模组、插件及凭据。Bukkit 业务插件只使用发行包 `backend-api/` 中的 API JAR 和服务器 Bukkit API 编译,编译路径不包含宿主及传输 SDK,并在实际插件加载器下验证服务类身份一致。 ```powershell .\gradlew.bat check :proxy-core:installDist diff --git a/messaging-api/build.gradle.kts b/messaging-api/build.gradle.kts index 2904c17..2615fc0 100644 --- a/messaging-api/build.gradle.kts +++ b/messaging-api/build.gradle.kts @@ -33,7 +33,7 @@ publishing { from(components["java"]) artifactId = "messaging-api" pom { - name.set("StrataProxy Messaging API") + name.set("MoonBridge Messaging API") description.set("Java 8-compatible shared message envelope and channel API.") } } diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/Endpoint.java b/messaging-api/src/main/java/dev/moonbridge/messaging/Endpoint.java similarity index 97% rename from messaging-api/src/main/java/dev/strataproxy/messaging/Endpoint.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/Endpoint.java index a1a1ba5..7627115 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/Endpoint.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/Endpoint.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; import java.util.Objects; diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/Message.java b/messaging-api/src/main/java/dev/moonbridge/messaging/Message.java similarity index 99% rename from messaging-api/src/main/java/dev/strataproxy/messaging/Message.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/Message.java index 17db364..f8f7cfc 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/Message.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/Message.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; import java.nio.charset.StandardCharsets; import java.util.Objects; diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/MessageChannel.java b/messaging-api/src/main/java/dev/moonbridge/messaging/MessageChannel.java similarity index 98% rename from messaging-api/src/main/java/dev/strataproxy/messaging/MessageChannel.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/MessageChannel.java index 2dd57e3..71282ad 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/MessageChannel.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/MessageChannel.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; import java.time.Duration; import java.util.concurrent.CompletionStage; diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/MessageHandler.java b/messaging-api/src/main/java/dev/moonbridge/messaging/MessageHandler.java similarity index 92% rename from messaging-api/src/main/java/dev/strataproxy/messaging/MessageHandler.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/MessageHandler.java index e2647b9..f0f141a 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/MessageHandler.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/MessageHandler.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; import java.util.concurrent.CompletionStage; diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/MessageKind.java b/messaging-api/src/main/java/dev/moonbridge/messaging/MessageKind.java similarity index 80% rename from messaging-api/src/main/java/dev/strataproxy/messaging/MessageKind.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/MessageKind.java index 41ca0fc..b1661f5 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/MessageKind.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/MessageKind.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; /** Transport-level message semantics, independent of the application payload. */ public enum MessageKind { diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/Messaging.java b/messaging-api/src/main/java/dev/moonbridge/messaging/Messaging.java similarity index 93% rename from messaging-api/src/main/java/dev/strataproxy/messaging/Messaging.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/Messaging.java index 0ecc2b0..61d6dfc 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/Messaging.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/Messaging.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; /** * Messaging facade owned by one plugin scope. Closing the facade removes only this owner's subscriptions and diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/MessagingException.java b/messaging-api/src/main/java/dev/moonbridge/messaging/MessagingException.java similarity index 95% rename from messaging-api/src/main/java/dev/strataproxy/messaging/MessagingException.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/MessagingException.java index 06badd7..b9aab7c 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/MessagingException.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/MessagingException.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; /** A failure with a stable messaging-layer category. */ public class MessagingException extends RuntimeException { diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/PublishResult.java b/messaging-api/src/main/java/dev/moonbridge/messaging/PublishResult.java similarity index 96% rename from messaging-api/src/main/java/dev/strataproxy/messaging/PublishResult.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/PublishResult.java index f4997ca..c776d1c 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/PublishResult.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/PublishResult.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; import java.util.Collections; import java.util.LinkedHashMap; diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/SendReceipt.java b/messaging-api/src/main/java/dev/moonbridge/messaging/SendReceipt.java similarity index 93% rename from messaging-api/src/main/java/dev/strataproxy/messaging/SendReceipt.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/SendReceipt.java index f5fec97..24449bc 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/SendReceipt.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/SendReceipt.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; import java.util.Objects; import java.util.UUID; diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/SendResult.java b/messaging-api/src/main/java/dev/moonbridge/messaging/SendResult.java similarity index 96% rename from messaging-api/src/main/java/dev/strataproxy/messaging/SendResult.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/SendResult.java index bc9ba83..cef99dd 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/SendResult.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/SendResult.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; /** * Delivery status reported for one event destination. These are transport/queue observations, not proof diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/Subscription.java b/messaging-api/src/main/java/dev/moonbridge/messaging/Subscription.java similarity index 85% rename from messaging-api/src/main/java/dev/strataproxy/messaging/Subscription.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/Subscription.java index ff536ba..fe5591d 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/Subscription.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/Subscription.java @@ -1,4 +1,4 @@ -package dev.strataproxy.messaging; +package dev.moonbridge.messaging; /** Handle for one local listener or request handler. Closing it is idempotent and unregisters only this handle. */ public interface Subscription extends AutoCloseable { diff --git a/messaging-api/src/main/java/dev/strataproxy/messaging/internal/LocalMessaging.java b/messaging-api/src/main/java/dev/moonbridge/messaging/internal/LocalMessaging.java similarity index 98% rename from messaging-api/src/main/java/dev/strataproxy/messaging/internal/LocalMessaging.java rename to messaging-api/src/main/java/dev/moonbridge/messaging/internal/LocalMessaging.java index 92cdcc4..d3eb020 100644 --- a/messaging-api/src/main/java/dev/strataproxy/messaging/internal/LocalMessaging.java +++ b/messaging-api/src/main/java/dev/moonbridge/messaging/internal/LocalMessaging.java @@ -1,16 +1,16 @@ -package dev.strataproxy.messaging.internal; +package dev.moonbridge.messaging.internal; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageChannel; -import dev.strataproxy.messaging.MessageHandler; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.Messaging; -import dev.strataproxy.messaging.MessagingException; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendReceipt; -import dev.strataproxy.messaging.SendResult; -import dev.strataproxy.messaging.Subscription; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageChannel; +import dev.moonbridge.messaging.MessageHandler; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.Messaging; +import dev.moonbridge.messaging.MessagingException; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendReceipt; +import dev.moonbridge.messaging.SendResult; +import dev.moonbridge.messaging.Subscription; import java.time.Duration; import java.util.ArrayList; @@ -375,7 +375,7 @@ public final class LocalMessaging implements AutoCloseable { try { completionExecutor.execute(task); } catch (RejectedExecutionException rejected) { - Thread fallback = new Thread(task, "strataproxy-message-completion"); + Thread fallback = new Thread(task, "moonbridge-message-completion"); fallback.setDaemon(true); fallback.start(); } diff --git a/messaging-api/src/test/java/dev/strataproxy/messaging/internal/LocalMessagingTest.java b/messaging-api/src/test/java/dev/moonbridge/messaging/internal/LocalMessagingTest.java similarity index 97% rename from messaging-api/src/test/java/dev/strataproxy/messaging/internal/LocalMessagingTest.java rename to messaging-api/src/test/java/dev/moonbridge/messaging/internal/LocalMessagingTest.java index 5c4f26a..ce671b6 100644 --- a/messaging-api/src/test/java/dev/strataproxy/messaging/internal/LocalMessagingTest.java +++ b/messaging-api/src/test/java/dev/moonbridge/messaging/internal/LocalMessagingTest.java @@ -1,14 +1,14 @@ -package dev.strataproxy.messaging.internal; +package dev.moonbridge.messaging.internal; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.Messaging; -import dev.strataproxy.messaging.MessagingException; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; -import dev.strataproxy.messaging.SendReceipt; -import dev.strataproxy.messaging.Subscription; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.Messaging; +import dev.moonbridge.messaging.MessagingException; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; +import dev.moonbridge.messaging.SendReceipt; +import dev.moonbridge.messaging.Subscription; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; diff --git a/messaging-protocol/build.gradle.kts b/messaging-protocol/build.gradle.kts index a16a6f3..fd93f58 100644 --- a/messaging-protocol/build.gradle.kts +++ b/messaging-protocol/build.gradle.kts @@ -34,7 +34,7 @@ publishing { from(components["java"]) artifactId = "messaging-protocol" pom { - name.set("StrataProxy Messaging Protocol") + name.set("MoonBridge Messaging Protocol") description.set("Java 8-compatible message wire codec shared by proxy and backend clients.") } } diff --git a/messaging-protocol/src/main/java/dev/strataproxy/messaging/protocol/MessageCodec.java b/messaging-protocol/src/main/java/dev/moonbridge/messaging/protocol/MessageCodec.java similarity index 98% rename from messaging-protocol/src/main/java/dev/strataproxy/messaging/protocol/MessageCodec.java rename to messaging-protocol/src/main/java/dev/moonbridge/messaging/protocol/MessageCodec.java index ac8e7c8..8c82724 100644 --- a/messaging-protocol/src/main/java/dev/strataproxy/messaging/protocol/MessageCodec.java +++ b/messaging-protocol/src/main/java/dev/moonbridge/messaging/protocol/MessageCodec.java @@ -1,11 +1,11 @@ -package dev.strataproxy.messaging.protocol; +package dev.moonbridge.messaging.protocol; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.MessagingException; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.MessagingException; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/messaging-protocol/src/test/java/dev/strataproxy/messaging/protocol/MessageCodecTest.java b/messaging-protocol/src/test/java/dev/moonbridge/messaging/protocol/MessageCodecTest.java similarity index 95% rename from messaging-protocol/src/test/java/dev/strataproxy/messaging/protocol/MessageCodecTest.java rename to messaging-protocol/src/test/java/dev/moonbridge/messaging/protocol/MessageCodecTest.java index e6da2fe..d3ab5e3 100644 --- a/messaging-protocol/src/test/java/dev/strataproxy/messaging/protocol/MessageCodecTest.java +++ b/messaging-protocol/src/test/java/dev/moonbridge/messaging/protocol/MessageCodecTest.java @@ -1,10 +1,10 @@ -package dev.strataproxy.messaging.protocol; +package dev.moonbridge.messaging.protocol; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; diff --git a/proxy-build-logic/build.gradle.kts b/proxy-build-logic/build.gradle.kts index 52ebebc..dd9cd49 100644 --- a/proxy-build-logic/build.gradle.kts +++ b/proxy-build-logic/build.gradle.kts @@ -5,12 +5,12 @@ plugins { gradlePlugin { plugins { register("javaLibraryConventions") { - id = "strataproxy.java-library-conventions" - implementationClass = "StrataProxyJavaLibraryConventionsPlugin" + id = "moonbridge.java-library-conventions" + implementationClass = "MoonBridgeJavaLibraryConventionsPlugin" } register("applicationConventions") { - id = "strataproxy.application-conventions" - implementationClass = "StrataProxyApplicationConventionsPlugin" + id = "moonbridge.application-conventions" + implementationClass = "MoonBridgeApplicationConventionsPlugin" } } } diff --git a/proxy-build-logic/src/main/kotlin/StrataProxyApplicationConventionsPlugin.kt b/proxy-build-logic/src/main/kotlin/MoonBridgeApplicationConventionsPlugin.kt similarity index 59% rename from proxy-build-logic/src/main/kotlin/StrataProxyApplicationConventionsPlugin.kt rename to proxy-build-logic/src/main/kotlin/MoonBridgeApplicationConventionsPlugin.kt index 0b6aba5..9f461ba 100644 --- a/proxy-build-logic/src/main/kotlin/StrataProxyApplicationConventionsPlugin.kt +++ b/proxy-build-logic/src/main/kotlin/MoonBridgeApplicationConventionsPlugin.kt @@ -2,9 +2,9 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.ApplicationPlugin -class StrataProxyApplicationConventionsPlugin : Plugin { +class MoonBridgeApplicationConventionsPlugin : Plugin { override fun apply(project: Project) { - project.plugins.apply(StrataProxyJavaLibraryConventionsPlugin::class.java) + project.plugins.apply(MoonBridgeJavaLibraryConventionsPlugin::class.java) project.plugins.apply(ApplicationPlugin::class.java) } } diff --git a/proxy-build-logic/src/main/kotlin/StrataProxyJavaLibraryConventionsPlugin.kt b/proxy-build-logic/src/main/kotlin/MoonBridgeJavaLibraryConventionsPlugin.kt similarity index 94% rename from proxy-build-logic/src/main/kotlin/StrataProxyJavaLibraryConventionsPlugin.kt rename to proxy-build-logic/src/main/kotlin/MoonBridgeJavaLibraryConventionsPlugin.kt index a910090..6f3fc1c 100644 --- a/proxy-build-logic/src/main/kotlin/StrataProxyJavaLibraryConventionsPlugin.kt +++ b/proxy-build-logic/src/main/kotlin/MoonBridgeJavaLibraryConventionsPlugin.kt @@ -8,7 +8,7 @@ import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.withType import org.gradle.api.plugins.JavaPluginExtension -class StrataProxyJavaLibraryConventionsPlugin : Plugin { +class MoonBridgeJavaLibraryConventionsPlugin : Plugin { override fun apply(project: Project) { project.plugins.apply(JavaLibraryPlugin::class.java) diff --git a/proxy-core/build.gradle.kts b/proxy-core/build.gradle.kts index 7c5b87c..73a5baa 100644 --- a/proxy-core/build.gradle.kts +++ b/proxy-core/build.gradle.kts @@ -1,7 +1,7 @@ import org.gradle.api.tasks.Exec plugins { - id("strataproxy.application-conventions") + id("moonbridge.application-conventions") } val runtimeJavaHome = System.getProperty("java.home") @@ -26,49 +26,49 @@ dependencies { val installedDistSmokeTest = tasks.register("installedDistSmokeTest") { group = "verification" - description = "Runs the installed StrataProxy distribution in --validate-config mode." + description = "Runs the installed MoonBridge distribution in --validate-config mode." dependsOn(tasks.named("installDist")) - val installDir = layout.buildDirectory.dir("install/strataproxy") + val installDir = layout.buildDirectory.dir("install/moonbridge") inputs.dir(installDir) environment("JAVA_HOME", runtimeJavaHome) doFirst { val windows = System.getProperty("os.name").lowercase().contains("windows") - val script = installDir.get().file("bin/" + if (windows) "strataproxy.bat" else "strataproxy").asFile - val config = installDir.get().file("config/strataproxy.yml").asFile + val script = installDir.get().file("bin/" + if (windows) "moonbridge.bat" else "moonbridge").asFile + val config = installDir.get().file("config/moonbridge.yml").asFile commandLine(script.absolutePath, "--validate-config", config.absolutePath) } } val installedDistHelpSmokeTest = tasks.register("installedDistHelpSmokeTest") { group = "verification" - description = "Runs the installed StrataProxy distribution help command." + description = "Runs the installed MoonBridge distribution help command." dependsOn(tasks.named("installDist")) - val installDir = layout.buildDirectory.dir("install/strataproxy") + val installDir = layout.buildDirectory.dir("install/moonbridge") inputs.dir(installDir) environment("JAVA_HOME", runtimeJavaHome) doFirst { val windows = System.getProperty("os.name").lowercase().contains("windows") - val script = installDir.get().file("bin/" + if (windows) "strataproxy.bat" else "strataproxy").asFile + val script = installDir.get().file("bin/" + if (windows) "moonbridge.bat" else "moonbridge").asFile commandLine(script.absolutePath, "--help") } } val installedDistVersionSmokeTest = tasks.register("installedDistVersionSmokeTest") { group = "verification" - description = "Runs the installed StrataProxy distribution version command." + description = "Runs the installed MoonBridge distribution version command." dependsOn(tasks.named("installDist")) - val installDir = layout.buildDirectory.dir("install/strataproxy") + val installDir = layout.buildDirectory.dir("install/moonbridge") inputs.dir(installDir) environment("JAVA_HOME", runtimeJavaHome) doFirst { val windows = System.getProperty("os.name").lowercase().contains("windows") - val script = installDir.get().file("bin/" + if (windows) "strataproxy.bat" else "strataproxy").asFile + val script = installDir.get().file("bin/" + if (windows) "moonbridge.bat" else "moonbridge").asFile commandLine(script.absolutePath, "--version") } } @@ -80,8 +80,8 @@ tasks.named("check") { } application { - mainClass.set("dev.strataproxy.app.ProxyMain") - applicationName = "strataproxy" + mainClass.set("dev.moonbridge.app.ProxyMain") + applicationName = "moonbridge" } distributions { @@ -102,6 +102,10 @@ distributions { from(project(":backend-bukkit").tasks.named("jar")) { into("backend-host") } + from(listOf(project(":backend-bukkit-api").tasks.named("jar"), + project(":messaging-api").tasks.named("jar"))) { + into("backend-api") + } } } } diff --git a/proxy-core/src/main/java/dev/strataproxy/app/ProxyConfiguration.java b/proxy-core/src/main/java/dev/moonbridge/app/ProxyConfiguration.java similarity index 99% rename from proxy-core/src/main/java/dev/strataproxy/app/ProxyConfiguration.java rename to proxy-core/src/main/java/dev/moonbridge/app/ProxyConfiguration.java index ebdae6e..b57055d 100644 --- a/proxy-core/src/main/java/dev/strataproxy/app/ProxyConfiguration.java +++ b/proxy-core/src/main/java/dev/moonbridge/app/ProxyConfiguration.java @@ -1,4 +1,4 @@ -package dev.strataproxy.app; +package dev.moonbridge.app; import io.netty.util.NetUtil; import java.net.InetAddress; @@ -54,7 +54,7 @@ public record ProxyConfiguration(String listen, Authentication authentication, L /** User-facing server list values; icon validation needs the config file location and happens in the loader. */ public record Status(String motd, Integer maxPlayers, String icon) { public Status { - motd = motd == null ? "StrataProxy" : motd; + motd = motd == null ? "MoonBridge" : motd; if (motd.codePointCount(0, motd.length()) > 1024) { throw new IllegalArgumentException("status.motd must contain at most 1024 Unicode code points"); } diff --git a/proxy-core/src/main/java/dev/strataproxy/app/ProxyConfigurationLoader.java b/proxy-core/src/main/java/dev/moonbridge/app/ProxyConfigurationLoader.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/app/ProxyConfigurationLoader.java rename to proxy-core/src/main/java/dev/moonbridge/app/ProxyConfigurationLoader.java index 28a8e4c..9c67284 100644 --- a/proxy-core/src/main/java/dev/strataproxy/app/ProxyConfigurationLoader.java +++ b/proxy-core/src/main/java/dev/moonbridge/app/ProxyConfigurationLoader.java @@ -1,9 +1,9 @@ -package dev.strataproxy.app; +package dev.moonbridge.app; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import dev.strataproxy.core.protocol.ServerListStatus; +import dev.moonbridge.core.protocol.ServerListStatus; import javax.imageio.ImageIO; import java.io.ByteArrayInputStream; diff --git a/proxy-core/src/main/java/dev/strataproxy/app/ProxyMain.java b/proxy-core/src/main/java/dev/moonbridge/app/ProxyMain.java similarity index 88% rename from proxy-core/src/main/java/dev/strataproxy/app/ProxyMain.java rename to proxy-core/src/main/java/dev/moonbridge/app/ProxyMain.java index e5570ad..2b8bb47 100644 --- a/proxy-core/src/main/java/dev/strataproxy/app/ProxyMain.java +++ b/proxy-core/src/main/java/dev/moonbridge/app/ProxyMain.java @@ -1,10 +1,10 @@ -package dev.strataproxy.app; +package dev.moonbridge.app; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.core.control.BackendControlService; -import dev.strataproxy.core.auth.MojangSessionVerifier; -import dev.strataproxy.core.plugin.PluginHost; -import dev.strataproxy.core.session.ProxySessionListener; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.core.control.BackendControlService; +import dev.moonbridge.core.auth.MojangSessionVerifier; +import dev.moonbridge.core.plugin.PluginHost; +import dev.moonbridge.core.session.ProxySessionListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,12 +28,12 @@ public final class ProxyMain { static int run(String[] arguments) { try { if (arguments.length == 1 && arguments[0].equals("--help")) { - System.out.println("Usage: strataproxy [--config ] | --validate-config | --version"); + System.out.println("Usage: moonbridge [--config ] | --validate-config | --version"); return 0; } if (arguments.length == 1 && arguments[0].equals("--version")) { String version = ProxyMain.class.getPackage().getImplementationVersion(); - System.out.println("StrataProxy " + (version == null ? "development" : version)); + System.out.println("MoonBridge " + (version == null ? "development" : version)); return 0; } if (arguments.length == 2 && arguments[0].equals("--validate-config")) { @@ -48,7 +48,7 @@ public final class ProxyMain { } Path configPath; if (arguments.length == 0) { - configPath = Path.of("config", "strataproxy.yml"); + configPath = Path.of("config", "moonbridge.yml"); } else if (arguments.length == 2 && arguments[0].equals("--config")) { configPath = Path.of(arguments[1]); } else { @@ -58,7 +58,7 @@ public final class ProxyMain { runProxy(configPath); return 0; } catch (Exception failure) { - LOGGER.error("StrataProxy failed", failure); + LOGGER.error("MoonBridge failed", failure); return 1; } } @@ -73,7 +73,7 @@ public final class ProxyMain { Duration eventTimeout = Duration.ofSeconds(configuration.plugins().eventTimeoutSeconds()); ExecutorService verifierWorkers = configuration.authentication() == ProxyConfiguration.Authentication.ONLINE_BUNGEE ? Executors.newFixedThreadPool(2, task -> { - Thread thread = new Thread(task, "strataproxy-session-verify"); + Thread thread = new Thread(task, "moonbridge-session-verify"); thread.setDaemon(true); return thread; }) : null; @@ -109,7 +109,7 @@ public final class ProxyMain { finally { if (verifierWorkers != null) verifierWorkers.shutdownNow(); } } } - }, "strataproxy-shutdown"); + }, "moonbridge-shutdown"); Runtime.getRuntime().addShutdownHook(shutdown); try { serverChannel.closeFuture().sync(); diff --git a/proxy-core/src/main/java/dev/strataproxy/app/StaticBackends.java b/proxy-core/src/main/java/dev/moonbridge/app/StaticBackends.java similarity index 78% rename from proxy-core/src/main/java/dev/strataproxy/app/StaticBackends.java rename to proxy-core/src/main/java/dev/moonbridge/app/StaticBackends.java index 7ef3043..92daf59 100644 --- a/proxy-core/src/main/java/dev/strataproxy/app/StaticBackends.java +++ b/proxy-core/src/main/java/dev/moonbridge/app/StaticBackends.java @@ -1,9 +1,9 @@ -package dev.strataproxy.app; +package dev.moonbridge.app; -import dev.strataproxy.core.backend.BackendCatalog; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.BackendCatalog; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; import java.net.URI; import java.util.Objects; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/AuthenticatedEncryption.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/AuthenticatedEncryption.java similarity index 94% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/AuthenticatedEncryption.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/AuthenticatedEncryption.java index 342ada0..3932ef2 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/AuthenticatedEncryption.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/AuthenticatedEncryption.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import java.util.Arrays; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/CipherBufferTransform.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/CipherBufferTransform.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/CipherBufferTransform.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/CipherBufferTransform.java index a122cfa..b71858d 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/CipherBufferTransform.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/CipherBufferTransform.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftCipherDecoder.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftCipherDecoder.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftCipherDecoder.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftCipherDecoder.java index 19b9eca..2ddf773 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftCipherDecoder.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftCipherDecoder.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftCipherEncoder.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftCipherEncoder.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftCipherEncoder.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftCipherEncoder.java index a57f919..35fe965 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftCipherEncoder.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftCipherEncoder.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftEncryptionRequest.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftEncryptionRequest.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftEncryptionRequest.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftEncryptionRequest.java index c71ffa3..98334cf 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftEncryptionRequest.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftEncryptionRequest.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; -import dev.strataproxy.core.protocol.ProtocolException; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.ProtocolException; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import java.nio.charset.StandardCharsets; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftEncryptionResponse.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftEncryptionResponse.java similarity index 93% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftEncryptionResponse.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftEncryptionResponse.java index 04b0dcc..3ecaef6 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/MinecraftEncryptionResponse.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/MinecraftEncryptionResponse.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; -import dev.strataproxy.core.protocol.ProtocolException; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.ProtocolException; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/MojangSessionVerifier.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/MojangSessionVerifier.java similarity index 99% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/MojangSessionVerifier.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/MojangSessionVerifier.java index 3e3fc3d..3256666 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/MojangSessionVerifier.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/MojangSessionVerifier.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/OnlineModeCrypto.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/OnlineModeCrypto.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/OnlineModeCrypto.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/OnlineModeCrypto.java index 09ff067..85a9096 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/OnlineModeCrypto.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/OnlineModeCrypto.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import java.math.BigInteger; import java.nio.charset.StandardCharsets; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/ProfileProperty.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/ProfileProperty.java similarity index 95% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/ProfileProperty.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/ProfileProperty.java index 59d63fe..6b97d27 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/ProfileProperty.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/ProfileProperty.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; /** A bounded property returned by the session server, with optional Mojang signature. */ public record ProfileProperty(String name, String value, String signature) { diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/SessionVerifier.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/SessionVerifier.java similarity index 95% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/SessionVerifier.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/SessionVerifier.java index 3538895..ba414ff 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/SessionVerifier.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/SessionVerifier.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import java.util.Optional; import java.util.concurrent.CompletionStage; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/auth/VerifiedProfile.java b/proxy-core/src/main/java/dev/moonbridge/core/auth/VerifiedProfile.java similarity index 94% rename from proxy-core/src/main/java/dev/strataproxy/core/auth/VerifiedProfile.java rename to proxy-core/src/main/java/dev/moonbridge/core/auth/VerifiedProfile.java index c7795dd..b3c615d 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/auth/VerifiedProfile.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/auth/VerifiedProfile.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import java.util.UUID; import java.util.List; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendCatalog.java b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendCatalog.java similarity index 92% rename from proxy-core/src/main/java/dev/strataproxy/core/backend/BackendCatalog.java rename to proxy-core/src/main/java/dev/moonbridge/core/backend/BackendCatalog.java index f0c764e..816f24d 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendCatalog.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendCatalog.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import java.util.List; import java.util.Optional; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendHandle.java b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendHandle.java similarity index 90% rename from proxy-core/src/main/java/dev/strataproxy/core/backend/BackendHandle.java rename to proxy-core/src/main/java/dev/moonbridge/core/backend/BackendHandle.java index 577ea8e..b2c5d3e 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendHandle.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendHandle.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import java.util.Objects; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendId.java b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendId.java similarity index 89% rename from proxy-core/src/main/java/dev/strataproxy/core/backend/BackendId.java rename to proxy-core/src/main/java/dev/moonbridge/core/backend/BackendId.java index a8f7080..2727d87 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendId.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendId.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import java.util.Objects; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendOwner.java b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendOwner.java similarity index 92% rename from proxy-core/src/main/java/dev/strataproxy/core/backend/BackendOwner.java rename to proxy-core/src/main/java/dev/moonbridge/core/backend/BackendOwner.java index b372dee..079e544 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendOwner.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendOwner.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import java.util.Objects; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendRegistration.java b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendRegistration.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/backend/BackendRegistration.java rename to proxy-core/src/main/java/dev/moonbridge/core/backend/BackendRegistration.java index 1019ebe..2be570e 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendRegistration.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendRegistration.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import java.net.URI; import java.util.Map; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendView.java b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendView.java similarity index 94% rename from proxy-core/src/main/java/dev/strataproxy/core/backend/BackendView.java rename to proxy-core/src/main/java/dev/moonbridge/core/backend/BackendView.java index d8c3953..17c38ba 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/backend/BackendView.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/backend/BackendView.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import java.net.URI; import java.util.Objects; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/backend/InMemoryBackendCatalog.java b/proxy-core/src/main/java/dev/moonbridge/core/backend/InMemoryBackendCatalog.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/backend/InMemoryBackendCatalog.java rename to proxy-core/src/main/java/dev/moonbridge/core/backend/InMemoryBackendCatalog.java index 9d2eb31..02ced2a 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/backend/InMemoryBackendCatalog.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/backend/InMemoryBackendCatalog.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/control/BackendChannelTransport.java b/proxy-core/src/main/java/dev/moonbridge/core/control/BackendChannelTransport.java similarity index 68% rename from proxy-core/src/main/java/dev/strataproxy/core/control/BackendChannelTransport.java rename to proxy-core/src/main/java/dev/moonbridge/core/control/BackendChannelTransport.java index d1e719c..e2c6d3a 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/control/BackendChannelTransport.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/control/BackendChannelTransport.java @@ -1,8 +1,8 @@ -package dev.strataproxy.core.control; +package dev.moonbridge.core.control; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; import java.time.Duration; import java.util.concurrent.CompletionStage; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/control/BackendControlService.java b/proxy-core/src/main/java/dev/moonbridge/core/control/BackendControlService.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/control/BackendControlService.java rename to proxy-core/src/main/java/dev/moonbridge/core/control/BackendControlService.java index 29f6576..92ca144 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/control/BackendControlService.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/control/BackendControlService.java @@ -1,19 +1,19 @@ -package dev.strataproxy.core.control; +package dev.moonbridge.core.control; -import dev.strataproxy.app.ProxyConfiguration; -import dev.strataproxy.core.backend.BackendCatalog; -import dev.strataproxy.core.backend.BackendHandle; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.MessagingException; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; -import dev.strataproxy.messaging.internal.LocalMessaging; -import dev.strataproxy.messaging.protocol.MessageCodec; +import dev.moonbridge.app.ProxyConfiguration; +import dev.moonbridge.core.backend.BackendCatalog; +import dev.moonbridge.core.backend.BackendHandle; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.MessagingException; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; +import dev.moonbridge.messaging.internal.LocalMessaging; +import dev.moonbridge.messaging.protocol.MessageCodec; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -78,13 +78,13 @@ public final class BackendControlService implements BackendChannelTransport, Aut private final Map byBackend = new HashMap<>(); private final Semaphore connectionSlots; private final ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor( - Thread.ofVirtual().name("strataproxy-control-timer", 0).factory()); + Thread.ofVirtual().name("moonbridge-control-timer", 0).factory()); private final SecureRandom random = new SecureRandom(); private final AtomicLong nextEpoch = new AtomicLong(); private final AtomicLong globalQueuedBytes = new AtomicLong(); private final Semaphore writeTasks = new Semaphore(MAX_WRITE_TASKS); private final ThreadPoolExecutor routingWorkers = new ThreadPoolExecutor(2, 2, 0L, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>(512), namedFactory("strataproxy-control-routing"), + new ArrayBlockingQueue<>(512), namedFactory("moonbridge-control-routing"), new ThreadPoolExecutor.AbortPolicy()); private volatile boolean closed; private ServerSocket listener; @@ -104,7 +104,7 @@ public final class BackendControlService implements BackendChannelTransport, Aut server.bind(configuration.listenAddress(), 32); listener = server; timer.scheduleAtFixedRate(this::expireLeases, 1, 1, TimeUnit.SECONDS); - Thread.ofVirtual().name("strataproxy-control-accept").start(this::acceptLoop); + Thread.ofVirtual().name("moonbridge-control-accept").start(this::acceptLoop); LOGGER.info("Backend control listening on {}", server.getLocalSocketAddress()); } catch (RuntimeException | IOException failure) { server.close(); @@ -125,7 +125,7 @@ public final class BackendControlService implements BackendChannelTransport, Aut socket.close(); continue; } - Thread.ofVirtual().name("strataproxy-control-peer").start(() -> { + Thread.ofVirtual().name("moonbridge-control-peer").start(() -> { try { serve(socket); } finally { connectionSlots.release(); } }); @@ -562,7 +562,7 @@ public final class BackendControlService implements BackendChannelTransport, Aut operationTimeout.cancel(false); connection.requestSlots.release(); }); - Thread.ofVirtual().name("strataproxy-control-write").start(() -> { + Thread.ofVirtual().name("moonbridge-control-write").start(() -> { try { boolean written = connection.writeFrame(() -> { long remainingNanos = deadline - System.nanoTime(); @@ -635,7 +635,7 @@ public final class BackendControlService implements BackendChannelTransport, Aut AtomicBoolean writeStarted = new AtomicBoolean(); java.util.concurrent.atomic.AtomicReference> flushTimeout = new java.util.concurrent.atomic.AtomicReference<>(); - Thread.ofVirtual().name("strataproxy-control-write").start(() -> { + Thread.ofVirtual().name("moonbridge-control-write").start(() -> { try { connection.writeFrame(() -> { if (deadline - System.nanoTime() <= 0) return null; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/event/EventDispatcher.java b/proxy-core/src/main/java/dev/moonbridge/core/event/EventDispatcher.java similarity index 78% rename from proxy-core/src/main/java/dev/strataproxy/core/event/EventDispatcher.java rename to proxy-core/src/main/java/dev/moonbridge/core/event/EventDispatcher.java index 6de9f07..1581fb8 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/event/EventDispatcher.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/event/EventDispatcher.java @@ -1,6 +1,6 @@ -package dev.strataproxy.core.event; +package dev.moonbridge.core.event; -import dev.strataproxy.api.event.Event; +import dev.moonbridge.api.event.Event; import java.util.concurrent.CompletionStage; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/forwarding/BungeeLegacyForwarding.java b/proxy-core/src/main/java/dev/moonbridge/core/forwarding/BungeeLegacyForwarding.java similarity index 93% rename from proxy-core/src/main/java/dev/strataproxy/core/forwarding/BungeeLegacyForwarding.java rename to proxy-core/src/main/java/dev/moonbridge/core/forwarding/BungeeLegacyForwarding.java index 7f3d494..a5c0a69 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/forwarding/BungeeLegacyForwarding.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/forwarding/BungeeLegacyForwarding.java @@ -1,13 +1,13 @@ -package dev.strataproxy.core.forwarding; +package dev.moonbridge.core.forwarding; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; -import dev.strataproxy.core.auth.ProfileProperty; -import dev.strataproxy.core.auth.VerifiedProfile; -import dev.strataproxy.core.protocol.MinecraftHandshake; -import dev.strataproxy.core.protocol.ProtocolProfile; +import dev.moonbridge.core.auth.ProfileProperty; +import dev.moonbridge.core.auth.VerifiedProfile; +import dev.moonbridge.core.protocol.MinecraftHandshake; +import dev.moonbridge.core.protocol.ProtocolProfile; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/plugin/AsyncEventDispatcher.java b/proxy-core/src/main/java/dev/moonbridge/core/plugin/AsyncEventDispatcher.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/plugin/AsyncEventDispatcher.java rename to proxy-core/src/main/java/dev/moonbridge/core/plugin/AsyncEventDispatcher.java index c9c5174..0008f38 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/plugin/AsyncEventDispatcher.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/plugin/AsyncEventDispatcher.java @@ -1,6 +1,6 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; -import dev.strataproxy.api.event.Event; +import dev.moonbridge.api.event.Event; import java.time.Duration; import java.util.ArrayDeque; @@ -28,7 +28,7 @@ import java.util.function.Supplier; /** Runs typed listener chains with bounded work and no plugin callbacks on the publisher thread. */ final class AsyncEventDispatcher implements AutoCloseable { private static final ThreadFactory CANCELLATIONS = Thread.ofVirtual() - .name("strataproxy-plugin-event-cancel-", 0).factory(); + .name("moonbridge-plugin-event-cancel-", 0).factory(); private final Duration timeout; private final ThreadPoolExecutor workers; private final ScheduledExecutorService timer; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PlacementTimeoutException.java b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PlacementTimeoutException.java similarity index 89% rename from proxy-core/src/main/java/dev/strataproxy/core/plugin/PlacementTimeoutException.java rename to proxy-core/src/main/java/dev/moonbridge/core/plugin/PlacementTimeoutException.java index 0589362..99deac6 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PlacementTimeoutException.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PlacementTimeoutException.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; import java.time.Duration; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginHost.java b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginHost.java similarity index 95% rename from proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginHost.java rename to proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginHost.java index 20046a1..efa8ed1 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginHost.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginHost.java @@ -1,50 +1,50 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.MessageResult; -import dev.strataproxy.api.DisconnectResult; -import dev.strataproxy.api.event.ConnectionAdmissionEvent; -import dev.strataproxy.api.event.Event; -import dev.strataproxy.api.event.EventListener; -import dev.strataproxy.api.event.EventSubscription; -import dev.strataproxy.api.event.Events; -import dev.strataproxy.api.event.PlayerAdmissionEvent; -import dev.strataproxy.api.event.PlayerDisconnectedEvent; -import dev.strataproxy.api.event.ServerConnectedEvent; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.Messaging; -import dev.strataproxy.messaging.MessagingException; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; -import dev.strataproxy.messaging.internal.LocalMessaging; -import dev.strataproxy.api.InitialPlacementHandler; -import dev.strataproxy.api.CommandHandler; -import dev.strataproxy.api.CommandCompleter; -import dev.strataproxy.api.CommandCompletion; -import dev.strataproxy.api.CommandInvocation; -import dev.strataproxy.api.CommandRegistration; -import dev.strataproxy.api.Commands; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.Players; -import dev.strataproxy.api.Plugin; -import dev.strataproxy.api.PluginContext; -import dev.strataproxy.api.ServerDefinition; -import dev.strataproxy.api.ServerRegistration; -import dev.strataproxy.api.ServerView; -import dev.strataproxy.api.Servers; -import dev.strataproxy.api.TransferResult; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.MessageResult; +import dev.moonbridge.api.DisconnectResult; +import dev.moonbridge.api.event.ConnectionAdmissionEvent; +import dev.moonbridge.api.event.Event; +import dev.moonbridge.api.event.EventListener; +import dev.moonbridge.api.event.EventSubscription; +import dev.moonbridge.api.event.Events; +import dev.moonbridge.api.event.PlayerAdmissionEvent; +import dev.moonbridge.api.event.PlayerDisconnectedEvent; +import dev.moonbridge.api.event.ServerConnectedEvent; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.Messaging; +import dev.moonbridge.messaging.MessagingException; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; +import dev.moonbridge.messaging.internal.LocalMessaging; +import dev.moonbridge.api.InitialPlacementHandler; +import dev.moonbridge.api.CommandHandler; +import dev.moonbridge.api.CommandCompleter; +import dev.moonbridge.api.CommandCompletion; +import dev.moonbridge.api.CommandInvocation; +import dev.moonbridge.api.CommandRegistration; +import dev.moonbridge.api.Commands; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.Players; +import dev.moonbridge.api.Plugin; +import dev.moonbridge.api.PluginContext; +import dev.moonbridge.api.ServerDefinition; +import dev.moonbridge.api.ServerRegistration; +import dev.moonbridge.api.ServerView; +import dev.moonbridge.api.Servers; +import dev.moonbridge.api.TransferResult; import net.kyori.adventure.text.Component; -import dev.strataproxy.core.backend.BackendCatalog; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; -import dev.strataproxy.core.backend.BackendView; -import dev.strataproxy.core.control.BackendChannelTransport; -import dev.strataproxy.core.event.EventDispatcher; +import dev.moonbridge.core.backend.BackendCatalog; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.BackendView; +import dev.moonbridge.core.control.BackendChannelTransport; +import dev.moonbridge.core.event.EventDispatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -100,7 +100,7 @@ public final class PluginHost implements AutoCloseable, EventDispatcher { private static final int MAX_COMPLETION_CANDIDATES_SCANNED = 4096; private static final Duration COMMAND_COMPLETION_TIMEOUT = Duration.ofSeconds(1); private static final ThreadFactory PLAYER_COMPLETION_THREADS = Thread.ofVirtual() - .name("strataproxy-plugin-player-", 0).factory(); + .name("moonbridge-plugin-player-", 0).factory(); private static final Executor PLAYER_COMPLETIONS = task -> PLAYER_COMPLETION_THREADS.newThread(task).start(); private final BackendCatalog catalog; private final Players players; @@ -176,15 +176,15 @@ public final class PluginHost implements AutoCloseable, EventDispatcher { throw new IllegalArgumentException("callback executor sizes must be positive"); } this.callbacks = new ThreadPoolExecutor(callbackThreads, callbackThreads, 0, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>(callbackQueueCapacity), namedThreads("strataproxy-plugin-callback"), + new ArrayBlockingQueue<>(callbackQueueCapacity), namedThreads("moonbridge-plugin-callback"), new ThreadPoolExecutor.AbortPolicy()); this.commandWorkers = new ThreadPoolExecutor(callbackThreads, callbackThreads, 0, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>(callbackQueueCapacity), namedThreads("strataproxy-plugin-command"), + new ArrayBlockingQueue<>(callbackQueueCapacity), namedThreads("moonbridge-plugin-command"), new ThreadPoolExecutor.AbortPolicy()); this.backendWorkers = new ThreadPoolExecutor(2, 2, 0, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>(128), namedThreads("strataproxy-plugin-backend"), + new ArrayBlockingQueue<>(128), namedThreads("moonbridge-plugin-backend"), new ThreadPoolExecutor.AbortPolicy()); - this.timer = new ScheduledThreadPoolExecutor(1, namedThreads("strataproxy-plugin-timeout")); + this.timer = new ScheduledThreadPoolExecutor(1, namedThreads("moonbridge-plugin-timeout")); this.timer.setRemoveOnCancelPolicy(true); this.admissionPolicy = new AsyncEventDispatcher.EventPolicy<>(AccessDecision::allow, decision -> decision instanceof AccessDecision.Allowed || decision instanceof AccessDecision.Denied, @@ -194,9 +194,9 @@ public final class PluginHost implements AutoCloseable, EventDispatcher { ignored -> false, true, (event, failure) -> LOGGER.warn("Plugin event listener failed for {}", event.getClass().getName(), failure), 129, true); this.admissionEvents = new AsyncEventDispatcher(eventTimeout, accessThreads, accessQueueCapacity, - timer, namedThreads("strataproxy-plugin-admission")); + timer, namedThreads("moonbridge-plugin-admission")); this.notificationEvents = new AsyncEventDispatcher(eventTimeout, 1, 128, - timer, namedThreads("strataproxy-plugin-notification")); + timer, namedThreads("moonbridge-plugin-notification")); this.localMessaging = new LocalMessaging(Endpoint.proxy(), new HostMessagingOutbound(), backendWorkers, timer); } @@ -709,7 +709,7 @@ public final class PluginHost implements AutoCloseable, EventDispatcher { loaded.plugin.onDisable(); return null; }); - Thread.ofVirtual().name("strataproxy-plugin-disable-" + loaded.owner.id()).start(stop); + Thread.ofVirtual().name("moonbridge-plugin-disable-" + loaded.owner.id()).start(stop); try { stop.get(remaining, TimeUnit.NANOSECONDS); } catch (TimeoutException timeout) { @@ -1166,10 +1166,10 @@ public final class PluginHost implements AutoCloseable, EventDispatcher { } private final class PluginServerRegistration implements ServerRegistration { - private final dev.strataproxy.core.backend.BackendHandle handle; + private final dev.moonbridge.core.backend.BackendHandle handle; private boolean active = true; - private PluginServerRegistration(dev.strataproxy.core.backend.BackendHandle handle) { + private PluginServerRegistration(dev.moonbridge.core.backend.BackendHandle handle) { this.handle = handle; } diff --git a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginLoadException.java b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginLoadException.java similarity index 88% rename from proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginLoadException.java rename to proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginLoadException.java index 8679a2f..369aea6 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginLoadException.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginLoadException.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; /** Indicates a plugin failed while receiving its initial context. */ public final class PluginLoadException extends RuntimeException { diff --git a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginOverloadedException.java b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginOverloadedException.java similarity index 87% rename from proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginOverloadedException.java rename to proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginOverloadedException.java index 9a07cec..423cd98 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/plugin/PluginOverloadedException.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/plugin/PluginOverloadedException.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; /** Indicates the bounded plugin callback executor is full. */ public final class PluginOverloadedException extends RuntimeException { diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/LoginStart.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/LoginStart.java similarity index 96% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/LoginStart.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/LoginStart.java index 6db9e68..57fd270 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/LoginStart.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/LoginStart.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/Minecraft1710EntityIds.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/Minecraft1710EntityIds.java similarity index 99% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/Minecraft1710EntityIds.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/Minecraft1710EntityIds.java index 9b62899..52801d6 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/Minecraft1710EntityIds.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/Minecraft1710EntityIds.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/Minecraft1710PlayPackets.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/Minecraft1710PlayPackets.java similarity index 99% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/Minecraft1710PlayPackets.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/Minecraft1710PlayPackets.java index 7497664..54b316e 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/Minecraft1710PlayPackets.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/Minecraft1710PlayPackets.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftFrameDecoder.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftFrameDecoder.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftFrameDecoder.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftFrameDecoder.java index 092c1a5..1dd3073 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftFrameDecoder.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftFrameDecoder.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftFrameEncoder.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftFrameEncoder.java similarity index 95% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftFrameEncoder.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftFrameEncoder.java index 5dbbe20..b0c4995 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftFrameEncoder.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftFrameEncoder.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftHandshake.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftHandshake.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftHandshake.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftHandshake.java index 2915f40..77f173d 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftHandshake.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftHandshake.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftLoginDisconnect.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftLoginDisconnect.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftLoginDisconnect.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftLoginDisconnect.java index dd4abd9..0f80dca 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftLoginDisconnect.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftLoginDisconnect.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftLoginSuccess.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftLoginSuccess.java similarity index 95% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftLoginSuccess.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftLoginSuccess.java index 2fa59af..2903045 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftLoginSuccess.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftLoginSuccess.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftTabCompletion.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftTabCompletion.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftTabCompletion.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftTabCompletion.java index 59b7d66..39b6c20 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftTabCompletion.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftTabCompletion.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftText.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftText.java similarity index 99% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftText.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftText.java index a3fb732..5cb16f3 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/MinecraftText.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/MinecraftText.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentLike; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolException.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolException.java similarity index 87% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolException.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolException.java index 9558261..4a0c42a 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolException.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolException.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; /** Invalid or truncated Minecraft protocol data. */ public final class ProtocolException extends RuntimeException { diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolProfile.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolProfile.java similarity index 96% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolProfile.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolProfile.java index 65a5d6f..387e78d 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolProfile.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolProfile.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; /** Wire limits and packet rules for one explicitly supported Minecraft protocol. */ public record ProtocolProfile( diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolStrings.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolStrings.java similarity index 96% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolStrings.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolStrings.java index 8800186..b036394 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolStrings.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolStrings.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import java.nio.charset.StandardCharsets; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolVarInt.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolVarInt.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolVarInt.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolVarInt.java index 1b725c1..8ce8724 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ProtocolVarInt.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ProtocolVarInt.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ServerListStatus.java b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ServerListStatus.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/protocol/ServerListStatus.java rename to proxy-core/src/main/java/dev/moonbridge/core/protocol/ServerListStatus.java index a5eaece..e95cbe5 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/protocol/ServerListStatus.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/protocol/ServerListStatus.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; @@ -55,7 +55,7 @@ public final class ServerListStatus { } public static ServerListStatus defaultStatus() { - return new ServerListStatus("StrataProxy", 100, null); + return new ServerListStatus("MoonBridge", 100, null); } public String motd() { return motd; } diff --git a/proxy-core/src/main/java/dev/strataproxy/core/relay/RawRelay.java b/proxy-core/src/main/java/dev/moonbridge/core/relay/RawRelay.java similarity index 99% rename from proxy-core/src/main/java/dev/strataproxy/core/relay/RawRelay.java rename to proxy-core/src/main/java/dev/moonbridge/core/relay/RawRelay.java index b6c7ce0..da1f808 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/relay/RawRelay.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/relay/RawRelay.java @@ -1,6 +1,6 @@ -package dev.strataproxy.core.relay; +package dev.moonbridge.core.relay; -import dev.strataproxy.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolProfile; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelFutureListener; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/ConnectionGate.java b/proxy-core/src/main/java/dev/moonbridge/core/session/ConnectionGate.java similarity index 96% rename from proxy-core/src/main/java/dev/strataproxy/core/session/ConnectionGate.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/ConnectionGate.java index 870fafe..b9a4f0d 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/ConnectionGate.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/ConnectionGate.java @@ -1,8 +1,8 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.event.ConnectionAdmissionEvent; -import dev.strataproxy.core.event.EventDispatcher; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.event.ConnectionAdmissionEvent; +import dev.moonbridge.core.event.EventDispatcher; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/KeepAliveBridge.java b/proxy-core/src/main/java/dev/moonbridge/core/session/KeepAliveBridge.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/session/KeepAliveBridge.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/KeepAliveBridge.java index 31465c6..1195d55 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/KeepAliveBridge.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/KeepAliveBridge.java @@ -1,6 +1,6 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.core.relay.RawRelay; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/PlayObservation.java b/proxy-core/src/main/java/dev/moonbridge/core/session/PlayObservation.java similarity index 94% rename from proxy-core/src/main/java/dev/strataproxy/core/session/PlayObservation.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/PlayObservation.java index a48f46d..f314477 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/PlayObservation.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/PlayObservation.java @@ -1,8 +1,8 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.ProtocolProfile; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import java.util.OptionalInt; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/PlayerCommandInterceptor.java b/proxy-core/src/main/java/dev/moonbridge/core/session/PlayerCommandInterceptor.java similarity index 91% rename from proxy-core/src/main/java/dev/strataproxy/core/session/PlayerCommandInterceptor.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/PlayerCommandInterceptor.java index c1c48f7..0ce384e 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/PlayerCommandInterceptor.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/PlayerCommandInterceptor.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.relay.RawRelay; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/ProxySessionListener.java b/proxy-core/src/main/java/dev/moonbridge/core/session/ProxySessionListener.java similarity index 93% rename from proxy-core/src/main/java/dev/strataproxy/core/session/ProxySessionListener.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/ProxySessionListener.java index 9162ca9..b0246e9 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/ProxySessionListener.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/ProxySessionListener.java @@ -1,22 +1,22 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.event.Event; -import dev.strataproxy.api.event.ConnectionAdmissionEvent; -import dev.strataproxy.api.event.PlayerDisconnectedEvent; -import dev.strataproxy.api.event.ServerConnectedEvent; -import dev.strataproxy.core.event.EventDispatcher; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.MessageResult; -import dev.strataproxy.api.DisconnectResult; -import dev.strataproxy.api.Players; -import dev.strataproxy.api.TransferResult; -import dev.strataproxy.api.TransferStatus; -import dev.strataproxy.core.auth.MinecraftEncryptionRequest; -import dev.strataproxy.core.auth.SessionVerifier; -import dev.strataproxy.core.backend.BackendCatalog; -import dev.strataproxy.core.protocol.ServerListStatus; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.event.Event; +import dev.moonbridge.api.event.ConnectionAdmissionEvent; +import dev.moonbridge.api.event.PlayerDisconnectedEvent; +import dev.moonbridge.api.event.ServerConnectedEvent; +import dev.moonbridge.core.event.EventDispatcher; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.MessageResult; +import dev.moonbridge.api.DisconnectResult; +import dev.moonbridge.api.Players; +import dev.moonbridge.api.TransferResult; +import dev.moonbridge.api.TransferStatus; +import dev.moonbridge.core.auth.MinecraftEncryptionRequest; +import dev.moonbridge.core.auth.SessionVerifier; +import dev.moonbridge.core.backend.BackendCatalog; +import dev.moonbridge.core.protocol.ServerListStatus; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; @@ -39,7 +39,7 @@ import java.security.SecureRandom; import java.time.Duration; import java.util.List; import net.kyori.adventure.text.Component; -import dev.strataproxy.core.protocol.MinecraftText; +import dev.moonbridge.core.protocol.MinecraftText; import java.util.Objects; import java.util.Optional; import java.util.concurrent.CompletableFuture; @@ -69,8 +69,8 @@ public final class ProxySessionListener implements Players { private final Duration initialPlayTimeout; private final KeyPair encryptionKeys; private final SecureRandom random = new SecureRandom(); - private final EventLoopGroup boss = new NioEventLoopGroup(1, namedFactory("strataproxy-session-accept")); - private final EventLoopGroup workers = new NioEventLoopGroup(0, namedFactory("strataproxy-session-io")); + private final EventLoopGroup boss = new NioEventLoopGroup(1, namedFactory("moonbridge-session-accept")); + private final EventLoopGroup workers = new NioEventLoopGroup(0, namedFactory("moonbridge-session-io")); private final AddressResolverGroup backendResolver; private final ConcurrentHashMap sessionsByPlayerId = new ConcurrentHashMap<>(); private final Set allSessions = ConcurrentHashMap.newKeySet(); @@ -248,9 +248,9 @@ public final class ProxySessionListener implements Players { channel.pipeline().addLast("connection-admission", new ConnectionGate(events, eventTimeout.plusSeconds(1), session::connectionAccepted, session::closePair)); } - channel.pipeline().addLast("minecraft-frame-decoder", new dev.strataproxy.core.protocol.MinecraftFrameDecoder( - dev.strataproxy.core.protocol.ProtocolProfile.minecraft1710(), true, - dev.strataproxy.core.protocol.ProtocolProfile.MAX_LOGIN_FRAME_BYTES)); + channel.pipeline().addLast("minecraft-frame-decoder", new dev.moonbridge.core.protocol.MinecraftFrameDecoder( + dev.moonbridge.core.protocol.ProtocolProfile.minecraft1710(), true, + dev.moonbridge.core.protocol.ProtocolProfile.MAX_LOGIN_FRAME_BYTES)); channel.pipeline().addLast("minecraft-frame-encoder", new SessionFrameEncoder()); channel.pipeline().addLast("initial-session", session); } diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/Session.java b/proxy-core/src/main/java/dev/moonbridge/core/session/Session.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/session/Session.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/Session.java index aac1254..c27ca22 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/Session.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/Session.java @@ -1,33 +1,33 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.event.PlayerAdmissionEvent; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.MessageResult; -import dev.strataproxy.api.DisconnectResult; -import dev.strataproxy.api.TransferResult; -import dev.strataproxy.api.TransferStatus; -import dev.strataproxy.core.auth.AuthenticatedEncryption; -import dev.strataproxy.core.auth.MinecraftCipherDecoder; -import dev.strataproxy.core.auth.MinecraftCipherEncoder; -import dev.strataproxy.core.auth.MinecraftEncryptionRequest; -import dev.strataproxy.core.auth.MinecraftEncryptionResponse; -import dev.strataproxy.core.auth.OnlineModeCrypto; -import dev.strataproxy.core.auth.VerifiedProfile; -import dev.strataproxy.core.backend.BackendView; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.forwarding.BungeeLegacyForwarding; -import dev.strataproxy.core.protocol.LoginStart; -import dev.strataproxy.core.protocol.Minecraft1710EntityIds; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.MinecraftLoginSuccess; -import dev.strataproxy.core.protocol.MinecraftLoginDisconnect; -import dev.strataproxy.core.protocol.MinecraftHandshake; -import dev.strataproxy.core.protocol.ProtocolProfile; -import dev.strataproxy.core.protocol.ProtocolVarInt; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.event.PlayerAdmissionEvent; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.MessageResult; +import dev.moonbridge.api.DisconnectResult; +import dev.moonbridge.api.TransferResult; +import dev.moonbridge.api.TransferStatus; +import dev.moonbridge.core.auth.AuthenticatedEncryption; +import dev.moonbridge.core.auth.MinecraftCipherDecoder; +import dev.moonbridge.core.auth.MinecraftCipherEncoder; +import dev.moonbridge.core.auth.MinecraftEncryptionRequest; +import dev.moonbridge.core.auth.MinecraftEncryptionResponse; +import dev.moonbridge.core.auth.OnlineModeCrypto; +import dev.moonbridge.core.auth.VerifiedProfile; +import dev.moonbridge.core.backend.BackendView; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.forwarding.BungeeLegacyForwarding; +import dev.moonbridge.core.protocol.LoginStart; +import dev.moonbridge.core.protocol.Minecraft1710EntityIds; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.MinecraftLoginSuccess; +import dev.moonbridge.core.protocol.MinecraftLoginDisconnect; +import dev.moonbridge.core.protocol.MinecraftHandshake; +import dev.moonbridge.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.relay.RawRelay; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; @@ -54,7 +54,7 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import net.kyori.adventure.text.Component; -import dev.strataproxy.core.protocol.MinecraftText; +import dev.moonbridge.core.protocol.MinecraftText; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.RejectedExecutionException; @@ -234,7 +234,7 @@ final class Session extends ChannelInboundHandlerAdapter { try { pipeline.addAfter("minecraft-frame-decoder", "minecraft-cipher-decoder", new MinecraftCipherDecoder(secret)); pipeline.addAfter("minecraft-cipher-decoder", "encrypted-frame-decoder", - new dev.strataproxy.core.protocol.MinecraftFrameDecoder(ProtocolProfile.minecraft1710(), true, + new dev.moonbridge.core.protocol.MinecraftFrameDecoder(ProtocolProfile.minecraft1710(), true, ProtocolProfile.MAX_LOGIN_FRAME_BYTES)); pipeline.addBefore("minecraft-frame-encoder", "minecraft-cipher-encoder", new MinecraftCipherEncoder(secret)); pipeline.remove("minecraft-frame-decoder"); @@ -426,7 +426,7 @@ final class Session extends ChannelInboundHandlerAdapter { } private static void installCodecs(ChannelPipeline pipeline) { - pipeline.addLast("minecraft-frame-decoder", new dev.strataproxy.core.protocol.MinecraftFrameDecoder( + pipeline.addLast("minecraft-frame-decoder", new dev.moonbridge.core.protocol.MinecraftFrameDecoder( ProtocolProfile.minecraft1710(), true)); pipeline.addLast("minecraft-frame-encoder", new SessionFrameEncoder()); } @@ -534,7 +534,7 @@ final class Session extends ChannelInboundHandlerAdapter { ChannelPipeline pipeline = frontend.pipeline(); Object decoder = pipeline.get("encrypted-frame-decoder") != null ? pipeline.get("encrypted-frame-decoder") : pipeline.get("minecraft-frame-decoder"); - if (!(decoder instanceof dev.strataproxy.core.protocol.MinecraftFrameDecoder frames)) { + if (!(decoder instanceof dev.moonbridge.core.protocol.MinecraftFrameDecoder frames)) { throw new IllegalStateException("client frame decoder missing after login success"); } frames.allowPlayFrames(); @@ -991,7 +991,7 @@ final class Session extends ChannelInboundHandlerAdapter { @Override protected void initChannel(SocketChannel channel) { requireSessionEventLoop(channel); channel.pipeline().addLast("minecraft-frame-decoder", - new dev.strataproxy.core.protocol.MinecraftFrameDecoder( + new dev.moonbridge.core.protocol.MinecraftFrameDecoder( ProtocolProfile.minecraft1710(), true)); channel.pipeline().addLast("minecraft-frame-encoder", new SessionFrameEncoder()); channel.pipeline().addLast("transfer-candidate", attempt.candidate); @@ -1137,7 +1137,7 @@ final class Session extends ChannelInboundHandlerAdapter { ChannelPipeline pipeline = frontend.pipeline(); var decoder = pipeline.get("minecraft-frame-decoder"); if (decoder == null) decoder = pipeline.get("encrypted-frame-decoder"); - if (!(decoder instanceof dev.strataproxy.core.protocol.MinecraftFrameDecoder frameDecoder)) { + if (!(decoder instanceof dev.moonbridge.core.protocol.MinecraftFrameDecoder frameDecoder)) { throw new IllegalStateException("client frame decoder missing during transfer"); } return frameDecoder.hasPartialFrame(); diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/SessionFrameEncoder.java b/proxy-core/src/main/java/dev/moonbridge/core/session/SessionFrameEncoder.java similarity index 74% rename from proxy-core/src/main/java/dev/strataproxy/core/session/SessionFrameEncoder.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/SessionFrameEncoder.java index de1f45e..c588eb9 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/SessionFrameEncoder.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/SessionFrameEncoder.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.MinecraftFrameEncoder; -import dev.strataproxy.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.MinecraftFrameEncoder; +import dev.moonbridge.core.protocol.ProtocolProfile; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageEncoder; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/TabCompletionBridge.java b/proxy-core/src/main/java/dev/moonbridge/core/session/TabCompletionBridge.java similarity index 98% rename from proxy-core/src/main/java/dev/strataproxy/core/session/TabCompletionBridge.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/TabCompletionBridge.java index bdfaccd..7dc3062 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/TabCompletionBridge.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/TabCompletionBridge.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.MinecraftTabCompletion; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.core.protocol.MinecraftTabCompletion; +import dev.moonbridge.core.relay.RawRelay; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/TransferCandidate.java b/proxy-core/src/main/java/dev/moonbridge/core/session/TransferCandidate.java similarity index 95% rename from proxy-core/src/main/java/dev/strataproxy/core/session/TransferCandidate.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/TransferCandidate.java index 1e148e9..8be6a46 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/TransferCandidate.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/TransferCandidate.java @@ -1,9 +1,9 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.MinecraftLoginSuccess; -import dev.strataproxy.core.protocol.ProtocolProfile; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.MinecraftLoginSuccess; +import dev.moonbridge.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/TransferFrameBuffer.java b/proxy-core/src/main/java/dev/moonbridge/core/session/TransferFrameBuffer.java similarity index 97% rename from proxy-core/src/main/java/dev/strataproxy/core/session/TransferFrameBuffer.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/TransferFrameBuffer.java index 0ed2822..f94a579 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/TransferFrameBuffer.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/TransferFrameBuffer.java @@ -1,6 +1,6 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolProfile; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; diff --git a/proxy-core/src/main/java/dev/strataproxy/core/session/TransferFrameHandler.java b/proxy-core/src/main/java/dev/moonbridge/core/session/TransferFrameHandler.java similarity index 94% rename from proxy-core/src/main/java/dev/strataproxy/core/session/TransferFrameHandler.java rename to proxy-core/src/main/java/dev/moonbridge/core/session/TransferFrameHandler.java index f793717..a5f7952 100644 --- a/proxy-core/src/main/java/dev/strataproxy/core/session/TransferFrameHandler.java +++ b/proxy-core/src/main/java/dev/moonbridge/core/session/TransferFrameHandler.java @@ -1,10 +1,10 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710EntityIds; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.ProtocolProfile; -import dev.strataproxy.core.protocol.ProtocolVarInt; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.core.protocol.Minecraft1710EntityIds; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.relay.RawRelay; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/main/resources/config/strataproxy-channel.example.yml b/proxy-core/src/main/resources/config/moonbridge-channel.example.yml similarity index 100% rename from proxy-core/src/main/resources/config/strataproxy-channel.example.yml rename to proxy-core/src/main/resources/config/moonbridge-channel.example.yml diff --git a/proxy-core/src/main/resources/config/strataproxy.yml b/proxy-core/src/main/resources/config/moonbridge.yml similarity index 94% rename from proxy-core/src/main/resources/config/strataproxy.yml rename to proxy-core/src/main/resources/config/moonbridge.yml index 5294be5..43b99bb 100644 --- a/proxy-core/src/main/resources/config/strataproxy.yml +++ b/proxy-core/src/main/resources/config/moonbridge.yml @@ -2,7 +2,7 @@ listen: "127.0.0.1:25577" authentication: OFFLINE maxConnections: 4096 status: - motd: "StrataProxy" + motd: "MoonBridge" maxPlayers: 100 # icon: "server-icon.png" # Optional 64x64 PNG, relative to this config (maximum 64 KiB). plugins: diff --git a/proxy-core/src/test/java/dev/strataproxy/app/ProxyConfigurationTest.java b/proxy-core/src/test/java/dev/moonbridge/app/ProxyConfigurationTest.java similarity index 92% rename from proxy-core/src/test/java/dev/strataproxy/app/ProxyConfigurationTest.java rename to proxy-core/src/test/java/dev/moonbridge/app/ProxyConfigurationTest.java index 54ef433..a867a18 100644 --- a/proxy-core/src/test/java/dev/strataproxy/app/ProxyConfigurationTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/app/ProxyConfigurationTest.java @@ -1,7 +1,7 @@ -package dev.strataproxy.app; +package dev.moonbridge.app; import com.fasterxml.jackson.databind.ObjectMapper; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import io.netty.buffer.UnpooledByteBufAllocator; import org.junit.jupiter.api.Test; @@ -20,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; final class ProxyConfigurationTest { @Test void requiresAnExplicitAuthenticationMode() throws Exception { - var config = Files.createTempFile("strataproxy-no-auth", ".yml"); + var config = Files.createTempFile("moonbridge-no-auth", ".yml"); try { Files.writeString(config, "listen: \"127.0.0.1:25577\"\nbackends: []\n"); assertThrows(com.fasterxml.jackson.databind.JsonMappingException.class, @@ -32,7 +32,7 @@ final class ProxyConfigurationTest { @Test void allowsPluginOnlyServerRegistration() throws Exception { - var config = Files.createTempFile("strataproxy-config", ".yml"); + var config = Files.createTempFile("moonbridge-config", ".yml"); try { Files.writeString(config, "listen: \"127.0.0.1:25577\"\nauthentication: OFFLINE\nbackends: []\n"); assertEquals(0, new ProxyConfigurationLoader().load(config).backends().size()); @@ -44,7 +44,7 @@ final class ProxyConfigurationTest { @Test void rejectsInvalidConnectionLimit() throws Exception { - var config = Files.createTempFile("strataproxy-cap", ".yml"); + var config = Files.createTempFile("moonbridge-cap", ".yml"); try { for (int invalid : new int[]{0, -1, 1_000_001}) { Files.writeString(config, "listen: \"127.0.0.1:25577\"\nauthentication: OFFLINE\n" @@ -59,7 +59,7 @@ final class ProxyConfigurationTest { @Test void offlinePublicBindRequiresExplicitOptIn() throws Exception { - var config = Files.createTempFile("strataproxy-public-offline", ".yml"); + var config = Files.createTempFile("moonbridge-public-offline", ".yml"); try { String publicOffline = "listen: \"0.0.0.0:25577\"\nauthentication: OFFLINE\n"; Files.writeString(config, publicOffline); @@ -80,7 +80,7 @@ final class ProxyConfigurationTest { @Test void validateConfigChecksStaticBackendEndpoints() throws Exception { - var config = Files.createTempFile("strataproxy-invalid-backend", ".yml"); + var config = Files.createTempFile("moonbridge-invalid-backend", ".yml"); try { Files.writeString(config, """ listen: "127.0.0.1:25577" @@ -106,7 +106,7 @@ final class ProxyConfigurationTest { @Test void readsEnabledPluginSettingsFromConfiguration() throws Exception { - var config = Files.createTempFile("strataproxy-plugins", ".yml"); + var config = Files.createTempFile("moonbridge-plugins", ".yml"); try { Files.writeString(config, """ listen: "127.0.0.1:25577" @@ -133,7 +133,7 @@ final class ProxyConfigurationTest { @Test void readsAndBoundsInitialPlacementTimeout() throws Exception { - var config = Files.createTempFile("strataproxy-timeout", ".yml"); + var config = Files.createTempFile("moonbridge-timeout", ".yml"); try { String prefix = "listen: \"127.0.0.1:25577\"\nauthentication: OFFLINE\nplugins:\n" + " directory: plugins\n initialPlacementTimeoutSeconds: "; @@ -151,7 +151,7 @@ final class ProxyConfigurationTest { @Test void readsAndBoundsEventTimeout() throws Exception { - var config = Files.createTempFile("strataproxy-event-timeout", ".yml"); + var config = Files.createTempFile("moonbridge-event-timeout", ".yml"); try { String prefix = "listen: \"127.0.0.1:25577\"\nauthentication: OFFLINE\nplugins:\n" + " directory: plugins\n eventTimeoutSeconds: "; @@ -169,7 +169,7 @@ final class ProxyConfigurationTest { @Test void resolvesRelativePluginDirectoryFromTheConfigLocation() throws Exception { - Path config = Path.of("example", "config", "strataproxy.yml").toAbsolutePath(); + Path config = Path.of("example", "config", "moonbridge.yml").toAbsolutePath(); assertEquals(config.getParent().getParent().resolve("plugins"), ProxyMain.pluginDirectory(config, "../plugins")); Path absolute = Path.of("example", "custom-plugins").toAbsolutePath(); @@ -178,12 +178,12 @@ final class ProxyConfigurationTest { @Test void defaultsAndValidatesStatusConfiguration() throws Exception { - Path config = Files.createTempFile("strataproxy-status", ".yml"); + Path config = Files.createTempFile("moonbridge-status", ".yml"); try { Files.writeString(config, "listen: \"127.0.0.1:25577\"\nauthentication: OFFLINE\n"); var loader = new ProxyConfigurationLoader(); var defaults = loader.load(config).status(); - assertEquals("StrataProxy", defaults.motd()); + assertEquals("MoonBridge", defaults.motd()); assertEquals(100, defaults.maxPlayers()); assertNull(defaults.icon()); @@ -204,8 +204,8 @@ final class ProxyConfigurationTest { @Test void validatesOptionalIconPathFormatDimensionsAndSize() throws Exception { - Path directory = Files.createTempDirectory("strataproxy-status-icon"); - Path config = directory.resolve("strataproxy.yml"); + Path directory = Files.createTempDirectory("moonbridge-status-icon"); + Path config = directory.resolve("moonbridge.yml"); Path icon = directory.resolve("icon.png"); var loader = new ProxyConfigurationLoader(); try { @@ -255,7 +255,7 @@ final class ProxyConfigurationTest { @Test void loadsIndependentBackendSendAndReceiveNamespacesIncludingEmptySets() throws Exception { - Path config = Files.createTempFile("strataproxy-backend-channel", ".yml"); + Path config = Files.createTempFile("moonbridge-backend-channel", ".yml"); try { String yaml = """ listen: "127.0.0.1:25577" diff --git a/proxy-core/src/test/java/dev/strataproxy/app/StaticBackendsTest.java b/proxy-core/src/test/java/dev/moonbridge/app/StaticBackendsTest.java similarity index 81% rename from proxy-core/src/test/java/dev/strataproxy/app/StaticBackendsTest.java rename to proxy-core/src/test/java/dev/moonbridge/app/StaticBackendsTest.java index 5b8388a..81c1a64 100644 --- a/proxy-core/src/test/java/dev/strataproxy/app/StaticBackendsTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/app/StaticBackendsTest.java @@ -1,9 +1,9 @@ -package dev.strataproxy.app; +package dev.moonbridge.app; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; import org.junit.jupiter.api.Test; import java.net.URI; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/auth/MinecraftCipherHandlersTest.java b/proxy-core/src/test/java/dev/moonbridge/core/auth/MinecraftCipherHandlersTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/auth/MinecraftCipherHandlersTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/auth/MinecraftCipherHandlersTest.java index 84cfb97..fa22ea3 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/auth/MinecraftCipherHandlersTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/auth/MinecraftCipherHandlersTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/auth/MinecraftEncryptionCodecTest.java b/proxy-core/src/test/java/dev/moonbridge/core/auth/MinecraftEncryptionCodecTest.java similarity index 96% rename from proxy-core/src/test/java/dev/strataproxy/core/auth/MinecraftEncryptionCodecTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/auth/MinecraftEncryptionCodecTest.java index 5449192..0f6b75c 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/auth/MinecraftEncryptionCodecTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/auth/MinecraftEncryptionCodecTest.java @@ -1,10 +1,10 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import dev.strataproxy.core.protocol.ProtocolException; +import dev.moonbridge.core.protocol.ProtocolException; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.Unpooled; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/auth/MojangSessionVerifierTest.java b/proxy-core/src/test/java/dev/moonbridge/core/auth/MojangSessionVerifierTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/auth/MojangSessionVerifierTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/auth/MojangSessionVerifierTest.java index 6526bd2..1754bf2 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/auth/MojangSessionVerifierTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/auth/MojangSessionVerifierTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/auth/OnlineModeCryptoTest.java b/proxy-core/src/test/java/dev/moonbridge/core/auth/OnlineModeCryptoTest.java similarity index 98% rename from proxy-core/src/test/java/dev/strataproxy/core/auth/OnlineModeCryptoTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/auth/OnlineModeCryptoTest.java index a07ae85..fc045d8 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/auth/OnlineModeCryptoTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/auth/OnlineModeCryptoTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.auth; +package dev.moonbridge.core.auth; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/backend/InMemoryBackendCatalogTest.java b/proxy-core/src/test/java/dev/moonbridge/core/backend/InMemoryBackendCatalogTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/backend/InMemoryBackendCatalogTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/backend/InMemoryBackendCatalogTest.java index bd5b385..399d339 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/backend/InMemoryBackendCatalogTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/backend/InMemoryBackendCatalogTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.backend; +package dev.moonbridge.core.backend; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/control/BackendControlServiceTest.java b/proxy-core/src/test/java/dev/moonbridge/core/control/BackendControlServiceTest.java similarity index 89% rename from proxy-core/src/test/java/dev/strataproxy/core/control/BackendControlServiceTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/control/BackendControlServiceTest.java index c4e0942..c788ead 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/control/BackendControlServiceTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/control/BackendControlServiceTest.java @@ -1,16 +1,16 @@ -package dev.strataproxy.core.control; +package dev.moonbridge.core.control; -import dev.strataproxy.app.ProxyConfiguration; -import dev.strataproxy.backendchannel.BackendChannelClient; -import dev.strataproxy.backendchannel.FrameCodec; -import dev.strataproxy.backendchannel.Wire; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.SendResult; -import dev.strataproxy.messaging.internal.LocalMessaging; -import dev.strataproxy.messaging.protocol.MessageCodec; +import dev.moonbridge.app.ProxyConfiguration; +import dev.moonbridge.backendchannel.BackendChannelClient; +import dev.moonbridge.backendchannel.FrameCodec; +import dev.moonbridge.backendchannel.Wire; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.SendResult; +import dev.moonbridge.messaging.internal.LocalMessaging; +import dev.moonbridge.messaging.protocol.MessageCodec; import org.junit.jupiter.api.Test; import java.net.ServerSocket; @@ -45,16 +45,16 @@ class BackendControlServiceTest { Map.of("island-a", client("island-a")), 5, 8); var timer = Executors.newSingleThreadScheduledExecutor(); var local = new LocalMessaging(Endpoint.proxy(), new LocalMessaging.Outbound() { - @Override public java.util.concurrent.CompletionStage send( - dev.strataproxy.messaging.Message message) { + @Override public java.util.concurrent.CompletionStage send( + dev.moonbridge.messaging.Message message) { return CompletableFuture.failedFuture(new UnsupportedOperationException()); } - @Override public java.util.concurrent.CompletionStage request( - dev.strataproxy.messaging.Message message, Duration timeout) { + @Override public java.util.concurrent.CompletionStage request( + dev.moonbridge.messaging.Message message, Duration timeout) { return CompletableFuture.failedFuture(new UnsupportedOperationException()); } - @Override public java.util.concurrent.CompletionStage publish( - dev.strataproxy.messaging.Message event) { + @Override public java.util.concurrent.CompletionStage publish( + dev.moonbridge.messaging.Message event) { return CompletableFuture.failedFuture(new UnsupportedOperationException()); } }, Runnable::run, timer); @@ -167,7 +167,7 @@ class BackendControlServiceTest { @Override public java.util.concurrent.CompletionStage request(Message message, Duration timeout) { return CompletableFuture.failedFuture(new UnsupportedOperationException()); } - @Override public java.util.concurrent.CompletionStage publish( + @Override public java.util.concurrent.CompletionStage publish( Message event) { return CompletableFuture.failedFuture(new UnsupportedOperationException()); } diff --git a/proxy-core/src/test/java/dev/strataproxy/core/control/UnifiedMessagingSocketTest.java b/proxy-core/src/test/java/dev/moonbridge/core/control/UnifiedMessagingSocketTest.java similarity index 97% rename from proxy-core/src/test/java/dev/strataproxy/core/control/UnifiedMessagingSocketTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/control/UnifiedMessagingSocketTest.java index a2c70a8..f739c53 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/control/UnifiedMessagingSocketTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/control/UnifiedMessagingSocketTest.java @@ -1,10 +1,10 @@ -package dev.strataproxy.core.control; +package dev.moonbridge.core.control; -import dev.strataproxy.app.ProxyConfiguration; -import dev.strataproxy.backendchannel.BackendChannelClient; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.messaging.*; -import dev.strataproxy.messaging.internal.LocalMessaging; +import dev.moonbridge.app.ProxyConfiguration; +import dev.moonbridge.backendchannel.BackendChannelClient; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.messaging.*; +import dev.moonbridge.messaging.internal.LocalMessaging; import org.junit.jupiter.api.Test; import java.net.ServerSocket; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/forwarding/BungeeLegacyForwardingTest.java b/proxy-core/src/test/java/dev/moonbridge/core/forwarding/BungeeLegacyForwardingTest.java similarity index 92% rename from proxy-core/src/test/java/dev/strataproxy/core/forwarding/BungeeLegacyForwardingTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/forwarding/BungeeLegacyForwardingTest.java index 16ad23d..bdb8f27 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/forwarding/BungeeLegacyForwardingTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/forwarding/BungeeLegacyForwardingTest.java @@ -1,10 +1,10 @@ -package dev.strataproxy.core.forwarding; +package dev.moonbridge.core.forwarding; import com.fasterxml.jackson.databind.ObjectMapper; -import dev.strataproxy.core.auth.ProfileProperty; -import dev.strataproxy.core.auth.VerifiedProfile; -import dev.strataproxy.core.protocol.MinecraftHandshake; -import dev.strataproxy.core.protocol.ProtocolProfile; +import dev.moonbridge.core.auth.ProfileProperty; +import dev.moonbridge.core.auth.VerifiedProfile; +import dev.moonbridge.core.protocol.MinecraftHandshake; +import dev.moonbridge.core.protocol.ProtocolProfile; import io.netty.buffer.ByteBuf; import io.netty.buffer.UnpooledByteBufAllocator; import org.junit.jupiter.api.Test; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/plugin/AsyncEventDispatcherTest.java b/proxy-core/src/test/java/dev/moonbridge/core/plugin/AsyncEventDispatcherTest.java similarity index 95% rename from proxy-core/src/test/java/dev/strataproxy/core/plugin/AsyncEventDispatcherTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/plugin/AsyncEventDispatcherTest.java index 4f10720..c0533db 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/plugin/AsyncEventDispatcherTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/plugin/AsyncEventDispatcherTest.java @@ -1,8 +1,8 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.event.ConnectionAdmissionEvent; -import dev.strataproxy.api.event.Event; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.event.ConnectionAdmissionEvent; +import dev.moonbridge.api.event.Event; import org.junit.jupiter.api.Test; import java.net.InetSocketAddress; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostCompletionTest.java b/proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostCompletionTest.java similarity index 95% rename from proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostCompletionTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostCompletionTest.java index 5b82f09..4792b12 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostCompletionTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostCompletionTest.java @@ -1,16 +1,16 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; -import dev.strataproxy.api.CommandCompletion; -import dev.strataproxy.api.CommandRegistration; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.Plugin; -import dev.strataproxy.api.PluginContext; -import dev.strataproxy.api.Players; -import dev.strataproxy.api.MessageResult; -import dev.strataproxy.api.DisconnectResult; -import dev.strataproxy.api.TransferResult; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.api.CommandCompletion; +import dev.moonbridge.api.CommandRegistration; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.Plugin; +import dev.moonbridge.api.PluginContext; +import dev.moonbridge.api.Players; +import dev.moonbridge.api.MessageResult; +import dev.moonbridge.api.DisconnectResult; +import dev.moonbridge.api.TransferResult; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; import org.junit.jupiter.api.Test; import java.time.Duration; @@ -139,7 +139,7 @@ class PluginHostCompletionTest { assertTrue(cancellationCallback.await(1, TimeUnit.SECONDS)); assertTrue(pluginStage.isCancelled()); assertNotEquals(Thread.currentThread(), callbackThread.get()); - assertTrue(callbackThread.get().getName().startsWith("strataproxy-plugin-player-")); + assertTrue(callbackThread.get().getName().startsWith("moonbridge-plugin-player-")); } } diff --git a/proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostMessagingTest.java b/proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostMessagingTest.java similarity index 96% rename from proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostMessagingTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostMessagingTest.java index c7fdd1e..d8e4309 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostMessagingTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostMessagingTest.java @@ -1,9 +1,9 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; -import dev.strataproxy.api.*; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.core.control.BackendChannelTransport; -import dev.strataproxy.messaging.*; +import dev.moonbridge.api.*; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.core.control.BackendChannelTransport; +import dev.moonbridge.messaging.*; import net.kyori.adventure.text.Component; import org.junit.jupiter.api.Test; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostTest.java b/proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostTest.java similarity index 96% rename from proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostTest.java index 93de116..2c31cdf 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/plugin/PluginHostTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/plugin/PluginHostTest.java @@ -1,37 +1,37 @@ -package dev.strataproxy.core.plugin; +package dev.moonbridge.core.plugin; -import dev.strataproxy.api.InitialPlacementHandler; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.MessageResult; -import dev.strataproxy.api.DisconnectResult; -import dev.strataproxy.api.event.ConnectionAdmissionEvent; -import dev.strataproxy.api.event.Event; -import dev.strataproxy.api.event.EventSubscription; -import dev.strataproxy.api.event.Events; -import dev.strataproxy.api.event.PlayerAdmissionEvent; -import dev.strataproxy.api.event.PlayerDisconnectedEvent; -import dev.strataproxy.api.event.ServerConnectedEvent; +import dev.moonbridge.api.InitialPlacementHandler; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.MessageResult; +import dev.moonbridge.api.DisconnectResult; +import dev.moonbridge.api.event.ConnectionAdmissionEvent; +import dev.moonbridge.api.event.Event; +import dev.moonbridge.api.event.EventSubscription; +import dev.moonbridge.api.event.Events; +import dev.moonbridge.api.event.PlayerAdmissionEvent; +import dev.moonbridge.api.event.PlayerDisconnectedEvent; +import dev.moonbridge.api.event.ServerConnectedEvent; -import dev.strataproxy.api.CommandInvocation; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.Players; -import dev.strataproxy.api.Plugin; -import dev.strataproxy.api.PluginContext; -import dev.strataproxy.api.ServerDefinition; -import dev.strataproxy.api.ServerRegistration; -import dev.strataproxy.api.TransferResult; -import dev.strataproxy.api.TransferStatus; +import dev.moonbridge.api.CommandInvocation; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.Players; +import dev.moonbridge.api.Plugin; +import dev.moonbridge.api.PluginContext; +import dev.moonbridge.api.ServerDefinition; +import dev.moonbridge.api.ServerRegistration; +import dev.moonbridge.api.TransferResult; +import dev.moonbridge.api.TransferStatus; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; -import dev.strataproxy.core.backend.BackendCatalog; -import dev.strataproxy.core.backend.BackendHandle; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; -import dev.strataproxy.core.backend.BackendView; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.core.backend.BackendCatalog; +import dev.moonbridge.core.backend.BackendHandle; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.BackendView; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -658,8 +658,8 @@ class PluginHostTest { assertTrue(second.context.servers().find("second").isPresent()); host.close(); - assertTrue(catalog.find(new dev.strataproxy.core.backend.BackendId("first")).isEmpty()); - assertTrue(catalog.find(new dev.strataproxy.core.backend.BackendId("second")).isEmpty()); + assertTrue(catalog.find(new dev.moonbridge.core.backend.BackendId("first")).isEmpty()); + assertTrue(catalog.find(new dev.moonbridge.core.backend.BackendId("second")).isEmpty()); } @Test @@ -842,7 +842,7 @@ class PluginHostTest { () -> host.placeInitial(PLAYER).toCompletableFuture().join()); assertInstanceOf(PlacementTimeoutException.class, failure.getCause()); assertTrue(plugin.firstDecision.isCancelled(), "timed-out placement should cancel unfinished plugin work"); - assertTrue(catalog.find(new dev.strataproxy.core.backend.BackendId("placement")).isPresent()); + assertTrue(catalog.find(new dev.moonbridge.core.backend.BackendId("placement")).isPresent()); CompletionException transientFailure = assertThrows(CompletionException.class, () -> host.placeInitial(PLAYER).toCompletableFuture().join()); assertEquals("temporary lookup failure", transientFailure.getCause().getMessage()); diff --git a/proxy-core/src/test/java/dev/strataproxy/core/protocol/Minecraft1710EntityIdsTest.java b/proxy-core/src/test/java/dev/moonbridge/core/protocol/Minecraft1710EntityIdsTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/protocol/Minecraft1710EntityIdsTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/protocol/Minecraft1710EntityIdsTest.java index 60558f4..516df75 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/protocol/Minecraft1710EntityIdsTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/protocol/Minecraft1710EntityIdsTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.AbstractByteBufAllocator; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/protocol/Minecraft1710PlayPacketsTest.java b/proxy-core/src/test/java/dev/moonbridge/core/protocol/Minecraft1710PlayPacketsTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/protocol/Minecraft1710PlayPacketsTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/protocol/Minecraft1710PlayPacketsTest.java index 26ffe82..8b8f100 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/protocol/Minecraft1710PlayPacketsTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/protocol/Minecraft1710PlayPacketsTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftFrameDecoderTransitionTest.java b/proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftFrameDecoderTransitionTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftFrameDecoderTransitionTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftFrameDecoderTransitionTest.java index f55f2f4..4580140 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftFrameDecoderTransitionTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftFrameDecoderTransitionTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftProtocolTest.java b/proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftProtocolTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftProtocolTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftProtocolTest.java index 193a081..40aa8fd 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftProtocolTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftProtocolTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import static org.junit.jupiter.api.Assertions.*; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftTextTest.java b/proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftTextTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftTextTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftTextTest.java index 3362570..aa42d4b 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/protocol/MinecraftTextTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/protocol/MinecraftTextTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/protocol/ServerListStatusTest.java b/proxy-core/src/test/java/dev/moonbridge/core/protocol/ServerListStatusTest.java similarity index 96% rename from proxy-core/src/test/java/dev/strataproxy/core/protocol/ServerListStatusTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/protocol/ServerListStatusTest.java index 1432190..dcb6d22 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/protocol/ServerListStatusTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/protocol/ServerListStatusTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.protocol; +package dev.moonbridge.core.protocol; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -23,7 +23,7 @@ final class ServerListStatusTest { assertEquals("1.7.10", response.path("version").path("name").textValue()); assertEquals(100, response.path("players").path("max").intValue()); assertEquals(23, response.path("players").path("online").intValue()); - assertEquals("StrataProxy", response.path("description").path("text").textValue()); + assertEquals("MoonBridge", response.path("description").path("text").textValue()); assertEquals(0, response.path("players").path("sample").size()); } diff --git a/proxy-core/src/test/java/dev/strataproxy/core/relay/RawRelaySocketTest.java b/proxy-core/src/test/java/dev/moonbridge/core/relay/RawRelaySocketTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/relay/RawRelaySocketTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/relay/RawRelaySocketTest.java index 548228d..bc4093c 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/relay/RawRelaySocketTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/relay/RawRelaySocketTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.relay; +package dev.moonbridge.core.relay; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/relay/RawRelayTest.java b/proxy-core/src/test/java/dev/moonbridge/core/relay/RawRelayTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/relay/RawRelayTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/relay/RawRelayTest.java index 541042e..da555fc 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/relay/RawRelayTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/relay/RawRelayTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.relay; +package dev.moonbridge.core.relay; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/DeferredBackendResolver.java b/proxy-core/src/test/java/dev/moonbridge/core/session/DeferredBackendResolver.java similarity index 98% rename from proxy-core/src/test/java/dev/strataproxy/core/session/DeferredBackendResolver.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/DeferredBackendResolver.java index 7f774f7..36f3277 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/DeferredBackendResolver.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/DeferredBackendResolver.java @@ -1,4 +1,4 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; import io.netty.resolver.AbstractAddressResolver; import io.netty.resolver.AddressResolver; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/KeepAliveBridgeTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/KeepAliveBridgeTest.java similarity index 98% rename from proxy-core/src/test/java/dev/strataproxy/core/session/KeepAliveBridgeTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/KeepAliveBridgeTest.java index e50b92d..da34610 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/KeepAliveBridgeTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/KeepAliveBridgeTest.java @@ -1,6 +1,6 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.core.relay.RawRelay; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/PlayObservationTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/PlayObservationTest.java similarity index 96% rename from proxy-core/src/test/java/dev/strataproxy/core/session/PlayObservationTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/PlayObservationTest.java index 90d7280..ecd1fde 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/PlayObservationTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/PlayObservationTest.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.buffer.UnpooledByteBufAllocator; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/ProxySessionListenerTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/ProxySessionListenerTest.java similarity index 98% rename from proxy-core/src/test/java/dev/strataproxy/core/session/ProxySessionListenerTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/ProxySessionListenerTest.java index 9b058a0..0edfe5a 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/ProxySessionListenerTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/ProxySessionListenerTest.java @@ -1,30 +1,30 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; import com.fasterxml.jackson.databind.ObjectMapper; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.event.Event; -import dev.strataproxy.api.event.ConnectionAdmissionEvent; -import dev.strataproxy.api.event.PlayerAdmissionEvent; -import dev.strataproxy.api.event.ServerConnectedEvent; -import dev.strataproxy.api.event.PlayerDisconnectedEvent; -import dev.strataproxy.core.event.EventDispatcher; -import dev.strataproxy.api.Plugin; -import dev.strataproxy.api.PluginContext; -import dev.strataproxy.core.plugin.PluginHost; -import dev.strataproxy.core.auth.MinecraftEncryptionRequest; -import dev.strataproxy.core.auth.MinecraftEncryptionResponse; -import dev.strataproxy.core.auth.ProfileProperty; -import dev.strataproxy.core.auth.VerifiedProfile; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendCatalog; -import dev.strataproxy.core.backend.BackendHandle; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; -import dev.strataproxy.core.backend.BackendView; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.event.Event; +import dev.moonbridge.api.event.ConnectionAdmissionEvent; +import dev.moonbridge.api.event.PlayerAdmissionEvent; +import dev.moonbridge.api.event.ServerConnectedEvent; +import dev.moonbridge.api.event.PlayerDisconnectedEvent; +import dev.moonbridge.core.event.EventDispatcher; +import dev.moonbridge.api.Plugin; +import dev.moonbridge.api.PluginContext; +import dev.moonbridge.core.plugin.PluginHost; +import dev.moonbridge.core.auth.MinecraftEncryptionRequest; +import dev.moonbridge.core.auth.MinecraftEncryptionResponse; +import dev.moonbridge.core.auth.ProfileProperty; +import dev.moonbridge.core.auth.VerifiedProfile; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendCatalog; +import dev.moonbridge.core.backend.BackendHandle; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.BackendView; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; import org.junit.jupiter.api.Test; import io.netty.buffer.Unpooled; import io.netty.buffer.UnpooledByteBufAllocator; @@ -87,7 +87,7 @@ final class ProxySessionListenerTest { host.load(List.of(new Plugin() { @Override public void onLoad(PluginContext context) { context.events().subscribe(ConnectionAdmissionEvent.class, event -> { - assertFalse(Thread.currentThread().getName().startsWith("strataproxy-session-io")); + assertFalse(Thread.currentThread().getName().startsWith("moonbridge-session-io")); called.complete(event.remoteAddress()); return decision; }); @@ -301,7 +301,7 @@ final class ProxySessionListenerTest { var output = new DataOutputStream(client.getOutputStream()); assertEquals(2, readVarInt(readFrame(input))); awaitCondition(() -> hasRawRelay(listener)); - assertEquals(dev.strataproxy.api.MessageResult.NOT_READY, + assertEquals(dev.moonbridge.api.MessageResult.NOT_READY, listener.sendMessage(listener.online().get(0).identity(), "before Join Game") .toCompletableFuture().get(5, TimeUnit.SECONDS)); sendJoin.countDown(); @@ -311,9 +311,9 @@ final class ProxySessionListenerTest { awaitCondition(() -> playReady(listener)); var stale = new PlayerIdentity(player.identity().playerId(), player.identity().connectionId() + 1); - assertEquals(dev.strataproxy.api.MessageResult.NOT_CONNECTED, + assertEquals(dev.moonbridge.api.MessageResult.NOT_CONNECTED, listener.sendMessage(stale, "stale").toCompletableFuture().get(5, TimeUnit.SECONDS)); - assertEquals(dev.strataproxy.api.DisconnectResult.NOT_CONNECTED, + assertEquals(dev.moonbridge.api.DisconnectResult.NOT_CONNECTED, listener.disconnect(stale, "stale").toCompletableFuture().get(5, TimeUnit.SECONDS)); byte[] ordinary = new byte[]{0x03, 0x33}; @@ -321,7 +321,7 @@ final class ProxySessionListenerTest { assertArrayEquals(ordinary, receivedClientPacket.get(5, TimeUnit.SECONDS)); assertArrayEquals(new byte[]{0x03, 0x44}, readFrame(input)); - assertEquals(dev.strataproxy.api.MessageResult.SENT, + assertEquals(dev.moonbridge.api.MessageResult.SENT, listener.sendMessage(player.identity(), "管理消息🙂").toCompletableFuture() .get(5, TimeUnit.SECONDS)); var message = new java.io.ByteArrayInputStream(readFrame(input)); @@ -335,7 +335,7 @@ final class ProxySessionListenerTest { Channel frontend = (Channel) frontendField.get(session); frontend.eventLoop().submit(() -> frontend.unsafe().outboundBuffer() .setUserDefinedWritability(1, false)).get(5, TimeUnit.SECONDS); - assertEquals(dev.strataproxy.api.MessageResult.BACKPRESSURED, + assertEquals(dev.moonbridge.api.MessageResult.BACKPRESSURED, listener.sendMessage(player.identity(), "unwritable").toCompletableFuture() .get(5, TimeUnit.SECONDS)); frontend.eventLoop().submit(() -> frontend.unsafe().outboundBuffer() @@ -355,20 +355,20 @@ final class ProxySessionListenerTest { } })).get(5, TimeUnit.SECONDS); var queuedMessages = new ArrayList>(); + dev.moonbridge.api.MessageResult>>(); for (int index = 0; index < 64; index++) { queuedMessages.add(listener.sendMessage(player.identity(), "queued-" + index)); } - assertEquals(dev.strataproxy.api.MessageResult.BACKPRESSURED, + assertEquals(dev.moonbridge.api.MessageResult.BACKPRESSURED, listener.sendMessage(player.identity(), "over-limit").toCompletableFuture() .get(5, TimeUnit.SECONDS)); awaitCondition(() -> heldCount.get() == 64); assertTrue(queuedMessages.stream().noneMatch(queued -> queued.toCompletableFuture().isDone())); var cancelledWaiter = new AtomicReference>(); + dev.moonbridge.api.DisconnectResult>>(); var joinedWaiter = new AtomicReference>(); + dev.moonbridge.api.DisconnectResult>>(); frontend.eventLoop().submit(() -> { cancelledWaiter.set(listener.disconnect(player.identity(), "维护 \"完成\"")); joinedWaiter.set(listener.disconnect(player.identity(), "ignored duplicate")); @@ -394,14 +394,14 @@ final class ProxySessionListenerTest { assertEquals(2, readVarInt(queued)); assertEquals("queued-" + index, new ObjectMapper().readTree(readString(queued, 32767)) .path("text").asText()); - assertEquals(dev.strataproxy.api.MessageResult.SENT, + assertEquals(dev.moonbridge.api.MessageResult.SENT, queuedMessages.get(index).toCompletableFuture().get(5, TimeUnit.SECONDS)); } var kick = new java.io.ByteArrayInputStream(readFrame(input)); assertEquals(0x40, readVarInt(kick)); assertEquals("维护 \"完成\"", new ObjectMapper().readTree(readString(kick, 32767)) .path("text").asText()); - assertEquals(dev.strataproxy.api.DisconnectResult.DISCONNECTED, + assertEquals(dev.moonbridge.api.DisconnectResult.DISCONNECTED, joinedWaiter.get().toCompletableFuture().get(5, TimeUnit.SECONDS)); assertEquals(-1, input.read()); backendDone.get(5, TimeUnit.SECONDS); @@ -433,7 +433,7 @@ final class ProxySessionListenerTest { client.setSoTimeout(5000); sendLogin(client, "LeavePlacement"); PlayerIdentity player = identity.get(5, TimeUnit.SECONDS); - assertEquals(dev.strataproxy.api.DisconnectResult.DISCONNECTED, + assertEquals(dev.moonbridge.api.DisconnectResult.DISCONNECTED, listener.disconnect(player, "还在准入阶段").toCompletableFuture().get(5, TimeUnit.SECONDS)); assertLoginDisconnect(new DataInputStream(client.getInputStream()), "还在准入阶段"); assertEquals(-1, client.getInputStream().read()); @@ -492,7 +492,7 @@ final class ProxySessionListenerTest { })).get(5, TimeUnit.SECONDS); var result = listener.disconnect(player, "maintenance").toCompletableFuture(); writeSeen.get(5, TimeUnit.SECONDS); - assertEquals(dev.strataproxy.api.DisconnectResult.DISCONNECTED, result.get(8, TimeUnit.SECONDS)); + assertEquals(dev.moonbridge.api.DisconnectResult.DISCONNECTED, result.get(8, TimeUnit.SECONDS)); assertEquals(-1, client.getInputStream().read()); assertTrue(placement.isCancelled()); assertTrue(listener.allSessions().isEmpty()); @@ -585,7 +585,7 @@ final class ProxySessionListenerTest { assertEquals(0x40, readVarInt(disconnect)); assertEquals("登录后立即断开", new ObjectMapper().readTree(readString(disconnect, 32767)) .path("text").asText()); - assertEquals(dev.strataproxy.api.DisconnectResult.DISCONNECTED, + assertEquals(dev.moonbridge.api.DisconnectResult.DISCONNECTED, disconnected.toCompletableFuture().get(5, TimeUnit.SECONDS)); assertEquals(-1, input.read()); backendDone.get(5, TimeUnit.SECONDS); @@ -801,7 +801,7 @@ final class ProxySessionListenerTest { .clickEvent(net.kyori.adventure.text.event.ClickEvent.suggestCommand("/where lobby"))); }, completion -> { assertEquals("lo ", completion.arguments()); return CompletableFuture.completedFuture(List.of("lobby")); }); context.events().subscribe(ServerConnectedEvent.class, event -> { - assertFalse(Thread.currentThread().getName().startsWith("strataproxy-session-io")); + assertFalse(Thread.currentThread().getName().startsWith("moonbridge-session-io")); notificationCount.incrementAndGet(); connected.complete(event); return CompletableFuture.completedFuture(null); @@ -853,7 +853,7 @@ final class ProxySessionListenerTest { assertEquals(List.of("/where", "/weather"), completionResponse(readFrame(input))); writeFrame(output, completionRequest("/weather c")); assertEquals(List.of("clear"), completionResponse(readFrame(input))); - assertTrue(handlerThread.get(5, TimeUnit.SECONDS).startsWith("strataproxy-plugin-command-")); + assertTrue(handlerThread.get(5, TimeUnit.SECONDS).startsWith("moonbridge-plugin-command-")); assertEquals(2, accessCalls.get()); writeFrame(output, chatPacket("hello")); writeFrame(output, chatPacket("/unknown arg")); @@ -1711,7 +1711,7 @@ final class ProxySessionListenerTest { clearOutput.flush(); assertArrayEquals(new byte[]{0x03, 0x44}, readFrame(encryptedInput)); var player = listener.online().get(0); - assertEquals(dev.strataproxy.api.MessageResult.SENT, + assertEquals(dev.moonbridge.api.MessageResult.SENT, listener.sendMessage(player.identity(), "加密🙂").toCompletableFuture() .get(5, TimeUnit.SECONDS)); var encryptedMessage = new java.io.ByteArrayInputStream(readFrame(encryptedInput)); @@ -1723,7 +1723,7 @@ final class ProxySessionListenerTest { assertEquals(0x40, readVarInt(encryptedKick)); assertEquals("安全断开", new ObjectMapper().readTree(readString(encryptedKick, 32767)) .path("text").asText()); - assertEquals(dev.strataproxy.api.DisconnectResult.DISCONNECTED, + assertEquals(dev.moonbridge.api.DisconnectResult.DISCONNECTED, disconnected.toCompletableFuture().get(5, TimeUnit.SECONDS)); backendDone.get(5, TimeUnit.SECONDS); } @@ -1860,7 +1860,7 @@ final class ProxySessionListenerTest { assertArrayEquals(forgeMessage(true, new byte[]{(byte) 0xff, 3}), readFrame(encryptedInput)); writeEncryptedFrame(clearOutput, encryptor, forgeMessage(false, new byte[]{(byte) 0xff, 5})); var transfer = pendingTransfer.get(5, TimeUnit.SECONDS); - assertEquals(dev.strataproxy.api.TransferStatus.NETWORK_READY, transfer.status(), + assertEquals(dev.moonbridge.api.TransferStatus.NETWORK_READY, transfer.status(), transfer.detail().orElse("")); assertEquals(7, readVarInt(new java.io.ByteArrayInputStream(readFrame(encryptedInput)))); assertEquals(7, readVarInt(new java.io.ByteArrayInputStream(readFrame(encryptedInput)))); @@ -2333,7 +2333,7 @@ final class ProxySessionListenerTest { backendDone.get(5, TimeUnit.SECONDS); var relayField = Session.class.getDeclaredField("relay"); relayField.setAccessible(true); - var relay = (dev.strataproxy.core.relay.RawRelay.Link) relayField.get(session); + var relay = (dev.moonbridge.core.relay.RawRelay.Link) relayField.get(session); assertTrue(relay.hasPendingClientboundWrites()); backendChannel.eventLoop().submit(() -> backendChannel.pipeline() .fireExceptionCaught(new IOException("backend read failed"))).get(5, TimeUnit.SECONDS); @@ -2411,7 +2411,7 @@ final class ProxySessionListenerTest { } catch (Throwable failure) { backendDone.completeExceptionally(failure); } - }, "fake-strataproxy-backend"); + }, "fake-moonbridge-backend"); backendThread.setDaemon(true); backendThread.start(); diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/ServerListStatusIntegrationTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/ServerListStatusIntegrationTest.java similarity index 93% rename from proxy-core/src/test/java/dev/strataproxy/core/session/ServerListStatusIntegrationTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/ServerListStatusIntegrationTest.java index 63dfcce..7c055fd 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/ServerListStatusIntegrationTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/ServerListStatusIntegrationTest.java @@ -1,11 +1,11 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; import com.fasterxml.jackson.databind.ObjectMapper; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.core.protocol.MinecraftHandshake; -import dev.strataproxy.core.protocol.ProtocolProfile; -import dev.strataproxy.core.protocol.ProtocolVarInt; -import dev.strataproxy.core.protocol.ServerListStatus; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.core.protocol.MinecraftHandshake; +import dev.moonbridge.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.ServerListStatus; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.buffer.UnpooledByteBufAllocator; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/SessionTransferDispatchTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/SessionTransferDispatchTest.java similarity index 93% rename from proxy-core/src/test/java/dev/strataproxy/core/session/SessionTransferDispatchTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/SessionTransferDispatchTest.java index 8c09aa6..b694a52 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/SessionTransferDispatchTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/SessionTransferDispatchTest.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.api.TransferStatus; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.api.TransferStatus; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; import io.netty.channel.DefaultEventLoop; import io.netty.channel.local.LocalChannel; import org.junit.jupiter.api.Test; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/SessionTransferTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/SessionTransferTest.java similarity index 99% rename from proxy-core/src/test/java/dev/strataproxy/core/session/SessionTransferTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/SessionTransferTest.java index 2f8ceee..9ad694e 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/SessionTransferTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/SessionTransferTest.java @@ -1,18 +1,18 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.TransferStatus; -import dev.strataproxy.api.event.Event; -import dev.strataproxy.api.event.PlayerDisconnectedEvent; -import dev.strataproxy.api.event.ServerConnectedEvent; -import dev.strataproxy.core.event.EventDispatcher; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendCatalog; -import dev.strataproxy.core.backend.BackendHandle; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; -import dev.strataproxy.core.backend.BackendView; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.TransferStatus; +import dev.moonbridge.api.event.Event; +import dev.moonbridge.api.event.PlayerDisconnectedEvent; +import dev.moonbridge.api.event.ServerConnectedEvent; +import dev.moonbridge.core.event.EventDispatcher; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendCatalog; +import dev.moonbridge.core.backend.BackendHandle; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.BackendView; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; import io.netty.channel.ChannelDuplexHandler; @@ -1392,7 +1392,7 @@ final class SessionTransferTest { assertEquals(0x40, readVarInt(kick)); assertEquals("{\"text\":\"转服期间断开\"}", new String(kick.readNBytes(readVarInt(kick)), StandardCharsets.UTF_8)); - assertEquals(dev.strataproxy.api.DisconnectResult.DISCONNECTED, + assertEquals(dev.moonbridge.api.DisconnectResult.DISCONNECTED, disconnect.toCompletableFuture().get(5, TimeUnit.SECONDS)); assertEquals(TransferStatus.FAILED, transfer.get(5, TimeUnit.SECONDS).status()); oldClosed.get(5, TimeUnit.SECONDS); @@ -1411,7 +1411,7 @@ final class SessionTransferTest { return listener; } - private static dev.strataproxy.api.PlayerView awaitPlayer(ProxySessionListener listener) throws Exception { + private static dev.moonbridge.api.PlayerView awaitPlayer(ProxySessionListener listener) throws Exception { long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(5); while (listener.online().isEmpty() && System.nanoTime() < deadline) Thread.sleep(5); assertEquals(1, listener.online().size()); diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/TabCompletionBridgeTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/TabCompletionBridgeTest.java similarity index 97% rename from proxy-core/src/test/java/dev/strataproxy/core/session/TabCompletionBridgeTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/TabCompletionBridgeTest.java index 1b74c46..f223b97 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/TabCompletionBridgeTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/TabCompletionBridgeTest.java @@ -1,8 +1,8 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.MinecraftTabCompletion; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.MinecraftTabCompletion; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/TransferCandidateTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/TransferCandidateTest.java similarity index 96% rename from proxy-core/src/test/java/dev/strataproxy/core/session/TransferCandidateTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/TransferCandidateTest.java index d9b0226..64432ab 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/TransferCandidateTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/TransferCandidateTest.java @@ -1,7 +1,7 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.ProtocolVarInt; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/TransferFrameBufferTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/TransferFrameBufferTest.java similarity index 96% rename from proxy-core/src/test/java/dev/strataproxy/core/session/TransferFrameBufferTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/TransferFrameBufferTest.java index 986b86e..c9229c5 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/TransferFrameBufferTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/TransferFrameBufferTest.java @@ -1,6 +1,6 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.ProtocolProfile; +import dev.moonbridge.core.protocol.ProtocolProfile; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; diff --git a/proxy-core/src/test/java/dev/strataproxy/core/session/TransferFrameHandlerTest.java b/proxy-core/src/test/java/dev/moonbridge/core/session/TransferFrameHandlerTest.java similarity index 92% rename from proxy-core/src/test/java/dev/strataproxy/core/session/TransferFrameHandlerTest.java rename to proxy-core/src/test/java/dev/moonbridge/core/session/TransferFrameHandlerTest.java index f66e1ad..aca9fd8 100644 --- a/proxy-core/src/test/java/dev/strataproxy/core/session/TransferFrameHandlerTest.java +++ b/proxy-core/src/test/java/dev/moonbridge/core/session/TransferFrameHandlerTest.java @@ -1,8 +1,8 @@ -package dev.strataproxy.core.session; +package dev.moonbridge.core.session; -import dev.strataproxy.core.protocol.Minecraft1710PlayPackets; -import dev.strataproxy.core.protocol.ProtocolVarInt; -import dev.strataproxy.core.relay.RawRelay; +import dev.moonbridge.core.protocol.Minecraft1710PlayPackets; +import dev.moonbridge.core.protocol.ProtocolVarInt; +import dev.moonbridge.core.relay.RawRelay; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; diff --git a/proxy-plugin-api/build.gradle.kts b/proxy-plugin-api/build.gradle.kts index f53c95c..8578b31 100644 --- a/proxy-plugin-api/build.gradle.kts +++ b/proxy-plugin-api/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("strataproxy.java-library-conventions") + id("moonbridge.java-library-conventions") `maven-publish` } @@ -21,8 +21,8 @@ publishing { from(components["java"]) artifactId = "proxy-plugin-api" pom { - name.set("StrataProxy Plugin API") - description.set("Stable API for StrataProxy proxy-side plugins.") + name.set("MoonBridge Plugin API") + description.set("Stable API for MoonBridge proxy-side plugins.") } } } diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/AccessDecision.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/AccessDecision.java similarity index 96% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/AccessDecision.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/AccessDecision.java index 4bc7790..ee5f9e5 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/AccessDecision.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/AccessDecision.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; import net.kyori.adventure.text.Component; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandCompleter.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandCompleter.java similarity index 93% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandCompleter.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandCompleter.java index 801c1e0..1ab4317 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandCompleter.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandCompleter.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.List; import java.util.concurrent.CompletionStage; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandCompletion.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandCompletion.java similarity index 93% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandCompletion.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandCompletion.java index 81e93b2..5f379f7 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandCompletion.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandCompletion.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandHandler.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandHandler.java similarity index 87% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandHandler.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandHandler.java index c874100..b4db84b 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandHandler.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandHandler.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; /** Runs on a bounded plugin worker, never on a player's network event loop. */ @FunctionalInterface diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandInvocation.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandInvocation.java similarity index 97% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandInvocation.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandInvocation.java index d583040..721b34f 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandInvocation.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandInvocation.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; import java.util.function.Consumer; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandRegistration.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandRegistration.java similarity index 88% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandRegistration.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandRegistration.java index a81fd50..ecc1fe0 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/CommandRegistration.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/CommandRegistration.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; /** A command registration owned by one plugin. Unregistration is idempotent. */ public interface CommandRegistration extends AutoCloseable { diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Commands.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Commands.java similarity index 95% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/Commands.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/Commands.java index 7046b2c..4f0dafb 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Commands.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Commands.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; /** Registers player commands handled by this plugin at the proxy. */ public interface Commands { diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/DisconnectResult.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/DisconnectResult.java similarity index 90% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/DisconnectResult.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/DisconnectResult.java index 21b6f95..e0a2d44 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/DisconnectResult.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/DisconnectResult.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; /** The outcome of closing an exact player connection. */ public enum DisconnectResult { diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/InitialPlacementHandler.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/InitialPlacementHandler.java similarity index 94% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/InitialPlacementHandler.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/InitialPlacementHandler.java index db7470c..9e7ce04 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/InitialPlacementHandler.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/InitialPlacementHandler.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.List; import java.util.concurrent.CompletionStage; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/MessageResult.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/MessageResult.java similarity index 94% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/MessageResult.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/MessageResult.java index 03dee02..ff43d98 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/MessageResult.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/MessageResult.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; /** The outcome of sending a message to an exact player connection. */ public enum MessageResult { diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlacementDecision.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlacementDecision.java similarity index 97% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/PlacementDecision.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/PlacementDecision.java index e6e78e6..401a1e6 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlacementDecision.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlacementDecision.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; import net.kyori.adventure.text.Component; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlainTextValidation.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlainTextValidation.java similarity index 95% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/PlainTextValidation.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/PlainTextValidation.java index 4148fd2..89e4c1b 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlainTextValidation.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlainTextValidation.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlayerIdentity.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlayerIdentity.java similarity index 93% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/PlayerIdentity.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/PlayerIdentity.java index 693affd..d9bf850 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlayerIdentity.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlayerIdentity.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; import java.util.UUID; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlayerView.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlayerView.java similarity index 96% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/PlayerView.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/PlayerView.java index e7d0785..3ecacee 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PlayerView.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PlayerView.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; import java.util.Optional; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Players.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Players.java similarity index 99% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/Players.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/Players.java index 1b414be..6c1be11 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Players.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Players.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import net.kyori.adventure.text.Component; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Plugin.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Plugin.java similarity index 96% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/Plugin.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/Plugin.java index fdf13c0..8435e9c 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Plugin.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Plugin.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Optional; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PluginContext.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PluginContext.java similarity index 83% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/PluginContext.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/PluginContext.java index f8630c8..f42763c 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/PluginContext.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/PluginContext.java @@ -1,7 +1,7 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; -import dev.strataproxy.api.event.Events; -import dev.strataproxy.messaging.Messaging; +import dev.moonbridge.api.event.Events; +import dev.moonbridge.messaging.Messaging; import java.util.Map; import org.slf4j.Logger; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerDefinition.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerDefinition.java similarity index 97% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerDefinition.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerDefinition.java index eded006..249a644 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerDefinition.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerDefinition.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.net.URI; import java.util.Map; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerRegistration.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerRegistration.java similarity index 94% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerRegistration.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerRegistration.java index 1e1dc44..0494b71 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerRegistration.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerRegistration.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; /** Opaque generation-bound handle for a plugin-owned dynamic backend. */ public interface ServerRegistration { diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerView.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerView.java similarity index 95% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerView.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerView.java index 0378588..8a93108 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/ServerView.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/ServerView.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.net.URI; import java.util.Objects; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Servers.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Servers.java similarity index 96% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/Servers.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/Servers.java index e585c22..c710230 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/Servers.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/Servers.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.List; import java.util.Optional; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/TransferResult.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/TransferResult.java similarity index 95% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/TransferResult.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/TransferResult.java index f7a6035..302bb7f 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/TransferResult.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/TransferResult.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import java.util.Objects; import java.util.Optional; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/TransferStatus.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/TransferStatus.java similarity index 85% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/TransferStatus.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/TransferStatus.java index b35e84c..665b065 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/TransferStatus.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/TransferStatus.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; /** Outcome of a requested proxy network transfer. */ public enum TransferStatus { diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/ConnectionAdmissionEvent.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/ConnectionAdmissionEvent.java similarity index 86% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/ConnectionAdmissionEvent.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/ConnectionAdmissionEvent.java index 7e2c94e..e8d4ca8 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/ConnectionAdmissionEvent.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/ConnectionAdmissionEvent.java @@ -1,6 +1,6 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; -import dev.strataproxy.api.AccessDecision; +import dev.moonbridge.api.AccessDecision; import java.net.InetSocketAddress; import java.util.Objects; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/Event.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/Event.java similarity index 93% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/Event.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/Event.java index 5104861..c324cfa 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/Event.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/Event.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; /** * A core-published event whose result type describes the response accepted from its listeners. diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/EventListener.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/EventListener.java similarity index 87% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/EventListener.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/EventListener.java index 1689614..4c4d2b3 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/EventListener.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/EventListener.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; import java.util.concurrent.CompletionStage; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/EventSubscription.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/EventSubscription.java similarity index 91% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/EventSubscription.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/EventSubscription.java index 0160c6b..0458b8b 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/EventSubscription.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/EventSubscription.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; /** * A handle for a registered event listener. Closing it more than once has no additional effect. diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/Events.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/Events.java similarity index 98% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/Events.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/Events.java index b2b7443..e2191d1 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/Events.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/Events.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; /** * Typed event subscriptions available to plugins. diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/PlayerAdmissionEvent.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/PlayerAdmissionEvent.java similarity index 88% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/PlayerAdmissionEvent.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/PlayerAdmissionEvent.java index 0d25d8d..cd98e26 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/PlayerAdmissionEvent.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/PlayerAdmissionEvent.java @@ -1,7 +1,7 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.PlayerView; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.PlayerView; import java.net.InetSocketAddress; import java.util.Objects; diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/PlayerDisconnectedEvent.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/PlayerDisconnectedEvent.java similarity index 84% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/PlayerDisconnectedEvent.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/PlayerDisconnectedEvent.java index 1968d8c..a44757e 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/PlayerDisconnectedEvent.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/PlayerDisconnectedEvent.java @@ -1,6 +1,6 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; -import dev.strataproxy.api.PlayerView; +import dev.moonbridge.api.PlayerView; import java.util.Objects; /** diff --git a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/ServerConnectedEvent.java b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/ServerConnectedEvent.java similarity index 92% rename from proxy-plugin-api/src/main/java/dev/strataproxy/api/event/ServerConnectedEvent.java rename to proxy-plugin-api/src/main/java/dev/moonbridge/api/event/ServerConnectedEvent.java index 924c8f3..1237d5a 100644 --- a/proxy-plugin-api/src/main/java/dev/strataproxy/api/event/ServerConnectedEvent.java +++ b/proxy-plugin-api/src/main/java/dev/moonbridge/api/event/ServerConnectedEvent.java @@ -1,6 +1,6 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; -import dev.strataproxy.api.PlayerView; +import dev.moonbridge.api.PlayerView; import java.util.Objects; import java.util.Optional; diff --git a/proxy-plugin-api/src/test/java/dev/strataproxy/api/ApiValueTypesTest.java b/proxy-plugin-api/src/test/java/dev/moonbridge/api/ApiValueTypesTest.java similarity index 98% rename from proxy-plugin-api/src/test/java/dev/strataproxy/api/ApiValueTypesTest.java rename to proxy-plugin-api/src/test/java/dev/moonbridge/api/ApiValueTypesTest.java index 58a54bf..74fddb3 100644 --- a/proxy-plugin-api/src/test/java/dev/strataproxy/api/ApiValueTypesTest.java +++ b/proxy-plugin-api/src/test/java/dev/moonbridge/api/ApiValueTypesTest.java @@ -1,4 +1,4 @@ -package dev.strataproxy.api; +package dev.moonbridge.api; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/proxy-plugin-api/src/test/java/dev/strataproxy/api/event/EventsApiTest.java b/proxy-plugin-api/src/test/java/dev/moonbridge/api/event/EventsApiTest.java similarity index 93% rename from proxy-plugin-api/src/test/java/dev/strataproxy/api/event/EventsApiTest.java rename to proxy-plugin-api/src/test/java/dev/moonbridge/api/event/EventsApiTest.java index 6f117c3..d7ac241 100644 --- a/proxy-plugin-api/src/test/java/dev/strataproxy/api/event/EventsApiTest.java +++ b/proxy-plugin-api/src/test/java/dev/moonbridge/api/event/EventsApiTest.java @@ -1,11 +1,11 @@ -package dev.strataproxy.api.event; +package dev.moonbridge.api.event; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import dev.strataproxy.api.AccessDecision; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; +import dev.moonbridge.api.AccessDecision; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; import java.net.InetSocketAddress; import java.util.Optional; import java.util.UUID; diff --git a/settings.gradle.kts b/settings.gradle.kts index b5ea932..290278a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,7 +21,7 @@ dependencyResolutionManagement { } } -rootProject.name = "strataproxy" +rootProject.name = "moonbridge" include( "proxy-core", @@ -30,4 +30,5 @@ include( "messaging-api", "messaging-protocol", "backend-bukkit", + "backend-bukkit-api", ) diff --git a/smoke/BackendAcceptancePlugin.java b/smoke/BackendAcceptancePlugin.java index 1b43ace..320948c 100644 --- a/smoke/BackendAcceptancePlugin.java +++ b/smoke/BackendAcceptancePlugin.java @@ -1,12 +1,12 @@ -package dev.strataproxy.smoke; +package dev.moonbridge.smoke; -import dev.strataproxy.bukkit.BukkitMessagingService; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageChannel; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.Messaging; -import dev.strataproxy.messaging.Subscription; +import dev.moonbridge.bukkit.BukkitMessagingService; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageChannel; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.Messaging; +import dev.moonbridge.messaging.Subscription; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; diff --git a/smoke/BackendObserverPlugin.java b/smoke/BackendObserverPlugin.java index c65fa9e..43b5520 100644 --- a/smoke/BackendObserverPlugin.java +++ b/smoke/BackendObserverPlugin.java @@ -1,9 +1,9 @@ -package dev.strataproxy.smoke; +package dev.moonbridge.smoke; -import dev.strataproxy.bukkit.BukkitMessagingService; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.Messaging; +import dev.moonbridge.bukkit.BukkitMessagingService; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.Messaging; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; diff --git a/smoke/ChannelJava8Probe.java b/smoke/ChannelJava8Probe.java index 4affc0c..59a4d2b 100644 --- a/smoke/ChannelJava8Probe.java +++ b/smoke/ChannelJava8Probe.java @@ -1,9 +1,9 @@ -import dev.strataproxy.backendchannel.BackendChannelClient; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageChannel; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; +import dev.moonbridge.backendchannel.BackendChannelClient; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageChannel; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; import java.nio.charset.StandardCharsets; import java.util.UUID; diff --git a/smoke/ChannelRouterFixture.java b/smoke/ChannelRouterFixture.java index fb9ca2c..3e29d29 100644 --- a/smoke/ChannelRouterFixture.java +++ b/smoke/ChannelRouterFixture.java @@ -1,8 +1,8 @@ -import dev.strataproxy.app.ProxyConfiguration; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.core.control.BackendControlService; -import dev.strataproxy.messaging.*; -import dev.strataproxy.messaging.internal.LocalMessaging; +import dev.moonbridge.app.ProxyConfiguration; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.core.control.BackendControlService; +import dev.moonbridge.messaging.*; +import dev.moonbridge.messaging.internal.LocalMessaging; import java.net.ServerSocket; import java.time.Duration; diff --git a/smoke/ProxyBackendAcceptancePlugin.java b/smoke/ProxyBackendAcceptancePlugin.java index b069076..ca76c2d 100644 --- a/smoke/ProxyBackendAcceptancePlugin.java +++ b/smoke/ProxyBackendAcceptancePlugin.java @@ -1,17 +1,17 @@ -package dev.strataproxy.smoke; +package dev.moonbridge.smoke; -import dev.strataproxy.api.Plugin; -import dev.strataproxy.api.PluginContext; -import dev.strataproxy.api.ServerView; -import dev.strataproxy.messaging.Endpoint; -import dev.strataproxy.messaging.Message; -import dev.strataproxy.messaging.MessageKind; -import dev.strataproxy.messaging.MessageChannel; -import dev.strataproxy.messaging.Messaging; -import dev.strataproxy.messaging.MessagingException; -import dev.strataproxy.messaging.PublishResult; -import dev.strataproxy.messaging.SendResult; -import dev.strataproxy.messaging.Subscription; +import dev.moonbridge.api.Plugin; +import dev.moonbridge.api.PluginContext; +import dev.moonbridge.api.ServerView; +import dev.moonbridge.messaging.Endpoint; +import dev.moonbridge.messaging.Message; +import dev.moonbridge.messaging.MessageKind; +import dev.moonbridge.messaging.MessageChannel; +import dev.moonbridge.messaging.Messaging; +import dev.moonbridge.messaging.MessagingException; +import dev.moonbridge.messaging.PublishResult; +import dev.moonbridge.messaging.SendResult; +import dev.moonbridge.messaging.Subscription; import java.io.IOException; import java.net.URI; diff --git a/smoke/TcpRelayCapture.java b/smoke/TcpRelayCapture.java index daa39d1..3ed6d82 100644 --- a/smoke/TcpRelayCapture.java +++ b/smoke/TcpRelayCapture.java @@ -1,4 +1,4 @@ -package dev.strataproxy.smoke; +package dev.moonbridge.smoke; import java.io.IOException; import java.io.InputStream; diff --git a/smoke/UraniumTransferPlugin.java b/smoke/UraniumTransferPlugin.java index fdca2c5..7f50b09 100644 --- a/smoke/UraniumTransferPlugin.java +++ b/smoke/UraniumTransferPlugin.java @@ -1,14 +1,14 @@ -package dev.strataproxy.smoke; +package dev.moonbridge.smoke; -import dev.strataproxy.api.InitialPlacementHandler; -import dev.strataproxy.api.PlacementDecision; -import dev.strataproxy.api.PlayerIdentity; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.Plugin; -import dev.strataproxy.api.PluginContext; -import dev.strataproxy.api.ServerDefinition; -import dev.strataproxy.api.ServerRegistration; -import dev.strataproxy.api.TransferStatus; +import dev.moonbridge.api.InitialPlacementHandler; +import dev.moonbridge.api.PlacementDecision; +import dev.moonbridge.api.PlayerIdentity; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.Plugin; +import dev.moonbridge.api.PluginContext; +import dev.moonbridge.api.ServerDefinition; +import dev.moonbridge.api.ServerRegistration; +import dev.moonbridge.api.TransferStatus; import java.net.URI; import java.util.Map; diff --git a/smoke/UraniumTransferProbe.java b/smoke/UraniumTransferProbe.java index 862ab3f..69e1c04 100644 --- a/smoke/UraniumTransferProbe.java +++ b/smoke/UraniumTransferProbe.java @@ -1,13 +1,13 @@ -package dev.strataproxy.smoke; +package dev.moonbridge.smoke; -import dev.strataproxy.api.PlayerView; -import dev.strataproxy.api.TransferResult; -import dev.strataproxy.api.TransferStatus; -import dev.strataproxy.core.backend.BackendId; -import dev.strataproxy.core.backend.BackendOwner; -import dev.strataproxy.core.backend.BackendRegistration; -import dev.strataproxy.core.backend.InMemoryBackendCatalog; -import dev.strataproxy.core.session.ProxySessionListener; +import dev.moonbridge.api.PlayerView; +import dev.moonbridge.api.TransferResult; +import dev.moonbridge.api.TransferStatus; +import dev.moonbridge.core.backend.BackendId; +import dev.moonbridge.core.backend.BackendOwner; +import dev.moonbridge.core.backend.BackendRegistration; +import dev.moonbridge.core.backend.InMemoryBackendCatalog; +import dev.moonbridge.core.session.ProxySessionListener; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/smoke/backend-uranium.ps1 b/smoke/backend-uranium.ps1 index 516c879..6188f13 100644 --- a/smoke/backend-uranium.ps1 +++ b/smoke/backend-uranium.ps1 @@ -15,8 +15,8 @@ $serverJars = @(Get-ChildItem -LiteralPath $bundle -Filter '*-server.jar') if ($serverJars.Count -ne 1) { throw 'Expected exactly one Uranium server JAR.' } $serverJar = $serverJars[0] $serverHash = (Get-FileHash -LiteralPath $serverJar.FullName -Algorithm SHA256).Hash -$dist = Join-Path $repo 'proxy-core/build/install/strataproxy' -$hostJars = @(Get-ChildItem (Join-Path $dist 'backend-host') -Filter 'strataproxy-backend-bukkit-*.jar') +$dist = Join-Path $repo 'proxy-core/build/install/moonbridge' +$hostJars = @(Get-ChildItem (Join-Path $dist 'backend-host') -Filter 'moonbridge-backend-bukkit-*.jar') if ($hostJars.Count -ne 1) { throw 'Build the renamed host and installDist first.' } $run = Join-Path $repo ('build/backend-uranium-' + [guid]::NewGuid().ToString('N')) New-Item -ItemType Directory -Force $run | Out-Null @@ -43,7 +43,9 @@ $probeClasses = Join-Path $run 'probe-classes' $proxyClasses = Join-Path $run 'proxy-classes' New-Item -ItemType Directory -Force $controlDir, $proxyPlugins, $probeClasses, $proxyClasses | Out-Null $proxyClasspath = Join-Path $dist 'lib/*' -& (Join-Path $Java8Home 'bin/javac.exe') -cp "$($hostJars[0].FullName);$BukkitApiJar" -d $probeClasses ` +# Business plugins compile against public API artifacts only, never the host/transport. +$backendApiClasspath = Join-Path $dist 'backend-api/*' +& (Join-Path $Java8Home 'bin/javac.exe') -cp "$backendApiClasspath;$BukkitApiJar" -d $probeClasses ` (Join-Path $PSScriptRoot 'BackendAcceptancePlugin.java') (Join-Path $PSScriptRoot 'BackendObserverPlugin.java') if ($LASTEXITCODE -ne 0) { throw 'Bukkit probe compilation failed.' } & (Join-Path $Java25Home 'bin/javac.exe') -cp $proxyClasspath -d $proxyClasses ` @@ -51,14 +53,14 @@ if ($LASTEXITCODE -ne 0) { throw 'Bukkit probe compilation failed.' } if ($LASTEXITCODE -ne 0) { throw 'Proxy probe compilation failed.' } $services = Join-Path $proxyClasses 'META-INF/services' New-Item -ItemType Directory -Force $services | Out-Null -Write-Utf8 (Join-Path $services 'dev.strataproxy.api.Plugin') 'dev.strataproxy.smoke.ProxyBackendAcceptancePlugin' +Write-Utf8 (Join-Path $services 'dev.moonbridge.api.Plugin') 'dev.moonbridge.smoke.ProxyBackendAcceptancePlugin' & (Join-Path $Java25Home 'bin/jar.exe') cf (Join-Path $proxyPlugins 'acceptance.jar') -C $proxyClasses . if ($LASTEXITCODE -ne 0) { throw 'Proxy probe packaging failed.' } foreach ($role in @('Probe', 'Observer')) { $main = if ($role -eq 'Probe') { 'BackendAcceptancePlugin' } else { 'BackendObserverPlugin' } - Write-Utf8 (Join-Path $probeClasses 'plugin.yml') "name: Acceptance$role`nmain: dev.strataproxy.smoke.$main`nversion: 1.0`ndepend: [StrataProxyBackend]`n" + Write-Utf8 (Join-Path $probeClasses 'plugin.yml') "name: Acceptance$role`nmain: dev.moonbridge.smoke.$main`nversion: 1.0`ndepend: [MoonBridgeBackend]`n" & (Join-Path $Java8Home 'bin/jar.exe') cf (Join-Path $run "Acceptance$role.jar") ` - -C $probeClasses "dev/strataproxy/smoke/$main.class" -C $probeClasses plugin.yml + -C $probeClasses "dev/moonbridge/smoke/$main.class" -C $probeClasses plugin.yml if ($LASTEXITCODE -ne 0) { throw 'Bukkit probe packaging failed.' } } # Each run is isolated. Copy runtime libraries, the server and the already accepted @@ -66,7 +68,7 @@ foreach ($role in @('Probe', 'Observer')) { foreach ($node in @('a', 'b')) { $directory = Join-Path $run $node $pluginDir = Join-Path $directory 'plugins' - $hostConfigDir = Join-Path $pluginDir 'StrataProxyBackend' + $hostConfigDir = Join-Path $pluginDir 'MoonBridgeBackend' New-Item -ItemType Directory -Force $directory, $pluginDir, $hostConfigDir | Out-Null Copy-Item -LiteralPath $serverJar.FullName -Destination $directory Copy-Item -LiteralPath (Join-Path $bundle 'libraries') -Destination $directory -Recurse @@ -95,7 +97,7 @@ secret: isolated-acceptance-secret-at-least-32-bytes } $controlYaml = $controlDir.Replace('\', '/') $pluginYaml = $proxyPlugins.Replace('\', '/') -$config = Join-Path $run 'strataproxy.yml' +$config = Join-Path $run 'moonbridge.yml' Write-Utf8 $config @" listen: "127.0.0.1:$proxyPort" authentication: OFFLINE @@ -103,7 +105,7 @@ backends: [] plugins: directory: "$pluginYaml" enabled: - dev.strataproxy.smoke.ProxyBackendAcceptancePlugin: + dev.moonbridge.smoke.ProxyBackendAcceptancePlugin: controlDir: "$controlYaml" aPort: "$aPort" bPort: "$bPort" @@ -142,7 +144,7 @@ function Start-Owned([string]$Name, [string]$Executable, [string]$Directory, [st return $entry } function Start-Proxy([string]$Name) { - return Start-Owned $Name (Join-Path $Java25Home 'bin/java.exe') $run @('-cp', $proxyClasspath, 'dev.strataproxy.app.ProxyMain', '--config', $config) + return Start-Owned $Name (Join-Path $Java25Home 'bin/java.exe') $run @('-cp', $proxyClasspath, 'dev.moonbridge.app.ProxyMain', '--config', $config) } function Start-Backend([string]$Node, [string]$Name) { $log = Join-Path $run "$Node/logs/latest.log" diff --git a/smoke/channel-java8.ps1 b/smoke/channel-java8.ps1 index 5edbfb6..186e094 100644 --- a/smoke/channel-java8.ps1 +++ b/smoke/channel-java8.ps1 @@ -6,9 +6,9 @@ $ErrorActionPreference = 'Stop' $repo = Split-Path -Parent $PSScriptRoot $fixtureClasses = Join-Path $repo 'build/channel-smoke/router' $probeClasses = Join-Path $repo 'build/channel-smoke/probe' -$proxyClasspath = Join-Path $repo 'proxy-core/build/install/strataproxy/lib/*' -$backendClasspath = Join-Path $repo 'proxy-core/build/install/strataproxy/backend-client/*' -if (-not (Test-Path (Join-Path $repo 'proxy-core/build/install/strataproxy/lib'))) { +$proxyClasspath = Join-Path $repo 'proxy-core/build/install/moonbridge/lib/*' +$backendClasspath = Join-Path $repo 'proxy-core/build/install/moonbridge/backend-client/*' +if (-not (Test-Path (Join-Path $repo 'proxy-core/build/install/moonbridge/lib'))) { throw 'Run gradlew :proxy-core:installDist first.' } New-Item -ItemType Directory -Force $fixtureClasses, $probeClasses | Out-Null diff --git a/smoke/container-channel.sh b/smoke/container-channel.sh index 3f4c0ae..0f71c30 100644 --- a/smoke/container-channel.sh +++ b/smoke/container-channel.sh @@ -2,14 +2,14 @@ set -eu repo_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) -install="$repo_root/proxy-core/build/install/strataproxy" +install="$repo_root/proxy-core/build/install/moonbridge" python_image='docker.gitea.com/runner-images@sha256:fd911d7417bfbf0f454530e447da95b58001e1df41bbc5e1a8dd35d432575aae' java_image='eclipse-temurin@sha256:8da0490fa9a3c26867012019565948eef0ee69438f5c75ac28146967bae984b5' suffix=$(python3 -c 'import uuid; print(uuid.uuid4().hex[:10])') -network="strataproxy-channel-$suffix" +network="moonbridge-channel-$suffix" backend="sp-backend-$suffix" proxy="sp-proxy-$suffix" -work=$(mktemp -d "${TMPDIR:-/tmp}/strataproxy-channel.XXXXXX") +work=$(mktemp -d "${TMPDIR:-/tmp}/moonbridge-channel.XXXXXX") secret=$(python3 -c 'import secrets; print(secrets.token_hex(32))') cleanup() { @@ -27,7 +27,7 @@ authentication: OFFLINE allowOfflinePublicAccess: true backends: [] plugins: - directory: "/opt/strataproxy/plugins" + directory: "/opt/moonbridge/plugins" enabled: {} backendChannel: listen: "0.0.0.0:28081" @@ -52,11 +52,11 @@ done if [ "$ready" -ne 1 ]; then docker logs "$backend"; exit 1; fi docker run -d --network "$network" --name "$proxy" \ - -v "$install:/opt/strataproxy:ro" -v "$work/config.yml:/opt/strataproxy.yml:ro" \ - --entrypoint java "$java_image" -cp '/opt/strataproxy/lib/*' \ - dev.strataproxy.app.ProxyMain --config /opt/strataproxy.yml >/dev/null + -v "$install:/opt/moonbridge:ro" -v "$work/config.yml:/opt/moonbridge.yml:ro" \ + --entrypoint java "$java_image" -cp '/opt/moonbridge/lib/*' \ + dev.moonbridge.app.ProxyMain --config /opt/moonbridge.yml >/dev/null if ! docker run --rm --network "$network" -v "$repo_root:/work:ro" \ - -e "STRATAPROXY_CHANNEL_SECRET=$secret" --entrypoint python3 "$python_image" \ + -e "MOONBRIDGE_CHANNEL_SECRET=$secret" --entrypoint python3 "$python_image" \ /work/smoke/container-network.py client control "$proxy" "$backend"; then docker logs "$proxy" || true docker logs "$backend" || true diff --git a/smoke/container-network.ps1 b/smoke/container-network.ps1 index 2148002..c07e0e4 100644 --- a/smoke/container-network.ps1 +++ b/smoke/container-network.ps1 @@ -3,12 +3,12 @@ param() $ErrorActionPreference = 'Stop' $repoRoot = Split-Path -Parent $PSScriptRoot -$install = Join-Path $repoRoot 'proxy-core/build/install/strataproxy' +$install = Join-Path $repoRoot 'proxy-core/build/install/moonbridge' $work = Join-Path $repoRoot 'build/container-network-smoke' $pythonImage = 'docker.gitea.com/runner-images@sha256:fd911d7417bfbf0f454530e447da95b58001e1df41bbc5e1a8dd35d432575aae' $javaImage = 'eclipse-temurin@sha256:8da0490fa9a3c26867012019565948eef0ee69438f5c75ac28146967bae984b5' $suffix = [guid]::NewGuid().ToString('N').Substring(0, 10) -$network = "strataproxy-smoke-$suffix" +$network = "moonbridge-smoke-$suffix" $createdNetwork = $false $secret = [Convert]::ToHexString([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32)) @@ -83,7 +83,7 @@ listen: "0.0.0.0:25577" authentication: OFFLINE allowOfflinePublicAccess: true plugins: - directory: "/opt/strataproxy/plugins" + directory: "/opt/moonbridge/plugins" $enabled $backendConfig $controlConfig @@ -95,11 +95,11 @@ $controlConfig '/work/smoke/container-network.py', 'backend', "$probes") | Out-Null WaitBackend $backend InvokeDocker @('run', '-d', '--network', $network, '--name', $proxy, - '-v', "${install}:/opt/strataproxy:ro", '-v', "${config}:/opt/strataproxy.yml:ro", - '--entrypoint', 'java', $javaImage, '-cp', '/opt/strataproxy/lib/*', - 'dev.strataproxy.app.ProxyMain', '--config', '/opt/strataproxy.yml') | Out-Null + '-v', "${install}:/opt/moonbridge:ro", '-v', "${config}:/opt/moonbridge.yml:ro", + '--entrypoint', 'java', $javaImage, '-cp', '/opt/moonbridge/lib/*', + 'dev.moonbridge.app.ProxyMain', '--config', '/opt/moonbridge.yml') | Out-Null $clientArgs = @('run', '--rm', '--network', $network, '-v', "${repoRoot}:/work:ro") - if ($mode -eq 'control') { $clientArgs += @('-e', "STRATAPROXY_CHANNEL_SECRET=$secret") } + if ($mode -eq 'control') { $clientArgs += @('-e', "MOONBRIDGE_CHANNEL_SECRET=$secret") } $clientArgs += @('--entrypoint', 'python3', $pythonImage, '/work/smoke/container-network.py', 'client', $mode, $proxy, $backend) InvokeDocker $clientArgs | Write-Output diff --git a/smoke/container-network.py b/smoke/container-network.py index 745e4ea..e5b728b 100644 --- a/smoke/container-network.py +++ b/smoke/container-network.py @@ -216,7 +216,7 @@ def client(mode, host, backend_host): wait_online(host, 0) control = None if mode == "control": - control = control_register(host, backend_host, os.environ["STRATAPROXY_CHANNEL_SECRET"]) + control = control_register(host, backend_host, os.environ["MOONBRIDGE_CHANNEL_SECRET"]) try: with wait_login(host) as peer: probe(peer, 42) diff --git a/smoke/local-uranium-transfer.ps1 b/smoke/local-uranium-transfer.ps1 index ab27a6a..6bf6257 100644 --- a/smoke/local-uranium-transfer.ps1 +++ b/smoke/local-uranium-transfer.ps1 @@ -22,9 +22,9 @@ if ($ReturnToOld -and -not $InstalledPlugin) { if (-not $PrismInstanceFolder) { $PrismInstanceFolder = $PrismInstance } $repoRoot = Split-Path -Parent $PSScriptRoot $bundle = (Resolve-Path -LiteralPath $BundlePath).Path -$proxyLib = Join-Path $repoRoot 'proxy-core\build\install\strataproxy\lib' +$proxyLib = Join-Path $repoRoot 'proxy-core\build\install\moonbridge\lib' if (-not (Test-Path -LiteralPath $Java8Path) -or -not (Test-Path -LiteralPath $proxyLib)) { - throw 'Java 8 and the installed StrataProxy distribution are required' + throw 'Java 8 and the installed MoonBridge distribution are required' } if ((Get-Content -LiteralPath (Join-Path $bundle 'eula.txt') -Raw).Trim() -ne 'eula=true') { throw 'The supplied Uranium bundle must already contain eula=true' @@ -101,7 +101,7 @@ server-port=$port server-ip=127.0.0.1 online-mode=false level-name=world -motd=StrataProxy Uranium transfer smoke +motd=MoonBridge Uranium transfer smoke "@ | Set-Content -LiteralPath (Join-Path $directory 'server.properties') -Encoding utf8 if ($DebugSession) { $cauldronConfig = Join-Path $directory 'cauldron.yml' @@ -180,7 +180,7 @@ try { $tapLog = Join-Path $runDir ("tap-$($target.Name).log") $tapStdout = Join-Path $runDir ("tap-$($target.Name).stdout.log") $tap = Start-Process -FilePath $java -ArgumentList @( - '-cp', ('"{0}"' -f $classes), 'dev.strataproxy.smoke.TcpRelayCapture', + '-cp', ('"{0}"' -f $classes), 'dev.moonbridge.smoke.TcpRelayCapture', $routePort, $target.Port, ('"{0}"' -f $tapLog) ) -WindowStyle Hidden -PassThru -RedirectStandardOutput $tapStdout ` -RedirectStandardError (Join-Path $runDir ("tap-$($target.Name).stderr.log")) @@ -195,8 +195,8 @@ try { if ($LASTEXITCODE -ne 0) { throw 'Could not compile Uranium transfer plugin' } $serviceDir = Join-Path $pluginClasses 'META-INF\services' New-Item -ItemType Directory -Path $serviceDir -Force | Out-Null - 'dev.strataproxy.smoke.UraniumTransferPlugin' | - Set-Content -LiteralPath (Join-Path $serviceDir 'dev.strataproxy.api.Plugin') + 'dev.moonbridge.smoke.UraniumTransferPlugin' | + Set-Content -LiteralPath (Join-Path $serviceDir 'dev.moonbridge.api.Plugin') $pluginDir = Join-Path $runDir 'proxy-plugins' New-Item -ItemType Directory -Path $pluginDir -Force | Out-Null & jar -cf (Join-Path $pluginDir 'uranium-transfer-smoke.jar') -C $pluginClasses . @@ -204,7 +204,7 @@ try { $proxyPort = FreePort while ($proxyPort -eq $oldPort -or $proxyPort -eq $newPort -or $proxyPort -eq $oldRoutePort -or $proxyPort -eq $newRoutePort) { $proxyPort = FreePort } - $config = Join-Path $runDir 'strataproxy.yml' + $config = Join-Path $runDir 'moonbridge.yml' $pluginDirYaml = $pluginDir.Replace('\', '/') $returnToOldSetting = if ($ReturnToOld) { 'true' } else { 'false' } @" @@ -213,7 +213,7 @@ authentication: OFFLINE plugins: directory: "$pluginDirYaml" enabled: - dev.strataproxy.smoke.UraniumTransferPlugin: + dev.moonbridge.smoke.UraniumTransferPlugin: newPort: "$newRoutePort" returnToOld: "$returnToOldSetting" backends: @@ -230,7 +230,7 @@ backends: %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n - + '@ | Set-Content -LiteralPath $logbackConfig -Encoding utf8 @@ -238,7 +238,7 @@ backends: } $proxy = Start-Process -FilePath $java -ArgumentList @( $debugJvmArgs - '-cp', ('"{0}"' -f $classpath), 'dev.strataproxy.app.ProxyMain', + '-cp', ('"{0}"' -f $classpath), 'dev.moonbridge.app.ProxyMain', '--config', ('"{0}"' -f $config) ) -WindowStyle Hidden -PassThru -RedirectStandardOutput $proxyLog ` -RedirectStandardError (Join-Path $runDir 'proxy.stderr.log') @@ -314,7 +314,7 @@ backends: } } else { $probeMode = if ($ReturnToOld) { '--external-roundtrip' } else { '--external' } - & java -cp "$classes;$classpath" dev.strataproxy.smoke.UraniumTransferProbe $probeMode $proxyPort + & java -cp "$classes;$classpath" dev.moonbridge.smoke.UraniumTransferProbe $probeMode $proxyPort if ($LASTEXITCODE -ne 0) { throw "Installed-plugin transfer probe failed: $LASTEXITCODE" } if ($ReturnToOld) { Write-Output 'REAL_URANIUM_PLUGIN_ROUNDTRIP_PASS dynamicRegistration=true transfers=2 status=NETWORK_READY' @@ -326,7 +326,7 @@ backends: WaitForProxyLog $proxyLog 'SMOKE_PLUGIN_TRANSFER_PASS status=NETWORK_READY' if ($ReturnToOld) { WaitForProxyLog $proxyLog 'SMOKE_PLUGIN_RETURN_PASS status=NETWORK_READY' } } else { - & java -cp "$classes;$classpath" dev.strataproxy.smoke.UraniumTransferProbe $oldPort $newPort + & java -cp "$classes;$classpath" dev.moonbridge.smoke.UraniumTransferProbe $oldPort $newPort if ($LASTEXITCODE -ne 0) { throw "Uranium transfer probe failed: $LASTEXITCODE" } } $playerName = if ($PrismClient) { 'PrismSmoke' } else { 'NettyProbe' } diff --git a/smoke/local-uranium.ps1 b/smoke/local-uranium.ps1 index cb293b1..c44bf56 100644 --- a/smoke/local-uranium.ps1 +++ b/smoke/local-uranium.ps1 @@ -25,9 +25,9 @@ $probeClasses = if ($PrismClient) { $null } else { if (-not $ProbeClassesPath) { throw 'ProbeClassesPath is required without -PrismClient' } (Resolve-Path -LiteralPath $ProbeClassesPath).Path } -$proxyLib = Join-Path $repoRoot 'proxy-core\build\install\strataproxy\lib' +$proxyLib = Join-Path $repoRoot 'proxy-core\build\install\moonbridge\lib' if (-not (Test-Path -LiteralPath $Java8Path) -or -not (Test-Path -LiteralPath $proxyLib)) { - throw 'Java 8 and the installed StrataProxy distribution are required' + throw 'Java 8 and the installed MoonBridge distribution are required' } if ((Get-Content -LiteralPath (Join-Path $bundle 'eula.txt') -Raw).Trim() -ne 'eula=true') { throw 'The supplied Uranium bundle must already contain eula=true' @@ -67,7 +67,7 @@ server-port=$serverPort server-ip=127.0.0.1 online-mode=false level-name=world -motd=StrataProxy local Uranium smoke +motd=MoonBridge local Uranium smoke "@ | Set-Content -LiteralPath (Join-Path $runDir 'server.properties') -Encoding utf8 $serverInfo = [System.Diagnostics.ProcessStartInfo]::new() @@ -102,7 +102,7 @@ try { throw 'Uranium did not report ready within 120 seconds' } - $config = Join-Path $runDir 'strataproxy.yml' + $config = Join-Path $runDir 'moonbridge.yml' @" listen: "127.0.0.1:$proxyPort" authentication: OFFLINE @@ -116,7 +116,7 @@ backends: $java = (Get-Command java.exe -ErrorAction Stop).Source $classpath = Join-Path $proxyLib '*' $proxy = Start-Process -FilePath $java -ArgumentList @( - '-cp', ('"{0}"' -f $classpath), 'dev.strataproxy.app.ProxyMain', + '-cp', ('"{0}"' -f $classpath), 'dev.moonbridge.app.ProxyMain', '--config', ('"{0}"' -f $config) ) -WindowStyle Hidden -PassThru -RedirectStandardOutput (Join-Path $runDir 'proxy.stdout.log') ` -RedirectStandardError (Join-Path $runDir 'proxy.stderr.log') @@ -169,7 +169,7 @@ public final class RunThroughProxy { & javac -cp $probeClasses -d $probeOutput $source if ($LASTEXITCODE -ne 0) { throw 'Could not compile Uranium protocol probe wrapper' } & java -cp "$probeOutput;$probeClasses" cc.uraniummc.rfg.smoke.RunThroughProxy $proxyPort - if ($LASTEXITCODE -ne 0) { throw "Protocol probe failed through StrataProxy: $LASTEXITCODE" } + if ($LASTEXITCODE -ne 0) { throw "Protocol probe failed through MoonBridge: $LASTEXITCODE" } Write-Output "REAL_URANIUM_PROXY_PASS serverPort=$serverPort proxyPort=$proxyPort" } } finally { diff --git a/smoke/results/2026-09-27-moonbridge-api.md b/smoke/results/2026-09-27-moonbridge-api.md new file mode 100644 index 0000000..9248e12 --- /dev/null +++ b/smoke/results/2026-09-27-moonbridge-api.md @@ -0,0 +1,44 @@ +# MoonBridge 改名与独立后端 API 验收 + +日期:2026-09-27。基线:`21011d51bd7ba01cdabd356f290fc83e2659776f`,验证对象为包含本记录的改名/API 拆分提交。 + +## 变更与构件边界 + +- 仓库和项目名为 MoonBridge,Java 包为 `dev.moonbridge`,启动命令和配置分别为 `moonbridge`、`moonbridge.yml`。 +- 部署插件为 `MoonBridgeBackend`,入口为 `dev.moonbridge.bukkit.MoonBridgeBackendPlugin`。 +- 新 `backend-bukkit-api` 只包含 `BukkitMessagingService` 接口,Java class major 为 52;POM 的唯一项目依赖是 compile scope 的 `messaging-api`。Bukkit API 由服务器提供。 +- 发行包 `backend-api/` 提供两个编译 API JAR;宿主统一提供运行时 API 类、消息服务、认证连接及生命周期清理。 +- 业务验收插件用 Java 8、两个 API JAR 和实际 Uranium Bukkit API 编译,编译路径没有宿主或传输 SDK;插件 JAR 不打包 API。 + +## 构建验证 + +`gradlew --no-daemon clean check`:成功,244 项测试,0 失败、0 错误、0 跳过。 + +API 拆分后再次执行 `check :backend-bukkit-api:generatePomFileForBukkitApiPublication :backend-bukkit-api:sourcesJar :backend-bukkit-api:javadocJar :proxy-core:distZip`:成功;受影响后端测试重新执行,未变测试复用先前结果。API/宿主构件检查、安装发行包的帮助、版本和配置校验全部通过。宿主、API 和发行 ZIP 的条目未残留旧包名。 + +## 真实运行验收 + +复现:按 `docs/testing.md` 准备已接受 EULA 的隔离 Uranium 包,执行 `smoke/backend-uranium.ps1 -BundlePath -BukkitApiJar `。 + +- 运行目录:`build/backend-uranium-d6b2681ef29a4b21b0751a5d19903dbc`。 +- Java 8 后端、Java 25 Proxy;真实 Uranium 服务端和 Bukkit 插件加载器;两个全新隔离世界,无在线玩家。 +- 服务端:`Uranium-1710-rfg-bridge-fea65fe4d9-server.jar`;SHA-256:`8AC63D595166720E163B07047C76C903ACB673254F3FD473DC122CE98A9517E5`。 +- `baseline`:双后端自动注册、Proxy/后端间请求、UUID/replyTo/source/target、跨节点广播、多插件订阅和 Bukkit 主线程断言通过。 +- `reconnect`:停止并重启 Proxy,后端自动重连注册,通信恢复。 +- `disable`:停用一个业务插件后其请求返回 NO_HANDLER,另一插件仍响应,后端仍注册。 +- `b-absent-fast`:B 正常关闭后在租约到期前完成注销,A 仍响应。 +- `b-present`:B 重启后注册和两个业务插件通信恢复。 +- `b-absent`:强制终止 B 后租约到期清理,A 仍响应。 +- 第二次 `b-present`:再次启动 B,注册和通信恢复。 + +最终 `BACKEND_URANIUM_PASS`,脚本退出码 0;脚本关闭并等待其拥有的服务端进程退出。 + +## 已验收构件 SHA-256 + +| 构件 | SHA-256 | +| --- | --- | +| `moonbridge-backend-bukkit-0.1.0-SNAPSHOT.jar` | `866CCBB2531C3DE752BE75EA9639A6AB8250B78F59CBFE48006F103E9C887CEF` | +| `backend-bukkit-api-0.1.0-SNAPSHOT.jar` | `628CF6B2E19D94DFF877CA2A4FFF21051466672563A5EE9DD9BEF7A861F784F0` | +| `moonbridge-0.1.0-SNAPSHOT.zip` | `5A73F3FDEEDD528C5FD8BBB933833F580BBEEE5C714E2580D47473FED5155138` | + +本记录证明本地构建和实际服务端功能验收;不代表 Maven 已发布、完整整合包兼容、真实玩家富文本显示或生产容量验证。此前 smoke/benchmark 历史记录保留原始名称和路径。