Update dependencies and improve configuration management

- Updated LoLib dependency to version 3.0.0 in build.gradle.kts
- Added HikariCP and MySQL connector dependencies for improved database handling
- Enhanced jar minimization process to exclude JDBC pool and driver
- Refactored configuration management by introducing ConfigAccessor and ConfigLoader for better file handling and validation
- Removed deprecated GenerationOptions class and integrated its functionality into the new structure
- Improved command error handling and added cooldown hints for admin commands
This commit is contained in:
loki 2026-04-01 16:21:09 +02:00
parent 978f739045
commit 3100c53229
86 changed files with 4324 additions and 3248 deletions

View file

@ -79,6 +79,7 @@ sql:
url: 'localhost'
port: 3306
username: 'efnilite'
# If env LOPARKOUR_SQL_PASSWORD is set (non-empty), it overrides this value (recommended for production).
password: 'super secret password'
database: 'ip'
@ -94,6 +95,10 @@ world:
# The world in which parkour will take place
name: 'loparkour'
# -= Island schematic =-
# Name of the spawn island schematic (schematics-new folder). Falls back to generation.yml if empty.
island-schematic: island
# -= Delete world on reload =-
# Deletes the world on reload/restart of the server.
# This makes sure there are no ghost blocks left when a server crash occurs.
@ -217,24 +222,24 @@ styles:
# The list of all available styles, which you can add to if you want.
# For changes, you have to restart or reload your server.
list:
red: [red_wool, red_stained_glass, red_concrete, red_terracotta]
blue: [blue_wool, blue_stained_glass, blue_concrete, blue_terracotta]
light blue: [light_blue_wool, light_blue_stained_glass, light_blue_concrete, light_blue_terracotta]
green: [green_wool, green_stained_glass, green_concrete, green_terracotta]
lime: [lime_wool, lime_stained_glass, lime_concrete, lime_terracotta]
cyan: [cyan_wool, cyan_stained_glass, cyan_concrete, cyan_terracotta]
purple: [purple_wool, purple_stained_glass, purple_concrete, purple_terracotta]
yellow: [yellow_wool, yellow_stained_glass, yellow_concrete, yellow_terracotta]
gray: [gray_wool, gray_stained_glass, gray_concrete, gray_terracotta]
end: [end_stone, end_stone_bricks, purpur_block, purpur_pillar]
nether: [netherrack, nether_bricks, red_nether_bricks, chiseled_nether_bricks, nether_wart_block, nether_gold_ore, netherite_block, basalt]
quartz: [smooth_quartz, chiseled_quartz_block, quartz_block, quartz_bricks, quartz_pillar]
ocean: [prismarine, prismarine_bricks, dark_prismarine, sea_lantern]
redstone: [observer, dispenser, redstone_block, piston, sticky_piston, redstone_lamp, target]
overworld: [grass_block, stone, cobblestone, oak_log]
ores: [diamond_ore, gold_ore, iron_ore, coal_ore, nether_gold_ore, lapis_ore, redstone_ore, emerald_ore, nether_quartz_ore]
wood: [oak_planks, spruce_planks, jungle_planks, acacia_planks, birch_planks, dark_oak_planks, oak_log, spruce_log, jungle_log, birch_log, acacia_log, dark_oak_log]
rainbow: [red_wool, blue_wool, orange_wool, magenta_wool, lime_wool, purple_wool, yellow_concrete, orange_concrete, lime_concrete, light_blue_concrete, yellow_stained_glass, white_stained_glass, magenta_stained_glass, light_blue_stained_glass]
red: [red_wool, red_stained_glass, red_concrete, red_terracotta, red_concrete_slab, red_terracotta_slab]
blue: [blue_wool, blue_stained_glass, blue_concrete, blue_terracotta, blue_concrete_slab, blue_terracotta_slab]
light blue: [light_blue_wool, light_blue_stained_glass, light_blue_concrete, light_blue_terracotta, light_blue_concrete_slab, light_blue_terracotta_slab]
green: [green_wool, green_stained_glass, green_concrete, green_terracotta, green_concrete_slab, green_terracotta_slab]
lime: [lime_wool, lime_stained_glass, lime_concrete, lime_terracotta, lime_concrete_slab, lime_terracotta_slab]
cyan: [cyan_wool, cyan_stained_glass, cyan_concrete, cyan_terracotta, cyan_concrete_slab, cyan_terracotta_slab]
purple: [purple_wool, purple_stained_glass, purple_concrete, purple_terracotta, purple_concrete_slab, purple_terracotta_slab]
yellow: [yellow_wool, yellow_stained_glass, yellow_concrete, yellow_terracotta, yellow_concrete_slab, yellow_terracotta_slab]
gray: [gray_wool, gray_stained_glass, gray_concrete, gray_terracotta, gray_concrete_slab, gray_terracotta_slab]
end: [end_stone, end_stone_bricks, purpur_block, purpur_pillar, end_stone_brick_slab, purpur_slab]
nether: [netherrack, nether_bricks, red_nether_bricks, chiseled_nether_bricks, nether_wart_block, nether_gold_ore, netherite_block, basalt, nether_brick_slab, red_nether_brick_slab]
quartz: [smooth_quartz, chiseled_quartz_block, quartz_block, quartz_bricks, quartz_pillar, smooth_quartz_slab, quartz_slab]
ocean: [prismarine, prismarine_bricks, dark_prismarine, sea_lantern, prismarine_slab, prismarine_brick_slab, dark_prismarine_slab]
redstone: [observer, dispenser, redstone_block, piston, sticky_piston, redstone_lamp, target, smooth_stone_slab]
overworld: [grass_block, stone, cobblestone, oak_log, stone_slab, cobblestone_slab, oak_slab]
ores: [diamond_ore, gold_ore, iron_ore, coal_ore, nether_gold_ore, lapis_ore, redstone_ore, emerald_ore, nether_quartz_ore, stone_slab]
wood: [oak_planks, spruce_planks, jungle_planks, acacia_planks, birch_planks, dark_oak_planks, oak_log, spruce_log, jungle_log, birch_log, acacia_log, dark_oak_log, oak_slab, spruce_slab, jungle_slab, acacia_slab, birch_slab, dark_oak_slab]
rainbow: [red_wool, blue_wool, orange_wool, magenta_wool, lime_wool, purple_wool, yellow_concrete, orange_concrete, lime_concrete, light_blue_concrete, yellow_stained_glass, white_stained_glass, magenta_stained_glass, light_blue_stained_glass, red_concrete_slab, blue_concrete_slab, orange_concrete_slab, lime_concrete_slab]
glow: [glowstone, jack_o_lantern, beacon, sea_lantern, crying_obsidian, shroomlight]
# -= Jump validation options =-
@ -291,12 +296,15 @@ jump-types:
memory:
# -= Block cleanup distance =-
# Distance in blocks after which old parkour blocks are removed.
# Lower values save memory but might remove blocks too early.
# Span (in history indices) for schematic trail removal and similar bulk clears.
block-cleanup-distance: 20
# -= Trail keep-behind =-
# How many course blocks to keep behind the rearmost standing player before removing older trail (index-based; not world distance).
trail-keep-behind: 10
# -= Cleanup interval =-
# How often (in ticks) to check for blocks to clean up.
# How often (in ticks) to run trail cleanup behind players.
# 20 ticks = 1 second
cleanup-interval: 100

View file

@ -62,21 +62,16 @@ generation:
# Don't modify these if you don't know what you're doing!
advanced:
# -= Spawn island options =-
# Options for the spawn island
# -= Spawn platform =-
# Start area is a flat square platform at the session cell (no .lpschem island).
island:
# -= Island schematic =-
# The name of the schematic file to use for the spawn island
# This schematic should be placed in the schematics-new folder
# If not specified or not found, no island will be generated
# Legacy key (unused for spawn). Course schematics use schematics.yml / schematics-new.
schematic-name: "island"
spawn:
# -= Player block =-
# The material of the block that the player will spawn on.
# This block will be set to air once the schematic has been pasted.
# Legacy keys (unused). Platform material is parkour.first-block-material below.
player-block: diamond_block
# -= Spawn yaw/pitch =-
@ -85,13 +80,11 @@ advanced:
parkour:
# -= Begin block =-
# The block from which the parkour begins
# This block will be set to air once the schematic has been pasted
# Legacy (unused). begin-block was for island schematics.
begin-block: emerald_block
# -= First parkour block material =-
# The material of the very first parkour block that players spawn on
# -= Platform + first jump pad material =-
# The whole spawn platform uses this block type.
first-block-material: stone
# -= Directional heading =-
@ -99,6 +92,47 @@ advanced:
# Possible options: north, south, west and east.
heading: east
# -= Jump distance weights (advanced.distance.min .. max) =-
distance:
min: 1
max: 4
chances:
1: 25
2: 25
3: 25
4: 25
# -= Vertical step weights (advanced.height.min .. max) =-
height:
min: -1
max: 2
chances:
"-1": 20
"0": 30
1: 30
2: 20
# -= Block type mix (default vs special vs schematic) =-
type:
default: 80
special: 15
schematic: 5
# -= Special block variants (BlockData strings) =-
special:
ice:
material: minecraft:ice
chance: 25
slab:
material: minecraft:oak_slab
chance: 20
pane:
material: minecraft:glass_pane
chance: 15
fence:
material: minecraft:oak_fence
chance: 15
# -= Border size =-
# The diameter of the playing area of a person in the single mode.
border-size: 10000