Maze Generator

生成自定义、随机且巨大的迷宫。可定制主题!

资源图片
# 迷宫生成器 ## KasaiSora的史诗级展示 ## 我的可怜的展示尝试 ## 可用于低端服务器或拥挤的大型服务器 ---~~~~ **迷宫生成器** 是一个能够生成随机且大型迷宫的插件。 随时告诉我您希望在未来看到哪些功能 😄 留下积极或消极的反馈,两者对每个人都有用! 您可以随时通过 [mazegenerator@radqnico.anonaddy.com](mailto:mazegenerator@radqnico.anonaddy.com) 与我联系。 查看GIF -> [Link](https://gifyu.com/image/S0PXF) 我的插件可免费使用,没有任何附加条件,但如果您想支持我并为我提供持续发布新功能的方式,请考虑一个小小的捐赠 😊 [https://www.buymeacoffee.com/radqnico](https://www.buymeacoffee.com/radqnico) --- ## 性能至上 迷宫的放置完全**无卡顿**。 对于高达5000x5000的迷宫,迷宫的生成速度非常快,否则,如果您在配置小于2GB RAM的服务器上运行,您可能会出现一些卡顿或崩溃 😂 ## 亮点 - **数学证明:** 数学上已经证明,从迷宫的任何位置,您始终可以到达任何其他位置。 - **无卡顿:** 它不会影响服务器的性能。 就像微风一样,在拥挤的服务器上生成您巨大的迷宫。 - **安全重载:** 它可以安全重载,但中断的迷宫生成无法恢复(目前...)。 - **进度通知:** 它会在非常长的过程中通知您! - **可自定义的主题:** 从config中创建您自己的主题! # MazeGenerator 在不使服务器冻结的情况下,在Minecraft中构建宏伟且主题化的迷宫。 该插件会逐步生成迷宫布局,并在一段时间内放置方块,并具有可配置的每刻预算。 工作按批次分组,并且只有在需要放置方块时才会按需加载批次。 - Paper ## 功能 - 流式生成和放置 — 没有大型内存队列。 - 仅限按需批次加载(从不预加载)。 - 自适应每刻时间预算,以保护TPS。 - 按批次放置(每个任务多个单元格)以减少开销。 - 地板/墙壁/顶部材料的加权主题 (`themes.yml`)。 - 空心墙壁和封闭屋顶的选项。 - Tab 自动补全用于参数,以及 `/maze help`、`/maze stop`、`/maze reload`。 --- ## 安装 1) 构建或下载插件 JAR。 2) 将 JAR 放入服务器的 `plugins/` 文件夹中。 3) 启动服务器一次以生成默认配置和数据文件。 创建/使用的文件: - `plugins/MazeGenerator/config.yml` — 性能和行为设置。 - `plugins/MazeGenerator/themes.yml` — 每个主题的材料权重。 - `plugins/MazeGenerator/messages.yml` — 面向用户的消息。 更改这些文件后,使用 `/maze reload`,或重新启动插件/服务器。 --- ## 指令 - `/maze` — 在您位置附近以合理默认值开始构建。 - `/maze stop` — 停止所有活动迷宫构建。 - `/maze help` — 打印用法和参数参考。 - `/maze reload` — 重新加载 `config.yml`、`themes.yml` 和 `messages.yml`。 权限: - `mazegenerator.maze` — 使用 `/maze` 和查看状态。 - `mazegenerator.reload` — 使用 `/maze reload`。 ### 参数 (键:值) 顺序无关紧要;Tab 自动补全建议键和许多值。 - `x`, `y`, `z`: 世界坐标(默认为您的位置)。 - `world`: 世界名称(默认为您的世界)。 - `mazeSizeX`, `mazeSizeZ`: 迷宫大小(以单元格为单位)(内部强制奇数)。 - `cellSize`: 每个单元格足迹的方块宽度/长度。 - `wallHeight`: 垂直墙壁高度(不包括顶部层)。 - `hasExits`: `true|false` — 确保在迷宫边界上至少有一个出口。 - `additionalExits`: 除了第一个之外的额外的出口(0..N)。 - `hasRoom`: `true|false` — 在中心雕刻一个矩形房间。 - `roomSizeX`, `roomSizeZ`: 中心房间的尺寸(单元格)。 - `erosion`: 0..1 — 在雕刻附近时偶尔在墙壁上制造小孔。 - `closed`: `true|false` — 路径上的屋顶(否则路径通向天空)。 - `hollow`: `true|false` — 墙壁单元格为外壳(仅为边缘),可以节省大量方块。 - `themeName`: 来自 `themes.yml` 的主题键(Tab 自动补全列出可用主题)。 示例: - `/maze mazeSizeX:51 mazeSizeZ:51 cellSize:2 wallHeight:4 hasExits:true additionalExits:1 themeName:forest` - `/maze world:world_nether x:100 y:80 z:-200 mazeSizeX:41 mazeSizeZ:41 themeName:snowy` - `/maze mazeSizeX:75 mazeSizeZ:75 cellSize:3 wallHeight:5 hasExits:true hollow:true closed:false themeName:desert` --- ## 配置 (`config.yml`) 默认设置经过调整,可在大多数服务器上保留 TPS。 主要设置: - `millis-per-tick` (默认 3) - 构建器每刻使用的基本时间预算。 自适应调整会在界限内增大/减小此值。 - `jobs-batch-cells` (默认 64) - 调度程序尝试收集多少个迷宫单元格,才能进行一次补给。 较大的值可以减少开销,但可能会增加突发性。 - `cells-per-job` (默认 16) - 要打包到单个放置任务(用于给定的批次)中的单元格数量。 较高的值可以减少调度程序开销和冗余批次加载。 - `set-block-data` (默认 false) - 为放置的方块附加 CustomBlockData。 对于大多数构建,这应保持为 false(节省 I/O 和内存)。 - `defer-wall-fill` (默认 false) - 构建顺序选项: - true: 先雕刻(走廊会快速出现),然后填充剩余的墙壁;总的来说,需要写的方块更少。 - false: 先填充墙壁,然后雕刻;一开始看起来像一个实心质量,然后路径出现。 - `autotune:` (默认启用) - `min-millis-per-tick`, `max-millis-per-tick` — 每刻时间预算的界限。 - `increase-step`, `decrease-step` — 预算增长/缩小的速度。 - `spare-high`, `spare-low` — 基于当前 50 毫秒刻钟中剩余时间的阈值。 - `status-interval-jobs` (默认 1000) - 在执行了大约 N 个任务后,在聊天中打印进度更新。 注意:插件会在放置时间按需加载批次 — 没有预加载和没有后台批次预算。 ### 示例:平稳(对 TPS 的影响最小) ```yaml millis-per-tick: 2 jobs-batch-cells: 32 cells-per-job: 8 set-block-data: false autotune: enabled: true min-millis-per-tick: 1 max-millis-per-tick: 4 increase-step: 1 decrease-step: 2 spare-high: 18 spare-low: 12 defer-wall-fill: true status-interval-jobs: 500 ``` ### 示例:平衡(默认情况) ```yaml millis-per-tick: 3 jobs-batch-cells: 64 cells-per-job: 16 set-block-data: false autotune: enabled: true min-millis-per-tick: 1 max-millis-per-tick: 8 increase-step: 1 decrease-step: 2 spare-high: 18 spare-low: 12 defer-wall-fill: false status-interval-jobs: 1000 ``` ### 示例:快速(接受一些尖峰的风险) ```yaml millis-per-tick: 5 jobs-batch-cells: 128 cells-per-job: 32 set-block-data: false autotune: enabled: true min-millis-per-tick: 2 max-millis-per-tick: 10 increase-step: 1 decrease-step: 1 spare-high: 20 spare-low: 10 defer-wall-fill: true status-interval-jobs: 750 ``` --- ## 主题 (`themes.yml`) 主题控制三个部分的加权材料选择:`floor`、`wall` 和 `top`。 示例: ```yaml desert: floor: SANDSTONE: 20 RED_SANDSTONE: 10 wall: SAND: 40 CHISELED_SANDSTONE: 20 top: SANDSTONE: 3 forest: floor: GRASS_BLOCK: 20 DIRT: 2 wall: OAK_LOG: 30 OAK_LEAVES: 25 top: OAK_LOG: 3 ``` 权重为正整数;权重越高 = 可能性越大。 如果某个部分为空,则会回退到 `STONE`。 提示: - 使用更多 `wall` 和 `top` 的变化,以获得更自然的风格。 - 保持 `top` 材料较轻,以获得有趣的轮廓。 --- ## 消息 (`messages.yml`) - `plugin-prefix`, `job-started`, `job-status`, `job-done`, `job-stopped`, `command-error`, `no-permission`, `config-reloaded`。 - 使用 `&` 进行颜色编码,并在发送时进行翻译。 --- ## 自适应调整如何工作(快速) - 测量当前 50 毫秒服务器刻钟内剩余的空闲时间(基于刻钟开始事件)。 - 如果有充足的空闲时间 (`spare >= spare-high`),则会将每刻时间预算增加 `increase-step`,最多为 `max-millis-per-tick`。 - 如果刻钟很紧张 (`spare < spare-low`),则会减少 `decrease-step`,达到 `min-millis-per-tick`。 - 构建器仅会在每个刻钟的 `now + currentMillisPerTick` 时间处放置方块。 --- ## 性能提示 - 使用 `hollow: true` 和更大的 `cellSize` 来显著减少方块总数。 - 增加 `cells-per-job` 和 `jobs-batch-cells` 以减少调度开销。 - 除非真的需要,否则保持 `set-block-data: false`。 - 偏好 `defer-wall-fill: true` 以获得更快的“可看见迷宫的时间” 并减少写入次数。 --- ## 故障排除 - “迷宫似乎卡住” 或没有进展: - 聊天更新是周期性的;降低 `status-interval-jobs` 以获得更频繁的反馈。 - 在控制台中检查错误。 如果批次非常遥远,每个任务将在按需加载时加载它们;这可能很慢,但应该不会卡住。 - 构建期间 TPS 下降: - 降低 `millis-per-tick`、`jobs-batch-cells` 或 `cells-per-job`。 - 保持 `autotune.enabled: true`,以便预算会自动回退。 - 主题看起来过于均匀: - 在 `wall`/`top` 部分添加更多材料和权重。 ### 厌倦了挥汗如雨? ``` /maze cellSize:1 mazeSizeX:1000 mazeSizeZ:1000 wallHeight:4 themeName:mountain erosion:0.05 ``` ![Mountain1](https://i.ibb.co/n1z3HKM/2024-01-25-23-53-59.png) ![Mountain2](https://i.ibb.co/s9SJMjm/2024-01-25-23-54-19.png) # 玩得开心,干杯!