Skip to content

설정 스키마

설정 스키마

SeoulEnergy의 설정 파일은 plugins/SeoulEnergy/config.yml입니다.

기획자가 가장 자주 만지는 영역은 blocks:입니다. 다만 실제 동작에는 Towny 제한, Nexo 사용 여부, 권한 노드, DB, 스코어보드, 연료값도 같이 영향을 줍니다.

전체 구조

town-integration: ...
relay-range: 8
scoreboard: ...
permission-nodes: ...
block-provider: ...
blocks: ...
items: ...
database: ...
fuel-values: ...

최상위 설정

섹션용도주로 수정하는 사람
town-integration마을 영역 안에서만 설치할지, 마을당 발전기 수를 제한할지 결정합니다.운영자, 기획자
relay-range개별 전선에 relay.range가 없을 때 쓰는 기본 연결 거리입니다.기획자
scoreboard서버명 등 표시 정보를 설정합니다.운영자
permission-nodes기본 LuckPerms/Bukkit 권한 노드 이름을 설정합니다.운영자
block-providerNexo custom block과 바닐라 fallback 사용 방식을 설정합니다.개발자, 운영자
blocks발전기, 전선, 기계, 배터리 정의입니다.기획자
items구버전 호환용 매핑입니다. 새 설정은 blocks를 우선 사용합니다.거의 수정하지 않음
database전기 블록, 연료, 배터리 저장량, 기계 인벤토리 저장 DB입니다.운영자
fuel-values연료별 기본 burn tick 값입니다.기획자

Towny 설정

town-integration:
enabled: true
max-generators-per-town: 5
필드설명
enabledtrue면 마을 영역/Towny 주민 여부를 검사합니다. false면 마을 제한 없이 설치할 수 있습니다.
max-generators-per-town마을당 설치 가능한 발전기 최대 개수입니다. 0이면 제한이 없습니다.

Block Provider 설정

block-provider:
preferred: NEXO
vanilla-fallback: true
필드설명
preferred주 사용 provider입니다. 현재 서버는 NEXO를 기준으로 설계합니다.
vanilla-fallbacktrue/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_idSeoulEnergy 내부 ID입니다. 권한, DB, 로그는 이 값을 기준으로 잡습니다.
typeGENERATOR, RELAY, MACHINE, STORAGE 중 하나입니다.
provider-idNexo custom block ID입니다. 보통 block_id와 같게 둡니다.
required-town-levelSeoulTown이 설치되어 있을 때 이 블록 설치에 필요한 마을 성장 단계입니다. 없거나 0이면 SeoulTown 레벨 제한을 걸지 않습니다.
permission.place이 블록을 설치할 때 필요한 권한입니다.
permission.use이 블록을 사용할 때 필요한 권한입니다.
fallback.materialNexo 없이 테스트할 때 설치되는 바닐라 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-displayGUI 설명용 연료 설명입니다.
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>설명"
필드설명
titleGUI 제목입니다. MiniMessage 형식을 사용할 수 있습니다.
sizeGUI 크기입니다. 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: 16000

SeoulTown 연동

SeoulEnergy는 SeoulTown이 설치되어 있으면 required-town-level을 확인합니다.

blocks:
wooden_generator:
type: GENERATOR
required-town-level: 1
coal_generator:
type: GENERATOR
required-town-level: 4

설치 판정 순서는 대략 다음과 같습니다.

  1. LuckPerms/Bukkit 설치 권한 확인
  2. Towny 마을 영역 여부 확인
  3. 해당 위치 마을의 주민 또는 동맹 여부 확인
  4. 마을 발전기 수 제한 확인
  5. SeoulTown 마을 성장 단계 해금 여부 확인

운영 서버 기준으로 wooden_generatorLv.1 새싹, coal_generatorLv.4 석탄부터 설치 가능합니다.

SeoulTown이 없으면 이 제한은 자동으로 비활성화되고, 기존 Towny/권한 제한만 적용됩니다.

blockId와 provider-id

blockId는 SeoulEnergy 내부 ID입니다.

provider-id는 Nexo와 연결할 ID입니다.

보통은 둘을 같게 쓰지만, 반드시 같을 필요는 없습니다. 권한, 로그, DB 기준은 provider-id가 아니라 blockId로 잡는 것을 권장합니다.