⚙️ AdventureEMC

一、简介

AdventureEMC 是面向生存服的 EMC 自动化机器插件。玩家通过三层机器结构自动吸收指定掉落物,将其转换并存储为 EMC,再按计划生产羊毛、陶瓦、混凝土、玻璃等建材。

🧲
自动吸收
扫描附近实体掉落物,并按白名单和 EMC 表自动入库。
🔋
安全储存
SQLite 持久化机器、缓存、EMC、品质和磨损状态。
📤
计划输出
选择材料和数量,向相邻容器执行并行生产任务。
💎
四档品质
普通、金、钻石、合金逐级提高槽位、速度、容量和并发。

二、运行要求

项目要求
服务端Paper 1.21.4+
Java21+
数据SQLite(驱动随插件打包)
可选插件PacketEvents、Dominion、WorldGuard、CoreProtect、HuskSync、LuckPerms、CraftEngine

📥 安装与目录

安装步骤

  1. AdventureEMC-1.3.0.jar 放入 plugins/
  2. 首次启动生成配置并创建机器数据库。
  3. 检查 settings.yml 的服务器端口、世界与游戏模式限制。
  4. 按需修改机器物品、GUI 和 EMC 数值。
  5. 执行 /aemc reload 并检查加载统计。

目录结构

plugins/AdventureEMC/
├── config.yml                 # 旧版兼容配置
├── config/
│   ├── settings.yml           # 限制、机器、品质、磨损、性能
│   ├── items.yml              # 机器物品与 CraftEngine ID
│   ├── gui.yml                # GUI 标题、按钮、音效和反馈
│   ├── messages.yml           # 玩家消息
│   └── emc-values.yml         # 输入/输出材料 EMC 表
└── machines.db                # SQLite 机器数据
⚠️ 首先检查端口

默认只允许服务器端口 30003 普通使用。端口不匹配时插件仍可启动和执行管理命令,但玩家不能正常放置或使用机器。

🏗️ 机器结构

完整机器必须垂直搭建三层,顺序不能颠倒。

上层  EMC输出器     ← 选择建材和数量,向周围容器输出
中层  EMC储存器     ← 保存 EMC,并提供整机容量
下层  EMC吸收器     ← 扫描附近掉落物,转换为 EMC

放置规则

  • 储存器必须放在吸收器正上方。
  • 输出器必须放在储存器正上方。
  • 放置者需要 adventureemc.use
  • 世界、端口和游戏模式必须满足 restrictions。
  • 机器物品材质和插件 PDC 标识必须有效。

拆除规则

设备默认策略
吸收器缓存物品按 break-policy.collector-items: DROP 掉落
储存器EMC 按 break-policy.condenser-emc: CLEAR 清空
全部机器仅所有者或管理员可以操作

🧲 EMC 吸收器

工作流程

  1. 按照扫描间隔检查附近掉落物。
  2. 只接收 collector.materials 白名单内容。
  3. 每种材料根据 emc-values.yml 计算 EMC。
  4. 先进入吸收器缓存,再向正上方储存器结算。

关键设置

配置默认说明
range1扫描半径
storage-capacity512缓存容量
scan-interval-ticks1工作扫描间隔
idle-scan-interval-ticks20空闲扫描间隔

品质决定可同时选择的吸收材料槽位:普通 1、金 2、钻石 3、合金 4。

🔋 EMC 储存器

储存器保存整套机器的 EMC,并通过 GUI 以玻璃面板显示当前值与最大容量。

容量与重量

设置默认
普通容量100,000 EMC
重载阈值50,000 EMC
重量步进每 50,000 EMC
每级速度惩罚20%
最大惩罚80%
ℹ️ 重型储存器保护

达到重载阈值的储存器不能放入任何容器,防止通过容器移动高 EMC 状态机器。

📤 EMC 输出器

使用方法

  1. 右键输出器打开输出槽 GUI。
  2. 选择目标建材,可使用搜索按钮过滤。
  3. 输入生产数量并确认任务。
  4. 插件从下方储存器扣除 EMC。
  5. 成品输出到相邻可用容器。

暂停原因

  • 下方没有储存器
  • 周围没有可输出容器
  • 所有输出容器已满
  • EMC 不足或任务达到品质并发上限

默认输出范围

支持 16 色羊毛、陶瓦、混凝土、混凝土粉末、染色玻璃和带釉陶瓦。可在 output.materials 调整。

💎 机器品质

品质吸收槽/速度储存容量/速度输出并发/速度/上限
普通1 / 1.0×100,000 / 1.0×1 / 1.0× / 400
2 / 1.1×500,000 / 1.2×2 / 1.2× / 864
钻石3 / 1.2×800,000 / 1.4×3 / 1.3× / 1,728
合金4 / 1.3×1,000,000 / 1.6×4 / 1.5× / 3,456

发放语法

/aemc give <collector|condenser|output> [normal|gold|diamond|alloy] [玩家] [数量]

每个品质可在 items.yml 设置独立显示名、Lore 与 CraftEngine ID。

🔧 磨损与维修

启用 wear.enabled 后,机器每次有效操作都会损失耐久状态。

状态阈值

状态阈值默认效率惩罚
良好> 70%0%
轻微生锈≤ 70%5%
磨损≤ 35%15%
严重破旧≤ 10%35%

维修材料

  • 铜锭:恢复 15%
  • 铁锭:恢复 35%

GUI 和机器物品 Lore 会显示状态名称及百分比。

⚖️ EMC 数值

emc-values.yml 是输入掉落物和输出建材的统一换算表。

默认示例

材料EMC
ROTTEN_FLESH0.5
BONE0.8
SPIDER_EYE / GUNPOWDER / ENDER_PEARL1
羊毛1
陶瓦2
混凝土 / 混凝土粉末3
染色玻璃4
带釉陶瓦5
values:
  ROTTEN_FLESH: 0.5
  BONE: 0.8
  GUNPOWDER: 1
  WHITE_WOOL: 1
  WHITE_CONCRETE: 3
  WHITE_STAINED_GLASS: 4
⚠️ 双重白名单

材料只有同时出现在 settings.yml 的输入/输出白名单和 emc-values.yml 中才可使用。

⚙️ settings.yml

限制配置

restrictions:
  enabled-server-ports: [30003]
  allowed-worlds:
    - survival
    - survival_nether
    - survival_the_end
  allowed-game-modes: [SURVIVAL]
  admin-bypass: true

性能与存储

配置默认说明
limits.max-machines2000服务器机器上限
limits.machines-per-tick80每 tick 最大处理机器数
storage.save-delay-ticks40延迟合并保存
storage.auto-save-ticks1200自动保存周期

🪟 GUI 与物品

items.yml

分别配置 collector、condenser、output 的基础物品及 normal/gold/diamond/alloy 四档覆盖项。支持原版材质、显示名、Lore、CustomModelData 和 craftengine-id

gui.yml

区域用途
feedback点击、成功、错误音效与冷却
collector材料选择界面和 EMC Lore
condenser品质行数、EMC 面板和容量显示
output材料分页、搜索和数量输入
wear磨损状态名称和维修反馈

⌨️ 命令与权限

命令

命令说明
/aemc help显示帮助
/aemc version显示版本和当前端口
/aemc status显示机器与材料加载状态
/aemc reload重读配置并重建定时任务
/aemc give ...向玩家发放指定类型、品质和数量的机器

权限

节点默认说明
adventureemc.usetrue放置和使用机器
adventureemc.adminOP重载、发放、管理他人机器并绕过限制

主命令别名:/adventureemc/aemc/emcauto

🔗 插件联动

插件用途
CraftEngine读取自定义机器物品 ID
Dominion / WorldGuard领地和区域使用检查
CoreProtect方块操作记录环境
HuskSync跨服玩家数据环境兼容
LuckPerms权限管理
PacketEvents包级能力预留

全部为软依赖;未安装时核心三层机器与 SQLite 持久化仍可工作。

🧰 排错指南

无法放置机器

  • 检查端口、世界、游戏模式和 adventureemc.use
  • 确认使用的是带插件标识的机器物品,而非普通同材质方块
  • 检查机器数量是否达到 max-machines

机器停止工作

  • 吸收器:缓存或储存器已满
  • 储存器:上下层结构不完整
  • 输出器:没有容器、容器已满或 EMC 不足
  • 严重磨损会降低效率,及时使用维修材料

配置重载

执行 /aemc reload 后确认返回的吸收材料、输出建材和 EMC 值数量。更换 JAR 后应重启。