Skip to content

Configuration & Deployment ​

GensCore creates a clean and organized configuration structure in plugins/GensCore/.


File Structure ​

plugins/GensCore/
├── config.yml              # Core settings (language, database options)
├── modules.yml             # Global enable/disable switches for all 30 modules
├── genscore.db             # Local SQLite database (WAL mode, connection pooled)
├── lang/
│   ├── fr_FR.yml           # French localization strings (MiniMessage tags)
│   └── en_US.yml           # English localization strings (MiniMessage tags)
├── menus/
│   └── default.yml         # Custom virtual inventory menus in YAML
├── modules/
│   ├── bluemap.yml         # BlueMap web integration URL
│   ├── chat.yml            # Custom chat format and join/quit alerts
│   ├── discord.yml         # Discord bot token, channels, and synchronization
│   ├── economy.yml         # Shop dynamic inflation exponent and AH sales tax
│   ├── headdrop.yml        # Mob and player skull drop probabilities
│   ├── lootr.yml           # Instanced dungeon chests and anti-break security
│   ├── minigames.yml       # Fortune Wheel rewards, Casino Slot RTP, CoinFlip
│   ├── motd.yml            # Server list MOTD lines with MiniMessage tags
│   ├── quests.yml          # Daily quest limits and reroll quotas
│   ├── shop.yml            # Dynamic shop items, base prices, price elasticity
│   ├── spawners.yml        # Custom spawner stacking, tick rate, and Silk Touch
│   ├── tabboard.yml        # Dynamic Scoreboard and Tablist layout & placeholders
│   ├── teams.yml           # Guild weekly quest rotation parameters
│   ├── teleport.yml        # Default max homes and global teleportation delays
│   ├── tomb.yml            # Death graves, XP retention, and access policies
│   └── web.yml             # Embedded Javalin web server, BCrypt auth, CORS, limits
└── web/                    # Extracted React / Vite production frontend bundle

Core Configuration (config.yml) ​

GensCore supports dual-engine database persistence configured via config.yml:

yaml
# Main language file (fr_FR or en_US)
lang: "en_US"

# Database Configuration
database:
  # Storage engine type: "sqlite" (default, autonomous) or "mysql" (remote database)
  type: "sqlite"

  # Local SQLite configuration (active by default if type: "sqlite")
  sqlite:
    file: "genscore.db"

  # Remote MySQL / MariaDB configuration (active only if type: "mysql")
  # If remote connection fails at startup, GensCore automatically falls back to SQLite
  mysql:
    host: "localhost"
    port: 3306
    database: "genscore"
    username: "root"
    password: "YOUR_SECURE_PASSWORD"
    ssl: false
    max_pool_size: 10
    minimum_idle: 2
    connection_timeout: 30000

TIP

Resilient Automatic Fallback: If type: "mysql" is specified but the remote server is unreachable, timed out, or rejects authentication, GensCore outputs an actionable warning to the server console and instantly switches to the local SQLite engine. The server will never crash or fail to boot due to a database connection failure.


Global Module Switchboard (modules.yml) ​

Each feature in GensCore can be enabled or disabled independently. You can also toggle modules at runtime via /module <name> <on|off>.

KeyIn-Game FeatureDefaultDescription & Dependencies
dynamicshopSupply & demand server shop (/shop)trueRequires economy module
economyPlayer balances, /money, /pay, Vault providertrueRegisters Vault GensVaultEconomy if Vault is present
auctionhousePlayer-to-player marketplace (/ah)trueRequires economy module
jobsMining, woodcutting, hunting, farming professionstrueFolia thread-safe anti-farm block key cache
statsBlock break, kill, death & playtime trackingtrueVisible in Player Web Dashboard
spawnersSmart stacked spawners with GUI upgrades & Silk TouchtrueConfigured via modules/spawners.yml
questsDaily rotating quests with reroll limitstrueConfigured via modules/quests.yml
lootrPer-player instanced dungeon & structure cheststrueConfigured via modules/lootr.yml
headdropMob and player skull drop probabilitiestrueConfigured via modules/headdrop.yml
minigamesFortune Wheel, Casino Slots & CoinFliptrueConfigured via modules/minigames.yml & Web Panel
motdDynamic server list ping messagetrueConfigured via modules/motd.yml
tabboardCustom Scoreboard and Tablist layouttrueConfigured via modules/tabboard.yml
discordDiscord Bot bridge (chat sync, staff logs)trueRequires valid bot token in modules/discord.yml
guiIn-game menu providertrueAuto-detects Bedrock clients (Cumulus Forms)
tombDeath graves preserving items & XP upon player deathfalseEnable if you want graves instead of standard drops
homePlayer home waypoints (/sethome, /home)trueLimits set via permissions and modules/teleport.yml
backReturn to last death or teleport location (/back)trueZero-leak BackPosition memory safety
spawnServer spawn location (/setspawn, /spawn)truePersistent spawn coordinates in database
tpaTeleport request system (/tpa, /tpaccept, etc.)trueConfigurable warmup and movement cancellation
teamsGuilds, territory claims, shared bank & weekly queststrueIntegrated with BlueMap and Web Panel
locksContainer protection for chests, barrels & furnacestrueAnti-hopper and anti-piston theft protection
authIn-game authentication for offline servers (/login)trueBCrypt password hashing
moderationStaff toolset (/ban, /mute, /kick, /freeze)truePersistent punishment records in database
chatChat formatting and join/quit messagestrueLuckPerms prefix/suffix synchronization
bluemapBlueMap guild territory claim visualizationfalseRequires BlueMap installed on the server
fastleafdecayInstant natural decay for orphaned tree leavestrueHigh-performance leaves cleanup
solo_perksSolo quest progression perks & masteries (/perks)trueIntegrated with daily quests & economy
customguiCustom YAML inventory menus loader (/menu)trueConfigured via plugins/GensCore/menus/
utilsVirtual utilities (/craft, /anvil, /ec, /feed)trueNative Paper 26.3 MenuType API
bedrockskinBedrock player skin & avatar proxyingtrueAuto-caches Floodgate skins for 3D avatars

Module Configuration Reference ​

1. Web Application & API (modules/web.yml) ​

  • web.enabled (false): Enable the embedded web server.
  • web.port (8080): Javalin listening port. Ensure TCP port is open in firewall.
  • web.server_ip (localhost): Server address shown on landing page.
  • web.allowed_origin (""): CORS origin (e.g., "https://panel.yourserver.com"). Leave empty in dev.
  • web.deposit_limit (27): Maximum item slots in web casino deposit box.
  • admin-password ("gens"): Admin password for /admin. Hashed with BCrypt on startup.

2. Discord Bot (modules/discord.yml) ​

  • discord.bot_token: Token from Discord Developer Portal.
  • discord.chat_channel_id: Channel ID for in-game chat bridge.
  • discord.linked_role_id: Role given to linked players.
  • Required Intents: Server Members Intent and Message Content Intent must be enabled.

3. Custom Spawners (modules/spawners.yml) ​

  • spawners.delay (25): Tick delay between spawn cycles (20 ticks = 1s).
  • spawners.holograms (true): Floating text above spawner displaying tier and quantity.
  • spawners.max-stack (100000): Maximum merged spawners per block.
  • spawners.upgrade-base-cost (1000.0): Cost to upgrade to tier 2.
  • spawners.vanilla-require-silktouch (true): Silk Touch required to pick up custom spawners.

4. Instanced Chests / Lootr (modules/lootr.yml) ​

  • lootr.prevent-hopper (true): Blocks hoppers from taking chest contents.
  • lootr.prevent-break (false): Prevents players from destroying dungeon chests.
  • lootr.particles-enabled (true): Particles indicate unopened chests for each player.
  • lootr.break-confirm-time (3): Double-hit confirmation timer in seconds.

5. Economy & Auction House (modules/economy.yml) ​

  • shop.inflation_exponent (0.5): Price elasticity curve based on supply/demand.
  • ah.tax_percentage (0.0): Commission tax percentage on Auction House sales.

6. Death Graves (modules/tomb.yml) ​

  • modules.tomb.block_type (CHEST): Grave block (CHEST, BARREL, PLAYER_HEAD).
  • modules.tomb.store_xp (true): Store player XP in grave.
  • modules.tomb.expiration_time_seconds (3600): Despawn countdown in seconds.
  • modules.tomb.expiration_action (UNLOCK): Action on expiry (UNLOCK, DROP, or DESTROY).
  • modules.tomb.default_access (OWNER_ONLY): Access policy (OWNER_ONLY or EVERYONE).

7. Dynamic Shop & Items Catalog (modules/shop.yml) ​

  • categories.<category_name>: Defines a shop category (e.g. ores, farming, drops, blocks, nether).
    • displayName: Formatted title displayed in /shop.
    • icon: Vanilla material identifier used as the category icon.
    • items.<MATERIAL>:
      • buyPrice: Base unit purchase price from the server shop.
      • sellPrice: Base unit sale price to the server shop (balanced at ~25% to 35% of purchase price).
      • stock: Current dynamic stock units.
      • targetStock: Equilibrium target capacity. Purchasing decreases stock (increasing prices); selling adds stock (decreasing prices).

8. Minigames & Casino (modules/minigames.yml) ​

  • Wheel of Fortune (minigames.wheel):
    • wheel.enabled (true): Toggles the daily free wheel spin.
    • wheel.rewards: 8 balanced reward slices with name, command (executed on win), chance (percentage weight), and color (hex color on web UI).
  • Casino Slot Machine (minigames.casino):
    • casino.enabled (true): Toggles the 3-reel web slot machine.
    • jackpot_chance (4): Triple 7s / jackpot chance (~500x).
    • medium_win_chance (8): 3 matching items chance (~300x).
    • small_win_chance (20): 2 matching items chance (~200x). Yields a balanced aggregate RTP (Return to Player) of ~84%.
  • CoinFlip (minigames.coinflip):
    • coinflip.enabled (true): Toggles player duel coinflips.
    • coinflip.multiplier (2): Payout multiplier on winning bets.

9. Dynamic Scoreboard & Tablist (modules/tabboard.yml) ​

  • Scoreboard (tabboard.scoreboard):
    • title: Header title component supporting MiniMessage formatting tags.
    • lines: Ordered list of scoreboard lines supporting internal placeholders (%money%, %player%, %online%) and LuckPerms prefixes.
  • Tablist (tabboard.tablist):
    • header: Multi-line text banner above player usernames.
    • footer: Multi-line text banner below player usernames.
    • show_platform_prefix (true): Displays [Bedrock] tag for Floodgate mobile players.
    • discord_linked / discord_not_linked: Discord account verification badge indicators.

10. Teleportation Delays & Homes Quota (modules/teleport.yml) ​

  • modules.home.default_max (3): Maximum personal homes permitted for default players without rank permissions or solo perks.
  • teleport-cooldown (3): Warmup delay in seconds before executing /spawn, /home, or /tpa. Any movement or damage cancels the teleportation unless the player holds a bypass permission.

11. Daily Quests (modules/quests.yml) ​

  • quests.max_rerolls_per_day (3): Maximum times a player can right-click an objective in /quests to reroll it each day.

12. Guild Weekly Quests (modules/teams.yml) ​

  • teams.last_rotation: Epoch timestamp of the last weekly quest rotation.
  • teams.active_quest: Currently assigned communal guild objective identifier (e.g. weekly_1).

13. Player & Mob Head Drops (modules/headdrop.yml) ​

  • headdrop.chance (10.0): Percentage probability (0.0 to 100.0) for a defeated player or mob to drop their textured head upon death.

14. Server List Ping MOTD (modules/motd.yml) ​

  • motd.line1: Top text line in the Minecraft multiplayer server list (supports MiniMessage color tags).
  • motd.line2: Bottom text line in the multiplayer server list.

15. Chat System (modules/chat.yml) ​

  • chat.custom-join-messages (true): Enables formatted welcome and departure announcements synchronized with LuckPerms ranks.

16. BlueMap 3D Visualizer (modules/bluemap.yml) ​

  • bluemap.url ("http://localhost:8100"): Local or public URL of the BlueMap web server embedded into the Web Admin Panel territory iframe.

Custom Virtual Inventory Menus (menus/) ​

GensCore allows administrators to create unlimited custom GUI menus in plugins/GensCore/menus/ (e.g. default.yml, tutorial.yml).

yaml
title: "<gradient:#00c6ff:#0072ff><bold>Server Hub</bold></gradient>"
size: 27
items:
  '11':
    material: "DIAMOND_SWORD"
    name: "<gold><bold>Shop & Economy"
    lore:
      - "<gray>Click to open the dynamic server shop."
    command: "shop"
  '13':
    material: "PLAYER_HEAD"
    name: "<green><bold>Jobs & Professions"
    lore:
      - "<gray>Click to view your career progress."
    command: "jobs"
  '15':
    material: "BEACON"
    name: "<aqua><bold>Guild System"
    lore:
      - "<gray>Click to manage your clan and territory."
    command: "team"
  • Dynamic Command Binding: Any menu file created in menus/<name>.yml automatically registers the /menu <name> command!

Creating & Configuring Custom Quests (quests/) ​

Beyond global daily reroll limits configured in modules/quests.yml, GensCore allows server administrators to create an unlimited collection of custom quests organized by categories inside plugins/GensCore/quests/ (e.g. easy.yml, medium.yml, hard.yml provided by default, or your own files like farming.yml, combat.yml, mining.yml).

How Quests are Distributed ​

  • Each YAML file inside plugins/GensCore/quests/ defines an active quest category.
  • Every day at midnight (or upon a player's first daily login), GensCore randomly selects up to 3 quests per category for that player.
  • Players open /quests (or /quest) to view their assigned objectives, live progress bars, and rewards.
  • Right-clicking a quest in the GUI rerolls it (subject to quests.max_rerolls_per_day in modules/quests.yml).
  • Every completed quest feeds the player's lifetime completion stats, unlocking perks in Solo Perks (/perks) and team weekly progress.

YAML Quest File Structure ​

yaml
quests:
  mine_diamonds:
    name: "<aqua><bold>Abyssal Diamond Hunter"
    menu_item: "DIAMOND"
    description:
      - "<gray>Mine 16 raw diamond ores deep underground."
      - "<yellow>Progress: <current>/<total>"
    quest_type: "BREAK"
    required:
      - "DIAMOND_ORE"
      - "DEEPSLATE_DIAMOND_ORE"
    required_amount: 16
    reward:
      commands:
        - "eco give %player% 750"
        - "tell %player% Congratulations on your find!"

Quest Configuration Parameters ​

FieldTypeDescription
nameStringFormatted quest display title supporting modern MiniMessage tags (<gradient>, <bold>, etc.).
menu_itemMaterialVanilla Minecraft material used as the display icon inside /quests menu.
descriptionListLore lines displayed on hover. <current> and <total> tags are automatically replaced with live player progress.
quest_typeStringObjective action type among the 28 engine-supported types.
requiredList / StringTargeted vanilla material or entity type. Can be a single item or a list of acceptable items.
required_amountIntegerGoal count required to complete the quest.
reward.commandsListCommands executed via console upon completion. Supports %player% and {player} variables.

All 28 Supported Quest Types (quest_type) ​

quest_typeTrigger ActionExpected required TargetExample
BREAKMine or break a world blockVanilla block materialSTONE, DIAMOND_ORE, OAK_LOG
PLACEPlace a block into the worldVanilla block materialOBSIDIAN, TORCH, STONE_BRICKS
KILLDefeat a mob or playerVanilla entity typeZOMBIE, SKELETON, CREEPER, PLAYER
CRAFTCraft an item in workbenchResulting item materialBREAD, IRON_CHESTPLATE, GOLDEN_APPLE
FISHCatch a fish or treasureCaught item materialCOD, SALMON, PUFFERFISH, BOW
SHEARShear a woolly mobSheared entity typeSHEEP, MOOSHROOM
COOKSmelt ores or cook foodExtracted item materialCOOKED_BEEF, IRON_INGOT, GLASS
CONSUMEEat food or drink potionsConsumed item materialGOLDEN_CARROT, POTION, BREAD
BREEDBreed two animals togetherBred entity typeCOW, SHEEP, CHICKEN, PIG
PICKUPPick up dropped ground itemPicked item materialEMERALD, NETHERITE_INGOT
TAMETame a wild animalTamed entity typeWOLF, CAT, HORSE, PARROT
VILLAGER_TRADEComplete trade with a villagerVillager type or itemVILLAGER
GETObtain an item in inventoryMaterial identifierELYTRA, TOTEM_OF_UNDYING
MILKINGMilk a cow using a bucketEntity typeCOW, MOOSHROOM
EXP_POINTSCollect experience pointsPoint quotaEXP_POINTS
EXP_LEVELSReach an XP level quotaLevel quotaEXP_LEVELS
ENCHANTEnchant an item on enchanting tableEnchanted item materialDIAMOND_SWORD, BOW, BOOK
CARVECarve a pumpkin with shearsBlock materialPUMPKIN
PLAYER_DEATHDie in combat or by accidentDeath reason / anyPLAYER_DEATH
LOCATIONReach a region or coordinatesRegion identifierWorld Coordinates / Region
FARMINGHarvest mature cropsCrop item materialWHEAT, CARROTS, POTATOES
LAUNCHShoot an arrow or projectileProjectile typeARROW, ENDER_PEARL, TRIDENT
IntegrationsOptional third-party pluginsPlugin dependencyMYTHIC_MOBS, ELITE_MOBS, NU_VOTIFIER, PYRO_FISH, EMF_FISH, PLACEHOLDER

Languages & Localization (lang/) ​

All player-facing messages, error prompts, and chat notifications are located in plugins/GensCore/lang/ (fr_FR.yml and en_US.yml):

  • Full MiniMessage Support: Rich modern text tags (<gradient:#ff0000:#00ff00>text</gradient>, <hover:show_text:'Tooltip'>Click here</hover>, <click:run_command:'/spawn'>Spawn</click>).
  • Dynamic Placeholders: Messages automatically inject context variables like <player>, <amount>, <target>, <balance>.

Network Ports & Port Forwarding ​

PortProtocolPurposeRequired
25565TCP/UDPMinecraft ServerYes
8080TCPWeb Panel & REST APIYes (if Web Panel enabled)
8100TCPBlueMap (Optional)Optional

Nginx SSL Reverse Proxy Example ​

nginx
server {
    server_name panel.yourserver.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Released under the MIT License. Developed with passion for GensBien.