nix-dotfiles/hosts/tsuki/services/minecraft/pluginConfigs/dynmap.nix

566 lines
23 KiB
Nix

{ secrets, ... }:
{
# All paths in this configuration file are relative to Dynmap's data-folder: minecraft_server/plugins/dynmap/
# All map templates are defined in the templates directory
# To use the HDMap very-low-res (2 ppb) map templates as world defaults, set value to vlowres
# The definitions of these templates are in normal-vlowres.txt, nether-vlowres.txt, and the_end-vlowres.txt
# To use the HDMap low-res (4 ppb) map templates as world defaults, set value to lowres
# The definitions of these templates are in normal-lowres.txt, nether-lowres.txt, and the_end-lowres.txt
# To use the HDMap hi-res (16 ppb) map templates (these can take a VERY long time for initial fullrender), set value to hires
# The definitions of these templates are in normal-hires.txt, nether-hires.txt, and the_end-hires.txt
# To use the HDMap low-res (4 ppb) map templates, with support for boosting resolution selectively to hi-res (16 ppb), set value to low_boost_hi
# The definitions of these templates are in normal-low_boost_hi.txt, nether-low_boost_hi.txt, and the_end-low_boost_hi.txt
# To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to vhi-res (32 ppb), set value to hi_boost_vhi
# The definitions of these templates are in normal-hi_boost_vhi.txt, nether-hi_boost_vhi.txt, and the_end-hi_boost_vhi.txt
# To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to xhi-res (64 ppb), set value to hi_boost_xhi
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix = "hires";
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale = 0;
# Map storage scheme: only uncomment one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
# mysql: MySQL database, at hostname:port in database, accessed via userid with password
# mariadb: MariaDB database, at hostname:port in database, accessed via userid with password
# postgres: PostgreSQL database, at hostname:port in database, accessed via userid with password
storage = {
type = "postgres";
hostname = "localhost";
port = secrets.ports.postgres;
database = "dynmap";
userid = "dynmap";
password = builtins.readFile secrets.keys.postgres.dynmap;
flags = "?allowReconnect=true&autoReconnect=true";
};
components = [
{
class = "org.dynmap.ClientConfigurationComponent";
}
{
class = "org.dynmap.InternalClientUpdateComponent";
sendhealth = true;
sendposition = true;
allowwebchat = true;
webchat-interval = 5;
hidewebchatip = false;
trustclientname = false;
includehiddenplayers = false;
# (optional) if true, color codes in player display names are used
use-name-colors = true;
# (optional) if true, player login IDs will be used for web chat when their IPs match
use-player-login-ip = true;
# (optional) if use-player-login-ip is true, setting this to true will cause chat messages not matching a known player IP to be ignored
require-player-login-ip = true;
# (optional) block player login IDs that are banned from chatting
block-banned-player-chat = true;
# Require login for web-to-server chat (requires login-enabled: true)
webchat-requires-login = false;
# If set to true, users must have dynmap.webchat permission in order to chat
webchat-permissions = false;
# Limit length of single chat messages
chatlengthlimit = 256;
# # Optional - make players hidden when they are inside/underground/in shadows (#=light level: 0=full shadow,15=sky)
# hideifshadow = 4;
# # Optional - make player hidden when they are under cover (#=sky light level,0=underground,15=open to sky)
# hideifundercover = 14;
# # (Optional) if true, players that are crouching/sneaking will be hidden
hideifsneaking = false;
# If true, player positions/status is protected (login with ID with dynmap.playermarkers.seeall permission required for info other than self)
protected-player-info = false;
# If true, hide players with invisibility potion effects active
hide-if-invisiblity-potion = true;
# If true, player names are not shown on map, chat, list
hidenames = false;
}
# {
# class = "org.dynmap.JsonFileClientUpdateComponent";
# writeinterval = 1;
# sendhealth = true;
# sendposition = true;
# allowwebchat = true;
# webchat-interval = 5;
# hidewebchatip = false;
# includehiddenplayers = false;
# use-name-colors = false;
# use-player-login-ip = false;
# require-player-login-ip = false;
# block-banned-player-chat = true;
# hideifshadow = 0;
# hideifundercover = 0;
# hideifsneaking = false;
# # Require login for web-to-server chat (requires login-enabled: true)
# webchat-requires-login = false;
# # If set to true, users must have dynmap.webchat permission in order to chat
# webchat-permissions = false;
# # Limit length of single chat messages
# chatlengthlimit = 256;
# hide-if-invisiblity-potion = true;
# hidenames = false;
# }
{
class = "org.dynmap.SimpleWebChatComponent";
allowchat = false;
# If true, web UI users can supply name for chat using 'playername' URL parameter. 'trustclientname' must also be set true.
allowurlname = false;
}
# Note: this component is needed for the dmarker commands, and for the Marker API to be available to other plugins
{
class = "org.dynmap.MarkersComponent";
type = "markers";
showlabel = false;
enablesigns = false;
# Default marker set for sign markers
default-sign-set = "markers";
# (optional) add spawn point markers to standard marker layer
showspawn = true;
spawnicon = "world";
spawnlabel = "Spawn";
# (optional) layer for showing offline player's positions (for 'maxofflinetime' minutes after logoff)
showofflineplayers = false;
offlinelabel = "Offline";
offlineicon = "offlineuser";
offlinehidebydefault = true;
offlineminzoom = 0;
maxofflinetime = 30;
# (optional) layer for showing player's spawn beds
showspawnbeds = false;
spawnbedlabel = "Spawn Beds";
spawnbedicon = "bed";
spawnbedhidebydefault = true;
spawnbedminzoom = 0;
spawnbedformat = "%name%'s bed";
# (optional) show world border (vanilla 1.8+)
showworldborder = true;
worldborderlabel = "Border";
}
{
class = "org.dynmap.ClientComponent";
type = "chat";
allowurlname = false;
}
{
class = "org.dynmap.ClientComponent";
type = "chatballoon";
focuschatballoons = false;
}
{
class = "org.dynmap.ClientComponent";
type = "chatbox";
showplayerfaces = true;
messagettl = 5;
# Optional: set number of lines in scrollable message history: if set, messagettl is not used to age out messages
# scrollback = 100;
# Optional: set maximum number of lines visible for chatbox
# visiblelines = 10;
# Optional: send push button
sendbutton = false;
}
{
class = "org.dynmap.ClientComponent";
type = "playermarkers";
showplayerfaces = true;
showplayerhealth = true;
# If true, show player body too (only valid if showplayerfaces=true)
showplayerbody = false;
# Option to make player faces small - don't use with showplayerhealth or largeplayerfaces
smallplayerfaces = false;
# Option to make player faces larger - don't use with showplayerhealth or smallplayerfaces
largeplayerfaces = false;
# Optional - make player faces layer hidden by default
hidebydefault = false;
# Optional - ordering priority in layer menu (low goes before high - default is 0)
layerprio = 0;
# Optional - label for player marker layer (default is 'Players')
label = "Players";
}
# {
# class = "org.dynmap.ClientComponent";
# type = "digitalclock";
# }
{
class = "org.dynmap.ClientComponent";
type = "link";
}
{
class = "org.dynmap.ClientComponent";
type = "timeofdayclock";
showdigitalclock = true;
showweather = true;
}
# Mouse pointer world coordinate display
{
class = "org.dynmap.ClientComponent";
type = "coord";
label = "Location";
hidey = false;
show-mcr = false;
show-chunk = false;
}
# Note: more than one logo component can be defined
# {
# class = "org.dynmap.ClientComponent";
# type = "logo";
# text = "Dynmap";
# #logourl: "images/block_surface.png"
# linkurl = "http://forums.bukkit.org/threads/dynmap.489/";
# # Valid positions: top-left, top-right, bottom-left, bottom-right
# position = "bottom-right";
# }
# {
# class = "org.dynmap.ClientComponent";
# type = "inactive";
# timeout = 1800; # in seconds (1800 seconds = 30 minutes)
# redirecturl = "inactive.html";
# # showmessage = "You were inactive for too long.";
# }
# {
# class = "org.dynmap.TestComponent";
# stuff = "This is some configuration-value";
# }
];
# Treat hiddenplayers.txt as a whitelist for players to be shown on the map? (Default false)
display-whitelist = false;
# How often a tile gets rendered (in seconds).
renderinterval = 1;
# How many tiles on update queue before accelerate render interval
renderacceleratethreshold = 60;
# How often to render tiles when backlog is above renderacceleratethreshold
renderaccelerateinterval = 0.2;
# How many update tiles to work on at once (if not defined, default is 1/2 the number of cores)
tiles-rendered-at-once = 2;
# If true, use normal priority threads for rendering (versus low priority) - this can keep rendering
# from starving on busy Windows boxes (Linux JVMs pretty much ignore thread priority), but may result
# in more competition for CPU resources with other processes
usenormalthreadpriority = true;
# Save and restore pending tile renders - prevents their loss on server shutdown or /reload
saverestorepending = true;
# Save period for pending jobs (in seconds): periodic saving for crash recovery of jobs
save-pending-period = 900;
# Zoom-out tile update period - how often to scan for and process tile updates into zoom-out tiles (in seconds)
zoomoutperiod = 30;
# Control whether zoom out tiles are validated on startup (can be needed if zoomout processing is interrupted, but can be expensive on large maps)
initial-zoomout-validate = true;
# Default delay on processing of updated tiles, in seconds. This can reduce potentially expensive re-rendering
# of frequently updated tiles (such as due to machines, pistons, quarries or other automation). Values can
# also be set on individual worlds and individual maps.
tileupdatedelay = 30;
# Tile hashing is used to minimize tile file updates when no changes have occurred - set to false to disable
enabletilehash = true;
# Optional - hide ores: render as normal stone (so that they aren't revealed by maps)
#hideores = true;
# Optional - enabled BetterGrass style rendering of grass and snow block sides
#better-grass = true;
# Optional - enable smooth lighting by default on all maps supporting it (can be set per map as lighting option)
smooth-lighting = true;
# Optional - use world provider lighting table (good for custom worlds with custom lighting curves, like nether)
# false=classic Dynmap lighting curve
use-brightness-table = true;
# Optional - render specific block names using the textures and models of another block name: can be used to hide/disguise specific
# blocks (e.g. make ores look like stone, hide chests) or to provide simple support for rendering unsupported custom blocks
block-alias = {
# "minecraft:quartz_ore" = "stone";
# "diamond_ore" = "coal_ore";
};
# Default image format for HDMaps (png, jpg, jpg-q75, jpg-q80, jpg-q85, jpg-q90, jpg-q95, jpg-q100, webp, webp-q75, webp-q80, webp-q85, webp-q90, webp-q95, webp-q100, webp-l),
# Note: any webp format requires the presence of the 'webp command line tools' (cwebp, dwebp) (https://developers.google.com/speed/webp/download)
#
# Has no effect on maps with explicit format settings
image-format = "jpg-q90";
# If cwebp or dwebp are not on the PATH, use these settings to provide their full path. Do not use these settings if the tools are on the PATH
# For Windows, include .exe
#
#cwebpPath = "/usr/bin/cwebp";
#dwebpPath = "/usr/bin/dwebp";
# use-generated-textures: if true, use generated textures (same as client); false is static water/lava textures
# correct-water-lighting: if true, use corrected water lighting (same as client); false is legacy water (darker)
# transparent-leaves: if true, leaves are transparent (lighting-wise): false is needed for some Spout versions that break lighting on leaf blocks
use-generated-textures = true;
correct-water-lighting = true;
transparent-leaves = true;
# ctm-support: if true, Connected Texture Mod (CTM) in texture packs is enabled (default)
ctm-support = true;
# custom-colors-support: if true, Custom Colors in texture packs is enabled (default)
custom-colors-support = true;
# Control loading of player faces (if set to false, skins are never fetched)
#fetchskins = false;
# Control updating of player faces, once loaded (if faces are being managed by other apps or manually)
#refreshskins = false;
# Customize URL used for fetching player skins (%player% is macro for name, %uuid% for UUID)
skin-url = "http://skins.minecraft.net/MinecraftSkins/%player%.png";
# Enable skins via SkinsRestorer plugin instead of internal legacy implementation (disabled by default)
#skinsrestorer-integration = true;
render-triggers = [
# "playermove"
# "playerjoin"
"blockplaced"
"blockbreak"
"leavesdecay"
"blockburn"
"chunkgenerated"
"blockformed"
"blockfaded"
"blockspread"
"pistonmoved"
"explosion"
# "blockfromto"
# "blockphysics"
"structuregrow"
"blockgrow"
# "blockredstone"
];
# Title for the web page - if not specified, defaults to the server's name (unless it is the default of 'Unknown Server')
#webpage-title = "My Awesome Server Map";
# The path where the tile-files are placed.
tilespath = "web/tiles";
# The path where the web-files are located.
webpath = "web";
# If set to false, disable extraction of webpath content (good if using custom web UI or 3rd party web UI)
# Note: web interface is unsupported in this configuration - you're on your own
update-webpath-files = true;
# The path were the /dynmapexp command exports OBJ ZIP files
exportpath = "export";
# The network-interface the webserver will bind to (0.0.0.0 for all interfaces, 127.0.0.1 for only local access).
# If not set, uses same setting as server in server.properties (or 0.0.0.0 if not specified)
#webserver-bindaddress = 0.0.0.0;
# The TCP-port the webserver will listen on.
webserver-port = secrets.ports.minecraft.dynmap;
# Maximum concurrent session on internal web server - limits resources used in Bukkit server
max-sessions = 30;
# Disables Webserver portion of Dynmap (Advanced users only)
disable-webserver = false;
# Enable/disable having the web server allow symbolic links (true=compatible with existing code, false=more secure (default))
allow-symlinks = true;
# Enable login support
login-enabled = false;
# Require login to access website (requires login-enabled: true)
login-required = false;
# Period between tile renders for fullrender, in seconds (non-zero to pace fullrenders, lessen CPU load)
timesliceinterval = 0.0;
# Maximum chunk loads per server tick (1/20th of a second) - reducing this below 90 will impact render performance, but also will reduce server thread load
maxchunkspertick = 200;
# Progress report interval for fullrender/radiusrender, in tiles. Must be 100 or greater
progressloginterval = 100;
# Parallel fullrender: if defined, number of concurrent threads used for fullrender or radiusrender
# Note: setting this will result in much more intensive CPU use, some additional memory use. Caution should be used when
# setting this to equal or exceed the number of physical cores on the system.
#parallelrendercnt = 4;
# Interval the browser should poll for updates.
updaterate = 2000;
# If nonzero, server will pause fullrender/radiusrender processing when 'fullrenderplayerlimit' or more users are logged in
fullrenderplayerlimit = 0;
# If nonzero, server will pause update render processing when 'updateplayerlimit' or more users are logged in
updateplayerlimit = 0;
# Target limit on server thread use - msec per tick
per-tick-time-limit = 50;
# If TPS of server is below this setting, update renders processing is paused
update-min-tps = 18.0;
# If TPS of server is below this setting, full/radius renders processing is paused
fullrender-min-tps = 18.0;
# If TPS of server is below this setting, zoom out processing is paused
zoomout-min-tps = 18.0;
showplayerfacesinmenu = true;
# Control whether players that are hidden or not on current map are grayed out (true=yes)
grayplayerswhenhidden = true;
# Use player permissions to order player list: first to last, players are ordered by first permission listed that they have
# That is, anyone with first listed permission goes before anyone with second, etc, with users with none of the nodes going last
player-sort-permission-nodes = [
"bukkit.command.op"
];
# Set sidebaropened: 'true' to pin menu sidebar opened permanently, 'pinned' to default the sidebar to pinned, but allow it to unpin
#sidebaropened = true;
# Customized HTTP response headers - add 'id: value' pairs to all HTTP response headers (internal web server only)
# http-response-headers = {
# Access-Control-Allow-Origin = "my-domain.com";
# X-Custom-Header-Of-Mine = "MyHeaderValue";
# }
# Trusted proxies for web server - which proxy addresses are trusted to supply valid X-Forwarded-For fields
# This now supports both IP address, and subnet ranges (e.g. 192.168.1.0/24 or 202.24.0.0/14 )
trusted-proxies = [
"127.0.0.1"
"0:0:0:0:0:0:0:1"
];
# Join/quit message format for web chat: set to "" to disable notice on web UI
joinmessage = "%playername% joined";
quitmessage = "%playername% quit";
spammessage = "You may only chat once every %interval% seconds.";
# format for messages from web: %playername% substitutes sender ID (typically IP), %message% includes text
webmsgformat = "&color;2[WEB] %playername%: &color;f%message%";
# Control whether layer control is presented on the UI (default is true)
showlayercontrol = true;
# Enable checking for banned IPs via banned-ips.txt (internal web server only)
check-banned-ips = true;
# Default selection when map page is loaded
defaultzoom = 0;
defaultworld = "world";
defaultmap = "flat";
# (optional) Zoom level and map to switch to when following a player, if possible
# followzoom = 3;
# followmap = "surface";
# If true, make persistent record of IP addresses used by player logins, to support web IP to player matching
persist-ids-by-ip = true;
# If true, map text to cyrillic
cyrillic-support = false;
# If true, coordinates will be rounded
round-coordinates = true;
# Messages to customize
msg = {
maptypes = "Map Types";
players = "Players";
chatrequireslogin = "Chat Requires Login";
chatnotallowed = "You are not permitted to send chat messages";
hiddennamejoin = "Player joined";
hiddennamequit = "Player quit";
};
# URL for client configuration (only need to be tailored for proxies or other non-standard configurations)
url = {
# configuration URL
# configuration = "up/configuration";
# update URL
# update = "up/world/{world}/{timestamp}";
# sendmessage URL
# sendmessage = "up/sendmessage";
# login URL
# login = "up/login";
# register URL
# register = "up/register";
# tiles base URL
# tiles = "tiles/";
# markers base URL
# markers = "tiles/";
};
# Customization commands - allows scripts to be run before/after certain events
custom-commands.image-updates = {
# Command run just before any image file is written or updated: run with single parameter with fully qualified file name
preupdatecommand = "";
# Command run just after any image file is written or updated: run with single parameter with fully qualified file name
postupdatecommand = "";
};
# Snapshot cache size, in chunks
snapshotcachesize = 500;
# Snapshot cache uses soft references (true), else weak references (false)
soft-ref-cache = true;
# Player enter/exit title messages for map markers
#
# Processing period - how often to check player positions vs markers - default is 1000ms (1 second)
#enterexitperiod = 1000;
# Title message fade in time, in ticks (0.05 second intervals) - default is 10 (1/2 second)
#titleFadeIn = 10;
# Title message stay time, in ticks (0.05 second intervals) - default is 70 (3.5 seconds)
#titleStay = 70;
# Title message fade out time, in ticks (0.05 seocnd intervals) - default is 20 (1 second)
#titleFadeOut = 20;
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle = true;
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits = true;
# Published public URL for Dynmap server (allows users to use 'dynmap url' command to get public URL usable to access server
# If not set, 'dynmap url' will not return anything. URL should be fully qualified (e.g. https://mc.westeroscraft.com/)
#publicURL = "http://my.greatserver.com/dynmap";
# Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log
verbose = false;
# Enables debugging.
# debuggers - [
# {
# class = "org.dynmap.debug.LogDebugger";
# }
# ];
# Debug: dump blocks missing render data
dump-missing-blocks = false;
# Have dynmap migrate old chunks to the new format for the current MC version (specifically, for migrating pre-1.13 chunks to 1.13 or 1.14). This is needed
# in order to render chunks on an upgraded server (due to various bugs/limitations in CB/spigot 1.13+). This setting is NOT suggested to be enabled full time,
# but only long enough to do a fullrender of a migrated world - it should be turned back off once worlds are migrated). It is EXPERIMENTAL, so be sure to backup
# your worlds before running with this setting enabled (set to true)
#
#migrate-chunks = true;
# Log4J defense: string substituted for attempts to use macros in web chat
hackAttemptBlurb = "(IaM5uchA1337Haxr-Ban Me!)";
}