安装与运行
SCE-Universe_Java_Edition 是 SCE-Universe 项目的 Java 实现,专注于测试最新的版本特性和未完成/未计划的更新。本文档将指导您如何构建和运行此应用程序,包括普通模式和带 Modloader 模式。
概述
该应用程序是一个独立的 Java 桌面应用程序,通过命令行脚本进行构建和启动。它内置了一个页面路由系统和配置管理器,并支持通过 Modloader 扩展其功能。应用程序的入口点是 cn.oraclestar.sce.App.App 类,它负责初始化全局设置、处理命令行参数(特别是 Modloader 功能),注册页面,并启动用户界面。
架构
应用程序启动流程
以下 Mermaid 图展示了应用程序的启动和初始化过程:
应用程序启动时,首先解析命令行参数。如果检测到 -mod 参数,则会启用 Modloader 功能并加载 Mod。之后,应用程序会注册一系列默认设置和所有内置页面。它会尝试从 settings.xml 文件加载用户配置。如果配置加载成功,将设置初始页面并启动路由。如果配置加载失败,则会跳转到错误页面。
构建与运行流程
以下 Mermaid 图展示了构建和运行应用程序的两种主要模式:
此图展示了从源代码到可执行 JAR 包的构建过程,以及如何通过不同的启动脚本以普通模式或 Modloader 模式运行应用程序。所有标准错误输出都会被重定向到 log.log 文件。
构建应用
该项目不依赖任何第三方构建系统(如 Maven 或 Gradle),而是使用一个简单的 Bash 脚本进行编译和打包。
基本构建
要构建应用程序,请在项目根目录下执行 build.sh 脚本:
./build.shSource: build.sh
此脚本将执行以下步骤:
- 清理
bin目录和旧的 JAR 包。 - 将
src目录下的所有 Java 文件编译到bin目录。 - 将
src目录中除.java文件外的所有资源复制到bin目录。 - 将编译后的类和资源打包成
app.jar。
构建成功后,您将在项目根目录中找到 app.jar 文件。
运行应用
应用程序可以通过提供的 shell 脚本(Linux/macOS)或批处理脚本(Windows)启动。项目支持两种运行模式:普通模式和 Modloader 模式。
普通模式运行
在普通模式下,应用程序将不会启用 Modloader 功能。启动脚本还会尝试将 settings.xml 中 mod 选项的值设置为 false。
Linux/macOS
./start.shSource: start.sh
Windows
start.batSource: start.bat
Modloader 模式运行
在 Modloader 模式下,应用程序将启用 Modloader 功能,并在启动时尝试加载 plugins 目录下的 Mod 文件。启动脚本还会尝试将 settings.xml 中 mod 选项的值设置为 true。
Linux/macOS
./start-modloader.shSource: start-modloader.sh
Windows
start-modloader.batSource: start-modloader.bat
重要提示:
- 所有标准错误(
stderr)输出都将被重定向到log.log文件。如果您需要查看实时日志或进行调试,请检查此文件。 - Mod 文件应放置在项目根目录的
plugins文件夹下。如果 Mod 是前置 Mod,请将其放置在plugins/preload文件夹下。
配置选项
应用程序的某些行为可以通过 settings.xml 文件中的配置进行调整,或者在代码中通过 setManager_core 进行管理。虽然 start.sh 和 start.bat 会自动修改 mod 配置,但您也可以手动编辑 settings.xml。
App.java 中的 register() 方法初始化了许多默认设置:
1cn.oraclestar.sce.system.setManager.setManager_core.addSet("homeTitle","SCE-UNIVERSE");
2cn.oraclestar.sce.system.setManager.setManager_core.addSet("isShowFriendshipRate",false);
3// ... 更多设置 ...
4cn.oraclestar.sce.system.setManager.setManager_core.addSet("port",8080);这些设置的详细说明请参考 settings.xml 或应用程序内部文档。
API 参考
对于 Mod 开发者,应用程序提供了一些核心 API 接口用于扩展功能。
cn.oraclestar.sce.system.modloader.modloader_main 接口
Mod 的主类需要实现此接口并使用 @target 注解。
1package cn.oraclestar.sce.upgrade.a26_01;
2
3import cn.oraclestar.sce.system.modloader.target;
4import cn.oraclestar.sce.system.UI.UI_core;
5import cn.oraclestar.sce.system.router.pages;
6
7@target(name = "SCE_JAVA_UPGRADE_26_01", author = "xingguangcuican", version = "26.01", Description = "SCE JAVA Offcial Upgrade on 26.01")
8public class App implements cn.oraclestar.sce.system.modloader.modloader_main {
9 @Override
10 public int innerHandle(String arg0, int arg1) {
11 return pages.CURRENT;
12 }
13 @Override
14 public void innerToPage(UI_core arg0, int arg1) {
15 // ...
16 }
17 @Override
18 public void onDisable() {
19 return;
20 }
21 @Override
22 public void onEnable() {
23 // ...
24 return;
25 }
26}Source: README.md
方法说明:
innerHandle(String pageId, int userInput): 在指定页面插入额外选项判断,pageId是当前页面 ID,userInput是用户输入。innerToPage(UI_core ui, int pageId): 在指定 TUI 界面渲染额外内容,ui是 UI 类的实例化对象,pageId是当前页面 ID。onDisable(): 在软件关闭时执行。onEnable(): 在软件启动时执行,常用于添加设置或注册页面。
cn.oraclestar.sce.system.setManager.setManager_core
用于管理应用程序设置的核心类。
changeVaule(String key, Object value): 修改设置值。getVaule(String key): 获取设置值。toggleSetting(String key): 切换布尔类型设置的值。addSet(String key, Object value): 添加新的设置键值对。
cn.oraclestar.sce.system.router.router_core
用于管理页面路由的核心类。
addPage(int pageId, pageheader pageInstance): 添加页面,pageId为页面 ID(建议使用页面名称的 hash 值),pageInstance为继承pageheader类的页面实例。