설정 스키마
설정 스키마
SeoulEnergy의 설정 파일은 plugins/SeoulEnergy/config.yml입니다.
기획자가 가장 자주 만지는 영역은 blocks:입니다. 다만 실제 동작에는 Towny 제한, Nexo 사용 여부, 권한 노드, DB, 스코어보드, 연료값도 같이 영향을 줍니다.
전체 구조
town-integration: ...relay-range: 8scoreboard: ...permission-nodes: ...block-provider: ...blocks: ...items: ...database: ...fuel-values: ...최상위 설정
| 섹션 | 용도 | 주로 수정하는 사람 |
|---|---|---|
town-integration | 마을 영역 안에서만 설치할지, 마을당 발전기 수를 제한할지 결정합니다. | 운영자, 기획자 |
relay-range | 개별 전선에 relay.range가 없을 때 쓰는 기본 연결 거리입니다. | 기획자 |
scoreboard | 서버명 등 표시 정보를 설정합니다. | 운영자 |
permission-nodes | 기본 LuckPerms/Bukkit 권한 노드 이름을 설정합니다. | 운영자 |
block-provider | Nexo custom block과 바닐라 fallback 사용 방식을 설정합니다. | 개발자, 운영자 |
blocks | 발전기, 전선, 기계, 배터리 정의입니다. | 기획자 |
items | 구버전 호환용 매핑입니다. 새 설정은 blocks를 우선 사용합니다. | 거의 수정하지 않음 |
database | 전기 블록, 연료, 배터리 저장량, 기계 인벤토리 저장 DB입니다. | 운영자 |
fuel-values | 연료별 기본 burn tick 값입니다. | 기획자 |
Towny 설정
town-integration: enabled: true max-generators-per-town: 5| 필드 | 설명 |
|---|---|
enabled | true면 마을 영역/Towny 주민 여부를 검사합니다. false면 마을 제한 없이 설치할 수 있습니다. |
max-generators-per-town | 마을당 설치 가능한 발전기 최대 개수입니다. 0이면 제한이 없습니다. |
Block Provider 설정
block-provider: preferred: NEXO vanilla-fallback: true| 필드 | 설명 |
|---|---|
preferred | 주 사용 provider입니다. 현재 서버는 NEXO를 기준으로 설계합니다. |
vanilla-fallback | true면 /energy give <blockId>로 받은 fallback 아이템을 바닐라 블록으로 설치해 테스트할 수 있습니다. |
preferred: NEXO라고 해서 Nexo가 필수로 강결합되는 것은 아닙니다. Nexo가 있으면 Nexo custom block 이벤트를 사용하고, 없거나 테스트 중이면 fallback 아이템으로 기본 블록 테스트를 할 수 있습니다.
Permission Nodes 설정
permission-nodes: admin: seoulenergy.admin status: seoulenergy.status give-fallback: seoulenergy.give bypass-town: seoulenergy.bypass.town place-generator: seoulenergy.place.generator place-relay: seoulenergy.place.wire place-machine: seoulenergy.place.machine place-storage: seoulenergy.place.storage use-generator: seoulenergy.use.generator use-relay: seoulenergy.use.wire use-machine: seoulenergy.use.machine use-storage: seoulenergy.use.storage이 값은 기본 권한입니다. 개별 블록에 permission.place 또는 permission.use가 있으면 개별 블록 권한이 우선됩니다.
Blocks 공통 스키마
blocks: block_id: type: GENERATOR provider-id: nexo_custom_block_id required-town-level: 1 permission: place: seoulenergy.place.generator.block_id use: seoulenergy.use.generator.block_id fallback: material: CRAFTING_TABLE name: "<yellow>표시 이름"| 필드 | 설명 |
|---|---|
block_id | SeoulEnergy 내부 ID입니다. 권한, DB, 로그는 이 값을 기준으로 잡습니다. |
type | GENERATOR, RELAY, MACHINE, STORAGE 중 하나입니다. |
provider-id | Nexo custom block ID입니다. 보통 block_id와 같게 둡니다. |
required-town-level | SeoulTown이 설치되어 있을 때 이 블록 설치에 필요한 마을 성장 단계입니다. 없거나 0이면 SeoulTown 레벨 제한을 걸지 않습니다. |
permission.place | 이 블록을 설치할 때 필요한 권한입니다. |
permission.use | 이 블록을 사용할 때 필요한 권한입니다. |
fallback.material | Nexo 없이 테스트할 때 설치되는 바닐라 Material입니다. |
fallback.name | /energy give <blockId> 아이템 표시 이름입니다. MiniMessage 형식을 사용할 수 있습니다. |
발전기 스키마
blocks: wooden_generator: type: GENERATOR provider-id: wooden_generator required-town-level: 1 permission: place: seoulenergy.place.generator.wooden_generator use: seoulenergy.use.generator.wooden_generator fallback: material: CRAFTING_TABLE name: "<yellow>목재 발전기" generator: display: "목재 발전기" max-fuel-ticks: 16000 power-output: 100 fuel-display: "모든 원목 · 목탄" allowed-fuels: [OAK_LOG, BIRCH_LOG, CHARCOAL] gui: title: "<yellow>목재 발전기" size: 27 slots: fuel-display: 12 fuel: 13 status: 14| 필드 | 설명 |
|---|---|
generator.display | 상태 표시나 문서에서 쓰는 이름입니다. |
generator.max-fuel-ticks | 발전기에 저장 가능한 최대 연료 tick입니다. |
generator.power-output | 발전기가 생산하는 전력량입니다. |
generator.fuel-display | GUI 설명용 연료 설명입니다. |
generator.allowed-fuels | 이 발전기에 넣을 수 있는 Material 목록입니다. |
generator.gui | 발전기 GUI 제목, 크기, 슬롯, 장식 설정입니다. |
전선/릴레이 스키마
blocks: copper_wire: type: RELAY provider-id: copper_wire permission: place: seoulenergy.place.wire.copper_wire use: seoulenergy.use.wire.copper_wire fallback: material: LIGHTNING_ROD name: "<#b87333>구리 전선" relay: range: 8| 필드 | 설명 |
|---|---|
relay.range | 이 전선/릴레이가 전력망을 연결할 수 있는 거리입니다. 없으면 최상위 relay-range를 사용합니다. |
기계 스키마
blocks: electric_furnace: type: MACHINE provider-id: electric_furnace permission: place: seoulenergy.place.machine.electric_furnace use: seoulenergy.use.machine.electric_furnace fallback: material: FURNACE name: "<aqua>전기 용광로" machine: engine: ELECTRIC_FURNACE power-input: 60 work-ticks: 5 priority: 10 gui: title: "<aqua>전기 용광로" size: 27 slots: input: 10 progress: 13 output: 16| 필드 | 설명 |
|---|---|
machine.engine | 내부 기계 엔진 이름입니다. 현재 예시는 ELECTRIC_FURNACE입니다. |
machine.power-input | 작동에 필요한 전력량입니다. |
machine.work-ticks | 작업 진행 속도입니다. 낮을수록 빠릅니다. |
machine.priority | 전력이 부족할 때 우선 공급할 순서입니다. 숫자가 클수록 우선순위가 높습니다. 기본값은 0입니다. |
machine.gui | 기계 GUI 제목, 크기, 입력/진행/출력 슬롯 설정입니다. |
배터리 스키마
blocks: basic_battery_cell: type: STORAGE provider-id: basic_battery_cell permission: place: seoulenergy.place.storage.basic_battery_cell use: seoulenergy.use.storage.basic_battery_cell fallback: material: RESPAWN_ANCHOR name: "<yellow>기본 배터리 셀" storage: capacity: 10000 max-input: 200 max-output: 150 priority: 0| 필드 | 설명 |
|---|---|
storage.capacity | 저장 가능한 최대 전력량입니다. |
storage.max-input | 한 번의 전력 배분에서 받을 수 있는 최대 충전량입니다. |
storage.max-output | 한 번의 전력 배분에서 내보낼 수 있는 최대 방전량입니다. |
storage.priority | 여러 배터리가 있을 때 충방전 우선순위입니다. 숫자가 클수록 우선입니다. 기본값은 0입니다. |
Priority 설계 기준
priority는 값이 클수록 먼저 처리됩니다.
권장 구간:
| priority | 용도 |
|---|---|
100 이상 | 반드시 먼저 돌아야 하는 핵심 생산 기계 |
10 ~ 99 | 일반 생산 기계 |
1 ~ 9 | 보조 기계 |
0 | 기본값. 우선순위를 따로 주지 않은 기계/배터리 |
예시:
blocks: main_electric_furnace: type: MACHINE machine: power-input: 80 priority: 100
decorative_press: type: MACHINE machine: power-input: 40 priority: 0동일한 전력망에서 전력이 부족하면 main_electric_furnace가 먼저 전력을 받습니다.
기계의 priority가 같으면 발전기까지 더 가까운 기계가 먼저 전력을 받고, 거리도 같으면 내부 위치 key 순서로 결정됩니다. 배터리는 priority가 같으면 위치 key 순서로 처리됩니다.
GUI 공통 스키마
gui: title: "<aqua>GUI 제목" size: 27 slots: input: 10 progress: 13 output: 16 filler: material: GRAY_STAINED_GLASS_PANE name: " " decorations: 4: material: REDSTONE name: "<aqua>장식 이름" lore: - "<gray>설명"| 필드 | 설명 |
|---|---|
title | GUI 제목입니다. MiniMessage 형식을 사용할 수 있습니다. |
size | GUI 크기입니다. 9의 배수여야 합니다. |
slots | 기능 슬롯입니다. 발전기와 기계마다 필요한 슬롯 이름이 다릅니다. |
filler | 빈 칸을 채우는 아이템입니다. |
decorations | 특정 슬롯에 표시할 장식 아이템입니다. |
Database 설정
database: host: "172.18.0.1" port: 3306 name: "seoulenergy" username: "seoulenergy" password: "..."DB에는 설치된 전기 블록, 연료 상태, 배터리 저장량, 기계 인벤토리가 저장됩니다. 운영 서버에서는 비밀번호를 문서에 그대로 공유하지 말고 서버 설정 기준으로 관리합니다.
Fuel Values 설정
fuel-values: COAL: 1600 CHARCOAL: 1600 COAL_BLOCK: 16000 BLAZE_ROD: 2400발전기에서 연료를 넣었을 때 기본 burn tick으로 사용됩니다. 개별 발전기의 allowed-fuels에 포함된 Material만 실제로 넣을 수 있습니다.
전체 예시
town-integration: enabled: true max-generators-per-town: 5
relay-range: 8
scoreboard: server-name: "town"
block-provider: preferred: NEXO vanilla-fallback: true
blocks: coal_generator: type: GENERATOR provider-id: coal_generator required-town-level: 4 permission: place: seoulenergy.place.generator.coal_generator use: seoulenergy.use.generator.coal_generator fallback: material: SMOKER name: "<gray>석탄 발전기" generator: display: "석탄 발전기" max-fuel-ticks: 80000 power-output: 300 fuel-display: "석탄 · 석탄 블록" allowed-fuels: [COAL, COAL_BLOCK]
copper_wire: type: RELAY provider-id: copper_wire fallback: material: LIGHTNING_ROD name: "<#b87333>구리 전선" relay: range: 8
database: host: "172.18.0.1" port: 3306 name: "seoulenergy" username: "seoulenergy" password: "환경에 맞게 설정"
fuel-values: COAL: 1600 COAL_BLOCK: 16000SeoulTown 연동
SeoulEnergy는 SeoulTown이 설치되어 있으면 required-town-level을 확인합니다.
blocks: wooden_generator: type: GENERATOR required-town-level: 1
coal_generator: type: GENERATOR required-town-level: 4설치 판정 순서는 대략 다음과 같습니다.
- LuckPerms/Bukkit 설치 권한 확인
- Towny 마을 영역 여부 확인
- 해당 위치 마을의 주민 또는 동맹 여부 확인
- 마을 발전기 수 제한 확인
- SeoulTown 마을 성장 단계 해금 여부 확인
운영 서버 기준으로 wooden_generator는 Lv.1 새싹, coal_generator는 Lv.4 석탄부터 설치 가능합니다.
SeoulTown이 없으면 이 제한은 자동으로 비활성화되고, 기존 Towny/권한 제한만 적용됩니다.
blockId와 provider-id
blockId는 SeoulEnergy 내부 ID입니다.
provider-id는 Nexo와 연결할 ID입니다.
보통은 둘을 같게 쓰지만, 반드시 같을 필요는 없습니다. 권한, 로그, DB 기준은 provider-id가 아니라 blockId로 잡는 것을 권장합니다.