From 03467a6f45e34941aaf6035111b0193fbc56a1d8 Mon Sep 17 00:00:00 2001 From: Him188 Date: Fri, 30 Oct 2020 10:28:18 +0800 Subject: [PATCH] Simplify source root structure --- .../mirai/console/codegen => }/Codegen.kt | 0 .../codegen => }/MessageScopeCodegen.kt | 0 .../codegen => }/ValuePluginDataCodegen.kt | 0 .../codegen => }/old/JSettingCodegen.kt | 0 .../old/SettingValueUseSiteCodegen.kt | 0 .../codegen => }/old/ValueImplCodegen.kt | 0 .../console/codegen => }/old/ValuesCodegen.kt | 0 .../mamoe/mirai/console/codegen => }/util.kt | 0 .../mamoe/mirai/console => }/MiraiConsole.kt | 0 .../MiraiConsoleFrontEndDescription.kt | 0 .../MiraiConsoleImplementation.kt | 0 .../console => }/command/AbstractCommand.kt | 0 .../console => }/command/BuiltInCommands.kt | 0 .../mirai/console => }/command/Command.kt | 0 .../command/CommandExecuteResult.kt | 0 .../command/CommandExecutionException.kt | 0 .../console => }/command/CommandManager.kt | 0 .../console => }/command/CommandOwner.kt | 0 .../CommandPermissionDeniedException.kt | 0 .../console => }/command/CommandSender.kt | 0 .../console => }/command/CompositeCommand.kt | 0 .../IllegalCommandArgumentException.kt | 0 .../mirai/console => }/command/RawCommand.kt | 0 .../console => }/command/SimpleCommand.kt | 0 .../descriptor/CommandArgumentContext.kt | 0 .../CommandArgumentParserBuiltins.kt | 0 .../command/descriptor/CommandParameter.kt | 0 .../command/descriptor/CommandSignature.kt | 0 .../descriptor/CommandValueArgumentParser.kt | 0 .../command/descriptor/Exceptions.kt | 0 .../ExperimentalCommandDescriptors.kt | 0 .../command/descriptor/TypeVariant.kt | 0 .../command/java/JCompositeCommand.kt | 0 .../console => }/command/java/JRawCommand.kt | 0 .../command/java/JSimpleCommand.kt | 0 .../console => }/command/parse/CommandCall.kt | 0 .../command/parse/CommandCallParser.kt | 0 .../command/parse/CommandValueArgument.kt | 0 .../parse/SpaceSeparatedCommandCallParser.kt | 0 .../resolve/BuiltInCommandCallResolver.kt | 0 .../command/resolve/CommandCallResolver.kt | 0 .../command/resolve/ResolvedCommandCall.kt | 0 .../compiler => }/common/ResolveContext.kt | 0 .../compiler => }/common/RestrictedScope.kt | 0 .../console => }/data/AbstractPluginData.kt | 0 .../console => }/data/AutoSavePluginConfig.kt | 0 .../console => }/data/AutoSavePluginData.kt | 0 .../data/AutoSavePluginDataHolder.kt | 0 .../mirai/console => }/data/PluginConfig.kt | 0 .../mirai/console => }/data/PluginData.kt | 0 .../console => }/data/PluginDataExtensions.kt | 0 .../console => }/data/PluginDataHolder.kt | 0 .../console => }/data/PluginDataStorage.kt | 0 .../mamoe/mirai/console => }/data/Value.kt | 0 .../console => }/data/ValueDescription.kt | 0 .../mirai/console => }/data/ValueName.kt | 0 .../data/java/JAutoSavePluginConfig.kt | 0 .../data/java/JAutoSavePluginData.kt | 0 .../events/CommandExecutionEvent.kt | 0 .../mirai/console => }/events/ConsoleEvent.kt | 0 .../extension/ComponentStorage.kt | 0 .../mirai/console => }/extension/Extension.kt | 0 .../extension/ExtensionException.kt | 0 .../console => }/extension/ExtensionPoint.kt | 0 .../extension/PluginComponentStorage.kt | 0 .../extensions/BotConfigurationAlterer.kt | 0 .../extensions/CommandCallParserProvider.kt | 0 .../extensions/CommandCallResolverProvider.kt | 0 .../extensions/PermissionServiceProvider.kt | 0 .../extensions/PluginLoaderProvider.kt | 0 .../extensions/PostStartupExtension.kt | 0 .../extensions/SingletonExtensionSelector.kt | 0 .../internal/MiraiConsoleBuildConstants.kt | 0 .../MiraiConsoleImplementationBridge.kt | 0 .../internal/command/CommandManagerImpl.kt | 0 .../internal/command/CommandReflector.kt | 0 .../console => }/internal/command/internal.kt | 0 .../internal/data/CompositeValueImpl.kt | 0 .../data/MemoryPluginDataStorageImpl.kt | 0 .../data/MultiFilePluginDataStorageImpl.kt | 0 .../internal/data/PluginDataImpl.kt | 0 .../internal/data/_PluginData.value.kt | 0 .../data/_PrimitiveValueDeclarations.kt | 0 .../internal/data/builtins/AutoLoginConfig.kt | 0 .../data/builtins/ConsoleDataScope.kt | 0 .../internal/data/collectionUtil.kt | 0 .../internal/data/reflectionUtils.kt | 0 .../internal/data/serializerHelper.kt | 0 .../internal/data/valueFromKTypeImpl.kt | 0 .../BuiltInSingletonExtensionSelector.kt | 0 .../extension/ComponentStorageInternal.kt | 0 .../AbstractConcurrentPermissionService.kt | 0 .../permission/BuiltInPermissionServices.kt | 0 .../permission/parseFromStringImpl.kt | 0 .../plugin/BuiltInJvmPluginLoaderImpl.kt | 0 .../internal/plugin/Exceptions.kt | 0 .../internal/plugin/ExportManagerImpl.kt | 0 .../internal/plugin/JvmPluginClassLoader.kt | 0 .../internal/plugin/JvmPluginInternal.kt | 0 .../internal/plugin/PluginManagerImpl.kt | 0 .../console => }/internal/util/ByteUtils.kt | 0 .../console => }/internal/util/CommonUtils.kt | 0 .../internal/util/ConsoleInputImpl.kt | 0 .../internal/util/JavaPluginSchedulerImpl.kt | 0 .../internal/util/PluginServiceHelper.kt | 0 .../internal/util/semver/RangeTokenReader.kt | 0 .../util/semver/SemVersionInternal.kt | 0 .../console => }/permission/Permission.kt | 0 .../console => }/permission/PermissionId.kt | 0 .../permission/PermissionIdNamespace.kt | 0 .../permission/PermissionImplementation.kt | 0 .../PermissionRegistryConflictException.kt | 0 .../permission/PermissionService.kt | 0 .../console => }/permission/Permittee.kt | 0 .../console => }/permission/PermitteeId.kt | 0 .../mamoe/mirai/console => }/plugin/Plugin.kt | 0 .../plugin/PluginFileExtensions.kt | 0 .../console => }/plugin/PluginManager.kt | 0 .../console => }/plugin/ResourceContainer.kt | 0 .../plugin/center/PluginCenter.kt | 0 .../IllegalPluginDescriptionException.kt | 0 .../plugin/description/PluginDependency.kt | 0 .../plugin/description/PluginDescription.kt | 0 .../plugin/jvm/AbstractJvmPlugin.kt | 0 .../console => }/plugin/jvm/ExportManager.kt | 0 .../console => }/plugin/jvm/JavaPlugin.kt | 0 .../plugin/jvm/JavaPluginScheduler.kt | 0 .../console => }/plugin/jvm/JvmPlugin.kt | 0 .../plugin/jvm/JvmPluginDescription.kt | 0 .../plugin/jvm/JvmPluginLoader.kt | 0 .../console => }/plugin/jvm/KotlinPlugin.kt | 0 .../plugin/loader/FilePluginLoader.kt | 0 .../plugin/loader/PluginLoadException.kt | 0 .../plugin/loader/PluginLoader.kt | 0 .../mirai/console => }/util/Annotations.kt | 0 .../mirai/console => }/util/ConsoleInput.kt | 0 .../mirai/console => }/util/ContactUtils.kt | 0 .../console => }/util/CoroutineScopeUtils.kt | 0 .../mirai/console => }/util/MessageScope.kt | 0 .../mirai/console => }/util/MessageUtils.kt | 0 .../mirai/console => }/util/SemVersion.kt | 0 .../mirai/console => }/util/StandardUtils.kt | 0 .../mirai/console => }/util/retryCatching.kt | 0 .../console => test}/TestMiraiConosle.kt | 0 .../console => test}/command/TestCommand.kt | 0 .../command/commanTestingUtil.kt | 0 .../console => test}/data/SettingTest.kt | 0 .../permission/PermissionsBasicsTest.kt | 0 .../console => test}/util/TestSemVersion.kt | 0 build.gradle.kts | 132 +++++++++++++++++- .../src/main/kotlin/SetCompileTargetPlugin.kt | 45 ------ docs/Commands.md | 86 ++++++------ docs/Extensions.md | 10 +- docs/Permissions.md | 18 +-- docs/PluginData.md | 72 +++++----- docs/Plugins.md | 56 ++++---- .../MiraiConsoleGraphicalLoader.kt | 0 .../console/graphical => }/MiraiGraphical.kt | 0 .../MiraiGraphicalFrontEndController.kt | 0 .../graphical => }/event/ReloadEvent.kt | 0 .../src/main/resources/character.png | Bin 30438 -> 0 bytes .../src/main/resources/logo.png | Bin 16453 -> 0 bytes .../console/graphical => }/model/BotModel.kt | 0 .../graphical => }/model/ConsoleInfo.kt | 0 .../graphical => }/model/GlobalSetting.kt | 0 .../graphical => }/model/PluginModel.kt | 0 .../model/VerificationCodeModel.kt | 0 .../stylesheet/BaseStyleSheet.kt | 0 .../stylesheet/LoginViewStyleSheet.kt | 0 .../stylesheet/PluginViewStyleSheet.kt | 0 .../stylesheet/PrimaryStyleSheet.kt | 0 .../graphical => }/util/JFoenixAdaptor.kt | 0 .../mirai/console/graphical => }/util/SVG.kt | 0 .../console/graphical => }/util/controls.kt | 0 .../console/graphical => }/view/Decorator.kt | 0 .../console/graphical => }/view/LoginView.kt | 0 .../graphical => }/view/PluginsCenterView.kt | 0 .../graphical => }/view/PluginsView.kt | 0 .../graphical => }/view/PrimaryView.kt | 0 .../graphical => }/view/SettingsView.kt | 0 .../graphical => }/view/dialog/InputDialog.kt | 0 .../view/dialog/PluginDetailFragment.kt | 0 .../view/dialog/VerificationCodeFragment.kt | 0 .../{src/test/kotlin => test}/Main.kt | 0 .../terminal => }/BufferedOutputStream.kt | 0 .../console/terminal => }/ConsoleInputImpl.kt | 0 .../terminal => }/ConsoleTerminalSettings.kt | 0 .../console/terminal => }/ConsoleThread.kt | 0 .../MiraiConsoleImplementationTerminal.kt | 0 .../MiraiConsoleTerminalLoader.kt | 0 .../console/pure/MiraiConsolePureLoader.kt | 0 .../terminal => }/noconsole/NoConsole.kt | 0 .../src/diagnostics/MiraiConsoleErrors.kt | 69 +++++---- .../MiraiConsoleErrorsRendering.kt | 10 +- .../common => }/resolve/resolveCommon.kt | 0 .../common => }/resolve/resolveTypes.kt | 0 .../compiler/common => }/utilCommon.kt | 0 .../IGNORED_DEPENDENCIES_IN_SHADOW.kt | 0 .../gradle => }/MiraiConsoleExtension.kt | 0 .../gradle => }/MiraiConsoleGradlePlugin.kt | 0 .../console/gradle => }/VersionConstants.kt | 0 tools/intellij-plugin/README.md | 2 +- .../main => }/resources/META-INF/plugin.xml | 0 .../resources/icons/commandDeclaration.svg | 0 .../main => }/resources/icons/pluginIcon.svg | 0 .../resources/icons/pluginMainDeclaration.png | Bin 0 -> 3803 bytes .../intellij => }/IDEContainerContributor.kt | 0 .../mirai/console/intellij => }/Icons.kt | 0 .../intellij => }/QuickFixRegistrar.kt | 0 .../ContextualParametersChecker.kt | 6 +- .../diagnostics/PluginDataValuesChecker.kt | 0 .../diagnostics/diagnosticsUtil.kt | 0 .../diagnostics/fix/AbuseYellowIntention.kt | 0 .../diagnostics/fix/AddSerializerFix.kt | 0 .../CommandDeclarationLineMarkerProvider.kt | 0 .../marker/PluginMainLineMarkerProvider.kt | 0 .../resources/icons/pluginMainDeclaration.png | Bin 3629 -> 0 bytes .../intellij => }/resolve/resolveIdea.kt | 0 218 files changed, 309 insertions(+), 197 deletions(-) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/Codegen.kt (100%) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/MessageScopeCodegen.kt (100%) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/ValuePluginDataCodegen.kt (100%) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/old/JSettingCodegen.kt (100%) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/old/SettingValueUseSiteCodegen.kt (100%) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/old/ValueImplCodegen.kt (100%) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/old/ValuesCodegen.kt (100%) rename backend/codegen/src/{main/kotlin/net/mamoe/mirai/console/codegen => }/util.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/MiraiConsole.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/MiraiConsoleFrontEndDescription.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/MiraiConsoleImplementation.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/AbstractCommand.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/BuiltInCommands.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/Command.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/CommandExecuteResult.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/CommandExecutionException.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/CommandManager.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/CommandOwner.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/CommandPermissionDeniedException.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/CommandSender.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/CompositeCommand.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/IllegalCommandArgumentException.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/RawCommand.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/SimpleCommand.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/CommandArgumentContext.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/CommandArgumentParserBuiltins.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/CommandParameter.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/CommandSignature.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/CommandValueArgumentParser.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/Exceptions.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/ExperimentalCommandDescriptors.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/descriptor/TypeVariant.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/java/JCompositeCommand.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/java/JRawCommand.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/java/JSimpleCommand.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/parse/CommandCall.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/parse/CommandCallParser.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/parse/CommandValueArgument.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/parse/SpaceSeparatedCommandCallParser.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/resolve/BuiltInCommandCallResolver.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/resolve/CommandCallResolver.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/command/resolve/ResolvedCommandCall.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console/compiler => }/common/ResolveContext.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console/compiler => }/common/RestrictedScope.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/AbstractPluginData.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/AutoSavePluginConfig.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/AutoSavePluginData.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/AutoSavePluginDataHolder.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/PluginConfig.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/PluginData.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/PluginDataExtensions.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/PluginDataHolder.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/PluginDataStorage.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/Value.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/ValueDescription.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/ValueName.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/java/JAutoSavePluginConfig.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/data/java/JAutoSavePluginData.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/events/CommandExecutionEvent.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/events/ConsoleEvent.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extension/ComponentStorage.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extension/Extension.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extension/ExtensionException.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extension/ExtensionPoint.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extension/PluginComponentStorage.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extensions/BotConfigurationAlterer.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extensions/CommandCallParserProvider.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extensions/CommandCallResolverProvider.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extensions/PermissionServiceProvider.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extensions/PluginLoaderProvider.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extensions/PostStartupExtension.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/extensions/SingletonExtensionSelector.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/MiraiConsoleBuildConstants.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/MiraiConsoleImplementationBridge.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/command/CommandManagerImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/command/CommandReflector.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/command/internal.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/CompositeValueImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/MemoryPluginDataStorageImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/MultiFilePluginDataStorageImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/PluginDataImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/_PluginData.value.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/_PrimitiveValueDeclarations.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/builtins/AutoLoginConfig.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/builtins/ConsoleDataScope.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/collectionUtil.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/reflectionUtils.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/serializerHelper.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/data/valueFromKTypeImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/extension/BuiltInSingletonExtensionSelector.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/extension/ComponentStorageInternal.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/permission/AbstractConcurrentPermissionService.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/permission/BuiltInPermissionServices.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/permission/parseFromStringImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/plugin/BuiltInJvmPluginLoaderImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/plugin/Exceptions.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/plugin/ExportManagerImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/plugin/JvmPluginClassLoader.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/plugin/JvmPluginInternal.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/plugin/PluginManagerImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/util/ByteUtils.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/util/CommonUtils.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/util/ConsoleInputImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/util/JavaPluginSchedulerImpl.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/util/PluginServiceHelper.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/util/semver/RangeTokenReader.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/internal/util/semver/SemVersionInternal.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/Permission.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/PermissionId.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/PermissionIdNamespace.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/PermissionImplementation.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/PermissionRegistryConflictException.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/PermissionService.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/Permittee.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/permission/PermitteeId.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/Plugin.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/PluginFileExtensions.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/PluginManager.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/ResourceContainer.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/center/PluginCenter.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/description/IllegalPluginDescriptionException.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/description/PluginDependency.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/description/PluginDescription.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/AbstractJvmPlugin.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/ExportManager.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/JavaPlugin.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/JavaPluginScheduler.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/JvmPlugin.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/JvmPluginDescription.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/JvmPluginLoader.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/jvm/KotlinPlugin.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/loader/FilePluginLoader.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/loader/PluginLoadException.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/plugin/loader/PluginLoader.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/Annotations.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/ConsoleInput.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/ContactUtils.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/CoroutineScopeUtils.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/MessageScope.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/MessageUtils.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/SemVersion.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/StandardUtils.kt (100%) rename backend/mirai-console/src/{main/kotlin/net/mamoe/mirai/console => }/util/retryCatching.kt (100%) rename backend/mirai-console/{src/test/kotlin/net/mamoe/mirai/console => test}/TestMiraiConosle.kt (100%) rename backend/mirai-console/{src/test/kotlin/net/mamoe/mirai/console => test}/command/TestCommand.kt (100%) rename backend/mirai-console/{src/test/kotlin/net/mamoe/mirai/console => test}/command/commanTestingUtil.kt (100%) rename backend/mirai-console/{src/test/kotlin/net/mamoe/mirai/console => test}/data/SettingTest.kt (100%) rename backend/mirai-console/{src/test/kotlin/net/mamoe/mirai/console => test}/permission/PermissionsBasicsTest.kt (100%) rename backend/mirai-console/{src/test/kotlin/net/mamoe/mirai/console => test}/util/TestSemVersion.kt (100%) delete mode 100644 buildSrc/src/main/kotlin/SetCompileTargetPlugin.kt rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/MiraiConsoleGraphicalLoader.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/MiraiGraphical.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/controller/MiraiGraphicalFrontEndController.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/event/ReloadEvent.kt (100%) delete mode 100644 frontend/mirai-console-graphical/src/main/resources/character.png delete mode 100644 frontend/mirai-console-graphical/src/main/resources/logo.png rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/model/BotModel.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/model/ConsoleInfo.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/model/GlobalSetting.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/model/PluginModel.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/model/VerificationCodeModel.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/stylesheet/BaseStyleSheet.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/stylesheet/LoginViewStyleSheet.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/stylesheet/PluginViewStyleSheet.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/stylesheet/PrimaryStyleSheet.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/util/JFoenixAdaptor.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/util/SVG.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/util/controls.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/Decorator.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/LoginView.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/PluginsCenterView.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/PluginsView.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/PrimaryView.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/SettingsView.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/dialog/InputDialog.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/dialog/PluginDetailFragment.kt (100%) rename frontend/mirai-console-graphical/src/{main/kotlin/net/mamoe/mirai/console/graphical => }/view/dialog/VerificationCodeFragment.kt (100%) rename frontend/mirai-console-graphical/{src/test/kotlin => test}/Main.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin/net/mamoe/mirai/console/terminal => }/BufferedOutputStream.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin/net/mamoe/mirai/console/terminal => }/ConsoleInputImpl.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin/net/mamoe/mirai/console/terminal => }/ConsoleTerminalSettings.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin/net/mamoe/mirai/console/terminal => }/ConsoleThread.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin/net/mamoe/mirai/console/terminal => }/MiraiConsoleImplementationTerminal.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin/net/mamoe/mirai/console/terminal => }/MiraiConsoleTerminalLoader.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin => }/net/mamoe/mirai/console/pure/MiraiConsolePureLoader.kt (100%) rename frontend/mirai-console-terminal/src/{main/kotlin/net/mamoe/mirai/console/terminal => }/noconsole/NoConsole.kt (100%) rename tools/compiler-common/src/{main/kotlin/net/mamoe/mirai/console/compiler/common => }/diagnostics/MiraiConsoleErrorsRendering.kt (73%) rename tools/compiler-common/src/{main/kotlin/net/mamoe/mirai/console/compiler/common => }/resolve/resolveCommon.kt (100%) rename tools/compiler-common/src/{main/kotlin/net/mamoe/mirai/console/compiler/common => }/resolve/resolveTypes.kt (100%) rename tools/compiler-common/src/{main/kotlin/net/mamoe/mirai/console/compiler/common => }/utilCommon.kt (100%) rename tools/gradle-plugin/src/{main/kotlin/net/mamoe/mirai/console/gradle => }/IGNORED_DEPENDENCIES_IN_SHADOW.kt (100%) rename tools/gradle-plugin/src/{main/kotlin/net/mamoe/mirai/console/gradle => }/MiraiConsoleExtension.kt (100%) rename tools/gradle-plugin/src/{main/kotlin/net/mamoe/mirai/console/gradle => }/MiraiConsoleGradlePlugin.kt (100%) rename tools/gradle-plugin/src/{main/kotlin/net/mamoe/mirai/console/gradle => }/VersionConstants.kt (100%) rename tools/intellij-plugin/{src/main => }/resources/META-INF/plugin.xml (100%) rename tools/intellij-plugin/{src/main => }/resources/icons/commandDeclaration.svg (100%) rename tools/intellij-plugin/{src/main => }/resources/icons/pluginIcon.svg (100%) create mode 100644 tools/intellij-plugin/resources/icons/pluginMainDeclaration.png rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/IDEContainerContributor.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/Icons.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/QuickFixRegistrar.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/diagnostics/ContextualParametersChecker.kt (95%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/diagnostics/PluginDataValuesChecker.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/diagnostics/diagnosticsUtil.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/diagnostics/fix/AbuseYellowIntention.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/diagnostics/fix/AddSerializerFix.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/line/marker/CommandDeclarationLineMarkerProvider.kt (100%) rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/line/marker/PluginMainLineMarkerProvider.kt (100%) delete mode 100644 tools/intellij-plugin/src/main/resources/icons/pluginMainDeclaration.png rename tools/intellij-plugin/src/{main/kotlin/net/mamoe/mirai/console/intellij => }/resolve/resolveIdea.kt (100%) diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/Codegen.kt b/backend/codegen/src/Codegen.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/Codegen.kt rename to backend/codegen/src/Codegen.kt diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/MessageScopeCodegen.kt b/backend/codegen/src/MessageScopeCodegen.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/MessageScopeCodegen.kt rename to backend/codegen/src/MessageScopeCodegen.kt diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/ValuePluginDataCodegen.kt b/backend/codegen/src/ValuePluginDataCodegen.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/ValuePluginDataCodegen.kt rename to backend/codegen/src/ValuePluginDataCodegen.kt diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/JSettingCodegen.kt b/backend/codegen/src/old/JSettingCodegen.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/JSettingCodegen.kt rename to backend/codegen/src/old/JSettingCodegen.kt diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/SettingValueUseSiteCodegen.kt b/backend/codegen/src/old/SettingValueUseSiteCodegen.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/SettingValueUseSiteCodegen.kt rename to backend/codegen/src/old/SettingValueUseSiteCodegen.kt diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/ValueImplCodegen.kt b/backend/codegen/src/old/ValueImplCodegen.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/ValueImplCodegen.kt rename to backend/codegen/src/old/ValueImplCodegen.kt diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/ValuesCodegen.kt b/backend/codegen/src/old/ValuesCodegen.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/old/ValuesCodegen.kt rename to backend/codegen/src/old/ValuesCodegen.kt diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/util.kt b/backend/codegen/src/util.kt similarity index 100% rename from backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/util.kt rename to backend/codegen/src/util.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt b/backend/mirai-console/src/MiraiConsole.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt rename to backend/mirai-console/src/MiraiConsole.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsoleFrontEndDescription.kt b/backend/mirai-console/src/MiraiConsoleFrontEndDescription.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsoleFrontEndDescription.kt rename to backend/mirai-console/src/MiraiConsoleFrontEndDescription.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsoleImplementation.kt b/backend/mirai-console/src/MiraiConsoleImplementation.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsoleImplementation.kt rename to backend/mirai-console/src/MiraiConsoleImplementation.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/AbstractCommand.kt b/backend/mirai-console/src/command/AbstractCommand.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/AbstractCommand.kt rename to backend/mirai-console/src/command/AbstractCommand.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/BuiltInCommands.kt b/backend/mirai-console/src/command/BuiltInCommands.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/BuiltInCommands.kt rename to backend/mirai-console/src/command/BuiltInCommands.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/Command.kt b/backend/mirai-console/src/command/Command.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/Command.kt rename to backend/mirai-console/src/command/Command.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandExecuteResult.kt b/backend/mirai-console/src/command/CommandExecuteResult.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandExecuteResult.kt rename to backend/mirai-console/src/command/CommandExecuteResult.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandExecutionException.kt b/backend/mirai-console/src/command/CommandExecutionException.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandExecutionException.kt rename to backend/mirai-console/src/command/CommandExecutionException.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandManager.kt b/backend/mirai-console/src/command/CommandManager.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandManager.kt rename to backend/mirai-console/src/command/CommandManager.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandOwner.kt b/backend/mirai-console/src/command/CommandOwner.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandOwner.kt rename to backend/mirai-console/src/command/CommandOwner.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandPermissionDeniedException.kt b/backend/mirai-console/src/command/CommandPermissionDeniedException.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandPermissionDeniedException.kt rename to backend/mirai-console/src/command/CommandPermissionDeniedException.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandSender.kt b/backend/mirai-console/src/command/CommandSender.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandSender.kt rename to backend/mirai-console/src/command/CommandSender.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CompositeCommand.kt b/backend/mirai-console/src/command/CompositeCommand.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CompositeCommand.kt rename to backend/mirai-console/src/command/CompositeCommand.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/IllegalCommandArgumentException.kt b/backend/mirai-console/src/command/IllegalCommandArgumentException.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/IllegalCommandArgumentException.kt rename to backend/mirai-console/src/command/IllegalCommandArgumentException.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/RawCommand.kt b/backend/mirai-console/src/command/RawCommand.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/RawCommand.kt rename to backend/mirai-console/src/command/RawCommand.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/SimpleCommand.kt b/backend/mirai-console/src/command/SimpleCommand.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/SimpleCommand.kt rename to backend/mirai-console/src/command/SimpleCommand.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentContext.kt b/backend/mirai-console/src/command/descriptor/CommandArgumentContext.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentContext.kt rename to backend/mirai-console/src/command/descriptor/CommandArgumentContext.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentParserBuiltins.kt b/backend/mirai-console/src/command/descriptor/CommandArgumentParserBuiltins.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentParserBuiltins.kt rename to backend/mirai-console/src/command/descriptor/CommandArgumentParserBuiltins.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandParameter.kt b/backend/mirai-console/src/command/descriptor/CommandParameter.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandParameter.kt rename to backend/mirai-console/src/command/descriptor/CommandParameter.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandSignature.kt b/backend/mirai-console/src/command/descriptor/CommandSignature.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandSignature.kt rename to backend/mirai-console/src/command/descriptor/CommandSignature.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandValueArgumentParser.kt b/backend/mirai-console/src/command/descriptor/CommandValueArgumentParser.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandValueArgumentParser.kt rename to backend/mirai-console/src/command/descriptor/CommandValueArgumentParser.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/Exceptions.kt b/backend/mirai-console/src/command/descriptor/Exceptions.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/Exceptions.kt rename to backend/mirai-console/src/command/descriptor/Exceptions.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/ExperimentalCommandDescriptors.kt b/backend/mirai-console/src/command/descriptor/ExperimentalCommandDescriptors.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/ExperimentalCommandDescriptors.kt rename to backend/mirai-console/src/command/descriptor/ExperimentalCommandDescriptors.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/TypeVariant.kt b/backend/mirai-console/src/command/descriptor/TypeVariant.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/TypeVariant.kt rename to backend/mirai-console/src/command/descriptor/TypeVariant.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/java/JCompositeCommand.kt b/backend/mirai-console/src/command/java/JCompositeCommand.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/java/JCompositeCommand.kt rename to backend/mirai-console/src/command/java/JCompositeCommand.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/java/JRawCommand.kt b/backend/mirai-console/src/command/java/JRawCommand.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/java/JRawCommand.kt rename to backend/mirai-console/src/command/java/JRawCommand.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/java/JSimpleCommand.kt b/backend/mirai-console/src/command/java/JSimpleCommand.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/java/JSimpleCommand.kt rename to backend/mirai-console/src/command/java/JSimpleCommand.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/CommandCall.kt b/backend/mirai-console/src/command/parse/CommandCall.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/CommandCall.kt rename to backend/mirai-console/src/command/parse/CommandCall.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/CommandCallParser.kt b/backend/mirai-console/src/command/parse/CommandCallParser.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/CommandCallParser.kt rename to backend/mirai-console/src/command/parse/CommandCallParser.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/CommandValueArgument.kt b/backend/mirai-console/src/command/parse/CommandValueArgument.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/CommandValueArgument.kt rename to backend/mirai-console/src/command/parse/CommandValueArgument.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/SpaceSeparatedCommandCallParser.kt b/backend/mirai-console/src/command/parse/SpaceSeparatedCommandCallParser.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/parse/SpaceSeparatedCommandCallParser.kt rename to backend/mirai-console/src/command/parse/SpaceSeparatedCommandCallParser.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/resolve/BuiltInCommandCallResolver.kt b/backend/mirai-console/src/command/resolve/BuiltInCommandCallResolver.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/resolve/BuiltInCommandCallResolver.kt rename to backend/mirai-console/src/command/resolve/BuiltInCommandCallResolver.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/resolve/CommandCallResolver.kt b/backend/mirai-console/src/command/resolve/CommandCallResolver.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/resolve/CommandCallResolver.kt rename to backend/mirai-console/src/command/resolve/CommandCallResolver.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/resolve/ResolvedCommandCall.kt b/backend/mirai-console/src/command/resolve/ResolvedCommandCall.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/resolve/ResolvedCommandCall.kt rename to backend/mirai-console/src/command/resolve/ResolvedCommandCall.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/compiler/common/ResolveContext.kt b/backend/mirai-console/src/common/ResolveContext.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/compiler/common/ResolveContext.kt rename to backend/mirai-console/src/common/ResolveContext.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/compiler/common/RestrictedScope.kt b/backend/mirai-console/src/common/RestrictedScope.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/compiler/common/RestrictedScope.kt rename to backend/mirai-console/src/common/RestrictedScope.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AbstractPluginData.kt b/backend/mirai-console/src/data/AbstractPluginData.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AbstractPluginData.kt rename to backend/mirai-console/src/data/AbstractPluginData.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginConfig.kt b/backend/mirai-console/src/data/AutoSavePluginConfig.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginConfig.kt rename to backend/mirai-console/src/data/AutoSavePluginConfig.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginData.kt b/backend/mirai-console/src/data/AutoSavePluginData.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginData.kt rename to backend/mirai-console/src/data/AutoSavePluginData.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginDataHolder.kt b/backend/mirai-console/src/data/AutoSavePluginDataHolder.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginDataHolder.kt rename to backend/mirai-console/src/data/AutoSavePluginDataHolder.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginConfig.kt b/backend/mirai-console/src/data/PluginConfig.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginConfig.kt rename to backend/mirai-console/src/data/PluginConfig.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginData.kt b/backend/mirai-console/src/data/PluginData.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginData.kt rename to backend/mirai-console/src/data/PluginData.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataExtensions.kt b/backend/mirai-console/src/data/PluginDataExtensions.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataExtensions.kt rename to backend/mirai-console/src/data/PluginDataExtensions.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataHolder.kt b/backend/mirai-console/src/data/PluginDataHolder.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataHolder.kt rename to backend/mirai-console/src/data/PluginDataHolder.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt b/backend/mirai-console/src/data/PluginDataStorage.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt rename to backend/mirai-console/src/data/PluginDataStorage.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/Value.kt b/backend/mirai-console/src/data/Value.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/Value.kt rename to backend/mirai-console/src/data/Value.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/ValueDescription.kt b/backend/mirai-console/src/data/ValueDescription.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/ValueDescription.kt rename to backend/mirai-console/src/data/ValueDescription.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/ValueName.kt b/backend/mirai-console/src/data/ValueName.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/ValueName.kt rename to backend/mirai-console/src/data/ValueName.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/java/JAutoSavePluginConfig.kt b/backend/mirai-console/src/data/java/JAutoSavePluginConfig.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/java/JAutoSavePluginConfig.kt rename to backend/mirai-console/src/data/java/JAutoSavePluginConfig.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/java/JAutoSavePluginData.kt b/backend/mirai-console/src/data/java/JAutoSavePluginData.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/java/JAutoSavePluginData.kt rename to backend/mirai-console/src/data/java/JAutoSavePluginData.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/events/CommandExecutionEvent.kt b/backend/mirai-console/src/events/CommandExecutionEvent.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/events/CommandExecutionEvent.kt rename to backend/mirai-console/src/events/CommandExecutionEvent.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/events/ConsoleEvent.kt b/backend/mirai-console/src/events/ConsoleEvent.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/events/ConsoleEvent.kt rename to backend/mirai-console/src/events/ConsoleEvent.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ComponentStorage.kt b/backend/mirai-console/src/extension/ComponentStorage.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ComponentStorage.kt rename to backend/mirai-console/src/extension/ComponentStorage.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/Extension.kt b/backend/mirai-console/src/extension/Extension.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/Extension.kt rename to backend/mirai-console/src/extension/Extension.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ExtensionException.kt b/backend/mirai-console/src/extension/ExtensionException.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ExtensionException.kt rename to backend/mirai-console/src/extension/ExtensionException.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ExtensionPoint.kt b/backend/mirai-console/src/extension/ExtensionPoint.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ExtensionPoint.kt rename to backend/mirai-console/src/extension/ExtensionPoint.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/PluginComponentStorage.kt b/backend/mirai-console/src/extension/PluginComponentStorage.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/PluginComponentStorage.kt rename to backend/mirai-console/src/extension/PluginComponentStorage.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/BotConfigurationAlterer.kt b/backend/mirai-console/src/extensions/BotConfigurationAlterer.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/BotConfigurationAlterer.kt rename to backend/mirai-console/src/extensions/BotConfigurationAlterer.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/CommandCallParserProvider.kt b/backend/mirai-console/src/extensions/CommandCallParserProvider.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/CommandCallParserProvider.kt rename to backend/mirai-console/src/extensions/CommandCallParserProvider.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/CommandCallResolverProvider.kt b/backend/mirai-console/src/extensions/CommandCallResolverProvider.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/CommandCallResolverProvider.kt rename to backend/mirai-console/src/extensions/CommandCallResolverProvider.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/PermissionServiceProvider.kt b/backend/mirai-console/src/extensions/PermissionServiceProvider.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/PermissionServiceProvider.kt rename to backend/mirai-console/src/extensions/PermissionServiceProvider.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/PluginLoaderProvider.kt b/backend/mirai-console/src/extensions/PluginLoaderProvider.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/PluginLoaderProvider.kt rename to backend/mirai-console/src/extensions/PluginLoaderProvider.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/PostStartupExtension.kt b/backend/mirai-console/src/extensions/PostStartupExtension.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/PostStartupExtension.kt rename to backend/mirai-console/src/extensions/PostStartupExtension.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/SingletonExtensionSelector.kt b/backend/mirai-console/src/extensions/SingletonExtensionSelector.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/SingletonExtensionSelector.kt rename to backend/mirai-console/src/extensions/SingletonExtensionSelector.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleBuildConstants.kt b/backend/mirai-console/src/internal/MiraiConsoleBuildConstants.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleBuildConstants.kt rename to backend/mirai-console/src/internal/MiraiConsoleBuildConstants.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleImplementationBridge.kt b/backend/mirai-console/src/internal/MiraiConsoleImplementationBridge.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleImplementationBridge.kt rename to backend/mirai-console/src/internal/MiraiConsoleImplementationBridge.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/command/CommandManagerImpl.kt b/backend/mirai-console/src/internal/command/CommandManagerImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/command/CommandManagerImpl.kt rename to backend/mirai-console/src/internal/command/CommandManagerImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/command/CommandReflector.kt b/backend/mirai-console/src/internal/command/CommandReflector.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/command/CommandReflector.kt rename to backend/mirai-console/src/internal/command/CommandReflector.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/command/internal.kt b/backend/mirai-console/src/internal/command/internal.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/command/internal.kt rename to backend/mirai-console/src/internal/command/internal.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/CompositeValueImpl.kt b/backend/mirai-console/src/internal/data/CompositeValueImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/CompositeValueImpl.kt rename to backend/mirai-console/src/internal/data/CompositeValueImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/MemoryPluginDataStorageImpl.kt b/backend/mirai-console/src/internal/data/MemoryPluginDataStorageImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/MemoryPluginDataStorageImpl.kt rename to backend/mirai-console/src/internal/data/MemoryPluginDataStorageImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/MultiFilePluginDataStorageImpl.kt b/backend/mirai-console/src/internal/data/MultiFilePluginDataStorageImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/MultiFilePluginDataStorageImpl.kt rename to backend/mirai-console/src/internal/data/MultiFilePluginDataStorageImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/PluginDataImpl.kt b/backend/mirai-console/src/internal/data/PluginDataImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/PluginDataImpl.kt rename to backend/mirai-console/src/internal/data/PluginDataImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/_PluginData.value.kt b/backend/mirai-console/src/internal/data/_PluginData.value.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/_PluginData.value.kt rename to backend/mirai-console/src/internal/data/_PluginData.value.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/_PrimitiveValueDeclarations.kt b/backend/mirai-console/src/internal/data/_PrimitiveValueDeclarations.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/_PrimitiveValueDeclarations.kt rename to backend/mirai-console/src/internal/data/_PrimitiveValueDeclarations.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/builtins/AutoLoginConfig.kt b/backend/mirai-console/src/internal/data/builtins/AutoLoginConfig.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/builtins/AutoLoginConfig.kt rename to backend/mirai-console/src/internal/data/builtins/AutoLoginConfig.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/builtins/ConsoleDataScope.kt b/backend/mirai-console/src/internal/data/builtins/ConsoleDataScope.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/builtins/ConsoleDataScope.kt rename to backend/mirai-console/src/internal/data/builtins/ConsoleDataScope.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/collectionUtil.kt b/backend/mirai-console/src/internal/data/collectionUtil.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/collectionUtil.kt rename to backend/mirai-console/src/internal/data/collectionUtil.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/reflectionUtils.kt b/backend/mirai-console/src/internal/data/reflectionUtils.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/reflectionUtils.kt rename to backend/mirai-console/src/internal/data/reflectionUtils.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/serializerHelper.kt b/backend/mirai-console/src/internal/data/serializerHelper.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/serializerHelper.kt rename to backend/mirai-console/src/internal/data/serializerHelper.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/valueFromKTypeImpl.kt b/backend/mirai-console/src/internal/data/valueFromKTypeImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/data/valueFromKTypeImpl.kt rename to backend/mirai-console/src/internal/data/valueFromKTypeImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/extension/BuiltInSingletonExtensionSelector.kt b/backend/mirai-console/src/internal/extension/BuiltInSingletonExtensionSelector.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/extension/BuiltInSingletonExtensionSelector.kt rename to backend/mirai-console/src/internal/extension/BuiltInSingletonExtensionSelector.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/extension/ComponentStorageInternal.kt b/backend/mirai-console/src/internal/extension/ComponentStorageInternal.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/extension/ComponentStorageInternal.kt rename to backend/mirai-console/src/internal/extension/ComponentStorageInternal.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/permission/AbstractConcurrentPermissionService.kt b/backend/mirai-console/src/internal/permission/AbstractConcurrentPermissionService.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/permission/AbstractConcurrentPermissionService.kt rename to backend/mirai-console/src/internal/permission/AbstractConcurrentPermissionService.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/permission/BuiltInPermissionServices.kt b/backend/mirai-console/src/internal/permission/BuiltInPermissionServices.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/permission/BuiltInPermissionServices.kt rename to backend/mirai-console/src/internal/permission/BuiltInPermissionServices.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/permission/parseFromStringImpl.kt b/backend/mirai-console/src/internal/permission/parseFromStringImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/permission/parseFromStringImpl.kt rename to backend/mirai-console/src/internal/permission/parseFromStringImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/BuiltInJvmPluginLoaderImpl.kt b/backend/mirai-console/src/internal/plugin/BuiltInJvmPluginLoaderImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/BuiltInJvmPluginLoaderImpl.kt rename to backend/mirai-console/src/internal/plugin/BuiltInJvmPluginLoaderImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/Exceptions.kt b/backend/mirai-console/src/internal/plugin/Exceptions.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/Exceptions.kt rename to backend/mirai-console/src/internal/plugin/Exceptions.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/ExportManagerImpl.kt b/backend/mirai-console/src/internal/plugin/ExportManagerImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/ExportManagerImpl.kt rename to backend/mirai-console/src/internal/plugin/ExportManagerImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/JvmPluginClassLoader.kt b/backend/mirai-console/src/internal/plugin/JvmPluginClassLoader.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/JvmPluginClassLoader.kt rename to backend/mirai-console/src/internal/plugin/JvmPluginClassLoader.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/JvmPluginInternal.kt b/backend/mirai-console/src/internal/plugin/JvmPluginInternal.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/JvmPluginInternal.kt rename to backend/mirai-console/src/internal/plugin/JvmPluginInternal.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/PluginManagerImpl.kt b/backend/mirai-console/src/internal/plugin/PluginManagerImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/plugin/PluginManagerImpl.kt rename to backend/mirai-console/src/internal/plugin/PluginManagerImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/ByteUtils.kt b/backend/mirai-console/src/internal/util/ByteUtils.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/ByteUtils.kt rename to backend/mirai-console/src/internal/util/ByteUtils.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/CommonUtils.kt b/backend/mirai-console/src/internal/util/CommonUtils.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/CommonUtils.kt rename to backend/mirai-console/src/internal/util/CommonUtils.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/ConsoleInputImpl.kt b/backend/mirai-console/src/internal/util/ConsoleInputImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/ConsoleInputImpl.kt rename to backend/mirai-console/src/internal/util/ConsoleInputImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/JavaPluginSchedulerImpl.kt b/backend/mirai-console/src/internal/util/JavaPluginSchedulerImpl.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/JavaPluginSchedulerImpl.kt rename to backend/mirai-console/src/internal/util/JavaPluginSchedulerImpl.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/PluginServiceHelper.kt b/backend/mirai-console/src/internal/util/PluginServiceHelper.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/PluginServiceHelper.kt rename to backend/mirai-console/src/internal/util/PluginServiceHelper.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/semver/RangeTokenReader.kt b/backend/mirai-console/src/internal/util/semver/RangeTokenReader.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/semver/RangeTokenReader.kt rename to backend/mirai-console/src/internal/util/semver/RangeTokenReader.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/semver/SemVersionInternal.kt b/backend/mirai-console/src/internal/util/semver/SemVersionInternal.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/util/semver/SemVersionInternal.kt rename to backend/mirai-console/src/internal/util/semver/SemVersionInternal.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/Permission.kt b/backend/mirai-console/src/permission/Permission.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/Permission.kt rename to backend/mirai-console/src/permission/Permission.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionId.kt b/backend/mirai-console/src/permission/PermissionId.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionId.kt rename to backend/mirai-console/src/permission/PermissionId.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionIdNamespace.kt b/backend/mirai-console/src/permission/PermissionIdNamespace.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionIdNamespace.kt rename to backend/mirai-console/src/permission/PermissionIdNamespace.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionImplementation.kt b/backend/mirai-console/src/permission/PermissionImplementation.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionImplementation.kt rename to backend/mirai-console/src/permission/PermissionImplementation.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionRegistryConflictException.kt b/backend/mirai-console/src/permission/PermissionRegistryConflictException.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionRegistryConflictException.kt rename to backend/mirai-console/src/permission/PermissionRegistryConflictException.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionService.kt b/backend/mirai-console/src/permission/PermissionService.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionService.kt rename to backend/mirai-console/src/permission/PermissionService.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/Permittee.kt b/backend/mirai-console/src/permission/Permittee.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/Permittee.kt rename to backend/mirai-console/src/permission/Permittee.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermitteeId.kt b/backend/mirai-console/src/permission/PermitteeId.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermitteeId.kt rename to backend/mirai-console/src/permission/PermitteeId.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/Plugin.kt b/backend/mirai-console/src/plugin/Plugin.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/Plugin.kt rename to backend/mirai-console/src/plugin/Plugin.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginFileExtensions.kt b/backend/mirai-console/src/plugin/PluginFileExtensions.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginFileExtensions.kt rename to backend/mirai-console/src/plugin/PluginFileExtensions.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginManager.kt b/backend/mirai-console/src/plugin/PluginManager.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginManager.kt rename to backend/mirai-console/src/plugin/PluginManager.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/ResourceContainer.kt b/backend/mirai-console/src/plugin/ResourceContainer.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/ResourceContainer.kt rename to backend/mirai-console/src/plugin/ResourceContainer.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/center/PluginCenter.kt b/backend/mirai-console/src/plugin/center/PluginCenter.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/center/PluginCenter.kt rename to backend/mirai-console/src/plugin/center/PluginCenter.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/IllegalPluginDescriptionException.kt b/backend/mirai-console/src/plugin/description/IllegalPluginDescriptionException.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/IllegalPluginDescriptionException.kt rename to backend/mirai-console/src/plugin/description/IllegalPluginDescriptionException.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/PluginDependency.kt b/backend/mirai-console/src/plugin/description/PluginDependency.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/PluginDependency.kt rename to backend/mirai-console/src/plugin/description/PluginDependency.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/PluginDescription.kt b/backend/mirai-console/src/plugin/description/PluginDescription.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/PluginDescription.kt rename to backend/mirai-console/src/plugin/description/PluginDescription.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/AbstractJvmPlugin.kt b/backend/mirai-console/src/plugin/jvm/AbstractJvmPlugin.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/AbstractJvmPlugin.kt rename to backend/mirai-console/src/plugin/jvm/AbstractJvmPlugin.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/ExportManager.kt b/backend/mirai-console/src/plugin/jvm/ExportManager.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/ExportManager.kt rename to backend/mirai-console/src/plugin/jvm/ExportManager.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPlugin.kt b/backend/mirai-console/src/plugin/jvm/JavaPlugin.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPlugin.kt rename to backend/mirai-console/src/plugin/jvm/JavaPlugin.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPluginScheduler.kt b/backend/mirai-console/src/plugin/jvm/JavaPluginScheduler.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPluginScheduler.kt rename to backend/mirai-console/src/plugin/jvm/JavaPluginScheduler.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPlugin.kt b/backend/mirai-console/src/plugin/jvm/JvmPlugin.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPlugin.kt rename to backend/mirai-console/src/plugin/jvm/JvmPlugin.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginDescription.kt b/backend/mirai-console/src/plugin/jvm/JvmPluginDescription.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginDescription.kt rename to backend/mirai-console/src/plugin/jvm/JvmPluginDescription.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginLoader.kt b/backend/mirai-console/src/plugin/jvm/JvmPluginLoader.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginLoader.kt rename to backend/mirai-console/src/plugin/jvm/JvmPluginLoader.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/KotlinPlugin.kt b/backend/mirai-console/src/plugin/jvm/KotlinPlugin.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/KotlinPlugin.kt rename to backend/mirai-console/src/plugin/jvm/KotlinPlugin.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/FilePluginLoader.kt b/backend/mirai-console/src/plugin/loader/FilePluginLoader.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/FilePluginLoader.kt rename to backend/mirai-console/src/plugin/loader/FilePluginLoader.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoadException.kt b/backend/mirai-console/src/plugin/loader/PluginLoadException.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoadException.kt rename to backend/mirai-console/src/plugin/loader/PluginLoadException.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoader.kt b/backend/mirai-console/src/plugin/loader/PluginLoader.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoader.kt rename to backend/mirai-console/src/plugin/loader/PluginLoader.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/Annotations.kt b/backend/mirai-console/src/util/Annotations.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/Annotations.kt rename to backend/mirai-console/src/util/Annotations.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/ConsoleInput.kt b/backend/mirai-console/src/util/ConsoleInput.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/ConsoleInput.kt rename to backend/mirai-console/src/util/ConsoleInput.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/ContactUtils.kt b/backend/mirai-console/src/util/ContactUtils.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/ContactUtils.kt rename to backend/mirai-console/src/util/ContactUtils.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/CoroutineScopeUtils.kt b/backend/mirai-console/src/util/CoroutineScopeUtils.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/CoroutineScopeUtils.kt rename to backend/mirai-console/src/util/CoroutineScopeUtils.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/MessageScope.kt b/backend/mirai-console/src/util/MessageScope.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/MessageScope.kt rename to backend/mirai-console/src/util/MessageScope.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/MessageUtils.kt b/backend/mirai-console/src/util/MessageUtils.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/MessageUtils.kt rename to backend/mirai-console/src/util/MessageUtils.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/SemVersion.kt b/backend/mirai-console/src/util/SemVersion.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/SemVersion.kt rename to backend/mirai-console/src/util/SemVersion.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/StandardUtils.kt b/backend/mirai-console/src/util/StandardUtils.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/StandardUtils.kt rename to backend/mirai-console/src/util/StandardUtils.kt diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/retryCatching.kt b/backend/mirai-console/src/util/retryCatching.kt similarity index 100% rename from backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/retryCatching.kt rename to backend/mirai-console/src/util/retryCatching.kt diff --git a/backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/TestMiraiConosle.kt b/backend/mirai-console/test/TestMiraiConosle.kt similarity index 100% rename from backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/TestMiraiConosle.kt rename to backend/mirai-console/test/TestMiraiConosle.kt diff --git a/backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/command/TestCommand.kt b/backend/mirai-console/test/command/TestCommand.kt similarity index 100% rename from backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/command/TestCommand.kt rename to backend/mirai-console/test/command/TestCommand.kt diff --git a/backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/command/commanTestingUtil.kt b/backend/mirai-console/test/command/commanTestingUtil.kt similarity index 100% rename from backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/command/commanTestingUtil.kt rename to backend/mirai-console/test/command/commanTestingUtil.kt diff --git a/backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/data/SettingTest.kt b/backend/mirai-console/test/data/SettingTest.kt similarity index 100% rename from backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/data/SettingTest.kt rename to backend/mirai-console/test/data/SettingTest.kt diff --git a/backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/permission/PermissionsBasicsTest.kt b/backend/mirai-console/test/permission/PermissionsBasicsTest.kt similarity index 100% rename from backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/permission/PermissionsBasicsTest.kt rename to backend/mirai-console/test/permission/PermissionsBasicsTest.kt diff --git a/backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/util/TestSemVersion.kt b/backend/mirai-console/test/util/TestSemVersion.kt similarity index 100% rename from backend/mirai-console/src/test/kotlin/net/mamoe/mirai/console/util/TestSemVersion.kt rename to backend/mirai-console/test/util/TestSemVersion.kt diff --git a/build.gradle.kts b/build.gradle.kts index ca24e980d..426e01df6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,9 @@ @file:Suppress("UnstableApiUsage") + +import org.jetbrains.kotlin.gradle.dsl.* +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation +import org.jetbrains.kotlin.utils.addToStdlib.safeAs + plugins { kotlin("jvm") version Versions.kotlinCompiler kotlin("plugin.serialization") version Versions.kotlinCompiler @@ -28,6 +33,129 @@ subprojects { afterEvaluate { apply() - setJavaCompileTarget() + configureJvmTarget() + configureEncoding() + configureKotlinExperimentalUsages() + configureKotlinCompilerSettings() + configureKotlinTestSettings() + configureSourceSets() } -} \ No newline at end of file +} + +val experimentalAnnotations = arrayOf( + "kotlin.RequiresOptIn", + "kotlin.ExperimentalUnsignedTypes", + // "kotlin.ExperimentalStdlibApi", + "kotlin.contracts.ExperimentalContracts", + "kotlin.experimental.ExperimentalTypeInference", + // "kotlinx.coroutines.ExperimentalCoroutinesApi", + "io.ktor.util.KtorExperimentalAPI", + "kotlin.time.ExperimentalTime" +) + + +fun Project.configureJvmTarget() { + tasks.withType(KotlinJvmCompile::class.java) { + kotlinOptions.jvmTarget = "1.8" + } + + extensions.findByType(JavaPluginExtension::class.java)?.run { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } +} + +fun Project.useIr() { + tasks { + withType(KotlinJvmCompile::class.java) { + kotlinOptions.useIR = true + } + } +} + +fun Project.configureKotlinTestSettings() { + tasks.withType(Test::class) { + useJUnitPlatform() + } + when { + isKotlinJvmProject -> { + dependencies { + testImplementation(kotlin("test-junit5")) + + testApi("org.junit.jupiter:junit-jupiter-api:5.2.0") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.2.0") + } + } + isKotlinMpp -> { + kotlinSourceSets?.forEach { sourceSet -> + if (sourceSet.name == "common") { + sourceSet.dependencies { + implementation(kotlin("test")) + implementation(kotlin("test-annotations-common")) + } + } else { + sourceSet.dependencies { + implementation(kotlin("test-junit5")) + + implementation("org.junit.jupiter:junit-jupiter-api:5.2.0") + implementation("org.junit.jupiter:junit-jupiter-engine:5.2.0") + } + } + } + } + } +} + +fun Project.configureKotlinCompilerSettings() { + val kotlinCompilations = kotlinCompilations ?: return + for (kotlinCompilation in kotlinCompilations) with(kotlinCompilation) { + if (isKotlinJvmProject) { + @Suppress("UNCHECKED_CAST") + this as KotlinCompilation + } + kotlinOptions.freeCompilerArgs += "-Xjvm-default=all" + } +} + +fun Project.configureEncoding() { + tasks.withType(JavaCompile::class.java) { + options.encoding = "UTF8" + } +} + +fun Project.configureSourceSets() { + sourceSets { + findByName("main")?.apply { + resources.setSrcDirs(listOf(projectDir.resolve("resources"))) + java.setSrcDirs(listOf(projectDir.resolve("src"))) + } + findByName("test")?.apply { + resources.setSrcDirs(listOf(projectDir.resolve("resources"))) + java.setSrcDirs(listOf(projectDir.resolve("test"))) + } + } +} + +fun Project.configureKotlinExperimentalUsages() { + val sourceSets = kotlinSourceSets ?: return + + for (target in sourceSets) { + experimentalAnnotations.forEach { a -> + target.languageSettings.useExperimentalAnnotation(a) + //target.languageSettings.enableLanguageFeature("InlineClasses") + } + } +} + +val Project.kotlinSourceSets get() = extensions.findByName("kotlin").safeAs()?.sourceSets + +val Project.kotlinTargets + get() = + extensions.findByName("kotlin").safeAs()?.target?.let { listOf(it) } + ?: extensions.findByName("kotlin").safeAs()?.targets + +val Project.isKotlinJvmProject: Boolean get() = extensions.findByName("kotlin") is KotlinJvmProjectExtension +val Project.isKotlinMpp: Boolean get() = extensions.findByName("kotlin") is KotlinMultiplatformExtension + +val Project.kotlinCompilations + get() = kotlinTargets?.flatMap { it.compilations } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/SetCompileTargetPlugin.kt b/buildSrc/src/main/kotlin/SetCompileTargetPlugin.kt deleted file mode 100644 index 0757d72cf..000000000 --- a/buildSrc/src/main/kotlin/SetCompileTargetPlugin.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found through the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -import org.gradle.api.JavaVersion -import org.gradle.api.Project -import org.gradle.api.plugins.JavaPluginExtension -import org.gradle.api.tasks.compile.JavaCompile -import java.lang.reflect.Method -import kotlin.reflect.KClass - - -fun Any.reflectMethod(name: String, vararg params: KClass): Pair { - return this to this::class.java.getMethod(name, *params.map { it.java }.toTypedArray()) -} - -operator fun Pair.invoke(vararg args: Any?): Any? { - return second.invoke(first, *args) -} - -@Suppress("NOTHING_TO_INLINE") // or error -fun Project.setJavaCompileTarget() { - tasks.filter { it.name in arrayOf("compileKotlin", "compileTestKotlin") }.forEach { task -> - task - .reflectMethod("getKotlinOptions")()!! - .reflectMethod("setJvmTarget", String::class)("1.8") - } - - - kotlin.runCatching { // apply only when java plugin is available - (extensions.getByName("java") as JavaPluginExtension).run { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - tasks.withType(JavaCompile::class.java) { - options.encoding = "UTF8" - } - } -} \ No newline at end of file diff --git a/docs/Commands.md b/docs/Commands.md index 816884f77..0fad7bcf8 100644 --- a/docs/Commands.md +++ b/docs/Commands.md @@ -1,47 +1,47 @@ # Mirai Console Backend - Commands -[`Plugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/Plugin.kt -[`PluginDescription`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/PluginDescription.kt -[`PluginLoader`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoader.kt -[`PluginManager`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginManager.kt -[`JvmPluginLoader`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginLoader.kt -[`JvmPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPlugin.kt -[`JvmPluginDescription`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginDescription.kt -[`AbstractJvmPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/AbstractJvmPlugin.kt -[`KotlinPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/KotlinPlugin.kt -[`JavaPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPlugin.kt +[`Plugin`]: ../backend/mirai-console/src/plugin/Plugin.kt +[`PluginDescription`]: ../backend/mirai-console/src/plugin/description/PluginDescription.kt +[`PluginLoader`]: ../backend/mirai-console/src/plugin/loader/PluginLoader.kt +[`PluginManager`]: ../backend/mirai-console/src/plugin/PluginManager.kt +[`JvmPluginLoader`]: ../backend/mirai-console/src/plugin/jvm/JvmPluginLoader.kt +[`JvmPlugin`]: ../backend/mirai-console/src/plugin/jvm/JvmPlugin.kt +[`JvmPluginDescription`]: ../backend/mirai-console/src/plugin/jvm/JvmPluginDescription.kt +[`AbstractJvmPlugin`]: ../backend/mirai-console/src/plugin/jvm/AbstractJvmPlugin.kt +[`KotlinPlugin`]: ../backend/mirai-console/src/plugin/jvm/KotlinPlugin.kt +[`JavaPlugin`]: ../backend/mirai-console/src/plugin/jvm/JavaPlugin.kt -[`Value`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/Value.kt -[`PluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginData.kt -[`AbstractPluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AbstractPluginData.kt -[`AutoSavePluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginData.kt -[`AutoSavePluginConfig`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginConfig.kt -[`PluginConfig`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginConfig.kt -[`PluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt -[`MultiFilePluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt#L116 -[`MemoryPluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt#L100 -[`AutoSavePluginDataHolder`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataHolder.kt#L45 -[`PluginDataHolder`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataHolder.kt -[`PluginDataExtensions`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataExtensions.kt +[`Value`]: ../backend/mirai-console/src/data/Value.kt +[`PluginData`]: ../backend/mirai-console/src/data/PluginData.kt +[`AbstractPluginData`]: ../backend/mirai-console/src/data/AbstractPluginData.kt +[`AutoSavePluginData`]: ../backend/mirai-console/src/data/AutoSavePluginData.kt +[`AutoSavePluginConfig`]: ../backend/mirai-console/src/data/AutoSavePluginConfig.kt +[`PluginConfig`]: ../backend/mirai-console/src/data/PluginConfig.kt +[`PluginDataStorage`]: ../backend/mirai-console/src/data/PluginDataStorage.kt +[`MultiFilePluginDataStorage`]: ../backend/mirai-console/src/data/PluginDataStorage.kt#L116 +[`MemoryPluginDataStorage`]: ../backend/mirai-console/src/data/PluginDataStorage.kt#L100 +[`AutoSavePluginDataHolder`]: ../backend/mirai-console/src/data/PluginDataHolder.kt#L45 +[`PluginDataHolder`]: ../backend/mirai-console/src/data/PluginDataHolder.kt +[`PluginDataExtensions`]: ../backend/mirai-console/src/data/PluginDataExtensions.kt -[`MiraiConsole`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt -[`MiraiConsoleImplementation`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsoleImplementation.kt - +[`MiraiConsole`]: ../backend/mirai-console/src/MiraiConsole.kt +[`MiraiConsoleImplementation`]: ../backend/mirai-console/src/MiraiConsoleImplementation.kt + -[`Command`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/Command.kt -[`AbstractCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/Command.kt#L90 -[`CompositeCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CompositeCommand.kt -[`SimpleCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/SimpleCommand.kt -[`RawCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/RawCommand.kt -[`CommandManager`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandManager.kt -[`CommandSender`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandSender.kt -[`CommandArgumentParser`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentParser.kt -[`CommandArgumentContext`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentContext.kt -[`CommandArgumentContext.BuiltIns`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentContext.kt#L66 +[`Command`]: ../backend/mirai-console/src/command/Command.kt +[`AbstractCommand`]: ../backend/mirai-console/src/command/Command.kt#L90 +[`CompositeCommand`]: ../backend/mirai-console/src/command/CompositeCommand.kt +[`SimpleCommand`]: ../backend/mirai-console/src/command/SimpleCommand.kt +[`RawCommand`]: ../backend/mirai-console/src/command/RawCommand.kt +[`CommandManager`]: ../backend/mirai-console/src/command/CommandManager.kt +[`CommandSender`]: ../backend/mirai-console/src/command/CommandSender.kt +[`CommandValueArgumentParser`]: ../backend/mirai-console/src/command/descriptor/CommandValueArgumentParser.kt +[`CommandArgumentContext`]: ../backend/mirai-console/src/command/descriptor/CommandArgumentContext.kt +[`CommandArgumentContext.BuiltIns`]: ../backend/mirai-console/src/command/descriptor/CommandArgumentContext.kt#L66 -[`MessageScope`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/MessageScope.kt +[`MessageScope`]: ../backend/mirai-console/src/util/MessageScope.kt ## [`Command`] @@ -95,7 +95,7 @@ abstract override suspend fun CommandSender.onCommand(args: MessageChain) Mirai Console 为了简化处理指令时的解析过程,设计了参数智能解析。 -### [`CommandArgumentParser`] +### [`CommandValueArgumentParser`] ```kotlin interface CommandArgumentParser { fun parse(raw: String, sender: CommandSender): T @@ -107,13 +107,13 @@ interface CommandArgumentParser { ### [`CommandArgumentContext`] -是 `Class` 到 [`CommandArgumentParser`] 的映射。作用是为某一个类型分配解析器。 +是 `Class` 到 [`CommandValueArgumentParser`] 的映射。作用是为某一个类型分配解析器。 #### [内建 `CommandArgumentContext`][`CommandArgumentContext.BuiltIns`] 支持原生数据类型,`Contact` 及其子类,`Bot`。 #### 构建 [`CommandArgumentContext`] -查看源码内注释:[CommandArgumentContext.kt: Line 146](../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/descriptor/CommandArgumentContext.kt#L146-L183) +查看源码内注释:[CommandArgumentContext.kt: Line 146](../backend/mirai-console/src/command/descriptor/CommandArgumentContext.kt#L146-L183) ### 支持参数解析的 [`Command`] 实现 Mirai Console 内建 [`SimpleCommand`] 与 [`CompositeCommand`] 拥有 [`CommandArgumentContext`],在处理参数时会首先解析参数再传递给插件的实现。 @@ -140,8 +140,8 @@ object MySimpleCommand : SimpleCommand( 1. 被分割为 `/`, `"tell"`, `"123456"`, `"Hello"` 2. `MySimpleCommand` 被匹配到,根据 `/` 和 `"test"`。`"123456"`, `"Hello"` 被作为指令的原生参数。 3. 由于 `MySimpleCommand` 定义的 `handle` 需要两个参数, `User` 和 `String`,`"123456"` 需要转换成 `User`,`"Hello"` 需要转换成 `String`。 -4. Console 在 [内建 `CommandArgumentContext`][`CommandArgumentContext.BuiltIns`] 寻找适合于 `User` 的 [`CommandArgumentParser`] -5. `"123456"` 被传入这个 [`CommandArgumentParser`],得到 `User` +4. Console 在 [内建 `CommandArgumentContext`][`CommandArgumentContext.BuiltIns`] 寻找适合于 `User` 的 [`CommandValueArgumentParser`] +5. `"123456"` 被传入这个 [`CommandValueArgumentParser`],得到 `User` 6. `"Hello"` 也会按照 4~5 的步骤转换为 `String` 类型的参数 7. 解析完成的参数被传入 `handle` @@ -253,7 +253,7 @@ ConsoleCommandSender AbstractUserCommandSender | +-----------------------------+----------------------------+---------------+ ``` -有关类型的详细信息,请查看 [CommandSender.kt](../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandSender.kt#L48-L135) +有关类型的详细信息,请查看 [CommandSender.kt](../backend/mirai-console/src/command/CommandSender.kt#L48-L135) ### 获取 @@ -263,4 +263,4 @@ ConsoleCommandSender AbstractUserCommandSender | 表示几个消息对象的’域‘,即消息对象的集合。用于最小化将同一条消息发送给多个类型不同的目标的付出。 -参考 [MessageScope](../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/MessageScope.kt#L28-L99) \ No newline at end of file +参考 [MessageScope](../backend/mirai-console/src/util/MessageScope.kt#L28-L99) \ No newline at end of file diff --git a/docs/Extensions.md b/docs/Extensions.md index 6958c0c5b..9a741b0c0 100644 --- a/docs/Extensions.md +++ b/docs/Extensions.md @@ -4,10 +4,10 @@ Mirai Console 拥有灵活的 Extensions API,支持扩展 Console 的一些服 Extensions 属于插件开发的进阶内容。 -[`Extension`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/Extension.kt -[`ExtensionPoint`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ExtensionPoint.kt -[`PluginComponentStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/PluginComponentStorage.kt -[`ComponentStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extension/ComponentStorage.kt +[`Extension`]: ../backend/mirai-console/src/extension/Extension.kt +[`ExtensionPoint`]: ../backend/mirai-console/src/extension/ExtensionPoint.kt +[`PluginComponentStorage`]: ../backend/mirai-console/src/extension/PluginComponentStorage.kt +[`ComponentStorage`]: ../backend/mirai-console/src/extension/ComponentStorage.kt ## [扩展][`Extension`] @@ -34,4 +34,4 @@ object MyPlugin : KotlinPlugin( /* ... */ ) { ### 可用扩展 -查看 [extensions](../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/extensions/)。每个文件对应一个扩展。 \ No newline at end of file +查看 [extensions](../backend/mirai-console/src/extensions)。每个文件对应一个扩展。 \ No newline at end of file diff --git a/docs/Permissions.md b/docs/Permissions.md index 6ba743f00..9cb6b0fcd 100644 --- a/docs/Permissions.md +++ b/docs/Permissions.md @@ -2,15 +2,15 @@ 权限系统。 -[`PermissionService`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionService.kt -[`Permission`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/Permission.kt -[`RootPermission`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/Permission.kt#L82 -[`PermissionId`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionId.kt -[`PermissionIdNamespace`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermissionIdNamespace.kt -[`Permittee`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/Permittee.kt -[`PermitteeId`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermitteeId.kt -[`AbstractPermitteeId`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/permission/PermitteeId.kt#L77 -[`CommandSender`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandSender.kt +[`PermissionService`]: ../backend/mirai-console/src/permission/PermissionService.kt +[`Permission`]: ../backend/mirai-console/src/permission/Permission.kt +[`RootPermission`]: ../backend/mirai-console/src/permission/Permission.kt#L82 +[`PermissionId`]: ../backend/mirai-console/src/permission/PermissionId.kt +[`PermissionIdNamespace`]: ../backend/mirai-console/src/permission/PermissionIdNamespace.kt +[`Permittee`]: ../backend/mirai-console/src/permission/Permittee.kt +[`PermitteeId`]: ../backend/mirai-console/src/permission/PermitteeId.kt +[`AbstractPermitteeId`]: ../backend/mirai-console/src/permission/PermitteeId.kt#L77 +[`CommandSender`]: ../backend/mirai-console/src/command/CommandSender.kt ## 权限 diff --git a/docs/PluginData.md b/docs/PluginData.md index bde09d2c1..c1731f9c3 100644 --- a/docs/PluginData.md +++ b/docs/PluginData.md @@ -1,45 +1,45 @@ # Mirai Console Backend - PluginData -[`Plugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/Plugin.kt -[`PluginDescription`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/PluginDescription.kt -[`PluginLoader`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoader.kt -[`PluginManager`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginManager.kt -[`JvmPluginLoader`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginLoader.kt -[`JvmPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPlugin.kt -[`JvmPluginDescription`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginDescription.kt -[`AbstractJvmPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/AbstractJvmPlugin.kt -[`KotlinPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/KotlinPlugin.kt -[`JavaPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPlugin.kt +[`Plugin`]: ../backend/mirai-console/src/plugin/Plugin.kt +[`PluginDescription`]: ../backend/mirai-console/src/plugin/description/PluginDescription.kt +[`PluginLoader`]: ../backend/mirai-console/src/plugin/loader/PluginLoader.kt +[`PluginManager`]: ../backend/mirai-console/src/plugin/PluginManager.kt +[`JvmPluginLoader`]: ../backend/mirai-console/src/plugin/jvm/JvmPluginLoader.kt +[`JvmPlugin`]: ../backend/mirai-console/src/plugin/jvm/JvmPlugin.kt +[`JvmPluginDescription`]: ../backend/mirai-console/src/plugin/jvm/JvmPluginDescription.kt +[`AbstractJvmPlugin`]: ../backend/mirai-console/src/plugin/jvm/AbstractJvmPlugin.kt +[`KotlinPlugin`]: ../backend/mirai-console/src/plugin/jvm/KotlinPlugin.kt +[`JavaPlugin`]: ../backend/mirai-console/src/plugin/jvm/JavaPlugin.kt -[`Value`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/Value.kt -[`PluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginData.kt -[`AbstractPluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AbstractPluginData.kt -[`AutoSavePluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginData.kt -[`AutoSavePluginConfig`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/AutoSavePluginConfig.kt -[`PluginConfig`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginConfig.kt -[`PluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt -[`MultiFilePluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt#L116 -[`MemoryPluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt#L100 -[`AutoSavePluginDataHolder`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataHolder.kt#L45 -[`PluginDataHolder`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataHolder.kt -[`PluginDataExtensions`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataExtensions.kt +[`Value`]: ../backend/mirai-console/src/data/Value.kt +[`PluginData`]: ../backend/mirai-console/src/data/PluginData.kt +[`AbstractPluginData`]: ../backend/mirai-console/src/data/AbstractPluginData.kt +[`AutoSavePluginData`]: ../backend/mirai-console/src/data/AutoSavePluginData.kt +[`AutoSavePluginConfig`]: ../backend/mirai-console/src/data/AutoSavePluginConfig.kt +[`PluginConfig`]: ../backend/mirai-console/src/data/PluginConfig.kt +[`PluginDataStorage`]: ../backend/mirai-console/src/data/PluginDataStorage.kt +[`MultiFilePluginDataStorage`]: ../backend/mirai-console/src/data/PluginDataStorage.kt#L116 +[`MemoryPluginDataStorage`]: ../backend/mirai-console/src/data/PluginDataStorage.kt#L100 +[`AutoSavePluginDataHolder`]: ../backend/mirai-console/src/data/PluginDataHolder.kt#L45 +[`PluginDataHolder`]: ../backend/mirai-console/src/data/PluginDataHolder.kt +[`PluginDataExtensions`]: ../backend/mirai-console/src/data/PluginDataExtensions.kt -[`MiraiConsole`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt -[`MiraiConsoleImplementation`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsoleImplementation.kt - +[`MiraiConsole`]: ../backend/mirai-console/src/MiraiConsole.kt +[`MiraiConsoleImplementation`]: ../backend/mirai-console/src/MiraiConsoleImplementation.kt + -[`Command`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/Command.kt -[`CompositeCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CompositeCommand.kt -[`SimpleCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/SimpleCommand.kt -[`RawCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/RawCommand.kt -[`CommandManager`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandManager.kt +[`Command`]: ../backend/mirai-console/src/command/Command.kt +[`CompositeCommand`]: ../backend/mirai-console/src/command/CompositeCommand.kt +[`SimpleCommand`]: ../backend/mirai-console/src/command/SimpleCommand.kt +[`RawCommand`]: ../backend/mirai-console/src/command/RawCommand.kt +[`CommandManager`]: ../backend/mirai-console/src/command/CommandManager.kt -[`Annotations`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/Annotations.kt -[`ConsoleInput`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/ConsoleInput.kt -[`JavaPluginScheduler`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPluginScheduler.kt -[`ResourceContainer`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/ResourceContainer.kt -[`PluginFileExtensions`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginFileExtensions.kt +[`Annotations`]: ../backend/mirai-console/src/util/Annotations.kt +[`ConsoleInput`]: ../backend/mirai-console/src/util/ConsoleInput.kt +[`JavaPluginScheduler`]: ../backend/mirai-console/src/plugin/jvm/JavaPluginScheduler.kt +[`ResourceContainer`]: ../backend/mirai-console/src/plugin/ResourceContainer.kt +[`PluginFileExtensions`]: ../backend/mirai-console/src/plugin/PluginFileExtensions.kt [Kotlin]: https://www.kotlincn.net/ [Java]: https://www.java.com/zh_CN/ @@ -116,7 +116,7 @@ object MyData : AutoSavePluginData() { *由于 Java 语法局限,为 Kotlin 而设计的 PluginData 在 Java 使用很复杂。* *即使 Mirai Console 为 Java 提供适配器,也强烈推荐 Java 用户在项目中混用 Kotlin 代码来完成数据模型定义。* -参考 [JAutoSavePluginData](../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/java/JAutoSavePluginData.kt#L69) +参考 [JAutoSavePluginData](../backend/mirai-console/src/data/java/JAutoSavePluginData.kt#L69) ### 非引用赋值 由于实现特殊, 赋值时不会写其引用. 即: diff --git a/docs/Plugins.md b/docs/Plugins.md index f472c8f30..63cee40f7 100644 --- a/docs/Plugins.md +++ b/docs/Plugins.md @@ -1,39 +1,39 @@ # Mirai Console Backend - Plugins -[`Plugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/Plugin.kt -[`PluginDescription`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/description/PluginDescription.kt -[`PluginLoader`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoader.kt -[`PluginManager`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginManager.kt -[`JvmPluginLoader`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginLoader.kt -[`JvmPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPlugin.kt -[`JvmPluginDescription`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPluginDescription.kt -[`AbstractJvmPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/AbstractJvmPlugin.kt -[`KotlinPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/KotlinPlugin.kt -[`JavaPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPlugin.kt +[`Plugin`]: ../backend/mirai-console/src/plugin/Plugin.kt +[`PluginDescription`]: ../backend/mirai-console/src/plugin/description/PluginDescription.kt +[`PluginLoader`]: ../backend/mirai-console/src/plugin/loader/PluginLoader.kt +[`PluginManager`]: ../backend/mirai-console/src/plugin/PluginManager.kt +[`JvmPluginLoader`]: ../backend/mirai-console/src/plugin/jvm/JvmPluginLoader.kt +[`JvmPlugin`]: ../backend/mirai-console/src/plugin/jvm/JvmPlugin.kt +[`JvmPluginDescription`]: ../backend/mirai-console/src/plugin/jvm/JvmPluginDescription.kt +[`AbstractJvmPlugin`]: ../backend/mirai-console/src/plugin/jvm/AbstractJvmPlugin.kt +[`KotlinPlugin`]: ../backend/mirai-console/src/plugin/jvm/KotlinPlugin.kt +[`JavaPlugin`]: ../backend/mirai-console/src/plugin/jvm/JavaPlugin.kt -[`PluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginData.kt -[`PluginConfig`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginConfig.kt -[`PluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt +[`PluginData`]: ../backend/mirai-console/src/data/PluginData.kt +[`PluginConfig`]: ../backend/mirai-console/src/data/PluginConfig.kt +[`PluginDataStorage`]: ../backend/mirai-console/src/data/PluginDataStorage.kt -[`ExportManager`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/ExportManager.kt +[`ExportManager`]: ../backend/mirai-console/src/plugin/jvm/ExportManager.kt -[`MiraiConsole`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt -[`MiraiConsoleImplementation`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsoleImplementation.kt - +[`MiraiConsole`]: ../backend/mirai-console/src/MiraiConsole.kt +[`MiraiConsoleImplementation`]: ../backend/mirai-console/src/MiraiConsoleImplementation.kt + -[`Command`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/Command.kt -[`CompositeCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CompositeCommand.kt -[`SimpleCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/SimpleCommand.kt -[`RawCommand`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/RawCommand.kt -[`CommandManager`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/CommandManager.kt +[`Command`]: ../backend/mirai-console/src/command/Command.kt +[`CompositeCommand`]: ../backend/mirai-console/src/command/CompositeCommand.kt +[`SimpleCommand`]: ../backend/mirai-console/src/command/SimpleCommand.kt +[`RawCommand`]: ../backend/mirai-console/src/command/RawCommand.kt +[`CommandManager`]: ../backend/mirai-console/src/command/CommandManager.kt -[`Annotations`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/Annotations.kt -[`ConsoleInput`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/ConsoleInput.kt -[`JavaPluginScheduler`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPluginScheduler.kt -[`ResourceContainer`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/ResourceContainer.kt -[`PluginFileExtensions`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/PluginFileExtensions.kt -[`AutoSavePluginDataHolder`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataHolder.kt#L45 +[`Annotations`]: ../backend/mirai-console/src/util/Annotations.kt +[`ConsoleInput`]: ../backend/mirai-console/src/util/ConsoleInput.kt +[`JavaPluginScheduler`]: ../backend/mirai-console/src/plugin/jvm/JavaPluginScheduler.kt +[`ResourceContainer`]: ../backend/mirai-console/src/plugin/ResourceContainer.kt +[`PluginFileExtensions`]: ../backend/mirai-console/src/plugin/PluginFileExtensions.kt +[`AutoSavePluginDataHolder`]: ../backend/mirai-console/src/data/PluginDataHolder.kt#L45 [Kotlin]: https://www.kotlincn.net/ [Java]: https://www.java.com/zh_CN/ diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/MiraiConsoleGraphicalLoader.kt b/frontend/mirai-console-graphical/src/MiraiConsoleGraphicalLoader.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/MiraiConsoleGraphicalLoader.kt rename to frontend/mirai-console-graphical/src/MiraiConsoleGraphicalLoader.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/MiraiGraphical.kt b/frontend/mirai-console-graphical/src/MiraiGraphical.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/MiraiGraphical.kt rename to frontend/mirai-console-graphical/src/MiraiGraphical.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalFrontEndController.kt b/frontend/mirai-console-graphical/src/controller/MiraiGraphicalFrontEndController.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalFrontEndController.kt rename to frontend/mirai-console-graphical/src/controller/MiraiGraphicalFrontEndController.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/event/ReloadEvent.kt b/frontend/mirai-console-graphical/src/event/ReloadEvent.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/event/ReloadEvent.kt rename to frontend/mirai-console-graphical/src/event/ReloadEvent.kt diff --git a/frontend/mirai-console-graphical/src/main/resources/character.png b/frontend/mirai-console-graphical/src/main/resources/character.png deleted file mode 100644 index b55153f1ec3c344df01a0cbde83fa12319d413a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30438 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 diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/BotModel.kt b/frontend/mirai-console-graphical/src/model/BotModel.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/BotModel.kt rename to frontend/mirai-console-graphical/src/model/BotModel.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/ConsoleInfo.kt b/frontend/mirai-console-graphical/src/model/ConsoleInfo.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/ConsoleInfo.kt rename to frontend/mirai-console-graphical/src/model/ConsoleInfo.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/GlobalSetting.kt b/frontend/mirai-console-graphical/src/model/GlobalSetting.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/GlobalSetting.kt rename to frontend/mirai-console-graphical/src/model/GlobalSetting.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/PluginModel.kt b/frontend/mirai-console-graphical/src/model/PluginModel.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/PluginModel.kt rename to frontend/mirai-console-graphical/src/model/PluginModel.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/VerificationCodeModel.kt b/frontend/mirai-console-graphical/src/model/VerificationCodeModel.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/VerificationCodeModel.kt rename to frontend/mirai-console-graphical/src/model/VerificationCodeModel.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/BaseStyleSheet.kt b/frontend/mirai-console-graphical/src/stylesheet/BaseStyleSheet.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/BaseStyleSheet.kt rename to frontend/mirai-console-graphical/src/stylesheet/BaseStyleSheet.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/LoginViewStyleSheet.kt b/frontend/mirai-console-graphical/src/stylesheet/LoginViewStyleSheet.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/LoginViewStyleSheet.kt rename to frontend/mirai-console-graphical/src/stylesheet/LoginViewStyleSheet.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/PluginViewStyleSheet.kt b/frontend/mirai-console-graphical/src/stylesheet/PluginViewStyleSheet.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/PluginViewStyleSheet.kt rename to frontend/mirai-console-graphical/src/stylesheet/PluginViewStyleSheet.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/PrimaryStyleSheet.kt b/frontend/mirai-console-graphical/src/stylesheet/PrimaryStyleSheet.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/stylesheet/PrimaryStyleSheet.kt rename to frontend/mirai-console-graphical/src/stylesheet/PrimaryStyleSheet.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/JFoenixAdaptor.kt b/frontend/mirai-console-graphical/src/util/JFoenixAdaptor.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/JFoenixAdaptor.kt rename to frontend/mirai-console-graphical/src/util/JFoenixAdaptor.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/SVG.kt b/frontend/mirai-console-graphical/src/util/SVG.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/SVG.kt rename to frontend/mirai-console-graphical/src/util/SVG.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/controls.kt b/frontend/mirai-console-graphical/src/util/controls.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/controls.kt rename to frontend/mirai-console-graphical/src/util/controls.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/Decorator.kt b/frontend/mirai-console-graphical/src/view/Decorator.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/Decorator.kt rename to frontend/mirai-console-graphical/src/view/Decorator.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/LoginView.kt b/frontend/mirai-console-graphical/src/view/LoginView.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/LoginView.kt rename to frontend/mirai-console-graphical/src/view/LoginView.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PluginsCenterView.kt b/frontend/mirai-console-graphical/src/view/PluginsCenterView.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PluginsCenterView.kt rename to frontend/mirai-console-graphical/src/view/PluginsCenterView.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PluginsView.kt b/frontend/mirai-console-graphical/src/view/PluginsView.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PluginsView.kt rename to frontend/mirai-console-graphical/src/view/PluginsView.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt b/frontend/mirai-console-graphical/src/view/PrimaryView.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt rename to frontend/mirai-console-graphical/src/view/PrimaryView.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt b/frontend/mirai-console-graphical/src/view/SettingsView.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt rename to frontend/mirai-console-graphical/src/view/SettingsView.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/dialog/InputDialog.kt b/frontend/mirai-console-graphical/src/view/dialog/InputDialog.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/dialog/InputDialog.kt rename to frontend/mirai-console-graphical/src/view/dialog/InputDialog.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/dialog/PluginDetailFragment.kt b/frontend/mirai-console-graphical/src/view/dialog/PluginDetailFragment.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/dialog/PluginDetailFragment.kt rename to frontend/mirai-console-graphical/src/view/dialog/PluginDetailFragment.kt diff --git a/frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/dialog/VerificationCodeFragment.kt b/frontend/mirai-console-graphical/src/view/dialog/VerificationCodeFragment.kt similarity index 100% rename from frontend/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/dialog/VerificationCodeFragment.kt rename to frontend/mirai-console-graphical/src/view/dialog/VerificationCodeFragment.kt diff --git a/frontend/mirai-console-graphical/src/test/kotlin/Main.kt b/frontend/mirai-console-graphical/test/Main.kt similarity index 100% rename from frontend/mirai-console-graphical/src/test/kotlin/Main.kt rename to frontend/mirai-console-graphical/test/Main.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/BufferedOutputStream.kt b/frontend/mirai-console-terminal/src/BufferedOutputStream.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/BufferedOutputStream.kt rename to frontend/mirai-console-terminal/src/BufferedOutputStream.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/ConsoleInputImpl.kt b/frontend/mirai-console-terminal/src/ConsoleInputImpl.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/ConsoleInputImpl.kt rename to frontend/mirai-console-terminal/src/ConsoleInputImpl.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/ConsoleTerminalSettings.kt b/frontend/mirai-console-terminal/src/ConsoleTerminalSettings.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/ConsoleTerminalSettings.kt rename to frontend/mirai-console-terminal/src/ConsoleTerminalSettings.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/ConsoleThread.kt b/frontend/mirai-console-terminal/src/ConsoleThread.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/ConsoleThread.kt rename to frontend/mirai-console-terminal/src/ConsoleThread.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/MiraiConsoleImplementationTerminal.kt b/frontend/mirai-console-terminal/src/MiraiConsoleImplementationTerminal.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/MiraiConsoleImplementationTerminal.kt rename to frontend/mirai-console-terminal/src/MiraiConsoleImplementationTerminal.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/MiraiConsoleTerminalLoader.kt b/frontend/mirai-console-terminal/src/MiraiConsoleTerminalLoader.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/MiraiConsoleTerminalLoader.kt rename to frontend/mirai-console-terminal/src/MiraiConsoleTerminalLoader.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/pure/MiraiConsolePureLoader.kt b/frontend/mirai-console-terminal/src/net/mamoe/mirai/console/pure/MiraiConsolePureLoader.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/pure/MiraiConsolePureLoader.kt rename to frontend/mirai-console-terminal/src/net/mamoe/mirai/console/pure/MiraiConsolePureLoader.kt diff --git a/frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/noconsole/NoConsole.kt b/frontend/mirai-console-terminal/src/noconsole/NoConsole.kt similarity index 100% rename from frontend/mirai-console-terminal/src/main/kotlin/net/mamoe/mirai/console/terminal/noconsole/NoConsole.kt rename to frontend/mirai-console-terminal/src/noconsole/NoConsole.kt diff --git a/tools/compiler-common/src/diagnostics/MiraiConsoleErrors.kt b/tools/compiler-common/src/diagnostics/MiraiConsoleErrors.kt index 051334a0a..03d21ea9e 100644 --- a/tools/compiler-common/src/diagnostics/MiraiConsoleErrors.kt +++ b/tools/compiler-common/src/diagnostics/MiraiConsoleErrors.kt @@ -6,36 +6,53 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ +package net.mamoe.mirai.console.compiler.common.diagnostics -package net.mamoe.mirai.console.compiler.common.diagnostics; +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1.create +import org.jetbrains.kotlin.diagnostics.DiagnosticFactory2.create +import org.jetbrains.kotlin.diagnostics.Errors +import org.jetbrains.kotlin.diagnostics.Severity.ERROR +import org.jetbrains.kotlin.psi.KtNamedDeclaration -import com.intellij.psi.PsiElement; -import org.jetbrains.kotlin.descriptors.ClassDescriptor; -import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1; -import org.jetbrains.kotlin.diagnostics.DiagnosticFactory2; -import org.jetbrains.kotlin.diagnostics.Errors; -import org.jetbrains.kotlin.psi.KtNamedDeclaration; +object MiraiConsoleErrors { + @JvmStatic + val ILLEGAL_PLUGIN_DESCRIPTION = create(ERROR) -import static org.jetbrains.kotlin.diagnostics.Severity.ERROR; + @JvmStatic + val NOT_CONSTRUCTABLE_TYPE = create(ERROR) -public interface MiraiConsoleErrors { - DiagnosticFactory1 ILLEGAL_PLUGIN_DESCRIPTION = DiagnosticFactory1.create(ERROR); - DiagnosticFactory1 NOT_CONSTRUCTABLE_TYPE = DiagnosticFactory1.create(ERROR); - DiagnosticFactory1 UNSERIALIZABLE_TYPE = DiagnosticFactory1.create(ERROR); - DiagnosticFactory2 ILLEGAL_COMMAND_NAME = DiagnosticFactory2.create(ERROR); - DiagnosticFactory2 ILLEGAL_PERMISSION_NAME = DiagnosticFactory2.create(ERROR); - DiagnosticFactory2 ILLEGAL_PERMISSION_ID = DiagnosticFactory2.create(ERROR); - DiagnosticFactory2 ILLEGAL_PERMISSION_NAMESPACE = DiagnosticFactory2.create(ERROR); - DiagnosticFactory2 ILLEGAL_COMMAND_REGISTER_USE = DiagnosticFactory2.create(ERROR); - DiagnosticFactory2 ILLEGAL_PERMISSION_REGISTER_USE = DiagnosticFactory2.create(ERROR); + @JvmStatic + val UNSERIALIZABLE_TYPE = create(ERROR) - @Deprecated - Object _init = new Object() { - { + @JvmStatic + val ILLEGAL_COMMAND_NAME = create(ERROR) + + @JvmStatic + val ILLEGAL_PERMISSION_NAME = create(ERROR) + + @JvmStatic + val ILLEGAL_PERMISSION_ID = create(ERROR) + + @JvmStatic + val ILLEGAL_PERMISSION_NAMESPACE = create(ERROR) + + @JvmStatic + val ILLEGAL_COMMAND_REGISTER_USE = create(ERROR) + + @JvmStatic + val ILLEGAL_PERMISSION_REGISTER_USE = create(ERROR) + + @Suppress("ObjectPropertyName", "unused") + @JvmStatic + @Deprecated("", level = DeprecationLevel.ERROR) + val _init: Any = object : Any() { + init { Errors.Initializer.initializeFactoryNamesAndDefaultErrorMessages( - MiraiConsoleErrors.class, - MiraiConsoleErrorsRendering.INSTANCE - ); + MiraiConsoleErrors::class.java, + MiraiConsoleErrorsRendering + ) } - }; -} + } +} \ No newline at end of file diff --git a/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/diagnostics/MiraiConsoleErrorsRendering.kt b/tools/compiler-common/src/diagnostics/MiraiConsoleErrorsRendering.kt similarity index 73% rename from tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/diagnostics/MiraiConsoleErrorsRendering.kt rename to tools/compiler-common/src/diagnostics/MiraiConsoleErrorsRendering.kt index 01a0d34d6..734a3a02a 100644 --- a/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/diagnostics/MiraiConsoleErrorsRendering.kt +++ b/tools/compiler-common/src/diagnostics/MiraiConsoleErrorsRendering.kt @@ -9,7 +9,15 @@ package net.mamoe.mirai.console.compiler.common.diagnostics -import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.* +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_COMMAND_NAME +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_COMMAND_REGISTER_USE +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_PERMISSION_ID +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_PERMISSION_NAME +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_PERMISSION_NAMESPACE +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_PERMISSION_REGISTER_USE +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.ILLEGAL_PLUGIN_DESCRIPTION +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.NOT_CONSTRUCTABLE_TYPE +import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.UNSERIALIZABLE_TYPE import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap import org.jetbrains.kotlin.diagnostics.rendering.Renderers diff --git a/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/resolveCommon.kt b/tools/compiler-common/src/resolve/resolveCommon.kt similarity index 100% rename from tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/resolveCommon.kt rename to tools/compiler-common/src/resolve/resolveCommon.kt diff --git a/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/resolveTypes.kt b/tools/compiler-common/src/resolve/resolveTypes.kt similarity index 100% rename from tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/resolve/resolveTypes.kt rename to tools/compiler-common/src/resolve/resolveTypes.kt diff --git a/tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/utilCommon.kt b/tools/compiler-common/src/utilCommon.kt similarity index 100% rename from tools/compiler-common/src/main/kotlin/net/mamoe/mirai/console/compiler/common/utilCommon.kt rename to tools/compiler-common/src/utilCommon.kt diff --git a/tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/IGNORED_DEPENDENCIES_IN_SHADOW.kt b/tools/gradle-plugin/src/IGNORED_DEPENDENCIES_IN_SHADOW.kt similarity index 100% rename from tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/IGNORED_DEPENDENCIES_IN_SHADOW.kt rename to tools/gradle-plugin/src/IGNORED_DEPENDENCIES_IN_SHADOW.kt diff --git a/tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/MiraiConsoleExtension.kt b/tools/gradle-plugin/src/MiraiConsoleExtension.kt similarity index 100% rename from tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/MiraiConsoleExtension.kt rename to tools/gradle-plugin/src/MiraiConsoleExtension.kt diff --git a/tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/MiraiConsoleGradlePlugin.kt b/tools/gradle-plugin/src/MiraiConsoleGradlePlugin.kt similarity index 100% rename from tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/MiraiConsoleGradlePlugin.kt rename to tools/gradle-plugin/src/MiraiConsoleGradlePlugin.kt diff --git a/tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/VersionConstants.kt b/tools/gradle-plugin/src/VersionConstants.kt similarity index 100% rename from tools/gradle-plugin/src/main/kotlin/net/mamoe/mirai/console/gradle/VersionConstants.kt rename to tools/gradle-plugin/src/VersionConstants.kt diff --git a/tools/intellij-plugin/README.md b/tools/intellij-plugin/README.md index 1d79320c2..e1b3021a4 100644 --- a/tools/intellij-plugin/README.md +++ b/tools/intellij-plugin/README.md @@ -10,7 +10,7 @@ IntelliJ 平台的 Mirai Console 开发插件 [PluginDescriptionChecker.kt](src/main/kotlin/net/mamoe/mirai/console/intellij/diagnostics/PluginDescriptionChecker.kt#L34) -- 使用 [ResolveContext](../../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/compiler/common/ResolveContext.kt) +- 使用 [ResolveContext](../../backend/mirai-console/src/common/ResolveContext.kt) - 检测 Plugin Id, Plugin Name, Plugin Version 的合法性. 并在非法时提示正确的语法. - 支持编译期常量 diff --git a/tools/intellij-plugin/src/main/resources/META-INF/plugin.xml b/tools/intellij-plugin/resources/META-INF/plugin.xml similarity index 100% rename from tools/intellij-plugin/src/main/resources/META-INF/plugin.xml rename to tools/intellij-plugin/resources/META-INF/plugin.xml diff --git a/tools/intellij-plugin/src/main/resources/icons/commandDeclaration.svg b/tools/intellij-plugin/resources/icons/commandDeclaration.svg similarity index 100% rename from tools/intellij-plugin/src/main/resources/icons/commandDeclaration.svg rename to tools/intellij-plugin/resources/icons/commandDeclaration.svg diff --git a/tools/intellij-plugin/src/main/resources/icons/pluginIcon.svg b/tools/intellij-plugin/resources/icons/pluginIcon.svg similarity index 100% rename from tools/intellij-plugin/src/main/resources/icons/pluginIcon.svg rename to tools/intellij-plugin/resources/icons/pluginIcon.svg diff --git a/tools/intellij-plugin/resources/icons/pluginMainDeclaration.png b/tools/intellij-plugin/resources/icons/pluginMainDeclaration.png new file mode 100644 index 0000000000000000000000000000000000000000..386d238b25800cb3abeaa31c8a52621405f6af1b GIT binary patch literal 3803 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 P2c6eqANPZ<>