{# Extends the base layout template #} {% extends "base.html" %} {# --- Page Title Block --- #} {% block title %}{{ super() }} - Configure Properties: {{ server_name }}{% endblock %} {# --- Head Scripts Block --- #} {# Include JavaScript files needed for this page #} {% block head_scripts %} {# Core utilities (showStatusMessage, sendServerActionRequest) #} {# JS for segmented controls, toggles, and saveProperties function #} {% endblock %} {# --- Main Content Block --- #} {% block content %} {# Main heading for the page #}

Configure Server Properties

{# Display server context and installation step if applicable #}

Server: {{ server_name }} {% if new_install %} {# Indicator for multi-step installation workflow #}
(Step 1 of 4 for New Installation) {% endif %}

{# --- Status & Validation Message Areas --- #} {# Targeted by JavaScript (showStatusMessage) for general feedback #}
{# Targeted by JavaScript for displaying overall validation errors from API #} {# Server-side flash messages (handled by base.html) #} {# --- Properties Configuration Section --- #}
{# Note: Using JS onclick to save, so no
tag is strictly needed unless you want traditional form submission fallback or grouping benefits. #} {# Grid layout for form fields - assumes styles in forms.css #}
{# --- Column 1 Grouping (Example) --- #} {# Server Name (MOTD) #}
Name displayed in the server list (in Minecraft). {# Placeholder for specific field validation errors #}
{# Level Name #}
Folder name for the world data. Invalid characters/spaces will be replaced with underscores (_).
{# Gamemode (Segmented Control) #}
{# Label for the group #} {# The container links to the hidden input via data-input-id #}
{# Each button sets a specific value on the hidden input when clicked #} {# Jinja sets the initial 'active' class based on current properties #}
{# Hidden input stores the actual value to be submitted #}
{# Difficulty (Segmented Control) #}
{# Allow Cheats (Toggle Switch) #}
{# Special container for toggle layout #}
{# Label linked to checkbox #} Enables commands like /gamemode, /give.
{# Checkbox stores the actual boolean state (true if checked) #} {# Visual label linked to the checkbox for interaction #}
{# Hidden input ensures 'false' is submitted when checkbox is unchecked #} {# JS disables this hidden input when the checkbox IS checked #} {# Validation placeholder spans grid columns for toggle layout #}
{# Max Players #}
{# Level Seed #}
Leave empty for a random seed.
{# --- Column 2 Grouping (Example) --- #} {# Server Port (IPv4) #}
{# Server Port (IPv6) #}
{# Enable Lan Visibility (Toggle Switch) #}
Makes server visible to others on the local network.
{# Enable Allow List (Toggle Switch) #}
If enabled, only players on the allowlist can join.
{# Default Player Permission (Segmented Control) #}
{# View Distance #}
How far the world generates around players (min 5).
{# Tick Distance #}
How far the world actively processes things (4-12).
{# Online Mode (Toggle Switch) #}
Requires players to be authenticated with Xbox Live.
{# Require Texture Pack (Toggle Switch) #}
Forces players to download & use server resource packs.
{# --- Form Actions / Navigation --- #}
{# Button calls saveProperties JS function #} {# Passes 'this' button, server_name, and boolean new_install flag #} {# Changed class to make Save primary action green #} {# Conditional navigation link #} {% if new_install %} {# Link to next step in installation workflow #} Skip & Go to Allowlist » {# Use » for right arrow #} {% else %} {# Standard navigation back to dashboard #} « Back to Dashboard {# Use « for left arrow #} {% endif %}
{# --- End .properties-config-section --- #} {% endblock %} {# --- Body Scripts Block --- #} {# Includes JS specific to this page, particularly for custom controls #} {% block body_scripts %} {# This JS initializes the segmented controls and toggle switches #} {# It could live in install_config.js (as assumed by head_scripts) or here #} {# Keeping it here for explicitness in this example #} {% endblock %}