From 0dad38e02ef9cf534f40bdbc42ec966b39afaaec Mon Sep 17 00:00:00 2001 From: s8n-ru <279801990+s8n-ru@users.noreply.github.com> Date: Thu, 30 Apr 2026 18:33:38 +0100 Subject: [PATCH] Initial commit: racked.ru Minecraft server config snapshot Captures live config state of nullstone Purpur 1.21.11 server: - docker-compose.yml (itzg/minecraft-server image, MODRINTH_PROJECTS + PLUGINS lists) - All plugin configs under live-server/plugins/ (no DBs, no jars, no world data) - Server core: bukkit.yml, spigot.yml, purpur.yml, paper-global.yml, paper-world-defaults.yml, server.properties Excluded via .gitignore: - World data (world/, world_nether/, world_the_end/, auth_limbo/) - Sensitive: AuthMe DB (password hashes), Lands DB, CoreProtect DB, Essentials userdata - Jars (auto-fetched), logs, caches, .paper-remapped --- .gitignore | 40 + MISSION.md | 78 + README.md | 183 ++ TELEMETRY_AUDIT.md | 54 + THANKS.md | 69 + docker-compose.yml | 91 + docs/BACKUP.md | 54 + docs/DEPLOY.md | 87 + docs/PERMISSIONS.md | 51 + docs/PLUGINS.md | 63 + docs/PLUGIN_ALTERNATIVES.md | 519 +++++ docs/ROADMAP.md | 171 ++ docs/migrations/lands-to-landclaim.md | 544 +++++ docs/plugins/README.md | 182 ++ docs/plugins/authme.md | 32 + docs/plugins/coreprotect.md | 18 + docs/plugins/essentialsx.md | 15 + docs/plugins/fastasyncworldedit.md | 18 + docs/plugins/grimac.md | 16 + docs/plugins/homestead.md | 33 + docs/plugins/landclaimplugin.md | 19 + docs/plugins/luckperms.md | 18 + docs/plugins/minimotd.md | 11 + docs/plugins/multiverse-core.md | 17 + docs/plugins/placeholderapi.md | 15 + docs/plugins/proantitab.md | 12 + docs/plugins/protocollib.md | 16 + docs/plugins/simple-voice-chat.md | 16 + docs/plugins/skinsrestorer.md | 16 + docs/plugins/spark.md | 11 + docs/plugins/tab.md | 15 + docs/plugins/vaultunlocked.md | 12 + docs/plugins/voidworldgenerator.md | 11 + live-server/.modrinth-manifest.json | 1 + live-server/.rcon-cli.env | 1 + live-server/.rcon-cli.yaml | 1 + live-server/bukkit.yml | 47 + live-server/commands.yml | 32 + live-server/docker-compose.yml | 91 + live-server/eula.txt | 3 + live-server/help.yml | 64 + live-server/log4j2.xml | 29 + live-server/ops.json | 8 + live-server/permissions.yml | 0 live-server/plugins/.1997-version.json | 12 + live-server/plugins/.34315-version.json | 12 + live-server/plugins/.var-list-manifest.json | 1 + live-server/plugins/AuthMe/commands.yml | 68 + live-server/plugins/AuthMe/config.yml | 637 ++++++ live-server/plugins/AuthMe/email.html | 18 + .../backup_messages_en_20260430_1524.yml | 194 ++ .../backup_messages_en_20260430_1743.yml | 193 ++ .../plugins/AuthMe/messages/help_en.yml | 45 + .../plugins/AuthMe/messages/messages_en.yml | 160 ++ live-server/plugins/AuthMe/new_email.html | 127 ++ .../plugins/AuthMe/recovery_code_email.html | 9 + live-server/plugins/AuthMe/shutdown.html | 118 + live-server/plugins/AuthMe/spawn.yml | 14 + .../AuthMe/verification_code_email.html | 20 + live-server/plugins/AuthMe/welcome.txt | 3 + live-server/plugins/ComfyWhitelist/config.yml | 11 + .../ComfyWhitelist/locales/messages_be.yml | 24 + .../ComfyWhitelist/locales/messages_de.yml | 24 + .../ComfyWhitelist/locales/messages_en.yml | 24 + .../ComfyWhitelist/locales/messages_es.yml | 24 + .../ComfyWhitelist/locales/messages_fr.yml | 24 + .../ComfyWhitelist/locales/messages_it.yml | 24 + .../ComfyWhitelist/locales/messages_ja.yml | 24 + .../ComfyWhitelist/locales/messages_ko.yml | 24 + .../ComfyWhitelist/locales/messages_komi.yml | 24 + .../locales/messages_lolcat.yml | 24 + .../ComfyWhitelist/locales/messages_nl.yml | 24 + .../ComfyWhitelist/locales/messages_pt.yml | 24 + .../ComfyWhitelist/locales/messages_ru.yml | 24 + .../ComfyWhitelist/locales/messages_sv.yml | 24 + .../ComfyWhitelist/locales/messages_tr.yml | 24 + .../ComfyWhitelist/locales/messages_uk.yml | 24 + .../ComfyWhitelist/locales/messages_zh.yml | 24 + .../plugins/ComfyWhitelist/whitelist.yml | 7 + live-server/plugins/CoreProtect/.license | 0 live-server/plugins/CoreProtect/config.yml | 148 ++ live-server/plugins/CoreProtect/language.yml | 212 ++ live-server/plugins/Essentials/config.yml | 1051 +++++++++ .../plugins/Essentials/custom_items.yml | 7 + live-server/plugins/Essentials/kits.yml | 55 + .../plugins/Essentials/messages.properties | 1 + live-server/plugins/Essentials/motd.txt | 1 + live-server/plugins/Essentials/rules.txt | 3 + live-server/plugins/Essentials/tpr.yml | 16 + .../plugins/Essentials/upgrades-done.yml | 16 + live-server/plugins/Essentials/worth.yml | 187 ++ .../plugins/FastAsyncWorldEdit/config.yml | 408 ++++ .../FastAsyncWorldEdit/lang/strings.json | 672 ++++++ .../FastAsyncWorldEdit/worldedit-config.yml | 98 + live-server/plugins/GrimAC/config.yml | 230 ++ live-server/plugins/GrimAC/database.yml | 99 + .../plugins/GrimAC/databases/mongo.yml | 35 + .../plugins/GrimAC/databases/mysql.yml | 47 + .../plugins/GrimAC/databases/postgres.yml | 37 + .../plugins/GrimAC/databases/redis.yml | 51 + .../plugins/GrimAC/databases/sqlite.yml | 43 + live-server/plugins/GrimAC/discord.yml | 25 + live-server/plugins/GrimAC/messages.yml | 129 ++ live-server/plugins/GrimAC/punishments.yml | 119 + live-server/plugins/HelpCommand/config.yml | 74 + live-server/plugins/Homestead/config.yml | 185 ++ live-server/plugins/Homestead/flags.yml | 90 + live-server/plugins/Homestead/levels.yml | 62 + live-server/plugins/Homestead/limits.yml | 149 ++ live-server/plugins/Homestead/logs.txt | 22 + live-server/plugins/Homestead/regions.yml | 328 +++ live-server/plugins/LPC/config.yml | 24 + live-server/plugins/Lands/categories.yml | 31 + live-server/plugins/Lands/changelog.txt | 67 + live-server/plugins/Lands/config.yml | 1157 ++++++++++ live-server/plugins/Lands/events.yml | 731 ++++++ live-server/plugins/Lands/levels.yml | 465 ++++ live-server/plugins/Lands/nations.yml | 99 + live-server/plugins/Lands/roles.yml | 217 ++ live-server/plugins/Lands/server-name.yml | 14 + live-server/plugins/Lands/wars.yml | 290 +++ live-server/plugins/Lands/web.yml | 171 ++ live-server/plugins/LuckPerms/config.yml | 631 ++++++ live-server/plugins/LuckPerms/contexts.json | 4 + .../plugins/LuckPerms/editor-keystore.json | 8 + live-server/plugins/MarriageMaster/config.yml | 294 +++ .../MarriageMaster/config.yml.old_v107 | 274 +++ .../MarriageMaster/config.yml.old_v108 | 279 +++ .../plugins/MarriageMaster/lang/en.yml | 507 +++++ .../MarriageMaster/lang/en.yml.old_v113 | 470 ++++ .../MarriageMaster/lang/en.yml.old_v114 | 487 ++++ .../plugins/MarriageMaster/lang/items_en.yml | 861 +++++++ live-server/plugins/MiniMOTD/config.yml | 65 + .../plugins/MiniMOTD/icons/server-icon.png | Bin 0 -> 2888 bytes live-server/plugins/MiniMOTD/main.conf | 64 + .../plugins/MiniMOTD/plugin_settings.conf | 22 + .../plugins/Multiverse-Core/anchors.yml | 1 + .../plugins/Multiverse-Core/config.yml | 298 +++ .../plugins/Multiverse-Core/worlds.yml | 312 +++ live-server/plugins/PhantomSMP/config.yml | 28 + live-server/plugins/PlaceholderAPI/config.yml | 96 + .../plugins/ProAntiTab/How-To-Read.txt | 80 + .../plugins/ProAntiTab/comparable-config.yml | 854 +++++++ live-server/plugins/ProAntiTab/config.yml | 346 +++ .../plugins/ProAntiTab/custom-responses.yml | 86 + .../plugins/ProAntiTab/placeholders.yml | 82 + live-server/plugins/ProAntiTab/storage.yml | 27 + live-server/plugins/ProtocolLib/config.yml | 30 + live-server/plugins/ProtocolLib/lastupdate | 1 + live-server/plugins/RackedLimbo/config.yml | 28 + live-server/plugins/SkinsRestorer/config.yml | 380 ++++ live-server/plugins/TAB/animations.yml | 145 ++ live-server/plugins/TAB/config.yml | 179 ++ live-server/plugins/TAB/groups.yml | 20 + live-server/plugins/TAB/messages.yml | 106 + live-server/plugins/TAB/playerdata.yml | 0 live-server/plugins/TAB/skincache.yml | 4 + live-server/plugins/TAB/users.yml | 5 + live-server/plugins/UltimateTimber/config.yml | 609 +++++ .../plugins/UltimateTimber/locales/en_US.lang | 27 + .../plugins/UnexpectedSpawn/config.yml | 75 + live-server/plugins/Vault/config.yml | 1 + .../plugins/VoidWorldGenerator/config.yml | 23 + live-server/plugins/bStats/config.yml | 8 + .../plugins/voicechat/translations.properties | 22 + .../voicechat/voicechat-server.properties | 53 + live-server/pufferfish.yml | 35 + live-server/purpur.yml | 2001 +++++++++++++++++ live-server/server.properties | 71 + live-server/spigot.yml | 184 ++ live-server/wepif.yml | 46 + live-server/whitelist.json | 1 + scripts/backup.sh | 130 ++ 173 files changed, 23067 insertions(+) create mode 100644 .gitignore create mode 100644 MISSION.md create mode 100644 README.md create mode 100644 TELEMETRY_AUDIT.md create mode 100644 THANKS.md create mode 100644 docker-compose.yml create mode 100644 docs/BACKUP.md create mode 100644 docs/DEPLOY.md create mode 100644 docs/PERMISSIONS.md create mode 100644 docs/PLUGINS.md create mode 100644 docs/PLUGIN_ALTERNATIVES.md create mode 100644 docs/ROADMAP.md create mode 100644 docs/migrations/lands-to-landclaim.md create mode 100644 docs/plugins/README.md create mode 100644 docs/plugins/authme.md create mode 100644 docs/plugins/coreprotect.md create mode 100644 docs/plugins/essentialsx.md create mode 100644 docs/plugins/fastasyncworldedit.md create mode 100644 docs/plugins/grimac.md create mode 100644 docs/plugins/homestead.md create mode 100644 docs/plugins/landclaimplugin.md create mode 100644 docs/plugins/luckperms.md create mode 100644 docs/plugins/minimotd.md create mode 100644 docs/plugins/multiverse-core.md create mode 100644 docs/plugins/placeholderapi.md create mode 100644 docs/plugins/proantitab.md create mode 100644 docs/plugins/protocollib.md create mode 100644 docs/plugins/simple-voice-chat.md create mode 100644 docs/plugins/skinsrestorer.md create mode 100644 docs/plugins/spark.md create mode 100644 docs/plugins/tab.md create mode 100644 docs/plugins/vaultunlocked.md create mode 100644 docs/plugins/voidworldgenerator.md create mode 100755 live-server/.modrinth-manifest.json create mode 100755 live-server/.rcon-cli.env create mode 100755 live-server/.rcon-cli.yaml create mode 100755 live-server/bukkit.yml create mode 100755 live-server/commands.yml create mode 100644 live-server/docker-compose.yml create mode 100755 live-server/eula.txt create mode 100755 live-server/help.yml create mode 100755 live-server/log4j2.xml create mode 100755 live-server/ops.json create mode 100755 live-server/permissions.yml create mode 100644 live-server/plugins/.1997-version.json create mode 100755 live-server/plugins/.34315-version.json create mode 100755 live-server/plugins/.var-list-manifest.json create mode 100755 live-server/plugins/AuthMe/commands.yml create mode 100755 live-server/plugins/AuthMe/config.yml create mode 100644 live-server/plugins/AuthMe/email.html create mode 100644 live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1524.yml create mode 100644 live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1743.yml create mode 100644 live-server/plugins/AuthMe/messages/help_en.yml create mode 100644 live-server/plugins/AuthMe/messages/messages_en.yml create mode 100644 live-server/plugins/AuthMe/new_email.html create mode 100644 live-server/plugins/AuthMe/recovery_code_email.html create mode 100644 live-server/plugins/AuthMe/shutdown.html create mode 100755 live-server/plugins/AuthMe/spawn.yml create mode 100644 live-server/plugins/AuthMe/verification_code_email.html create mode 100644 live-server/plugins/AuthMe/welcome.txt create mode 100755 live-server/plugins/ComfyWhitelist/config.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_be.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_de.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_en.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_es.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_fr.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_it.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_ja.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_ko.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_komi.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_lolcat.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_nl.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_pt.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_ru.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_sv.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_tr.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_uk.yml create mode 100755 live-server/plugins/ComfyWhitelist/locales/messages_zh.yml create mode 100755 live-server/plugins/ComfyWhitelist/whitelist.yml create mode 100755 live-server/plugins/CoreProtect/.license create mode 100755 live-server/plugins/CoreProtect/config.yml create mode 100755 live-server/plugins/CoreProtect/language.yml create mode 100755 live-server/plugins/Essentials/config.yml create mode 100755 live-server/plugins/Essentials/custom_items.yml create mode 100755 live-server/plugins/Essentials/kits.yml create mode 100755 live-server/plugins/Essentials/messages.properties create mode 100644 live-server/plugins/Essentials/motd.txt create mode 100755 live-server/plugins/Essentials/rules.txt create mode 100755 live-server/plugins/Essentials/tpr.yml create mode 100755 live-server/plugins/Essentials/upgrades-done.yml create mode 100755 live-server/plugins/Essentials/worth.yml create mode 100644 live-server/plugins/FastAsyncWorldEdit/config.yml create mode 100644 live-server/plugins/FastAsyncWorldEdit/lang/strings.json create mode 100644 live-server/plugins/FastAsyncWorldEdit/worldedit-config.yml create mode 100644 live-server/plugins/GrimAC/config.yml create mode 100644 live-server/plugins/GrimAC/database.yml create mode 100644 live-server/plugins/GrimAC/databases/mongo.yml create mode 100644 live-server/plugins/GrimAC/databases/mysql.yml create mode 100644 live-server/plugins/GrimAC/databases/postgres.yml create mode 100644 live-server/plugins/GrimAC/databases/redis.yml create mode 100644 live-server/plugins/GrimAC/databases/sqlite.yml create mode 100644 live-server/plugins/GrimAC/discord.yml create mode 100644 live-server/plugins/GrimAC/messages.yml create mode 100644 live-server/plugins/GrimAC/punishments.yml create mode 100755 live-server/plugins/HelpCommand/config.yml create mode 100644 live-server/plugins/Homestead/config.yml create mode 100644 live-server/plugins/Homestead/flags.yml create mode 100644 live-server/plugins/Homestead/levels.yml create mode 100644 live-server/plugins/Homestead/limits.yml create mode 100644 live-server/plugins/Homestead/logs.txt create mode 100755 live-server/plugins/Homestead/regions.yml create mode 100755 live-server/plugins/LPC/config.yml create mode 100755 live-server/plugins/Lands/categories.yml create mode 100755 live-server/plugins/Lands/changelog.txt create mode 100755 live-server/plugins/Lands/config.yml create mode 100755 live-server/plugins/Lands/events.yml create mode 100755 live-server/plugins/Lands/levels.yml create mode 100755 live-server/plugins/Lands/nations.yml create mode 100755 live-server/plugins/Lands/roles.yml create mode 100755 live-server/plugins/Lands/server-name.yml create mode 100755 live-server/plugins/Lands/wars.yml create mode 100755 live-server/plugins/Lands/web.yml create mode 100755 live-server/plugins/LuckPerms/config.yml create mode 100755 live-server/plugins/LuckPerms/contexts.json create mode 100755 live-server/plugins/LuckPerms/editor-keystore.json create mode 100644 live-server/plugins/MarriageMaster/config.yml create mode 100755 live-server/plugins/MarriageMaster/config.yml.old_v107 create mode 100755 live-server/plugins/MarriageMaster/config.yml.old_v108 create mode 100644 live-server/plugins/MarriageMaster/lang/en.yml create mode 100755 live-server/plugins/MarriageMaster/lang/en.yml.old_v113 create mode 100755 live-server/plugins/MarriageMaster/lang/en.yml.old_v114 create mode 100755 live-server/plugins/MarriageMaster/lang/items_en.yml create mode 100755 live-server/plugins/MiniMOTD/config.yml create mode 100755 live-server/plugins/MiniMOTD/icons/server-icon.png create mode 100755 live-server/plugins/MiniMOTD/main.conf create mode 100755 live-server/plugins/MiniMOTD/plugin_settings.conf create mode 100644 live-server/plugins/Multiverse-Core/anchors.yml create mode 100644 live-server/plugins/Multiverse-Core/config.yml create mode 100644 live-server/plugins/Multiverse-Core/worlds.yml create mode 100755 live-server/plugins/PhantomSMP/config.yml create mode 100755 live-server/plugins/PlaceholderAPI/config.yml create mode 100755 live-server/plugins/ProAntiTab/How-To-Read.txt create mode 100755 live-server/plugins/ProAntiTab/comparable-config.yml create mode 100755 live-server/plugins/ProAntiTab/config.yml create mode 100755 live-server/plugins/ProAntiTab/custom-responses.yml create mode 100755 live-server/plugins/ProAntiTab/placeholders.yml create mode 100755 live-server/plugins/ProAntiTab/storage.yml create mode 100644 live-server/plugins/ProtocolLib/config.yml create mode 100644 live-server/plugins/ProtocolLib/lastupdate create mode 100644 live-server/plugins/RackedLimbo/config.yml create mode 100755 live-server/plugins/SkinsRestorer/config.yml create mode 100644 live-server/plugins/TAB/animations.yml create mode 100644 live-server/plugins/TAB/config.yml create mode 100644 live-server/plugins/TAB/groups.yml create mode 100644 live-server/plugins/TAB/messages.yml create mode 100644 live-server/plugins/TAB/playerdata.yml create mode 100644 live-server/plugins/TAB/skincache.yml create mode 100644 live-server/plugins/TAB/users.yml create mode 100755 live-server/plugins/UltimateTimber/config.yml create mode 100755 live-server/plugins/UltimateTimber/locales/en_US.lang create mode 100755 live-server/plugins/UnexpectedSpawn/config.yml create mode 100755 live-server/plugins/Vault/config.yml create mode 100644 live-server/plugins/VoidWorldGenerator/config.yml create mode 100755 live-server/plugins/bStats/config.yml create mode 100755 live-server/plugins/voicechat/translations.properties create mode 100755 live-server/plugins/voicechat/voicechat-server.properties create mode 100755 live-server/pufferfish.yml create mode 100755 live-server/purpur.yml create mode 100755 live-server/server.properties create mode 100755 live-server/spigot.yml create mode 100755 live-server/wepif.yml create mode 100755 live-server/whitelist.json create mode 100755 scripts/backup.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96beb3d --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# World data — too big, not source +world/ +world_nether/ +world_the_end/ +auth_limbo/ + +# Sensitive — password hashes, player PII +plugins/AuthMe/authme.db +plugins/AuthMe/authme.db.bak-* +plugins/AuthMe/playerdata/ +plugins/Lands/Data/database*.db +plugins/Lands/Data/playercache.json +plugins/Homestead/storages.yml +plugins/CoreProtect-CE/database.db +plugins/Essentials/userdata/ +plugins/MarriageMaster/database.db + +# Logs / caches +logs/ +*.log +*.log.gz +plugins/.paper-remapped/ +plugins/spark/ +plugins/faststats/ +crash-reports/ +cache/ +versions/ + +# Per-session state +session.lock +banned-*.json.bak +ops.json.bak +*.dat +*.dat_old +*.bak +*.bak-* + +# itzg image dumps +mods/ +config/ diff --git a/MISSION.md b/MISSION.md new file mode 100644 index 0000000..46f7f80 --- /dev/null +++ b/MISSION.md @@ -0,0 +1,78 @@ +# Mission + +> *all software should be free and open-source* — racked.ru + +Human-centric, fully open source, free for everyone. Microsoft-free, privacy-first, no telemetry, no mandatory accounts. + +Tagline: *experience the game the way it should have always been*. + +## What that means in practice + +- **No paywalls.** No premium plugins, no donor perks that change gameplay, no pay-to-win. +- **No closed-source plugins.** If a plugin can't be replaced by a FOSS equivalent, it doesn't ship. +- **No telemetry, no analytics, no data harvesting.** Players are not the product. +- **Credit where it's due.** Free to use ≠ free to plagiarize. Every plugin author, every dependency, every config we adapt: attributed by name and link. Attribution is not a tax on freedom — it's the bare minimum of respect. +- **Everything reproducible.** Anyone can clone this repo, follow the deploy doc, and stand up an identical server. +- **Companion launcher is FOSS too.** `server-client-launcher` ships alongside this repo — one-click connect, no manual modpack juggling, no proprietary client mods. +- **Configs are public.** Every gameplay knob, every plugin setting is in `config/`, diffable, forkable, criticizable. +- **Migration history is public.** Why we left Lands. Why we replaced LitePlaytimeRewards. Why we don't run CosmicGuard. All in `docs/migrations/`. + +## Acknowledged exceptions + +Honesty matters more than purity-signaling. There is currently **one** plugin that is not OSI-FOSS but is kept for operational reasons: + +- **CoreProtect-CE** — source-available (`all rights reserved`), not MIT/GPL. Kept because: (a) per-player rollback reliability is mission-critical for player protection, (b) Prism (the MIT alternative) has documented edge-case bugs in sign/container/entity restoration, (c) source is still readable + auditable. Revisit when Prism reaches feature parity at scale. + +This is the one. Adding more "operational exceptions" would defeat the mission. New plugins must be FOSS unless they replace a FOSS plugin that's worse on a *gameplay* axis (per policy below). + +## Plugin policy + +| Tier | Action | +|------|--------| +| FOSS, GH source, active maintainer | **First choice** — adopt freely | +| FOSS but unmaintained / archived | Use cautiously, prefer fork | +| Proprietary but free | Avoid — find FOSS replacement | +| Proprietary paid | **Never ship** — replace even if already paid for | +| Custom dev agreement | Only if FOSS replacement genuinely doesn't exist; document fully | + +**Precedent:** Lands plugin was paid for, deployed, working — and still removed in favor of LandClaimPlugin (FOSS) because owning a license isn't the same as owning the code. Open source wins even after sunk cost. See [`docs/migrations/lands-to-landclaim.md`](docs/migrations/lands-to-landclaim.md). + +## Companion projects + +**`server-client-launcher`** — separate repo. Players install once, get: +- Pre-configured `mc.racked.ru` entry (no IP-typing) +- Performance-optimized client +- Automatic mod/resource-pack delivery +- Voice chat, realistic sounds, immersive mods (planned) +- No Microsoft account, no Mojang account — pick a username, play + +**`client`** — separate repo. The optimized client itself. + +All three (server / client / launcher) are open source and forkable. Run your own copy — branding, scope, plugin set, all yours. + +Site: https://racked.ru + +## On freedom and credit + +Open source isn't anti-author. The whole point is that code belongs to everyone — author included. We will: + +- Attribute every plugin, mod, config snippet, and design decision to its source. +- Link upstream repos prominently, never hide them. +- Surface dev names in `docs/plugins/.md` AND in the README plugin index. +- Keep `THANKS.md` (or equivalent) listing humans whose work this server runs on. +- If we fork or modify a plugin, retain the original LICENSE + attribution headers, mark our changes clearly, and link back to upstream. + +You can fork this repo, run your own copy, sell hosting on top of it (where licenses allow), strip the branding — that's freedom. What you can't do without acknowledging the work is take credit for someone else's code. The two principles aren't in tension; they're the same principle. + +## Why this matters + +Minecraft's plugin ecosystem has drifted toward paid resource sites and closed-source anti-cheats. That's a tax on everyone who wants to host a community server. This project is a counter-statement: a complete, audit-able, free-to-run server stack that nobody owes anyone money to operate. + +Fork it. Run it. Share it. Improve it. Own your server. + +## Contributing + +- PRs welcome on configs, plugin selections, docs, scripts. +- Plugin additions must declare license + acquisition source per [docs/PLUGINS.md schema](docs/PLUGINS.md). +- Proprietary additions will be rejected unless they replace a FOSS plugin that's worse on a *gameplay* axis (not a paywalled-feature axis). +- Telemetry, analytics, or call-home code in any form: rejected. diff --git a/README.md b/README.md new file mode 100644 index 0000000..b61ef0a --- /dev/null +++ b/README.md @@ -0,0 +1,183 @@ +# racked.ru — Minecraft server + +> *experience the game the way it should have always been* + +Self-hosted Purpur Minecraft server powering [racked.ru](https://racked.ru). Microsoft-free, privacy-first, fully open source. Deployed via Docker on Debian (`nullstone`, 192.168.0.100), public at `mc.racked.ru:25565`. + +Companion projects: +- **server-client-launcher** — one-click connect, no manual modpack juggling. (Separate repo.) +- **client** — performance-optimized client (separate repo). + +This repo is the **server** half. Configs, plugin manifest, deploy scripts. No plugin jars committed — acquired at boot from FOSS sources (see [PLUGINS.md](docs/PLUGINS.md)). + +> *all software should be free and open-source* — see [MISSION.md](MISSION.md), [THANKS.md](THANKS.md) + +## Stack + +| Layer | Choice | Why | +|-------|--------|-----| +| Server jar | Purpur (latest stable build) | Paper fork w/ extra config knobs | +| Container | `itzg/minecraft-server:latest` | Auto-DL of jar + plugins via env | +| Host OS | Debian 13 | nullstone server | +| Network | Docker `proxy` external network | Shared w/ Traefik for future TLS reverse-proxy | +| Backup | tar.gz daily 02:00 via host cron | 7-day retention to `/opt/backups/` | + +## Quick start + +```bash +git clone minecraft-server +cd minecraft-server +mkdir -p /opt/docker/minecraft +cp -r config/* /opt/docker/minecraft/ # seed configs +cp docker-compose.yml /opt/docker/minecraft/ +chmod -R 777 /opt/docker/minecraft # see docs/PERMISSIONS.md (userns-remap quirk) +cd /opt/docker/minecraft && docker compose up -d +docker logs -f minecraft-mc # watch jar+plugin DL, world gen +``` + +First boot: ~3-5 min (Purpur jar DL, ~14 plugin DL, world gen). + +## Docs + +- [DEPLOY.md](docs/DEPLOY.md) — fresh deploy + migration from existing server +- [PLUGINS.md](docs/PLUGINS.md) — full plugin list, sources, slugs/IDs +- [PERMISSIONS.md](docs/PERMISSIONS.md) — userns-remap + chmod quirk +- [BACKUP.md](docs/BACKUP.md) — backup script + restore procedure +- [ROADMAP.md](docs/ROADMAP.md) — plugin acquisition overhaul: GH-first, lockfile, CI auto-update +- [TELEMETRY_AUDIT.md](TELEMETRY_AUDIT.md) — privacy audit: phoning-home disabled (bStats, update checks) +- [migrations/lands-to-landclaim.md](docs/migrations/lands-to-landclaim.md) — Lands (paid) → LandClaimPlugin (FOSS) migration + +## Server config highlights + +| Setting | Value | +|---------|-------| +| Difficulty | hard | +| Gamemode | survival | +| Max players | 69 | +| View distance | 20 chunks | +| Simulation distance | 10 chunks | +| Online mode | false (cracked clients allowed) | +| Spawn protection | 0 | +| RAM | 8G min, 16G max (18G hard cap) | +| RCON | enabled, port 25575, password `*redacted*` | + +Full settings in [`config/server.properties`](config/server.properties). + +## Network + +| Port | Proto | Use | +|------|-------|-----| +| 25565 | TCP | Minecraft client | +| 25575 | TCP | RCON (LAN-trusted only) | + +LAN: `192.168.0.100:25565`. Tailscale: `100.64.0.2:25565`. Future public: `mc.s8n.ru` via Traefik (label commented out). + +## Plugins (15 active) + +Auto-pulled from Modrinth at boot: +LuckPerms, PlaceholderAPI, EssentialsX, WorldEdit, Simple Voice Chat, MiniMOTD, SkinsRestorer, CoreProtect, GrimAC, spark, DiscordSRV, **LandClaimPlugin** (replaces paid Lands), TAB. + +Auto-pulled from Spigot: +ProtocolLib (ID 1997), Vault (ID 34315). + +Manual install (no Modrinth/Spigot auto-source): +LoginSecurity, ComfyWhitelist, MarriageMaster, PhantomSMP, HelpCommand, ProAntiTab. + +Premium (skipped, FOSS replacement preferred): +~~Lands~~ (replaced by LandClaimPlugin), CosmicGuard. + +See [docs/PLUGINS.md](docs/PLUGINS.md) for source URLs. + +## Roadmap / TODO + +Living checklist. Priority tags: **[P0]** blocker / security, **[P1]** vision-aligned swap, **[P2]** improvement, **[P3]** nice-to-have. + +### Infrastructure + +- [x] Fix `loader=purpur` boot loop — workaround: `TYPE=CUSTOM` + direct Purpur jar URL + `MODRINTH_LOADER=paper`. Permanent fix still pending Phase 2. +- [x] Pin Purpur version (1.21.10) — no `LATEST` drift +- [x] Set MOTD to racked.ru tagline +- [ ] **[P1]** Public DNS: `mc.racked.ru` → TCPShield proxy (DDoS protection; do NOT point A record directly to home IP) +- [ ] **[P1]** Traefik TLS termination for RCON web UI (LAN-only first) +- [ ] **[P2]** Switch bind mount → named volume to kill `chmod 777` userns workaround +- [ ] **[P2]** `dns:` block in compose pointing 1.1.1.1 + LAN router (Tailscale ate `/etc/resolv.conf` precedent) +- [ ] **[P2]** Bluemap or Squaremap on `map.racked.ru` (browser map via Traefik) +- [ ] **[P2]** Prometheus exporter + Grafana dashboard (TPS, MSPT, RAM) +- [ ] **[P3]** Test instance on port 25566 sharing world snapshot — try plugin upgrades safely + +### Plugin acquisition (per [ROADMAP.md](docs/ROADMAP.md)) + +- [ ] **[P0]** Phase 1: pin every plugin to specific version-id (no `latest` in env) +- [ ] **[P1]** Phase 2: `plugins.yml` manifest + `fetch-plugins.sh` (GH-first, Hangar/Modrinth/Spiget fallback) +- [ ] **[P1]** Phase 2: `plugins.lock` w/ sha256 per jar, committed +- [ ] **[P2]** Phase 3: GH Action — daily upstream check, auto-PR per update, license audit → `LICENSES.md` + +### Plugin swaps (per [PLUGIN_ALTERNATIVES.md](docs/PLUGIN_ALTERNATIVES.md)) + +High priority — security, FOSS alignment, license clarity: +- [x] LoginSecurity → **AuthMe Reloaded** — done. Void `auth_limbo` END dimension, sealed barrier cell at spawn, `teleportUnAuthedToSpawn: true`, `hideInventory: true`, post-login `mvtp %p world` hook. Base-coord leak fixed. +- [x] ProAntiTab — **Keep** (verified: RayzsYT, GPL-2.0-or-later, FOSS, free, GH). Earlier "likely premium" guess was wrong. +- [x] Claim plugin → **Homestead** (Apache-2.0, FOSS, 75+ flags, sub-areas, BlueMap integration, free claiming) +- [x] WorldEdit → **FastAsyncWorldEdit (FAWE)** — done. v2.15.0, GPL-3.0, drop-in swap, CoreProtect integration auto-detected. +- [x] Vault → **VaultUnlocked** — done. TheNewEconomy fork, GH source, modrinth slug `vaultunlocked`, drop-in Vault API replacement. +- [ ] **[P3]** (deferred — later project) Add Matrix bridge alongside DiscordSRV — use existing Tuwunel homeserver (txt.s8n.ru) as FOSS comm channel + +Medium priority — license/dependency cleanup: +- [x] CoreProtect-CE — **Keep** (acknowledged license exception; reliability > purity per operator). Revisit if/when Prism reaches feature parity on sign/container/entity rollback at scale. +- [ ] **[P2]** Verify license: TAB + +Low priority — consolidation to native: +- [ ] **[P2]** Verify ComfyWhitelist license — keep if FOSS (provides name-based hot-reload whitelist w/o Mojang API; native `/whitelist` is UUID-based and unsafe on offline-mode). Swap to FOSS name-based alt if license unclear. +- [ ] **[P3]** Drop HelpCommand → native `/help` + `commands.yml` +- [ ] **[P3]** Drop PhantomSMP → native paper config + vanilla datapack +- [ ] **[P3]** Audit MarriageMaster usage — drop or fork under FOSS license + +Phase 4 — long-term refactor: +- [ ] **[P3]** EssentialsX split into modular FOSS plugins (HuskHomes for teleport, etc) +- [ ] **[P3]** Evaluate dropping ProtocolLib in favor of PacketEvents-only stack +- [ ] **[P3]** PlaceholderAPI → MiniPlaceholders (Adventure-native) when ecosystem catches up +- [ ] **[P3]** Self-hosted skin server (replace Mojang/MineSkin dependency) + +### Documentation + +- [x] Per-plugin doc files under `docs/plugins/.md` — all 18 active plugins documented (license, source, version, notes) +- [ ] **[P1]** `AGREEMENTS.md` — high-level overview of any custom dev-rights deals (no NDAs broken) +- [ ] **[P1]** Cross-link launcher repo in README + MISSION when public +- [ ] **[P2]** Cross-link client repo in README + MISSION when public +- [ ] **[P2]** `docs/SKIN_HOSTING.md` — once skin server self-hosted +- [ ] **[P3]** mkdocs site auto-built from `docs/` for racked.ru + +### Community / process + +- [ ] **[P1]** Publish to GitHub under racked-rust org (or chosen org name) +- [ ] **[P1]** CONTRIBUTING.md — describe FOSS-only plugin policy (per MISSION.md) +- [ ] **[P2]** Issue templates: plugin-suggestion, license-concern, bug, feature +- [ ] **[P2]** PR template — license check checkbox, vision-alignment checkbox +- [ ] **[P3]** Discussion category for plugin proposals + +### Backlog (deferred, low priority) + +- [ ] **[P3-deferred]** Self-host LuckPerms web editor + bytebin on `perms.racked.ru` — eliminates Cloudflare dep that bit us during a CF outage (web editor failed; in-game `/lp` commands still worked). Both components are MIT FOSS (`github.com/LuckPerms/web`, `github.com/lucko/bytebin`). Workaround for now: use `/lp` commands only, skip GUI entirely. Revisit when other Phase 4 work is done — small QoL win, big setup cost. + +### Done + +- [x] Backup old server → `_archive/minecraft-old-2026-04-27.tar.gz` +- [x] Migrate Lands (paid) → LandClaimPlugin (FOSS) — see [migrations/lands-to-landclaim.md](docs/migrations/lands-to-landclaim.md) +- [x] Drop LitePlaytimeRewards (upstream dead since 2021) +- [x] Drop CosmicGuard (premium, can't audit) — GrimAC covers anti-cheat +- [x] Document MISSION + THANKS + plugin policy +- [x] Plugin alternatives audit — see [PLUGIN_ALTERNATIVES.md](docs/PLUGIN_ALTERNATIVES.md) +- [x] Drop DiscordSRV (Discord = mission-misaligned proprietary platform) +- [x] Migrate old world (4.2G overworld + nether + end) from archive to new server +- [x] Restore selective plugin configs from old (LuckPerms perms+groups, CoreProtect history, EssentialsX userdata, MiniMOTD, voicechat, SkinsRestorer, GrimAC, ProAntiTab, WorldEdit, PlaceholderAPI, spark) +- [x] Restore player state files (ops.json, banned-players, banned-ips, whitelist, usercache) +- [x] TAB v5 → v6 schema migration (visuals preserved, 0 warnings on reload) +- [x] Document `racked.ru` as the project (MISSION.md, THANKS.md w/ author attributions, README rebrand) +- [x] AuthMe void limbo dimension (`auth_limbo`) — sealed barrier cell, no coord leaks, post-login TP to overworld +- [x] Public access confirmed — port forward 25565 → 82.31.156.86 working +- [x] LandClaimPlugin Wilderness actionbar silenced +- [x] Disk cleanup — freed 11G+ (old backups, Docker build cache, staging dirs) + +## License + +Configs + scripts in this repo: MIT. Plugin jars are not redistributed here — they're acquired at deploy time from upstream sources, each under its own license. See [THANKS.md](THANKS.md) for per-plugin license attribution. diff --git a/TELEMETRY_AUDIT.md b/TELEMETRY_AUDIT.md new file mode 100644 index 0000000..c1d913e --- /dev/null +++ b/TELEMETRY_AUDIT.md @@ -0,0 +1,54 @@ +# Telemetry Audit & Removal — 2026-04-29 + +**Date:** 2026-04-29 +**Reason:** Privacy-first FOSS mission. Disabled default telemetry that serves no server function. + +## Changes Made + +All update checks and telemetry disabled. Server remains fully functional. + +### Disabled Settings + +| Plugin | Setting | Old | New | +|--------|---------|-----|-----| +| **bStats** | `enabled` | `true` | `false` | +| **PlaceholderAPI** | `check_updates` | `true` | `false` | +| **CoreProtect** | `check-updates` | `true` | `false` | +| **GrimAC** | `check-for-updates` | `true` | `false` | +| **FAWE** | `snapshot-update-notifications` | `true` | `false` | +| **FAWE** | `release-update-notifications` | `true` | `false` | +| **FAWE** | `notify-update-ingame` | `true` | `false` | + +## What Was Phoning Home + +1. **bStats** → `bStats.org` — server usage analytics for plugin authors +2. **PlaceholderAPI** → `bstats.org` + registry — update notifications +3. **CoreProtect** → GitHub releases API — update check +4. **GrimAC** → upstream — update check +5. **FAWE** → release servers — update snapshots/releases/in-game notifications + +## What We Kept (Required for Function) + +- **SkinsRestorer** — Mojang API (player skins). No alternative. +- **LuckPerms Web** — Cloudflare-hosted. Self-hosting deferred (P3 task). + +## Impact + +- **Zero loss of functionality.** Update checks were cosmetic (console/in-game notifications only). +- **Manual updates.** Check Modrinth/GitHub for plugin updates yourself. +- **Bandwidth:** Minimal savings (~KBs per startup + periodic pings). +- **Privacy:** Server no longer contributes usage data to third-party analytics. + +## Rationale + +Default telemetry violates racked.ru mission: *"all software should be free and open-source"* + privacy-first design. Plugin authors don't need bStats to function; FOSS plugins should respect user privacy by default. + +## Server Configs Updated + +- `/opt/docker/minecraft/plugins/bStats/config.yml` +- `/opt/docker/minecraft/plugins/PlaceholderAPI/config.yml` +- `/opt/docker/minecraft/plugins/CoreProtect/config.yml` +- `/opt/docker/minecraft/plugins/GrimAC/config.yml` +- `/opt/docker/minecraft/plugins/FastAsyncWorldEdit/config.yml` + +Server restarted 2026-04-29 15:43 UTC. All settings live. diff --git a/THANKS.md b/THANKS.md new file mode 100644 index 0000000..670c174 --- /dev/null +++ b/THANKS.md @@ -0,0 +1,69 @@ +# Thanks + +The racked.ru server runs on the work of many people. None of it would exist without them. + +## Server core + +| Project | Author(s) | License | Why | +|---------|-----------|---------|-----| +| Minecraft | Mojang Studios | EULA | Game itself | +| Paper | PaperMC team | MIT | High-perf MC server fork | +| Purpur | PurpurMC team | MIT | Paper fork w/ extra config | +| `itzg/minecraft-server` Docker image | Geoff Bourne (itzg) | MIT | Container that runs all of this | + +## Plugins (active) + +To be filled in per-plugin. See `docs/plugins/.md` for full attribution per plugin including author, license, source URL, and contribution context. + +| Plugin | Author / Org | License | Source | +|--------|--------------|---------|--------| +| LuckPerms | Luck (lucko) | MIT | https://github.com/LuckPerms/LuckPerms | +| PlaceholderAPI | HelpChat | GPL-3.0 | https://github.com/PlaceholderAPI/PlaceholderAPI | +| EssentialsX | EssentialsX team | GPL-3.0 | https://github.com/EssentialsX/Essentials | +| WorldEdit | EngineHub | GPL-3.0 | https://github.com/EngineHub/WorldEdit | +| Simple Voice Chat | henkelmax | LGPL-3.0 | https://github.com/henkelmax/simple-voice-chat | +| MiniMOTD | jmpms | MIT | https://github.com/jpenilla/MiniMOTD | +| SkinsRestorer | SkinsRestorer team | GPL-3.0 | https://github.com/SkinsRestorer/SkinsRestorer | +| CoreProtect (CE) | PlayPro / Intelli (CE fork) | MIT | https://github.com/PlayPro/CoreProtect / CE fork | +| GrimAC | MWHunter | GPL-3.0 | https://github.com/GrimAnticheat/Grim | +| spark | Luck (lucko) | GPL-3.0 | https://github.com/lucko/spark | +| DiscordSRV | Scarsz | GPL-3.0 | https://github.com/DiscordSRV/DiscordSRV | +| LandClaimPlugin | _author TBD_ | _license TBD_ | https://modrinth.com/plugin/landclaimplugin | +| TAB | NEZNAMY | _license TBD_ | https://github.com/NEZNAMY/TAB | +| ProtocolLib | dmulloy2 + contributors | GPL-2.0 | https://github.com/dmulloy2/ProtocolLib | +| Vault | MilkBowl | LGPL-3.0 | https://github.com/MilkBowl/Vault | + +## Plugins (manual / agreement-based) + +| Plugin | Author | License/Agreement | Source | +|--------|--------|-------------------|--------| +| LoginSecurity | lenis0012 (orig), Sytm (fork) | GPL-3.0 | https://www.spigotmc.org/resources/loginsecurity.19362/ | +| MarriageMaster | DerFlash | _TBD_ | _TBD_ | +| ProAntiTab | BoomEaro | _TBD_ | _TBD_ | +| ComfyWhitelist | etil2jz | _TBD_ | _TBD_ | +| HelpCommand | Slimerblue22 | _TBD_ | _TBD_ | +| PhantomSMP | Lielay9 | _TBD_ | _TBD_ | + +## Tooling + +| Tool | Author / Org | Why | +|------|--------------|-----| +| Docker | Docker Inc + community | Containerization | +| Tailscale | Tailscale Inc | VPN mesh for remote admin | +| Traefik | Traefik Labs | Reverse proxy (future TLS) | + +## Removed / replaced (still owe thanks) + +| Project | Why replaced | Where it went | +|---------|--------------|---------------| +| Lands | Paid, closed source — incompatible w/ FOSS mission. Author Angeschossen still produced excellent work; our switch is principle, not criticism. | Replaced by LandClaimPlugin | +| LitePlaytimeRewards | Upstream dead since 2021 | Awaiting FOSS replacement | +| CosmicGuard | Premium continuous build, can't audit | GrimAC covers anti-cheat | + +## Special + +This server was scaffolded with help from Claude Code (Anthropic). Documentation written collaboratively. Bugs, design choices, and any opinions in this repo are the operator's, not the AI's. + +--- + +If your name should be on this list and isn't, open a PR or an issue. If you'd prefer to be removed, same — we'll respect it. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ff4765a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,91 @@ +services: + mc: + image: itzg/minecraft-server:latest + container_name: minecraft-mc + environment: + EULA: "TRUE" + # TYPE=CUSTOM bypasses itzg's auto-loader detection; honors MODRINTH_LOADER override + TYPE: CUSTOM + CUSTOM_SERVER: "https://api.purpurmc.org/v2/purpur/1.21.11/latest/download" + VERSION: "1.21.11" + + MEMORY_SIZE: "16G" + JVM_OPTS: "-Xms8192M -Xmx16384M" + + DIFFICULTY: hard + GAMEMODE: survival + HARDCORE: "false" + MAX_PLAYERS: "69" + VIEW_DISTANCE: 20 + SIMULATION_DISTANCE: 10 + ONLINE_MODE: "false" + SPAWN_PROTECTION: 0 + MOTD: "racked.ru — experience the game the way it should have always been" + + USE_AIKAR_FLAGS: "true" + MAX_TICK_TIME: "-1" + + ENABLE_RCON: "true" + RCON_PASSWORD: "*redacted*" + + TZ: "Europe/London" + ENABLE_ROLLING_LOGS: "true" + + UID: "1000" + GID: "1000" + + # Modrinth auto-DL — TYPE=CUSTOM lets MODRINTH_LOADER=paper actually work + MODRINTH_PROJECTS: | + luckperms + placeholderapi + fastasyncworldedit + simple-voice-chat + minimotd + skinsrestorer + vaultunlocked + proantitab + voidworldgenerator + homestead-plugin + # EssentialsX + spark not on Modrinth as paper jars — direct GH/CI URLs + PLUGINS: | + https://github.com/EssentialsX/Essentials/releases/download/2.21.2/EssentialsX-2.21.2.jar + https://ci.lucko.me/job/spark/lastSuccessfulBuild/artifact/spark-bukkit/build/libs/spark-1.10.172-bukkit.jar + https://github.com/HaHaWTH/AuthMeReReloaded/releases/download/b49/AuthMe-5.6.0-FORK-Universal.jar + https://github.com/dmulloy2/ProtocolLib/releases/download/dev-build/ProtocolLib.jar + https://github.com/VoidemLIVE/Help-Command-Plugin/releases/download/v2.9.2/HelpCommand-2.9.2.jar + https://cdn.modrinth.com/data/Lu3KuzdV/versions/HD2IvrxS/CoreProtect-CE-23.1.jar + https://cdn.modrinth.com/data/gG7VFbG0/versions/uWACk3HR/TAB%20v6.0.1.jar + MODRINTH_DOWNLOAD_DEPENDENCIES: none + MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE: release + MODRINTH_LOADER: paper + SPIGET_RESOURCES: "" + REMOVE_OLD_MODS: "true" + REMOVE_OLD_MODS_INCLUDE: "*.jar" + REMOVE_OLD_MODS_EXCLUDE: "RackedLimbo*.jar" + volumes: + - /opt/docker/minecraft:/data + ports: + - "25565:25565/tcp" + - "25575:25575/tcp" + networks: + - proxy + restart: unless-stopped + healthcheck: + test: ["CMD", "mc-health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 240s + deploy: + resources: + limits: + memory: 18G + cpus: '6' + reservations: + memory: 8G + labels: + - "traefik.enable=false" + +networks: + proxy: + external: true diff --git a/docs/BACKUP.md b/docs/BACKUP.md new file mode 100644 index 0000000..8439c76 --- /dev/null +++ b/docs/BACKUP.md @@ -0,0 +1,54 @@ +# Backup & restore + +## Schedule + +Host cron, daily 02:00, 7-day retention. Script: [`scripts/backup.sh`](../scripts/backup.sh) (deployed to `/opt/docker/backup.sh` on host). Output: `/opt/backups/YYYYMMDD_HHMMSS/`. + +Backs up the whole nullstone Docker stack; the Minecraft block (lines 80-117 of backup.sh) handles MC. + +## Strategy + +| Server state | Backup type | Method | +|--------------|-------------|--------| +| Running | World snapshot + configs | `docker exec` tars worlds inside container (consistent), then `docker cp` out. Configs tarred from host. | +| Stopped | Full archive | Single tar of `/opt/docker/minecraft/` (worlds + plugins + configs). | + +## Manual backup + +```bash +ssh user@192.168.0.100 /opt/docker/backup.sh +``` + +## Manual archive (full server, while stopped) + +```bash +ssh user@192.168.0.100 'cd /opt/docker/minecraft && docker compose down' +ssh user@192.168.0.100 'tar czf - -C /opt/docker minecraft' > minecraft-backup-$(date +%F).tar.gz +ssh user@192.168.0.100 'cd /opt/docker/minecraft && docker compose up -d' +``` + +## Restore + +```bash +# Stop running server +ssh user@192.168.0.100 'cd /opt/docker/minecraft && docker compose down' + +# Move current dir aside +ssh user@192.168.0.100 'mv /opt/docker/minecraft /opt/docker/minecraft.broken' + +# Extract backup +scp minecraft-backup-YYYY-MM-DD.tar.gz user@192.168.0.100:/tmp/ +ssh user@192.168.0.100 'cd /opt/docker && tar xzf /tmp/minecraft-backup-YYYY-MM-DD.tar.gz' + +# Re-apply perms (userns-remap) +ssh user@192.168.0.100 'chmod -R 777 /opt/docker/minecraft' + +# Boot +ssh user@192.168.0.100 'cd /opt/docker/minecraft && docker compose up -d' +``` + +## What's NOT in repo backups + +- Plugin jars: re-downloaded fresh on each boot via `MODRINTH_PROJECTS` / `SPIGET_RESOURCES`. +- World data: only in `/opt/backups/` archives, never committed to git (binary, large, frequently changing). +- Player data (`usercache.json`, `ops.json`, `whitelist.json`): committed to repo *as snapshots only*; live state lives on host. diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md new file mode 100644 index 0000000..5aa1a06 --- /dev/null +++ b/docs/DEPLOY.md @@ -0,0 +1,87 @@ +# Deploy + +## Fresh install + +Target host: Debian 13 w/ Docker + Compose v2. Userns-remap optional (see PERMISSIONS.md). + +```bash +# 1. Prep host dir +sudo mkdir -p /opt/docker/minecraft +sudo chown $(id -u):$(id -g) /opt/docker/minecraft + +# 2. Seed configs from this repo +git clone https://github.com//minecraft-server.git /tmp/mc-repo +cp -r /tmp/mc-repo/config/* /opt/docker/minecraft/ +mv /opt/docker/minecraft/paper /opt/docker/minecraft/config # paper-global.yml etc live in ./config/ +cp /tmp/mc-repo/docker-compose.yml /opt/docker/minecraft/ + +# 3. Apply 777 (only if userns-remap in /etc/docker/daemon.json — see PERMISSIONS.md) +chmod -R 777 /opt/docker/minecraft + +# 4. Ensure proxy network exists (for Traefik integration) +docker network create proxy 2>/dev/null || true + +# 5. Boot +cd /opt/docker/minecraft +docker compose pull +docker compose up -d +docker logs -f minecraft-mc +``` + +Watch for `[Server thread/INFO]: Done (XX.XXXs)!` — server is live. + +## Migrating from existing server + +If you have an existing Bukkit-family server (Paper/Spigot/Purpur): + +```bash +# On old host +cd /path/to/old-server +docker compose down 2>/dev/null || systemctl stop minecraft 2>/dev/null +tar czf /tmp/mc-old.tar.gz . + +# Transfer +scp /tmp/mc-old.tar.gz user@new-host:/tmp/ + +# On new host +mkdir -p /opt/docker/minecraft +cd /opt/docker/minecraft +tar xzf /tmp/mc-old.tar.gz + +# Drop in this repo's compose +cp /tmp/mc-repo/docker-compose.yml ./ +chmod -R 777 . + +# Optional: clear plugins/ to let MODRINTH_PROJECTS pull fresh latest +rm -rf plugins/*.jar + +docker compose up -d +``` + +`REMOVE_OLD_MODS=true` + `REMOVE_OLD_MODS_INCLUDE=*.jar` in compose deletes manually-placed jars on every boot. Disable if you want manual jars to persist. + +## Updating + +```bash +cd /opt/docker/minecraft +docker compose pull # latest itzg image +docker compose down +docker compose up -d # auto-DLs latest Purpur build + latest plugins +``` + +Purpur version: set `VERSION: LATEST` in compose (default in this repo) to track newest stable. Pin to e.g. `VERSION: "1.21.10"` for reproducibility. + +## Stopping / removing + +```bash +docker compose down # stop, keep data +docker compose down -v # stop, remove anonymous volumes (worlds are bind-mounted, safe) +sudo rm -rf /opt/docker/minecraft # nuke everything +``` + +## Troubleshooting + +- **Restart loop, "Operation not permitted" on chown** → see PERMISSIONS.md, run `chmod -R 777 /opt/docker/minecraft`. +- **`Project(s) could not be located: [foo]`** → Modrinth slug wrong. Check the project page URL on modrinth.com — slug is the last path segment. +- **`UnknownHostException: api.purpurmc.org`** → host DNS broken. On nullstone, Tailscale ate `/etc/resolv.conf`; fix: `sudo tailscale set --accept-dns=false`. +- **Server starts but plugins missing** → check `docker logs minecraft-mc` for `[mc-image-helper]` lines; download errors print there. diff --git a/docs/PERMISSIONS.md b/docs/PERMISSIONS.md new file mode 100644 index 0000000..af07cf3 --- /dev/null +++ b/docs/PERMISSIONS.md @@ -0,0 +1,51 @@ +# Permissions / userns-remap quirk + +## Symptom + +Container restart-loops on first boot. Logs show: + +``` +[init] Changing ownership of /data to 1000 ... +chown: changing ownership of '/data/server.properties': Operation not permitted +[init] Running as uid=1000 gid=1000 with /data as 'drwxrwxr-x 4 65534 65534 4096 /data' +/image/scripts/start-configuration: line 87: /data/.rcon-cli.env: Permission denied +``` + +Files appear inside container as `65534:65534` (nobody:nogroup) even though host shows them as `1000:1000`. + +## Cause + +Docker daemon on this host runs with **userns-remap** enabled (`/etc/docker/daemon.json` has `"userns-remap": "default"`). This maps container UID 1000 → some host UID like 100000+1000=`101000`. Files owned by host UID 1000 (`user:user`) are *not* owned by the remapped container UID, so: + +- They show up as `nobody:nogroup` (65534) inside the container. +- Container can read world-readable files but can't write unless dir is `o+w`. +- Init script can't `chown` (host kernel blocks it — bind mount, foreign UID). + +## Fix + +```bash +chmod -R 777 /opt/docker/minecraft +``` + +This is what the original deployment used (verified: old dir was `drwxrwxrwx 12 user user`). Container can now write logs, world data, plugin configs, RCON env file. + +## Why not disable userns-remap? + +It's a host-wide hardening setting, kept for the rest of the Docker stack on nullstone. Per-container userns override (`userns_mode: "host"` in compose) is possible but defeats the security benefit for this container. + +## Alternative: named volume + +```yaml +volumes: + - mc-data:/data +volumes: + mc-data: +``` + +Docker creates the volume owned by the remapped UID directly, no chmod needed. Trade-off: harder to inspect/edit configs from host (must `docker cp` or bind-mount inspect). + +This repo sticks with bind mount + `chmod 777` for operator ergonomics. + +## Cosmetic chown spam (non-blocking) + +Even with `chmod 777`, init still logs `chown: ... Operation not permitted` for every file. Server starts and runs fine — kernel just won't let init re-claim ownership across the userns boundary. Ignore. diff --git a/docs/PLUGINS.md b/docs/PLUGINS.md new file mode 100644 index 0000000..1c75b25 --- /dev/null +++ b/docs/PLUGINS.md @@ -0,0 +1,63 @@ +# Plugins + +All plugins are auto-downloaded at container boot via env vars in `docker-compose.yml`. No jars committed to repo. + +## Modrinth (auto-DL via `MODRINTH_PROJECTS`) + +| Plugin | Modrinth slug | Purpose | +|--------|---------------|---------| +| LuckPerms | `luckperms` | Permissions / groups | +| PlaceholderAPI | `placeholderapi` | Placeholder framework | +| EssentialsX | `essentialsx` | /home, /tpa, /spawn, kits, economy | +| WorldEdit | `worldedit` | In-game terrain editing | +| Simple Voice Chat | `simple-voice-chat` | In-game proximity voice | +| MiniMOTD | `minimotd` | Custom server list MOTD | +| SkinsRestorer | `skinsrestorer` | Custom skins on offline-mode | +| CoreProtect | `coreprotect` | Block/inventory rollback | +| GrimAC | `grimac` | Anti-cheat | +| spark | `spark` | Profiler / TPS / memory | +| DiscordSRV | `discordsrv` | Two-way Discord ↔ chat bridge | +| LandClaimPlugin | `landclaimplugin` | FOSS land claim (replaces paid Lands) | +| TAB | `tab-was-taken` | Tablist / scoreboard / nametags | + +`MODRINTH_DOWNLOAD_DEPENDENCIES: required` — also pulls hard deps (e.g. ProtocolLib if a plugin requires it). + +## Spigot (auto-DL via `SPIGET_RESOURCES`) + +| Plugin | Spigot ID | URL | +|--------|-----------|-----| +| ProtocolLib | 1997 | https://www.spigotmc.org/resources/protocollib.1997/ | +| Vault | 34315 | https://www.spigotmc.org/resources/vault.34315/ | + +## Manual install (drop jar in `/opt/docker/minecraft/plugins/`) + +These are not on Modrinth/Spiget under stable slugs; download manually and drop the jar in `plugins/`. Set `REMOVE_OLD_MODS: "false"` in compose if you want them to survive restarts (current default removes all jars on boot). + +| Plugin | Source | Notes | +|--------|--------|-------| +| LoginSecurity | https://www.spigotmc.org/resources/loginsecurity.19362/ | Required for cracked servers (offline mode) | +| ComfyWhitelist | Hangar / GH (search "ComfyWhitelist") | Whitelist UX | +| MarriageMaster | https://www.spigotmc.org/resources/marriagemaster.19273/ | Player marriage system | +| PhantomSMP | https://www.spigotmc.org/resources/phantomsmp.59996/ | Phantom spawn rebalance | +| HelpCommand | Spigot resource | Custom /help | +| ProAntiTab | https://www.spigotmc.org/resources/proantitab.59141/ | Tab-completion filter | + +## Removed / replaced + +| Plugin | Status | Reason | +|--------|--------|--------| +| Lands | **Removed** | Paid (BuiltByBit). Replaced by LandClaimPlugin. See [migrations/lands-to-landclaim.md](migrations/lands-to-landclaim.md). | +| LitePlaytimeRewards | **Removed** | Dead upstream (last release 2021), no maintained source. | +| CosmicGuard | **Removed** | Premium continuous build, can't auto-fetch. GrimAC covers anti-cheat. | + +## Adding a plugin + +1. Find Modrinth slug (URL `modrinth.com/plugin/`). +2. Append to `MODRINTH_PROJECTS` block in `docker-compose.yml`. +3. `docker compose down && docker compose up -d`. + +Or for Spigot: add ID to `SPIGET_RESOURCES: "1997,34315,"`. + +## Pinning versions + +Defaults pull *latest*. To pin, use slug form `:` for Modrinth or `:` for Spiget. See https://docker-minecraft-server.readthedocs.io/en/latest/mods-and-plugins/. diff --git a/docs/PLUGIN_ALTERNATIVES.md b/docs/PLUGIN_ALTERNATIVES.md new file mode 100644 index 0000000..8ac189e --- /dev/null +++ b/docs/PLUGIN_ALTERNATIVES.md @@ -0,0 +1,519 @@ +# Plugin alternatives — FOSS-alignment audit + +Goal: for every plugin, evaluate against the vision (FOSS, privacy-first, no telemetry, no Microsoft-account dependency, active maintenance, GH-source-of-truth, attribution-respecting). Identify swaps where a more aligned alternative exists. + +Scoring axes: +- **L** — License (GPL/MIT/Apache > LGPL > custom-FOSS > closed) +- **S** — Source visibility (GH > Hangar > Modrinth-only > Spigot-only > closed) +- **T** — Telemetry (none > opt-in > opt-out > forced) +- **M** — Maintenance (active commits in last 90 days > stale > archived > dead) +- **D** — Dependency footprint (no native, no proprietary deps > requires ProtocolLib/Vault > requires premium) + +## 1. LuckPerms (perms) + +| Field | Value | +|-------|-------| +| Current | LuckPerms by Luck (lucko) | +| License | MIT | +| Source | https://github.com/LuckPerms/LuckPerms | +| Vision fit | **Excellent** — author is FOSS-native, MIT, GH-primary, no telemetry | + +**Alternatives:** +- *PermissionsEx* — abandoned, security holes +- *GroupManager* (Essentials) — bundled, weaker +- *GoPerms* — newer, less battle-tested + +**Verdict:** **Keep.** Industry standard, perfect alignment. + +--- + +## 2. PlaceholderAPI (placeholder framework) + +| Field | Value | +|-------|-------| +| Current | PlaceholderAPI by HelpChat / extended-clip | +| License | GPL-3.0 | +| Source | https://github.com/PlaceholderAPI/PlaceholderAPI | +| Vision fit | **Excellent** — GPL, GH, ubiquitous | + +**Alternatives:** +- *MVdWPlaceholderAPI* — defunct, premium +- *MiniPlaceholders* — Adventure-native, modern, MIT, https://github.com/MiniPlaceholders/MiniPlaceholders + +**Verdict:** **Keep PlaceholderAPI for now**, **evaluate MiniPlaceholders** as a future swap if our other plugins start using Adventure components — it's lighter and avoids legacy color codes. + +--- + +## 3. EssentialsX (utility kitchen sink) + +| Field | Value | +|-------|-------| +| Current | EssentialsX | +| License | GPL-3.0 | +| Source | https://github.com/EssentialsX/Essentials | +| Vision fit | **Strong** — GPL, GH, but huge surface area, slow to adopt new APIs | + +**Alternatives:** +- *CMI* — paid, closed → reject +- *Nova Essentials* — newer, modular, MIT-ish, https://github.com/NovaEssentials +- *EssentialsK* — fork w/ Kotlin/modern paper API, https://github.com/Essentials-K/EssentialsK +- Modular replacements (one plugin per feature): + - **Homes/teleport**: HuskHomes (https://github.com/WiIIiam278/HuskHomes) — MIT, modern, cross-server + - **Warps**: HuskHomes covers it + - **Kits**: dedicated KitMaster, or stay with EssentialsX + - **Economy**: TNE, ElementalEcon (FOSS) + - **Chat**: VentureChat (https://github.com/VentureCommunications/VentureChat) — GPL + +**Verdict:** **Keep EssentialsX short-term. Long-term: split by domain** — HuskHomes for teleport (better UX), keep EssentialsX for the rest until evaluated. Document as Phase 4 in ROADMAP. + +--- + +## 4. WorldEdit (world editing) + +| Field | Value | +|-------|-------| +| Current | WorldEdit by EngineHub | +| License | GPL-3.0 | +| Source | https://github.com/EngineHub/WorldEdit | +| Vision fit | **Excellent** — GPL, GH, gold standard | + +**Alternatives:** +- *FastAsyncWorldEdit (FAWE)* — fork w/ async perf, LGPL, https://github.com/IntellectualSites/FastAsyncWorldEdit — **drop-in replacement, faster** +- *VoxelSniper* — different use case (terrain sculpting) + +**Verdict:** **Swap to FAWE.** Same API, much faster, FOSS, actively maintained. Bonus: handles big edits without freezing the server. + +--- + +## 5. Simple Voice Chat (voice) + +| Field | Value | +|-------|-------| +| Current | Simple Voice Chat by henkelmax | +| License | LGPL-3.0 | +| Source | https://github.com/henkelmax/simple-voice-chat | +| Vision fit | **Excellent** — LGPL, GH, no telemetry, self-hosted | + +**Alternatives:** +- *Plasmo Voice* — separate ecosystem, mod-side requirement, less plugin-friendly +- *Mumble integration* — heavy, breaks one-click goal + +**Verdict:** **Keep.** Best-in-class for our use case. + +--- + +## 6. MiniMOTD (server-list MOTD) + +| Field | Value | +|-------|-------| +| Current | MiniMOTD by jpenilla | +| License | MIT | +| Source | https://github.com/jpenilla/MiniMOTD | +| Vision fit | **Excellent** — MIT, GH | + +**Alternatives:** +- *ServerListPlus* — older, more features, GPL +- *Native paper-api MOTD* — code yourself, no plugin + +**Verdict:** **Keep.** Lightweight, modern, no reason to swap. + +--- + +## 7. SkinsRestorer (offline-mode skins) + +| Field | Value | +|-------|-------| +| Current | SkinsRestorer | +| License | GPL-3.0 | +| Source | https://github.com/SkinsRestorer/SkinsRestorer | +| Vision fit | **Strong** — GPL, GH, but proxies skin lookup through Mojang API by default | + +**Concern:** "Microsoft-free" goal vs. Mojang skin API. Workaround: SkinsRestorer supports custom skin URLs / MineSkin alternative. + +**Alternatives:** +- *MineSkin* (https://api.mineskin.org) — community skin server, can be self-hosted +- *NameMC mirror APIs* — third-party +- *Self-hosted skin server* — most aligned, requires setup + +**Verdict:** **Keep SkinsRestorer**. Phase 2 follow-up: configure to point at self-hosted skin server (or MineSkin) to fully cut Mojang dependency. Document in `docs/SKIN_HOSTING.md` (TBD). + +--- + +## 8. CoreProtect / CoreProtect-CE (logging / rollback) + +| Field | Value | +|-------|-------| +| Current | CoreProtect-CE 23.1 (community fork) | +| License | Source-available, "all rights reserved" — readable but not OSI-FOSS | +| Source | https://github.com/PlayPro/CoreProtect (orig), https://github.com/Intelli/CoreProtect (CE fork) | +| Vision fit | **Mixed** — license isn't OSI-FOSS, but operationally is the most reliable rollback plugin in the ecosystem | + +**Operator priority (explicit):** solid logs from day one, **easy per-player rollback** matters more than license purity for this specific plugin. + +**Comparison vs Prism (the FOSS alternative):** + +| Feature | CoreProtect-CE | Prism | +|---------|----------------|-------| +| Per-player rollback (`/co rollback u:Foo t:7d r:50`) | rock solid, 13+ years tuned | supported, less battle-tested | +| Inspector tool (`/co i` → click block) | gold standard UX | works, less polished | +| Sign/container/entity restoration | clean, robust | edge-case bugs reported | +| At-scale performance (100+ players) | proven | less proven | +| Rollback safety on huge edits | proven | newer codebase | +| API surface for other plugins | wide ecosystem support | smaller ecosystem | +| License | source-available, "all rights reserved" | MIT | +| Source readable | yes (GH public) | yes (GH public) | +| Active dev | yes (CE fork: Intelli) | yes (Prism v3+) | + +**Why this is the principled exception:** +- License is *source-available* (readable + auditable + forkable in practice), not OSI-FOSS (no explicit redistribution grant). +- Operational reliability for **player protection** outweighs license purity for *this one plugin*. +- Server's trust model depends on rollback being airtight; Prism's gotchas (sign/container restoration edge cases) would mean failed grief reports. +- CoreProtect's inspector tool UX is so dominant that swapping costs admin productivity. + +**Verdict:** **Keep CoreProtect-CE.** Document this as the one acknowledged license exception in MISSION.md. Revisit when Prism reaches feature parity on signs/containers/entity rollback at scale. + +**Alternatives evaluated:** +- *Prism v3+* — MIT, modern, active. Strong on paper, gaps in field-tested rollback edge cases. Reconsider in 12-18 months. +- *LogBlock* — abandoned, drop. +- *CoreProtect 22.x* — earlier Apache-2.0 version; outdated, missing features. + +--- + +## 9. GrimAC (anti-cheat) + +| Field | Value | +|-------|-------| +| Current | GrimAC by MWHunter | +| License | GPL-3.0 | +| Source | https://github.com/GrimAnticheat/Grim | +| Vision fit | **Excellent** — GPL, GH, no telemetry, transparent detection logic | + +**Alternatives:** +- *Vulcan* — paid, closed → reject +- *Matrix* — paid → reject +- *NoCheatPlus* — abandoned upstream, reincarnated as CMI-NCP, free but old +- *Spartan AC* — paid, closed → reject + +**Verdict:** **Keep.** GrimAC is the only FOSS anti-cheat that matters in 2026. + +--- + +## 10. spark (profiler) + +| Field | Value | +|-------|-------| +| Current | spark by Luck (lucko) | +| License | GPL-3.0 | +| Source | https://github.com/lucko/spark | +| Vision fit | **Excellent** — GPL, GH, no telemetry beyond opt-in heap-share | + +**Alternatives:** +- *Timings* — Paper built-in, deprecated upstream +- *Pufferfish profiler* — server-fork-specific + +**Verdict:** **Keep.** Only credible profiler. + +--- + +## 11. DiscordSRV (Discord bridge) + +| Field | Value | +|-------|-------| +| Current | DiscordSRV by Scarsz | +| License | GPL-3.0 | +| Source | https://github.com/DiscordSRV/DiscordSRV | +| Vision fit | **Mixed** — DiscordSRV itself is GPL/FOSS, but Discord is *the* opposite of our values (proprietary, closed, telemetry-heavy, Microsoft-adjacent via MS GitHub stack). Bridges player chat to a closed platform. | + +**Alternatives:** +- *MatrixSRV / matrix-bridge* — bridge to Matrix instead of/alongside Discord +- *Telegraph* — Telegram bridge +- *RevoltSRV* — bridge to Revolt (FOSS Discord-alike), https://github.com/Frosty-The-Dev/RevoltSRV +- *Custom Matrix bridge* — write your own to existing Tuwunel homeserver (memory: txt.s8n.ru is yours) + +**Verdict:** **Keep DiscordSRV for player reach, but add a Matrix bridge as the primary FOSS-aligned channel.** Discord is where players are; Matrix is where principles are. Operate both. You already run a Tuwunel homeserver (txt.s8n.ru) — natural home for the FOSS-aligned bridge. **Action: deploy mc-matrix-bridge alongside.** + +--- + +## 12. LandClaimPlugin (claims) — recently swapped from Lands + +| Field | Value | +|-------|-------| +| Current | LandClaimPlugin (Modrinth) | +| License | TBD (verify on Modrinth + GH) | +| Source | https://modrinth.com/plugin/landclaimplugin | +| Vision fit | **Strong if FOSS confirmed, Verify before celebrating** | + +**Alternatives:** +- *GriefPrevention* (https://github.com/GriefPrevention/GriefPrevention) — MIT, GH, oldest + most battle-tested FOSS claim plugin +- *GriefDefender* — fork, GPL, modern +- *RedProtect* — GPL, mature, https://github.com/FabioZumbi12/RedProtect +- *PlotSquared* — for plot-style worlds, different use case + +**Operator decision (confirmed):** **Keep LandClaimPlugin.** Rationale: +- Chunk-based claims = vanilla-feel. Players see chunk borders via `F3+G` (built-in vanilla) — no client mod, no resource pack, no extra UI required to know where claims are. +- GriefPrevention's free-form rectangle claims feel less native and require a separate visualization tool/plugin for boundary display. +- Keeping vanilla-aligned mechanics is mission-aligned: minimum surface area, maximum native feel. + +**Outstanding TODO:** verify LandClaimPlugin's license. If proprietary, fork or replace with another chunk-based FOSS claim plugin (chunk-claim plugins exist on Modrinth, e.g. `chunkclaim`, `simplechunkclaim`). + +**Alternatives kept on file as fallback:** +- *GriefPrevention* — free-form, FOSS, but loses the chunk-feel. +- *ChunkClaim* — chunk-based, FOSS-likely; fallback if LCP license fails. + +--- + +## 13. TAB (tablist / scoreboard / nametags) + +| Field | Value | +|-------|-------| +| Current | TAB by NEZNAMY | +| License | _verify — listed on GH but check_ | +| Source | https://github.com/NEZNAMY/TAB | +| Vision fit | **Strong** — GH-primary, no telemetry, free | + +**Alternatives:** +- *FeatherBoard* — paid, closed → reject +- *AnimatedTabs / TabPrefix* — feature subset only +- *MyScoreboard* — scoreboard only + +**Verdict:** **Keep.** Best feature/license tradeoff. + +--- + +## 14. ProtocolLib (protocol library) + +| Field | Value | +|-------|-------| +| Current | ProtocolLib by dmulloy2 + contributors | +| License | GPL-2.0 | +| Source | https://github.com/dmulloy2/ProtocolLib | +| Vision fit | **Strong** — GPL, GH, but heavy; many plugins demand it | + +**Alternatives:** +- *PacketEvents* (https://github.com/retrooper/packetevents) — GPL-3.0, more modern, faster, used by GrimAC +- *Native Paper packet API* — limited but growing + +**Verdict:** **Evaluate dropping ProtocolLib in favor of PacketEvents.** GrimAC already uses PacketEvents. If we can find PacketEvents-based forks of plugins currently demanding ProtocolLib, we shrink the dep tree. Phase 4 task. + +--- + +## 15. Vault (economy/perms abstraction) + +| Field | Value | +|-------|-------| +| Current | Vault by MilkBowl | +| License | LGPL-3.0 | +| Source | https://github.com/MilkBowl/Vault | +| Vision fit | **Strong** — LGPL, GH, but old (2016 era API) | + +**Alternatives:** +- *VaultUnlocked* (https://github.com/CraftYourMind/VaultUnlocked) — modern fork, more features +- *Treasury* — GPL-3.0, modern econ-only API, https://github.com/lokka30/Treasury + +**Verdict:** **Swap to VaultUnlocked.** Fork with same API surface but modernized. Treasury alone won't cover non-econ plugins demanding Vault. + +--- + +## 16. LoginSecurity (offline-mode auth) + +| Field | Value | +|-------|-------| +| Current | LoginSecurity 3.3.1 (lenis0012 archived; Sytm fork) | +| License | GPL-3.0 | +| Source | original archived; forks unclear | +| Vision fit | **Weak** — upstream dead, fork unclear, security-critical | + +**Critical feature requirement (from operator):** plugin must **teleport unauthenticated players to spawn** during login. Reason: prevents base-coord leaks via screenshot/glance/screen-share by anyone who joins w/ a stolen username before typing /login. This is non-negotiable for cracked-server gameplay safety. + +**Alternatives evaluated against this requirement:** + +| Plugin | Teleports unauth → spawn? | License | Active | Notes | +|--------|----------------------------|---------|--------|-------| +| **AuthMe Reloaded** | **Yes** — `teleportUnAuthedToSpawn: true` config option | GPL-3.0 | active | https://github.com/AuthMe/AuthMeReloaded | +| FastLogin | No (premium-passthrough flow) | LGPL-3.0 | active | Different use case | +| xAuth | Yes (old impl) | abandoned | dead | reject | +| nLogin | Yes | closed | n/a | reject | +| LibreLogin | **Yes** (proxy-side) | GPL-3.0 | active | https://github.com/kyngs/LibreLogin — Velocity/BungeeCord focused; may be overkill for single-server but FOSS-aligned | + +**AuthMe-specific config to match LoginSecurity behavior:** +```yaml +# config.yml +restrictions: + teleportUnAuthedToSpawn: true # the critical feature + ProtectInventoryBeforeLogIn: true # extra safety + allowMovement: false # block all movement until /login + noTeleport: true # block /tp until authed + timeout: 60 # kick after 60s of no /login +``` + +**Verdict:** **Swap to AuthMe Reloaded.** Same critical feature, active maintenance, FOSS, security-audited. LoginSecurity is end-of-life and forks are murky. **High priority** because this is auth + base-coord protection. + +--- + +## 17. ComfyWhitelist (whitelist) + +| Field | Value | +|-------|-------| +| Current | ComfyWhitelist by etil2jz | +| License | TBD — verify | +| Source | TBD — likely Hangar/GH | +| Vision fit | **Conditional Keep** if license verifies as FOSS | + +**Critical feature requirement (from operator):** plugin must apply whitelist changes **without server restart or `/reload`**, and must work on **cracked/offline-mode servers without Mojang API lookups**. + +**Why native `/whitelist` is insufficient on this server:** + +Vanilla `/whitelist add ` on an offline-mode server: +1. Tries to look up the player's UUID via Mojang API. +2. If Mojang lookup fails (network blip, Mojang down, player has no premium account): server may store wrong UUID, no UUID, or refuse to add. +3. Cracked players have offline-derived UUIDs (`OfflinePlayer:` hash), which don't match Mojang's online UUID. Whitelist comparison fails on join. +4. Some Paper/Purpur configs require restart to fully apply whitelist changes when UUID lookup is involved. + +ComfyWhitelist (and similar name-based whitelist plugins) sidestep all of the above: +- Whitelist by **name string**, not UUID. +- No Mojang API calls — fully local, fully offline-safe. +- Changes apply instantly, no restart, no `/reload`. +- Aligns w/ "Microsoft-free" mission (no Mojang dependency for whitelist auth). + +**Alternatives that also satisfy these constraints:** + +| Plugin | Name-based? | No Mojang call? | Hot-reload? | License | Source | +|--------|-------------|-----------------|-------------|---------|--------| +| **ComfyWhitelist** | yes | yes | yes | TBD | TBD | +| Native `/whitelist` | no (UUID) | no | partial | n/a | n/a | +| AdvancedWhitelist | varies | varies | yes | GPL | Hangar | +| Whitelist (by mxstr) | yes | yes | yes | MIT | https://github.com/mxstr/Whitelist | +| Custom 50-line plugin | yes | yes | yes | MIT | self-host | + +**Verdict:** **Keep ComfyWhitelist** — features (name-based + hot-reload + offline-safe) are mission-critical. **TODO:** verify ComfyWhitelist license is FOSS. If proprietary or unclear → swap to a confirmed-FOSS name-based whitelist plugin (like the mxstr one) preserving all three features. + +**Note for documentation:** add to `docs/plugins/comfywhitelist.md` an explicit "why we use this over native" rationale so future maintainers don't drop it. + +--- + +## 18. MarriageMaster (social) + +| Field | Value | +|-------|-------| +| Current | MarriageMaster by DerFlash | +| License | TBD (likely Spigot resource license) | +| Source | https://www.spigotmc.org/resources/marriagemaster.19273/ — Spigot only | +| Vision fit | **Weak** — Spigot-only acquisition, no GH presence found, license unclear | + +**Alternatives:** +- *SimpleMarriage* (FOSS, less feature) — find GPL alternative +- Ditch entirely — niche feature, low priority + +**Verdict:** **Audit:** is this feature widely used by your players? If yes, find a GPL alternative or fork DerFlash's plugin under FOSS license (if license permits). If no, **drop**. + +--- + +## 19. PhantomSMP (phantom rebalance) + +| Field | Value | +|-------|-------| +| Current | PhantomSMP by Lielay9 | +| License | TBD (Spigot resource) | +| Source | Spigot only | +| Vision fit | **Weak** | + +**Alternatives:** +- *PhantomLight* — alternative Spigot resource, license TBD +- *Native Paper config* — paper-world-defaults.yml has phantom-spawn knobs +- *DataPack* — vanilla solution, no plugin needed + +**Verdict:** **Replace with native Paper config + datapack.** Removes plugin dep entirely. Your players won't notice the difference if tuned well. + +--- + +## 20. HelpCommand (custom /help) + +| Field | Value | +|-------|-------| +| Current | HelpCommand by Slimerblue22 | +| License | TBD | +| Source | Spigot only | +| Vision fit | **Weak — easy to drop** | + +**Alternatives:** +- *Native Bukkit `/help`* — built-in +- *HelpCMD* — alternative +- *commands.yml* — Bukkit's built-in alias system covers most use cases + +**Verdict:** **Drop.** Use native `/help` + customize via `commands.yml` (already in repo). + +--- + +## 21. ProAntiTab (tab-completion filter) + +| Field | Value | +|-------|-------| +| Current | ProAntiTab by RayzsYT | +| License | **GPL-2.0-or-later** (verified via Modrinth 2026-04-27) | +| Source | https://github.com/RayzsYT/ProAntiTab | +| Modrinth | https://modrinth.com/plugin/proantitab | +| Vision fit | **Excellent** — GPL, GH-primary, free, supports Paper/Purpur/Velocity/Folia | + +**Earlier note corrected:** Initially flagged as "likely premium BoomEaro" — that was wrong. Real author is RayzsYT, plugin is FOSS, free, well-maintained. + +**Features that justify keeping:** +- Hide commands from tab-complete based on permission +- Block plugin-detection hacks (spoofing, namespace probing) +- Custom F3 server brand (cosmetic, no info leak) +- Whitelist/blacklist command modes +- Sub-argument blocking (granular command visibility) +- PlaceholderAPI integration, MiniMessage formatting +- Group-based permission system + +**Verdict:** **Keep ProAntiTab.** No swap needed. Aligned with mission, GPL FOSS, GH source-of-truth, free. + +--- + +## Already removed (vision-aligned) + +| Plugin | Reason | Replacement | +|--------|--------|-------------| +| Lands | Paid, closed-ish | LandClaimPlugin (verify FOSS) | +| LitePlaytimeRewards | Dead upstream | TBD or drop | +| CosmicGuard | Premium continuous | GrimAC covers anti-cheat | + +--- + +## Summary table + +| # | Plugin | Status | Action | +|---|--------|--------|--------| +| 1 | LuckPerms | Keep | — | +| 2 | PlaceholderAPI | Keep | Evaluate MiniPlaceholders Phase 4 | +| 3 | EssentialsX | Keep | Long-term: split into modular FOSS (HuskHomes etc) | +| 4 | WorldEdit | **Swap → FAWE** | High pri (perf + still GPL) | +| 5 | Simple Voice Chat | Keep | — | +| 6 | MiniMOTD | Keep | — | +| 7 | SkinsRestorer | Keep | Phase 2: self-hosted skin server | +| 8 | CoreProtect-CE | **Keep** (acknowledged license exception) | Reliability > purity per operator decision | +| 9 | GrimAC | Keep | — | +| 10 | spark | Keep | — | +| 11 | DiscordSRV | Keep + add Matrix bridge | High pri (FOSS comm channel) | +| 12 | LandClaimPlugin | **Verify license, possibly swap → GriefPrevention** | High pri | +| 13 | TAB | Keep (verify license) | Med pri verify | +| 14 | ProtocolLib | Keep, evaluate PacketEvents-only future | Phase 4 | +| 15 | Vault | **Swap → VaultUnlocked** | Med pri | +| 16 | LoginSecurity | **Swap → AuthMe Reloaded** | **High pri (auth)** | +| 17 | ComfyWhitelist | **Drop → native /whitelist** | Low pri | +| 18 | MarriageMaster | Audit usage, drop or replace | Low pri | +| 19 | PhantomSMP | **Drop → native config + datapack** | Low pri | +| 20 | HelpCommand | **Drop → native /help** | Low pri | +| 21 | ProAntiTab | **Keep** (GPL-2.0-or-later, FOSS, free, GH) | — | + +## High-priority swap order (proposed) + +1. **LoginSecurity → AuthMe Reloaded** — security-critical, dead upstream +2. **Verify ProAntiTab + LandClaimPlugin licenses** — drop/swap if non-FOSS +3. **WorldEdit → FAWE** — perf win, drop-in +4. **Vault → VaultUnlocked** — modernization +5. **Add Matrix bridge for chat** — uses existing Tuwunel homeserver +6. **CoreProtect-CE → Prism** — license cleanup (do after world stable, harder migration) +7. **Drop ComfyWhitelist, HelpCommand, PhantomSMP** — consolidate to native +8. **Phase 4 deep refactor**: EssentialsX split, ProtocolLib evaluation, MiniPlaceholders eval + +Each swap = a PR + a `docs/migrations/-to-.md` doc. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md new file mode 100644 index 0000000..7798ede --- /dev/null +++ b/docs/ROADMAP.md @@ -0,0 +1,171 @@ +# Roadmap — plugin acquisition overhaul + +Goal: replace runtime env-driven plugin downloads with a reproducible, source-of-truth-first acquisition pipeline. Make the server fully open source, fully auditable, fully reproducible. + +## Problem (current state) + +Plugins are pulled at every container boot via `MODRINTH_PROJECTS` + `SPIGET_RESOURCES` env vars in `docker-compose.yml`. Pain points hit during 2026-04-27 deploy: + +- **Slug ≠ name** — `vault`, `protocollib` not on Modrinth at expected slug. Three boot loops to discover. +- **Channel mismatch** — GrimAC alpha-only, WorldEdit beta-only on bleeding-edge MC versions. Default `release` filter silently rejected. Two more boot loops. +- **Wrong env var** — `MODRINTH_DEFAULT_VERSION_TYPE` is for modpack flow; `MODRINTH_PROJECTS` flow needs `MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE`. One more boot loop. +- **VERSION=LATEST + Purpur** — Purpur 26.x versioning scheme confused itzg, sent "26.1.2" as MC version to Modrinth API; EssentialsX query returned no files. +- **No lockfile** — `latest` drifts daily. No checksum, no audit trail. +- **No pre-flight** — every typo is a 30s container restart cycle. +- **License opacity** — no automated check that plugins are FOSS-compatible before adding. +- **`REMOVE_OLD_MODS=*.jar`** wipes manually-placed jars on every boot, hostile to manual-only plugins (LoginSecurity, MarriageMaster, etc). + +## Acquisition order — proposed + +1. **GitHub Releases** (primary) +2. **Hangar** (PaperMC official) +3. **Modrinth** +4. **Spiget / SpigotMC** +5. **Manual jar** (last resort, premium/dead) + +### Why GitHub first + +- Source-truth: jar built from tag, signed commit, reproducible. +- License visible — repo `LICENSE` file. FOSS audit trivial. +- Stable URL pattern: `github.com///releases/download//.jar`. +- API: `api.github.com/repos///releases/latest` — JSON, version + asset URLs + checksums. +- No platform lock-in (Modrinth/Hangar can delist; GH source survives). +- Most Bukkit plugins ARE on GitHub — Modrinth/Hangar often just mirror. + +## Design + +### `plugins.yml` (manifest, committed) + +```yaml +plugins: + - name: LuckPerms + sources: + - github: { owner: LuckPerms, repo: LuckPerms, asset_pattern: "LuckPerms-Bukkit-*.jar" } + - modrinth: luckperms + pin: latest # or "5.5.20" or sha256:abc... + + - name: ProtocolLib + sources: + - github: { owner: dmulloy2, repo: ProtocolLib, asset_pattern: "ProtocolLib.jar" } + - spiget: 1997 + + - name: Vault + sources: + - github: { owner: MilkBowl, repo: Vault, asset_pattern: "Vault.jar" } + + - name: WorldEdit + sources: + - github: { owner: EngineHub, repo: WorldEdit, asset_pattern: "worldedit-bukkit-*.jar" } + - hangar: { author: EngineHub, project: WorldEdit } + - modrinth: worldedit + channel: beta + + - name: LandClaimPlugin + sources: + - modrinth: landclaimplugin + + - name: LoginSecurity + sources: + - manual: ./manual-jars/LoginSecurity-3.3.1.jar + license: GPL-3.0 + upstream_url: https://www.spigotmc.org/resources/loginsecurity.19362/ +``` + +### `plugins.lock` (generated, committed) + +``` +LuckPerms-Bukkit-5.5.20.jar sha256:abc... github:LuckPerms/LuckPerms@v5.5.20 +ProtocolLib.jar sha256:def... github:dmulloy2/ProtocolLib@5.4.0 +... +``` + +### `scripts/fetch-plugins.sh` (resolver) + +Runs **before** `docker compose up`. Pseudo: + +```bash +for plugin in plugins.yml; do + for src in plugin.sources; do # fallback chain — first hit wins + case src.type in + github) asset=$(gh-api releases/latest); curl -L -o $asset ;; + hangar) curl hangar.papermc.io/api/v1/projects/... ;; + modrinth) curl api.modrinth.com/v2/project/$slug/version ;; + spiget) curl api.spiget.org/v2/resources/$id/download ;; + manual) cp $path ;; + esac + [ $? -eq 0 ] && break + done + sha256sum $jar >> plugins.lock +done +``` + +Output: `plugins/*.jar` directory ready to bind-mount, plus `plugins.lock` for diff/audit. + +### Compose changes + +```yaml +volumes: + - /opt/docker/minecraft:/data +environment: + REMOVE_OLD_MODS: "false" # plugins/ pre-populated, don't wipe + # delete: MODRINTH_PROJECTS, SPIGET_RESOURCES, MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE +``` + +itzg image becomes pure runtime. Plugin acquisition is a separate, testable, reproducible build step. + +## Phased rollout + +### Phase 1 — pin everything (1 hour) + +Keep itzg env-driven. Replace `slug` with `slug:VERSION_ID` in `MODRINTH_PROJECTS`. Use `id:VERSION` in `SPIGET_RESOURCES`. No more `latest` drift. + +**Acceptance:** `docker compose up -d` produces identical plugin set on any host, any day. + +### Phase 2 — fetch script + manifest (1 day) + +- Write `plugins.yml` w/ all current plugins + sources. +- Write `scripts/fetch-plugins.sh` (bash, jq, curl, gh CLI). +- Write `plugins.lock` first run, commit it. +- Strip `MODRINTH_PROJECTS`/`SPIGET_RESOURCES` from compose; `REMOVE_OLD_MODS: false`. +- Document new deploy: `./scripts/fetch-plugins.sh && docker compose up -d`. + +**Acceptance:** plugins/ populated from GH-first, lock committed, deploy reproducible. + +### Phase 3 — CI automation (1 day) + +- GH Action daily: `fetch-plugins.sh --check-updates` → open PR per update, body has changelog link. +- GH Action per-PR: license audit (`/repos/{owner}/{repo}/license` → SPDX id → `LICENSES.md`). +- Renovate-style auto-merge for patch updates (config-gated). + +**Acceptance:** plugin updates land via PR, license audit in CI, no manual fetches. + +## Tooling to evaluate first + +| Tool | Status | Verdict | +|------|--------|---------| +| `mcpkg` | exists, immature | reuse if active | +| `packwiz` | mod-focused, Modrinth/Curse | adapt? | +| `paper-plugin-manager` | Hangar client | use as Hangar source | +| Custom bash + jq + gh + curl | trivial to build | likely fastest | + +Probably 200 lines of bash beats adopting an unmaintained tool. + +## Side benefits + +- **License audit** — generated `LICENSES.md` proves the stack is FOSS. +- **Pre-flight** — `fetch-plugins.sh --check` validates manifest in CI before merge, no boot-time surprise. +- **Offline deploy** — pre-baked `plugins/` dir + tarball = air-gap deploy possible. +- **Forks** — easy to swap `LandClaimPlugin` upstream → your own fork by changing one line in `plugins.yml`. + +## Open questions + +- License whitelist policy: GPL-3, MIT, Apache-2 OK? AGPL? Proprietary? +- Update cadence: daily auto-PR, weekly, manual? +- Pin granularity: per-plugin tag, sha256 hash, or commit SHA? +- Failure mode if a source delists a pinned version: pin migration script? +- Manual-jar storage: in-repo `manual-jars/` (license risk) or separate private repo? + +## Status + +- 2026-04-27 — roadmap drafted post-deploy painshare. Not started. +- 2026-04-28 — Phase 1 (pin versions) still pending. `REMOVE_OLD_MODS` bug discovered: itzg disables it when `PLUGINS` env set, so manual jars are safe. Phase 2 design finalized here. No code yet. diff --git a/docs/migrations/lands-to-landclaim.md b/docs/migrations/lands-to-landclaim.md new file mode 100644 index 0000000..f65993f --- /dev/null +++ b/docs/migrations/lands-to-landclaim.md @@ -0,0 +1,544 @@ +# Migration Plan: Lands v7.21.3 → LandClaimPlugin + +**Target:** LandClaimPlugin (Modrinth, MIT, by AyoSynk) +**Date Planned:** [TBD - Player Agreement] +**Server:** Purpur 1.21.10 on nullstone (Debian 13) +**World:** Preserved intact. Only plugin data wiped. +**Grace Period:** 48 hours after migration +**Rollback Window:** 7 days (Lands DB archived) + +--- + +## 0. Current State + +### Lands v7.21.3 on Nullstone +- **JAR:** `Lands-7.21.3.jar` (2.9MB, paid plugin from IncrediblePlugins) +- **Database:** SQLite `database_v2.db` (168KB) +- **Cached players:** 43 +- **Active lands (from event log):** + - `K'land` / `JellyLand` — block placements, deleted 2025-05-30 for INACTIVITY + - `Portal` — bank deposits (500 → 1000 → 2000), deleted 2025-09-11 for INACTIVITY + - `HighCaillou` — deposit 10 + - `HIVE` — deposit 10,000 + - `Headquarters` — recurring deposits (20 → 40 per cycle) + - `batcave` / `batcave1` — recurring deposits (10 per cycle) + - `MyLawn` — deposits + - `Jessie` — deleted 2025-12-09 + - `TheArchitect` — deposits + +- **Economy:** Lands Bank is active — players deposit money into land banks. Economy integration via Vault/EssentialsX. +- **Nations:** Config present but `enabled: false` — never used. +- **Features in use:** Basic land claiming, bank deposits, roles, events logging. No nations, no wars. +- **Dependencies:** Vault (economy bridge), EssentialsX (economy backend) +- **Data to lose:** All claim boundaries, land bank balances, member lists, role assignments for each land. + +### Target: LandClaimPlugin +- **License:** MIT (free, open-source) +- **Compatibility:** 1.21.x — Paper, Purpur, Spigot confirmed +- **Claim Model:** Chunk-based (16x16), single claim profile per player +- **Permissions:** Tiered flag system (Owner → Member → Public) +- **Features:** In-game map, warps, alliances, auto-claim while walking, PvP blocking +- **No:** Nations, wars, web portal, land bank — these are Lands-specific features we don't use anyway. + +--- + +## 1. Pre-Migration (Phase 0 — 48h before) + +### 1.1 Backup Everything +```bash +ssh user@192.168.0.100 + +# Create backup directory +mkdir -p /opt/backups/lands-migration-$(date +%Y%m%d) + +# Full server backup (running state — consistent snapshot via docker exec for world) +tar czf /opt/backups/lands-migration-$(date +%Y%m%d)/minecraft-plugins.tar.gz \ + -C /opt/docker/minecraft plugins/ + +# Lands-specific backup (the important part for rollback) +tar czf /opt/backups/lands-migration-$(date +%Y%m%d)/lands-complete.tar.gz \ + -C /opt/docker/minecraft/plugins \ + Lands Lands-7.21.3.jar + +# Also grab the SQLite DB separately (small, critical) +cp /opt/docker/minecraft/plugins/Lands/Data/database_v2.db \ + /opt/backups/lands-migration-$(date +%Y%m%d)/ + +# Verify +ls -lh /opt/backups/lands-migration-$(date +%Y%m%d)/ +``` + +### 1.2 Player Communication +**Discord announcement:** +``` +📢 LAND SYSTEM CHANGE — Vote Required + +We're replacing Lands (paid, complex, heavy) with LandClaimPlugin (free, simple, chunk-based). + +What changes: +✅ New claiming system (/claim instead of /lands GUI) +✅ Chunk-based (16x16 blocks) — easier to see your borders +✅ Free claims, no economy cost during grace period +✅ Same world, same builds — only plugin data wiped +⚠️ ALL EXISTING CLAIMS WILL BE RESET +⚠️ Land bank balances will NOT carry over +🎁 48-hour grace period — free unlimited re-claiming + +Timeline: +- Vote opens now (48h to respond) +- If approved, migration happens on [DATE] +- ~5 min downtime during swap +- 48h grace period to rebuild your claims + +Land bank balances note: Current Lands bank deposits will NOT transfer. +The new system doesn't use land banks. This economy cost is going away. + +Reply with 👍 to approve or 👎 to reject. Questions below. +``` + +**In-game MOTD (during announcement):** +``` +§6⚠ Land system upgrade vote in Discord! §fReply in #announcements. +§7Migration may reset all claims. 48h grace period to re-claim. +``` + +### 1.3 Download New Plugin +```bash +# Get the compatible version for 1.21.10 / Purpur +# Check: https://modrinth.com/plugin/landclaimplugin/versions +# Need a build that supports 1.21.10 (currently latest covers 1.21.x) + +# Download (replace with actual URL when ready) +wget -O /tmp/LandClaimPlugin.jar "https://cdn.modrinth.com/data/[...]/LandClaimPlugin-[version].jar" + +# Quick validation +file /tmp/LandClaimPlugin.jar +# Should report: Java archive data (JAR) +``` + +--- + +## 2. Migration Execution (Phase 1 — Server Downtime) + +### 2.1 Stop Server +```bash +ssh user@192.168.0.100 +cd /opt/docker/minecraft + +# Stop the container +docker compose down +# Wait for clean shutdown (saves world, closes DBs) +# Verify: docker ps | grep minecraft-mc (should be empty) +``` + +### 2.2 Remove Lands Completely +```bash +cd /opt/docker/minecraft/plugins + +# Remove JAR +rm -f Lands-7.21.3.jar + +# Remove entire data directory (claims, bank, roles, language, configs, logs) +rm -rf Lands/ + +# Verify it's gone +ls -la Lands* Lands/ +# Should return: No such file or directory +``` + +### 2.3 Install LandClaimPlugin +```bash +# Move downloaded JAR to plugins +mv /tmp/LandClaimPlugin.jar /opt/docker/minecraft/plugins/LandClaimPlugin.jar +chown user:user /opt/docker/minecraft/plugins/LandClaimPlugin.jar +chmod 644 /opt/docker/minecraft/plugins/LandClaimPlugin.jar + +# Verify +ls -la /opt/docker/minecraft/plugins/LandClaimPlugin.jar +``` + +### 2.4 Start Server (Config Generation Boot) +```bash +cd /opt/docker/minecraft +docker compose up -d + +# Watch for plugin load +docker logs -f minecraft-mc + +# Look for LandClaimPlugin startup messages +# Let it run for 2-3 minutes to generate default config +# It will create /opt/docker/minecraft/plugins/LandClaimPlugin/ with config.yml + data/ +# Wait until you see: "Server running. /help for help. /stop to quit." or similar + +# Stop again for config editing +docker compose down +``` + +### 2.5 Configure LandClaimPlugin +```bash +# Edit the generated config +nano /opt/docker/minecraft/plugins/LandClaimPlugin/config.yml +``` + +**Critical config changes recommended:** +```yaml +# --- CLAIM SETTINGS --- +# Start generous to reduce player friction +claims: + max-per-player: 50 # High limit — reduce later (default might be 5-10) + max-size-chunks: 125 # Per-claim size cap (reasonable = ~2000x2000 area) + auto-claim-enabled: true # Claim chunks as you walk through them + require-adjacent: false # Allow scattered claims (like Lands did) + diagonal-enabled: true + +# --- ECONOMY --- +# DISABLE during grace period +economy: + enabled: false # Free claims for now + cost-per-chunk: 0 # 0 = no charge + +# --- PROTECTION FLAGS --- +protection: + block-break: OWNER # Only claim owner can break + block-place: OWNER + entity-damage: OWNER + animal-kill: MEMBER # Allow members to hunt/kill + item-pickup: OWNER + item-drop: OWNER + door-toggle: PUBLIC # Friendly to visitors + container-access: MEMBER # Chests restricted to members + redstone-use: PUBLIC # Allow public redstone (doors, farms) + vehicle-use: MEMBER + pvp-inside-claim: false # No PvP inside claimed land (safe zones) + tnt: false # Block TNT + creeper-explosion: true # Keep creeper grief (it's survival, part of the game) + piston-cross-boundary: false # Prevent pistons pushing across claim edges + +# --- VISUAL HELPERS --- +visuals: + claim-borders: true # Particle borders on join/claim + border-particle: flame # Or barrier, end_rod + in-game-map: true # Show claim overlay + +# --- WARPS --- +warps: + enabled: true + per-claim-max: 5 # Reasonable limit per claim +``` + +### 2.6 Clean Up Plugin Dependencies +```bash +# LuckPerms — remove old Lands permissions +# Open LuckPerms web editor or use RCON +# Remove all perms matching: lands.* +docker exec minecraft-mc luckperms editor +# In the web editor, search "lands" and delete matching nodes +# Then add new perms if needed: +# /lp group default permission set "landclaim.claim.max." 50 + +# TAB plugin — check for Lands placeholders +grep -r "lands" /opt/docker/minecraft/plugins/TAB/ 2>/dev/null +# If found, remove/replace with LandClaim equivalents + +# DiscordSRV — no direct LandClaim integration exists +# Console channel will still log /claim commands via the console +# Later: set up n8n webhook for automated claim notifications +``` + +--- + +## 3. Go Live (Phase 2 — Grace Period Begins) + +### 3.1 Start Server +```bash +ssh user@192.168.0.100 +cd /opt/docker/minecraft +docker compose up -d + +# Verify +docker logs minecraft-mc | tail -30 +# Confirm: +# - World loads (all 3 dimensions) +# - LandClaimPlugin enabled without errors +# - EssentialsX, DiscordSRV, all plugins load cleanly +# - RCON on port 25575 +# - Port 25565 accepting connections +``` + +### 3.2 Update MOTD +```bash +# In docker-compose.yml, update the MOTD line: +# MOTD: "§a✓ New land system live! §e/claim§f to protect. 48h grace period." +docker compose restart +``` + +### 3.3 Discord & In-Game Announcement +``` +DISCORD: +🟢 Land system is LIVE! Use /claim to protect your builds. +📍 Your old Lands claims are gone — time to rebuild! +⏰ 48-hour grace period: free, unlimited claiming. +📖 How to claim: + 1. Stand in the chunk you want to claim + 2. Run /claim add + 3. Walk and auto-claim is enabled + 4. View your claims: /claim map +Questions? Ask in #support. +``` + +```bash +# In-game broadcast +ssh user@192.168.0.100 "docker exec minecraft-mc rcon-cli say '§a✓ New land system live! Use /claim to protect. 48h free claiming!'" +``` + +--- + +## 4. Post-Migration Monitoring (Phase 3) + +| Time | Action | +|------|--------| +| T+1h | Check logs for LandClaimPlugin errors. Verify claim borders work. Test /claim add in-game. | +| T+6h | Monitor Discord for player issues. Check if any players report missing builds (grief while unclaimed). | +| T+12h | Verify claim data directory is growing (new claims being made). Run `/claim list` to see top claimers. | +| T+24h | Backup new LandClaimPlugin data directory. Check for any claim conflicts between players. | +| T+48h | Grace period ends. Optionally enable economy (`economy.enabled: true`, `cost-per-chunk: 10`). Announce enforcement start. | +| T+7d | If no issues, consider deleting the Lands backup or moving to cold storage. | + +--- + +## 5. Risk Matrix + +| Risk | Likelihood | Impact | Mitigation | +|------|-----------|--------|------------| +| LandClaimPlugin incompatible with Purpur 1.21.10 | Low | High | Test on dev clone first. Modrinth shows Purpur 1.21.x supported. | +| Players lose critical builds during grace period | Medium | High | Admins patrol during first 6h. /claim add for abandoned bases. Consider temporary WorldGuard protection on major builds. | +| Land bank money loss causes player anger | Medium | Medium | Document clearly that bank balances don't carry over. This is a one-time wipe. Future economy-free system means no more deposits. | +| Auto-claim causes accidental claims | Low | Low | Players can `/claim remove` instantly. Admin can fix abuse. | +| Claim boundary disputes | Medium | Low | Admin tool `/claim admin unclaim `, `/claim admin transfer` for dispute resolution. | +| TAB/LuckPerms broken by old Lands hooks | Low | Low | These just display empty placeholders. Not server-breaking. Fix in TAB config + LuckPerms web editor. | + +--- + +## 6. Rollback Plan + +If LandClaimPlugin causes critical issues or players revolt: + +```bash +# 1. Stop server +docker compose -f /opt/docker/minecraft/docker-compose.yml down + +# 2. Remove new plugin +rm -f /opt/docker/minecraft/plugins/LandClaimPlugin.jar +rm -rf /opt/docker/minecraft/plugins/LandClaimPlugin/ + +# 3. Restore Lands from backup +cd /opt/docker/minecraft/plugins +tar xzf /opt/backups/lands-migration-*/lands-complete.tar.gz + +# 4. Verify Lands files restored +ls -la Lands-7.21.3.jar Lands/ + +# 5. Start server +docker compose -f /opt/docker/minecraft/docker-compose.yml up -d + +# 6. Verify +rcon-cli say "§cLand system reverted to Lands. Claims restored." +``` + +--- + +## 7. Suggestions / Future Improvements + +1. **Claim decay for inactive players:** If someone hasn't logged on in 60+ days, auto-unclaim their land. Prevents dead claims on buildable land. Can be automated with a cron + RCON script. + +2. **Claim dashboard:** Bash script that RCONs `/claim list`, formats it, and posts to admin Discord channel weekly. + +3. **Bluemap/Dynmap integration:** If LandClaimPlugin supports layer overlays on a web map, players can see claims from a browser, not just in-game. + +4. **Economy-free by design:** LandClaimPlugin keeps claiming free and simple. Consider keeping it that way. The economy cost was a friction point for new players who wanted to build but had no money yet. + +5. **Admin mediation tools:** The plugin has admin commands (`/claim admin`). Make sure moderators know: + - `/claim list` — view all claims + - `/claim admin unclaim ` — remove a player's claims + - `/claim admin transfer ` — move a claim between players + +6. **Backup script update:** Edit `/opt/docker/backup.sh` to include LandClaimPlugin in the daily backup (currently only backs up Minecraft world + configs, not plugin-specific data). + +--- + +## 8. Files in This Repo + +| Path | Description | +|------|-------------| +| `config/` | All server config files (pulled live from nullstone) | +| `config/plugins/Lands-config.yml` | Current Lands config — reference before removal | +| `config/plugins/Lands-*.yml` | All Lands sub-configs — roles, nations, wars, events, levels | +| `docker-compose.yml` | Live container definition from nullstone | +| `README.md` | Server documentation, plugin inventory, ops | +| `docs/migrations/lands-to-landclaim.md` | This migration plan | +| `scripts/` | Migration + operational scripts (below) | + +--- + +## 9. Migration Helper Script + +Place in `scripts/migrate-lands-to-landclaim.sh`: + +```bash +#!/usr/bin/env bash +# migrate-lands-to-landclaim.sh +# Run on nullstone as root. Performs the full Lands → LandClaimPlugin migration. +set -euo pipefail + +BACKUP_DIR="/opt/backups/lands-migration-$(date +%Y%m%d_%H%M%S)" +MC_DIR="/opt/docker/minecraft" +PLUGIN_DIR="$MC_DIR/plugins" + +log() { echo "[$(date '+%H:%M:%S')] $*"; } + +# --- Pre-checks --- +log "Checking prerequisites..." + +# Is server running? +if docker ps --format '{{.Names}}' | grep -q '^minecraft-mc$'; then + log "Server is running. Stop it first: cd $MC_DIR && docker compose down" + exit 1 +fi + +# Backup directory +mkdir -p "$BACKUP_DIR" +log "Backup directory: $BACKUP_DIR" + +# --- Step 1: Backup Lands --- +log "Backing up Lands plugin..." +if [ -f "$PLUGIN_DIR/Lands-7.21.3.jar" ]; then + cp "$PLUGIN_DIR/Lands-7.21.3.jar" "$BACKUP_DIR/" + cp -r "$PLUGIN_DIR/Lands" "$BACKUP_DIR/" + log "Lands JAR + data backed up" +else + log "WARNING: Lands-7.21.3.jar not found at $PLUGIN_DIR" + log "Plugin may already be removed or installed at different version" + exit 1 +fi + +# --- Step 2: Remove Lands --- +log "Removing Lands plugin..." +rm -f "$PLUGIN_DIR/Lands-7.21.3.jar" +rm -rf "$PLUGIN_DIR/Lands/" +log "Lands removed" + +# --- Step 3: Install LandClaimPlugin --- +log "Installing LandClaimPlugin..." +LCP_JAR="$PLUGIN_DIR/LandClaimPlugin.jar" + +# Check if JAR already exists +if [ -f "$LCP_JAR" ]; then + log "LandClaimPlugin.jar already exists at $LCP_JAR" +else + log "ERROR: LandClaimPlugin.jar not found at $LCP_JAR" + log "Download it first: wget -O $LCP_JAR " + log "Rolling back..." + cp "$BACKUP_DIR/Lands-7.21.3.jar" "$PLUGIN_DIR/" + cp -r "$BACKUP_DIR/Lands" "$PLUGIN_DIR/" + exit 1 +fi + +chown user:user "$LCP_JAR" +log "LandClaimPlugin installed" + +# --- Step 4: Start server for config generation --- +log "Starting server to generate config..." +cd "$MC_DIR" +docker compose up -d + +log "Waiting 90 seconds for config generation..." +sleep 90 + +# Check if the plugin loaded +if docker logs minecraft-mc 2>&1 | grep -qi "landclaim"; then + log "LandClaimPlugin loaded successfully" +else + log "WARNING: No LandClaimPlugin messages in logs" + docker logs minecraft-mc | tail -20 +fi + +# --- Step 5: Stop for config edit --- +log "Stopping server..." +docker compose down +log "Server stopped. Now edit:" +log " $PLUGIN_DIR/LandClaimPlugin/config.yml" +log "" +log "Recommended changes:" +log " - claims.max-per-player: 50" +log " - claims.auto-claim-enabled: true" +log " - economy.enabled: false (for grace period)" +log " - visuals.claim-borders: true" +log "" +log "When done, start: cd $MC_DIR && docker compose up -d" +log "Grace period begins. Announce to players." +log "" +log "=== Migration complete ===" +``` + +--- + +*Version: 1.0* +*Author: veilor.uk Infrastructure* +*Created: 2026-04-24* + +--- + +## 10. Execution Log — Completed 2026-04-24 01:21 BST + +### What Actually Happened + +| Step | Result | Details | +|------|--------|---------| +| Backup | ✅ PASSED | Full plugins backup: 446MB. Lands-specific: 2.6MB. SQLite DB: 168KB | +| Server stop | ✅ PASSED | Clean shutdown via `docker compose down`. World saved. | +| Remove Lands | ✅ PASSED | `Lands-7.21.3.jar` deleted. `plugins/Lands/` directory removed entirely. SQLite DB backed up before removal. | +| Download LandClaimPlugin | ✅ PASSED | v2.0.4 from Modrinth (supports Paper/Purpur 1.21.4–1.21.11). SHA256: `48562c17ec59c35eb7c3529b84763d026679d0782ffd2dc7dc53169af41be688` | +| Install plugin | ✅ PASSED | JAR placed at `plugins/LandClaimPlugin.jar` (4.2MB). Ownership: `user:user`. | +| First boot (config gen) | ✅ PASSED | Plugin loaded cleanly. Remapper took 1,459ms. SQLite DB created at `plugins/LandClaimPlugin/PlayerData/database.db` (77KB). Config + locales + menus generated. | +| Custom config applied | ✅ PASSED | Config replaced via `docker cp`. Key changes verified: `chunkClaimLimit: 50`, `autoClaimDefault: true`, `blockWorld: []`, `autoUnclaimDefault: true`. All map integrations disabled. | +| Restart | ✅ PASSED | Server restarted. LandClaimPlugin 2.0.4 loaded. 0 claims (expected). Status: healthy. | +| Lands verification | ✅ PASSED | Zero `Lands*` files remain in `/data/plugins/`. No stale data anywhere. | +| Lands event log captured | ✅ | From backup: 43 cached players. Active land names before wipe: K'land, JellyLand (deleted), Portal (deleted), HighCaillou, HIVE, Headquarters, batcave, MyLawn, TheArchitect. Nations: disabled. Wars: none. | + +### Server State Post-Migration + +- **Running:** ✅ Health check passing +- **Plugins loaded:** 24 (Lands removed, LandClaimPlugin 2.0.4 added — net 1 swap) +- **Claims:** 0 (clean slate) +- **World:** ✅ Preserved intact (all 3 dimensions) +- **Land bank balances:** WIPE COMPLETE — not transferable to new system +- **Backup location:** `/opt/backups/lands-migration-20260424/` + - `all-plugins.tar.gz` (446MB) — full plugin archive + - `lands-complete.tar.gz` (2.6MB) — Lands JAR + all data + - `database_v2.db` (168KB) — raw SQLite for emergency restore + - `config.yml` — pre-migration Lands config + +### Post-Migration TODO + +1. [ ] Announce migration complete in Discord + in-game MOTD +2. [ ] Monitor logs for first 2h — watch for claim-related errors +3. [ ] At 48h: announce grace period ending, optionally enable economy +4. [ ] At 7d: delete Lands backup or move to cold storage +5. [ ] Update `/opt/docker/backup.sh` to include LandClaimPlugin data in daily backups + +### Notes During Execution + +- Lands had accumulated ~43 players in cache across 9 named lands +- Two lands were deleted for INACTIVITY (JellyLand 2025-05-30, Portal 2025-09-11) — confirms the cleanup system was working +- Land bank deposits ranged from $10 to $10,000 (HIVE). These balances are NOT recoverable in the new system — it doesn't use land banks at all. This is a feature, not a loss: the new system is simpler and economy-free by default. +- LandClaimPlugin had two startup warnings: + 1. `NullPointerException: serverConnectionMethod is null` — minor, plugin continues loading + 2. `You are running an unsupported server version!` — cosmetic, plugin works fine on Purpur 1.21.10 +- Both warnings are non-fatal and don't affect functionality. + +--- + +*Migration executed: 2026-04-24 01:21 BST* +*Migration duration: ~10 minutes (stop → swap → restart)* +*Server: nullstone (192.168.0.100)* +*Operator: veilor.uk* diff --git a/docs/plugins/README.md b/docs/plugins/README.md new file mode 100644 index 0000000..7d46911 --- /dev/null +++ b/docs/plugins/README.md @@ -0,0 +1,182 @@ +# racked.ru — Minecraft server + +> *experience the game the way it should have always been* + +Self-hosted Purpur Minecraft server powering [racked.ru](https://racked.ru). Microsoft-free, privacy-first, fully open source. Deployed via Docker on Debian (`nullstone`, 192.168.0.100), public at `mc.racked.ru:25565`. + +Companion projects: +- **server-client-launcher** — one-click connect, no manual modpack juggling. (Separate repo.) +- **client** — performance-optimized client (separate repo). + +This repo is the **server** half. Configs, plugin manifest, deploy scripts. No plugin jars committed — acquired at boot from FOSS sources (see [PLUGINS.md](docs/PLUGINS.md)). + +> *all software should be free and open-source* — see [MISSION.md](MISSION.md), [THANKS.md](THANKS.md) + +## Stack + +| Layer | Choice | Why | +|-------|--------|-----| +| Server jar | Purpur (latest stable build) | Paper fork w/ extra config knobs | +| Container | `itzg/minecraft-server:latest` | Auto-DL of jar + plugins via env | +| Host OS | Debian 13 | nullstone server | +| Network | Docker `proxy` external network | Shared w/ Traefik for future TLS reverse-proxy | +| Backup | tar.gz daily 02:00 via host cron | 7-day retention to `/opt/backups/` | + +## Quick start + +```bash +git clone minecraft-server +cd minecraft-server +mkdir -p /opt/docker/minecraft +cp -r config/* /opt/docker/minecraft/ # seed configs +cp docker-compose.yml /opt/docker/minecraft/ +chmod -R 777 /opt/docker/minecraft # see docs/PERMISSIONS.md (userns-remap quirk) +cd /opt/docker/minecraft && docker compose up -d +docker logs -f minecraft-mc # watch jar+plugin DL, world gen +``` + +First boot: ~3-5 min (Purpur jar DL, ~14 plugin DL, world gen). + +## Docs + +- [DEPLOY.md](docs/DEPLOY.md) — fresh deploy + migration from existing server +- [PLUGINS.md](docs/PLUGINS.md) — full plugin list, sources, slugs/IDs +- [PERMISSIONS.md](docs/PERMISSIONS.md) — userns-remap + chmod quirk +- [BACKUP.md](docs/BACKUP.md) — backup script + restore procedure +- [ROADMAP.md](docs/ROADMAP.md) — plugin acquisition overhaul: GH-first, lockfile, CI auto-update +- [migrations/lands-to-landclaim.md](docs/migrations/lands-to-landclaim.md) — Lands (paid) → LandClaimPlugin (FOSS) migration + +## Server config highlights + +| Setting | Value | +|---------|-------| +| Difficulty | hard | +| Gamemode | survival | +| Max players | 69 | +| View distance | 20 chunks | +| Simulation distance | 10 chunks | +| Online mode | false (cracked clients allowed) | +| Spawn protection | 0 | +| RAM | 8G min, 16G max (18G hard cap) | +| RCON | enabled, port 25575, password `*redacted*` | + +Full settings in [`config/server.properties`](config/server.properties). + +## Network + +| Port | Proto | Use | +|------|-------|-----| +| 25565 | TCP | Minecraft client | +| 25575 | TCP | RCON (LAN-trusted only) | + +LAN: `192.168.0.100:25565`. Tailscale: `100.64.0.2:25565`. Future public: `mc.s8n.ru` via Traefik (label commented out). + +## Plugins (15 active) + +Auto-pulled from Modrinth at boot: +LuckPerms, PlaceholderAPI, EssentialsX, WorldEdit, Simple Voice Chat, MiniMOTD, SkinsRestorer, CoreProtect, GrimAC, spark, DiscordSRV, **LandClaimPlugin** (replaces paid Lands), TAB. + +Auto-pulled from Spigot: +ProtocolLib (ID 1997), Vault (ID 34315). + +Manual install (no Modrinth/Spigot auto-source): +LoginSecurity, ComfyWhitelist, MarriageMaster, PhantomSMP, HelpCommand, ProAntiTab. + +Premium (skipped, FOSS replacement preferred): +~~Lands~~ (replaced by LandClaimPlugin), CosmicGuard. + +See [docs/PLUGINS.md](docs/PLUGINS.md) for source URLs. + +## Roadmap / TODO + +Living checklist. Priority tags: **[P0]** blocker / security, **[P1]** vision-aligned swap, **[P2]** improvement, **[P3]** nice-to-have. + +### Infrastructure + +- [x] Fix `loader=purpur` boot loop — workaround: `TYPE=CUSTOM` + direct Purpur jar URL + `MODRINTH_LOADER=paper`. Permanent fix still pending Phase 2. +- [x] Pin Purpur version (1.21.10) — no `LATEST` drift +- [x] Set MOTD to racked.ru tagline +- [ ] **[P1]** Public DNS: `mc.racked.ru` → TCPShield proxy (DDoS protection; do NOT point A record directly to home IP) +- [ ] **[P1]** Traefik TLS termination for RCON web UI (LAN-only first) +- [ ] **[P2]** Switch bind mount → named volume to kill `chmod 777` userns workaround +- [ ] **[P2]** `dns:` block in compose pointing 1.1.1.1 + LAN router (Tailscale ate `/etc/resolv.conf` precedent) +- [ ] **[P2]** Bluemap or Squaremap on `map.racked.ru` (browser map via Traefik) +- [ ] **[P2]** Prometheus exporter + Grafana dashboard (TPS, MSPT, RAM) +- [ ] **[P3]** Test instance on port 25566 sharing world snapshot — try plugin upgrades safely + +### Plugin acquisition (per [ROADMAP.md](docs/ROADMAP.md)) + +- [ ] **[P0]** Phase 1: pin every plugin to specific version-id (no `latest` in env) +- [ ] **[P1]** Phase 2: `plugins.yml` manifest + `fetch-plugins.sh` (GH-first, Hangar/Modrinth/Spiget fallback) +- [ ] **[P1]** Phase 2: `plugins.lock` w/ sha256 per jar, committed +- [ ] **[P2]** Phase 3: GH Action — daily upstream check, auto-PR per update, license audit → `LICENSES.md` + +### Plugin swaps (per [PLUGIN_ALTERNATIVES.md](docs/PLUGIN_ALTERNATIVES.md)) + +High priority — security, FOSS alignment, license clarity: +- [x] LoginSecurity → **AuthMe Reloaded** — done. Void `auth_limbo` END dimension, sealed barrier cell at spawn, `teleportUnAuthedToSpawn: true`, `hideInventory: true`, post-login `mvtp %p world` hook. Base-coord leak fixed. +- [x] ProAntiTab — **Keep** (verified: RayzsYT, GPL-2.0-or-later, FOSS, free, GH). Earlier "likely premium" guess was wrong. +- [x] Claim plugin → **Homestead** (Apache-2.0, FOSS, 75+ flags, sub-areas, BlueMap integration, free claiming) +- [x] WorldEdit → **FastAsyncWorldEdit (FAWE)** — done. v2.15.0, GPL-3.0, drop-in swap, CoreProtect integration auto-detected. +- [x] Vault → **VaultUnlocked** — done. TheNewEconomy fork, GH source, modrinth slug `vaultunlocked`, drop-in Vault API replacement. +- [ ] **[P3]** (deferred — later project) Add Matrix bridge alongside DiscordSRV — use existing Tuwunel homeserver (txt.s8n.ru) as FOSS comm channel + +Medium priority — license/dependency cleanup: +- [x] CoreProtect-CE — **Keep** (acknowledged license exception; reliability > purity per operator). Revisit if/when Prism reaches feature parity on sign/container/entity rollback at scale. +- [ ] **[P2]** Verify license: TAB + +Low priority — consolidation to native: +- [ ] **[P2]** Verify ComfyWhitelist license — keep if FOSS (provides name-based hot-reload whitelist w/o Mojang API; native `/whitelist` is UUID-based and unsafe on offline-mode). Swap to FOSS name-based alt if license unclear. +- [ ] **[P3]** Drop HelpCommand → native `/help` + `commands.yml` +- [ ] **[P3]** Drop PhantomSMP → native paper config + vanilla datapack +- [ ] **[P3]** Audit MarriageMaster usage — drop or fork under FOSS license + +Phase 4 — long-term refactor: +- [ ] **[P3]** EssentialsX split into modular FOSS plugins (HuskHomes for teleport, etc) +- [ ] **[P3]** Evaluate dropping ProtocolLib in favor of PacketEvents-only stack +- [ ] **[P3]** PlaceholderAPI → MiniPlaceholders (Adventure-native) when ecosystem catches up +- [ ] **[P3]** Self-hosted skin server (replace Mojang/MineSkin dependency) + +### Documentation + +- [x] Per-plugin doc files under `docs/plugins/.md` — all 18 active plugins documented (license, source, version, notes) +- [ ] **[P1]** `AGREEMENTS.md` — high-level overview of any custom dev-rights deals (no NDAs broken) +- [ ] **[P1]** Cross-link launcher repo in README + MISSION when public +- [ ] **[P2]** Cross-link client repo in README + MISSION when public +- [ ] **[P2]** `docs/SKIN_HOSTING.md` — once skin server self-hosted +- [ ] **[P3]** mkdocs site auto-built from `docs/` for racked.ru + +### Community / process + +- [ ] **[P1]** Publish to GitHub under racked-rust org (or chosen org name) +- [ ] **[P1]** CONTRIBUTING.md — describe FOSS-only plugin policy (per MISSION.md) +- [ ] **[P2]** Issue templates: plugin-suggestion, license-concern, bug, feature +- [ ] **[P2]** PR template — license check checkbox, vision-alignment checkbox +- [ ] **[P3]** Discussion category for plugin proposals + +### Backlog (deferred, low priority) + +- [ ] **[P3-deferred]** Self-host LuckPerms web editor + bytebin on `perms.racked.ru` — eliminates Cloudflare dep that bit us during a CF outage (web editor failed; in-game `/lp` commands still worked). Both components are MIT FOSS (`github.com/LuckPerms/web`, `github.com/lucko/bytebin`). Workaround for now: use `/lp` commands only, skip GUI entirely. Revisit when other Phase 4 work is done — small QoL win, big setup cost. + +### Done + +- [x] Backup old server → `_archive/minecraft-old-2026-04-27.tar.gz` +- [x] Migrate Lands (paid) → LandClaimPlugin (FOSS) — see [migrations/lands-to-landclaim.md](docs/migrations/lands-to-landclaim.md) +- [x] Drop LitePlaytimeRewards (upstream dead since 2021) +- [x] Drop CosmicGuard (premium, can't audit) — GrimAC covers anti-cheat +- [x] Document MISSION + THANKS + plugin policy +- [x] Plugin alternatives audit — see [PLUGIN_ALTERNATIVES.md](docs/PLUGIN_ALTERNATIVES.md) +- [x] Drop DiscordSRV (Discord = mission-misaligned proprietary platform) +- [x] Migrate old world (4.2G overworld + nether + end) from archive to new server +- [x] Restore selective plugin configs from old (LuckPerms perms+groups, CoreProtect history, EssentialsX userdata, MiniMOTD, voicechat, SkinsRestorer, GrimAC, ProAntiTab, WorldEdit, PlaceholderAPI, spark) +- [x] Restore player state files (ops.json, banned-players, banned-ips, whitelist, usercache) +- [x] TAB v5 → v6 schema migration (visuals preserved, 0 warnings on reload) +- [x] Document `racked.ru` as the project (MISSION.md, THANKS.md w/ author attributions, README rebrand) +- [x] AuthMe void limbo dimension (`auth_limbo`) — sealed barrier cell, no coord leaks, post-login TP to overworld +- [x] Public access confirmed — port forward 25565 → 82.31.156.86 working +- [x] LandClaimPlugin Wilderness actionbar silenced +- [x] Disk cleanup — freed 11G+ (old backups, Docker build cache, staging dirs) + +## License + +Configs + scripts in this repo: MIT. Plugin jars are not redistributed here — they're acquired at deploy time from upstream sources, each under its own license. See [THANKS.md](THANKS.md) for per-plugin license attribution. diff --git a/docs/plugins/authme.md b/docs/plugins/authme.md new file mode 100644 index 0000000..42a0bfa --- /dev/null +++ b/docs/plugins/authme.md @@ -0,0 +1,32 @@ +--- +name: AuthMe Reloaded +version: "5.7.0-b2660" +license: GPL-3.0 +source: github +source_url: https://github.com/AuthMe/AuthMeReloaded/releases/download/5.7.0/AuthMe-5.7.0.jar +acquisition: PLUGINS (direct GH URL) +purpose: Auth on cracked server — prevent coord leaks before login +--- + +Replaced LoginSecurity (upstream archived, unmaintained). Cracked server requirement — players must register/login before interacting with world. + +## Security config + +- `teleportUnAuthedToSpawn: true` — TP to auth_limbo on join, not actual location +- `SaveQuitLocation: true` — restore position post-login +- `hideInventory: true` — hides inv from other players until logged in (requires ProtocolLib) +- `allowMovement: false`, `allowedMovementRadius: 0` — locked in place +- `timeout: 60` — kick if no login within 60s +- Spawn world: `auth_limbo` (void END-type dimension, sealed 3×3×4 barrier cube at 0,128,0) + +## Post-login hook + +`commands.yml` — onLogin/onFirstLogin/onSessionLogin all run: +``` +mvtp %p world (CONSOLE, delay: 5 ticks) +``` + +## Notes + +- `auth_limbo`: END dimension, no structures, no ender dragon, void floor — players see black void, cannot move +- ProtocolLib required for inventory hide feature diff --git a/docs/plugins/coreprotect.md b/docs/plugins/coreprotect.md new file mode 100644 index 0000000..2e91bba --- /dev/null +++ b/docs/plugins/coreprotect.md @@ -0,0 +1,18 @@ +--- +name: CoreProtect +version: "23.1" +license: Proprietary (free, source-available) +license_note: Not FOSS — operator acknowledged, reliability prioritised over license purity +source: modrinth +modrinth_slug: coreprotect +acquisition: MODRINTH_PROJECTS +purpose: Block/interaction logging, rollback, lookup +--- + +Best-in-class block audit log. Not fully open source — license is proprietary but free to use. Kept over Prism (FOSS alt) because CoreProtect has superior sign/container/entity rollback and scale-tested reliability. + +## Notes + +- Revisit if Prism reaches feature parity on sign/container/entity rollback at scale +- FAWE integration: CoreProtect auto-detects FAWE on load, logs FAWE edits correctly +- Block history migrated from old server (SQLite DB restored) diff --git a/docs/plugins/essentialsx.md b/docs/plugins/essentialsx.md new file mode 100644 index 0000000..a8c80a3 --- /dev/null +++ b/docs/plugins/essentialsx.md @@ -0,0 +1,15 @@ +--- +name: EssentialsX +version: "2.21.2" +license: GPL-3.0 +source: github +source_url: https://github.com/EssentialsX/Essentials/releases/download/2.21.2/EssentialsX-2.21.2.jar +acquisition: PLUGINS (direct GH URL) +purpose: Core utility commands — /home, /spawn, /tpa, /kit, /warp, economy, chat +--- + +Not on Modrinth as a Paper jar — direct GitHub release URL. Config + userdata migrated from old server. Kits, homes, player economy data all restored. + +## Notes + +- Long-term: evaluate splitting into modular FOSS plugins (HuskHomes for teleport etc) — P3 deferred diff --git a/docs/plugins/fastasyncworldedit.md b/docs/plugins/fastasyncworldedit.md new file mode 100644 index 0000000..f491458 --- /dev/null +++ b/docs/plugins/fastasyncworldedit.md @@ -0,0 +1,18 @@ +--- +name: FastAsyncWorldEdit (FAWE) +version: "2.15.0+59372c5" +license: GPL-3.0 +source: github +source_url: https://github.com/IntellectualSites/FastAsyncWorldEdit +modrinth_slug: fastasyncworldedit +acquisition: MODRINTH_PROJECTS +purpose: World editing — //set, //copy, brushes, schematics +--- + +Drop-in replacement for WorldEdit by IntellectualSites. Async edits don't lag server during large operations. Disk-backed edit history. Per-permission limits. CoreProtect integration auto-detected on load. + +## Notes + +- Replaced WorldEdit (EngineHub) on 2026-04-28 +- Same commands, same API — no player/config migration needed +- CoreProtect logs FAWE edits correctly diff --git a/docs/plugins/grimac.md b/docs/plugins/grimac.md new file mode 100644 index 0000000..07fd9cb --- /dev/null +++ b/docs/plugins/grimac.md @@ -0,0 +1,16 @@ +--- +name: GrimAC +version: "2.3.74-8861589" +license: GPL-3.0 +source: modrinth +modrinth_slug: grimac +acquisition: MODRINTH_PROJECTS (alpha channel required) +purpose: Anticheat — movement, combat, interaction checks +--- + +Alpha channel required (`MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE: alpha`) — GrimAC only publishes alpha builds on Modrinth for bleeding-edge MC versions. + +## Notes + +- Replaced CosmicGuard (premium, unauditable) +- Config + punishments migrated from old server diff --git a/docs/plugins/homestead.md b/docs/plugins/homestead.md new file mode 100644 index 0000000..b382152 --- /dev/null +++ b/docs/plugins/homestead.md @@ -0,0 +1,33 @@ +--- +name: Homestead +version: "5.1.0.1" +license: Apache-2.0 +source: modrinth +modrinth_slug: homestead-plugin +source_url: https://github.com/TayebYassine/Homestead +acquisition: MODRINTH_PROJECTS +purpose: Land claiming — chunk-based region protection, flags, sub-areas, economy +--- + +Replaced LandClaimPlugin (and attempted Lands 7.21.3 which failed on 1.21.10). Apache-2.0, fully FOSS. + +## Config + +- Claimable worlds: `world` only (end/nether/auth_limbo disabled) +- Chunk price: 0 (free) +- Upkeep: disabled +- Taxes: disabled +- Sub-areas: enabled +- FAWE integration: available (regenerate-chunks: false — enable if needed) +- Dynamic map support: BlueMap/Squaremap auto-detected (P2 roadmap) +- Adjacent chunks required: true (matches old Lands force-near) + +## Migration + +Fresh start — no claim data from Lands (old server) or LandClaimPlugin carried over. +If future migration from Lands needed: `/hsadmin import lands` (requires Lands jar running simultaneously). + +## Notes + +- `regions.yml` must be chmod 777 due to userns-remap; write via `--userns=host` alpine container +- Homestead logs "unsupported server version" warning — cosmetic, plugin fully functional on 1.21.10 diff --git a/docs/plugins/landclaimplugin.md b/docs/plugins/landclaimplugin.md new file mode 100644 index 0000000..a0202cc --- /dev/null +++ b/docs/plugins/landclaimplugin.md @@ -0,0 +1,19 @@ +--- +name: LandClaimPlugin +version: "2.0.4" +license: TBD — needs verification (P2) +source: modrinth +modrinth_slug: landclaimplugin +acquisition: MODRINTH_PROJECTS +purpose: Chunk-based land claims — grief protection +--- + +Chunk-based claims. Chosen over GriefPrevention (free-form, FOSS) because chunk boundaries are vanilla-visible via F3+G — no client mod needed. + +## Notes + +- Replaced Lands (paid, proprietary) on 2026-04-27 +- License not yet confirmed — verify before publishing server repo publicly (P2) +- Fallback if license fails: ChunkClaim (chunk-based, FOSS) or GriefPrevention +- Wilderness actionbar message blanked in `locales/messages_en-US.yml` +- Player claim data in `PlayerData/database.db` diff --git a/docs/plugins/luckperms.md b/docs/plugins/luckperms.md new file mode 100644 index 0000000..97abcfe --- /dev/null +++ b/docs/plugins/luckperms.md @@ -0,0 +1,18 @@ +--- +name: LuckPerms +version: "5.5.17" +license: MIT +source: github +source_url: https://github.com/LuckPerms/LuckPerms +modrinth_slug: luckperms +acquisition: MODRINTH_PROJECTS +purpose: Permission management — groups, ranks, inheritance +storage: H2 (local, /plugins/LuckPerms/luckperms-h2.mv.db) +--- + +Rank and permission system. Groups defined in H2 DB, migrated from old server. Web editor at luckperms.net (requires Cloudflare bytebin — use in-game `/lp` commands if web editor unavailable). + +## Notes + +- Web editor dep on Cloudflare bytebin — fallback is `/lp` CLI commands only +- Self-hosted option deferred (P3): github.com/LuckPerms/web + github.com/lucko/bytebin on perms.racked.ru diff --git a/docs/plugins/minimotd.md b/docs/plugins/minimotd.md new file mode 100644 index 0000000..e681a4c --- /dev/null +++ b/docs/plugins/minimotd.md @@ -0,0 +1,11 @@ +--- +name: MiniMOTD +version: "2.2.3" +license: MIT +source: modrinth +modrinth_slug: minimotd +acquisition: MODRINTH_PROJECTS +purpose: Server list MOTD with MiniMessage formatting, player count customisation +--- + +Config migrated from old server. Supports gradient text, hover events, custom player count display. diff --git a/docs/plugins/multiverse-core.md b/docs/plugins/multiverse-core.md new file mode 100644 index 0000000..3c3dd74 --- /dev/null +++ b/docs/plugins/multiverse-core.md @@ -0,0 +1,17 @@ +--- +name: Multiverse-Core +version: "5.6.2-pre" +license: BSD-3-Clause +source: modrinth +modrinth_slug: multiverse-core +acquisition: MODRINTH_PROJECTS (alpha channel) +purpose: Multi-world management — world creation, TP, spawn, respawn-world config +--- + +Alpha channel required for 1.21.x compatibility. Used to manage `world`, `world_nether`, `world_the_end`, `auth_limbo`. + +## Key config + +- `auth_limbo`: respawn-world not set (AuthMe handles post-login TP via commands.yml hook) +- `mv setspawn --unsafe` required for void dimension spawn points +- `mvtp ` used in AuthMe post-login hook diff --git a/docs/plugins/placeholderapi.md b/docs/plugins/placeholderapi.md new file mode 100644 index 0000000..7f81609 --- /dev/null +++ b/docs/plugins/placeholderapi.md @@ -0,0 +1,15 @@ +--- +name: PlaceholderAPI +version: "2.12.2" +license: GPL-3.0 +source: modrinth +modrinth_slug: placeholderapi +acquisition: MODRINTH_PROJECTS +purpose: Placeholder expansion API — %player_name%, %luckperms_*, %essentials_* etc +--- + +Required by TAB, EssentialsX, MiniMOTD for dynamic text. Extensions auto-downloaded in-game via `/papi ecloud download `. + +## Notes + +- Long-term: evaluate MiniPlaceholders (Adventure-native) when ecosystem catches up — P3 deferred diff --git a/docs/plugins/proantitab.md b/docs/plugins/proantitab.md new file mode 100644 index 0000000..e285107 --- /dev/null +++ b/docs/plugins/proantitab.md @@ -0,0 +1,12 @@ +--- +name: ProAntiTab +version: "2.3.0" +license: GPL-2.0-or-later +source: modrinth +modrinth_slug: proantitab +source_url: https://github.com/RayzsYT/ProAntiTab +acquisition: MODRINTH_PROJECTS +purpose: Prevent tab-completion of player names and commands for unauthorised players +--- + +Verified FOSS (RayzsYT, GPL-2.0-or-later, active GH repo). Earlier audit flagged as "likely premium" — confirmed free. Config migrated from old server. diff --git a/docs/plugins/protocollib.md b/docs/plugins/protocollib.md new file mode 100644 index 0000000..4e5fea4 --- /dev/null +++ b/docs/plugins/protocollib.md @@ -0,0 +1,16 @@ +--- +name: ProtocolLib +version: "5.4.0" +license: GPL-2.0 +source: github +source_url: https://github.com/dmulloy2/ProtocolLib/releases/download/5.4.0/ProtocolLib.jar +acquisition: PLUGINS (direct GH URL) +purpose: Packet interception API — required by AuthMe (inventory hide) and GrimAC +--- + +Low-level packet API. Not on Modrinth — acquired via direct GitHub release URL. Required by AuthMe for `hideInventory` feature (hides inv from other players until logged in) and GrimAC for anticheat packet inspection. + +## Notes + +- Spiget source broken (reports "up to date" but jar absent) — direct GH URL is canonical +- Evaluate dropping in favour of PacketEvents-only stack (P3 deferred) diff --git a/docs/plugins/simple-voice-chat.md b/docs/plugins/simple-voice-chat.md new file mode 100644 index 0000000..14883e1 --- /dev/null +++ b/docs/plugins/simple-voice-chat.md @@ -0,0 +1,16 @@ +--- +name: Simple Voice Chat +version: "2.6.16" +license: GPL-3.0 +source: modrinth +modrinth_slug: simple-voice-chat +acquisition: MODRINTH_PROJECTS +purpose: Proximity voice chat — requires matching client mod +--- + +Server-side plugin. Players need the matching client mod installed. Config (`voicechat-server.properties`) migrated from old server. + +## Notes + +- Client mod required: modrinth.com/mod/simple-voice-chat +- UDP port may need forwarding separately (default 24454) diff --git a/docs/plugins/skinsrestorer.md b/docs/plugins/skinsrestorer.md new file mode 100644 index 0000000..38d5324 --- /dev/null +++ b/docs/plugins/skinsrestorer.md @@ -0,0 +1,16 @@ +--- +name: SkinsRestorer +version: "15.12.0" +license: GPL-3.0 +source: modrinth +modrinth_slug: skinsrestorer +acquisition: MODRINTH_PROJECTS +purpose: Skin assignment for offline-mode (cracked) players +--- + +Restores Mojang skin API functionality for cracked clients. Skin assignments migrated from old server. + +## Notes + +- Required because `ONLINE_MODE: false` disables vanilla skin fetching +- Long-term: self-hosted skin server to eliminate Mojang/MineSkin dependency — P3 deferred diff --git a/docs/plugins/spark.md b/docs/plugins/spark.md new file mode 100644 index 0000000..5f2f8e3 --- /dev/null +++ b/docs/plugins/spark.md @@ -0,0 +1,11 @@ +--- +name: spark +version: "1.10.172" +license: GPL-3.0 +source: ci +source_url: https://ci.lucko.me/job/spark/lastSuccessfulBuild/artifact/spark-bukkit/build/libs/spark-1.10.172-bukkit.jar +acquisition: PLUGINS (direct CI URL) +purpose: Performance profiler — TPS, MSPT, CPU flame graphs +--- + +Not on Modrinth as Paper jar — Lucko CI direct URL. Use `/spark tps` for server health check, `/spark profiler` for lag investigation. diff --git a/docs/plugins/tab.md b/docs/plugins/tab.md new file mode 100644 index 0000000..42fdc7d --- /dev/null +++ b/docs/plugins/tab.md @@ -0,0 +1,15 @@ +--- +name: TAB +version: "6.0.2" +license: TBD — needs verification (P2) +source: modrinth +modrinth_slug: tab-was-taken +acquisition: MODRINTH_PROJECTS +purpose: Tablist, nametags, header/footer, scoreboard +--- + +## Notes + +- Migrated from v5 → v6 on 2026-04-27: `yes/no` → `true/false` in conditions; `afk-yes/afk-no` moved to `placeholder-output-replacements`; proxy-support redis/rabbitmq stubs added +- Config visual layout preserved through migration (header, footer, nametag format) +- License not yet confirmed — verify (P2) diff --git a/docs/plugins/vaultunlocked.md b/docs/plugins/vaultunlocked.md new file mode 100644 index 0000000..59872ac --- /dev/null +++ b/docs/plugins/vaultunlocked.md @@ -0,0 +1,12 @@ +--- +name: VaultUnlocked +version: "2.19.1" +license: LGPL-3.0 +source: github +source_url: https://github.com/TheNewEconomy/VaultUnlocked +modrinth_slug: vaultunlocked +acquisition: MODRINTH_PROJECTS +purpose: Economy/permission API bridge — drop-in Vault replacement +--- + +Fork of the original Vault by TheNewEconomy. Drop-in API replacement — all plugins depending on Vault work unchanged. Replaced original Vault (MilkBowl, largely unmaintained). diff --git a/docs/plugins/voidworldgenerator.md b/docs/plugins/voidworldgenerator.md new file mode 100644 index 0000000..663f460 --- /dev/null +++ b/docs/plugins/voidworldgenerator.md @@ -0,0 +1,11 @@ +--- +name: VoidWorldGenerator +version: "1.3.11" +license: MIT +source: modrinth +modrinth_slug: voidworldgenerator +acquisition: MODRINTH_PROJECTS +purpose: Generates void worlds — used for auth_limbo creation +--- + +Required to create `auth_limbo` as a true void END-type world with no structures, no terrain, no ender dragon spawn. diff --git a/live-server/.modrinth-manifest.json b/live-server/.modrinth-manifest.json new file mode 100755 index 0000000..335b086 --- /dev/null +++ b/live-server/.modrinth-manifest.json @@ -0,0 +1 @@ +{"@type":"me.itzg.helpers.modrinth.ModrinthManifest","timestamp":"2026-04-30T17:15:09.796677204Z","files":["plugins/LuckPerms-Bukkit-5.5.17.jar","plugins/VoidWorldGenerator-1.3.11.jar","plugins/minimotd-paper-2.2.3.jar","plugins/FastAsyncWorldEdit-Paper-2.15.0.jar","plugins/PlaceholderAPI-2.12.2.jar","plugins/voicechat-bukkit-2.6.16.jar","plugins/VaultUnlocked-2.19.1.jar","plugins/homestead.jar","plugins/SkinsRestorer.jar","plugins/ProAntiTab-2.3.0.jar"],"projects":["luckperms","placeholderapi","fastasyncworldedit","simple-voice-chat","minimotd","skinsrestorer","vaultunlocked","proantitab","voidworldgenerator","homestead-plugin"]} \ No newline at end of file diff --git a/live-server/.rcon-cli.env b/live-server/.rcon-cli.env new file mode 100755 index 0000000..9438aaf --- /dev/null +++ b/live-server/.rcon-cli.env @@ -0,0 +1 @@ +password=*redacted* diff --git a/live-server/.rcon-cli.yaml b/live-server/.rcon-cli.yaml new file mode 100755 index 0000000..e5bbe6b --- /dev/null +++ b/live-server/.rcon-cli.yaml @@ -0,0 +1 @@ +password: "*redacted*" diff --git a/live-server/bukkit.yml b/live-server/bukkit.yml new file mode 100755 index 0000000..435dc60 --- /dev/null +++ b/live-server/bukkit.yml @@ -0,0 +1,47 @@ +# This is the Bukkit configuration file in Paper. +# As you can see, there's actually not that much to configure without any plugins. +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# File Reference: https://docs.papermc.io/paper/reference/bukkit-configuration/ +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc +# Website: https://papermc.io/ + +settings: + allow-end: true + warn-on-overload: true + permissions-file: permissions.yml + update-folder: update + plugin-profiling: false + connection-throttle: 4000 + query-plugins: true + deprecated-verbose: default + shutdown-message: Server closed + minimum-api: none + use-map-color-cache: true +spawn-limits: + monsters: 70 + animals: 10 + water-animals: 5 + water-ambient: 20 + water-underground-creature: 5 + axolotls: 5 + ambient: 15 +chunk-gc: + period-in-ticks: 600 +ticks-per: + animal-spawns: 400 + monster-spawns: 1 + water-spawns: 1 + water-ambient-spawns: 1 + water-underground-creature-spawns: 1 + axolotl-spawns: 1 + ambient-spawns: 1 + autosave: 6000 +aliases: now-in-commands.yml +worlds: + auth_limbo: + generator: VoidWorldGenerator + environment: normal diff --git a/live-server/commands.yml b/live-server/commands.yml new file mode 100755 index 0000000..b5c1e3b --- /dev/null +++ b/live-server/commands.yml @@ -0,0 +1,32 @@ +# This is the Bukkit commands configuration file for Paper. +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# File Reference: https://docs.papermc.io/paper/reference/bukkit-commands-configuration/ +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc +# Website: https://papermc.io/ + +command-block-overrides: [] +ignore-vanilla-permissions: false + +aliases: + tp: + - essentials:tpa $1- + + # Allow ONLY /deletehome (maps to essentials:delhome) + deletehome: + - essentials:delhome $1- + + # Disable /delhome by NOT defining it here + + tpa: [] + tpahere: [] + tphere: [] + teleport: [] + + skin clear: [] + skin update: [] + skin search: [] + skin random: [] diff --git a/live-server/docker-compose.yml b/live-server/docker-compose.yml new file mode 100644 index 0000000..ff4765a --- /dev/null +++ b/live-server/docker-compose.yml @@ -0,0 +1,91 @@ +services: + mc: + image: itzg/minecraft-server:latest + container_name: minecraft-mc + environment: + EULA: "TRUE" + # TYPE=CUSTOM bypasses itzg's auto-loader detection; honors MODRINTH_LOADER override + TYPE: CUSTOM + CUSTOM_SERVER: "https://api.purpurmc.org/v2/purpur/1.21.11/latest/download" + VERSION: "1.21.11" + + MEMORY_SIZE: "16G" + JVM_OPTS: "-Xms8192M -Xmx16384M" + + DIFFICULTY: hard + GAMEMODE: survival + HARDCORE: "false" + MAX_PLAYERS: "69" + VIEW_DISTANCE: 20 + SIMULATION_DISTANCE: 10 + ONLINE_MODE: "false" + SPAWN_PROTECTION: 0 + MOTD: "racked.ru — experience the game the way it should have always been" + + USE_AIKAR_FLAGS: "true" + MAX_TICK_TIME: "-1" + + ENABLE_RCON: "true" + RCON_PASSWORD: "*redacted*" + + TZ: "Europe/London" + ENABLE_ROLLING_LOGS: "true" + + UID: "1000" + GID: "1000" + + # Modrinth auto-DL — TYPE=CUSTOM lets MODRINTH_LOADER=paper actually work + MODRINTH_PROJECTS: | + luckperms + placeholderapi + fastasyncworldedit + simple-voice-chat + minimotd + skinsrestorer + vaultunlocked + proantitab + voidworldgenerator + homestead-plugin + # EssentialsX + spark not on Modrinth as paper jars — direct GH/CI URLs + PLUGINS: | + https://github.com/EssentialsX/Essentials/releases/download/2.21.2/EssentialsX-2.21.2.jar + https://ci.lucko.me/job/spark/lastSuccessfulBuild/artifact/spark-bukkit/build/libs/spark-1.10.172-bukkit.jar + https://github.com/HaHaWTH/AuthMeReReloaded/releases/download/b49/AuthMe-5.6.0-FORK-Universal.jar + https://github.com/dmulloy2/ProtocolLib/releases/download/dev-build/ProtocolLib.jar + https://github.com/VoidemLIVE/Help-Command-Plugin/releases/download/v2.9.2/HelpCommand-2.9.2.jar + https://cdn.modrinth.com/data/Lu3KuzdV/versions/HD2IvrxS/CoreProtect-CE-23.1.jar + https://cdn.modrinth.com/data/gG7VFbG0/versions/uWACk3HR/TAB%20v6.0.1.jar + MODRINTH_DOWNLOAD_DEPENDENCIES: none + MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE: release + MODRINTH_LOADER: paper + SPIGET_RESOURCES: "" + REMOVE_OLD_MODS: "true" + REMOVE_OLD_MODS_INCLUDE: "*.jar" + REMOVE_OLD_MODS_EXCLUDE: "RackedLimbo*.jar" + volumes: + - /opt/docker/minecraft:/data + ports: + - "25565:25565/tcp" + - "25575:25575/tcp" + networks: + - proxy + restart: unless-stopped + healthcheck: + test: ["CMD", "mc-health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 240s + deploy: + resources: + limits: + memory: 18G + cpus: '6' + reservations: + memory: 8G + labels: + - "traefik.enable=false" + +networks: + proxy: + external: true diff --git a/live-server/eula.txt b/live-server/eula.txt new file mode 100755 index 0000000..7846e0b --- /dev/null +++ b/live-server/eula.txt @@ -0,0 +1,3 @@ +#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA). +#Tue Apr 08 20:41:28 BST 2025 +eula=true diff --git a/live-server/help.yml b/live-server/help.yml new file mode 100755 index 0000000..f0496c6 --- /dev/null +++ b/live-server/help.yml @@ -0,0 +1,64 @@ +# This is the Bukkit help configuration file for Paper. +# +# By default you do not need to modify this file. Help topics for all plugin commands are automatically provided by +# or extracted from your installed plugins. You only need to modify this file if you wish to add new help pages to +# your server or override the help pages of existing plugin commands. +# +# This file is divided up into the following parts: +# -- general-topics: lists admin defined help topics +# -- index-topics: lists admin defined index topics +# -- amended-topics: lists topic amendments to apply to existing help topics +# -- ignore-plugins: lists any plugins that should be excluded from help +# +# Examples are given below. When amending command topic, the string will be replaced with the existing value +# in the help topic. Color codes can be used in topic text. The color code character is & followed by 0-F. +# ================================================================ +# +# Set this to true to list the individual command help topics in the master help. +# command-topics-in-master-index: true +# +# Each general topic will show up as a separate topic in the help index along with all the plugin command topics. +# general-topics: +# Rules: +# shortText: Rules of the server +# fullText: | +# &61. Be kind to your fellow players. +# &B2. No griefing. +# &D3. No swearing. +# permission: topics.rules +# +# Each index topic will show up as a separate sub-index in the help index along with all the plugin command topics. +# To override the default help index (displayed when the user executes /help), name the index topic "Default". +# index-topics: +# Ban Commands: +# shortText: Player banning commands +# preamble: Moderator - do not abuse these commands +# permission: op +# commands: +# - /ban +# - /ban-ip +# - /banlist +# +# Topic amendments are used to change the content of automatically generated plugin command topics. +# amended-topics: +# /stop: +# shortText: Stops the server cold....in its tracks! +# fullText: - This kills the server. +# permission: you.dont.have +# +# Any plugin in the ignored plugins list will be excluded from help. The name must match the name displayed by +# the /plugins command. Ignore "Bukkit" to remove the standard bukkit commands from the index. Ignore "All" +# to completely disable automatic help topic generation. +# ignore-plugins: +# - PluginNameOne +# - PluginNameTwo +# - PluginNameThree +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# File Reference: https://docs.papermc.io/paper/reference/bukkit-help-configuration/ +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc + +{} diff --git a/live-server/log4j2.xml b/live-server/log4j2.xml new file mode 100755 index 0000000..dba539e --- /dev/null +++ b/live-server/log4j2.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/live-server/ops.json b/live-server/ops.json new file mode 100755 index 0000000..197de02 --- /dev/null +++ b/live-server/ops.json @@ -0,0 +1,8 @@ +[ + { + "uuid": "cf3c7edb-c699-3d96-a6f1-15c805403f14", + "name": "s8n", + "level": 4, + "bypassesPlayerLimit": false + } +] \ No newline at end of file diff --git a/live-server/permissions.yml b/live-server/permissions.yml new file mode 100755 index 0000000..e69de29 diff --git a/live-server/plugins/.1997-version.json b/live-server/plugins/.1997-version.json new file mode 100644 index 0000000..bef9528 --- /dev/null +++ b/live-server/plugins/.1997-version.json @@ -0,0 +1,12 @@ +{ + "downloads": 125193, + "name": "5.4.0", + "rating": { + "count": 8, + "average": 3.4 + }, + "releaseDate": 1754699400, + "resource": 1997, + "uuid": "00000f1d-39e3-d43c-0005-c15b2119dc5b", + "id": 602511 +} \ No newline at end of file diff --git a/live-server/plugins/.34315-version.json b/live-server/plugins/.34315-version.json new file mode 100755 index 0000000..19419e2 --- /dev/null +++ b/live-server/plugins/.34315-version.json @@ -0,0 +1,12 @@ +{ + "downloads": 2681598, + "rating": { + "count": 164, + "average": 4.7 + }, + "name": "1.7.3", + "releaseDate": 1595004900, + "resource": 34315, + "uuid": "00060038-b5fa-1d8d-003a-10029aaaa51a", + "id": 344916 +} \ No newline at end of file diff --git a/live-server/plugins/.var-list-manifest.json b/live-server/plugins/.var-list-manifest.json new file mode 100755 index 0000000..5f524b4 --- /dev/null +++ b/live-server/plugins/.var-list-manifest.json @@ -0,0 +1 @@ +{"@type":"me.itzg.helpers.sync.MultiCopyManifest","timestamp":"2026-04-30T17:15:04.262167023Z","files":["HelpCommand-2.9.2.jar","spark-1.10.172-bukkit.jar","EssentialsX-2.21.2.jar","CoreProtect-CE-23.1.jar","TAB v6.0.1.jar","AuthMe-5.6.0-FORK-Universal.jar","ProtocolLib.jar"]} \ No newline at end of file diff --git a/live-server/plugins/AuthMe/commands.yml b/live-server/plugins/AuthMe/commands.yml new file mode 100755 index 0000000..8416755 --- /dev/null +++ b/live-server/plugins/AuthMe/commands.yml @@ -0,0 +1,68 @@ + +# This configuration file allows you to execute commands on various events. +# Supported placeholders in commands: +# %p is replaced with the player name. +# %nick is replaced with the player's nick name +# %ip is replaced with the player's IP address +# %country is replaced with the player's country +# +# For example, if you want to send a welcome message to a player who just registered: +# onRegister: +# welcome: +# command: 'msg %p Welcome to the server!' +# executor: CONSOLE +# +# This will make the console execute the msg command to the player. +# Each command under an event has a name you can choose freely (e.g. 'welcome' as above), +# after which a mandatory 'command' field defines the command to run, +# and 'executor' defines who will run the command (either PLAYER or CONSOLE). Longer example: +# onLogin: +# welcome: +# command: 'msg %p Welcome back!' +# executor: PLAYER +# broadcast: +# command: 'broadcast %p has joined, welcome back!' +# executor: CONSOLE +# +# You can also add delay to command. It will run after the specified ticks. Example: +# onLogin: +# rules: +# command: 'rules' +# executor: PLAYER +# delay: 200 +# +# Supported command events: onLogin, onSessionLogin, onFirstLogin, onJoin, onLogout, onRegister, onUnregister +# +# For onLogin and onFirstLogin, you can use 'ifNumberOfAccountsLessThan' and 'ifNumberOfAccountsAtLeast' +# to specify limits to how many accounts a player can have (matched by IP) for a command to be run: +# onLogin: +# warnOnManyAccounts: +# command: 'say Uh oh! %p has many alt accounts!' +# executor: CONSOLE +# ifNumberOfAccountsAtLeast: 5 +# Commands to run for players logging in whose 'last login date' was empty +onFirstLogin: + tpToOverworld: + command: 'mvtp %p world' + executor: CONSOLE + delay: 5 +onJoin: {} +onLogin: + tpFromLimbo: + command: 'mvtp %p world' + executor: CONSOLE + delay: 5 +onSessionLogin: + tpFromLimbo: + command: 'mvtp %p world' + executor: CONSOLE + delay: 5 +# These commands are called whenever a logged in player uses /logout or quits. +# The commands are not run if a player that was not logged in quits the server. +# Note: if your server crashes, these commands won't be run, so don't rely on them to undo +# 'onLogin' commands that would be dangerous for non-logged in players to have! +onLogout: {} +onRegister: {} +onSessionLogin: {} +# Commands to run whenever a player is unregistered (by himself, or by an admin) +onUnregister: {} \ No newline at end of file diff --git a/live-server/plugins/AuthMe/config.yml b/live-server/plugins/AuthMe/config.yml new file mode 100755 index 0000000..b0f01a2 --- /dev/null +++ b/live-server/plugins/AuthMe/config.yml @@ -0,0 +1,637 @@ +DataSource: + # What type of database do you want to use? + # Valid values: H2, SQLITE, MARIADB, MYSQL, POSTGRESQL + backend: SQLITE + # Enable the database caching system, should be disabled on bungeecord environments + # or when a website integration is being used. + caching: true + # Should we try to use VirtualThreads(Java 21+) for database cache loader? + useVirtualThreadsCache: false + # Database host address + mySQLHost: 127.0.0.1 + # Database port + mySQLPort: '3306' + # Replacement of Mysql's useSsl (for MariaDB only). + # - disable: No SSL + # - trust: Trust blindly (no validation) + # - verify_ca: Encryption, certificates validation, BUT no hostname verification + # - verify_full: Encryption, certificate validation and hostname validation + # Read more: https://bit.ly/mariadb-sslmode + MariaDbSslMode: disabled + # Connect to MySQL database over SSL + # If you're using MariaDB, use sslMode instead + mySQLUseSSL: true + # Verification of server's certificate. + # We would not recommend to set this option to false. + # Set this option to false at your own risk if and only if you know what you're doing + mySQLCheckServerCertificate: true + # Authorize client to retrieve RSA server public key. + # Advanced option, ignore if you don't know what it means. + # If you are using MariaDB, use MariaDbSslMode instead. + mySQLAllowPublicKeyRetrieval: true + # Username to connect to the MySQL database + mySQLUsername: authme + # Password to connect to the MySQL database + mySQLPassword: '12345' + # Database Name, use with converters or as SQLITE database name + mySQLDatabase: authme + # Table of the database + mySQLTablename: authme + # Column of IDs to sort data + mySQLColumnId: id + # Column for storing or checking players nickname + mySQLColumnName: username + # Column for storing or checking players RealName + mySQLRealName: realname + # Column for storing players passwords + mySQLColumnPassword: password + # Column for storing players passwords salts + mySQLColumnSalt: '' + # Column for storing players emails + mySQLColumnEmail: email + # Column for storing if a player is logged in or not + mySQLColumnLogged: isLogged + # Column for storing if a player has a valid session or not + mySQLColumnHasSession: hasSession + # Column for storing a player's TOTP key (for two-factor authentication) + mySQLtotpKey: totp + # Column for storing the player's last IP + mySQLColumnIp: ip + # Column for storing players lastlogins + mySQLColumnLastLogin: lastlogin + # Column storing the registration date + mySQLColumnRegisterDate: regdate + # Column for storing the IP address at the time of registration + mySQLColumnRegisterIp: regip + # Column for storing player LastLocation - X + mySQLlastlocX: x + # Column for storing player LastLocation - Y + mySQLlastlocY: y + # Column for storing player LastLocation - Z + mySQLlastlocZ: z + # Column for storing player LastLocation - World Name + mySQLlastlocWorld: world + # Column for storing player LastLocation - Yaw + mySQLlastlocYaw: yaw + # Column for storing player LastLocation - Pitch + mySQLlastlocPitch: pitch + # Column for storing players uuids (optional) + mySQLPlayerUUID: '' + # Overrides the size of the DB Connection Pool, default = 10 + poolSize: 10 + # The maximum lifetime of a connection in the pool, default = 1800 seconds + # You should set this at least 30 seconds less than mysql server wait_timeout + maxLifetime: 1800 +ExternalBoardOptions: + # Column for storing players groups + mySQLColumnGroup: '' + # -1 means disabled. If you want that only activated players + # can log into your server, you can set here the group number + # of unactivated users, needed for some forum/CMS support + nonActivedUserGroup: -1 + # Other MySQL columns where we need to put the username (case-sensitive) + mySQLOtherUsernameColumns: [] + # How much log2 rounds needed in BCrypt (do not change if you do not know what it does) + bCryptLog2Round: 12 + # phpBB table prefix defined during the phpBB installation process + phpbbTablePrefix: phpbb_ + # phpBB activated group ID; 2 is the default registered group defined by phpBB + phpbbActivatedGroupId: 2 + # IP Board table prefix defined during the IP Board installation process + IPBTablePrefix: ipb_ + # IP Board default group ID; 3 is the default registered group defined by IP Board + IPBActivatedGroupId: 3 + # Xenforo table prefix defined during the Xenforo installation process + XFTablePrefix: xf_ + # XenForo default group ID; 2 is the default registered group defined by Xenforo + XFActivatedGroupId: 2 + # Wordpress prefix defined during WordPress installation + wordpressTablePrefix: wp_ +3rdPartyFeature: + compatibility: + # Should we execute /help command when unregistered players press Shift+F? + # This keeps compatibility with some menu plugins + # If you are using TrMenu, don't enable this because TrMenu already implemented this. + menuPlugins: false + features: + captcha: + # Should send GUI captcha by country code whitelist? + # If the country of the player is in this list, the captcha won't be sent. + whiteList: [] + # Send a GUI captcha to unregistered players?(Requires ProtocolLib) + guiCaptcha: false + # Should we kick the players when they don't finish the GUI captcha in seconds? + # (less than or equals 0 is disabled) + timeOut: 0 + # Should we ignore floodgate players when sending GUI captcha? + # (Requires floodgate and hookFloodgate: true) + ignoreBedrock: false + # Should we let Bedrock players login automatically? + # (Requires hookFloodgate to be true & floodgate loaded) + # (**THIS IS SAFE DO NOT WORRY**) + bedrockAutoLogin: false + purgeData: + # Should we purge data on non-registered players quit? + purgeOnQuit: false + # Which world's player data should be deleted?(Enter the world *FOLDER* name where your players first logged in) + purgeWorldFolderName: world + fixes: + # Enable the new feature to prevent ghost players? + antiGhostPlayer: false + # (MC1.13- only) + # Should we fix the shulker crash bug with advanced method? + advancedShulkerFix: false + loginLocationFix: + # Should we fix the location when players logged in the portal? + fixPortalStuck: false + # Should we fix the location when players logged underground? + fixGroundStuck: false + optimizes: + # Choose the best teleport method by server brand? + # (Enable this if you are using Paper/Folia) + smartAsyncTeleport: true +settings: + sessions: + # Do you want to enable the session feature? + # If enabled, when a player authenticates successfully, + # his IP and his nickname is saved. + # The next time the player joins the server, if his IP + # is the same as last time and the timeout hasn't + # expired, he will not need to authenticate. + enabled: false + # After how many minutes should a session expire? + # A player's session ends after the timeout or if his IP has changed + timeout: 10 + # Message language, available languages: + # https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md + # Example: zhcn, en + messagesLanguage: en + # Forces authme to hook into Vault instead of a specific permission handler system. + forceVaultHook: false + # Log level: INFO, FINE, DEBUG. Use INFO for general messages, + # FINE for some additional detailed ones (like password failed), + # and DEBUG for debugging + logLevel: DEBUG + # By default we schedule async tasks when talking to the database. If you want + # typical communication with the database to happen synchronously, set this to false + useAsyncTasks: true + # The name of the server, used in some placeholders. + serverName: Your Minecraft Server + restrictions: + # Can not authenticated players chat? + # Keep in mind that this feature also blocks all commands not + # listed in the list below. + allowChat: false + # Hide the chat log from players who are not authenticated? + hideChat: true + # Allowed commands for unauthenticated players + allowCommands: + - /login + - /log + - /l + - /register + - /reg + - /email + - /captcha + - /2fa + - /totp + # Max number of allowed registrations per IP + # The value 0 means an unlimited number of registrations! + maxRegPerIp: 1 + # Minimum allowed username length + minNicknameLength: 3 + # Maximum allowed username length + maxNicknameLength: 16 + # When this setting is enabled, online players can't be kicked out + # due to "Logged in from another Location" + # This setting will prevent potential security exploits. + ForceSingleSession: true + ForceSpawnLocOnJoin: + # If enabled, every player that spawn in one of the world listed in + # "ForceSpawnLocOnJoin.worlds" will be teleported to the spawnpoint after successful + # authentication. The quit location of the player will be overwritten. + # This is different from "teleportUnAuthedToSpawn" that teleport player + # to the spawnpoint on join. + enabled: false + # WorldNames where we need to force the spawn location + # Case-sensitive! + worlds: + - world + - world_nether + - world_the_end + # This option will save the quit location of the players. + SaveQuitLocation: true + # To activate the restricted user feature you need + # to enable this option and configure the AllowedRestrictedUser field. + AllowRestrictedUser: false + # The restricted user feature will kick players listed below + # if they don't match the defined IP address. Names are case-insensitive. + # You can use * as wildcard (127.0.0.*), or regex with a "regex:" prefix regex:127\.0\.0\..* + # Example: + # AllowedRestrictedUser: + # - playername;127.0.0.1 + # - playername;regex:127\.0\.0\..* + AllowedRestrictedUser: [] + # Ban unknown IPs trying to log in with a restricted username? + banUnsafedIP: false + # Should unregistered players be kicked immediately? + kickNonRegistered: false + # Should players be kicked on wrong password? + kickOnWrongPassword: true + # Should not logged in players be teleported to the spawn? + # After the authentication they will be teleported back to + # their normal position. + teleportUnAuthedToSpawn: true + # Can unregistered players walk around? + allowMovement: false + # After how many seconds should players who fail to login or register + # be kicked? Set to 0 to disable. + timeout: 120 + # Regex pattern of allowed characters in the player name. + allowedNicknameCharacters: '[a-zA-Z0-9_]*' + # How far can unregistered players walk? + # Set to 0 for unlimited radius + allowedMovementRadius: 0 + # Should we protect the player inventory before logging in? Requires ProtocolLib. + ProtectInventoryBeforeLogIn: true + # Should we deny the tabcomplete feature before logging in? Requires ProtocolLib. + DenyTabCompleteBeforeLogin: false + # Should we display all other accounts from a player when he joins? + # permission: /authme.admin.accounts + displayOtherAccounts: true + # Spawn priority; values: authme, essentials, cmi, multiverse, default + spawnPriority: authme,essentials,cmi,multiverse,default + # Maximum Login authorized by IP + maxLoginPerIp: 0 + # Maximum Join authorized by IP + maxJoinPerIp: 0 + # AuthMe will NEVER teleport players if set to true! + noTeleport: false + # Regex syntax for allowed chars in passwords. The default [!-~] allows all visible ASCII + # characters, which is what we recommend. See also http://asciitable.com + # You can test your regex with https://regex101.com + allowedPasswordCharacters: '[!-~]*' + # Regex syntax for allowed chars in email. + allowedEmailCharacters: ^[A-Za-z0-9_]{4,15}@(qq|outlook|163|gmail|icloud)\.com$ + GameMode: + # Force survival gamemode when player joins? + ForceSurvivalMode: false + unrestrictions: + # Below you can list all account names that AuthMe will ignore + # for registration or login. Configure it at your own risk!! + # This option adds compatibility with BuildCraft and some other mods. + # It is case-insensitive! Example: + # UnrestrictedName: + # - 'npcPlayer' + # - 'npcPlayer2' + UnrestrictedName: [] + # Below you can list all inventories names that AuthMe will ignore + # for registration or login. Configure it at your own risk!! + # This option adds compatibility with some mods. + # It is case-insensitive! Example: + # UnrestrictedInventories: + # - 'myCustomInventory1' + # - 'myCustomInventory2' + UnrestrictedInventories: [] + security: + # Minimum length of password + minPasswordLength: 5 + # Maximum length of password + passwordMaxLength: 30 + # Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512, + # MYBB, IPB3, PHPBB, PHPFUSION, SMF, XENFORO, XAUTH, JOOMLA, WBB3, WBB4, MD5VB, + # PBKDF2DJANGO, WORDPRESS, ROYALAUTH, ARGON2, CUSTOM (for developers only). See full list at + # https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/hash_algorithms.md + # If you use ARGON2, check that you have the argon2 c library on your system + passwordHash: SHA256 + # If a password check fails, AuthMe will also try to check with the following hash methods. + # Use this setting when you change from one hash method to another. + # AuthMe will update the password to the new hash. Example: + # legacyHashes: + # - 'SHA1' + legacyHashes: [] + # Salt length for the SALTED2MD5 MD5(MD5(password)+salt) + doubleMD5SaltLength: 8 + # Number of rounds to use if passwordHash is set to PBKDF2. Default is 10000 + pbkdf2Rounds: 10000 + # Prevent unsafe passwords from being used; put them in lowercase! + # You should always set 'help' as unsafePassword due to possible conflicts. + # unsafePasswords: + # - '123456' + # - 'password' + # - 'help' + unsafePasswords: + - '123456' + - password + - qwerty + - '12345' + - '54321' + - '123456789' + - help + registration: + # Enable registration on the server? + enabled: true + # Send every X seconds a message to a player to + # remind him that he has to login/register + messageInterval: 5 + # Only registered and logged in players can play. + # See restrictions for exceptions + force: true + # Type of registration: PASSWORD or EMAIL + # PASSWORD = account is registered with a password supplied by the user; + # EMAIL = password is generated and sent to the email provided by the user. + # More info at https://github.com/AuthMe/AuthMeReloaded/wiki/Registration + type: PASSWORD + # Second argument the /register command should take: + # NONE = no 2nd argument + # CONFIRMATION = must repeat first argument (pass or email) + # EMAIL_OPTIONAL = for password register: 2nd argument can be empty or have email address + # EMAIL_MANDATORY = for password register: 2nd argument MUST be an email address + secondArg: CONFIRMATION + email: + # Should we unregister the player when he didn't verify the email? + # This only works if you enabled email registration. + unregisterOnEmailVerificationFailure: false + # How many minutes should we wait before unregister the player + # when he didn't verify the email? + unregisterAfterMinutes: 10 + # Do we force kick a player after a successful registration? + # Do not use with login feature below + forceKickAfterRegister: false + # Does AuthMe need to enforce a /login after a successful registration? + forceLoginAfterRegister: false + # Should we delay the join message and display it once the player has logged in? + delayJoinMessage: false + # The custom join message that will be sent after a successful login, + # keep empty to use the original one. + # Available variables: + # {PLAYERNAME}: the player name (no colors) + # {DISPLAYNAME}: the player display name (with colors) + # {DISPLAYNAMENOCOLOR}: the player display name (without colors) + customJoinMessage: '' + # Should we remove the leave messages of unlogged users? + removeUnloggedLeaveMessage: false + # Should we remove join messages altogether? + removeJoinMessage: false + # Should we remove leave messages altogether? + removeLeaveMessage: false + # Do we need to add potion effect Blinding before login/register? + applyBlindEffect: false + # Do we need to prevent people to login with another case? + # If Xephi is registered, then Xephi can login, but not XEPHI/xephi/XePhI + preventOtherCase: true +GroupOptions: + # Enables switching a player to defined permission groups before they log in. + # See below for a detailed explanation. + enablePermissionCheck: false + # This is a very important option: if a registered player joins the server + # AuthMe will switch him to unLoggedInGroup. This should prevent all major exploits. + # You can set up your permission plugin with this special group to have no permissions, + # or only permission to chat (or permission to send private messages etc.). + # The better way is to set up this group with few permissions, so if a player + # tries to exploit an account they can do only what you've defined for the group. + # After login, the player will be moved to his correct permissions group! + # Please note that the group name is case-sensitive, so 'admin' is different from 'Admin' + # Otherwise your group will be wiped and the player will join in the default group []! + # Example: registeredPlayerGroup: 'NotLogged' + registeredPlayerGroup: '' + # Similar to above, unregistered players can be set to the following + # permissions group + unregisteredPlayerGroup: '' +Email: + # Email SMTP server host + mailSMTP: smtp.gmail.com + # Email SMTP server port + mailPort: 465 + # Only affects port 25: enable TLS/STARTTLS? + useTls: true + # Email account which sends the mails + mailAccount: '' + # Email account password + mailPassword: '' + # Email address, fill when mailAccount is not the email address of the account + mailAddress: '' + # Custom sender name, replacing the mailAccount name in the email + mailSenderName: '' + # Recovery password length + RecoveryPasswordLength: 8 + # Mail Subject + mailSubject: Your new AuthMe password + # Like maxRegPerIP but with email + maxRegPerEmail: 1 + # Recall players to add an email? + recallPlayers: false + # Delay in minute for the recall scheduler + delayRecall: 5 + # Send the new password drawn in an image? + generateImage: false + # The OAuth2 token + emailOauth2Token: '' + # Email notifications when the server shuts down + shutDownEmail: false + # Email notification address when the server is shut down + shutDownEmailAddress: your@mail.com +Hooks: + # Do we need to hook with multiverse for spawn checking? + multiverse: true + # Do we need to hook with BungeeCord? + bungeecord: false + # Do we need to hook with Velocity? + velocity: false + # How many ticks should we wait before sending login info to proxy? + # Change this to higher if your player has high ping. + # See: https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/ + proxySendDelay: 10 + # Hook into floodgate. + # This must be true if you want to use other bedrock features. + floodgate: false + # Allow bedrock players join without check isValidName? + ignoreBedrockNameCheck: true + # Send player to this BungeeCord server after register/login + sendPlayerTo: '' + # Do we need to disable Essentials SocialSpy on join? + disableSocialSpy: false + # Do we need to force /motd Essentials command on join? + useEssentialsMotd: false +Protection: + # Enable some servers protection (country based login, antibot) + enableProtection: false + # Apply the protection also to registered usernames + enableProtectionRegistered: true + # Countries allowed to join the server and register. For country codes, see + # https://dev.maxmind.com/geoip/legacy/codes/iso3166/ + # Use "LOCALHOST" for local addresses. + # PLEASE USE QUOTES! + countries: + - US + - GB + - LOCALHOST + # Countries not allowed to join the server and register + # PLEASE USE QUOTES! + countriesBlacklist: + - A1 + # Do we need to enable automatic antibot system? + enableAntiBot: true + # The interval in seconds + antiBotInterval: 5 + # Max number of players allowed to login in the interval + # before the AntiBot system is enabled automatically + antiBotSensibility: 10 + # Duration in minutes of the antibot automatic system + antiBotDuration: 10 + # Delay in seconds before the antibot activation + antiBotDelay: 60 + quickCommands: + # Kicks the player that issued a command before the defined time after the join process + denyCommandsBeforeMilliseconds: 1000 +Purge: + # If enabled, AuthMe automatically purges old, unused accounts + useAutoPurge: false + # Number of days after which an account should be purged + daysBeforeRemovePlayer: 60 + # Do we need to remove the player.dat file during purge process? + removePlayerDat: false + # Do we need to remove the Essentials/userdata/player.yml file during purge process? + removeEssentialsFile: false + # World in which the players.dat are stored + defaultWorld: world + # Remove LimitedCreative/inventories/player.yml, player_creative.yml files during purge? + removeLimitedCreativesInventories: false + # Do we need to remove the AntiXRayData/PlayerData/player file during purge process? + removeAntiXRayFile: false + # Do we need to remove permissions? + removePermissions: false +Security: + SQLProblem: + # Stop the server if we can't contact the sql database + # Take care with this, if you set this to false, + # AuthMe will automatically disable and the server won't be protected! + stopServer: true + console: + # Copy AuthMe log output in a separate file as well? + logConsole: true + account: + haveIBeenPwned: + # Query haveibeenpwned.com with a hashed version of the password. + # This is used to check whether it is safe. + check: false + # If the password is used more than this number of times, it is considered unsafe. + limit: 0 + captcha: + # Enable captcha when a player uses wrong password too many times + useCaptcha: false + # Max allowed tries before a captcha is required + maxLoginTry: 5 + # Captcha length + captchaLength: 5 + # Minutes after which login attempts count is reset for a player + captchaCountReset: 60 + # Require captcha before a player may register? + requireForRegistration: false + tempban: + # Tempban a user's IP address if they enter the wrong password too many times + enableTempban: false + # How many times a user can attempt to login before their IP being tempbanned + maxLoginTries: 10 + # The length of time a IP address will be tempbanned in minutes + # Default: 480 minutes, or 8 hours + tempbanLength: 480 + # How many minutes before resetting the count for failed logins by IP and username + # Default: 480 minutes (8 hours) + minutesBeforeCounterReset: 480 + # The command to execute instead of using the internal ban system, empty if disabled. + # Available placeholders: %player%, %ip% + customCommand: '' + recoveryCode: + # Number of characters a recovery code should have (0 to disable) + length: 8 + # How many hours is a recovery code valid for? + validForHours: 4 + # Max number of tries to enter recovery code + maxTries: 3 + # How long a player has after password recovery to change their password + # without logging in. This is in minutes. + # Default: 2 minutes + passwordChangeTimeout: 2 + emailRecovery: + # Seconds a user has to wait for before a password recovery mail may be sent again + # This prevents an attacker from abusing AuthMe's email feature. + cooldown: 60 + privacy: + # The mail shown using /email show will be partially hidden + # E.g. (if enabled) + # original email: my.email@example.com + # hidden email: my.***@***mple.com + enableEmailMasking: false + # Minutes after which a verification code will expire + verificationCodeExpiration: 10 +Plugin: + updates: + # Check for updates on enabled from GitHub? + checkForUpdates: true + banners: + # Should we show the AuthMe banner on startup? + showBanners: true +# Before a user logs in, various properties are temporarily removed from the player, +# such as OP status, ability to fly, and walk/fly speed. +# Once the user is logged in, we add back the properties we previously saved. +# In this section, you may define how these properties should be handled. +# Read more at https://github.com/AuthMe/AuthMeReloaded/wiki/Limbo-players +limbo: + persistence: + # Besides storing the data in memory, you can define if/how the data should be persisted + # on disk. This is useful in case of a server crash, so next time the server starts we can + # properly restore things like OP status, ability to fly, and walk/fly speed. + # DISABLED: no disk storage, + # INDIVIDUAL_FILES: each player data in its own file, + # DISTRIBUTED_FILES: distributes players into different files based on their UUID, see below + type: INDIVIDUAL_FILES + # This setting only affects DISTRIBUTED_FILES persistence. The distributed file + # persistence attempts to reduce the number of files by distributing players into various + # buckets based on their UUID. This setting defines into how many files the players should + # be distributed. Possible values: ONE, FOUR, EIGHT, SIXTEEN, THIRTY_TWO, SIXTY_FOUR, + # ONE_TWENTY for 128, TWO_FIFTY for 256. + # For example, if you expect 100 non-logged in players, setting to SIXTEEN will average + # 6.25 players per file (100 / 16). + # Note: if you change this setting all data will be migrated. If you have a lot of data, + # change this setting only on server restart, not with /authme reload. + distributionSize: SIXTEEN + # Whether the player is allowed to fly: RESTORE, ENABLE, DISABLE, NOTHING. + # RESTORE sets back the old property from the player. NOTHING will prevent AuthMe + # from modifying the 'allow flight' property on the player. + restoreAllowFlight: RESTORE + # Restore fly speed: RESTORE, DEFAULT, MAX_RESTORE, RESTORE_NO_ZERO. + # RESTORE: restore the speed the player had; + # DEFAULT: always set to default speed; + # MAX_RESTORE: take the maximum of the player's current speed and the previous one + # RESTORE_NO_ZERO: Like 'restore' but sets speed to default if the player's speed was 0 + restoreFlySpeed: RESTORE_NO_ZERO + # Restore walk speed: RESTORE, DEFAULT, MAX_RESTORE, RESTORE_NO_ZERO. + # See above for a description of the values. + restoreWalkSpeed: RESTORE_NO_ZERO +BackupSystem: + # General configuration for backups: if false, no backups are possible + ActivateBackup: false + # Create backup at every start of server + OnServerStart: false + # Create backup at every stop of server + OnServerStop: true + # Windows only: MySQL installation path + MysqlWindowsPath: C:\Program Files\MySQL\MySQL Server 5.1\ +# Converter settings: see https://github.com/AuthMe/AuthMeReloaded/wiki/Converters +Converter: + CrazyLogin: + # CrazyLogin database file name + fileName: accounts.db + loginSecurity: + # LoginSecurity: convert from SQLite; if false we use MySQL + useSqlite: true + mySql: + # LoginSecurity MySQL: database host + host: '' + # LoginSecurity MySQL: database name + database: '' + # LoginSecurity MySQL: database user + user: '' + # LoginSecurity MySQL: password for database user + password: '' diff --git a/live-server/plugins/AuthMe/email.html b/live-server/plugins/AuthMe/email.html new file mode 100644 index 0000000..a2a7ed0 --- /dev/null +++ b/live-server/plugins/AuthMe/email.html @@ -0,0 +1,18 @@ +

+Dear , +

+ +

+This is your new AuthMe password for the server : +

+

+ +

+ +

+Do not forget to change password after login!
+/changepassword newPassword' +

+

+See you on ! +

\ No newline at end of file diff --git a/live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1524.yml b/live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1524.yml new file mode 100644 index 0000000..43951f4 --- /dev/null +++ b/live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1524.yml @@ -0,0 +1,194 @@ +# List of global tags: +# %nl% - Goes to new line. +# %username% - Replaces the username of the player receiving the message. +# %displayname% - Replaces the nickname (and colors) of the player receiving the message. + +# Registration +registration: + register_request: '&3Please, register to the server with the command: /register ' + command_usage: '&cUsage: /register ' + reg_only: '&4Only registered users can join the server! Please visit http://example.com to register yourself!' + kicked_admin_registered: 'An admin just registered you; please log in again.' + success: '&2Successfully registered!' + disabled: '&cIn-game registration is disabled!' + name_taken: '&cYou already have registered this username!' + +# Password errors on registration +password: + match_error: '&cPasswords didn''t match, check them again!' + name_in_password: '&cYou can''t use your name as password, please choose another one...' + unsafe_password: '&cThe chosen password isn''t safe, please choose another one...' + forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars' + wrong_length: '&cYour password is too short or too long! Please try with another one!' + +# Login +login: + command_usage: '&cUsage: /login ' + wrong_password: '&cWrong password!' + success: '&2Successful login!' + login_request: '&cPlease, login with the command: /login ' + timeout_error: '&4Login timeout exceeded, you have been kicked from the server, please try again!' + +# Errors +error: + unregistered_user: '&cThis user isn''t registered!' + denied_command: '&cIn order to use this command you must be authenticated!' + denied_chat: '&cIn order to chat you must be authenticated!' + not_logged_in: '&cYou''re not logged in!' + tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.' + max_registration: '&cYou have exceeded the maximum number of registrations (%reg_count/%max_acc %reg_names) for your connection!' + no_permission: '&4You don''t have the permission to perform this action!' + unexpected_error: '&4An unexpected error occurred, please contact an administrator!' + kick_for_vip: '&3A VIP player has joined the server when it was full!' + logged_in: '&cYou''re already logged in!' + kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!' + +# AntiBot +antibot: + kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.' + auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!' + auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!' + +unregister: + success: '&cSuccessfully unregistered!' + command_usage: '&cUsage: /unregister ' + +# Other messages +misc: + accounts_owned_self: 'You own %count accounts:' + accounts_owned_other: 'The player %name has %count accounts:' + account_not_activated: '&cYour account isn''t activated yet, please check your emails!' + password_changed: '&2Password changed successfully!' + logout: '&2Logged out successfully!' + reload: '&2Configuration and database have been reloaded correctly!' + usage_change_password: '&cUsage: /changepassword ' + +# Session messages +session: + invalid_session: '&cYour IP has been changed and your session data has expired!' + valid_session: '&2Logged-in due to Session Reconnection.' + +# Error messages when joining +on_join_validation: + name_length: '&4Your username is either too short or too long!' + characters_in_name: '&4Your username contains illegal characters. Allowed chars: %valid_chars' + country_banned: '&4Your country is banned from this server!' + not_owner_error: 'You are not the owner of this account. Please choose another name!' + kick_full_server: '&4The server is full, try again later!' + same_nick_online: '&4The same username is already playing on the server!' + invalid_name_case: 'You should join using username %valid, not %invalid.' + same_ip_online: 'A player with the same IP is already in game!' + quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.' + +# Email +email: + usage_email_add: '&cUsage: /email add ' + usage_email_change: '&cUsage: /email change ' + new_email_invalid: '&cInvalid new email, try again!' + old_email_invalid: '&cInvalid old email, try again!' + invalid: '&cInvalid email address, try again!' + added: '&2Email address successfully added to your account!' + request_confirmation: '&cPlease confirm your email address!' + changed: '&2Email address changed correctly!' + email_show: '&2Your current email address is: &f%email' + incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.' + already_used: '&4The email address is already being used' + send_failure: 'The email could not be sent. Please contact an administrator.' + no_email_for_account: '&2You currently don''t have email address associated with this account.' + add_email_request: '&3Please add your email to your account with the command: /email add ' + change_password_expired: 'You cannot change your password using this command anymore.' + email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.' + add_not_allowed: '&cAdding email was not allowed.' + change_not_allowed: '&cChanging email was not allowed.' + +# Password recovery by email +recovery: + forgot_password_hint: '&3Forgot your password? Please use the command: /email recovery ' + command_usage: '&cUsage: /email recovery ' + email_sent: '&2Recovery email sent successfully! Please check your email inbox!' + code: + code_sent: 'A recovery code to reset your password has been sent to your email.' + incorrect: 'The recovery code is not correct! You have %count tries remaining.' + tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.' + correct: 'Recovery code entered correctly!' + change_password: 'Please use the command /email setpassword to change your password immediately.' + +# Captcha +captcha: + usage_captcha: '&3To log in you have to solve a captcha code, please use the command: /captcha %captcha_code' + wrong_captcha: '&cWrong captcha, please type "/captcha %captcha_code" into the chat!' + valid_captcha: '&2Captcha code solved correctly!' + captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code' + register_captcha_valid: '&2Valid captcha! You may now register with /register' + +# Verification code +verification: + code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.' + command_usage: '&cUsage: /verification ' + incorrect_code: '&cIncorrect code, please type "/verification " into the chat, using the code you received by email' + success: '&2Your identity has been verified! You can now execute all commands within the current session!' + already_verified: '&2You can already execute every sensitive command within the current session!' + code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!' + email_needed: '&3To verify your identity you need to link an email address with your account!!' + +# Two-factor authentication +two_factor: + code_created: '&2Your secret code is %code. You can scan it from here %url' + confirmation_required: 'Please confirm your code with /2fa confirm ' + code_required: 'Please submit your two-factor authentication code with /2fa code ' + already_enabled: 'Two-factor authentication is already enabled for your account!' + enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add' + enable_success: 'Successfully enabled two-factor authentication for your account' + enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add' + not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add' + removed_success: 'Successfully removed two-factor auth from your account' + invalid_code: 'Invalid code!' + +# Time units +time: + second: 'second' + seconds: 'seconds' + minute: 'minute' + minutes: 'minutes' + hour: 'hour' + hours: 'hours' + day: 'day' + days: 'days' + +# Command validation messages +command: + player_only: '&cThis command is only for players.' + player_only_alternative: '&cPlayer only! Please use %alternative instead.' + failed_to_parse: '&4Failed to parse AuthMe command!' + unknown: '&4Unknown command!' + incorrect_arguments: '&4Incorrect command arguments!' + did_you_mean: '&eDid you mean &6%cmd&e?' + see_help: '&eUse the command &6/%cmd&e to view help.' + detailed_help: '&6Detailed help: &f/%cmd' + +# Admin command messages +admin: + force_login: + player_offline: '&cPlayer needs to be online!' + forbidden: '&cYou cannot force login the player %name!' + success: '&2Force login for %name performed!' + accounts: + ip_not_found: '&cThis IP does not exist in the database.' + single_account: '&2%name is a single account player.' + no_last_ip: '&cNo known last IP address for player.' + email_show: '&2%name''s email: %email' + antibot: + status: '&2AntiBot status: %status' + override_enabled: '&2AntiBot Manual Override: enabled!' + override_disabled: '&2AntiBot Manual Override: disabled!' + invalid_mode: '&cInvalid AntiBot mode!' + reload: + db_type_change: '&eNote: cannot change database type during /authme reload.' + error: '&cError occurred during reload of AuthMe.' + spawn: + set_success: '&2Correctly defined new spawn point.' + set_fail: '&cSetSpawn has failed, please retry.' + first_set_success: '&2Correctly defined new first spawn point.' + first_set_fail: '&cSetFirstSpawn has failed, please retry.' + not_defined: '&cSpawn has failed, please try to define the spawn.' + first_not_defined: '&cFirst spawn has failed, please try to define the first spawn.' diff --git a/live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1743.yml b/live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1743.yml new file mode 100644 index 0000000..14ec80b --- /dev/null +++ b/live-server/plugins/AuthMe/messages/backup_messages_en_20260430_1743.yml @@ -0,0 +1,193 @@ +# Registration +registration: + disabled: '&cIn-game registration is disabled!' + name_taken: '&cYou already have registered this username!' + register_request: '&3Please, register to the server with the command: /register ' + command_usage: '&cUsage: /register ' + reg_only: '&4Only registered users can join the server! Please visit http://example.com to register yourself!' + success: '&2Successfully registered!' + kicked_admin_registered: 'An admin just registered you; please log in again.' +# Password errors on registration +password: + match_error: '&cPasswords didn''t match, check them again!' + name_in_password: '&cYou can''t use your name as password, please choose another one...' + unsafe_password: '&cThe chosen password isn''t safe, please choose another one...' + forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars' + wrong_length: '&cYour password is too short or too long! Please try with another one!' +# Login +login: + command_usage: '&cUsage: /login ' + wrong_password: '&cWrong password!' + success: '&2Successful login!' + login_request: '&cPlease, login with the command: /login ' + timeout_error: '&4Login timeout exceeded, you have been kicked from the server, please try again!' +# Errors +error: + denied_command: '&cIn order to use this command you must be authenticated!' + denied_chat: '&cIn order to chat you must be authenticated!' + unregistered_user: '&cThis user isn''t registered!' + not_logged_in: '&cYou''re not logged in!' + no_permission: '&4You don''t have the permission to perform this action!' + unexpected_error: '&4An unexpected error occurred, please contact an administrator!' + max_registration: '&cYou have exceeded the maximum number of registrations (%reg_count/%max_acc %reg_names) for your connection!' + logged_in: '&cYou''re already logged in!' + kick_for_vip: '&3A VIP player has joined the server when it was full!' + kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!' + tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.' +# AntiBot +antibot: + kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.' + auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!' + auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!' +# Unregister +unregister: + success: '&cSuccessfully unregistered!' + command_usage: '&cUsage: /unregister ' +# Other messages +misc: + account_not_activated: '&cYour account isn''t activated yet, please check your emails!' + password_changed: '&2Password changed successfully!' + logout: '&2Logged out successfully!' + reload: '&2Configuration and database have been reloaded correctly!' + usage_change_password: '&cUsage: /changepassword ' + accounts_owned_self: 'You own %count accounts:' + accounts_owned_other: 'The player %name has %count accounts:' +# Session messages +session: + valid_session: '&2Logged-in due to Session Reconnection.' + invalid_session: '&cYour IP has been changed and your session data has expired!' +# Error messages when joining +on_join_validation: + same_ip_online: 'A player with the same IP is already in game!' + same_nick_online: '&4The same username is already playing on the server!' + name_length: '&4Your username is either too short or too long!' + characters_in_name: '&4Your username contains illegal characters. Allowed chars: %valid_chars' + kick_full_server: '&4The server is full, try again later!' + country_banned: '&4Your country is banned from this server!' + not_owner_error: 'You are not the owner of this account. Please choose another name!' + invalid_name_case: 'You should join using username %valid, not %invalid.' + quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.' +# Email +email: + add_email_request: '&3Please add your email to your account with the command: /email add ' + usage_email_add: '&cUsage: /email add ' + usage_email_change: '&cUsage: /email change ' + new_email_invalid: '&cInvalid new email, try again!' + old_email_invalid: '&cInvalid old email, try again!' + invalid: '&cInvalid email address, try again!' + added: '&2Email address successfully added to your account!' + add_not_allowed: '&cAdding email was not allowed.' + request_confirmation: '&cPlease confirm your email address!' + changed: '&2Email address changed correctly!' + change_not_allowed: '&cChanging email was not allowed.' + email_show: '&2Your current email address is: &f%email' + no_email_for_account: '&2You currently don''t have email address associated with this account.' + already_used: '&4The email address is already being used' + incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.' + send_failure: 'The email could not be sent. Please contact an administrator.' + change_password_expired: 'You cannot change your password using this command anymore.' + email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.' +# Password recovery by email +recovery: + forgot_password_hint: '&3Forgot your password? Please use the command: /email recovery ' + command_usage: '&cUsage: /email recovery ' + email_sent: '&2Recovery email sent successfully! Please check your email inbox!' + code: + code_sent: 'A recovery code to reset your password has been sent to your email.' + incorrect: 'The recovery code is not correct! You have %count tries remaining.' + tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.' + correct: 'Recovery code entered correctly!' + change_password: 'Please use the command /email setpassword to change your password immediately.' +# Captcha +captcha: + usage_captcha: '&3To log in you have to solve a captcha code, please use the command: /captcha %captcha_code' + wrong_captcha: '&cWrong captcha, please type "/captcha %captcha_code" into the chat!' + valid_captcha: '&2Captcha code solved correctly!' + captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code' + register_captcha_valid: '&2Valid captcha! You may now register with /register' +# Verification code +verification: + code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.' + command_usage: '&cUsage: /verification ' + incorrect_code: '&cIncorrect code, please type "/verification " into the chat, using the code you received by email' + success: '&2Your identity has been verified! You can now execute all commands within the current session!' + already_verified: '&2You can already execute every sensitive command within the current session!' + code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!' + email_needed: '&3To verify your identity you need to link an email address with your account!!' +# Time units +time: + second: 'second' + seconds: 'seconds' + minute: 'minute' + minutes: 'minutes' + hour: 'hour' + hours: 'hours' + day: 'day' + days: 'days' +# Two-factor authentication +two_factor: + code_created: '&2Your secret code is %code. You can scan it from here %url' + confirmation_required: 'Please confirm your code with /2fa confirm ' + code_required: 'Please submit your two-factor authentication code with /2fa code ' + already_enabled: 'Two-factor authentication is already enabled for your account!' + enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add' + enable_success: 'Successfully enabled two-factor authentication for your account' + enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add' + not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add' + removed_success: 'Successfully removed two-factor auth from your account' + invalid_code: 'Invalid code!' +# Dialog UI +dialog: + login: + title: '&6Login' + password: '&fPassword' + button: '&aLogin' + register: + title: '&6Register' + password: '&fPassword' + confirm_password: '&fConfirm Password' + email: '&fEmail' + confirm_email: '&fConfirm Email' + button: '&aRegister' + two_factor: + title: '&6Two-Factor Authentication' + code: '&f2FA Code' + button: '&aVerify' + button: + cancel: '&cCancel' +# Command validation messages +command: + player_only: '&cThis command is only for players.' + player_only_alternative: '&cPlayer only! Please use %alternative instead.' + failed_to_parse: '&4Failed to parse AuthMe command!' + unknown: '&4Unknown command!' + incorrect_arguments: '&4Incorrect command arguments!' + did_you_mean: '&eDid you mean &6%cmd&e?' + see_help: '&eUse the command &6/%cmd&e to view help.' + detailed_help: '&6Detailed help: &f/%cmd' +# Admin command messages +admin: + force_login: + player_offline: '&cPlayer needs to be online!' + forbidden: '&cYou cannot force login the player %name!' + success: '&2Force login for %name performed!' + accounts: + ip_not_found: '&cThis IP does not exist in the database.' + single_account: '&2%name is a single account player.' + no_last_ip: '&cNo known last IP address for player.' + email_show: '&2%name''s email: %email' + antibot: + status: '&2AntiBot status: %status' + override_enabled: '&2AntiBot Manual Override: enabled!' + override_disabled: '&2AntiBot Manual Override: disabled!' + invalid_mode: '&cInvalid AntiBot mode!' + reload: + db_type_change: '&eNote: cannot change database type during /authme reload.' + error: '&cError occurred during reload of AuthMe.' + spawn: + set_success: '&2Correctly defined new spawn point.' + set_fail: '&cSetSpawn has failed, please retry.' + first_set_success: '&2Correctly defined new first spawn point.' + first_set_fail: '&cSetFirstSpawn has failed, please retry.' + not_defined: '&cSpawn has failed, please try to define the spawn.' + first_not_defined: '&cFirst spawn has failed, please try to define the first spawn.' diff --git a/live-server/plugins/AuthMe/messages/help_en.yml b/live-server/plugins/AuthMe/messages/help_en.yml new file mode 100644 index 0000000..bcc501b --- /dev/null +++ b/live-server/plugins/AuthMe/messages/help_en.yml @@ -0,0 +1,45 @@ +# Translation config for the AuthMe help, e.g. when /authme help or /authme help register is called + +# ------------------------------------------------------- +# List of texts used in the help section +common: + header: '==========[ AuthMeReloaded HELP ]==========' + optional: 'Optional' + hasPermission: 'You have permission' + noPermission: 'No permission' + default: 'Default' + result: 'Result' + defaultPermissions: + notAllowed: 'No permission' + opOnly: 'OP''s only' + allowed: 'Everyone allowed' + +# ------------------------------------------------------- +# Titles of the individual help sections +# Set the translation text to empty text to disable the section, e.g. to hide alternatives: +# alternatives: '' +section: + command: 'Command' + description: 'Short description' + detailedDescription: 'Detailed description' + arguments: 'Arguments' + permissions: 'Permissions' + alternatives: 'Alternatives' + children: 'Commands' + +# ------------------------------------------------------- +# You can translate the data for all commands using the below pattern. +# For example to translate /authme reload, create a section "authme.reload", or "login" for /login +# If the command has arguments, you can use arg1 as below to translate the first argument, and so forth +# Translations don't need to be complete; any missing section will be taken from the default silently +# Important: Put main commands like "authme" before their children (e.g. "authme.reload") +commands: + authme.register: + description: 'Register a player' + detailedDescription: 'Register the specified player with the specified password.' + arg1: + label: 'player' + description: 'Player name' + arg2: + label: 'password' + description: 'Password' diff --git a/live-server/plugins/AuthMe/messages/messages_en.yml b/live-server/plugins/AuthMe/messages/messages_en.yml new file mode 100644 index 0000000..8dc2af6 --- /dev/null +++ b/live-server/plugins/AuthMe/messages/messages_en.yml @@ -0,0 +1,160 @@ +# Registration +registration: + disabled: '&cIn-game registration is disabled!' + name_taken: '&cYou already have registered this username!' + register_request: '&3Please, register to the server with the command: /register ' + command_usage: '&cUsage: /register ' + reg_only: '&4Only registered users can join the server! Please visit http://example.com to register yourself!' + success: '&2Successfully registered!' + kicked_admin_registered: 'An admin just registered you; please log in again.' +# Password errors on registration +password: + match_error: '&cPasswords didn''t match, check them again!' + name_in_password: '&cYou can''t use your name as password, please choose another one...' + unsafe_password: '&cThe chosen password isn''t safe, please choose another one...' + pwned_password: '&cYour chosen password is not secure. It was used %pwned_count times already! Please use a strong password...' + forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars' + wrong_length: '&cYour password is too short or too long! Please try with another one!' +# Login +login: + command_usage: '&cUsage: /login ' + wrong_password: '&cWrong password!' + success: '&2Successful login!' + login_request: '&cPlease, login with the command: /login ' + timeout_error: '&4Login timeout exceeded, you have been kicked from the server, please try again!' +# Errors +error: + denied_command: '&cIn order to use this command you must be authenticated!' + denied_chat: '&cIn order to chat you must be authenticated!' + unregistered_user: '&cThis user isn''t registered!' + not_logged_in: '&cYou''re not logged in!' + no_permission: '&4You don''t have the permission to perform this action!' + unexpected_error: '&4An unexpected error occurred, please contact an administrator!' + max_registration: '&cYou have exceeded the maximum number of registrations (%reg_count/%max_acc %reg_names) for your connection!' + logged_in: '&cYou''re already logged in!' + kick_for_vip: '&3A VIP player has joined the server when it was full!' + kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!' + tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.' +# AntiBot +antibot: + kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.' + auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!' + auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!' +# Unregister +unregister: + success: '&cSuccessfully unregistered!' + command_usage: '&cUsage: /unregister ' +# Other messages +misc: + account_not_activated: '&cYour account isn''t activated yet, please check your emails!' + password_changed: '&2Password changed successfully!' + logout: '&2Logged out successfully!' + reload: '&2Configuration and database have been reloaded correctly!' + usage_change_password: '&cUsage: /changepassword ' + accounts_owned_self: 'You own %count accounts:' + accounts_owned_other: 'The player %name has %count accounts:' +# Session messages +session: + valid_session: '&2Logged-in due to Session Reconnection.' + invalid_session: '&cYour IP has been changed and your session data has expired!' +# Error messages when joining +on_join_validation: + same_ip_online: 'A player with the same IP is already in game!' + same_nick_online: '&4The same username is already playing on the server!' + name_length: '&4Your username is either too short or too long!' + characters_in_name: '&4Your username contains illegal characters. Allowed chars: %valid_chars' + kick_full_server: '&4The server is full, try again later!' + country_banned: '&4Your country is banned from this server!' + not_owner_error: 'You are not the owner of this account. Please choose another name!' + invalid_name_case: 'You should join using username %valid, not %invalid.' + quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.' +# Email +email: + add_email_request: '&3Please add your email to your account with the command: /email add ' + usage_email_add: '&cUsage: /email add ' + usage_email_change: '&cUsage: /email change ' + new_email_invalid: '&cInvalid new email, try again!' + old_email_invalid: '&cInvalid old email, try again!' + invalid: '&cInvalid email address, try again!' + added: '&2Email address successfully added to your account!' + add_not_allowed: '&cAdding email was not allowed.' + request_confirmation: '&cPlease confirm your email address!' + changed: '&2Email address changed correctly!' + change_not_allowed: '&cChanging email was not allowed.' + email_show: '&2Your current email address is: &f%email' + no_email_for_account: '&2You currently don''t have email address associated with this account.' + already_used: '&4The email address is already being used' + incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.' + send_failure: 'The email could not be sent. Please contact an administrator.' + change_password_expired: 'You cannot change your password using this command anymore.' + email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.' +# Password recovery by email +recovery: + forgot_password_hint: '&3Forgot your password? Please use the command: /email recovery ' + command_usage: '&cUsage: /email recovery ' + email_sent: '&2Recovery email sent successfully! Please check your email inbox!' + code: + code_sent: 'A recovery code to reset your password has been sent to your email.' + incorrect: 'The recovery code is not correct! You have %count tries remaining.' + tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.' + correct: 'Recovery code entered correctly!' + change_password: 'Please use the command /email setpassword to change your password immediately.' +# Captcha +captcha: + usage_captcha: '&3To log in you have to solve a captcha code, please use the command: /captcha %captcha_code' + wrong_captcha: '&cWrong captcha, please type "/captcha %captcha_code" into the chat!' + valid_captcha: '&2Captcha code solved correctly!' + captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code' + register_captcha_valid: '&2Valid captcha! You may now register with /register' +# Verification code +verification: + code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.' + command_usage: '&cUsage: /verification ' + incorrect_code: '&cIncorrect code, please type "/verification " into the chat, using the code you received by email' + success: '&2Your identity has been verified! You can now execute all commands within the current session!' + already_verified: '&2You can already execute every sensitive command within the current session!' + code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!' + email_needed: '&3To verify your identity you need to link an email address with your account!!' +# Time units +time: + second: 'second' + seconds: 'seconds' + minute: 'minute' + minutes: 'minutes' + hour: 'hour' + hours: 'hours' + day: 'day' + days: 'days' +# Two-factor authentication +two_factor: + code_created: '&2Your secret code is %code. You can scan it from here %url' + confirmation_required: 'Please confirm your code with /2fa confirm ' + code_required: 'Please submit your two-factor authentication code with /2fa code ' + already_enabled: 'Two-factor authentication is already enabled for your account!' + enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add' + enable_success: 'Successfully enabled two-factor authentication for your account' + enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add' + not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add' + removed_success: 'Successfully removed two-factor auth from your account' + invalid_code: 'Invalid code!' +# 3rd party features: GUI Captcha +gui_captcha: + captcha_window_name: '%random Verification' + captcha_clickable_name: '%random I am human' + message_on_retry: '&cVerification failed, you have %times retries left' + bedrock_auto_verify_success: '&aBedrock verification success!' + denied_message_sending: '&cPlease be verified before chatting!' + kick_on_timeout: '&cVerification timed out!' + kick_on_failed: '&cPlease complete the verification!' + success: '&aVerification success!' +# 3rd party features: Bedrock Auto Login +bedrock_auto_login: + success: '&aBedrock auto login success!' +# 3rd party features: Login Location Fix +login_location_fix: + fix_portal: '&aYou are stuck in portal during Login.' + fix_underground: '&aYou are stuck underground during Login.' + cannot_fix_underground: '&aYou are stuck underground during Login, but we cant fix it.' +# 3rd party features: Double Login Fix +double_login_fix: + fix_message: '&cYou have been disconnected due to doubled login.' diff --git a/live-server/plugins/AuthMe/new_email.html b/live-server/plugins/AuthMe/new_email.html new file mode 100644 index 0000000..74a1a08 --- /dev/null +++ b/live-server/plugins/AuthMe/new_email.html @@ -0,0 +1,127 @@ +
+ +
+ + + + + + +
+ + + + + + + + + + + + +
+

账户激活邮件

+
+ + + + + + +
+

Minecraft ·

+
+ + + + + + + + + + + + + + + + + + +
+ 您的账户初始密码为 +
+
+
已将地址()进行记录. +
+
请妥善保存,在新地址上进行登录时,需提供该密码. +
若非必要,请勿更换密码,否则将对您的账户安全构成威胁. +
账户所绑定的邮箱地址已被永久存储,需要更换请联系管理员. +
+
更换密码: /changepassword [新密码] +
+
+
账户将在激活后生效 +
欢迎您的加入~! +
+ +
+
+
+
+ + + + + + +
+

© 2024 HomoCraft. All rights reserved.

+ wdsj.in +
+
+
+
+
diff --git a/live-server/plugins/AuthMe/recovery_code_email.html b/live-server/plugins/AuthMe/recovery_code_email.html new file mode 100644 index 0000000..fc7327a --- /dev/null +++ b/live-server/plugins/AuthMe/recovery_code_email.html @@ -0,0 +1,9 @@ +

Dear ,

+ +

+ You have requested to reset your password on . To reset it, + please use the recovery code : /email code . +

+

+ The code expires in hours. +

diff --git a/live-server/plugins/AuthMe/shutdown.html b/live-server/plugins/AuthMe/shutdown.html new file mode 100644 index 0000000..2819ebf --- /dev/null +++ b/live-server/plugins/AuthMe/shutdown.html @@ -0,0 +1,118 @@ +
+ +
+ + + + + + +
+ + + + + + + + + + + + +
+

服务器关闭通知

+
+ + + + + + +
+

Minecraft ·

+
+ + + + + + + + + + + + + + + +
+
紧急通知
+
服务器当前已被关闭 +
+
请及时检查服务器运行状态. +
+
+
+
IrisCraft Team +
+ +
+
+
+
+ + + + + + +
+

© 2024 HomoCraft. All rights reserved.

+ wdsj.in +
+
+
+
+
diff --git a/live-server/plugins/AuthMe/spawn.yml b/live-server/plugins/AuthMe/spawn.yml new file mode 100755 index 0000000..9f39bc2 --- /dev/null +++ b/live-server/plugins/AuthMe/spawn.yml @@ -0,0 +1,14 @@ +spawn: + world: auth_limbo + x: 0.5 + y: 128.0 + z: 0.5 + yaw: 0.0 + pitch: 0.0 +firstspawn: + world: auth_limbo + x: 0.5 + y: 128.0 + z: 0.5 + yaw: 0.0 + pitch: 0.0 diff --git a/live-server/plugins/AuthMe/verification_code_email.html b/live-server/plugins/AuthMe/verification_code_email.html new file mode 100644 index 0000000..c12ae94 --- /dev/null +++ b/live-server/plugins/AuthMe/verification_code_email.html @@ -0,0 +1,20 @@ +

+ Dear , +

+ +

+ This is your temporary verification code for the server : +

+

+ +

+ +

+ This code will be valid for the next mins!
+ Use the command + /verification + to complete the verification process. +

+

+ See you on ! +

diff --git a/live-server/plugins/AuthMe/welcome.txt b/live-server/plugins/AuthMe/welcome.txt new file mode 100644 index 0000000..1c49f04 --- /dev/null +++ b/live-server/plugins/AuthMe/welcome.txt @@ -0,0 +1,3 @@ +Welcome {PLAYER} on {SERVER} server + +This server uses AuthMeReloaded protection! diff --git a/live-server/plugins/ComfyWhitelist/config.yml b/live-server/plugins/ComfyWhitelist/config.yml new file mode 100755 index 0000000..47588e2 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/config.yml @@ -0,0 +1,11 @@ +# Enabling or disabling ComfyWhitelist. (true / false) +enabled: false + +# Plugin's interface locales. +# (en, ru, uk, be, de, es, fr, it, ja, ko, nl, pt, sv, tr, zh, komi, lolcat). +locale: en + +# Enabling or disabling clear command. (true / false) +# HIGH RISK COMMAND - DATA FROM THE WHITELIST WILL NOT BE RETURNED!!! +# enable this command ONLY if you really need it and trust your administrators +clear-command: false diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_be.yml b/live-server/plugins/ComfyWhitelist/locales/messages_be.yml new file mode 100755 index 0000000..16bd5c4 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_be.yml @@ -0,0 +1,24 @@ +# Агульныя паведамленні +no-permission: "У вас няма дазволу карыстацца гэтай камандай." +inactive-command: "Гэтая каманда адключана праз канфігурацыю." +invalid-usage: "Няправільнае выкарыстанне каманды.\nВыкарыстоўвайце: " +unknown-subcommand: "Невядомая падкаманда. Напішыце /comfywl help для атрымання спісу каманд." +invalid-player-name: "Няправільнае імя гульца." +plugin-reloaded: "ComfyWhitelist паспяхова перазагружана." + +# Паведамленні пра статус белага спісу +whitelist-enabled: "ComfyWhitelist уключана." +whitelist-disabled: "ComfyWhitelist адключана." +whitelist-already-enabled: "ComfyWhitelist ужо уключана." +whitelist-already-disabled: "ComfyWhitelist ужо адключана." + +# Паведамленні пра кіраванне гульцамі +not-whitelisted: "Вы не ў белым спісе." +player-added: "Гулец дададзены да белага спісу." +player-removed: "Гулец выдалены з белага спісу." +non-existent-player-name: "У белым спісе немае гульца з імем ." + +# Паведамленні пра адлюстраванне белага спісу +whitelisted-players-list: "Гульцы ў белым спісе: " +empty-whitelisted-players-list: "Белы спіс пусты." +whitelist-cleared: "Усе гульцы выдаленыя з белага спісу." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_de.yml b/live-server/plugins/ComfyWhitelist/locales/messages_de.yml new file mode 100755 index 0000000..93a7039 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_de.yml @@ -0,0 +1,24 @@ +# Allgemeine Nachrichten +no-permission: "Du hast keine Berechtigung, diesen Befehl zu verwenden." +inactive-command: "Dieser Befehl ist deaktiviert via Konfiguration." +invalid-usage: "Ungültige Befehlsverwendung.\nVerwende: " +unknown-subcommand: "Unbekanntes Unterbefehl. Gib /comfywl help für eine Liste der Befehle ein." +invalid-player-name: "Ungültiger Spielername." +plugin-reloaded: "ComfyWhitelist wurde erfolgreich neu geladen." + +# Whitelist Statusnachrichten +whitelist-enabled: "ComfyWhitelist aktiviert." +whitelist-disabled: "ComfyWhitelist deaktiviert." +whitelist-already-enabled: "ComfyWhitelist bereits aktiviert." +whitelist-already-disabled: "ComfyWhitelist bereits deaktiviert." + +# Spielermanagement-Nachrichten +not-whitelisted: "Du bist nicht auf der Whitelist." +player-added: "Spieler wurde hinzugefügt zur Whitelist." +player-removed: "Spieler wurde entfernt von der Whitelist." +non-existent-player-name: "Es gibt keinen Spieler namens in der Whitelist." + +# Whitelist Anzeige Nachrichten +whitelisted-players-list: "Spieler auf der Whitelist: " +empty-whitelisted-players-list: "Whitelist ist leer." +whitelist-cleared: "Alle Spieler wurden entfernt von der Whitelist." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_en.yml b/live-server/plugins/ComfyWhitelist/locales/messages_en.yml new file mode 100755 index 0000000..89ad476 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_en.yml @@ -0,0 +1,24 @@ +# General messages +no-permission: "You do not have permission to use this command." +inactive-command: "This command is disabled via config." +invalid-usage: "Invalid command usage.\nUse: " +unknown-subcommand: "Unknown subcommand. Type /comfywl help for a list of commands." +invalid-player-name: "Invalid player name." +plugin-reloaded: "ComfyWhitelist has been successfully reloaded." + +# Whitelist status messages +whitelist-enabled: "ComfyWhitelist enabled." +whitelist-disabled: "ComfyWhitelist disabled." +whitelist-already-enabled: "ComfyWhitelist already enabled." +whitelist-already-disabled: "ComfyWhitelist already disabled." + +# Player management messages +not-whitelisted: "You are not whitelisted." +player-added: "Player has been added to the whitelist." +player-removed: "Player has been removed from the whitelist." +non-existent-player-name: "There is no player named in the whitelist." + +# Whitelist display messages +whitelisted-players-list: "Whitelisted players: " +empty-whitelisted-players-list: "Whitelist is empty." +whitelist-cleared: "All players have been removed from the whitelist." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_es.yml b/live-server/plugins/ComfyWhitelist/locales/messages_es.yml new file mode 100755 index 0000000..1477081 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_es.yml @@ -0,0 +1,24 @@ +# Mensajes generales +no-permission: "No tienes permiso para usar este comando." +inactive-command: "Este comando está deshabilitado via config." +invalid-usage: "Uso del comando inválido.\nUsa: " +unknown-subcommand: "Subcomando desconocido. Escribe /comfywl help para una lista de comandos." +invalid-player-name: "Nombre de jugador inválido." +plugin-reloaded: "ComfyWhitelist se ha recargado con éxito." + +# Mensajes de estado de la lista blanca +whitelist-enabled: "ComfyWhitelist activada." +whitelist-disabled: "ComfyWhitelist deshabilitada." +whitelist-already-enabled: "ComfyWhitelist ya está activada." +whitelist-already-disabled: "ComfyWhitelist ya está deshabilitada." + +# Mensajes de gestión de jugadores +not-whitelisted: "No estás en la lista blanca." +player-added: "Jugador ha sido agregado a la lista blanca." +player-removed: "Jugador ha sido eliminado de la lista blanca." +non-existent-player-name: "No hay ningún jugador llamado en la lista blanca." + +# Mensajes de visualización de la lista blanca +whitelisted-players-list: "Jugadores en la lista blanca: " +empty-whitelisted-players-list: "La lista blanca está vacía." +whitelist-cleared: "Todos los jugadores han sido eliminados de la lista blanca." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_fr.yml b/live-server/plugins/ComfyWhitelist/locales/messages_fr.yml new file mode 100755 index 0000000..4ef5b00 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_fr.yml @@ -0,0 +1,24 @@ +# Messages généraux +no-permission: "Vous n'avez pas la permission d'utiliser cette commande." +inactive-command: "Cette commande est désactivée via la configuration." +invalid-usage: "Utilisation de la commande invalide.\nUtilisez : " +unknown-subcommand: "Sous-commande inconnue. Tapez /comfywl help pour une liste de commandes." +invalid-player-name: "Nom de joueur invalide." +plugin-reloaded: "ComfyWhitelist a été rechargé avec succès." + +# Messages de statut de la liste blanche +whitelist-enabled: "ComfyWhitelist activé." +whitelist-disabled: "ComfyWhitelist désactivé." +whitelist-already-enabled: "ComfyWhitelist déjà activé." +whitelist-already-disabled: "ComfyWhitelist déjà désactivé." + +# Messages de gestion des joueurs +not-whitelisted: "Vous n'êtes pas sur la liste blanche." +player-added: "Joueur a été ajouté à la liste blanche." +player-removed: "Joueur a été supprimé de la liste blanche." +non-existent-player-name: "Il n'y a pas de joueur nommé dans la liste blanche." + +# Messages d'affichage de la liste blanche +whitelisted-players-list: "Joueurs sur liste blanche : " +empty-whitelisted-players-list: "La liste blanche est vide." +whitelist-cleared: "Tous les joueurs ont été supprimés de la liste blanche." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_it.yml b/live-server/plugins/ComfyWhitelist/locales/messages_it.yml new file mode 100755 index 0000000..4ca96a0 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_it.yml @@ -0,0 +1,24 @@ +# Messaggi generali +no-permission: "Non hai il permesso di usare questo comando." +inactive-command: "Questo comando è disabilitato tramite config." +invalid-usage: "Utilizzo del comando non valido.\nUsa: " +unknown-subcommand: "Sottocomando sconosciuto. Digita /comfywl help per un elenco di comandi." +invalid-player-name: "Nome giocatore non valido." +plugin-reloaded: "ComfyWhitelist è stato ricaricato con successo." + +# Messaggi di stato della whitelist +whitelist-enabled: "ComfyWhitelist abilitato." +whitelist-disabled: "ComfyWhitelist disabilitato." +whitelist-already-enabled: "ComfyWhitelist già abilitato." +whitelist-already-disabled: "ComfyWhitelist già disabilitato." + +# Messaggi di gestione dei giocatori +not-whitelisted: "Non sei sulla whitelist." +player-added: "Giocatore è stato aggiunto alla whitelist." +player-removed: "Giocatore è stato rimosso dalla whitelist." +non-existent-player-name: "Non c'è nessun giocatore chiamato nella whitelist." + +# Messaggi di visualizzazione della whitelist +whitelisted-players-list: "Giocatori in whitelist: " +empty-whitelisted-players-list: "La whitelist è vuota." +whitelist-cleared: "Tutti i giocatori sono stati rimossi dalla whitelist." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_ja.yml b/live-server/plugins/ComfyWhitelist/locales/messages_ja.yml new file mode 100755 index 0000000..011f2c0 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_ja.yml @@ -0,0 +1,24 @@ +# 一般的なメッセージ +no-permission: "このコマンドを使用する権限がありません。" +inactive-command: "このコマンドは設定で無効化されています。" +invalid-usage: "コマンドの使用が無効です。\n使い方: " +unknown-subcommand: "未知のサブコマンド。 コマンドリストを表示するには /comfywl help を入力します。" +invalid-player-name: "プレイヤー名が無効です。" +plugin-reloaded: "ComfyWhitelist が成功裏にリロードされました。" + +# ホワイトリストステータスメッセージ +whitelist-enabled: "ComfyWhitelist が有効になりました。" +whitelist-disabled: "ComfyWhitelist が無効化されました。" +whitelist-already-enabled: "ComfyWhitelist は既に有効化されています。" +whitelist-already-disabled: "ComfyWhitelist は既に無効化されています。" + +# プレイヤー管理メッセージ +not-whitelisted: "あなたはホワイトリストに登録されていません。" +player-added: "プレイヤー がホワイトリストに追加されました。" +player-removed: "プレイヤー がホワイトリストから削除されました。" +non-existent-player-name: "ホワイトリストには という名前のプレイヤーは存在しません。" + +# ホワイトリスト表示メッセージ +whitelisted-players-list: "ホワイトリストのプレイヤー: " +empty-whitelisted-players-list: "ホワイトリストはです。" +whitelist-cleared: "全プレイヤーがホワイトリストから削除されました。" diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_ko.yml b/live-server/plugins/ComfyWhitelist/locales/messages_ko.yml new file mode 100755 index 0000000..aac7a2c --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_ko.yml @@ -0,0 +1,24 @@ +# 일반 메시지 +no-permission: "이 명령어를 사용할 권한이 없습니다." +inactive-command: "이 명령어는 설정을 통해 비활성화되었습니다." +invalid-usage: "잘못된 명령어 사용입니다.\n사용법: " +unknown-subcommand: "알 수 없는 하위 명령어입니다. 명령어 목록을 보려면 /comfywl help를 입력하세요." +invalid-player-name: "잘못된 플레이어 이름입니다." +plugin-reloaded: "ComfyWhitelist가 성공적으로 리로드되었습니다." + +# 화이트리스트 상태 메시지 +whitelist-enabled: "ComfyWhitelist가 활성화되었습니다." +whitelist-disabled: "ComfyWhitelist가 비활성화되었습니다." +whitelist-already-enabled: "ComfyWhitelist는 이미 활성화된 상태입니다." +whitelist-already-disabled: "ComfyWhitelist는 이미 비활성화된 상태입니다." + +# 플레이어 관리 메시지 +not-whitelisted: "화이트리스트에 없습니다." +player-added: "플레이어 가 화이트리스트에 추가되었습니다." +player-removed: "플레이어 가 화이트리스트에서 제거되었습니다." +non-existent-player-name: "화이트리스트에 라는 이름의 플레이어는 존재하지 않습니다." + +# 화이트리스트 표시 메시지 +whitelisted-players-list: "화이트리스트의 플레이어들: " +empty-whitelisted-players-list: "화이트리스트가 비어있습니다." +whitelist-cleared: "모든 플레이어가 화이트리스트에서 제거되었습니다." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_komi.yml b/live-server/plugins/ComfyWhitelist/locales/messages_komi.yml new file mode 100755 index 0000000..36e71e0 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_komi.yml @@ -0,0 +1,24 @@ +# Обычные сообщения +no-permission: "Тый сез командаыт корыстны и пырыш адӧмас." +inactive-command: "Та команда кытсӧмсь ана конфигурация вара." +invalid-usage: "Нырысь команда корыс.\nКорысӧм: " +unknown-subcommand: "Нырысь пӧдкоманда. Командаысь списк вара /comfywl помощь тыны керет." +invalid-player-name: "Нырысь игрокын ним." +plugin-reloaded: "ComfyWhitelist успешно перезагруженысь." + +# Сообщения статуса белого списка +whitelist-enabled: "ComfyWhitelist включенысь." +whitelist-disabled: "ComfyWhitelist выключенысь." +whitelist-already-enabled: "ComfyWhitelist уже включенысь." +whitelist-already-disabled: "ComfyWhitelist уже выключенысь." + +# Сообщения управления игроками +not-whitelisted: "Тый та белый списокын нет." +player-added: "Игрок белый списокын добавленысь." +player-removed: "Игрок белый списокыннун удаленысь." +non-existent-player-name: "Белый списокын та нимысь игрок нет." + +# Сообщения отображения белого списка +whitelisted-players-list: "Белый списокысь игрокыс: " +empty-whitelisted-players-list: "Белый список пуст." +whitelist-cleared: "Белый списокыннун кышӧдӧй игрокыс удаленысь." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_lolcat.yml b/live-server/plugins/ComfyWhitelist/locales/messages_lolcat.yml new file mode 100755 index 0000000..3ff8fea --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_lolcat.yml @@ -0,0 +1,24 @@ +# GENERAL MESSAGES +no-permission: "U CANT HAZ PERMISSION 2 USE DIS COMMAND." +inactive-command: "DIS COMMAND IZ OFF VIA CONFIG." +invalid-usage: "INVALID COMMAND USAGE.\nUSE: " +unknown-subcommand: "UNKNOWN SUBCOMMAND. TYPE /COMFYWL HELP 4 LIST OF COMMANDS." +invalid-player-name: "BAD PLAYER NAME." +plugin-reloaded: "ComfyWhitelist IZ BACK." + +# WHITELIST STATUS MESSAGES +whitelist-enabled: "ComfyWhitelist ON." +whitelist-disabled: "ComfyWhitelist OFF." +whitelist-already-enabled: "ComfyWhitelist ALREADY ON." +whitelist-already-disabled: "ComfyWhitelist ALREADY OFF." + +# PLAYER MANAGEMENT MESSAGES +not-whitelisted: "U NOT ON WHITELIST." +player-added: "PLAYER ADDED 2 WHITELIST." +player-removed: "PLAYER REMOVED FROM WHITELIST." +non-existent-player-name: "NO PLAYER NAMED ON WHITELIST." + +# WHITELIST DISPLAY MESSAGES +whitelisted-players-list: "PLAYERS ON WHITELIST: " +empty-whitelisted-players-list: "WHITELIST EMPTY." +whitelist-cleared: "ALL PLAYERS REMOVED FROM WHITELIST." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_nl.yml b/live-server/plugins/ComfyWhitelist/locales/messages_nl.yml new file mode 100755 index 0000000..0b767ac --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_nl.yml @@ -0,0 +1,24 @@ +# Algemene berichten +no-permission: "Je hebt geen toestemming om dit commando te gebruiken." +inactive-command: "Dit commando is uitgeschakeld via de configuratie." +invalid-usage: "Ongeldig commandogebruik.\nGebruik: " +unknown-subcommand: "Onbekend subcommando. Typ /comfywl help voor een lijst met commando's." +invalid-player-name: "Ongeldige spelersnaam." +plugin-reloaded: "ComfyWhitelist is succesvol herladen." + +# Whitelist statusberichten +whitelist-enabled: "ComfyWhitelist ingeschakeld." +whitelist-disabled: "ComfyWhitelist uitgeschakeld." +whitelist-already-enabled: "ComfyWhitelist al ingeschakeld." +whitelist-already-disabled: "ComfyWhitelist al uitgeschakeld." + +# Spelersbeheer berichten +not-whitelisted: "Je staat niet op de whitelist." +player-added: "Speler is toegevoegd aan de whitelist." +player-removed: "Speler is verwijderd van de whitelist." +non-existent-player-name: "Er is geen speler met de naam op de whitelist." + +# Whitelist weergave berichten +whitelisted-players-list: "Whitelist spelers: " +empty-whitelisted-players-list: "Whitelist is leeg." +whitelist-cleared: "Alle spelers zijn verwijderd van de whitelist." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_pt.yml b/live-server/plugins/ComfyWhitelist/locales/messages_pt.yml new file mode 100755 index 0000000..3cc1c20 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_pt.yml @@ -0,0 +1,24 @@ +# Mensagens gerais +no-permission: "Você não tem permissão para usar este comando." +inactive-command: "Este comando está desativado via configuração." +invalid-usage: "Uso inválido do comando.\nUse: " +unknown-subcommand: "Subcomando desconhecido. Digite /comfywl help para uma lista de comandos." +invalid-player-name: "Nome de jogador inválido." +plugin-reloaded: "ComfyWhitelist foi recarregado com sucesso." + +# Mensagens de status da lista de permissões +whitelist-enabled: "ComfyWhitelist ativado." +whitelist-disabled: "ComfyWhitelist desativado." +whitelist-already-enabled: "ComfyWhitelist já ativado." +whitelist-already-disabled: "ComfyWhitelist já desativado." + +# Mensagens de gerenciamento de jogadores +not-whitelisted: "Você não está na lista de permissões." +player-added: "Jogador foi adicionado à lista de permissões." +player-removed: "Jogador foi removido da lista de permissões." +non-existent-player-name: "Não existe nenhum jogador chamado na lista de permissões." + +# Mensagens de exibição da lista de permissões +whitelisted-players-list: "Jogadores na lista de permissões: " +empty-whitelisted-players-list: "A lista de permissões está vazia." +whitelist-cleared: "Todos os jogadores foram removidos da lista de permissões." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_ru.yml b/live-server/plugins/ComfyWhitelist/locales/messages_ru.yml new file mode 100755 index 0000000..a246093 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_ru.yml @@ -0,0 +1,24 @@ +# Общие сообщения +no-permission: "У вас недостаточно полномочий для использования этой команды." +inactive-command: "Данная команда выключена через конфиг." +invalid-usage: "Недопустимое использование команды.\nИспользуйте: " +unknown-subcommand: "Неизвестная подкоманда. Введите /comfywl help для отображения доступных подкоманд." +invalid-player-name: "Некорректный формат имени игрока." +plugin-reloaded: "ComfyWhitelist успешно перезагружен." + +# Сообщения о статусе вайтлиста +whitelist-enabled: "ComfyWhitelist включен." +whitelist-disabled: "ComfyWhitelist выключен." +whitelist-already-enabled: "ComfyWhitelist уже включен." +whitelist-already-disabled: "ComfyWhitelist уже выключен." + +# Сообщения об управлении игроками +not-whitelisted: "Вы не в вайтлисте." +player-added: "Игрок добавлен в вайтлист." +player-removed: "Игрок удален из вайтлиста." +non-existent-player-name: "Игрока с именем нет в вайтлисте." + +# Сообщения о отображении вайтлиста +whitelisted-players-list: "Игроки в вайтлисте: " +empty-whitelisted-players-list: "В вайтлисте нет игроков." +whitelist-cleared: "Все игроки удалены из вайтлиста." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_sv.yml b/live-server/plugins/ComfyWhitelist/locales/messages_sv.yml new file mode 100755 index 0000000..d844bf2 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_sv.yml @@ -0,0 +1,24 @@ +# Generella meddelanden +no-permission: "Du har inte tillåtelse att använda detta kommando." +inactive-command: "Det här kommandot är inaktiverat via konfigurationen." +invalid-usage: "Ogiltig kommandoanvändning.\nAnvänd: " +unknown-subcommand: "Okänt underkommando. Skriv /comfywl help för en lista över kommandon." +invalid-player-name: "Ogiltigt spelarnamn." +plugin-reloaded: "ComfyWhitelist har laddats om framgångsrikt." + +# Whitelist statusmeddelanden +whitelist-enabled: "ComfyWhitelist aktiverad." +whitelist-disabled: "ComfyWhitelist inaktiverad." +whitelist-already-enabled: "ComfyWhitelist är redan aktiverad." +whitelist-already-disabled: "ComfyWhitelist är redan inaktiverad." + +# Spelarhanteringsmeddelanden +not-whitelisted: "Du finns inte i whitelist." +player-added: "Spelaren har lagts till i whitelist." +player-removed: "Spelaren har tagits bort från whitelist." +non-existent-player-name: "Det finns ingen spelare med namnet i whitelist." + +# Whitelist visningsmeddelanden +whitelisted-players-list: "Spelare i whitelist: " +empty-whitelisted-players-list: "Whitelist är tom." +whitelist-cleared: "Alla spelare har tagits bort från whitelist." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_tr.yml b/live-server/plugins/ComfyWhitelist/locales/messages_tr.yml new file mode 100755 index 0000000..a51e423 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_tr.yml @@ -0,0 +1,24 @@ +# Genel mesajlar +no-permission: "Bu komutu kullanma yetkiniz yok." +inactive-command: "Bu komut, yapılandırma üzerinden devre dışı." +invalid-usage: "Geçersiz komut kullanımı.\nKullan: " +unknown-subcommand: "Bilinmeyen alt komut. Komut listesi için /comfywl help yazın." +invalid-player-name: "Geçersiz oyuncu adı." +plugin-reloaded: "ComfyWhitelist başarıyla yeniden yüklendi." + +# Beyaz liste durum mesajları +whitelist-enabled: "ComfyWhitelist etkinleştirildi." +whitelist-disabled: "ComfyWhitelist devre dışı bırakıldı." +whitelist-already-enabled: "ComfyWhitelist zaten etkin." +whitelist-already-disabled: "ComfyWhitelist zaten devre dışı." + +# Oyuncu yönetimi mesajları +not-whitelisted: "Beyaz listeye eklenmemişsiniz." +player-added: "Oyuncu , beyaz listeye eklendi." +player-removed: "Oyuncu , beyaz listeden çıkarıldı." +non-existent-player-name: "Beyaz listede adında bir oyuncu yok." + +# Beyaz liste görüntüleme mesajları +whitelisted-players-list: "Beyaz listeye eklenmiş oyuncular: " +empty-whitelisted-players-list: "Beyaz liste boş." +whitelist-cleared: "Tüm oyuncular beyaz listeden kaldırıldı." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_uk.yml b/live-server/plugins/ComfyWhitelist/locales/messages_uk.yml new file mode 100755 index 0000000..dbcec6c --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_uk.yml @@ -0,0 +1,24 @@ +# Загальні повідомлення +no-permission: "У вас немає дозволу використовувати цю команду." +inactive-command: "Ця команда вимкнена через конфігурацію." +invalid-usage: "Недійсне використання команди.\nВикористовуйте: " +unknown-subcommand: "Невідома підкоманда. Введіть /comfywl help для отримання списку команд." +invalid-player-name: "Недійсне ім'я гравця." +plugin-reloaded: "ComfyWhitelist успішно перезавантажено." + +# Повідомлення про статус білого списку +whitelist-enabled: "ComfyWhitelist увімкнено." +whitelist-disabled: "ComfyWhitelist вимкнено." +whitelist-already-enabled: "ComfyWhitelist уже увімкнено." +whitelist-already-disabled: "ComfyWhitelist уже вимкнено." + +# Повідомлення про управління гравцями +not-whitelisted: "Ви не в білому списку." +player-added: "Гравець додано до білого списку." +player-removed: "Гравець видалено з білого списку." +non-existent-player-name: "У білому списку немає гравця з ім'ям ." + +# Повідомлення про відображення білого списку +whitelisted-players-list: "Гравці в білому списку: " +empty-whitelisted-players-list: "Білий список порожній." +whitelist-cleared: "Всі гравці видалені з білого списку." diff --git a/live-server/plugins/ComfyWhitelist/locales/messages_zh.yml b/live-server/plugins/ComfyWhitelist/locales/messages_zh.yml new file mode 100755 index 0000000..ef17f62 --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/locales/messages_zh.yml @@ -0,0 +1,24 @@ +# 一般消息 +no-permission: "您没有权限使用此命令。" +inactive-command: "此命令已通过配置禁用。" +invalid-usage: "命令使用无效。\n使用:" +unknown-subcommand: "未知的子命令。键入/comfywl help以获取命令列表。" +invalid-player-name: "玩家名称无效。" +plugin-reloaded: "ComfyWhitelist 已成功重新加载。" + +# 白名单状态消息 +whitelist-enabled: "ComfyWhitelist 已启用。" +whitelist-disabled: "ComfyWhitelist 已禁用。" +whitelist-already-enabled: "ComfyWhitelist 已经启用。" +whitelist-already-disabled: "ComfyWhitelist 已经禁用。" + +# 玩家管理消息 +not-whitelisted: "你不在白名单中。" +player-added: "玩家 已被添加到白名单中。" +player-removed: "玩家 已从白名单中移除。" +non-existent-player-name: "白名单中没有名为 的玩家。" + +# 白名单显示消息 +whitelisted-players-list: "白名单中的玩家:" +empty-whitelisted-players-list: "白名单为空。" +whitelist-cleared: "所有玩家已从白名单中移除。" diff --git a/live-server/plugins/ComfyWhitelist/whitelist.yml b/live-server/plugins/ComfyWhitelist/whitelist.yml new file mode 100755 index 0000000..9dcb06e --- /dev/null +++ b/live-server/plugins/ComfyWhitelist/whitelist.yml @@ -0,0 +1,7 @@ +players: +- s8n +- BingeEater +- YOU500 +- EnderBoy2882 +- MochaBun +- 64bitpotato diff --git a/live-server/plugins/CoreProtect/.license b/live-server/plugins/CoreProtect/.license new file mode 100755 index 0000000..e69de29 diff --git a/live-server/plugins/CoreProtect/config.yml b/live-server/plugins/CoreProtect/config.yml new file mode 100755 index 0000000..8064c87 --- /dev/null +++ b/live-server/plugins/CoreProtect/config.yml @@ -0,0 +1,148 @@ +# CoreProtect Config + +# CoreProtect is donationware. Obtain a donation key from coreprotect.net/donate/ +donation-key: + +# MySQL is optional and not required. +# If you prefer to use MySQL, enable the following and fill out the fields. +use-mysql: false +table-prefix: co_ +mysql-host: 127.0.0.1 +mysql-port: 3306 +mysql-database: database +mysql-username: root +mysql-password: + +# If modified, will automatically attempt to translate languages phrases. +# List of language codes: https://coreprotect.net/languages/ +language: en + +# If enabled, CoreProtect will check for updates when your server starts up. +# If an update is available, you'll be notified via your server console. +check-updates: false + +# If enabled, other plugins will be able to utilize the CoreProtect API. +api-enabled: true + +# If enabled, extra data is displayed during rollbacks and restores. +# Can be manually triggered by adding "#verbose" to your rollback command. +verbose: true + +# If no radius is specified in a rollback or restore, this value will be +# used as the radius. Set to "0" to disable automatically adding a radius. +default-radius: 10 + +# The maximum radius that can be used in a command. Set to "0" to disable. +# To run a rollback or restore without a radius, you can use "r:#global". +max-radius: 100 + +# If enabled, items taken from containers (etc) will be included in rollbacks. +rollback-items: true + +# If enabled, entities, such as killed animals, will be included in rollbacks. +rollback-entities: true + +# If enabled, generic data, like zombies burning in daylight, won't be logged. +skip-generic-data: true + +# Logs blocks placed by players. +block-place: true + +# Logs blocks broken by players. +block-break: true + +# Logs blocks that break off of other blocks; for example, a sign or torch +# falling off of a dirt block that a player breaks. This is required for +# beds/doors to properly rollback. +natural-break: true + +# Properly track block movement, such as sand or gravel falling. +block-movement: true + +# Properly track blocks moved by pistons. +pistons: true + +# Logs blocks that burn up in a fire. +block-burn: true + +# Logs when a block naturally ignites, such as from fire spreading. +block-ignite: true + +# Logs explosions, such as TNT and Creepers. +explosions: true + +# Track when an entity changes a block, such as an Enderman destroying blocks. +entity-change: true + +# Logs killed entities, such as killed cows and enderman. +entity-kills: true + +# Logs text on signs. If disabled, signs will be blank when rolled back. +sign-text: true + +# Logs lava and water sources placed/removed by players who are using buckets. +buckets: true + +# Logs natural tree leaf decay. +leaf-decay: true + +# Logs tree growth. Trees are linked to the player who planted the sapling. +tree-growth: true + +# Logs mushroom growth. +mushroom-growth: true + +# Logs natural vine growth. +vine-growth: true + +# Logs the spread of sculk blocks from sculk catalysts. +sculk-spread: true + +# Logs when portals such as Nether portals generate naturally. +portals: true + +# Logs water flow. If water destroys other blocks, such as torches, +# this allows it to be properly rolled back. +water-flow: true + +# Logs lava flow. If lava destroys other blocks, such as torches, +# this allows it to be properly rolled back. +lava-flow: true + +# Allows liquid to be properly tracked and linked to players. +# For example, if a player places water which flows and destroys torches, +# it can all be properly restored by rolling back that single player. +liquid-tracking: true + +# Track item transactions, such as when a player takes items from +# a chest, furnace, or dispenser. +item-transactions: true + +# Logs items dropped by players. +item-drops: true + +# Logs items picked up by players. +item-pickups: true + +# Track all hopper transactions, such as when a hopper removes items from a +# chest, furnace, or dispenser. +hopper-transactions: true + +# Track player interactions, such as when a player opens a door, presses +# a button, or opens a chest. Player interactions can't be rolled back. +player-interactions: true + +# Logs messages that players send in the chat. +player-messages: true + +# Logs all commands used by players. +player-commands: true + +# Logs the logins and logouts of players. +player-sessions: true + +# Logs when a player changes their Minecraft username. +username-changes: true + +# Logs changes made via the plugin "WorldEdit" if it's in use on your server. +worldedit: true diff --git a/live-server/plugins/CoreProtect/language.yml b/live-server/plugins/CoreProtect/language.yml new file mode 100755 index 0000000..af50a1d --- /dev/null +++ b/live-server/plugins/CoreProtect/language.yml @@ -0,0 +1,212 @@ +# CoreProtect Language File (en) + +ACTION_NOT_SUPPORTED: "That action is not supported by the command." +AMOUNT_BLOCK: "{0} {block|blocks}" +AMOUNT_CHUNK: "{0} {chunk|chunks}" +AMOUNT_ENTITY: "{0} {entity|entities}" +AMOUNT_ITEM: "{0} {item|items}" +API_TEST: "API test successful." +CACHE_ERROR: "WARNING: Error while validating {0} cache." +CACHE_RELOAD: "Forcing reload of {mapping|world} caches from database." +CHECK_CONFIG: "Please check config.yml" +COMMAND_CONSOLE: "Please run the command from the console." +COMMAND_NOT_FOUND: "Command \"{0}\" not found." +COMMAND_THROTTLED: "Please wait a moment and try again." +CONSUMER_ERROR: "Consumer queue processing already {paused|resumed}." +CONSUMER_TOGGLED: "Consumer queue processing has been {paused|resumed}." +CONTAINER_HEADER: "Container Transactions" +DATABASE_BUSY: "Database busy. Please try again later." +DATABASE_INDEX_ERROR: "Unable to validate database indexes." +DATABASE_LOCKED_1: "Database locked. Waiting up to 15 seconds..." +DATABASE_LOCKED_2: "Database is already in use. Please try again." +DATABASE_LOCKED_3: "To disable database locking, set \"database-lock: false\"." +DATABASE_LOCKED_4: "Disabling database locking can result in data corruption." +DATABASE_UNREACHABLE: "Database is unreachable. Discarding data and shutting down." +DEVELOPMENT_BRANCH: "Development branch detected, skipping patch scripts." +DIRT_BLOCK: "Placed a dirt block under you." +DISABLE_SUCCESS: "Success! Disabled {0}" +ENABLE_FAILED: "{0} was unable to start." +ENABLE_SUCCESS: "{0} has been successfully enabled!" +ENJOY_COREPROTECT: "Enjoy {0}? Join our Discord!" +FINISHING_CONVERSION: "Finishing up data conversion. Please wait..." +FINISHING_LOGGING: "Finishing up data logging. Please wait..." +FIRST_VERSION: "Initial DB: {0}" +GLOBAL_LOOKUP: "Don't specify a radius to do a global lookup." +GLOBAL_ROLLBACK: "Use \"{0}\" to do a global {rollback|restore}" +HELP_ACTION_1: "Restrict the lookup to a certain action." +HELP_ACTION_2: "Examples: [a:block], [a:+block], [a:-block] [a:click], [a:container], [a:inventory], [a:item], [a:kill], [a:chat], [a:command], [a:sign], [a:session], [a:username]" +HELP_COMMAND: "Display more info for that command." +HELP_EXCLUDE_1: "Exclude blocks/users." +HELP_EXCLUDE_2: "Examples: [e:stone], [e:Notch], [e:stone,Notch]" +HELP_HEADER: "{0} Help" +HELP_INCLUDE_1: "Include specific blocks/entities." +HELP_INCLUDE_2: "Examples: [i:stone], [i:zombie], [i:stone,wood,bedrock]" +HELP_INSPECT_1: "With the inspector enabled, you can do the following:" +HELP_INSPECT_2: "Left-click a block to see who placed that block." +HELP_INSPECT_3: "Right-click a block to see what adjacent block was broken." +HELP_INSPECT_4: "Place a block to see what block was broken at that location." +HELP_INSPECT_5: "Place a block in liquid (etc) to see who placed it." +HELP_INSPECT_6: "Right-click on a door, chest, etc, to see who last used it." +HELP_INSPECT_7: "Tip: You can use just \"/co i\" for quicker access." +HELP_INSPECT_COMMAND: "Turns the block inspector on or off." +HELP_LIST: "Displays a list of all commands." +HELP_LOOKUP_1: "Command shortcut." +HELP_LOOKUP_2: "Use after inspecting a block to view logs." +HELP_LOOKUP_COMMAND: "Advanced block data lookup." +HELP_NO_INFO: "Information for command \"{0}\" not found." +HELP_PARAMETER: "Please see \"{0}\" for detailed parameter info." +HELP_PARAMS_1: "Perform the {lookup|rollback|restore}." +HELP_PARAMS_2: "Specify the user(s) to {lookup|rollback|restore}." +HELP_PARAMS_3: "Specify the amount of time to {lookup|rollback|restore}." +HELP_PARAMS_4: "Specify a radius area to limit the {lookup|rollback|restore} to." +HELP_PARAMS_5: "Restrict the {lookup|rollback|restore} to a certain action." +HELP_PARAMS_6: "Include specific blocks/entities in the {lookup|rollback|restore}." +HELP_PARAMS_7: "Exclude blocks/users from the {lookup|rollback|restore}." +HELP_PURGE_1: "Delete data older than specified time." +HELP_PURGE_2: "For example, \"{0}\" will delete all data older than one month, and only keep the last 30 days of data." +HELP_PURGE_COMMAND: "Delete old block data." +HELP_RADIUS_1: "Specify a radius area." +HELP_RADIUS_2: "Examples: [r:10] (Only make changes within 10 blocks of you)" +HELP_RELOAD_COMMAND: "Reloads the configuration file." +HELP_RESTORE_COMMAND: "Restore block data." +HELP_ROLLBACK_COMMAND: "Rollback block data." +HELP_STATUS: "View the plugin status and version information." +HELP_STATUS_COMMAND: "Displays the plugin status." +HELP_TELEPORT: "Teleport to a location." +HELP_TIME_1: "Specify the amount of time to lookup." +HELP_TIME_2: "Examples: [t:2w,5d,7h,2m,10s], [t:5d2h], [t:2.50h]" +HELP_USER_1: "Specify the user(s) to lookup." +HELP_USER_2: "Examples: [u:Notch], [u:Notch,#enderman]" +INCOMPATIBLE_ACTION: "\"{0}\" can't be used with that action." +INSPECTOR_ERROR: "Inspector already {enabled|disabled}." +INSPECTOR_TOGGLED: "Inspector now {enabled|disabled}." +INTEGRATION_ERROR: "Unable to {initialize|disable} {0} logging." +INTEGRATION_SUCCESS: "{0} logging successfully {initialized|disabled}." +INTEGRATION_VERSION: "Invalid {0} version found." +INTERACTIONS_HEADER: "Player Interactions" +INVALID_ACTION: "That is not a valid action." +INVALID_BRANCH_1: "Invalid plugin version (branch has not been set)." +INVALID_BRANCH_2: "To continue, set project branch to \"development\"." +INVALID_BRANCH_3: "Running development code may result in data corruption." +INVALID_CONTAINER: "Please inspect a valid container first." +INVALID_DONATION_KEY: "Invalid donation key." +INVALID_INCLUDE: "\"{0}\" is an invalid block/entity name." +INVALID_INCLUDE_COMBO: "That is an invalid block/entity combination." +INVALID_RADIUS: "Please enter a valid radius." +INVALID_SELECTION: "{0} selection not found." +INVALID_USERNAME: "\"{0}\" is an invalid username." +INVALID_WORLD: "Please specify a valid world." +LATEST_VERSION: "Latest Version: {0}" +LINK_DISCORD: "Discord: {0}" +LINK_DOWNLOAD: "Download: {0}" +LINK_PATREON: "Patreon: {0}" +LINK_WIKI_BLOCK: "Block Names: {0}" +LINK_WIKI_ENTITY: "Entity Names: {0}" +LOGGING_ITEMS: "{0} items left to log. Please wait..." +LOGGING_TIME_LIMIT: "Logging time limit reached. Discarding data and shutting down." +LOOKUP_BLOCK: "{0} {placed|broke} {1}." +LOOKUP_CONTAINER: "{0} {added|removed} {1} {2}." +LOOKUP_HEADER: "{0} Lookup Results" +LOOKUP_INTERACTION: "{0} {clicked|killed} {1}." +LOOKUP_ITEM: "{0} {picked up|dropped} {1} {2}." +LOOKUP_LOGIN: "{0} logged {in|out}." +LOOKUP_PAGE: "Page {0}" +LOOKUP_PROJECTILE: "{0} {threw|shot} {1} {2}." +LOOKUP_ROWS_FOUND: "{0} {row|rows} found." +LOOKUP_SEARCHING: "Lookup searching. Please wait..." +LOOKUP_STORAGE: "{0} {deposited|withdrew} {1} {2}." +LOOKUP_TIME: "{0} ago" +LOOKUP_USERNAME: "{0} logged in as {1}." +MAXIMUM_RADIUS: "The maximum {lookup|rollback|restore} radius is {0}." +MISSING_ACTION_USER: "To use that action, please specify a user." +MISSING_LOOKUP_TIME: "Please specify the amount of time to {lookup|rollback|restore}." +MISSING_LOOKUP_USER: "Please specify a user or {block|radius} to lookup." +MISSING_PARAMETERS: "Please use \"{0}\"." +MISSING_ROLLBACK_RADIUS: "You did not specify a {rollback|restore} radius." +MISSING_ROLLBACK_USER: "You did not specify a {rollback|restore} user." +MYSQL_UNAVAILABLE: "Unable to connect to MySQL server." +NETWORK_CONNECTION: "Connection by {0} {successful|failed}. Using {1} {2}." +NETWORK_TEST: "Network test data has been successful sent." +NO_DATA: "No data found at {0}." +NO_DATA_LOCATION: "No {data|transactions|interactions|messages} found at this location." +NO_PERMISSION: "You do not have permission to do that." +NO_RESULTS: "No results found." +NO_RESULTS_PAGE: "No {results|data} found for that page." +NO_ROLLBACK: "No {pending|previous} rollback/restore found." +PATCH_INTERRUPTED: "Upgrade interrupted. Will try again on restart." +PATCH_OUTDATED_1: "Unable to upgrade databases older than {0}." +PATCH_OUTDATED_2: "Please upgrade with a supported version of CoreProtect." +PATCH_PROCESSING: "Processing new data. Please wait..." +PATCH_SKIP_UPDATE: "Skipping {table|index} {update|creation|removal} on {0}." +PATCH_STARTED: "Performing {0} upgrade. Please wait..." +PATCH_SUCCESS: "Successfully upgraded to {0}." +PATCH_UPGRADING: "Database upgrade in progress. Please wait..." +PLEASE_SELECT: "Please select: \"{0}\" or \"{1}\"." +PREVIEW_CANCELLED: "Preview cancelled." +PREVIEW_CANCELLING: "Cancelling preview..." +PREVIEW_IN_GAME: "You can only preview rollbacks in-game." +PREVIEW_TRANSACTION: "You can't preview {container|inventory} transactions." +PURGE_ABORTED: "Purge failed. Database may be corrupt." +PURGE_ERROR: "Unable to process {0} data!" +PURGE_FAILED: "Purge failed. Please try again later." +PURGE_IN_PROGRESS: "Purge in progress. Please try again later." +PURGE_MINIMUM_TIME: "You can only purge data older than {0} {days|hours}." +PURGE_NOTICE_1: "Please note that this may take some time." +PURGE_NOTICE_2: "Do not restart your server until completed." +PURGE_OPTIMIZING: "Optimizing database. Please wait..." +PURGE_PROCESSING: "Processing {0} data..." +PURGE_REPAIRING: "Attempting to repair. This may take some time..." +PURGE_ROWS: "{0} {row|rows} of data deleted." +PURGE_STARTED: "Data purge started on \"{0}\"." +PURGE_SUCCESS: "Data purge successful." +RELOAD_STARTED: "Reloading configuration - please wait." +RELOAD_SUCCESS: "Configuration successfully reloaded." +ROLLBACK_ABORTED: "Rollback or restore aborted." +ROLLBACK_CHUNKS_FOUND: "Found {0} {chunk|chunks} to modify." +ROLLBACK_CHUNKS_MODIFIED: "Modified {0}/{1} {chunk|chunks}." +ROLLBACK_COMPLETED: "{Rollback|Restore|Preview} completed for \"{0}\"." +ROLLBACK_EXCLUDED_USERS: "Excluded {user|users}: \"{0}\"." +ROLLBACK_INCLUDE: "{Included|Excluded} {block|entity|target} {type|types}: \"{0}\"." +ROLLBACK_IN_PROGRESS: "A rollback/restore is already in progress." +ROLLBACK_LENGTH: "Time taken: {0} {second|seconds}." +ROLLBACK_MODIFIED: "{Modified|Modifying} {0}." +ROLLBACK_RADIUS: "Radius: {0} {block|blocks}." +ROLLBACK_SELECTION: "Radius set to \"{0}\"." +ROLLBACK_STARTED: "{Rollback|Restore|Preview} started on \"{0}\"." +ROLLBACK_TIME: "Time range: {0}." +ROLLBACK_WORLD_ACTION: "Restricted to {world|action} \"{0}\"." +SIGN_HEADER: "Sign Messages" +STATUS_CONSUMER: "Consumer: {0} {item|items} in queue." +STATUS_DATABASE: "Database: Using {0}." +STATUS_INTEGRATION: "{0}: Integration {enabled|disabled}." +STATUS_LICENSE: "License: {0}" +STATUS_VERSION: "Version: {0}" +TELEPORTED: "Teleported to {0}." +TELEPORTED_SAFETY: "Teleported you to safety." +TELEPORT_PLAYERS: "Teleport command can only be used by players." +TIME_DAYS: "{0} {day|days}" +TIME_HOURS: "{0} {hour|hours}" +TIME_MINUTES: "{0} {minute|minutes}" +TIME_SECONDS: "{0} {second|seconds}" +TIME_WEEKS: "{0} {week|weeks}" +UPDATE_ERROR: "An error occurred while checking for updates." +UPDATE_HEADER: "{0} Update" +UPDATE_NOTICE: "Notice: {0} is now available." +UPGRADE_IN_PROGRESS: "Upgrade in progress. Please try again later." +USER_NOT_FOUND: "User \"{0}\" not found." +USER_OFFLINE: "The user \"{0}\" is not online." +USING_MYSQL: "Using MySQL for data storage." +USING_SQLITE: "Using SQLite for data storage." +VALID_DONATION_KEY: "Valid donation key." +VERSION_NOTICE: "Version {0} is now available." +VERSION_REQUIRED: "{0} {1} or higher is required." +WORLD_NOT_FOUND: "World \"{0}\" not found." +CPU_CORES: "CPU cores." +DONATION_KEY_REQUIRED: "A valid donation key is required for that command." +PRIMARY_THREAD_ERROR: "That API method can't be used on the primary thread." +RAM_STATS: "{0}GB / {1}GB RAM" +STATUS_SYSTEM: "System: {0}" +TIME_MONTHS: "{0} {month|months}" +TIME_UNITS: "{/m|/h|/d}" +TIME_YEARS: "{0} {year|years}" +VERSION_INCOMPATIBLE: "{0} {1} is not supported." \ No newline at end of file diff --git a/live-server/plugins/Essentials/config.yml b/live-server/plugins/Essentials/config.yml new file mode 100755 index 0000000..9f15275 --- /dev/null +++ b/live-server/plugins/Essentials/config.yml @@ -0,0 +1,1051 @@ +############################################################ +# +------------------------------------------------------+ # +# | Notes | # +# +------------------------------------------------------+ # +############################################################ + +# This is the config file for EssentialsX. +# This config was generated for version 2.18.0.0. + +# If you want to use special characters in this document, such as accented letters, you MUST save the file as UTF-8, not ANSI. +# If you receive an error when Essentials loads, ensure that: +# - No tabs are present: YAML only allows spaces +# - Indents are correct: YAML hierarchy is based entirely on indentation +# - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrophe) +# - Text with symbols is enclosed in single or double quotation marks + +# If you need help, you can join the EssentialsX community: https://essentialsx.cf/community.html + +############################################################ +# +------------------------------------------------------+ # +# | Essentials (Global) | # +# +------------------------------------------------------+ # +############################################################ + +show-command-usage: false + +# A color code between 0-9 or a-f. Set to 'none' to disable. +# In 1.16+ you can use hex color codes here as well. (For example, #613e1d is brown). +ops-name-color: 'none' + +# The character(s) to prefix all nicknames, so that you know they are not true usernames. +nickname-prefix: '~' + +# The maximum length allowed in nicknames. The nickname prefix is included in this. +max-nick-length: 15 + +# A list of phrases that cannot be used in nicknames. You can include regular expressions here. +# Users with essentials.nick.blacklist.bypass will be able to bypass this filter. +nick-blacklist: +#- Notch +#- '^Dinnerbone' + +# When this option is enabled, nickname length checking will exclude color codes in player names. +# ie: "&6Notch" has 7 characters (2 are part of a color code), a length of 5 is used when this option is set to true +ignore-colors-in-max-nick-length: false + +# When this option is enabled, display names for hidden users will not be shown. This prevents players from being +# able to see that they are online while vanished. +hide-displayname-in-vanish: false + +# Disable this if you have any other plugin, that modifies the displayname of a user. +change-displayname: true + +# When this option is enabled, the (tab) player list will be updated with the displayname. +# The value of change-displayname (above) has to be true. +#change-playerlist: true + +# When EssentialsChat.jar isn't used, force essentials to add the prefix and suffix from permission plugins to displayname. +# This setting is ignored if EssentialsChat.jar is used, and defaults to 'true'. +# The value of change-displayname (above) has to be true. +# Do not edit this setting unless you know what you are doing! +#add-prefix-suffix: false + +# When this option is enabled, player prefixes will be shown in the playerlist. +# This feature only works for Minecraft version 1.8 and higher. +# This value of change-playerlist has to be true +#add-prefix-in-playerlist: true + +# When this option is enabled, player suffixes will be shown in the playerlist. +# This feature only works for Minecraft version 1.8 and higher. +# This value of change-playerlist has to be true +#add-suffix-in-playerlist: true + +# If the teleport destination is unsafe, should players be teleported to the nearest safe location? +# If this is set to true, Essentials will attempt to teleport players close to the intended destination. +# If this is set to false, attempted teleports to unsafe locations will be cancelled with a warning. +teleport-safety: false + +# This forcefully disables teleport safety checks without a warning if attempting to teleport to unsafe locations. +# teleport-safety and this option need to be set to true to force teleportation to dangerous locations. +force-disable-teleport-safety: false + +# If a player is teleporting to an unsafe location in creative, adventure, or god mode; they will not be teleported to a +# safe location. If you'd like players to be teleported to a safe location all of the time, set this option to true. +force-safe-teleport-location: false + +# If a player has any passengers, the teleport will fail. Should their passengers be dismounted before they are teleported? +# If this is set to true, Essentials will dismount the player's passengers before teleporting. +# If this is set to false, attempted teleports will be canceled with a warning. +teleport-passenger-dismount: true + +# The delay, in seconds, required between /home, /tp, etc. +teleport-cooldown: 0 + +# The delay, in seconds, before a user actually teleports. If the user moves or gets attacked in this timeframe, the teleport is cancelled. +teleport-delay: 3 + +# The delay, in seconds, a player can't be attacked by other players after they have been teleported by a command. +# This will also prevent the player attacking other players. +teleport-invulnerability: 1 + +# Whether to make all teleportations go to the center of the block; where the x and z coordinates decimal become .5 +teleport-to-center: true + +# The delay, in seconds, required between /heal or /feed attempts. +heal-cooldown: 60 + +# Do you want to remove potion effects when healing a player? +remove-effects-on-heal: true + +# Near Radius +# The default radius with /near +# Used to use chat radius but we are going to make it separate. +near-radius: 200 + +# What to prevent from /item and /give. +# e.g item-spawn-blacklist: 10,11,46 +item-spawn-blacklist: + +# Set this to true if you want permission based item spawn rules. +# Note: The blacklist above will be ignored then. +# Example permissions (these go in your permissions manager): +# - essentials.itemspawn.item-all +# - essentials.itemspawn.item-[itemname] +# - essentials.itemspawn.item-[itemid] +# - essentials.give.item-all +# - essentials.give.item-[itemname] +# - essentials.give.item-[itemid] +# - essentials.unlimited.item-all +# - essentials.unlimited.item-[itemname] +# - essentials.unlimited.item-[itemid] +# - essentials.unlimited.item-bucket # Unlimited liquid placing +# +# For more information, visit http://wiki.ess3.net/wiki/Command_Reference/ICheat#Item.2FGive +permission-based-item-spawn: false + +# Mob limit on the /spawnmob command per execution. +spawnmob-limit: 10 + +# Shall we notify users when using /lightning? +warn-on-smite: true + +# Shall we drop items instead of adding to inventory if the target inventory is full? +drop-items-if-full: false + +# Essentials Mail Notification +# Should we notify players if they have no new mail? +notify-no-new-mail: false + +# Specifies the duration (in seconds) between each time a player is notified of mail they have. +# Useful for servers with a lot of mail traffic. +notify-player-of-mail-cooldown: 60 + +# The motd and rules are now configured in the files motd.txt and rules.txt. + +# When a command conflicts with another plugin, by default, Essentials will try to force the OTHER plugin to take priority. +# Commands in this list, will tell Essentials to 'not give up' the command to other plugins. +# In this state, which plugin 'wins' appears to be almost random. +# +# If you have two plugin with the same command and you wish to force Essentials to take over, you need an alias. +# To force essentials to take 'god' alias 'god' to 'egod'. +# See http://wiki.bukkit.org/Commands.yml#aliases for more information. + +overridden-commands: +# - god +# - info + +# Disabling commands here will prevent Essentials handling the command, this will not affect command conflicts. +# You should not have to disable commands used in other plugins, they will automatically get priority. +# See http://wiki.bukkit.org/Commands.yml#aliases to map commands to other plugins. +disabled-commands: +# - nick +# - clear + +# These commands will be shown to players with socialSpy enabled. +# You can add commands from other plugins you may want to track or +# remove commands that are used for something you dont want to spy on. +# Set - '*' in order to listen on all possible commands. +socialspy-commands: + - msg + - w + - r + - mail + - m + - t + - whisper + - emsg + - tell + - er + - reply + - ereply + - email + - action + - describe + - eme + - eaction + - edescribe + - etell + - ewhisper + - pm + +# Whether the private and public messages from muted players should appear in the social spy. +# If so, they will be differentiated from those sent by normal players. +socialspy-listen-muted-players: true + +# The following settings listen for when a player changes worlds. +# If you use another plugin to control speed and flight, you should change these to false. + +# When a player changes world, should EssentialsX reset their flight? +# This will disable flight if the player does not have essentials.fly. +world-change-fly-reset: true + +# When a player changes world, should we reset their speed according to their permissions? +# This resets the player's speed to the default if they don't have essentials.speed. +# If the player doesn't have essentials.speed.bypass, this resets their speed to the maximum specified above. +world-change-speed-reset: true + +# Mute Commands +# These commands will be disabled when a player is muted. +# Use '*' to disable every command. +# Essentials already disabled Essentials messaging commands by default. +# It only cares about the root command, not args after that (it sees /f chat the same as /f) +mute-commands: + - f + - kittycannon + # - '*' + +# If you do not wish to use a permission system, you can define a list of 'player perms' below. +# This list has no effect if you are using a supported permissions system. +# If you are using an unsupported permissions system, simply delete this section. +# Whitelist the commands and permissions you wish to give players by default (everything else is op only). +# These are the permissions without the "essentials." part. +# +# To enable this feature, please set use-bukkit-permissions to false. +player-commands: +# - afk +# - afk.auto +# - back +# - back.ondeath +# - balance +# - balance.others +# - balancetop +# - build +# - chat.color +# - chat.format +# - chat.shout +# - chat.question +# - clearinventory +# - compass +# - depth +# - delhome +# - getpos +# - geoip.show +# - help +# - helpop +# - home +# - home.others +# - ignore +# - info +# - itemdb +# - kit +# - kits.tools +# - list +# - mail +# - mail.send +# - me +# - motd +# - msg +# - msg.color +# - nick +# - near +# - pay +# - ping +# - protect +# - r +# - rules +# - realname +# - seen +# - sell +# - sethome +# - setxmpp +# - signs.create.protection +# - signs.create.trade +# - signs.break.protection +# - signs.break.trade +# - signs.use.balance +# - signs.use.buy +# - signs.use.disposal +# - signs.use.enchant +# - signs.use.free +# - signs.use.gamemode +# - signs.use.heal +# - signs.use.info +# - signs.use.kit +# - signs.use.mail +# - signs.use.protection +# - signs.use.repair +# - signs.use.sell +# - signs.use.time +# - signs.use.trade +# - signs.use.warp +# - signs.use.weather +# - spawn +# - suicide +# - time +# - tpa +# - tpaccept +# - tpahere +# - tpdeny +# - warp +# - warp.list +# - world +# - worth +# - xmpp + +# Use this option to force superperms-based permissions handler regardless of detected installed perms plugin. +# This is useful if you want superperms-based permissions (with wildcards) for custom permissions plugins. +# If you wish to use EssentialsX's built-in permissions using the `player-commands` section above, set this to false. +# Default is true. +use-bukkit-permissions: true + +# When this option is enabled, one-time use kits (ie. delay < 0) will be +# removed from the /kit list when a player can no longer use it +skip-used-one-time-kits-from-kit-list: false + +# Determines the functionality of the /createkit command. +# If this is true, /createkit will give the user a link with the kit code. +# If this is false, /createkit will add the kit to the kits.yml config file directly. +# +pastebin-createkit: false + +# Essentials Sign Control +# See http://wiki.ess3.net/wiki/Sign_Tutorial for instructions on how to use these. +# To enable signs, remove # symbol. To disable all signs, comment/remove each sign. +# Essentials colored sign support will be enabled when any sign types are enabled. +# Color is not an actual sign, it's for enabling using color codes on signs, when the correct permissions are given. + +enabledSigns: + #- color + #- balance + #- buy + #- sell + #- trade + #- free + #- disposal + #- warp + #- kit + #- mail + #- enchant + #- gamemode + #- heal + #- info + #- spawnmob + #- repair + #- time + #- weather + +# How many times per second can Essentials signs be interacted with per player. +# Values should be between 1-20, 20 being virtually no lag protection. +# Lower numbers will reduce the possibility of lag, but may annoy players. +sign-use-per-second: 4 + +# Allow item IDs on pre-existing signs on 1.13 and above. +# You cannot use item IDs on new signs, but this will allow players to interact with signs that +# were placed before 1.13. +allow-old-id-signs: false + +# List of sign names Essentials should not protect. This feature is especially useful when +# another plugin provides a sign that EssentialsX provides, but Essentials overrides. +# For example, if a plugin provides a [kit] sign, and you wish to use theirs instead of +# Essentials's, then simply add kit below and Essentials will not protect it. +# +# See https://github.com/drtshock/Essentials/pull/699 for more information. +unprotected-sign-names: + #- kit + +# Backup runs a batch/bash command while saving is disabled. +backup: + # Interval in minutes. + interval: 30 + # If true, the backup task will run even if there are no players online. + always-run: false + # Unless you add a valid backup command or script here, this feature will be useless. + # Use 'save-all' to simply force regular world saving without backup. + #command: 'rdiff-backup World1 backups/World1' + +# Set this true to enable permission per warp. +per-warp-permission: false + +# Sort output of /list command by groups. +# You can hide and merge the groups displayed in /list by defining the desired behaviour here. +# Detailed instructions and examples can be found on the wiki: http://wiki.ess3.net/wiki/List +list: + # To merge groups, list the groups you wish to merge + #Staff: owner admin moderator + Admins: owner admin + # To limit groups, set a max user limit + #builder: 20 + # To hide groups, set the group as hidden + #default: hidden + # Uncomment the line below to simply list all players with no grouping + #Players: '*' + +# Displays real names in /list next to players who are using a nickname. +real-names-on-list: false + +# More output to the console. +debug: false + +# Set the locale for all messages. +# If you don't set this, the default locale of the server will be used. +# For example, to set language to English, set locale to en, to use the file "messages_en.properties". +# Don't forget to remove the # in front of the line. +# For more information, visit http://wiki.ess3.net/wiki/Locale +#locale: en + +# Turn off god mode when people leave the server. +remove-god-on-disconnect: false + +# Auto-AFK +# After this timeout in seconds, the user will be set as AFK. +# This feature requires the player to have essentials.afk.auto node. +# Set to -1 for no timeout. +auto-afk: 300 + +# Auto-AFK Kick +# After this timeout in seconds, the user will be kicked from the server. +# essentials.afk.kickexempt node overrides this feature. +# Set to -1 for no timeout. +auto-afk-kick: -1 + +# Set this to true, if you want to freeze the player, if the player is AFK. +# Other players or monsters can't push the player out of AFK mode then. +# This will also enable temporary god mode for the AFK player. +# The player has to use the command /afk to leave the AFK mode. +freeze-afk-players: false + +# When the player is AFK, should he be able to pickup items? +# Enable this, when you don't want people idling in mob traps. +disable-item-pickup-while-afk: false + +# This setting controls if a player is marked as active on interaction. +# When this setting is false, the player would need to manually un-AFK using the /afk command. +cancel-afk-on-interact: true + +# Should we automatically remove afk status when a player moves? +# Player will be removed from AFK on chat/command regardless of this setting. +# Disable this to reduce server lag. +cancel-afk-on-move: true + +# Should AFK players be ignored when other players are trying to sleep? +# When this setting is false, players won't be able to skip the night if some players are AFK. +# Users with the permission node essentials.sleepingignored will always be ignored. +sleep-ignores-afk-players: true + +# Set the player's list name when they are AFK. This is none by default which specifies that Essentials +# should not interfere with the AFK player's list name. +# You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname. +afk-list-name: "none" + +# When a player enters or exits AFK mode, should the AFK notification be broadcast +# to the entire server, or just to the player? +# When this setting is false, only the player will be notified upon changing their AFK state. +broadcast-afk-message: true + +# You can disable the death messages of Minecraft here. +death-messages: true + +# How should essentials handle players with the essentials.keepinv permission who have items with +# curse of vanishing when they die? +# You can set this to "keep" (to keep the item), "drop" (to drop the item), or "delete" (to delete the item). +# Defaults to "keep" +vanishing-items-policy: keep + +# How should essentials handle players with the essentials.keepinv permission who have items with +# curse of binding when they die? +# You can set this to "keep" (to keep the item), "drop" (to drop the item), or "delete" (to delete the item). +# Defaults to "keep" +binding-items-policy: keep + +# When players die, should they receive the coordinates they died at? +send-info-after-death: false + +# Should players with permissions be able to join and part silently? +# You can control this with essentials.silentjoin and essentials.silentquit permissions if it is enabled. +# In addition, people with essentials.silentjoin.vanish will be vanished on join. +allow-silent-join-quit: false + +# You can set custom join and quit messages here. Set this to "none" to use the default Minecraft message, +# or set this to "" to hide the message entirely. +# You may use color codes, {USERNAME} for the player's name, and {PLAYER} for the player's displayname. +custom-join-message: "&8[&a&l+&8] &f{USERNAME}" +custom-quit-message: "&8[&4&l-&8] &f{USERNAME}" + +# You can disable join and quit messages when the player count reaches a certain limit. +# When the player count is below this number, join/quit messages will always be shown. +# Set this to -1 to always show join and quit messages regardless of player count. +hide-join-quit-messages-above: -1 + +# Add worlds to this list, if you want to automatically disable god mode there. +no-god-in-worlds: +# - world_nether + +# Set to true to enable per-world permissions for teleporting between worlds with essentials commands. +# This applies to /world, /back, /tp[a|o][here|all], but not warps. +# Give someone permission to teleport to a world with essentials.worlds. +# This does not affect the /home command, there is a separate toggle below for this. +world-teleport-permissions: false + +# The number of items given if the quantity parameter is left out in /item or /give. +# If this number is below 1, the maximum stack size size is given. If over-sized stacks. +# are not enabled, any number higher than the maximum stack size results in more than one stack. +default-stack-size: -1 + +# Over-sized stacks are stacks that ignore the normal max stack size. +# They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission. +# How many items should be in an over-sized stack? +oversized-stacksize: 64 + +# Allow repair of enchanted weapons and armor. +# If you set this to false, you can still allow it for certain players using the permission. +# essentials.repair.enchanted +repair-enchanted: true + +# Allow 'unsafe' enchantments in kits and item spawning. +# Warning: Mixing and overleveling some enchantments can cause issues with clients, servers and plugins. +unsafe-enchantments: true + +#Do you want Essentials to keep track of previous location for /back in the teleport listener? +#If you set this to true any plugin that uses teleport will have the previous location registered. +register-back-in-listener: false + +#Delay to wait before people can cause attack damage after logging in. +login-attack-delay: 5 + +#Set the max fly speed, values range from 0.1 to 1.0 +max-fly-speed: 0.8 + +#Set the max walk speed, values range from 0.1 to 1.0 +max-walk-speed: 0.8 + +#Set the maximum amount of mail that can be sent within a minute. +mails-per-minute: 1000 + +# Set the maximum time /mute can be used for in seconds. +# Set to -1 to disable, and essentials.mute.unlimited can be used to override. +max-mute-time: -1 + +# Set the maximum time /tempban can be used for in seconds. +# Set to -1 to disable, and essentials.tempban.unlimited can be used to override. +max-tempban-time: -1 + +# Changes the default /reply functionality. This can be changed on a per-player basis using /rtoggle. +# If true, /r goes to the person you messaged last, otherwise the first person that messaged you. +# If false, /r goes to the last person that messaged you. +last-message-reply-recipient: true + +# If last-message-reply-recipient is enabled for a particular player, +# this specifies the duration, in seconds, that would need to elapse for the +# reply-recipient to update when receiving a message. +# Default is 180 (3 minutes) +last-message-reply-recipient-timeout: 180 + +# Toggles whether or not left clicking mobs with a milk bucket turns them into a baby. +milk-bucket-easter-egg: true + +# Toggles whether or not the fly status message should be sent to players on join +send-fly-enable-on-join: true + +# Set to true to enable per-world permissions for setting time for individual worlds with essentials commands. +# This applies to /time, /day, /eday, /night, /enight, /etime. +# Give someone permission to teleport to a world with essentials.time.world.. +world-time-permissions: false + +# Specify cooldown for both Essentials commands and external commands as well. +# All commands do not start with a Forward Slash (/). Instead of /msg, write msg +# +# Wildcards are supported. E.g. +# - '*i*': 50 +# adds a 50 second cooldown to all commands that include the letter i +# +# EssentialsX supports regex by starting the command with a caret ^ +# For example, to target commands starting with ban and not banip the following would be used: +# '^ban([^ip])( .*)?': 60 # 60 seconds /ban cooldown. +# Note: If you have a command that starts with ^, then you can escape it using backslash (\). e.g. \^command: 123 +command-cooldowns: +# feed: 100 # 100 second cooldown on /feed command +# '*': 5 # 5 Second cooldown on all commands + +# Whether command cooldowns should be persistent past server shutdowns +command-cooldown-persistence: true + +# Whether NPC balances should be listed in balance ranking features such as /balancetop. +# NPC balances can include features like factions from FactionsUUID plugin. +npcs-in-balance-ranking: false + +# Allow bulk buying and selling signs when the player is sneaking. +# This is useful when a sign sells or buys one item at a time and the player wants to sell a bunch at once. +allow-bulk-buy-sell: true + +# Allow selling of items with custom names with the /sell command. +# This may be useful to prevent players accidentally selling named items. +allow-selling-named-items: false + +# Delay for the MOTD display for players on join, in milliseconds. +# This has no effect if the MOTD command or permission are disabled. +delay-motd: 0 + +# A list of commands that should have their complementary confirm commands enabled by default. +# This is empty by default, for the latest list of valid commands see the latest source config.yml. +default-enabled-confirm-commands: +#- pay +#- clearinventory + +# Whether or not to teleport a player back to their previous position after they have been freed from jail. +teleport-back-when-freed-from-jail: true + +# Set the timeout, in seconds for players to accept a tpa before the request is cancelled. +# Set to 0 for no timeout. +tpa-accept-cancellation: 60 + +# Allow players to set hats by clicking on their helmet slot. +allow-direct-hat: true + +# Allow in-game players to specify a world when running /broadcastworld. +# If false, running /broadcastworld in-game will always send a message to the player's current world. +# This doesn't affect running the command from the console, where a world is always required. +allow-world-in-broadcastworld: true + +# Consider water blocks as "safe," therefore allowing players to teleport +# using commands such as /home or /spawn to a location that is occupied +# by water blocks +is-water-safe: false + +# Should the usermap try to sanitise usernames before saving them? +# You should only change this to false if you use Minecraft China. +safe-usermap-names: true + +# Should Essentials output logs when a command block executes a command? +# Example: CommandBlock at ,, issued server command: / +log-command-block-commands: true + +# Set the maximum speed for projectiles spawned with /fireball. +max-projectile-speed: 8 + +############################################################ +# +------------------------------------------------------+ # +# | Homes | # +# +------------------------------------------------------+ # +############################################################ + +# Allows people to set their bed during the day. +# This setting has no effect in Minecraft 1.15+, as Minecraft will always allow the player to set their bed location during the day. +update-bed-at-daytime: true + +# Set to true to enable per-world permissions for using homes to teleport between worlds. +# This applies to the /home command only. +# Give someone permission to teleport to a world with essentials.worlds. +world-home-permissions: false + +# Allow players to have multiple homes. +# Players need essentials.sethome.multiple before they can have more than 1 home. +# You can set the default number of multiple homes using the 'default' rank below. +# To remove the home limit entirely, give people 'essentials.sethome.multiple.unlimited'. +# To grant different home amounts to different people, you need to define a 'home-rank' below. +# Create the 'home-rank' below, and give the matching permission: essentials.sethome.multiple. +# For more information, visit http://wiki.ess3.net/wiki/Multihome +sethome-multiple: + default: 1 + lord: 2 + baron: 3 + viscount: 4 + +# In this example someone with 'essentials.sethome.multiple' and 'essentials.sethome.multiple.vip' will have 5 homes. +# Remember, they MUST have both permission nodes in order to be able to set multiple homes. + +# Controls whether players need the permission "essentials.home.compass" in order to point +# the player's compass at their first home. +# +# Leaving this as false will retain Essentials' original behaviour, which is to always +# change the compass' direction to point towards their first home. +compass-towards-home-perm: false + +# If no home is set, would you like to send the player to spawn? +# If set to false, players will not be teleported when they run /home without setting a home first. +spawn-if-no-home: true + +# Should players be asked to provide confirmation for homes which they attempt to overwrite? +confirm-home-overwrite: false + +############################################################ +# +------------------------------------------------------+ # +# | Economy | # +# +------------------------------------------------------+ # +############################################################ + +# For more information, visit http://wiki.ess3.net/wiki/Essentials_Economy + +# You can control the values of items that are sold to the server by using the /setworth command. + +# Defines the balance with which new players begin. Defaults to 0. +starting-balance: 500 + +# Defines the cost to use the given commands PER USE. +# Some commands like /repair have sub-costs, check the wiki for more information. +command-costs: + tpask: 0 + tpa: 0 + # /example costs $1000 PER USE + #example: 1000 + # /kit tools costs $1500 PER USE + #kit-tools: 1500 + +# Set this to a currency symbol you want to use. +# Remember, if you want to use special characters in this document, +# such as accented letters, you MUST save the file as UTF-8, not ANSI. +currency-symbol: '$' + +# Enable this to make the currency symbol appear at the end of the amount rather than at the start. +# For example, the euro symbol typically appears after the current amount. +currency-symbol-suffix: false + +# Set the maximum amount of money a player can have. +# The amount is always limited to 10 trillion because of the limitations of a java double. +max-money: 10000000000000 + +# Set the minimum amount of money a player can have (must be above the negative of max-money). +# Setting this to 0, will disable overdrafts/loans completely. Users need 'essentials.eco.loan' perm to go below 0. +min-money: 0 + +# Enable this to log all interactions with trade/buy/sell signs and sell command. +economy-log-enabled: false + +# Enable this to also log all transactions from other plugins through Vault. +# This can cause the economy log to fill up quickly so should only be enabled for testing purposes! +economy-log-update-enabled: false + +# Minimum acceptable amount to be used in /pay. +minimum-pay-amount: 0.01 + +# Enable this to block users who try to /pay another user which ignore them. +pay-excludes-ignore-list: false + +# The format of currency, excluding symbols. See currency-symbol-format-locale for symbol configuration. +# +# "#,##0.00" is how the majority of countries display currency. +#currency-format: "#,##0.00" + +# Format currency symbols. Some locales use , and . interchangeably. +# Some formats do not display properly in-game due to faulty Minecraft font rendering. +# +# For 1.234,50 use de-DE +# For 1,234.50 use en-US +# For 1'234,50 use fr-ch +#currency-symbol-format-locale: en-US + +############################################################ +# +------------------------------------------------------+ # +# | Help | # +# +------------------------------------------------------+ # +############################################################ + +# Show other plugins commands in help. +non-ess-in-help: true + +# Hide plugins which do not give a permission. +# You can override a true value here for a single plugin by adding a permission to a user/group. +# The individual permission is: essentials.help., anyone with essentials.* or '*' will see all help regardless. +# You can use negative permissions to remove access to just a single plugins help if the following is enabled. +hide-permissionless-help: true + +############################################################ +# +------------------------------------------------------+ # +# | EssentialsX Chat | # +# +------------------------------------------------------+ # +############################################################ + +# You need to install EssentialsX Chat for this section to work. +# See https://essentialsx.cf/wiki/Module-Breakdown.html for more information. + +chat: + + # If EssentialsX Chat is installed, this will define how far a player's voice travels, in blocks. Set to 0 to make all chat global. + # Note that users with the "essentials.chat.spy" permission will hear everything, regardless of this setting. + # Users with essentials.chat.shout can override this by prefixing their message with an exclamation mark (!) + # Users with essentials.chat.question can override this by prefixing their message with a question mark (?) + # You can add command costs for shout/question by adding chat-shout and chat-question to the command costs section. + radius: 0 + + # Chat formatting can be done in two ways, you can either define a standard format for all chat. + # Or you can give a group specific chat format, to give some extra variation. + # For more information of chat formatting, check out the wiki: http://wiki.ess3.net/wiki/Chat_Formatting + + format: '{DISPLAYNAME} &8&l>&r {MESSAGE}' + #format: '&7[{GROUP}]&r {DISPLAYNAME}&7:&r {MESSAGE}' + #format: '&7{PREFIX}&r {DISPLAYNAME}&r &7{SUFFIX}&r: {MESSAGE}' + + group-formats: + # default: '{WORLDNAME} {DISPLAYNAME}&7:&r {MESSAGE}' + # admins: '{WORLDNAME} &c[{GROUP}]&r {DISPLAYNAME}&7:&c {MESSAGE}' + + # If you are using group formats make sure to remove the '#' to allow the setting to be read. + # Note: Group names are case-sensitive so you must match them up with your permission plugin. + + # You can use permissions to control whether players can use formatting codes in their chat messages. + # See https://essentialsx.cf/wiki/Color-Permissions.html for more information. + +############################################################ +# +------------------------------------------------------+ # +# | EssentialsX Protect | # +# +------------------------------------------------------+ # +############################################################ + +# You need to install EssentialsX Protect for this section to work. +# See https://essentialsx.cf/wiki/Module-Breakdown.html for more information. + +protect: + + # General physics/behavior modifications. Set these to true to disable behaviours. + prevent: + lava-flow: false + water-flow: false + water-bucket-flow: false + fire-spread: true + lava-fire-spread: true + lava-itemdamage: false + flint-fire: false + lightning-fire-spread: true + portal-creation: false + tnt-explosion: false + tnt-playerdamage: false + tnt-itemdamage: false + tnt-minecart-explosion: false + tnt-minecart-playerdamage: false + tnt-minecart-itemdamage: false + fireball-explosion: false + fireball-fire: false + fireball-playerdamage: false + fireball-itemdamage: false + witherskull-explosion: false + witherskull-playerdamage: false + witherskull-itemdamage: false + wither-spawnexplosion: false + wither-blockreplace: false + creeper-explosion: false + creeper-playerdamage: false + creeper-itemdamage: false + creeper-blockdamage: false + ender-crystal-explosion: false + enderdragon-blockdamage: true + enderman-pickup: false + villager-death: false + bed-explosion: false + respawn-anchor-explosion: false + # Monsters won't follow players. + # permission essentials.protect.entitytarget.bypass disables this. + entitytarget: false + # Prevents zombies from breaking down doors + zombie-door-break: false + # Prevents Ravagers from stealing blocks + ravager-thief: false + # Prevents sheep from turning grass to dirt + sheep-eat-grass: false + # Prevent certain transformations. + transformation: + # Prevent creepers becoming charged when struck by lightning. + charged-creeper: false + # Prevent villagers becoming zombie villagers. + zombie-villager: false + # Prevent zombie villagers being cured. + villager: false + # Prevent villagers becoming witches when struck by lightning. + witch: false + # Prevent pigs becoming zombie pigmen when struck by lightning. + zombie-pigman: false + # Prevent zombies turning into drowneds, and husks turning into zombies. + drowned: false + # Prevent mooshrooms changing colour when struck by lightning. + mooshroom: false + # Prevent the spawning of creatures. If a creature is missing, you can add it following the format below. + spawn: + creeper: false + skeleton: false + spider: false + giant: false + zombie: false + slime: false + ghast: false + pig_zombie: false + enderman: false + cave_spider: false + silverfish: false + blaze: false + magma_cube: false + ender_dragon: false + pig: false + sheep: false + cow: false + chicken: false + squid: false + wolf: false + mushroom_cow: false + snowman: false + ocelot: false + iron_golem: false + villager: false + wither: false + bat: false + witch: false + horse: false + phantom: false + + # Maximum height the creeper should explode. -1 allows them to explode everywhere. + # Set prevent.creeper-explosion to true, if you want to disable creeper explosions. + creeper: + max-height: -1 + + # Disable various default physics and behaviors. + disable: + # Should fall damage be disabled? + fall: false + + # Users with the essentials.protect.pvp permission will still be able to attack each other if this is set to true. + # They will be unable to attack users without that same permission node. + pvp: false + + # Should drowning damage be disabled? + # (Split into two behaviors; generally, you want both set to the same value.) + drown: false + suffocate: false + + # Should damage via lava be disabled? Items that fall into lava will still burn to a crisp. ;) + lavadmg: false + + # Should arrow damage be disabled? + projectiles: false + + # This will disable damage from touching cacti. + contactdmg: false + + # Burn, baby, burn! Should fire damage be disabled? + firedmg: false + + # Should the damage after hit by a lightning be disabled? + lightning: false + + # Should Wither damage be disabled? + wither: false + + # Disable weather options? + weather: + storm: false + thunder: false + lightning: false + +############################################################ +# +------------------------------------------------------+ # +# | EssentialsX AntiBuild | # +# +------------------------------------------------------+ # +############################################################ + + # You need to install EssentialsX AntiBuild for this section to work. + # See https://essentialsx.cf/wiki/Module-Breakdown.html and http://wiki.ess3.net/wiki/AntiBuild for more information. + + # Should people without the essentials.build permission be allowed to build? + # Set true to disable building for those people. + # Setting to false means EssentialsAntiBuild will never prevent you from building. + build: true + + # Should people without the essentials.build permission be allowed to use items? + # Set true to disable using for those people. + # Setting to false means EssentialsAntiBuild will never prevent you from using items. + use: true + + # Should we warn people when they are not allowed to build? + warn-on-build-disallow: true + + # For which block types would you like to be alerted? + # You can find a list of items at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html. + alert: + on-placement: LAVA,TNT,LAVA_BUCKET + on-use: LAVA_BUCKET + on-break: + + blacklist: + + # Which blocks should people be prevented from placing? + placement: LAVA,TNT,LAVA_BUCKET + + # Which items should people be prevented from using? + usage: LAVA_BUCKET + + # Which blocks should people be prevented from breaking? + break: + + # Which blocks should not be pushed by pistons? + piston: + + # Which blocks should not be dispensed by dispensers + dispenser: + +############################################################ +# +------------------------------------------------------+ # +# | EssentialsX Spawn + New Players | # +# +------------------------------------------------------+ # +############################################################ + +# You need to install EssentialsX Spawn for this section to work. +# See https://essentialsx.cf/wiki/Module-Breakdown.html for more information. + +newbies: + # Should we announce to the server when someone logs in for the first time? + # If so, use this format, replacing {DISPLAYNAME} with the player name. + # If not, set to '' + #announce-format: '' + announce-format: '&dWelcome {DISPLAYNAME}&d to the server!' + + # When we spawn for the first time, which spawnpoint do we use? + # Set to "none" if you want to use the spawn point of the world. + spawnpoint: newbies + + # Do we want to give users anything on first join? Set to '' to disable + # This kit will be given regardless of cost and permissions, and will not trigger the kit delay. + #kit: '' + kit: '' + +# What priority should we use for handling respawns? +# Set this to none, if you want vanilla respawning behaviour. +# Set this to lowest, if you want Multiverse to handle the respawning. +# Set this to high, if you want EssentialsSpawn to handle the respawning. +# Set this to highest, if you want to force EssentialsSpawn to handle the respawning. +respawn-listener-priority: high + +# What priority should we use for handling spawning on joining the server? +# See respawn-listener-priority for possible values. +# Note: changing this may impact or break spawn-on-join functionality. +spawn-join-listener-priority: high + +# When users die, should they respawn at their first home or bed, instead of the spawnpoint? +respawn-at-home: false + +# Teleport all joining players to the spawnpoint +spawn-on-join: false +# The following value of `guests` states that all players in group `guests` will be teleported to spawn when joining. +#spawn-on-join: guests +# The following list value states that all players in group `guests` and `admin` are to be teleported to spawn when joining. +#spawn-on-join: +#- guests +#- admin + +# End of file <-- No seriously, you're done with configuration. diff --git a/live-server/plugins/Essentials/custom_items.yml b/live-server/plugins/Essentials/custom_items.yml new file mode 100755 index 0000000..dd79864 --- /dev/null +++ b/live-server/plugins/Essentials/custom_items.yml @@ -0,0 +1,7 @@ +# This file stores custom item aliases. +# NOTE: If you try and alias an item to another entry in this file, the alias won't work. + +aliases: + bluepaint: blue_dye + snad: sand + breakfast: cooked_porkchop diff --git a/live-server/plugins/Essentials/kits.yml b/live-server/plugins/Essentials/kits.yml new file mode 100755 index 0000000..93c24d8 --- /dev/null +++ b/live-server/plugins/Essentials/kits.yml @@ -0,0 +1,55 @@ +kits: + tools: + delay: 10 + items: + - stonesword 1 + - stoneshovel 1 + - stonepickaxe 1 + - stoneaxe 1 + dtools: + delay: 600 + items: + - dpickaxe 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens + - dshovel 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole + - lhelm 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day + - daxe:780 1 + - /broadcast {USERNAME} just got some fancy tools! + notch: + delay: 6000 + items: + - playerhead 1 player:Notch + color: + delay: 6000 + items: + - writtenbook 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes + book:Colors + firework: + delay: 6000 + items: + - fireworkrocket 1 name:Angry_Creeper color:red fade:green type:creeper power:1 + - fireworkrocket 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle + power:1 + - fireworkrocket 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle + color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink + shape:star effect:trail power:1 + kit1: + delay: 0 + items: + - stone_shovel 1 + - stone_pickaxe 1 + - iron_axe 1 + - shield 1 basecolor:16383998 + - iron_leggings 1 + - iron_boots 1 + - iron_chestplate 1 + - iron_helmet 1 + - water_bucket 1 + - stone_shovel 1 + - baked_potato 16 + - apple 2 + - gravel 12 + - stone_axe 1 + - oak_sapling 31 + - arrow 2 + - dirt 23 + - enchanted_golden_apple 1 diff --git a/live-server/plugins/Essentials/messages.properties b/live-server/plugins/Essentials/messages.properties new file mode 100755 index 0000000..e3649a3 --- /dev/null +++ b/live-server/plugins/Essentials/messages.properties @@ -0,0 +1 @@ +deletehomeUsage="" diff --git a/live-server/plugins/Essentials/motd.txt b/live-server/plugins/Essentials/motd.txt new file mode 100644 index 0000000..f9fea0d --- /dev/null +++ b/live-server/plugins/Essentials/motd.txt @@ -0,0 +1 @@ +&8[&fracked.ru&8]&r &7Type &e/help &7for a list of commands. diff --git a/live-server/plugins/Essentials/rules.txt b/live-server/plugins/Essentials/rules.txt new file mode 100755 index 0000000..486bfdf --- /dev/null +++ b/live-server/plugins/Essentials/rules.txt @@ -0,0 +1,3 @@ +[1] Be respectful +[2] Be ethical +[3] Use common sense \ No newline at end of file diff --git a/live-server/plugins/Essentials/tpr.yml b/live-server/plugins/Essentials/tpr.yml new file mode 100755 index 0000000..fdaf3c7 --- /dev/null +++ b/live-server/plugins/Essentials/tpr.yml @@ -0,0 +1,16 @@ +# Configuration for the random teleport command. +# Some settings may be defaulted, and can be changed via the /settpr command in-game. +default-location: '{world}' +excluded-biomes: + - cold_ocean + - deep_cold_ocean + - deep_frozen_ocean + - deep_lukewarm_ocean + - deep_ocean + - deep_warm_ocean + - frozen_ocean + - frozen_river + - lukewarm_ocean + - ocean + - river + - warm_ocean diff --git a/live-server/plugins/Essentials/upgrades-done.yml b/live-server/plugins/Essentials/upgrades-done.yml new file mode 100755 index 0000000..b6a130c --- /dev/null +++ b/live-server/plugins/Essentials/upgrades-done.yml @@ -0,0 +1,16 @@ +updateLegacyToAdventure: true +newUidCacheBuilt: true +updateSpawnsToNewSpawnsConfig: true +updateJailsToNewJailsConfig: true +warnMetrics: true +updateRandomTeleport: true +movemotdToFile: true +moverulesToFile: true +sanitizeAllUserFilenames: true +updateUsersPowerToolsFormat: true +updateUsersHomesFormat: true +banFormatChange: true +updateUsersIgnoreListUUID: true +updateUsersStupidLegacyPathNames: true +updateUsersMailList: true +updatePurgeBrokenNpcAccounts: true diff --git a/live-server/plugins/Essentials/worth.yml b/live-server/plugins/Essentials/worth.yml new file mode 100755 index 0000000..4a9de51 --- /dev/null +++ b/live-server/plugins/Essentials/worth.yml @@ -0,0 +1,187 @@ +# Determines how much items are worth on the server. +# This can be set in this file, or by running the /setworth command. +worth: + + # Items not listed in this file will not be sellable on the server + # Setting the worth to 0 will sell items for free, delete the item or set to -1 to disable. + + # This will set the worth of all logs to '2' + log: 2.0 + + # This will work similar to the above syntax + wool: + '0': 20 + + # This will only allow selling leaves with datavalue '0' and '1' + leaves: + '0': 1.0 + '1': 1.0 + + # This will allow the selling of all, but sells '0' slightly cheaper + sapling: + '0': 2.0 + '*': 2.5 + + + stonebutton: 6.0 + wood: 0.50 + arrow: 3.50 + diamondpickaxe: 650.0 + rawfish: 5.0 + minecart: 23.0 + leatherchestplate: 85.0 + storageminecart: 30.0 + feather: 3.0 + goldchestplate: 6.5 + mushroomsoup: 4.5 + bread: 30.0 + stationarywater: 1.0 + workbench: 2.5 + stonehoe: 2.5 + brownmushroom: 2.0 + mossycobblestone: 90.0 + diamondhoe: 400.0 + woodsword: 1.0 + torch: 4.0 + grass: 1.0 + poweredminecart: 32.0 + snowball: 1.0 + goldenapple: 100.0 + leatherleggings: 75.0 + diamondaxe: 650.0 + slimeball: 50.0 + fence: 1.0 + stonespade: 1.5 + claybrick: 5.0 + noteblock: 36.0 + ironaxe: 22.0 + coalore: 15.0 + clayball: 3.0 + fishingrod: 10.0 + ironhoe: 22.0 + goldrecord: 100.0 + ironpickaxe: 22.0 + irondoor: 22.0 + bucket: 22.0 + redrose: 2.0 + grilledpork: 7.0 + gravel: 1.0 + wooddoor: 3.0 + chainmailhelmet: 40.0 + ironchestplate: 22.0 + diamondblock: 2000.0 + diamondhelmet: 1000.0 + goldhelmet: 6.0 + redstonetorchon: 32.0 + ironspade: 22.0 + furnace: 8.5 + ironsword: 22.0 + dispenser: 58.0 + woodaxe: 2.0 + seeds: 2.0 + painting: 25.0 + woodplate: 1.0 + redstoneore: 30.0 + diamondspade: 210.0 + waterbucket: 40.0 + water: 1.0 + bedrock: 100.0 + irondoorblock: 15.0 + goldhoe: 6.0 + sand: 1.0 + goldsword: 6.0 + stoneaxe: 3.0 + bookshelf: 140.0 + ironblock: 190.0 + jackolantern: 56.0 + boat: 3.0 + diamondchestplate: 1750.0 + redstonewire: 30.0 + redmushroom: 2.0 + string: 5.0 + stoneplate: 6.0 + wallsign: 1.0 + cactus: 10.0 + sulphur: 20.0 + rails: 22.0 + ironore: 18.0 + leatherhelmet: 52.0 + stone: 3.00 + egg: 1.0 + diamondore: 200.0 + woodhoe: 2.0 + goldleggings: 6.0 + chainmailleggings: 50.0 + yellowflower: 2.0 + ironhelmet: 22.0 + obsidian: 130.0 + dirt: 1.0 + leather: 10.0 + leatherboots: 42.0 + lever: 1.0 + cobblestone: 1.0 + cake: 180.0 + woodstairs: 1.0 + ironingot: 22.0 + goldore: 45.0 + pumpkin: 50.0 + bed: 68.0 + watch: 6.0 + ironleggings: 22.0 + sign: 1.5 + doublestep: 1.0 + woodpickaxe: 2.0 + stonepickaxe: 4.0 + chainmailboots: 30.0 + diamondleggings: 1500.0 + cookedfish: 7.0 + saddle: 100.0 + cobblestonestairs: 1.5 + tnt: 100.0 + glowingredstoneore: 30.0 + apple: 10.0 + woodspade: 1.0 + goldingot: 105.0 + diode: 110.0 + soil: 1.0 + clay: 12.0 + goldblock: 450.0 + stick: 0.25 + paper: 10.0 + brick: 21.0 + stationarylava: 1.0 + chest: 4.0 + sandstone: 3.0 + goldpickaxe: 6.0 + compass: 22.0 + sugarcane: 10.0 + diamondsword: 420.0 + goldboots: 6.0 + sponge: 80.0 + stonesword: 2.5 + coal: 15.0 + goldaxe: 6.0 + bone: 2.0 + diamond: 200.0 + glass: 3.00 + goldspade: 6.0 + lapisblock: 950.0 + lavabucket: 40.0 + wheat: 9.0 + ladder: 0.5 + sugarcaneblock: 15.0 + bowl: 0.50 + chainmailchestplate: 40.0 + diamondboots: 850.0 + lapisore: 100.0 + lava: 25.0 + milkbucket: 40.0 + redstone: 32.0 + greenrecord: 100.0 + inksack: 10.0 + glowstonedust: 10.0 + book: 45.0 + bow: 15.0 + ironboots: 22.0 + step: 1.5 + sugar: 10.0 diff --git a/live-server/plugins/FastAsyncWorldEdit/config.yml b/live-server/plugins/FastAsyncWorldEdit/config.yml new file mode 100644 index 0000000..083b316 --- /dev/null +++ b/live-server/plugins/FastAsyncWorldEdit/config.yml @@ -0,0 +1,408 @@ +# These first 6 aren't configurable +issues: "https://github.com/IntellectualSites/FastAsyncWorldEdit/issues" +wiki: "https://intellectualsites.github.io/fastasyncworldedit-documentation/" +date: "Tue Feb 10 00:00:00 GMT 2026" +build: "https://ci.athion.net/job/FastAsyncWorldEdit/0" +commit: "https://github.com/IntellectualSites/FastAsyncWorldEdit/commit/fa6c8d3b" +platform: "Bukkit" +# Set true to enable WorldEdit restrictions per region (e.g. PlotSquared or WorldGuard). +# To be allowed to WorldEdit in a region, users need the appropriate +# fawe. permission. See the Permissions page for supported region plugins. +region-restrictions: true +# FAWE will cancel non admin edits when memory consumption exceeds this % +# - Bypass with `/wea` or `//fast` or `fawe.bypass` +# - Disable with 100 or -1. +max-memory-percent: 95 +# When percent memory usage reaches this threshold some aspects of editing will be slowed down: +# - FAWE-Asynchronous chunk loading when writing changes (see queue.async-chunk-load-write) +slower-memory-percent: 80 + +# Enable or disable core components +enabled-components: + commands: true + # Show additional information in console. It helps us at IntellectualSites to find out more about an issue. + # Leave it off if you don't need it, it can spam your console. + debug: false + # Whether or not FAWE should notify you on startup about new available snapshots. + snapshot-update-notifications: false + # Whether or not FAWE should notify you on startup about new releases. + release-update-notifications: false + # Whether or not FAWE should notify you for updates (snapshot / release) on join (with the required permission) + notify-update-ingame: false + +clipboard: + # Store the clipboard on disk instead of memory + # - Will be slightly slower + # - Uses 2 bytes per block + use-disk: true + # Compress the clipboard to reduce the size: + # - TODO: Buffered random access with compression is not implemented on disk yet + # - 0 = No compression + # - 1 = Fast compression + # - 2-17 = Slower compression + # - levels over 6 require ZSTD 1.4.8+ to be installed to the system + compression-level: 1 + # Number of days to keep history on disk before deleting it + delete-after-days: 1 + # If a player's clipboard should be deleted upon logout + delete-on-logout: false + # Allows NBT stored in a clipboard to be written to disk + # - Requires clipboard.use-disk to be enabled + save-clipboard-nbt-to-disk: true + # Apply a file lock on the clipboard file (only relevant if clipboad.on-disk is enabled) + # - Prevents other processes using the file whilst in use by FAWE + # - This extends to other servers, useful if you have multiple servers using a unified clipboard folder + # - May run into issues where a file lock is not correctly lifted + lock-clipboard-file: false + +lighting: + # If packet sending should be delayed until relight is finished + delay-packet-sending: true + async: true + # The relighting mode to use: + # - 0 = None (Do no relighting) + # - 1 = Optimal (Relight changed light sources and changed blocks) + # - 2 = All (Slowly relight every blocks) + mode: 1 + # If existing lighting should be removed before relighting + remove-first: true + +# Generic tick limiter (not necessarily WorldEdit related, but useful to stop abuse) +tick-limiter: + # Enable the limiter + enabled: false + # The interval in ticks + interval: 20 + # Max falling blocks per interval (per chunk) + falling: 64 + # Max physics per interval (excluding redstone) + physics-ms: 10 + # Max item spawns per interval (per chunk) + items: 256 + +# Web/HTTP connection related settings +web: + # The web interface for clipboards + # - All schematics are anonymous and private + # - Downloads can be deleted by the user + # - Supports clipboard uploads, downloads and saves + url: "https://schem.intellectualsites.com/fawe/" + # The url of the backend server (Arkitektonika) + arkitektonika-backend-url: "https://api.schematic.cloud/" + # The url used to generate a download link from. + # {key} will be replaced with the generated key + arkitektonika-download-url: "https://schematic.cloud/download/{key}" + # The url used to generate a deletion link from. + # {key} will be replaced with the generated key + arkitektonika-delete-url: "https://schematic.cloud/delete/{key}" + # The maximum amount of time in seconds the plugin can attempt to load images for. + max-image-load-time: 5 + # The maximum size (width x length) an image being loaded can be. + # - 8294400 is 3840x2160 + max-image-size: 8294400 + # Whitelist of hostnames to allow images to be downloaded from + # - Adding '*' to the list will allow any host, but this is NOT adviseable + # - Crash exploits exist with malformed images + # - See: https://medium.com/chargebee-engineering/perils-of-parsing-pixel-flood-attack-on-java-imageio-a97aeb06637d + allowed-image-hosts: + - "i.imgur.com" + +extent: + # Don't bug console when these plugins slow down WorldEdit operations + # - You'll see a message in console or ingame if you need to change this option + allowed-plugins: + - "com.example.ExamplePlugin" + # Should debug messages be sent when third party extents are used? + debug: true + +# Experimental options, use at your own risk +# - UNSAFE = Can cause permanent damage to the server +# - SAFE = Can be buggy but unlikely to cause any damage +experimental: + # Undo operation batch size + # - The size defines the number of changes read at once. + # - Larger numbers might reduce overhead but increase latency for edits with only few changes. + # - 0 means undo operations are not batched. + undo-batch-size: 128 + # [UNSAFE] Directly modify the region files. (OBSOLETE - USE ANVIL COMMANDS) + # - IMPROPER USE CAN CAUSE WORLD CORRUPTION! + anvil-queue-mode: false + # [SAFE] Dynamically increase the number of chunks rendered + # - Requires Paper + # - Set your server view distance to 1 (spigot.yml, server.properties) + # - Based on tps and player movement + # - Note: If entities become hidden, increase the server view distance to 3 + dynamic-chunk-rendering: -1 + # Allows brushes to be persistent (default: true) + persistent-brushes: true + # [SAFE] Keep entities that are positioned in non-air blocks when editing an area (default: true) + # - Might cause client-side FPS lag in some situations + # - Requires fast-placement to be true + keep-entities-in-blocks: true + # [SAFE] Attempt to remove entities from the world if they were not present in the expected chunk (default: true) + # - Sometimes an entity may have moved into a different chunk to that which FAWE expected + # - This option allows FAWE to attempt to remove the entity, even if present in a different chunk + # - If the entity is in an unloaded or partially loaded chunk, this will fail + # - If an entity cannot be removed, it is possible duplicate entities may be created when using undo and/or redo + remove-entity-from-world-on-chunk-fail: true + # [SAFE] Perform operations involving entities on chunk load + # - Allows entities that might not otherwise be captured due to unloaded chunks to be captured + # - Main use-case is copying larger areas with entities + improved-entity-edits: true + # Increased debug logging for brush actions and processor setup + other: false + # Allow fluids placed by FAWE to tick (flow). This could cause the big lags. + # This has no effect on existing blocks one way or the other. + # Changes due to fluid flow will not be tracked by history, thus may have unintended consequences + allow-tick-fluids: false + # Whether FAWE should use the incubator Vector API to accelerate some operations + use-vector-api: false + +# This relates to how FAWE places chunks +queue: + progress: + # Display constant titles about the progress of a user's edit + # - false = disabled + # - title = Display progress titles + # - chat = Display progress in chat + # - Currently not implemented + display: "false" + # How often edit progress is displayed + interval: 1 + # Delay sending progress in milliseconds (so quick edits don't spam) + delay: 5000 + # This should equal the number of processors you have + parallel-threads: 6 + # When doing edits that effect more than this many chunks: + # - FAWE will start placing before all calculations are finished + # - A larger value will use slightly less CPU time + # - A smaller value will reduce memory usage + # - A value too small may break some operations (deform?) + # - Values smaller than the configured parallel-threads are not accepted + # - It is recommended this option be at least 4x greater than parallel-threads + target-size: 48 + # Increase or decrease queue intensity (ms) [-50,50]: + # 0 = balance of performance / stability + # -10 = Allocate 10ms less for chunk placement + # Too high can cause lag spikes (you might be okay with this) + # Too low will result in slow edits + extra-time-ms: 0 + # Loading the right amount of chunks beforehand can speed up operations + # - Low values may result in FAWE waiting on requests to the main thread + # - Higher values use more memory and isn't noticeably faster + # - A good (relatively) safe way to set this is + # - Use 128 x GB of RAM / number of players expected to be using WE at the same time + # - Paper and derivatives only. (requires delay-chunk-unloads-by to be set). + preload-chunk-count: 512 + # If pooling is enabled (reduces GC, higher memory usage) + # - Enable to improve performance at the expense of memory + pool: true + # If chunk loading for writing edits to the world should be performed asynchronously to FAWE + # - Enable to improve performance at the expense of memory + # - If experience out of memory crashed, disable this or reduce slower-memory-percent + async-chunk-load-write: true + # Percentage of queue.target-size to use per thread in multi-threaded operations + # - Minimum of 100 / queue.parallel-threads (queue.target-size split across threads) + # - Maximum of 100 (queue.target-size per thread) + # - Higher performance at the expense of memory + # - I.e. target-size=400, parallel-threads=8 and threads-target-size=25 means target-size of 100 per thread + # - Defaults to 100 * 2 / parallel-threads + thread-target-size-percent: 33 + +history: + # Should history be saved on disk: + # - Frees up a lot of memory + # - Persists restarts + # - Unlimited undo + # - Does not affect edit performance if `combine-stages` + use-disk: true + # Use a database to store disk storage summaries: + # - Enables inspection and rollback + # - Does not impact performance + use-database: true + # Record history with dispatching: + # - Much faster as it avoids duplicate block checks + # - Slightly worse compression since dispatch order is different + combine-stages: true + # Do not wait for a chunk's history to save before sending it + # - Undo/redo commands will wait until the history has been written to disk before executing + # - Requires combine-stages = true + send-before-history: true + # Higher compression reduces the size of history at the expense of CPU + # 0 = Uncompressed byte array (fastest) + # 1 = 1 pass fast compressor (default) + # 2 = 2 x fast + # 3 = 3 x fast + # 4 = 1 x medium, 1 x fast + # 5 = 1 x medium, 2 x fast + # 6 = 1 x medium, 3 x fast + # 7 = 1 x high, 1 x medium, 1 x fast + # 8 = 1 x high, 1 x medium, 2 x fast + # 9 = 1 x high, 1 x medium, 3 x fast (best compression) + # NOTE: If using disk, do some compression (3+) as smaller files save faster + # - levels over 6 require ZSTD 1.4.8+ to be installed to the system + compression-level: 3 + # The buffer size for compression: + # - Larger = better ratio but uses more upfront memory + # - Must be in the range [64, 33554432] + buffer-size: 531441 + # Delete history on disk after a number of days + delete-after-days: 7 + # Delete history in memory on logout (does not effect disk) + delete-on-logout: true + # Delete history on disk on logout + delete-disk-on-logout: false + # If history should be enabled by default for plugins using WorldEdit: + # - It is faster to have disabled + # - It is faster to have disabled + # - Use of the FAWE API will not be effected + enable-for-console: true + # Should redo information be stored: + # - History is about 20% larger + # - Enables use of /redo + store-redo: true + # Assumes all edits are smaller than 4096x256x4096: + # - Reduces history size by ~10% + small-edits: false + +# Paths for various directories +paths: + # Put any minecraft or mod jars for FAWE to be aware of block textures + textures: "textures" + heightmap: "heightmap" + history: "history" + # Multiple servers can use the same clipboards + # - Use a shared directory or NFS/Samba + clipboard: "clipboard" + # Each player has his or her own sub directory for schematics + per-player-schematics: false + +# Region restriction settings +region-restrictions-options: + # What type of users are allowed to WorldEdit in a region + # - MEMBER = Players added to a region + # - OWNER = Players who own the region + mode: "MEMBER" + # Allow region blacklists. + # - Currently only implemented for WorldGuard + # - see region-restrictions-options.worldguard-region-blacklist + allow-blacklists: false + # List of plugin mask managers that should be exclusive. Exclusive managers are not + # checked for edit restrictions if another manager already allowed an edit, and further + # managers are not checked if an exclusive manager allows an edit. + # - May be useful to add PlotSquared if using both P2 and WorldGuard on a server + # - Some custom-implementations in other plugins may override this setting + exclusive-managers: + - "ExamplePlugin" + # If a worldguard-protected world should be considered as a region blacklist. + # - This will create a blacklist of regions where an edit cannot operate. + # - Useful for a "freebuild" worlds with few protected areas. + # - May cause performance loss with large numbers of protected areas. + # - Requires region-restrictions-options.allow-blacklists be true. + # - Will still search for current allowed regions to limit the edit to. + # - Any blacklist regions are likely to override any internal allowed regions. + worldguard-region-blacklist: false + # Restrict all edits to within the safe chunk limits of +/- 30 million blocks + # - Edits outside this range may induce crashing + # - Forcefully prevents any edit outside this range + restrict-to-safe-range: true + +general: + # If the player should be relocated/unstuck when a generation command would bury them + unstuck-on-generate: true + # If unlimited limits should still require /confirm on large. Defaults to limits.default.confirm-large otherwise. + limit-unlimited-confirms: true + # If unlimited limits should skip sending creature spawn events. Using //fast will still disable spawn events. + limit-unlimited-skips-creature-spawn-events: true +# The "default" limit group affects those without a specific limit permission. +# To grant someone different limits, copy the default limits group +# and give it a different name (e.g. newbie). Then give the user the limit +# permission node with that limit name (e.g. fawe.limit.newbie ) +limits: + default: + # Max actions that can be run concurrently (i.e. commands) + max-actions: 1 + # Max number of block changes (e.g. by `//set stone`). + max-changes: 50000000 + # Max number of blocks checked (e.g. `//count stone` which doesn't change blocks) + max-checks: 50000000 + # Number of times a change can fail (e.g. if the player can't access that region) + max-fails: 50000000 + # Allowed brush iterations (e.g. `//brush smooth`) + max-iterations: 1000 + # Max allowed entities (e.g. cows) + max-entities: 1337 + # Max allowed radius (e.g. for //sphere) + max-radius: -1 + # Max allowed superpickaxe size + max-super-pickaxe-size: 5 + # Max allowed brush radius + max-brush-radius: 100 + # Max allowed butcher radius + max-butcher-radius: -1 + # Blockstates include Banner, Beacon, BrewingStand, Chest, CommandBlock, + # CreatureSpawner, Dispenser, Dropper, EndGateway, Furnace, Hopper, Jukebox, + # NoteBlock, Sign, Skull, Structure + max-blockstates: 1337 + # Maximum size of the player's history in Megabytes: + # - History on disk or memory will be deleted + max-history-mb: -1 + # Sets a maximum limit (in kb) for the size of a player's schematics directory (per-player mode only) + # Set to -1 to disable + schem-file-size-limit: -1 + # Sets a maximum limit for the amount of schematics in a player's schematics directory (per-player mode only) + # Set to -1 to disable + schem-file-num-limit: -1 + # Maximum time in milliseconds //calc can execute + max-expression-ms: 50 + # Cinematic block placement: + # - Adds a delay to block placement (nanoseconds/block) + # - Having an artificial delay will use more CPU/Memory + speed-reduction: 0 + # Place chunks instead of individual blocks: + # - Disabling this will negatively impact performance + # - Only disable this for compatibility or cinematic placement + fast-placement: true + # Should WorldEdit use inventory? + # 0 = No inventory usage (creative) + # 1 = Inventory for removing and placing (freebuild) + # 2 = Inventory for placing (survival) + inventory-mode: 0 + # Should large edits require confirmation (>16384 chunks) + confirm-large: true + # If undo and redo commands should be restricted to allowed regions + # - Prevents scenarios where players can delete/reset a region, and then continue to undo/redo on it + restrict-history-to-regions: true + # List of nbt tags to strip from blocks, e.g. Items + strip-nbt: [] + # If the disallowed blocks listed in worldedit-config.yml should be disallowed in all edits, + # not just where blocks patterns are used. + # - Can prevent blocks being pasted from clipboards, etc. + # - If fast-placement is disabled, this may cause edits to be slower. + universal-disallowed-blocks: true + # If legacy, mumerical, blocks IDs should be able to be used (i.e. 12:2). + allow-legacy: true + # If sending creature spawn events should be skipped upon creation. + # - Will not work when setting entities directly to a world, rather than using an EditSession(Builder) + # - Setting fast-placement to false forces writing directly to the world (for example). + skip-creature-spawn-events: false + # List of blocks to deny use of. Can be either an entire block type or a block with a specific property value. + # Where block properties are specified, any blockstate with the property will be disallowed (e.g. all directions + # of a waterlogged fence). For blocking/remapping of all occurrences of a property like waterlogged, see + # remap-properties below. + # To generate a blank list, substitute the default content with a set of square brackets [] instead. + # The 'worldedit.anyblock' permission is not considered here. + # Example block property blocking: + # - "minecraft:conduit[waterlogged=true]" + # - "minecraft:piston[extended=false,facing=west]" + # - "minecraft:wheat[age=7]" + disallowed-blocks: + - "minecraft:wheat" + - "minecraft:fire" + - "minecraft:redstone_wire" + # List of block properties that should be remapped if used in an edit. Entries should take the form + # "property_name[value1_old:value1_new,value2_old:value2_new]". For example: + # - "waterlogged[true:false]" + # - "age[7:4,6:4,5:4]" + # - "extended[true:false]" + remap-properties: [] diff --git a/live-server/plugins/FastAsyncWorldEdit/lang/strings.json b/live-server/plugins/FastAsyncWorldEdit/lang/strings.json new file mode 100644 index 0000000..a484381 --- /dev/null +++ b/live-server/plugins/FastAsyncWorldEdit/lang/strings.json @@ -0,0 +1,672 @@ +{ + "prefix": "&8(&4&lFAWE&8)&7 {0}", + "fawe.worldedit.history.find.element": "&2{0} {1} &7ago &3{2}m &6{3} &c/{4}", + "fawe.worldedit.history.find.element.more": " - Changes: {0}\n - Bounds: {1} -> {2}\n - Extra: {3}\n - Size on Disk: {4}", + "fawe.worldedit.history.find.hover": "{0} blocks changed, click for more info", + "fawe.worldedit.history.distr.summary_null": "Could not find edit summary for inputs.", + "fawe.info.lighting.propagate.selection": "Lighting has been propagated in {0} chunks.", + "fawe.info.updated.lighting.selection": "Lighting has been updated in {0} chunks. (It may take a second for the packets to send)", + "fawe.info.set.region": "Selection set to your current allowed region", + "fawe.info.worldedit.toggle.tips.on": "Disabled FAWE tips.", + "fawe.info.worldedit.toggle.tips.off": "Enabled FAWE tips.", + "fawe.info.worldedit.bypassed": "Currently bypassing FAWE restriction.", + "fawe.info.worldedit.restricted": "Your FAWE edits are now restricted.", + "fawe.info.worldedit.oom.admin": "Possible options:\n - //fast\n - Do smaller edits\n - Allocate more memory\n - Disable `max-memory-percent`", + "fawe.info.temporarily-not-working": "Temporarily not working", + "fawe.info.light-blocks": "Light blocks are more reliable than light sources, please use the blocks. This command is deprecated and will be removed in a future version.", + "fawe.info.update-available.build": "An update for FastAsyncWorldEdit is available. You are {0} build(s) behind.\nYou are running build {1}, the latest build is {2}.\nUpdate at {3}", + "fawe.info.update-available.release": "A new release for FastAsyncWorldEdit is available: {0}. You are currently on {1}. Download from {2} or {3}.", + "fawe.web.generating.link": "Uploading {0}, please wait...", + "fawe.web.generating.link.failed": "Failed to generate download link!", + "fawe.web.download.link": "{0}", + "fawe.web.image.load.timeout": "Image load attempt timed out, max time: {0}s. Please try a smaller-resolution image.", + "fawe.web.image.load.size.too-large": "Image dimensions too large! Max allowable size (width x height): {0} pixels.", + "fawe.worldedit.general.texture.disabled": "Texturing reset", + "fawe.worldedit.general.texture.set": "Set texturing to {1}", + "fawe.worldedit.general.source.mask.disabled": "Global source mask disabled", + "fawe.worldedit.general.source.mask": "Global source mask set", + "fawe.worldedit.general.transform.disabled": "Global transform disabled", + "fawe.worldedit.general.transform": "Global transform set", + "fawe.worldedit.copy.command.copy": "{0} blocks were copied.", + "fawe.worldedit.cut.command.cut.lazy": "{0} blocks will be removed on paste", + "fawe.worldedit.paste.command.paste": "The clipboard has been pasted at {0}", + "fawe.worldedit.history.command.undo.disabled": "Undo disabled, use: //fast", + "fawe.worldedit.selection.selection.count": "Counted {0} blocks.", + "fawe.worldedit.anvil.world.is.loaded": "The world shouldn't be in use when executing. Unload the world, or use -f to override (save first)", + "fawe.worldedit.brush.brush.reset": "Reset your brush. (SHIFT + Click)", + "fawe.worldedit.brush.brush.none": "You aren't holding a brush!", + "fawe.worldedit.brush.brush.scroll.action.set": "Set scroll action to {0}", + "fawe.worldedit.brush.brush.scroll.action.unset": "Removed scroll action", + "fawe.worldedit.brush.brush.visual.mode.set": "Set visual mode to {0}", + "fawe.worldedit.brush.brush.target.mode.set": "Set target mode to {0}", + "fawe.worldedit.brush.brush.target.offset.set": "Set target offset to {0}", + "fawe.worldedit.brush.brush.equipped": "Equipped brush {0}", + "fawe.worldedit.brush.brush.try.other": "There are other more suitable brushes e.g.,\n - //br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]", + "fawe.worldedit.brush.brush.copy": "Left click the base of an object to copy, right click to paste. Increase the brush radius if necessary.", + "fawe.worldedit.brush.brush.height.invalid": "Invalid height map file ({0})", + "fawe.worldedit.brush.brush.spline": "Click to add a point, click the same spot to finish", + "fawe.worldedit.brush.brush.line.primary": "Added point {0}, click another position to create the line", + "fawe.worldedit.brush.brush.catenary.direction": "Added point {0}, click the direction you want to create the spline", + "fawe.worldedit.brush.brush.line.secondary": "Created spline", + "fawe.worldedit.brush.spline.primary.2": "Added position, Click the same spot to join!", + "fawe.worldedit.brush.brush.spline.secondary.error": "Not enough positions set!", + "fawe.worldedit.brush.spline.secondary": "Created spline", + "fawe.worldedit.brush.brush.source.mask.disabled": "Brush source mask disabled", + "fawe.worldedit.brush.brush.source.mask": "Brush source mask set", + "fawe.worldedit.brush.brush.transform.disabled": "Brush transform disabled", + "fawe.worldedit.brush.brush.transform": "Brush transform set", + "fawe.worldedit.rollback.rollingback.index": "Undoing {0} ...", + "fawe.worldedit.rollback.rollback.element": "{0} undone.", + "fawe.worldedit.tool.tool.inspect": "Inspect tool bound to {0}.", + "fawe.worldedit.tool.tool.inspect.info": "{0} changed {1} to {2} {3} ago", + "fawe.worldedit.tool.tool.inspect.info.footer": "Total: {0} changes", + "fawe.worldedit.tool.tool.range.error": "Maximum range: {0}.", + "fawe.worldedit.tool.tool.lrbuild.info": "Left-click set to {0}; right-click set to {1}.", + "fawe.worldedit.utility.nothing.confirmed": "You have no actions pending confirmation.", + "fawe.worldedit.schematic.schematic.move.exists": "{0} already exists", + "fawe.worldedit.schematic.schematic.move.success": "{0} -> {1}", + "fawe.worldedit.schematic.schematic.move.failed": "{0} no moved: {1}", + "fawe.worldedit.schematic.schematic.loaded": "{0} loaded. Paste it with //paste", + "fawe.worldedit.schematic.schematic.saved": "{0} saved.", + "fawe.worldedit.schematic.schematic.none": "No files found.", + "fawe.worldedit.schematic.schematic.load-failure": "File could not be read or it does not exist: {0}. If you are specifying a format, you may not be specifying the correct one. Sponge schematic v2 and v3 both use the .schem file extension. To allow FAWE to select the format, do not specify one. If you are using a litematica schematic, it is not supported!", + "fawe.worldedit.clipboard.clipboard.uri.not.found": "You do not have {0} loaded", + "fawe.worldedit.clipboard.clipboard.cleared": "Clipboard cleared", + "fawe.worldedit.clipboard.clipboard.invalid.format": "Unknown clipboard format: {0}", + "fawe.worldedit.visitor.visitor.block": "{0} blocks affected", + "fawe.worldedit.selector.selector.fuzzy.pos1": "Region set and expanded from {0} {1}.", + "fawe.worldedit.selector.selector.fuzzy.pos2": "Added expansion of {0} {1}.", + "fawe.progress.progress.message": "{1}/{0} ({2}%) @{3}cps {4}s left", + "fawe.progress.progress.finished": "[ Done! ]", + "fawe.error.command.syntax": "Usage: {0}", + "fawe.error.no-perm": "You are lacking the permission node: {0}", + "fawe.error.block.not.allowed": "You are not allowed to use: {0}", + "fawe.error.setting.disable": "Lacking setting: {0}", + "fawe.error.brush.not.found": "Available brushes: {0}", + "fawe.error.brush.incompatible": "Brush not compatible with this version", + "fawe.error.no.region": "You have no current allowed region", + "fawe.error.player.not.found": "Player not found: {0}", + "fawe.error.worldedit.some.fails": "{0} blocks weren't placed because they were outside your allowed region.", + "fawe.error.worldedit.some.fails.blockbag": "Missing blocks: {0}", + "fawe.error.mask.angle": "Cannot combine degree with block-step", + "fawe.error.invalid-flag": "The flag {0} is not applicable here", + "fawe.error.lighting": "Error when attempting lighting. You may need to reload the chunks to see the edit.", + "fawe.error.parser.invalid-data": "Invalid data: {0}", + "fawe.error.unsupported": "Unsupported!", + "fawe.error.invalid-block-type": "Does not match a valid block type: {0}", + "fawe.error.invalid-block-state-property": "Cannot parse value `{0}` for property `{1}`, block state: `{2}`", + "fawe.error.nbt.forbidden": "You are not allowed to use nbt. Lacking permission: {0}", + "fawe.error.invalid-arguments": "Invalid amount of arguments. Expected: {0}", + "fawe.error.unrecognised-tag": "Unrecognised tag: {0} {1}", + "fawe.error.unknown-block-tag": "Unknown block tag: {0}", + "fawe.error.block-tag-no-blocks": "Block tag '{0}' had no blocks.", + "fawe.error.no-block-found": "No block found for '{0}'.", + "fawe.error.invalid-states": "Invalid states: {0}", + "fawe.error.no-session": "No session is available, so no clipboard is available.", + "fawe.error.empty-clipboard": "To use '{0}', please first copy something to your clipboard", + "fawe.error.selection-expand": "Selection cannot expand.", + "fawe.error.selection-contract": "Selection cannot expand.", + "fawe.error.selection-shift": "Selection cannot be shifted.", + "fawe.error.invalid-user": "User must be provided.", + "fawe.error.radius-too-small": "Radius must be >=0", + "fawe.error.time-too-less": "Time must be >=0", + "fawe.error.invalid-image": "Invalid image: {0}", + "fawe.error.image-dimensions": "Dimensions given for image too large, max allowable size (width x height): {0} pixels.", + "fawe.error.file-not-found": "File not found: {0}", + "fawe.error.file-is-invalid-directory": "File is a directory: {0}", + "fawe.error.stacktrace": "===============---=============", + "fawe.error.no-failure": "This shouldn't result in any failure", + "fawe.error.invalid-bracketing": "Invalid bracketing, are you missing a '{0}'.", + "fawe.error.too-simple": "Complexity must be in the range 0-100", + "fawe.error.outside-range": "Argument {0} outside of range {1}-{2}.", + "fawe.error.outside-range-lower": "Argument {0} may not be less than {1}", + "fawe.error.outside-range-upper": "Argument {0} may not be greater than {1}", + "fawe.error.argument-size-mismatch": "Argument {0} may not be greater than argument {1}", + "fawe.error.input-parser-exception": "Invalid empty string instead of boolean.", + "fawe.error.invalid-boolean": "Invalid boolean {0}", + "fawe.error.schematic.not.found": "Schematic {0} not found.", + "fawe.error.parse.invalid-dangling-character": "Invalid dangling character {0}.", + "fawe.error.parse.unknown-mask": "Unknown mask: {0}, See: {1}", + "fawe.error.parse.unknown-pattern": "Unknown pattern: {0}, See: {1}", + "fawe.error.parse.unknown-transform": "Unknown transform: {0}, See: {1}", + "fawe.error.parse.no-clipboard": "To use {0}, please first copy something to your clipboard", + "fawe.error.parse.no-clipboard-source": "No clipboards found at given source: {0}", + "fawe.error.clipboard.invalid": "====== INVALID CLIPBOARD ======", + "fawe.error.clipboard.invalid.info": "File: {0} (len: {1})", + "fawe.error.clipboard.load.failure": "Unexpected failure loading clipboard from disk!", + "fawe.error.clipboard.on.disk.version.mismatch": "Clipboard version mismatch: expected {0} but got {1}. It is recommended you delete the clipboard folder and restart the server.\nYour clipboard folder is located at {2}.", + "fawe.error.limit.disallowed-block": "Your limit disallows use of block '{0}'", + "fawe.error.limit.disallowed-property": "Your limit disallows use of property '{0}'", + "fawe.error.region-mask-invalid": "Invalid region mask: {0}", + "fawe.error.occurred-continuing": "Ignorable error occurred during edit: {0}", + "fawe.error.limit.max-brush-radius": "Maximum brush radius in limit: {0}", + "fawe.error.limit.max-radius": "Maximum radius in limit: {0}", + "fawe.error.no-valid-on-hotbar": "No valid block types on hotbar", + "fawe.error.no-process-non-synchronous-edit": "No processor holder was found but edit is non-synchronous", + "fawe.cancel.count": "Cancelled {0} edits.", + "fawe.cancel.reason.confirm": "Use //confirm to execute {0}", + "fawe.cancel.reason.confirm.region": "Your selection is large ({0} -> {1}, containing {3} blocks). Use //confirm to execute {2}", + "fawe.cancel.reason.confirm.radius": "Your radius is large ({0} > {1}). Use //confirm to execute {2}", + "fawe.cancel.reason.confirm.limit": "You're exceeding your limit for this action ({0} > {1}). Use //confirm to execute {2}", + "fawe.cancel.reason": "Your WorldEdit action was cancelled: {0}.", + "fawe.cancel.reason.manual": "Manual cancellation", + "fawe.cancel.reason.low.memory": "Low memory", + "fawe.cancel.reason.max.changes": "Too many blocks changed", + "fawe.cancel.reason.max.checks": "Too many block checks", + "fawe.cancel.reason.max.fails": "Too many fails", + "fawe.cancel.reason.max.tiles": "Too many block entities", + "fawe.cancel.reason.max.entities": "Too many entities", + "fawe.cancel.reason.max.iterations": "Max iterations", + "fawe.cancel.reason.outside.level": "Outside world", + "fawe.cancel.reason.outside.region": "Outside allowed region (bypass with /wea, or disable `region-restrictions` in config.yml)", + "fawe.cancel.reason.outside.safe.region": "Outside safe edit region of +/- 30,000,000 blocks.", + "fawe.cancel.reason.no.region": "No allowed region (bypass with /wea, or disable `region-restrictions` in config.yml)", + "fawe.cancel.reason.no.region.reason": "No allowed region: {0}", + "fawe.cancel.reason.no.region.plot.noworldeditflag": "Plot flag NoWorldeditFlag set", + "fawe.cancel.reason.no.region.plot.owner.offline": "Region owner offline", + "fawe.cancel.reason.no.region.plot.owner.only": "Only region owners may edit them", + "fawe.cancel.reason.no.region.not.added": "Not added to region", + "fawe.cancel.reason.player-only": "This operation requires a player, and cannot be executed from console, or without an actor.", + "fawe.cancel.reason.actor-required": "This operation requires an actor.", + "fawe.cancel.reason.world.limit": "This operation cannot be performed at y={0} as it is outside world limits.", + "fawe.cancel.worldedit.failed.load.chunk": "Skipped loading chunk: {0};{1}. Try increasing chunk-wait.", + "fawe.navigation.no.block": "No block in sight! (or too far)", + "fawe.selection.sel.max": "{0} points maximum.", + "fawe.selection.sel.fuzzy": "Fuzzy selector: Left click to select all contingent blocks, right click to add. To select an air cavity, use //pos1.", + "fawe.selection.sel.fuzzy-instruction": "Select all connected blocks (magic wand)", + "fawe.selection.sel.convex.polyhedral": "Convex polyhedral selector: Left click=First vertex, right click to add more.", + "fawe.selection.sel.polyhedral": "Select a hollow polyhedral", + "fawe.selection.sel.list": "For a list of selection types use: //sel list", + "fawe.tips.tip.sel.list": "Tip: See the different selection modes with //sel list", + "fawe.tips.tip.select.connected": "Tip: Select all connected blocks with //sel fuzzy", + "fawe.tips.tip.set.pos1": "Tip: Use pos1 as a pattern with //set pos1", + "fawe.tips.tip.farwand": "Tip: Select distant points with //farwand", + "fawe.tips.tip.discord": "Need help using FAWE? https://discord.gg/intellectualsites", + "fawe.tips.tip.lazycut": "Tip: It is safer to use //lazycut", + "fawe.tips.tip.fast": "Tip: Set fast and without undo using //fast", + "fawe.tips.tip.cancel": "Tip: You can //cancel an edit in progress", + "fawe.tips.tip.mask": "Tip: Set a global destination mask with /gmask", + "fawe.tips.tip.mask.angle": "Tip: Replace upward slopes of 3-20 blocks using //replace /[-20][-3] bedrock", + "fawe.tips.tip.set.linear": "Tip: Set blocks linearly with //set #l3d[wood,bedrock]", + "fawe.tips.tip.surface.spread": "Tip: Spread a flat surface with //set #surfacespread[5][0][5][#existing]", + "fawe.tips.tip.set.hand": "Tip: Use your current hand with //set hand", + "fawe.tips.tip.replace.regex": "Tip: Replace using regex: //replace .*_log ", + "fawe.tips.tip.replace.regex.2": "Tip: Replace using regex: //replace .*stairs[facing=(north|south)] ", + "fawe.tips.tip.replace.regex.3": "Tip: Replace using operators: //replace water[level>2] sand", + "fawe.tips.tip.replace.regex.4": "Tip: Replace using operators: //replace true *[waterlogged=false]", + "fawe.tips.tip.replace.regex.5": "Tip: Replace using operators: //replace true *[level-=1]", + "fawe.tips.tip.replace.id": "Tip: Replace only the block id: //replace woodenstair #id[cobblestair]", + "fawe.tips.tip.replace.light": "Tip: Remove light sources with //replace #brightness[1][15] 0", + "fawe.tips.tip.tab.complete": "Tip: The replace command supports tab completion", + "fawe.tips.tip.flip": "Tip: Mirror with //flip", + "fawe.tips.tip.deform": "Tip: Reshape with //deform", + "fawe.tips.tip.transform": "Tip: Set a transform with //gtransform", + "fawe.tips.tip.copypaste": "Tip: Paste on click with //br copypaste", + "fawe.tips.tip.source.mask": "Tip: Set a source mask with /gsmask ", + "fawe.tips.tip.replace.marker": "Tip: Replace a block with your full clipboard using //replace wool #fullcopy", + "fawe.tips.tip.paste": "Tip: Place with //paste", + "fawe.tips.tip.lazycopy": "Tip: lazycopy is faster", + "fawe.tips.tip.download": "Tip: Try out //download", + "fawe.tips.tip.rotate": "Tip: Orientate with //rotate", + "fawe.tips.tip.copy.pattern": "Tip: To use as a pattern try #copy", + "fawe.tips.tip.regen.0": "Tip: Use a biome with /regen [biome]", + "fawe.tips.tip.regen.1": "Tip: Use a seed with /regen [biome] [seed]", + "fawe.tips.tip.biome.pattern": "Tip: The #biome[forest] pattern can be used in any command", + "fawe.tips.tip.biome.mask": "Tip: Restrict to a biome with the `$jungle` mask", + "fawe.regen.time": "Regenerating region, this might take a while!", + "worldedit.expand.description.vert": "Vertically expand the selection to world limits.", + "worldedit.expand.expanded": "Region expanded {0} blocks", + "worldedit.expand.expanded.vert": "Region expanded {0} blocks (top-to-bottom).", + "worldedit.biomeinfo.lineofsight": "Biomes at line of sight point: {0}", + "worldedit.biomeinfo.position": "Biomes at your position: {0}", + "worldedit.biomeinfo.selection": "Biomes in your selection: {0}", + "worldedit.biomeinfo.not-locatable": "Command sender must be present in the world to use the -p flag.", + "worldedit.error.disabled": "This functionality is disabled (see WorldEdit configuration).", + "worldedit.error.no-match": "No match for '{0}'.", + "worldedit.error.unknown": "Unknown error occurred: {0}", + "worldedit.error.parser.player-only": "Input '{0}' requires a player!", + "worldedit.error.parser.bad-state-format": "Bad state format in {0}", + "worldedit.error.parser.unknown-property": "Unknown property '{0}' for block '{1}'", + "worldedit.error.parser.duplicate-property": "Duplicate property: {0}", + "worldedit.error.parser.unknown-value": "Unknown value '{0}' for property '{1}'", + "worldedit.error.parser.invalid-colon": "Invalid colon.", + "worldedit.error.parser.hanging-lbracket": "Invalid format. Hanging bracket at '{0}'.", + "worldedit.error.parser.missing-rbracket": "State is missing trailing ']'", + "worldedit.error.incomplete-region": "Make a region selection first.", + "worldedit.error.not-a-block": "This item is not a block.", + "worldedit.error.unknown-entity": "Entity name '{0}' was not recognized.", + "worldedit.error.unknown-mob": "Mob name '{0}' was not recognized.", + "worldedit.error.parser.clipboard.missing-offset": "Offset specified with @ but no offset given. Use '#copy@[x,y,z]'.", + "worldedit.error.parser.clipboard.missing-coordinates": "Clipboard offset needs x,y,z coordinates.", + "worldedit.error.unknown-item": "Item name '{0}' was not recognized.", + "worldedit.error.parser.invalid-expression": "Invalid expression: {0}", + "worldedit.error.parser.negate-nothing": "Cannot negate nothing!", + "worldedit.error.invalid-page": "Invalid page number", + "worldedit.error.missing-extent": "No Extent is known", + "worldedit.error.missing-session": "No LocalSession is known", + "worldedit.error.missing-world": "You need to provide a world (Try //world)", + "worldedit.error.missing-actor": "No actor is known", + "worldedit.error.missing-player": "No player is known", + "worldedit.error.no-file-selected": "No file selected.", + "worldedit.error.file-resolution.outside-root": "Path is outside allowable root", + "worldedit.error.file-resolution.resolve-failed": "Failed to resolve path", + "worldedit.error.invalid-filename.invalid-characters": "Invalid characters or extension missing", + "worldedit.error.invalid-number.matches": "Number expected; string \"{0}\" given.", + "worldedit.error.invalid-number": "Number expected; string given.", + "worldedit.error.unknown-block": "Block name '{0}' was not recognized.", + "worldedit.error.disallowed-block": "Block '{0}' not allowed (see WorldEdit configuration).", + "worldedit.error.max-changes": "Max blocks changed in an operation reached ({0}).", + "worldedit.error.max-brush-radius": "Maximum brush radius (in worldedit-config.yml): {0}", + "worldedit.error.max-radius": "Maximum radius (in worldedit-config.yml): {0}", + "worldedit.error.unknown-direction": "Unknown direction: {0}", + "worldedit.error.empty-clipboard": "Your clipboard is empty. Use //copy first.", + "worldedit.error.invalid-filename": "Filename '{0}' invalid: {1}", + "worldedit.error.file-resolution": "File '{0}' resolution error: {1}", + "worldedit.tool.error.cannot-bind": "Can't bind tool to {0}: {1}", + "worldedit.error.file-aborted": "File selection aborted.", + "worldedit.error.world-unloaded": "The world was unloaded already.", + "worldedit.error.named-world-unloaded": "The world '{0}' was unloaded already.", + "worldedit.error.blocks-cant-be-used": "Blocks can't be used", + "worldedit.error.unknown-tag": "Tag name '{0}' was not recognized.", + "worldedit.error.empty-tag": "Tag name '{0}' has no contents.", + "worldedit.error.unknown-biome": "Biome name '{0}' was not recognized.", + "worldedit.brush.radius-too-large": "Maximum allowed brush radius: {0}", + "worldedit.brush.apply.description": "Apply brush, apply a function to every block", + "worldedit.brush.apply.radius": "The size of the brush", + "worldedit.brush.apply.shape": "The shape of the region", + "worldedit.brush.apply.type": "Type of brush to use", + "worldedit.brush.apply.item.warning": "This brush simulates item usages. Its effects may not work on all platforms, may not be undo-able, and may cause strange interactions with other mods/plugins. Use at your own risk.", + "worldedit.brush.paint.description": "Paint brush, apply a function to a surface", + "worldedit.brush.paint.size": "The size of the brush", + "worldedit.brush.paint.shape": "The shape of the region", + "worldedit.brush.paint.density": "The density of the brush", + "worldedit.brush.paint.type": "Type of brush to use", + "worldedit.brush.paint.item.warning": "This brush simulates item usages. Its effects may not work on all platforms, may not be undo-able, and may cause strange interactions with other mods/plugins. Use at your own risk.", + "worldedit.brush.sphere.equip": "Sphere brush shape equipped ({0}).", + "worldedit.brush.cylinder.equip": "Cylinder brush shape equipped ({0} by {1}).", + "worldedit.brush.clipboard.equip": "Clipboard brush shape equipped.", + "worldedit.brush.smooth.equip": "Smooth brush equipped ({0} x {1}x using {2}).", + "worldedit.brush.smooth.nofilter": "any block", + "worldedit.brush.smooth.filter": "filter", + "worldedit.brush.snowsmooth.equip": "SnowSmooth brush equipped ({0} x {1}x using {2}), {3} snow blocks.", + "worldedit.brush.snowsmooth.nofilter": "any block", + "worldedit.brush.snowsmooth.filter": "filter", + "worldedit.brush.extinguish.equip": "Extinguisher equipped ({0}).", + "worldedit.brush.gravity.equip": "Gravity brush equipped ({0}).", + "worldedit.brush.butcher.equip": "Butcher brush equipped ({0}).", + "worldedit.brush.operation.equip": "Set brush to {0}.", + "worldedit.brush.morph.equip": "Morph brush shape equipped: {0}.", + "worldedit.brush.biome.column-supported-types": "This brush shape is not supported with whole-column brushing, try the cylinder shape.", + "worldedit.brush.none.equip": "Brush unbound from your current item.", + "worldedit.brush.none.equipped": "You have no brush bound to your current item. Try /brush sphere for a basic brush.", + "worldedit.setbiome.changed": "Biomes were changed in {0} columns. You may have to rejoin your game (or close and reopen your world) to see a change.", + "worldedit.setbiome.warning": "You may have to re-join your game (or close and re-open your world) to see changes.", + "worldedit.setbiome.not-locatable": "Command sender must be present in the world to use the -p flag.", + "worldedit.drawsel.disabled": "Server CUI disabled.", + "worldedit.drawsel.enabled": "Server CUI enabled. This only supports cuboid regions, with a maximum size of {0}x{1}x{2}.", + "worldedit.drawsel.disabled.already": "Server CUI already disabled.", + "worldedit.drawsel.enabled.already": "Server CUI already enabled.", + "worldedit.limit.too-high": "Your maximum allowable limit is {0}.", + "worldedit.limit.set": "Block change limit set to {0}.", + "worldedit.limit.return-to-default": "(Use //limit to go back to the default.)", + "worldedit.timeout.too-high": "Your maximum allowable timeout is {0}ms.", + "worldedit.timeout.set": "Timeout time set to {0}ms.", + "worldedit.timeout.return-to-default": " (Use //timeout to go back to the default.)", + "worldedit.fast.disabled": "Fast mode disabled.", + "worldedit.fast.enabled": "Fast mode enabled. Changes won't be written to history (//undo is disabled). Lighting in the affected chunks may be wrong and/or you may need to rejoin to see changes.", + "worldedit.fast.disabled.already": "Fast mode already disabled.", + "worldedit.fast.enabled.already": "Fast mode already enabled.", + "worldedit.perf.sideeffect.set": "Side effect \"{0}\" set to {1}", + "worldedit.perf.sideeffect.get": "Side effect \"{0}\" is set to {1}", + "worldedit.perf.sideeffect.already-set": "Side effect \"{0}\" is already {1}", + "worldedit.perf.sideeffect.set-all": "All side effects set to {0}", + "worldedit.reorder.current": "The reorder mode is {0}", + "worldedit.reorder.set": "The reorder mode is now {0}", + "worldedit.gmask.disabled": "Global mask disabled.", + "worldedit.gmask.set": "Global mask set.", + "worldedit.toggleplace.pos1": "Now placing at pos #1.", + "worldedit.toggleplace.player": "Now placing at the block you stand in.", + "worldedit.toggleplace.not-locatable": "Cannot toggle placing in this context.", + "worldedit.searchitem.too-short": "Enter a longer search string (len > 2).", + "worldedit.searchitem.either-b-or-i": "You cannot use both the 'b' and 'i' flags simultaneously.", + "worldedit.searchitem.searching": "(Please wait... searching items.)", + "worldedit.watchdog.no-hook": "This platform has no watchdog hook.", + "worldedit.watchdog.active.already": "Watchdog hook already active.", + "worldedit.watchdog.inactive.already": "Watchdog hook already inactive.", + "worldedit.watchdog.active": "Watchdog hook now active.", + "worldedit.watchdog.inactive": "Watchdog hook now inactive.", + "worldedit.world.remove": "Removed world override.", + "worldedit.world.set": "Set the world override to {0}. (Use //world to go back to default)", + "worldedit.undo.undone": "Undid {0} available edits.", + "worldedit.undo.none": "Nothing left to undo.", + "worldedit.redo.redone": "Redid {0} available edits.", + "worldedit.redo.none": "Nothing left to redo.", + "worldedit.clearhistory.cleared": "History cleared.", + "worldedit.raytrace.noblock": "No block in sight!", + "worldedit.raytrace.require-player": "Raytracing commands require a player!", + "worldedit.restore.not-configured": "Snapshot/backup restore is not configured.", + "worldedit.restore.not-available": "That snapshot does not exist or is not available.", + "worldedit.restore.failed": "Failed to load snapshot: {0}", + "worldedit.restore.loaded": "Snapshot '{0}' loaded; now restoring...", + "worldedit.restore.restored": "Restored; {0} missing chunks and {1} other errors.", + "worldedit.restore.none-for-specific-world": "No snapshots were found for world '{0}'.", + "worldedit.restore.none-for-world": "No snapshots were found for this world.", + "worldedit.restore.none-found": "No snapshots were found.", + "worldedit.restore.none-found-console": "No snapshots were found. See console for details.", + "worldedit.restore.chunk-not-present": "Chunks were not present in snapshot.", + "worldedit.restore.chunk-load-failed": "No chunks could be loaded. (Bad archive?)", + "worldedit.restore.block-place-failed": "Errors prevented any blocks from being restored.", + "worldedit.restore.block-place-error": "Last error: {0}", + "worldedit.snapshot.use.newest": "Now using newest snapshot.", + "worldedit.snapshot.use": "Snapshot set to: {0}", + "worldedit.snapshot.none-before": "Couldn't find a snapshot before {0}.", + "worldedit.snapshot.none-after": "Couldn't find a snapshot after {0}.", + "worldedit.snapshot.index-above-0": "Invalid index, must be greater than or equal to 1.", + "worldedit.snapshot.index-oob": "Invalid index, must be between 1 and {0}.", + "worldedit.schematic.unknown-format": "Unknown schematic format: {0}.", + "worldedit.schematic.load.does-not-exist": "Schematic {0} does not exist!", + "worldedit.schematic.load.loading": "(Please wait... loading schematic.)", + "worldedit.schematic.load.unsupported-version": "This schematic is not supported. Version: {0}. If you are using a litematica schematic, it is not supported!", + "worldedit.schematic.save.already-exists": "That schematic already exists. Use the -f flag to overwrite it.", + "worldedit.schematic.save.failed-directory": "Could not create folder for schematics!", + "worldedit.schematic.save.saving": "(Please wait... saving schematic.)", + "worldedit.schematic.save.still-saving": "(Please wait... still saving schematic.)", + "worldedit.schematic.share.unsupported-format": "The schematic share destination \"{0}\" does not support the \"{1}\" format.", + "worldedit.schematic.share.response.arkitektonika.download" : "Download: {0}", + "worldedit.schematic.share.response.arkitektonika.delete" : "Delete: {0}", + "worldedit.schematic.share.response.arkitektonika.click-here" : "[Click here]", + "worldedit.schematic.delete.empty": "Schematic {0} not found!", + "worldedit.schematic.delete.does-not-exist": "Schematic {0} does not exist!", + "worldedit.schematic.delete.failed": "Deletion of {0} failed! Is it read-only?", + "worldedit.schematic.delete.deleted": "{0} has been deleted.", + "worldedit.schematic.formats.title": "Available clipboard formats (Name: Lookup names)", + "worldedit.schematic.load.symbol": "[L]", + "worldedit.schematic.plus.symbol": "[+]", + "worldedit.schematic.minus.symbol": "[-]", + "worldedit.schematic.x.symbol": "[X]", + "worldedit.schematic.0.symbol": "[O]", + "worldedit.schematic.dash.symbol": " - ", + "worldedit.schematic.click-to-load": "Click to load", + "worldedit.schematic.load": "Load", + "worldedit.schematic.list": "List", + "worldedit.schematic.available": "Available schematics", + "worldedit.schematic.unload": "Unload", + "worldedit.schematic.delete": "delete", + "worldedit.schematic.visualize": "visualize", + "worldedit.schematic.clipboard": "Add to (multi-)clipboard", + "worldedit.schematic.unknown-filename": "Unknown filename: {0}", + "worldedit.schematic.file-not-exist": "File could not be read or it does not exist: {0}", + "worldedit.schematic.already-exists": "That schematic already exists!", + "worldedit.schematic.failed-to-save": "Failed to save schematic", + "worldedit.schematic.directory-does-not-exist": "Directory '{0}' does not exist!", + "worldedit.schematic.file-perm-fail": "Creation of '{0}' failed! Check file permission.", + "worldedit.schematic.sorting-old-new": "Cannot sort by oldest and newest.", + "worldedit.schematic.unsupported-minecraft-version": "This version of WorldEdit does not support your Minecraft version. Schematics will not work until this is resolved.", + "worldedit.pos.already-set": "Position already set.", + "worldedit.pos.console-require-coords": "You must provide coordinates as console.", + "worldedit.hpos.no-block": "No block in sight!", + "worldedit.hpos.already-set": "Position already set.", + "worldedit.chunk.selected-multiple": "Chunks selected: ({0}, {1}, {2}) - ({3}, {4}, {5})", + "worldedit.chunk.selected": "Chunk selected: {0}, {1}, {2}", + "worldedit.wand.invalid": "Wand item is mis-configured or disabled.", + "worldedit.wand.selwand.info": "Left click: select pos #1; Right click: select pos #2", + "worldedit.wand.selwand.now.tool": "The selection wand is now a normal tool. You can disable it with {0} and rebind it to any item with {1} or get a new wand with {2}.", + "worldedit.wand.navwand.info": "Left click: jump to location; Right click: pass through walls", + "worldedit.contract.contracted": "Region contracted {0} blocks.", + "worldedit.shift.shifted": "Region shifted.", + "worldedit.outset.outset": "Region outset.", + "worldedit.inset.inset": "Region inset.", + "worldedit.trim.trim": "Region trimmed.", + "worldedit.trim.no-blocks": "No blocks matched the trim mask.", + "worldedit.size.offset": "{0}: {1} @ {2} ({3} blocks)", + "worldedit.size.type": "Type: {0}", + "worldedit.size.size": "Size: {0}", + "worldedit.size.distance": "Cuboid distance: {0}", + "worldedit.size.blocks": "# of blocks: {0}", + "worldedit.count.counted": "Counted: {0}", + "worldedit.distr.no-blocks": "No blocks counted.", + "worldedit.distr.no-previous": "No previous distribution.", + "worldedit.distr.total": "Total Block Count: {0}", + "worldedit.select.cleared": "Selection cleared.", + "worldedit.select.cuboid.message": "Cuboid: left click for point 1, right click for point 2", + "worldedit.select.cuboid.description": "Select two corners of a cuboid", + "worldedit.select.extend.message": "Cuboid: left click for a starting point, right click to extend", + "worldedit.select.extend.description": "Fast cuboid selection mode", + "worldedit.select.poly.message": "2D polygon selector: Left/right click to add a point.", + "worldedit.select.poly.limit-message": "{0} points maximum.", + "worldedit.select.poly.description": "Select a 2D polygon with height", + "worldedit.select.ellipsoid.message": "Ellipsoid selector: left click=center, right click to extend", + "worldedit.select.ellipsoid.description": "Select an ellipsoid", + "worldedit.select.sphere.message": "Sphere selector: left click=center, right click to set radius", + "worldedit.select.sphere.description": "Select a sphere", + "worldedit.select.cyl.message": "Cylindrical selector: Left click=center, right click to extend", + "worldedit.select.cyl.description": "Select a cylinder", + "worldedit.select.convex.message": "Convex polyhedral selector: Left click=First vertex, right click to add more.", + "worldedit.select.convex.limit-message": "{0} points maximum.", + "worldedit.select.convex.description": "Select a convex polyhedral", + "worldedit.select.default-set": "Your default region selector is now {0}.", + "worldedit.chunkinfo.chunk": "Chunk: {0}, {1}", + "worldedit.chunkinfo.old-filename": "Old format: {0}", + "worldedit.chunkinfo.mcregion-filename": "McRegion: region/{0}", + "worldedit.listchunks.listfor": "Listing chunks for: {0}", + "worldedit.drain.drained": "{0} blocks have been drained.", + "worldedit.fill.created": "{0} blocks have been filled.", + "worldedit.fillr.created": "{0} blocks have been filled.", + "worldedit.fixlava.fixed": "{0} blocks have been fixed.", + "worldedit.fixwater.fixed": "{0} blocks have been fixed.", + "worldedit.removeabove.removed": "{0} blocks have been removed.", + "worldedit.removebelow.removed": "{0} blocks have been removed.", + "worldedit.removenear.removed": "{0} blocks have been removed.", + "worldedit.replacenear.replaced": "{0} blocks have been replaced.", + "worldedit.snow.created": "{0} surfaces have been covered.", + "worldedit.thaw.removed": "{0} blocks have been thawed.", + "worldedit.green.changed": "{0} blocks have been greened.", + "worldedit.extinguish.removed": "{0} fires have been extinguished.", + "worldedit.butcher.killed": "{0} mobs have been killed in a radius of {1}.", + "worldedit.butcher.explain-all": "Use -1 to remove all mobs in loaded chunks", + "worldedit.remove.removed": "{0} entities have been marked for removal.", + "worldedit.remove.explain-all": "Use -1 to remove all entities in loaded chunks", + "worldedit.calc.invalid": "'{0}' could not be parsed as a valid expression", + "worldedit.calc.invalid.with-error": "'{0}' could not be parsed as a valid expression: '{1}'", + "worldedit.paste.pasted": "The clipboard has been pasted at {0}", + "worldedit.paste.selected": "Selected clipboard paste region.", + "worldedit.rotate.no-interpolation": "Note: Interpolation is not yet supported, so angles that are multiples of 90 is recommended.", + "worldedit.rotate.rotated": "The clipboard copy has been rotated.", + "worldedit.flip.flipped": "The clipboard copy has been flipped.", + "worldedit.clearclipboard.cleared": "Clipboard cleared.", + "worldedit.set.done": "Operation completed ({0}).", + "worldedit.set.done.verbose": "Operation completed ({0}).", + "worldedit.line.changed": "{0} blocks have been changed.", + "worldedit.line.invalid-type": "//line only works with cuboid selections or convex polyhedral selections", + "worldedit.line.cuboid-only": "//line only works with cuboid selections", + "worldedit.curve.changed": "{0} blocks have been changed.", + "worldedit.curve.invalid-type": "//curve only works with convex polyhedral selections", + "worldedit.curve.convex-only": "//curve only works with convex polyhedral selections", + "worldedit.replace.replaced": "{0} blocks have been replaced.", + "worldedit.stack.changed": "{0} blocks changed. Undo with //undo", + "worldedit.stack.intersecting-region": "Stack offset must not collide with the region when using block units", + "worldedit.regen.regenerated": "Region regenerated.", + "worldedit.regen.failed": "Unable to regenerate chunks. Check console for details.", + "worldedit.walls.changed": "{0} blocks have been changed.", + "worldedit.faces.changed": "{0} blocks have been changed.", + "worldedit.overlay.overlaid": "{0} blocks have been overlaid.", + "worldedit.naturalize.naturalized": "{0} block(s) have been made to look more natural.", + "worldedit.center.changed": "Center set. ({0} blocks changed)", + "worldedit.smooth.changed": "Terrain's height map smoothed. {0} blocks changed.", + "worldedit.snowsmooth.changed": "Snow's height map smoothed. {0} blocks changed.", + "worldedit.move.moved": "{0} blocks moved.", + "worldedit.deform.deformed": "{0} blocks have been deformed.", + "worldedit.hollow.changed": "{0} blocks have been changed.", + "worldedit.forest.created": "{0} trees created.", + "worldedit.flora.created": "{0} flora created.", + "worldedit.unstuck.moved": "There you go!", + "worldedit.ascend.obstructed": "No free spot above you found.", + "worldedit.ascend.moved": "Ascended {0} levels.", + "worldedit.descend.obstructed": "No free spot below you found.", + "worldedit.descend.moved": "Descended {0} levels.", + "worldedit.ceil.obstructed": "No free spot above you found.", + "worldedit.ceil.moved": "Woosh!", + "worldedit.thru.obstructed": "No free spot ahead of you found.", + "worldedit.thru.moved": "Woosh!", + "worldedit.jumpto.moved": "Poof!", + "worldedit.jumpto.none": "No block in sight (or too far away)!", + "worldedit.up.obstructed": "You would hit something above you.", + "worldedit.up.moved": "Woosh!", + "worldedit.cone.invalid-radius": "You must either specify 1 or 2 radius values.", + "worldedit.cone.created": "{0} blocks have been created.", + "worldedit.cyl.invalid-radius": "You must either specify 1 or 2 radius values.", + "worldedit.cyl.created": "{0} blocks have been created.", + "worldedit.hcyl.thickness-too-large": "Thickness cannot be larger than x or z radii.", + "worldedit.sphere.invalid-radius": "You must either specify 1 or 3 radius values.", + "worldedit.sphere.created": "{0} blocks have been created.", + "worldedit.blob.created": "{0} blocks have been created.", + "worldedit.feature.created": "Feature created, {0} blocks placed.", + "worldedit.generate.feature.failed": "This feature cannot go here. Ensure the area meets the requirements.", + "worldedit.forestgen.created": "{0} trees created.", + "worldedit.pumpkins.created": "{0} pumpkin patches created.", + "worldedit.feature.failed": "Failed to generate feature. Is it a valid spot for it?", + "worldedit.pyramid.created": "{0} blocks have been created.", + "worldedit.generate.created": "{0} blocks have been created.", + "worldedit.generatebiome.changed": "{0} biomes affected.", + "worldedit.structure.created": "Structure created, {0} blocks placed.", + "worldedit.generate.structure.failed": "Failed to generate structure. Is it a valid spot for it?", + "worldedit.reload.config": "Configuration reloaded!", + "worldedit.report.written": "FAWE report written to {0}", + "worldedit.report.error": "Failed to write report: {0}", + "worldedit.report.callback": "FAWE report: {0}.report", + "worldedit.timezone.invalid": "Invalid timezone", + "worldedit.timezone.set": "Timezone set for this session to: {0}", + "worldedit.timezone.current": "The current time in that timezone is: {0}", + "worldedit.version.version": "FAWE version:\n - Date {0}\n - Commit {1}\n - Build {2}\n - Platform {3}", + "worldedit.trace.no-tracing-extents": "Trace: No extent was used.", + "worldedit.trace.action-failed": "Trace: Action(s) {0} at {1} discarded by extent {2}", + "worldedit.trace.active.already": "Trace mode already active.", + "worldedit.trace.inactive.already": "Trace mode already inactive.", + "worldedit.trace.active": "Trace mode now active.", + "worldedit.trace.inactive": "Trace mode now inactive.", + "worldedit.command.time-elapsed": "{0}s elapsed (history: {1} changed; {2} blocks/sec).", + "worldedit.command.permissions": "You are not permitted to do that. Are you in the right mode?", + "worldedit.command.player-only": "This command must be used with a player.", + "worldedit.command.error.report": "&cPlease report this error: [See console]", + "worldedit.command.deprecation": "This command is deprecated.", + "worldedit.command.deprecation-message": "Please use '{0}' instead.", + "worldedit.pastebin.uploading": "(Please wait... sending output to paste service...)", + "worldedit.session.cant-find-session": "Unable to find session for {0}", + "worldedit.platform.no-file-dialog": "File dialogs are not supported in your environment.", + "worldedit.tool.max-block-changes": "Max blocks change limit reached.", + "worldedit.tool.no-block": "No block in sight!", + "worldedit.tool.repl.equip": "Block replacer tool bound to {0}.", + "worldedit.tool.repl.switched": "Replacer tool switched to: {0}", + "worldedit.tool.data-cycler.equip": "Block data cycler tool bound to {0}.", + "worldedit.tool.data-cycler.block-not-permitted": "You are not permitted to cycle the data value of that block.", + "worldedit.tool.data-cycler.cant-cycle": "That block's data cannot be cycled!", + "worldedit.tool.data-cycler.new-value": "Value of {0} is now {1}.", + "worldedit.tool.data-cycler.cycling": "Now cycling {0}.", + "worldedit.tool.deltree.equip": "Floating tree remover tool bound to {0}.", + "worldedit.tool.deltree.not-tree": "That's not a tree.", + "worldedit.tool.deltree.not-floating": "That's not a floating tree.", + "worldedit.tool.tree.equip": "Tree tool bound to {0}.", + "worldedit.tool.tree.obstructed": "A tree can't go there.", + "worldedit.tool.structure.equip": "Structure placer tool bound to {0}.", + "worldedit.tool.feature.equip": "Feature placer tool bound to {0}.", + "worldedit.tool.info.equip": "Info tool bound to {0}.", + "worldedit.tool.inspect.equip": "Inspect tool bound to {0}.", + "worldedit.tool.info.blockstate.hover": "Block state (click to copy)", + "worldedit.tool.info.internalid.hover": "Internal ID", + "worldedit.tool.info.legacy.hover": "Legacy id:data", + "worldedit.tool.info.light.hover": "Block Light/Light Above", + "worldedit.tool.none.equip": "Tool unbound from your current item.", + "worldedit.tool.selwand.equip": "Selection wand bound to {0}.", + "worldedit.tool.navwand.equip": "Navigation wand bound to {0}.", + "worldedit.tool.floodfill.equip": "Block flood fill tool bound to {0}.", + "worldedit.tool.farwand.equip": "Far wand tool bound to {0}.", + "worldedit.tool.lrbuild.equip": "Long-range building tool bound to {0}.", + "worldedit.tool.lrbuild.set": "Left-click set to {0}; right-click set to {1}.", + "worldedit.tool.stack.equip": "Stack tool bound to {0}.", + "worldedit.tool.unbind-instruction": "Run {0} while holding the item to unbind it.", + "worldedit.tool.superpickaxe.mode.single": "Mode is now single. Left click with a pickaxe. // to disable.", + "worldedit.tool.superpickaxe.mode.area": "Mode is now area. Left click with a pickaxe. // to disable.", + "worldedit.tool.superpickaxe.mode.recursive": "Mode is now recursive. Left click with a pickaxe. // to disable.", + "worldedit.tool.superpickaxe.max-range": "Maximum range is {0}.", + "worldedit.tool.superpickaxe.enabled.already": "Super pickaxe already enabled.", + "worldedit.tool.superpickaxe.disabled.already": "Super pickaxe already disabled.", + "worldedit.tool.superpickaxe.enabled": "Super pickaxe enabled.", + "worldedit.tool.superpickaxe.disabled": "Super pickaxe disabled.", + "worldedit.tool.mask.set": "Brush mask set.", + "worldedit.tool.mask.disabled": "Brush mask disabled.", + "worldedit.tool.material.set": "Brush material set.", + "worldedit.tool.range.set": "Brush range set.", + "worldedit.tool.size.set": "Brush size set.", + "worldedit.tool.tracemask.set": "Trace mask set.", + "worldedit.tool.tracemask.disabled": "Trace mask disabled.", + "worldedit.execute.script-permissions": "You don't have permission to use that script.", + "worldedit.executelast.no-script": "Use /cs with a script name first.", + "worldedit.script.read-error": "Script read error: {0}", + "worldedit.script.unsupported": "Only .js scripts are currently supported", + "worldedit.script.file-not-found": "Script does not exist: {0}", + "worldedit.script.no-script-engine": "Failed to find an installed script engine.\nPlease see https://worldedit.enginehub.org/en/latest/usage/other/craftscripts/", + "worldedit.script.failed": "Failed to execute: {0}", + "worldedit.script.failed-console": "Failed to execute (see console): {0}", + "worldedit.operation.affected.biome": "{0} biomes affected", + "worldedit.operation.affected.block": "{0} blocks affected", + "worldedit.operation.affected.column": "{0} columns affected", + "worldedit.operation.affected.entity": "{0} entities affected", + "worldedit.operation.deform.expression": "deformed using {0}", + "worldedit.error.parser.invalid-nbt": "Invalid NBT Data in input: '{0}'. Error: {1}", + "worldedit.selection.convex.info.vertices": "Vertices: {0}", + "worldedit.selection.convex.info.triangles": "Triangles: {0}", + "worldedit.selection.convex.explain.primary": "Started new selection with vertex {0}.", + "worldedit.selection.convex.explain.secondary": "Added vertex {0} to the selection.", + "worldedit.selection.cuboid.info.pos1": "Position 1: {0}", + "worldedit.selection.cuboid.info.pos2": "Position 2: {0}", + "worldedit.selection.cuboid.explain.primary": "First position set to {0}.", + "worldedit.selection.cuboid.explain.primary-area": "First position set to {0} ({1}).", + "worldedit.selection.cuboid.explain.secondary": "Second position set to {0}.", + "worldedit.selection.cuboid.explain.secondary-area": "Second position set to {0} ({1}).", + "worldedit.selection.extend.explain.primary": "Started selection at {0} ({1}).", + "worldedit.selection.extend.explain.secondary": "Extended selection to encompass {0} ({1}).", + "worldedit.selection.ellipsoid.info.center": "Center: {0}", + "worldedit.selection.ellipsoid.info.radius": "X/Y/Z Radius: {0}", + "worldedit.selection.ellipsoid.explain.primary": "Center position set to {0}.", + "worldedit.selection.ellipsoid.explain.primary-area": "Center position set to {0} ({1}).", + "worldedit.selection.ellipsoid.explain.secondary": "Radius set to {0}.", + "worldedit.selection.ellipsoid.explain.secondary-area": "Radius set to {0} ({1}).", + "worldedit.selection.cylinder.info.center": "Center: {0}", + "worldedit.selection.cylinder.info.radius": "Radius: {0}", + "worldedit.selection.cylinder.explain.primary": "Starting a new cylindrical selection at {0}.", + "worldedit.selection.cylinder.explain.secondary": "Radius set to {0}/{1} blocks. ({2})", + "worldedit.selection.cylinder.explain.secondary-missing": "You must select the center point before setting the radius.", + "worldedit.selection.polygon2d.info": "# points: {0}", + "worldedit.selection.polygon2d.explain.primary": "Starting a new polygon at {0}.", + "worldedit.selection.polygon2d.explain.secondary": "Added point #{0} at {1}.", + "worldedit.selection.sphere.explain.secondary": "Radius set to {0}.", + "worldedit.selection.sphere.explain.secondary-defined": "Radius set to {0} ({1}).", + "worldedit.sideeffect.history": "History", + "worldedit.sideeffect.history.description": "Writes history of the change", + "worldedit.sideeffect.heightmaps": "Heightmaps", + "worldedit.sideeffect.heightmaps.description": "Updates heightmaps", + "worldedit.sideeffect.lighting": "Lighting", + "worldedit.sideeffect.lighting.description": "Updates block lighting", + "worldedit.sideeffect.neighbors": "Neighbors", + "worldedit.sideeffect.neighbors.description": "Updates shapes of blocks in the edit", + "worldedit.sideeffect.update": "Update", + "worldedit.sideeffect.update.description": "Notifies the changed block", + "worldedit.sideeffect.validation": "Validation", + "worldedit.sideeffect.validation.description": "Validates and fixes inconsistent world state, such as disconnected blocks", + "worldedit.sideeffect.entity_ai": "Entity AI", + "worldedit.sideeffect.entity_ai.description": "Updates Entity AI paths for the block changes", + "worldedit.sideeffect.events": "Mod/Plugin Events", + "worldedit.sideeffect.events.description": "Tells other mods/plugins about these changes when applicable", + "worldedit.sideeffect.state.on": "On", + "worldedit.sideeffect.state.delayed": "Delayed", + "worldedit.sideeffect.state.off": "Off", + "worldedit.sideeffect.box.current": "Current", + "worldedit.sideeffect.box.change-to": "Click to set to {0}", + "worldedit.help.command-not-found": "The command '{0}' could not be found.", + "worldedit.help.no-subcommands": "'{0}' has no sub-commands. (Maybe '{1}' is for a parameter?)", + "worldedit.help.subcommand-not-found": "The sub-command '{0}' under '{1}' could not be found.", + "worldedit.cli.stopping": "Stopping!", + "worldedit.cli.unknown-command": "Unknown command!", + "worldedit.version.bukkit.unsupported-adapter": "This FastAsyncWorldEdit version does not fully support your version of Bukkit. Block entities (e.g. chests) will be empty, block properties (e.g. rotation) will be missing, and other things may not work. Update FastAsyncWorldEdit to restore this functionality:\n{0}", + "worldedit.bukkit.no-edit-without-adapter": "Editing on unsupported versions is disabled." +} diff --git a/live-server/plugins/FastAsyncWorldEdit/worldedit-config.yml b/live-server/plugins/FastAsyncWorldEdit/worldedit-config.yml new file mode 100644 index 0000000..b74eaa0 --- /dev/null +++ b/live-server/plugins/FastAsyncWorldEdit/worldedit-config.yml @@ -0,0 +1,98 @@ +# +# WorldEdit's Configuration File +# +# About editing this file: +# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain and post +# errors. If you use an editor, like Notepad++ (recommended for Windows +# users), you must configure it to "replace tabs with spaces." +# This can be changed in Settings > Preferences > Language Menu. +# - Don't get rid of indentations. They are indented so some entries that are +# in categories, like "max-blocks-changed", are placed in the "limits" +# category. +# - If you want to check the format of this file before putting it +# into WorldEdit, paste it into https://yaml-online-parser.appspot.com/ +# and see if it gives you "ERROR:". +# - Lines starting with # are comments, so they are ignored. +# - If you want to allow blocks, make sure to change "disallowed-blocks" to [] +# + +limits: + max-blocks-changed: + # Ignored, use FAWE config limits + default: -1 + maximum: -1 + max-polygonal-points: + default: -1 + maximum: 20 + # radius, superpickaxe, brush radius are ignored, use FAWE config limits + max-radius: -1 + max-super-pickaxe-size: 5 + max-brush-radius: 100 + butcher-radius: + default: -1 + # Ignored, use FAWE config limits + maximum: -1 + disallowed-blocks: + - "minecraft:wheat" + - "minecraft:fire" + - "minecraft:redstone_wire" + +use-inventory: + enable: false + allow-override: true + creative-mode-overrides: false + +logging: + log-commands: false + file: worldedit.log + # The format of custom log message. This is java general format string (java.util.Formatter). Arguments are: + # 1$ : date - a Date object representing event time of the log record. + # 2$ : source - a string representing the caller, if available; otherwise, the logger's name. + # 3$ : logger - the logger's name. + # 4$ : level - the log level. + # 5$ : message - the formatted log message returned from the Formatter.formatMessage(LogRecord) method. It uses java.text formatting and does not use the java.util.Formatter format argument. + # 6$ : thrown - a string representing the throwable associated with the log record and its backtrace beginning with a newline character, if any; otherwise, an empty string. + # For details see: + # https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html + # https://docs.oracle.com/javase/8/docs/api/java/util/logging/SimpleFormatter.html#format-java.util.logging.LogRecord- + format: "[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s]: %5$s%6$s%n" + +super-pickaxe: + drop-items: true + many-drop-items: false + +snapshots: + directory: + +navigation-wand: + item: minecraft:compass + max-distance: 100 + +scripting: + timeout: 3000 + dir: craftscripts + +saving: + dir: schematics + +files: + allow-symbolic-links: false + +history: + size: 15 + expiration: 10 + +calculation: + timeout: 100 + +debugging: + trace-unflushed-sessions: false + +wand-item: minecraft:wooden_axe +shell-save-type: +no-double-slash: false +no-op-permissions: false +debug: false +show-help-on-first-use: true +server-side-cui: true +command-block-support: false diff --git a/live-server/plugins/GrimAC/config.yml b/live-server/plugins/GrimAC/config.yml new file mode 100644 index 0000000..6d8716a --- /dev/null +++ b/live-server/plugins/GrimAC/config.yml @@ -0,0 +1,230 @@ +# GrimAC main configuration +# Source code: https://github.com/MWHunter/Grim +# Copyright 2025 DefineOutside and contributors, Licensed under GPLv3. +# Modified binaries, or plugins with copied grim code, must be private, +# or with full source code available to buyers at no additional cost. + +alerts: + # In addition to broadcasting alerts to players, should they also be sent to the console? + print-to-console: true + # This controls whether/how alerts are shared between servers connected to your proxy. + # You must have 'bungee-plugin-message-channel' enabled in your Velocity's configuration if Velocity is in use. + proxy: + # Should alerts be sent to other servers connected to your proxy? + send: false + # Should the alerts received from other servers be announced to this server? + receive: false + +verbose: + print-to-console: false + +check-for-updates: false + +client-brand: + # This means it won't broadcast their brand to operators if the brand matches the following regexes + ignored-clients: + - "^vanilla$" + - "^fabric$" + - "^quilt$" + - "^lunarclient:v\\d+\\.\\d+\\.\\d+-\\d{4},(?:fabric|forge)$" + - "^Feather Fabric$" + - "^labymod$" + # Grim will blacklist specific Forge versions which include built-in Reach hacks (Forge 1.18.2 to 1.19.3). + # Setting this option to false will allow said clients to connect to the server. Disable this at your own risk. + disconnect-blacklisted-forge-versions: true + +spectators: + # Hide all spectators with the grim.spectator permission regardless if they are actually actively spectating + hide-regardless: false + # Will make spectators hidden only in these worlds, keep blank to allow all worlds + allowed-worlds: + - "" + +# How long should players have until we kick them for timing out? Default = 60 seconds +max-transaction-time: 60 + +# Enable this to stop Grim cancelling pongs received from players. +# This may improve compatibility with other anticheats. It may cause issues with packet limiters. +# Do not enable this if you are not sure what you are doing. +disable-pong-cancelling: false + +# Should the default block resynchronization handler be disabled? +# By default, Grim reads blocks from the server world and sends them to the client to fix desync. +# If you use plugins that create fake packet-based blocks (which don't exist in the server world), +# you should set this to true to prevent Grim from overwriting them with air/real blocks. +# This forces the use of a "NoOp" (No Operation) handler unless a custom one is provided via API. +disable-default-resync-handler: false + +# Should the duplicate movement packet be cancelled? +# Mojang has fixed this issue in 1.21. This was their attempt to fix the "bucket desync". https://bugs.mojang.com/browse/MC-12363 +# This setting only applies to 1.17-1.20.5 clients on 1.8 servers. +cancel-duplicate-packet: true + +# Whether or not to ignore the rotation in duplicate packets +ignore-duplicate-packet-rotation: false + +Simulation: + # How much should we multiply total advantage by when the player is legit + # This is what the default config looks like (x axis = seconds, y axis = 1/1000 block): https://www.desmos.com/calculator/d4ufgxrxer + setback-decay-multiplier: 0.999 + # How large of an offset from the player's movement should we create a violation for? + # Measured in blocks from the possible movement + # We account for Optifine by switching trig tables but dropping this to 0.001 will reduce FastMath + # flagging the anticheat if this compensation doesn't work... + threshold: 0.001 + # How large of a violation in a tick before the player gets immediately setback? + # -1 to disable + immediate-setback-threshold: 0.1 + # How large of an advantage over all ticks before we start to setback? + # -1 to disable + max-advantage: 1 + # After 50 seconds with default config, the player will go from 4 blocks -> 1 block of advantage + # This is to stop the player from gathering too many violations and never being able to clear them all + # Default advantage ceiling (x axis = seconds, y axis = 1/1000 block): https://www.desmos.com/calculator/4lovswdarj + max-ceiling: 4 + # Violation level threshold for setback + # 1 for old behavior + setback-violation-threshold: 1 + +# Checks to see if a player entered a block during a movement +Phase: + setbackvl: 1 # Glitching into blocks can allow wall climbing, plus this check is relatively stable + decay: 0.005 + +AirLiquidPlace: + cancelvl: 0 + +FabricatedPlace: + cancelvl: 5 + +FarPlace: + cancelvl: 5 + +PositionPlace: + cancelvl: 5 + +RotationPlace: + cancelvl: 5 + +# Prediction-based no slow check +# Grim accounts for buggy netcode here... hard to false even when spamming right click and offhand button +# Much more stable than other anticheats, but please report any falses... I have fixed a ton of netcode issues here. +NoSlow: + # How much of an offset is "cheating" + # By default this is lower than other offs + # Flags by 0.03-0.2 consistently with NoSlow on + threshold: 0.001 + # Setback fast on the first item to remove any advantage NoSlow gives + setbackvl: 5 + # Decay's when the player uses an item AND is slowed by it + decay: 0.05 + +Knockback: + # How much should we multiply total advantage by when the player is legit + setback-decay-multiplier: 0.999 + # How large of an offset from the player's velocity should we create a violation for? + # Measured in blocks from the possible velocity + threshold: 0.001 + # How large of a violation in a tick before the player gets immediately setback? + # -1 to disable + immediate-setback-threshold: 0.1 + # How large of an advantage over all ticks before we start to setback? + # -1 to disable + max-advantage: 1 + # This is to stop the player from gathering too many violations and never being able to clear them all + max-ceiling: 4 + +Explosion: + threshold: 0.001 + setbackvl: 3 + +TimerA: + setbackvl: 10 + # Milliseconds that the player can accumulate for later use when they fall behind + # Could potentially allow 1.8 fast use/fast heal/fast bow bypasses if set too high, 120 ms seems like a good balance + drift: 120 + +# This check limits abuse of the TimerA balance by preventing the player's movement falling too far behind realtime +TimerLimit: + # Ping at which the check will start to limit timer balance, to prevent abuse. + # Can cause some setbacks for legitimate players but only if they are over this ping threshold. + # -1 to disable + ping-abuse-limit-threshold: 1000 + +NegativeTimer: + # Number of milliseconds lost while moving before we should start flagging + drift: 1200 + +# Same check method as TimerA, but for vehicles +VehicleTimer: + # Target 1.005 timer + setbackvl: 10 + +PacketOrderI: + # enable if players are getting flagged for using 1.7 animations mods + exempt-placing-while-digging: false + +Reach: + # How much should we expand hitboxes by? 0.0005 should detect 3.0005+ reach + # + # There is 0.03 forced expansion with 1.9-1.18.1 (not 1.18.2), or some client/server combinations due to + # protocol changes and limitations. This check is most powerful with 1.7/1.8 clients on 1.8 servers. + threshold: 0.0005 + # Should we cancel hits that we know are impossible? + # 3.00-3.03 hits may go through but still be flagged, due to packet order limitations + block-impossible-hits: true + # This will send an additional packet at the end of every tick to increase the likelihood of catching cheats + # This injects into server's connection list to send a final packet just before the server flushes + # Enabling this will increase bandwidth usage for all players + # This will not decrease overall server performance + # Enabling this will catch more cheaters. + # Leaving this disabled will still catch cheaters and will not cause false positives + # Unless you are a 1.8 PvP focused server, this additional packet is not recommended + enable-post-packet: false + +exploit: + # You can gain high speeds when sprint jumping with an elytra, this prevents the exploit when set to false + # Mojang screwed up netcode by making elytra start client sided and elytra end server sided + # Elytras take 0.99 horizontal friction, so constantly adding 0.2 horizontal speeds results in very high speeds. + allow-sprint-jumping-when-using-elytra: true + # This option mitigates the player's placement on ghostblocks by resynchronizing the player when it happens + allow-building-on-ghostblocks: true + # This setting, influenced by the boolean above defines the distance to check for ghost blocks + # Its valid range is limited from 2 to 4 + distance-to-check-if-ghostblocks: 2 + +# Enable logging plugins who have injected into netty on join to debug compatibility issues +debug-pipeline-on-join: false + +# Enables experimental checks +experimental-checks: false + +reset-item-usage-on-item-update: true +reset-item-usage-on-attack: true +reset-item-usage-on-slot-change: true +reset-item-usage-on-item-use: true + +# Grim sometimes cancels illegal packets such as with timer, after X packets in a second cancelled, when should +# we simply kick the player? This is required as some packet limiters don't count packets cancelled by grim. +packet-spam-threshold: 100 +# Enable this to print a stacktrace when a player is kicked due to packet-spam-threshold +debug-packet-cancel: false + +# Grim is able to enforce that a player set out of flying state cannot have more than X milliseconds of ping +# This is due to Grim not currently checking flying players +# To disable, use -1 +max-ping-out-of-flying: 1000 + +# Maximum ping when a firework boost is removed from the player. +# This prevents high latency players from being able to use 1 firework boost with an elytra forever. +max-ping-firework-boost: 1000 + +# Schema markers — touch only if you know what you're doing. +# config-flavor: V2 = Grim 2.x build, V3 = Grim 3.x. The plugin refuses +# to load a config whose flavor doesn't match its own +# build, so a V3 config opened by a V2 jar fails fast +# instead of silently flat-merging into the wrong keys. +# config-version: bumped on every breaking shape change. Old configs +# auto-migrate up via the bundled updater on next start. +config-flavor: V2 +config-version: 10 diff --git a/live-server/plugins/GrimAC/database.yml b/live-server/plugins/GrimAC/database.yml new file mode 100644 index 0000000..15ba60d --- /dev/null +++ b/live-server/plugins/GrimAC/database.yml @@ -0,0 +1,99 @@ +# =========================================================================== +# Grim datastore +# +# Routes the DataStore categories (violation / session / player-identity / +# setting / blob) to specific backend instances. Each backend listed in +# `routing:` has its own settings file under `databases/.yml`. +# +# On first boot, if the legacy store (violations.sqlite) is present, it +# is migrated into the new store automatically. Set migration.skip to +# true if you prefer to carry over manually later. +# =========================================================================== + +# Every datastore key lives under this top-level wrapper so the keyspace is +# naturally namespaced — Configuralize merges every yml into one global +# keyspace at runtime, and a flat layout here would collide with identical +# top-level keys in config.yml / discord.yml (`enabled`, `history`, etc.). +database: + + # Master toggle. Set false to disable violation history + /grim history + # entirely. Live AC checks keep running; flags just aren't persisted. + enabled: true + + # Categories → backend ids. Each distinct id here must have a matching + # `databases/.yml` file (auto-created from bundled defaults on first + # boot) and a registered BackendProvider at runtime. `none` disables + # persistence for that category entirely. Mixed backends are fine — e.g. + # violations in a networked SQL store and blobs in an object store. + routing: + violation: sqlite + session: sqlite + player-identity: sqlite + setting: sqlite + blob: none + + session: + # Used at migration time only — the legacy V0 reader has no join/quit + # signals, so SessionReconstructor groups violations into sessions when + # consecutive flags fall within this gap. Live sessions are bounded by + # the connection, not this value. + gap-ms: 600000 + scope-per-server: true + # How often a connected-player heartbeat upserts the session row so + # last_activity_epoch_ms stays current. Bounds the apparent session + # duration if the server crashes (graceful disconnects always set + # closed_at). Cost: ~one row UPSERT per online player per interval. + # 0 disables. + heartbeat-interval-ms: 30000 + + write-path: + # queue-capacity must be a positive power of two (ring-buffer requirement). + # Typical values: 4096, 8192, 16384, 32768, 65536. + queue-capacity: 16384 + batch-size: 256 + flush-interval-ms: 1000 + warn-rate-ms: 10000 + shutdown-drain-timeout-ms: 5000 + # Ring-buffer wait strategy. BLOCKING is the safe default: a condition-variable + # wait that minimises CPU use at the cost of a small amount of latency under + # extreme burst. Pick YIELDING or BUSY_SPIN only when you have a free core + # budget and have measured a win over BLOCKING. + # Options: BLOCKING, TIMEOUT_BLOCKING, SLEEPING, YIELDING, BUSY_SPIN. + wait-strategy: BLOCKING + + retention: + session: + enabled: true + max-age-days: 90 + violation: + enabled: true + max-age-days: 365 + player-identity: + enabled: false + setting: + enabled: false + blob: + enabled: true + max-age-days: 30 + + migration: + skip: false + max-duration-ms: 0 # 0 = no timeout + + name-resolution: + # Order matters — first non-empty result wins. + # local-cache reads the PlayerIdentity category. + # offline-mode-uuid derives UUID.nameUUIDFromBytes (offline servers only). + chain: [local-cache, offline-mode-uuid] + + history: + entries-per-page: 15 + group-interval-ms: 30000 + + # Display-only tag stamped on new session records. Shown in the session + # header line of `/grim history`. Safe to change mid-operation. + server-name: "Prison" + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/databases/mongo.yml b/live-server/plugins/GrimAC/databases/mongo.yml new file mode 100644 index 0000000..a33a06c --- /dev/null +++ b/live-server/plugins/GrimAC/databases/mongo.yml @@ -0,0 +1,35 @@ +# =========================================================================== +# MongoDB backend settings. +# +# Requires the MongoDB sync driver at runtime; if absent the backend +# disables itself and routing falls back. +# =========================================================================== + +# Every key lives under `mongo:` so this file's keyspace doesn't collide +# with sibling per-backend files when Configuralize merges them all into +# one global namespace. +mongo: + # MongoDB connection string. Credentials encoded in-URL as per the driver's + # standard (mongodb://user:pass@host:port/?authSource=admin). + connection-string: "mongodb://localhost:27017" + + # Database to write into. Collections inside this database come from the + # `tables:` block below. + database: "grim" + + # Per-handler bulkWrite() size. The Mongo driver pools connections + # internally, so this controls commit batching, not connection count. + batch-flush-cap: 256 + + # Collection-name overrides. Default names below. + tables: + meta: grim_meta + checks: grim_checks + players: grim_players + sessions: grim_sessions + violations: grim_violations + settings: grim_settings + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/databases/mysql.yml b/live-server/plugins/GrimAC/databases/mysql.yml new file mode 100644 index 0000000..10e4ab9 --- /dev/null +++ b/live-server/plugins/GrimAC/databases/mysql.yml @@ -0,0 +1,47 @@ +# =========================================================================== +# MySQL backend settings. +# +# MySQL supports multi-server deployments (several Grim instances writing +# into one central DB). Requires the MySQL Connector/J driver at runtime; +# if the driver is missing the backend disables itself at startup and +# logs a clear error, and routing that targeted this backend falls back +# to whatever else is configured. +# =========================================================================== + +# Every key lives under `mysql:` so this file's keyspace doesn't collide +# with sibling per-backend files (sqlite:, postgres:, mongo:, redis:) +# when Configuralize merges them all into one global namespace. +mysql: + # Connection target. + host: "localhost" + port: 3306 + database: "grim" + user: "root" + password: "" + + # Extra URL parameters appended after the canned set + # (useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true). + # Leave empty unless you know you need something specific — the defaults + # match what a local dev install wants. + extra-jdbc-params: "" + + # Per-handler batch-flush cap. Each ring handler accumulates events into a + # PreparedStatement batch and commits on endOfBatch OR when the batch hits + # this cap, whichever comes first. Higher values trade latency for + # throughput under sustained bursts. + batch-flush-cap: 256 + + # Table-name overrides. Rename any of the six logical stores so multiple + # Grim instances can share one MySQL database, or to match an existing + # corporate naming scheme. Defaults shown below. + tables: + meta: grim_meta + checks: grim_checks + players: grim_players + sessions: grim_sessions + violations: grim_violations + settings: grim_settings + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/databases/postgres.yml b/live-server/plugins/GrimAC/databases/postgres.yml new file mode 100644 index 0000000..2f9c02a --- /dev/null +++ b/live-server/plugins/GrimAC/databases/postgres.yml @@ -0,0 +1,37 @@ +# =========================================================================== +# Postgres backend settings. +# +# Postgres supports multi-server deployments (several Grim instances +# writing into one central DB). Requires the Postgres JDBC driver at +# runtime; if the driver is missing the backend disables itself at +# startup and routing that targeted this backend falls back. +# =========================================================================== + +# Every key lives under `postgres:` so this file's keyspace doesn't collide +# with sibling per-backend files when Configuralize merges them all into +# one global namespace. +postgres: + host: "localhost" + port: 5432 + database: "grim" + user: "postgres" + password: "" + + # Extra URL parameters appended after `?`. Leave empty unless you know + # you need something specific. + extra-jdbc-params: "" + + batch-flush-cap: 256 + + # Table-name overrides. Default names below. + tables: + meta: grim_meta + checks: grim_checks + players: grim_players + sessions: grim_sessions + violations: grim_violations + settings: grim_settings + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/databases/redis.yml b/live-server/plugins/GrimAC/databases/redis.yml new file mode 100644 index 0000000..adffe17 --- /dev/null +++ b/live-server/plugins/GrimAC/databases/redis.yml @@ -0,0 +1,51 @@ +# =========================================================================== +# Redis backend settings. +# +# Redis is primarily an in-memory store — ensure AOF persistence is +# enabled on the server if you route history to it, or the history will +# disappear on restart. Requires Jedis at runtime; if Jedis is missing +# the backend disables itself and routing falls back. +# +# Not recommended as a primary history target. Offered for operators +# who only have Redis available and need something working in a pinch. +# =========================================================================== + +# Every key lives under `redis:` so this file's keyspace doesn't collide +# with sibling per-backend files when Configuralize merges them all into +# one global namespace. +redis: + host: "localhost" + port: 6379 + + # Logical database index (0-15 by default). + database: 0 + + # Optional ACL credentials. Leave empty for no-auth Redis. + user: "" + password: "" + + # Prepended to every key this backend writes. Useful when sharing a Redis + # instance with other apps. Leave empty for no prefix. + key-prefix: "" + + timeout-ms: 2000 + batch-flush-cap: 256 + + # When true, log a startup warning if this backend is routing + # violation/session history. Set false to silence after you've confirmed + # persistence is configured. + warn-on-history: true + + # Key-namespace overrides. Interpreted as key-prefix segments (Redis has + # no native tables). Default names below. + tables: + meta: grim_meta + checks: grim_checks + players: grim_players + sessions: grim_sessions + violations: grim_violations + settings: grim_settings + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/databases/sqlite.yml b/live-server/plugins/GrimAC/databases/sqlite.yml new file mode 100644 index 0000000..99c95a4 --- /dev/null +++ b/live-server/plugins/GrimAC/databases/sqlite.yml @@ -0,0 +1,43 @@ +# =========================================================================== +# SQLite backend settings. +# +# SQLite is single-server only. Networked setups should switch routing +# in database.yml to a backend that talks to a shared database. +# =========================================================================== + +# Every key lives under `sqlite:` so this file's keyspace doesn't +# collide with sibling per-backend files (mysql:, postgres:, mongo:, +# redis:) when Configuralize merges them all into one global namespace. +sqlite: + # Path to the SQLite database file. Resolved relative to the plugin + # data folder if not absolute. The legacy file at + # `data/violations.sqlite` is left intact as a safety net; this is + # a new file, never an ALTER on the legacy one. + path: "data/history.v1.db" + + # WAL mode lets concurrent readers run alongside the writer — essential + # for a server plugin that reads /grim history while writing violations. + journal-mode: WAL + + # NORMAL is a reasonable balance between write durability and throughput + # under WAL. FULL doubles durability at throughput cost. OFF is dangerous. + synchronous-mode: NORMAL + + # How long SQLite waits for a lock before giving up. The handler logs + # and drops on BackendException; raising this reduces spurious drops on + # contended disks. + busy-timeout-ms: 5000 + + # Page cache size (in pages). SQLite default page size is 4096 bytes, so + # 10000 pages ≈ 40 MB. Raise for hot histories. + cache-pages: 10000 + + # Per-handler batch-flush cap. Each ring handler accumulates events + # into a PreparedStatement batch and commits on endOfBatch OR when the + # batch hits this cap, whichever comes first. Higher values trade + # latency for throughput under sustained bursts. + batch-flush-cap: 256 + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/discord.yml b/live-server/plugins/GrimAC/discord.yml new file mode 100644 index 0000000..2a88631 --- /dev/null +++ b/live-server/plugins/GrimAC/discord.yml @@ -0,0 +1,25 @@ +# For help with webhooks: https://support.discord.com/hc/en-us/articles/228383668 + +enabled: false +webhook: "" +# Set to true to bypass Discord's webhook URL format validation. +# This allows any valid HTTPS URL (useful for proxies or Matrix forwarders). +disable-webhook-validation: false +embed-title: "**Grim Alert**" +embed-color: "#00FFFF" +include-timestamp: true +# Replaces backticks in values (like client brands) so they don't break Discord's text formatting. +# Set to "`" to disable this replacement. +backtick-replacement-char: "ˋ" # Defaults to U+02CB +violation-content: + - "**Player**: `%player%`" + - "**Check**: %check%" + - "**Violations**: %violations%" + - "**Client Version**: %version%" + - "**Brand**: `%brand%`" + - "**Ping**: %ping%" + - "**TPS**: %tps%" + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/messages.yml b/live-server/plugins/GrimAC/messages.yml new file mode 100644 index 0000000..f106ca0 --- /dev/null +++ b/live-server/plugins/GrimAC/messages.yml @@ -0,0 +1,129 @@ +# \u00BB is » (double >>), ANSI and UTF-8 interpret this differently... you may even see ? due to this +prefix: "&bGrim &8\u00BB" + +alerts-enabled: "%prefix% &fAlerts enabled" +alerts-disabled: "%prefix% &fAlerts disabled" +verbose-enabled: "%prefix% &fVerbose enabled" +verbose-disabled: "%prefix% &fVerbose disabled" +brands-enabled: "%prefix% &fBrands enabled" +brands-disabled: "%prefix% &fBrands disabled" +client-brand-format: "%prefix% &f%player% joined using %brand%" +console-specify-target: "%prefix% &cYou must specify a target as the console!" +reloading: "%prefix% &7Reloading config..." +reloaded: "%prefix% &fConfig has been reloaded." +reload-failed: "%prefix% &cFailed to reload config." +player-not-found: "%prefix% &cPlayer is exempt or offline!" +player-not-this-server: "%prefix% &cPlayer is not on this server!" +sender-not-found: "%prefix% &cYou cannot be exempt to use this command!" +spectate-return: "\n%prefix% &fClick here to return to previous location\n" +cannot-spectate-return: "%prefix% &cYou can only do this after spectating a player" +cannot-run-on-self: "%prefix% &cYou cannot use this command on yourself!" +upload-log: "%prefix% &fUploaded debug to: %url%" +upload-log-start: "%prefix% &fUploading log... please wait" +upload-log-not-found: "%prefix% &cUnable to find that log" +upload-log-upload-failure: "%prefix% &cSomething went wrong while uploading this log, see console for more info" +disconnect: + timeout: "" + closed: "" + error: "An error occurred whilst processing packets. Please contact the administrators." + blacklisted-forge: "Your forge version is blacklisted due to inbuilt reach hacks.Versions affected: 1.18.2-1.19.3Please see https://github.com/MinecraftForge/MinecraftForge/issues/9309." +run-as-player: "%prefix% &cThis command can only be used by players!" +run-as-player-or-console: "%prefix% &cThis command can only be used by players or the console!" +webhook-not-enabled: "Discord webhooks are not enabled!" +webhook-test-message: "test message" +webhook-test-succeeded: "Discord webhook test succeeded!" +webhook-test-failed: "Discord webhook test failed!" + +# Valid placeholders: +# %prefix% +# %player% +# %check_name% +# %description% +# %experimental% +# %vl% - violations +# %verbose% - extra information from the check such as offsets, not all checks will add information +alerts-format: "%prefix% &f%player% &bfailed &f%check_name%%experimental% &f(x&c%vl%&f) &7%verbose%" +alerts-format-proxy: "%prefix% &f[&cproxy&f] &f%player% &bfailed &f%check_name%%experimental% &f(x&c%vl%&f) &7%verbose%" +experimental-symbol: "*" + +profile: + - "&7======================" + - "%prefix% &bProfile for &f%player%" + - "&bPing: &f%ping%" + - "&bVersion: &f%version%" + - "&bClient Brand: &f%brand%" + - "&bHorizontal Sensitivity: &f%h_sensitivity%%" + - "&bVertical Sensitivity: &f%v_sensitivity%%" + - "&bFastMath Enabled: &f%fast_math%" + - "&7======================" +help: + - "&7======================" + - "/grim alerts &f- &7Toggle alerts" + - "/grim brands &f- &7Toggle brands" + - "/grim profile &f- &7View player info" + - "/grim help &f- &7View this help message" + - "/grim debug &f- &7Developer Prediction output" + - "/grim perf &f- &7Developer ms/prediction" + - "/grim reload &f- &7Reloads the config" + - "/grim spectate &f- &7Spectate a player" + - "/grim verbose &f- &7Shows every flag to you, without buffers" + - "/grim log [0-255] &f- &7Uploads a debug log for prediction flags" + - "/grim history &f- &7Session list (newest first)" + - "/grim history page &f- &7Jump to page N of the session list" + - "/grim history session [-d] [-v] &f- &7Session detail (most recent violations first)" + - "/grim history session page [-d] [-v] &f- &7Session detail, violation page N" + - "&7======================" + +# === /grim history === +# Session-based history UI. All lines below are fully configurable; placeholders +# documented at each key. Hover-text on session and violation lines is built by +# the renderer from the raw data (verbose, check breakdowns) and doesn't need a +# template — but you can add to any line below to layer +# additional tooltips on top. + +grim-history-load-failure: "%prefix% &cHistory subsystem failed to load! Check server console for errors." +grim-history-disabled: "%prefix% &cHistory subsystem is disabled!" +grim-history-failed: "%prefix% &cFailed to load history: &7%error%" +grim-history-unknown-player: "%prefix% &cUnknown player: &f%player%" +grim-history-no-sessions: "%prefix% &7No session history for &f%player%&7." +grim-history-session-not-found: "%prefix% &cSession &f%ordinal%&c not found for &f%player%&c." + +# Session list — valid placeholders: %prefix% %player% %page% %max_pages% +grim-history-header: "%prefix% &bShowing session history for &f%player% &8[&f%page%&7/&f%max_pages%&8]" +# Single session summary line — valid placeholders: +# %prefix% %player% %ordinal% %grim_version% %server_name% +# %client_version% %client_brand% %duration% %timeago% +# %violations% %unique_checks% %crashed_marker% +# %crashed_marker% expands to grim-history-crashed-marker for sessions +# whose connection went away without a graceful close (server crash, +# kill -9, channel RST that didn't fire UserDisconnectEvent). Empty +# string for ongoing or gracefully-closed sessions. +grim-history-session: "%prefix% &8[&b%grim_version%&8] &8[&b%server_name%&8] &8[&b%client_version%&8] &bSession &f%ordinal%&b duration &f%duration%&b with &c%violations%&b violations &8[&c%unique_checks%&8]%crashed_marker% &8(&7%timeago% ago&8)" + +# Inline marker substituted into %crashed_marker% on session lines whose +# closed_at == last_activity (i.e. stamped by the next-boot crash sweep +# rather than the disconnect path). Includes a leading space so the +# marker reads naturally when present and disappears when empty. +grim-history-crashed-marker: " &8(&ccrashed&8)" + +# Session detail — valid placeholders: +# %prefix% %player% %ordinal% %grim_version% %server_name% +# %client_version% %client_brand% %duration% %timeago% +# %violations% %unique_checks% %bucket_size% +grim-history-detail-header: "%prefix% &bShowing &f%player%&b's session &f%ordinal%&b details:" +grim-history-detail-meta1: "%prefix% &bGrim: &f%grim_version%&b, Server: &f%server_name%&b, Duration: &f%duration%&b, Date: &7%timeago% ago" +grim-history-detail-meta2: "%prefix% &bClient: &f%client_version%&b, Brand: &f%client_brand%" +grim-history-detail-violations-header: "%prefix% &bViolations: &8(%violations% total, %unique_checks% unique)" +grim-history-detail-empty: "%prefix% &7- (none)" +# A grouped row (default) — valid placeholders: %prefix% %offset% %checks_list% +# %checks_list% is built by joining grim-history-check-count entries with ", " +grim-history-detail-group: "%prefix% &7- %checks_list% &8(&b%offset%&8)" +# A single raw violation row (--detailed) — valid placeholders: +# %prefix% %offset% %check% %vl% %verbose% +grim-history-detail-entry: "%prefix% &7- &f%check% &8(&b%offset%&8)&7 %verbose%" +# Inner format for each check in a group's %checks_list% — valid placeholders: %check_name% %count% +grim-history-check-count: "&f%check_name%&7 x&c%count%" + +# Schema markers — see header comment in config.yml. +config-flavor: V2 +config-version: 1 diff --git a/live-server/plugins/GrimAC/punishments.yml b/live-server/plugins/GrimAC/punishments.yml new file mode 100644 index 0000000..2fac6dd --- /dev/null +++ b/live-server/plugins/GrimAC/punishments.yml @@ -0,0 +1,119 @@ +# %check_name% - name of the check +# %description% - description of the check +# %vl% - violations +# %verbose% - extra information +# %player% - player name +# [alert] - special command to alert +# [webhook] - special command to alert to discord webhook +# [proxy] - special command to alert to other servers connected to your proxy (BungeeCord/Velocity) + +Punishments: + Simulation: + # After how many seconds should a violation be removed? + remove-violations-after: 300 + # This section will match all checks with the name, + # To exclude a check that would otherwise be matched, put an exclamation mark in front of the name + # For example, !BadPacketsN + checks: + - "Simulation" + - "GroundSpoof" + - "Timer" + - "TimerLimit" + - "NoFall" + # Threshold:Interval Command + # + # Example, to kick the player with the message "incorrect movement!" after 100 violations, with no interval + # commands: + # - "100:0 kick %player% incorrect movement!" + # 0 means execute exactly once + # - "100:50 say %player% is cheating" + # Execute when the user hits flag 100, and after that, every 50th flag after 100 + # + commands: + - "100:40 [alert]" + - "1:1 [log]" + - "100:100 [webhook]" + - "100:100 [proxy]" + Knockback: + remove-violations-after: 300 + checks: + - "Knockback" + - "Explosion" + commands: + - "5:5 [alert]" + - "1:1 [log]" + - "20:20 [webhook]" + - "20:20 [proxy]" + Post: + remove-violations-after: 300 + checks: + - "Post" + commands: + - "20:20 [alert]" + - "1:1 [log]" + - "40:40 [webhook]" + - "40:40 [proxy]" + BadPackets: + remove-violations-after: 300 + checks: + - "BadPackets" + - "PacketOrder" + - "Crash" + commands: + - "20:20 [alert]" + - "1:1 [log]" + - "40:40 [webhook]" + - "40:40 [proxy]" + Reach: + remove-violations-after: 300 + checks: + - "Reach" + commands: + - "1:1 [alert]" + - "1:1 [log]" + - "1:1 [webhook]" + - "1:1 [proxy]" + Hitboxes: + remove-violations-after: 300 + checks: + - "Hitboxes" + commands: + - "5:3 [alert]" + - "1:1 [log]" + - "5:3 [webhook]" + - "5:3 [proxy]" + Misc: + remove-violations-after: 300 + checks: + - "Vehicle" + - "NoSlow" + - "Sprint" + - "MultiActions" + - "Place" + - "Baritone" + - "Break" + - "TransactionOrder" + - "Elytra" + - "Chat" + - "Exploit" + commands: + - "10:5 [alert]" + - "1:1 [log]" + - "20:10 [webhook]" + - "20:10 [proxy]" + Combat: + remove-violations-after: 300 + checks: + - "Interact" + - "Aim" + commands: + - "20:40 [alert]" + - "1:1 [log]" + # As of 2.2.10, there are no AutoClicker checks and this is a placeholder. Grim will include AutoClicker checks in the future. + Autoclicker: + remove-violations-after: 300 + checks: + - "Autoclicker" + commands: + - "20:40 [alert]" + - "1:1 [log]" diff --git a/live-server/plugins/HelpCommand/config.yml b/live-server/plugins/HelpCommand/config.yml new file mode 100755 index 0000000..8bace79 --- /dev/null +++ b/live-server/plugins/HelpCommand/config.yml @@ -0,0 +1,74 @@ +# Welcome to the HelpCommand config.yml +# You can edit values here for the plugin + +###################################### +# Support +###################################### +# Documentation: https://hcdocs.voidem.com/ +# Discord server: https://support.voidem.com/ +# Discord user: voidem +# Spigot user: VoidemLIVE +# GitHub repository: https://github.com/VoidemLIVE/Help-Command-Plugin +###################################### +# Plugin config +###################################### + +###################################### +# Main Help Command +###################################### + +version: "2.9.2" # DO NOT CHANGE THIS VALUE +updateCheck: true # recommended to keep this value as true + +help: + 1: + - "&8[&fracked.ru&8]&r " + - "&8------------------------------------ " + - "&r&nCommands&r &8(&aBasic&8)&r" + - " " + - "&f/tp &b&e> &7Teleport to another player. " + - "&f/pm &b&e> &7Private message other players. " + - " " + - "&f/sethome &e> &7Set a home point in the world." + - "&f/home &e> &r&7Teleport to your saved home." + - " " + - "&f/rules &e> &r&7Display server rules. " + - " " + - + - " " + - "&8------------------------------------ " + 2: + - "&8[&fracked.ru&8]&r " + - "&8------------------------------------ " + - "&r&nCommands&r &8(&cAdvanced&8)&r " + - " " + - "&f/bal &b&e> &7Show your current balance. " + - "&f/pay &b&e> &7Pay another player. " + - " " + - "&f/region &b&e> &7Manage your land claim. " + - "&f/claim &e> &r&7Claim the chunk your standing in" + - " " + - "&f/shop &b&e> &7Open the shop GUI. " + - " " + - "&8------------------------------------ " + +pagesEnabled: [1,2] +###################################### +# Enabled Commands +###################################### + +helpcmd: true +###################################### +# Language +###################################### +reload: '&aHelpCommand reloading' +disabled: '&cThis command is disabled' +noargument: '&cPlease use an argument' +playersOnly: 'Only players can use this command' +pageNA: '&cThis page does not exist!' + +pagePrompt: + enabled: true + page: '&7Page &7$[pageNum]' + arrowBack: '&e[<< &e$[prevNum]&e]' + arrowForward: '&e[&e$[nextNum]&e >>]' diff --git a/live-server/plugins/Homestead/config.yml b/live-server/plugins/Homestead/config.yml new file mode 100644 index 0000000..d03db98 --- /dev/null +++ b/live-server/plugins/Homestead/config.yml @@ -0,0 +1,185 @@ +# ============================================================================ +# HOMESTEAD CONFIGURATION FILE +# ============================================================================ +# Homestead - A free, open-source land claiming plugin for Minecraft +# Documentation: https://tayebyassine.github.io/Homestead/ +# Discord Support: https://discord.gg/uh7gqDY6sz +# Repository: https://github.com/TayebYassine/Homestead +# +# IMPORTANT: Delete this file and restart to regenerate defaults +# All settings take effect after /hsadmin reload or server restart +# ============================================================================ + +# Debug Mode - Show detailed console messages for troubleshooting +# WARNING: Can flood console on busy servers. Only enable when debugging. +debug: false + +# Anonymous Usage Statistics (bStats and FastStats) +# NO personal data collected. https://bstats.org/privacy-policy https://faststats.dev/privacy +metrics: true + +# ============================================================================ +# LANGUAGE AND MENUS CONFIGURATION +# ============================================================================ + +# Language file to load from languages/ folder +# Fallback: en-US if file doesn't exist +language: "en-US" + +# Menu file to load from menus/ folder +# Fallback: en-US if file doesn't exist +menus: "en-US" + +# ============================================================================ +# DATABASE CONFIGURATION +# ============================================================================ + +database: + # Provider: sqlite (default), mysql, mariadb, postgresql, mongodb, yaml + # sqlite: Good for small-medium servers, no setup required + # mysql/mariadb/postgresql: Good for large servers (100+ players) + # mongodb: Good for large servers (requires subscription for tiers) + # yaml: Human-readable, slowest (not recommended for production) + provider: "sqlite" + + # PostgreSQL settings (only used if provider = "postgresql") + postgresql: + host: "localhost" + port: 5432 + username: "USERNAME" + password: "PASSWORD" + database: "homestead_data" + table_prefix: "" + jdbc_url_parameters: "" + + # MariaDB settings (only used if provider = "mariadb") + mariadb: + host: "localhost" + port: 3306 + username: "USERNAME" + password: "PASSWORD" + database: "homestead_data" + table_prefix: "" + jdbc_url_parameters: "?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC" + + # MySQL settings (only used if provider = "mysql") + mysql: + host: "localhost" + port: 3306 + username: "USERNAME" + password: "PASSWORD" + database: "homestead_data" + table_prefix: "" + jdbc_url_parameters: "" + + # MongoDB settings (only used if provider = "mongodb") + mongodb: + uri: "mongodb://localhost:27017" # Or Atlas SRV URI + database: "homestead" + collection_prefix: "hs_" + + # SQLite filename (only used if provider = "sqlite") + sqlite: "homestead_data.db" + +# Cache Flush Interval (seconds) +# How often cached data is written to database +# Lower = frequent saves, more CPU usage | Higher = better performance, slight crash risk +# Recommendations: <20 players: 30s | 20-50: 60s | 50-100: 120-180s | 100+: 300s +cache-interval: 30 + +# ============================================================================ +# PLUGIN INTEGRATIONS +# ============================================================================ + +# WorldGuard Integration - Prevent claiming inside WG-protected regions +worldguard: + protect-existing-regions: true + +# FastAsyncWorldEdit (FAWE) Integration - Regenerate chunks when regions are deleted or chunks are unclaimed +# NOTE: This is not supported for Folia! +fastasyncworldedit: + regenerate-chunks: false + +# PlaceholderAPI Integration - Display Homestead data in chat/tab/scoreboards +placeholderapi: + default: + region_bank: "None" + region_name: "None" + region_claimed_chunks: "0" + region_max_chunks: "0" + region_trusted_members: "0" + region_max_members: "0" + region_current: "&2Wilderness" + upkeep_amount: "0,00" + upkeep_at: "Never" + war_name: "None" + war_prize: "0,00" + +# Dynamic Web Maps Integration (dynmap, squaremap, BlueMap, Pl3xMap) +dynamic-maps: + enabled: true + + # Update frequency (seconds). Lower = faster updates, more CPU usage + update-interval: 60 + + # Custom region icons (players select with /region set icon [name]) + icons: + enabled: false + default: https://imgur.com/TUQzlCK.png + size: 20 + list: + Hut: https://imgur.com/GFrfD0H.png + Outpost: https://imgur.com/4EvpONv.png + Mansion: https://imgur.com/62ofr2V.png + Igloo: https://imgur.com/OgBJV1H.png + Gateway: https://imgur.com/7saPOc2.png + Fortress: https://imgur.com/pqSHXJ6.png + EndCity: https://imgur.com/bKRiedi.png + Desert: https://imgur.com/EjQ5QJk.png + Bastion: https://imgur.com/FwuLrG4.png + Netherite: https://i.imgur.com/DTpAqCP.png + Diamond: https://imgur.com/MQSe8Qs.png + + # Chunk display settings + chunks: + operator-color: 0xFF0000 + operator-description: "
[Operator] {region} (#{global-rank})
{region-description}

Owner: {region-owner}
Members: {region-members}
Chunks: {region-chunks}
Size: {region-size} blocks" + color: 0x00FF00 + description: "
{region} (#{global-rank})
{region-description}

Owner: {region-owner}
Members: {region-members}
Chunks: {region-chunks}
Size: {region-size} blocks" + transparency-fill: 40 + transparency-outline: 125 + +# ============================================================================ +# MISCELLANEOUS SETTINGS +# ============================================================================ + +# Formatting Strings - Customize date, money, location displays +# WARNING: Only edit if you know what you're doing! +formatters: + date-format: "dd/M/yyyy hh:mm a" + date: "{date} &7({time-ago} ago)" + duration: "{d} days, {h} hours, {m} minutes" # Removed "{s} seconds", you can add it + + ago-days: "{v} days" + ago-hours: "{v} hours" + ago-minutes: "{v} minutes" + ago-seconds: "{v} seconds" + + balance: "${balance}" + location: "&6{world} &7(X: &6{x} &7Y: &6{y} &7Z: &6{z}&7)" + chunk: "&6{world} &7(X: &6{x} &7Z: &6{z}&7)" + + player-regions: "&7• &2{region}" + player-regions-joining: " +" + + region-members: "&7• &3{playername}" + region-members-joining: " +" + + gui-pagination-title: "&r{title} &r| &3{current-page}&r/&c{total-pages}" + + war-regions: "&2{region}" + war-regions-joining: ", " + + private-chat: "&2{region} &7- &e{sender}&7: &r{message}" diff --git a/live-server/plugins/Homestead/flags.yml b/live-server/plugins/Homestead/flags.yml new file mode 100644 index 0000000..2703f84 --- /dev/null +++ b/live-server/plugins/Homestead/flags.yml @@ -0,0 +1,90 @@ +# Disabled Flags +# Prevent players from changing these specific flags +disabled-flags: + - "use-bells" + - "take-fall-damage" + +# Flag-Specific Configuration +# Special behavior tweaks for specific flags +flags-configuration: + # Should mobs from spawners ignore spawn flags? (recommended: true) + exclude-spawners: true + + # Allow all flags for trusted players (once they join a region)? + allow-all-flags-for-trusted-players: true + +# ============================================================================ +# DEFAULT FLAG VALUES +# ============================================================================ +# These are the DEFAULT values for all new regions +# Players can change these (unless flag is disabled above) +# true = allow, false = deny +# ============================================================================ + +# Global Player Flags (Non-Members) +# Controls what non-members can do in regions +default-players-flags: + break-blocks: false # Break/destroy blocks + place-blocks: false # Place blocks + containers: false # Open chests, barrels, shulker boxes + doors: false # Open/close doors + trap-doors: false # Open/close trapdoors + fence-gates: false # Open/close fence gates + use-anvil: false # Use anvils + redstone: false # Interact with redstone components + levers: false # Use levers + buttons: false # Press buttons + pressure-plates: false # Trigger pressure plates + use-bells: false # Ring bells + trigger-tripwire: false # Activate tripwires + frost-walker: false # Use frost walker boots + harvest-crops: false # Harvest/break crops + block-trampling: false # Trample farmland/turtle eggs + general-interaction: false # General interaction catch-all + armor-stands: false # Remove armor from armor stands + interact-entities: false # Interact with entities + item-frame-interaction: false # Add/remove items from item frames + damage-passive-entities: false # Kill passive mobs + damage-hostile-entities: false # Kill hostile mobs + trade-villagers: false # Trade with villagers + ignite: false # Start fires with flint and steel + vehicles: false # Ride minecarts, horses, boats + teleport-spawn: false # Teleport to region spawn + passthrough: true # Enter/move through region (false = private) + pvp: false # PvP combat + take-fall-damage: true # Fall damage (false for parkour) + teleport: false # Ender pearls/chorus fruit + throw-potions: false # Splash/lingering potions + pickup-items: true # Pick up dropped items + sleep: false # Use beds + trigger-raid: false # Start raids with Bad Omen + elytra: true # Elytra flight + spawn-entities: false # Use spawn eggs + +# World/Environment Flags +# Controls environmental effects and mob behavior +default-world-flags: + passive-entity-spawn: true # Passive mobs (animals) spawn + hostile-entity-spawn: true # Hostile mobs (monsters) spawn + entity-grief: false # Entities damage blocks (except creepers) + entity-damage: false # Entities attack each other + leaves-decay: true # Leaves decay naturally + fire-spread: false # Fire spreads to other blocks + liquid-flow: false # Water/lava flows into region from outside + explosion-damage: false # Explosions damage blocks (except wither) + wither-damage: false # Wither damage + wilderness-pistons: false # Pistons outside push blocks into region + wilderness-dispensers: false # Dispensers outside dispense into region + wilderness-minecarts: false # Minecarts from outside enter region + plant-growth: true # Crops, saplings grow + grass-growth: true # Grass spreads + sculk-spread: true # Sculk spreads from shriekers + player-glowing: true # Players have glowing effect + snow-melting: true # Snow melts + ice-melting: true # Ice melts + snowman-trails: true # Snow golems leave snow trails + windcharge-burst: false # Wind charges burst + wars: false # Region can be targeted for war + projectiles: false # Any kind of projectile from any source except players + weather-snow: true # Snow form during weather storm (in cold biomes) + diff --git a/live-server/plugins/Homestead/levels.yml b/live-server/plugins/Homestead/levels.yml new file mode 100644 index 0000000..ede365a --- /dev/null +++ b/live-server/plugins/Homestead/levels.yml @@ -0,0 +1,62 @@ +# Region Leveling System +# Reward players for killing mobs inside their region +# XP gained -> region levels up -> unlocks bonuses + +levels: + # Enable region leveling + enabled: true + + # XP per entity type (kill must happen IN your region, except Ender Dragon) + # Format: ENTITY_NAME: [ min_xp, max_xp ] + on-kill-entity: + ENDER_DRAGON: [ 1000, 3000 ] + WARDEN: [ 500, 1000 ] + WITHER: [ 200, 500 ] + WITHER_SKELETON: [ 50, 100 ] + GHAST: [ 25, 50 ] + ZOMBIE: [ 10, 20 ] + SKELETON: [ 10, 20 ] + HUSK: [ 10, 20 ] + PIG: [ 10, 20 ] + SHEEP: [ 10, 20 ] + COW: [ 10, 20 ] + CHICKEN: [ 10, 20 ] + + # Level-Based Rewards (keep levels and rewards in ASCENDING order) + # Rewards stack. + rewards: + 5: # Level 5; Rewards: 1 Chunk, 5% Upkeep Reduction + chunks: 1 + members: 0 + subareas: 0 + upkeep-reduction: 5 + + 10: # Level 10; Rewards: 2 Chunks, 1 Trusted player, 5% Upkeep Reduction + chunks: 2 + members: 1 + subareas: 0 + upkeep-reduction: 5 + + 15: # Level 15; Rewards: 4 Chunks, 2 Trusted players, 1 Sub-Areas, 10% Upkeep Reduction + chunks: 4 + members: 2 + subareas: 1 + upkeep-reduction: 10 + + 20: # ... + chunks: 4 + members: 2 + subareas: 1 + upkeep-reduction: 15 + + 30: + chunks: 4 + members: 2 + subareas: 1 + upkeep-reduction: 30 + + 50: + chunks: 8 + members: 6 + subareas: 4 + upkeep-reduction: 50 diff --git a/live-server/plugins/Homestead/limits.yml b/live-server/plugins/Homestead/limits.yml new file mode 100644 index 0000000..cc893f3 --- /dev/null +++ b/live-server/plugins/Homestead/limits.yml @@ -0,0 +1,149 @@ +# Claim Limits System +# Control how many regions/chunks/members each player can have +limits: + # Limit Assignment Method + # 'static': Everyone gets same limits (except operators). Simple, no permissions plugin needed. + # 'groups': Limits based on permission groups (LuckPerms, etc.). Requires permissions plugin. + # 'permissions': Limits based on custom permission group name, no weight required (like LuckPerms). THIS IS EXPERIMENTAL + method: 'static' + + # Group-Based Limits (only used if method = 'groups') + # Configure per group: regions, chunks-per-region, members-per-region, subareas-per-region, + # max-subarea-volume (blocks³), max-bank-deposit, max-force-loaded-chunks, commands-cooldown (seconds) + groups: + default: + regions: 1 + chunks-per-region: 4 + members-per-region: 2 + subareas-per-region: 1 + max-subarea-volume: 400 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 2 + commands-cooldown: 2 + + vip: + regions: 2 + chunks-per-region: 6 + members-per-region: 8 + subareas-per-region: 3 + max-subarea-volume: 800 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 4 + commands-cooldown: 1 + + mvp: + regions: 3 + chunks-per-region: 12 + members-per-region: 16 + subareas-per-region: 6 + max-subarea-volume: 1600 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 4 + commands-cooldown: 0 + + admin: + regions: 10 + chunks-per-region: 100 + members-per-region: 50 + subareas-per-region: 20 + max-subarea-volume: 5000 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 100 + commands-cooldown: 0 + + # Static Limits (only used if method = 'static') + # Simple two-tier system: non-operators and operators + static: + non-op: + regions: 1 + chunks-per-region: 4 + members-per-region: 2 + subareas-per-region: 1 + max-subarea-volume: 400 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 2 + commands-cooldown: 2 + + op: + regions: 10 + chunks-per-region: 100 + members-per-region: 50 + subareas-per-region: 20 + max-subarea-volume: 5000 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 100 + commands-cooldown: 0 + + # Permissions Limits (only used if method = 'permissions') + # Just like groups, but you will use permissions instead. + permissions-priority: + - admin + - vip + - mvp + - default + + permissions: + default: + regions: 1 + chunks-per-region: 4 + members-per-region: 2 + subareas-per-region: 1 + max-subarea-volume: 400 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 2 + commands-cooldown: 2 + + vip: + regions: 2 + chunks-per-region: 6 + members-per-region: 8 + subareas-per-region: 3 + max-subarea-volume: 800 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 4 + commands-cooldown: 1 + + mvp: + regions: 3 + chunks-per-region: 12 + members-per-region: 16 + subareas-per-region: 6 + max-subarea-volume: 1600 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 4 + commands-cooldown: 0 + + admin: + regions: 10 + chunks-per-region: 100 + members-per-region: 50 + subareas-per-region: 20 + max-subarea-volume: 5000 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 100 + commands-cooldown: 0 + +# Per-Player Custom Limits +# Override limits for specific players by username (case-sensitive!) +# Use for: content creators, event rewards, builders, testing +# These override both group and static limits +player-limits: + # Example: Custom limits for player 'TFA_Gaming' (me) + # TFA_Gaming: + # regions: 5 + # chunks-per-region: 25 + # members-per-region: 15 + # subareas-per-region: 10 + # max-subarea-volume: 2000 + # max-bank-deposit: 100000000 + # max-force-loaded-chunks: 100 + # commands-cooldown: 0 + A_PLAYER_NAME_GOES_HERE_FOR_SPECIAL_LIMITS: + regions: 10 + chunks-per-region: 100 + members-per-region: 16 + subareas-per-region: 10 + max-subarea-volume: 1200 + max-bank-deposit: 100000000 + max-force-loaded-chunks: 100 + commands-cooldown: 0 diff --git a/live-server/plugins/Homestead/logs.txt b/live-server/plugins/Homestead/logs.txt new file mode 100644 index 0000000..c082af6 --- /dev/null +++ b/live-server/plugins/Homestead/logs.txt @@ -0,0 +1,22 @@ +[18:15:35 04/30/2026] ------------------------------------------------------------------- +[18:15:35 04/30/2026] This is the logs.txt file; it saves all command executions and errors from the plugin. +[18:15:35 04/30/2026] Do not delete this file while the plugin is running. +[18:15:35 04/30/2026] ------------------------------------------------------------------- +[18:15:35 04/30/2026] [WARN] Loading resources... +[18:15:35 04/30/2026] [INFO] config.yml loaded. +[18:15:36 04/30/2026] [INFO] Language file 'en-US.yml' loaded. +[18:15:36 04/30/2026] [INFO] Menus file 'en-US.yml' loaded. +[18:15:36 04/30/2026] [INFO] flags.yml loaded. +[18:15:36 04/30/2026] [INFO] levels.yml loaded. +[18:15:36 04/30/2026] [INFO] limits.yml loaded. +[18:15:36 04/30/2026] [INFO] regions.yml loaded. +[18:15:36 04/30/2026] [INFO] [Migrator] No legacy keys found in 'config.yml', nothing to migrate. +[18:15:36 04/30/2026] [INFO] All resources loaded successfully. +[18:15:36 04/30/2026] [WARN] Loading service providers with Vault... (Using Legacy Vault) +[18:15:36 04/30/2026] [INFO] Loaded service provider: Economy [EssentialsX Economy] +[18:15:36 04/30/2026] [INFO] Loaded service provider: Permissions [LuckPerms] +[18:15:36 04/30/2026] [INFO] bStats metrics is enabled, anonymous data is being sent to the servers. +[18:15:36 04/30/2026] [INFO] FastStats metrics is enabled, anonymous data is being sent to the servers. +[18:15:36 04/30/2026] [INFO] Ready, took 189 ms to load. +[18:15:36 04/30/2026] [WARN] Looking for updates on GitHub... +[18:15:36 04/30/2026] [INFO] You are running on the latest version of Homestead. diff --git a/live-server/plugins/Homestead/regions.yml b/live-server/plugins/Homestead/regions.yml new file mode 100755 index 0000000..640d9e0 --- /dev/null +++ b/live-server/plugins/Homestead/regions.yml @@ -0,0 +1,328 @@ +# Startup Data Cleanup +# Remove invalid data on startup (orphaned regions, broken coordinates, etc.) +# Disable if using dynamic world loading that happens after startup +clean-startup: true + +# Welcome message +# Sends a message when a player joins the server +welcome-message: + enabled: true + + message: '&eWelcome back! There are &6{unread-logs} &eunread mails, with &6{regions-invited} + &eregions sent you an invite!' + +# Log Private Region Chat to Console +# Log all region chat messages for moderation purposes +log-private-chat: true + +# Adjacent Chunks Requirement +# Force all claimed chunks to be connected (no scattered claims) +# Disable for multi-location builds (bases + farms) +adjacent-chunks: true + +# Chunk Purchase Price +# Cost to claim one chunk (0.0 = free) +# Requires economy plugin +chunk-price: 0.0 + +# Auto-Select Target Region +# Automatically assign a random target region to new players +autoset-target-region: true + +# Disabled Worlds (Exact Names) +# List exact world names where claiming is disabled (case-sensitive) +disabled-worlds-exact: +- world_the_end +- world_nether +- auth_limbo + + + +# Region Borders Visualization +borders: + # Enable border display toggle (/region borders) + enabled: true + + # Display type: particles (recommended) or blocks + type: particles + + # Dust colors, RGB format (type = 'particles') + # Format: [RED, GREEN, BLUE], from 0 to 255. + dust-colors: + owner: + - 0 + - 255 + - 0 + member: + - 255 + - 255 + - 0 + visitor: + - 255 + - 0 + - 0 + sub-area: + - 0 + - 179 + - 255 + + # Dust size (type = 'particles') + dust-size: 3.0 + + # Block type for block-based borders (type = 'blocks') + block-type: GRAY_GLAZED_TERRACOTTA + +# Enter/Exit Region Messages +enter-exit-region-message: + # Enable enter/exit messages + enabled: true + + # Display type: title, actionbar, or chat + type: actionbar + + # Message content (use & for colors) + # Variables: {region-displayname}, {region-description}, {region-owner} + messages: + enter: + title: + - '&2{region-displayname}' + - '&7{region-description}' + actionbar: '&7You enter the territory of &2{region-displayname}&7: {region-description}' + chat: '&7You enter the territory of &2{region-displayname}&7: {region-description}' + exit: + title: + - '&3Wilderness' + - '&7Roam the wild!' + actionbar: '&7You left the territory of &2{region-displayname}&7.' + chat: '&7You left the territory of &2{region-displayname}&7.' + +# Selection Tool +selection-tool: + # Item used to select corners + item: GOLDEN_HOE + + # Selection status messages + messages: + none: '&7Please select two corners/points inside or outside of the region.' + firstCorner: '&7First corner: &a✔ &7| Second corner: &c✘' + secondCorner: '&7First corner: &c✘ &7| Second corner: &a✔' + selectionDone: '&aYou can create a new sub-area or claim new chunks!' + +# Region Upkeep System +# Requires Vault + economy plugin +upkeep: + # Enable recurring maintenance fees + enabled: false + + # Cost per chunk per payment period + per-chunk: 100.0 + + # Auto-unclaim chunks if payment fails + unclaim-chunks: true + + # Grace period before first payment (seconds) + # 604800 = 1 week, 1209600 = 2 weeks, 2592000 = 30 days + start-upkeep: 604800 + + # Payment frequency (seconds) + upkeep-timer: 604800 + +# Member Taxes System +# Require members to pay fees to stay in region +taxes: + enabled: false + min-tax: 0.0 + max-tax: 10000.0 + tax-timer: 604800 + +# Region Renting System +renting: + enabled: true + min-rent: 500.0 + max-rent: 1.0E7 + +# Region Selling System +selling: + enabled: true + min-sell: 10.0 + max-sell: 1.0E9 + +# Sub-Areas Feature +# Create zones with different permissions within regions +sub-areas: + enabled: true + +# Wars System +# Region PvP conflicts with economic stakes +wars: + enabled: false + min-prize: 1000.0 + max-prize: 1.0E9 + + # Force keep inventory when a player is part of a war and died? + # This completely ignores the game rule set for any world. + keep-inventory: false + + # Give the region owner's head to the region owner who won the war? + give-head: true + + # Broadcast the message "A war has been declared" + # - regions: Only sent to regions in the war + # - server: Will be sent to the entire server + # - silent: No message will be sent + broadcast-type: regions + +# Welcome Signs Feature +# Clickable signs that teleport to region homes +welcome-signs: + enabled: false + +# Reward System +# Bonus chunks/sub-areas for member count and playtime +rewards: + enabled: true + + # Bonus per trusted member + for-each-member: + chunks: 2 + subareas: 1 + + # Playtime tiers (highest applicable tier only) + # Time format: minutes + hours + days (additive) + by-playtime: + - minutes: 30 + hours: 0 + days: 0 + chunks: 1 + subareas: 1 + - minutes: 0 + hours: 3 + days: 0 + chunks: 2 + subareas: 2 + - minutes: 0 + hours: 12 + days: 0 + chunks: 4 + subareas: 3 + - minutes: 0 + hours: 0 + days: 1 + chunks: 6 + subareas: 4 + - minutes: 0 + hours: 0 + days: 3 + chunks: 8 + subareas: 6 + - minutes: 0 + hours: 0 + days: 7 + chunks: 10 + subareas: 8 + +# Region Storage +# Allow trusted players in a region to share a private chest for everyone, no permissions required +storage: + enabled: false + + # Storage size, values: 9, 18, 27, 36, 45, or 54 + size: 27 + +# Special Features +special-feat: + # TNT only explodes below Y=63 in unclaimed areas (protects surface) + tnt-explodes-only-below-sea-level: false + + # Disable region protection in disabled-worlds (recommended: true) + ignore-region-protection-if-action-in-disabled-world: true + + # Skip trust acceptance (/region trust adds immediately without /region accept) + ignore-trust-acceptance-system: false + + # Teleport to region spawn instead of world spawn when exiting End + teleport-players-back-to-region-spawn-when-entering-end-exit-portal: true + +# Teleport Delay System +delayed-teleport: + # Enable countdown for /region visit, /region home, welcome signs + enabled: true + + # Delay duration (seconds) + delay: 3 + + # Teleport cost (0.0 = free) + price: 0.0 + + # Cancel teleport if player moves + cancel-on-move: true + + # Operators bypass delay + ignore-operators: true + + # Boss bar countdown display + boss-bar: + enabled: true + # Placeholders: {seconds}, {location} + title: '&7Teleporting in &3{seconds}s&7...' + color: PURPLE + style: SEGMENTED_10 + countdown-mode: DEPLETE + +# Cooldown for actions +cooldown: + # Flag state change + flag-change-state: + ignore-operators: false # Operators bypass cooldown + value: 3 # Cooldown in seconds + + # Region spawn update + region-spawn-change: + ignore-operators: true + value: 600 # 10 minutes + + # Region name update + region-rename-change: + ignore-operators: true + value: 600 # 10 minutes + + # Region description update + region-description-change: + ignore-operators: true + value: 300 # 5 minutes + + # Region owner transfer + # Sale signs are affected too! + region-transfer-ownership: + ignore-operators: true + value: 604800 # 7 days + + # Region dynamic map settings change + # This includes map coloring and region icon. + region-dynamic-map-settings-change: + ignore-operators: true + value: 43200 # 12 hours + + # Region claim a chunk + region-chunk-claim: + ignore-operators: true + value: 5 # 5 seconds + + # Region unclaim a chunk + region-chunk-unclaim: + ignore-operators: true + value: 5 # 5 seconds + + # Region teleportation + region-teleport: + ignore-operators: true + value: 15 # 15 seconds + + # Disallow regions to disable wars when they finished a war + # From example below, if a region won or lost a war, they cannot change the wars flag state for 36 hours. + war-flag-disabled: + ignore-operators: true + value: 129600 # 36 hours +disabled-worlds-pattern: +- em_* +- minigame_*_end diff --git a/live-server/plugins/LPC/config.yml b/live-server/plugins/LPC/config.yml new file mode 100755 index 0000000..eadc986 --- /dev/null +++ b/live-server/plugins/LPC/config.yml @@ -0,0 +1,24 @@ +# LPC Configuration +# Please read the https://luckperms.net/wiki/Prefixes,-Suffixes-&-Meta before you set up. +# +# Placeholders: +# {message} - the chat message +# {name} - the player's name +# {displayname} - the player's display name / nickname +# {world} - the world name of the player's current world +# {prefix} - the player's highest priority prefix +# {suffix} - the player's highest priority suffix +# {prefixes} - the player's prefixes sorted by the highest priority +# {suffixes} - the player's suffixes sorted by the highest priority +# {username-color} - the player's or the group's username color +# {message-color} - the player's or the group's message color +# +# To reload the configuration, run '/lpc reload' command. Make sure you have the 'lpc.reload' permission assigned. +# More information can be found at https://www.spigotmc.org/resources/68965. +chat-format: "{suffix}{prefix}&7{name} &8&l> &f&r{message}" + +# Set the format per group. +# Note: Option for more advanced users. Remove comments to run. +group-formats: +# default: "[default] {name}&r: {message}" +# admin: "[admin] {name}&r: {message}" \ No newline at end of file diff --git a/live-server/plugins/Lands/categories.yml b/live-server/plugins/Lands/categories.yml new file mode 100755 index 0000000..655376a --- /dev/null +++ b/live-server/plugins/Lands/categories.yml @@ -0,0 +1,31 @@ +# In this file you can configure categories. Land categories can be set +# in the various options menu of a land. This helps players finding +# for example shop lands in the /lands list menu. +# +# You can add your own categories and delete existing ones. +# NOTE: A server reload or restart is required for any changes of this file to take effect. + +land: + enabled: true + categories: + members: + enabled: true + name: '&eLooking for Members ☺' + description: + - '&7This land is actively searching' + - '&7for new members.' + shop: + enabled: true + name: '&cShop $' + description: + - '&7This land contains shops.' + pvp: + enabled: true + name: '&4PvP Arena ⚔' + description: + - '&7This land features a PvP arena.' + mobfarm: + enabled: true + name: '&9Mobfarm' + description: + - '&7This land features a mobfarm.' diff --git a/live-server/plugins/Lands/changelog.txt b/live-server/plugins/Lands/changelog.txt new file mode 100755 index 0000000..fd82014 --- /dev/null +++ b/live-server/plugins/Lands/changelog.txt @@ -0,0 +1,67 @@ +- Fixed: Error when trying to trust player + +--> Language file (en-US.yml): ++ String: general.day ++ String: general.day.sunday ++ String: general.day.monday ++ String: general.day.tuesday ++ String: general.day.wednesday ++ String: general.day.thursday ++ String: general.day.friday ++ String: general.day.saturday ++ String: general.combat-logout ++ String: general.command.argument.type.tag ++ Message: help.command.lands.admin.debug.main ++ Message: help.command.lands.admin.debug.tasks ++ Message: help.command.lands.admin.player.give.first-join-items ++ Message: lands.message.area.max ++ Message: lands.message.event.combat_tag ++ Message: lands.message.event.combat_tag.disabled ++ Message: lands.command.general.object ++ Message: lands.command.general.object.name ++ Message: lands.command.general.object.name.exist ++ Message: lands.command.general.object.name.same ++ Message: lands.command.general.object.tag ++ Message: lands.command.general.object.tag.name ++ Message: lands.command.general.object.tag.same ++ Message: lands.command.general.name.reserved ++ Message: lands.command.accept.land.owner.max ++ Message: lands.command.accept.land.owner.success ++ Message: lands.command.wild.end ++ Message: lands.command.relations.allies.add.broadcast ++ Message: lands.command.relations.enemies.remove.broadcast ++ Message: wars.message.end.broadcast.won ++ Message: wars.message.end.broadcast.surrendered ++ Message: wars.message.end.broadcast.surrendered.war ++ Message: wars.message.end.broadcast.surrendered.preparation ++ Message: wars.message.end.broadcast.draw ++ Message: wars.message.capture.destroy.invaders-break ++ Message: wars.command.declare.hours ++ Message: wars.command.declare.days ++ Message: wars.command.declare.peaceful + +--> GUI file (en-US.yml): ++ Item: common.items.default.object_name ++ Item: common.items.default.object_tag ++ Item: common.items.default.object_icon ++ Item: gui.nation.items.default ++ Item: gui.nation.items.default.various ++ Item: gui.list_area_invites.items.default ++ Item: gui.list_area_invites.items.default.entry_object_owner_land ++ Item: gui.list_area_settings.items.default ++ Item: gui.list_area_settings.items.default.entry_expiration_shield ++ Item: gui.list_area_settings.items.default.entry_peaceful ++ Item: gui.list_role_settings.items.default ++ Item: gui.list_role_settings.items.default.entry_no_damage ++ Item: common_item-model.items.default.player_head ++ Item: gui.land_various.items.default ++ Item: gui.land_various.items.default.object_name ++ Item: gui.land_various.items.default.object_tag ++ Item: gui.land_various.items.default.object_icon ++ Item: gui.nation_various.items.default ++ Item: gui.nation_various.items.default.object_name ++ Item: gui.nation_various.items.default.object_tag ++ Item: gui.nation_various.items.default.object_icon +--> Flags (roles.yml and config.yml) ++ peaceful ++ expiration_shield \ No newline at end of file diff --git a/live-server/plugins/Lands/config.yml b/live-server/plugins/Lands/config.yml new file mode 100755 index 0000000..85847f7 --- /dev/null +++ b/live-server/plugins/Lands/config.yml @@ -0,0 +1,1157 @@ +# Resource page: https://www.spigotmc.org/resources/53313 +# Discord: https://discord.incredibleplugins.com + +# If you encounter any issues, please report them +# to the Discord support server or through a private message. +# Bugs or problems are usually fixed at the next update, if you report them. +# You can ignore the IDs in some setting names (_). +# +# If you're looking for a plugin to regenerate chunks at unclaim or wilderness, it's recommended +# to use the WildRegeneration plugin: https://polymart.org/resource/wildregeneration.2096 + + +######################################## +# BASIC MODE +######################################## +# If enabled, Lands will disable advanced features, like wars, nations, upkeep and taxes. +# Enabling this option will disable all advanced features. Meaning that only the bare +# minimum of features will be enabled. This option is meant for servers that want to +# have a very simple setup and only want players to use the claiming and trusting players +# feature of the plugin. Enabling this option will forcefully disable some features, that +# can't be turned back on as long as basic-mode is enabled. +# NOTE: This setting requires server reload / restart. +basic-mode: false + + +######################################## +# MAJOR FEATURES +######################################## +# Here you can quickly toggle some major features. +# NOTE: These settings require server reload / restart. +features: + # Ukeep can be further configured in the upkeep section (this file). + upkeep: true + # Taxes can be further configured in the taxes section (this file). + # For taxes to work, Vault and a economy plugin, that supports Vault, needs to be installed. + taxes: true + # Lands and nations can be in relations, such as ally, enemy and neutral. + # If you disable this option, all existing relations will be deleted. + # This is useful in combination with wars. However, you can also use it with wars disabled. + relations: true + + +# General options +general: + # Worlds where players should be able to claim. You can add all worlds by adding * to the list. + # You can also set optional parameters such as, if claiming should be enabled for regular players without admin perms (permission: lands.admin.disabled-features) + # and the minimum and maximum claim height. The format is a follows: ::: + # NOTE: Minimum height can't be lower than your server's min height and maximum height can't be higher than your servers maximum height. The claim height of admin lands will always be maxed out. + # NOTE: This setting requires server reload / restart. + # Examples: + # 'world' -> This results in the max claim height and claiming enabled for players. + # 'world:true:30:319' -> This results in a claim height of 30 to 319 and claiming enabled for players. + # 'world:false' -> Only server admins can claim in this world to create admin lands etc. + claim-worlds_list: + - world + + # Default: English (en-US) - no download required. + # This defines the default language. You can place multiple locales in the plugin's "Language" folder to display different locales depending on the player's locale. + # You can access translations maintained by the community in our Discord: https://discord.incredibleplugins.com + # To access translations, other than en-US, execute /translations in the Discord server. + # The translation name should match the official language code (https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html). + # This option also affects the grouping and decimal separator for currency formatting. + language: 'en-US' + # Force default language? This will make changes to language files impossible and will always use the default. + # This has the benefit of always receiving fixes, such as spelling mistakes, for the default locale. + # You should only use this option if your language matches "en-US". For other locales it won't work. + force-default: false + + # Edit the land you're standing in instead of the land from /lands edit? + # For /lands claim you will still need to set the claim land with /lands edit. + edit-by-loc: false + + # If enabled, limit permissions will be combined instead of just taking the highest value. + # Example: A player has the permission lands.chunks.5 and lands.chunks.2. + # If enabled: This will result in a limit of 7 chunks. + # If disabled: This will result in a limit of 5 chunks. + permission-stacking: false + + # Give players items at first join. + # The item appearance can be edited in the GUI language file. + first-join-items: + # The selection tool allows them to claim. + selection: + # Setting the slot or the amount of an item to a value lower than 1, will not give the item on first join. + slot_4: -1 + amount: -1 + # If disabled, players won't be able to use this item at all. + usage: false + # The info tool shows information about a claim when clicking on it. + info: + slot_5: -1 + amount_2: -1 + usage_2: false + # The camp block creates a temporary claim at placement. + camp: + slot_6: -1 + amount_3: -1 + usage_3: false + # Claim blocks claim the chunk they were placed into permanently, until the player unclaims the chunk. + claim_block: + slot_7: -1 + # Claims a specific radius of chunks. + # 0 = only the current chunk + # 1 = (radius+1)² = 9 chunks + claim-radius_2: 1 + amount_4: -1 + usage_4: false + + # If false, chat message parts that are enclosed by [V]text[/T] will only be sent to players + # that have the lands.admin.verbose permission. This setting only applies to chat messages. + verbose: true + + # The plugin fetches player skins and names from Mojang. + # If disabled, player skins can't be displayed in the menus and name changes will only apply, when they join the server. + fetch-skins-names: true + + # Date format + # MM: Month + # dd: Day of month + # yyyy: Year + # hh: hours + # mm: minutes + # ss: seconds + # NOTE: These settings require server reload / restart. + date-format: + # Set the time zone for date text outputs. + # Example: America/Los_Angeles or GMT-8:00 + # List of time zones: https://timezonedb.com/time-zones + # If empty, it uses the time zone of the machine your server is running on. + time-zone: '' + # General format for invites etc. + # Examples: + # American 12 hour format (a = 12 hour format): MM/dd/yyyy hh:mm a + # German 24 hour format: dd.MM.yyyy hh:mm + general: 'MM/dd/yyyy hh:mm' + # Format for news messages in the land menu (inbox). + inbox: 'MM/dd hh' + # Format used when only a time displayed. + # Examples: + # American 12 hour format (a = 12 hour format): hh:mm a + # German 24 hour format: hh:mm + time_2: 'hh:mm a' + + # Set the format of all economy related displays. + # Info: https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html + # NOTE: This setting requires server reload / restart. + eco-format: + # Recommended format for item economy and player experience: "# gold ingot(s)" or "# experience" + normal: '$#,##0.00' + # The short format will use the normal format if the value is lower than 1000. + # This format is only used in cases where there is not much space, like on signs. + # This will convert balances like the following: + # 1000000000 = 1B whereas {value} = 1 and {unit} = B + # 1000000 = 1M + # 1000 = 1k + short-unit: '${value}{unit}' + + # Reward players by playing on your server. + # Explanation: https://wiki.incredibleplugins.com/lands/configuration/playtime-rewards + # NOTE: This setting requires server reload / restart. + time-reward: + enabled_17: false + # After how many seconds should players get rewarded with plus 1 + # chunk, land, own land or member. + # NOTE: Time unit is seconds. + # NOTE: Changing these requires server reload / restart. + # NOTE: It can take up to 60 seconds for the player to get rewarded. + time: + # Plus 1 chunk (/lands claim) each x seconds. + # If you want to disable this specific option, just set it to 0 or -1. + chunk: 3600 + # Plus 1 lands where a player can be a member (not owner - /lands accept, /lands trust) each x seconds. + # If you want to disable this specific option, just set it to 0 or -1. + land: 43200 + # Plus 1 land creation (/lands create) each x seconds. + # If you want to disable this specific option, just set it to 0 or -1. + land-own: 86400 + # Plus 1 land member (/lands trust) each x seconds. + # If you want to disable this specific option, just set it to 0 or -1. + member: 21600 + # Plus 1 lands.chunks.support. each x seconds. + # This permission contributes claims to lands you're trusted in. + # If you want to disable this specific option, just set it to 0 or -1. + support: 0 + + # Should players with the permission (lands.admin) be notified that there is a new update available? + upd-notify: false + # Provide bedrock forms for bedrock players, instead of the normal GUI? + bedrock-forms: true + + +# General options for economic tasks, that apply to taxes, upkeep and nation upkeep. +# Each task has it's own section, in this file and nations.yml, with specified options. +# These options require server reload / restart. +economic: + # Default configuration: taxes, upkeep and nation upkeep are collected every day at midnight. + interval: + # Set amount of days between each payment. + # Example: + # 1 = executes every day at the time specified at the top of this section. + # 2 = executes every second day at the time specified at the top of this section. + days_2: 1 + # Set the time of day. Collect taxes, upkeep and nation upkeep at this time after x days. + # Format: 24 hour format. + time: '24:00:00' + # Set the minimum time between a player's attempt to change the tax or upkeep and the next collection. + change-cooldown_time: 3h + + # Altert the land or nation, if their funds are insufficient for upkeep. + # The configured time defines a period before the actual upkeep collection. + # Example: 12h = alert lands and nations at earliest 12 hours before the upkeep collecting, if their funds are insufficient. + insufficient-altert_time: 2d + + +# Upkeep can be toggled in the "features" section. +# Upkeep = Lands pay a defined amount of money to the server in order to keep their claimed land. +# Taxes = Trusted players pay a defined amount of tax per defined interval. +upkeep: + # How much should a land pay per chunk? + # NOTE: Final payment would be land size (chunks) * cost + per-chunk: 0 + # Should the last claimed chunks, which the land could not pay for, be deleted? + # Example: The land has 10 claimed chunks, but it can pay the upkeep only for 6. So the 4 last claimed chunks will be deleted. + # This continues each upkeep cicle until no claims are left. + unclaim: true + # Exclude land from upkeep, if it was recently created? + # This will prevent recently created lands getting a chunk deleted, if the land owner / land bank doesn't have enough money (and if delete-chunk enabled). + # So only lands, which are older than x seconds, will need to pay this. + nopay_time: 2d + # Remind land members, which can deposit money into their lands, about upcoming upkeep payments until they have enough money to pay it. + # This helps your players lands keeping track of it and not loosing claims or their membership in the nation. + # This will send a reminder ever configured period while in "insufficient-altert_time" from above. + upkeep-reminder_time: 1h + + +# Taxes can be toggled in the "features" section. +# Taxes = Trusted players pay a defined amount of tax per defined interval. +# Rent = The players can rent a area of their choice without needing to get trusted. They can decide how long they want to rent it. +# The interval can be configured in the "economic" section. +taxes: + # Set the minimum tax value. + min_2: 0 + # Set max tax value for a single area (if a land has no sub areas then this will be the default area) + max_3: 0 + # Untrust a land member from the area if he couldn't pay the taxes? + untrust-member: true + # Announce upcoming tax payments to players. + # Default: Lands will sent a player every two hours a notice, if they don't have enough to pay their taxes. + # Disable: 0 + taxes-announcement_time: 2h + + +# General teleportation options. +# Command specific teleportation options can be found in their sections. +teleport: + # General teleportation cost. Some features might have specific options, which override this. + costs_9: 100 + # Set the cost of any teleportation to 0 for players that joined the server for the first time. + # You can define a time span here. Example: 1d = players that joined the server 23 hours ago, won't pay for any teleportation. + first-join_time: 4h + # Waittime + # Timeunit: seconds + wait: 5 + + +# A land consists of a collection of chunks which are claimed via the /claim command or with the claim tool. +# This section and the "chunk" section contain claiming options. +land: + # Land creation + creation: + # Force the creation of a land (/lands create) before a land is able to claim chunks. + # If set to false, Lands will auto generate a land with the name of the player. + # The name can be changed in the land menu or with /lands rename . + force: true + # The cost to create a land (/lands create). + # NOTE: This includes also one chunk claim, which will be claimed automatically on land creation. + # NOTE: PLAYERS WITH THE lands.free.lands. PERMISSION MIGHT BYPASS THAT. + # More info: https://wiki.incredibleplugins.com/lands/permissions/permissions#numbered-permissions + costs: 0 + mainblock: + # Toggle the placement of new mainblocks. + # This doesn't remove existing ones. However, existing ones can manually be deleted. + enabled_3: false + # Cost to repositon the mainblock after land creation. + reposition-costs: 0 + + # Claim a radius of chunks at land creation. These initial claims won't cost the land anything. + # NOTE: 0 = only the chunk in which the player currently stands. + # NOTE: This value can't be higher than your servers view distance. + claim-radius: 0 + + # Land name options + name: + # Should spaces be allowed in land names? + # Spaces will be replaced with an underscore, when being displayed as a command parameter. + # Disabling this option at a later time, will also remove spaces from existing lands. + # NOTE: This setting required server reload / restart. + spaces: false + # Maximum land name length + # The maximum possible length is 80 when using MySQL and 32 when using SQLite (including color codes). + # How to filter names: https://wiki.incredibleplugins.com/general/locale-and-config/messages#filter-swear-words-and-forbidden-names + length_2: 24 + # Should colors be allowed in land names? + # Disabling this option at a later time, will also remove color from existing lands. + color_2: true + # Should land names be allowed to include formatting, such as bold, underlined etc.? + format: true + # Should numbers be allowed in land names? + numbers: true + # Allow only latin letters for land names? + # If enabled: They won't be able to use chinese letters etc. + only-latin: false + + # Rename settings + # Command: /lands rename + rename: + # Costs to rename a land. + costs_5: 0 + # Cooldown to rename the land. + # Bypass permission: lands.bypass.cooldown.rename_land + cooldown_rename_time: 15m + + # Land tag options + tag: + # Enable tags? + # NOTE: This setting required server reload / restart. + enabled_8: true + # Maximum land tag length + # The maximum possible length is 80 when using MySQL and 32 when using SQLite (including color codes). + length_3: 4 + # Should colors be allowed in land tags? + # Disabling this option at a later time, will also remove color from existing lands. + color_6: false + # Should land tags be allowed to include formatting, such as bold, underlined etc.? + format_2: false + # Should numbers be allowed in land tags? + numbers_2: false + # Allow only latin letters for land tags? + # If enabled: They won't be able to use chinese letters etc. + only-latin_2: false + + # Land enter title options + title: + # Should players be allowed to use PlaceholderAPI placeholders, in the land title? + placeholderapi: + # Should players be allowed to use PlaceholderAPI placeholders provided by Lands? + # This does not require PlaceholderAPI to be installed. + lands: true + # Should players be allowed to use PlaceholderAPI placeholders provided by 3rd party plugins and Lands? + # This requires PlaceholderAPI to be installed. + 3rd-party: false + + # Set the minimum Euclidean distance in chunks (16 blocks). Players won't be able to claim in this buffer zone, + # unless their role has the LAND_CLAIM_BORDER flag in the neighboring land. + chunk-distance: + # Available distance modes: SQUARE, EUCLIDEAN, DIAMOND_SHAPE + # SQUARE - checks chunks around the chunk that is being claimed in a square shape + # EUCLIDEAN - measures Euclidean distance from chunk that is being claimed to neighbouring chunks + # DIAMOND_SHAPE - creates buffer zone in form of a diamond around claims + mode_3: "EUCLIDEAN" + # Size of buffer zone around a land that isn't part of a nation. + land_2: 1 + # Size of buffer zone around a land that is part of a nation. + # This value only applies to surrounding lands. That means that if a nation tries to expand and the + # neighbouring claim isn't part of a nation, the "land_2" value from above will be used instead. + nation: 3 + + # Force lands to claim near their claims. + force-near: + enabled_2: true + # Should claim attempts that would violate the force-near restrictions be treated as new lands? + treat-as-new: true + + # Chunk claiming by placing a special claim block. + # You can give claimblocks by executing the command /lands admin player give claimblock [amount] + # If you don't want your players to claim via command, just don't give them lands.command.claim. + # If you don't want your players to claim with claimblocks, just don't give them claimblocks. + claimblock: + # Should only the owner of the claim block be able to use it? + # NOTE: If disabled, players could give claimblocks to other players which then can use these claimblocks too. Also if enabled again in the future, + # already given claimblocks could still be used by everyone. + only-owner: true + # Should claimblocks not count towards the lands.chunks. permission? + ignore-max: true + # Should claimblocks be refunded, if players unclaim a chunk that was claimed with a claimblock? + refund: true + + # Landspawn settings + spawn: + # Creation settings (/lands setspawn) + creation: + # Automatically set land spawn on land creation (/lands create)? + # NOTE: The spawnpoint can always be changed with /lands setspawn. + auto: true + # Costs + cost: + # Cost for first time set + set: 0.0 + # Cost for changing spawn + change: 0 + + # Teleportation settings + teleport: + # Cost for teleportation to a land spawn, if the player is not trusted in the land. + costs: + value_3: 0 + # Should the cost of the teleportation be given to the land? + give-land: false + pay: + # Should untrusted players pay the teleport costs? + untrusted: true + # Should trusted players pay the teleport costs? + trusted: false + # Cooldown for teleportation to a land spawn, if a player is trusted in the land. + # This cooldown won't apply to players that aren't trusted in the land. + spawn-cooldown_time: 0s + # Teleport a player to the land spawn after they died? + re-spawn: true + + # Rent/sell areas settings - Wiki: https://github.corent:m/Angeschossen/Lands/wiki/Rent-System + # Rent = The players can rent a area of their choice without needing to get trusted. They can decide how long they want to rent it. + # Taxes = Trusted players pay a defined amount of tax per defined interval. + # If rent or sell is disabled, players with the permission "lands.admin.disabled-features" can still setup areas for rental. + rent: + # Allow your players to set sub areas available for rent? + rent: true + # Allow your players to sell sub areas or their whole land? + sell: false + # Should rent transactions be sent to the land bank? + # NOTE: This will only take effect, if banks are generally enabled (option: enabled_13). + # If disabled the transaction will be sent to the owners personal account. + bank: true + # Use holograms instead of signs? If enabled, after setting up the rent or sell sign, the sign will disappear and a clickable hologram will appear. + # NOTE: This will only be activated, if your hologram plugin supports clickable holograms via their developer API. Current known plugins to do that: CMI + holograms: false + # Teleportation through the /lands rentlist command. + teleport: + # Cost for teleportation to a rentable area. + costs_7: 0.0 + # Cooldown for teleportation to a rentable area. + rent-tp-cooldown_time: 5s + + # Invite settings + invite: + # If you disable invites, players can directly trust + # other players with /lands trust. + # This option requires server reload / restart. + enabled_16: true + # Should land owners be able to get trusted to other lands? + # If disabled, land owners can't be part of another land, if they own at least one land. + invite-owner: true + + # Broadcast settings + broadcast: + # If someone created a new land. + # Message: land.create.broadcast + create: false + # If someone deleted his land. This broadcast will only be sent, if the land has any claims (this prevents spam). + # Message: land.delete.broadcast + delete: false + + # Settings for /lands chat + chat: + # Should /lands chat messages be forwarded to console? + forward: true + # Should global chat be muted for a player if they have /lands chat toggle enabled? + # NOTE: This setting required server reload / restart. + mute-global: false + + # Fly Settings (Flags can be found in the roles section) + fly: + # If you disable flight control, the FLY flag from roles.yml won't have any effect. + # If you want to disallow flight in the wilderness, you need to toggle the fly flag in the admin menu: /lands admin menu + enabled_4: true + # This option only affects worlds that aren't in claim-worlds_list. + # For worlds of claim-worlds_list this option is irrelevant, since flight is controlled via the FLY flag. + # To toggle flight control in wilderness of claim worlds, just execute /lands admin menu while standing in the world. + # This list allows you to deny or allow flight in worlds that aren't in claim-worlds_list. This is important if players are switching worlds. + # You can use wildcard (*) to add all worlds to this list. + # Entry format is as follows: "worldName:allowFly" + # Example: + # world:false -> if world isn't part of claim-worlds_list, flight will be disabled in this world. + # world:true -> if world isn't part of claim-worlds_list, flight won't be disabled when players enter this world. + # If world is part of claim-worlds_list, the flight control will be controlled via the FLY flag in /lands admin menu or the menu of claims. + flight-control-worlds_list: [] + # Set the fly deactivation delay if a player is not allowed to fly at this position. + # Timeunit: Seconds + disable-delay: 3 + # Set a permission to check before Lands reactivates flight for a player. + # Lands only reactivates flight, if Lands previously disabled it for the player and they're now allowed to fly again + # at their current location. This permission just adds another requirement, besides the fly role flag. + reactivate-perm: '' + + # /lands setowner Settings + setowner: + # Disabling this option will remove the /lands accept and /lands deny command, IF invites are also disabled. + enabled_12: true + # The land (or the land owner, if banks are disabled) will need to pay this amount in order to set a new owner. + # This prevents abusing of ownership transfers in order to bypass limitations. + costs_6: 0 + # Allow the owner of a land to only, if the last owner change was some time ago? + owner-change-cooldown_time: 0s + + # If enabled, allows land members to store items in the /lands storage command. + # The storage can also be accessed by clicking on the land mainblock's barrel. + # WARNING: If you disable this option, all items in the land storages will be deleted. + storage: false + + # Delete inactive Lands, if the owner is offline since x days. This task executes every 6 hours. + # NOTE: When changing any of these settings, it's recommended to take a backup of the database, in case you misconfigure anything accidentally. + # Otherwise, you're risking irreversible land deletion. + # NOTE: These settings require server reload / restart. + expiration: + # How long does an owner need to be offline, to be considered inactive? + # This option allows you to create different categories of inactive players depending on their playtime. + # Format: 'playtime:offline-time' + # Playtime is considered the time that they played on the server. The time before Lands was installed is included. + # + # Example: + # owner_list: + # - '15m:7d' + # - '30m:14d' + # - '12h:30d' + # - '1d:60d' + # - '15d:80d' + # - '30d:never' <- Using "never" in the last entry means that players with more than 15 days playtime will never be considered as inactive. + # + # '15m:7d' and '30m:14d' means that land owners that have less or equal 15 minutes of playtime, will be considered inactive, if they're offline since at least 7 days. + # Owners that have more than 15 minutes of playtime and less than 30 minutes will be considered as inactive, if they're offline since at least 14 days. + # If a owner has more playtime than all the entries, it will use the entry with the highest playtime and compare the offline time against that entry. + # '30d:never' means that the land will never be deleted or the owner changed. + # Inactive land owners get, depending on your configuration, either untrusted and a new owner is set or their land get's deleted. + # An empty list disables this option. + owner_list: + - '15m:14d' + + # How long does a land member need to be offline, to be considered inactive? + # Inactive land members get untrusted. + # This section follows the same pattern as the owner_list above. + member_list: [ ] + + # Should an inactive owner be replaced by a land member? + # Lands will always try to set the member with the highest role as the new owner. + # If there's no member left, the land will be deleted. + replace-owner: true + # Should players, which have been deleted from the servers playerdata folder (primary world), be deleted? + # NOTE: It is recommended to keep this disabled. If this is enabled and you delete the playerdata folder in your primary world, it MAY DELETE ALL AFFECTED LANDS depending on your expiration settings. + delete-invalid: false + # Should lands, which have no claims, be deleted if they're at least x days old? + # You can disable this option by using 0. + no-claims: 0 + + # Should players keep their inventory, if they die inside a land? + # This option is forcefully enabled, if the player dies inside an area where they can't pickup items. + # For wars this can be configured in wars.yml. + keep-inventory: + enabled_11: false + mode_4: false + + # Specified combat settings which do not affect wars. + combat: + # Combat tagging + tag: + # If a player attacks another player, they will by tagged for x (timeunit) so that, regardless of land settings, + # other players can attack them. + # 0s = disabled + tag_time: 10s + # Configure worlds in which combat tags should be enabled. + # NOTE: If empty, it's enabled in all claim worlds from claim-worlds_list. + tag-worlds_list: [ ] + # Should a player be killed, if they log out while having a combat tag set on them? + quit-kill: true + # Remove the combat tag upon death? + death-remove: true + # Deny teleportation if player has active combat tag? + deny-teleport: true + # Disable fly during combat? + disable-fly: true + + # Should players, which are members in a common land, be able to fight in wilderness? + # NOTE: This option requires server restart / reload. + ally-wilderness: true + # Block village raids if the initiator is not allowed to attack players in the claim? + block-raids: true + + # Set claim limits per world. + # Example: If you set the permission lands.chunks.5 for your players, + # they will be able to claim 5 chunks in each claim world instead of 5 chunks in general. + # NOTE: This only applies for claim permissions: lands.chunks., lands.ownlands. + # It is recommended to keep this disabled. + claim-limits-per-world: true + + # Land bank settings (/lands balance) + bank: + # If enabled, land actions like /lands claim will take the money from the land bank + # instead of directly from the player. Disabling this option, will also disable the "/lands deposit" and "/lands withdraw" commands. + # NOTE: If you want to disable this option, please make sure your economy plugin supports transactions + # for offline players. Otherwise, features such as taxes and upkeep might lead to unexpected results. + # NOTE: This setting requires server reload / restart. + enabled_13: true + # Set a maximum balance. Players won't be deposit more than that. + # If the value is lower than a land's upkeep, it will automatically be adjusted to the land's upkeep. + # Use 0 to disable this option completely. + max-balance: 0 + # Should money be taken from the players personal balance, if they for example try to claim, but the land bank doesn't have enough money? + # If disabled and they don't have enough money in the land bank during upkeep collection, they won't be able to pay the upkeep. + fallback-personal: true + + +# Each chunk represents an 16x16 blocks area. +chunk: + # Cost to claim chunks. In some cases the claim might be free: + # NOTE: This cost will only be active if the players lands.free.chunks. permission is lower than the current chunks amount + # of the land AND if the currect chunks amount is greater or equals to the option called "claim-radius". + # More info: https://wiki.incredibleplugins.com/lands/permissions/permissions#numbered-permissions + costs_2: 0 + # Increase cost per chunk claim. + cost-increase: + # Available modes: + # PERCENTAGE: For example putting 10% per claim on top of the normal claim price per claim. + # ADD: For example adding 10 dollars to the claim cost every time the land claims a chunk. + # DEFAULT: Disables this option. + mode: 'DEFAULT' + value: 2 + # Set the maximum claim cost. + # NOTE: Set this to 0 in order to disable that option. + max_2: 0 + # Cashback settings (Chunk unclaim: /lands unclaim) + cashback: + # Available modes: + # PERCENTAGE: For example giving them 10% from the buy price back. + # ADD: For example giving them just 10 dollars back. + # DEFAULT: Disables this option. + mode_2: 'PERCENTAGE' + # Set this value to 0, if you want to disable this. + # If you use claimblocks (/lands admin player give), this value just needs to be greater than 0 to give them + # each claimblock back at unclaim, if the chunk was claimed with an claimblock. + value_2: 500 + + # Chunk teleportation options + teleport: + # Teleportation cooldown + # Bypass permission: lands.bypass.cooldown.teleport + chunk-tp-cooldown_time: 3m + # Cost for a teleportation. + costs_3: 0 + + # Allow claiming only in the initial world, in which the land was created? + # This means that a land can only have claims in one world. + initial-world: false + + # Auto claim chunks while standing on them. + auto-action: + # NOTE: This setting requires server reload / restart. + enabled_14: false + # After how long should the auto-action be stopped? + stop_time: 2m + + # Natural flags configuration. Role flags can be configured in the roles.yml file. + # List of available landFlags: https://wiki.incredibleplugins.com/lands/configuration/natural-flags + # NOTE: This option requires server reload / restart. + land-flags: + # Configure DEFAULT natural flags which will apply to new land creations. + default_list: + - monster_spawn + - phantom_spawn + - animal_spawn + - leaf_decay + - plant_growth + - snow_melt + + # Natural flags which should be visible in the flags menu. + # Default: Displays all player related natural flags. + display_list: + - 'all' + + monster_spawn: + # Prevent spawning from spawner blocks, if the monster spawn flag isn't set? + spawners: false + # Remove monsters that enter a land or wilderness where monster spawning is disabled? Monsters with a custom name won't be removed. + # NOTE: This will also remove monsters spawned by spawners. + # This option requires server reload / restart. + remove_2: false + + animal_spawn: + # Remove animals that enter a land or wilderness where animal spawning is disabled? Animals with a custom name won't be removed. + # NOTE: It is recommended to keep this disabled. It can cause incompatibilities with 3rd party mob plugins and might affect your servers performance due minecraft limitations. + # NOTE: This will also remove animals spawned by spawners. + # This option requires server reload / restart. + remove_3: false + + +# Players can create block-sized (not chunks) sub-areas inside their lands. +sub-area: + # Make it possible to create sub areas, using /lands selection, inside lands? + enabled_22: true + # Cooldown for the teleportation to an area inside your land. + teleport-cooldown_time: 0s + + +# Camps are temporary lands that will get deleted after a defined period. +# Camp items can be given at first join or by executing /lands player give +camp: + # NOTE: This setting requires server reload / restart. + enabled_21: false + # Set how much it should cost. This also includes the chunks that are being claimed. + costs_8: 0 + # After how much time should camps be deleted? + # 0 = never + expire_time: 1d + # Configure the default radius of chunks to claim. + # You can override this executing /lands player give camp [silent] + # 0 = only the chunk in which the camp item is placed. + radius: 1 + # Set the default camp name. For spaces to work, the option "spaces" must be enabled in the + # land creation section in this file. + default-name: '{player}''sCamp' + + +# Options for /lands relations and /nations relations +relations: + # Broadcast new relations to all players on the server? + broadcast: true + + +# Players can toggle personal flags to customize their experience. +player: + flags: + # Configure a default list of flags that is enabled. + # This only applies to new players, or those who haven't toggeled any flags yet. + default_2_list: + - 'receive_invites' + - 'enter_messages' + + # Configure which flags should be displayed in the menu. + # ALL = all flags are displayed. + display_2_list: + - 'all' + + +# This is the configuration of the /lands unstuck command. +# Purpose of this command is to let players be able to teleported out of locations in lands where they got trapped. +# For example a player finds a way walking into a land, but can't find a way out. +# This command will teleported them to the nearest wilderness location. +unstuck: + # Set the cooldown for this command. + unstuck-cooldown_time: 1h + # Allow movement during unstuck teleportation? + allow-movement: false + + +# Random teleportation (/lands wild) +# When using this make sure to set the spawn of each world using /setworldspawn. +random-teleport: + # Worlds where players should be able to use /lands wild. + # You can use '*' as an entry, to allow all worlds. + # If you want to specify a minimum and maximum distance, besides the world border, use this entry format: worldName:minDistance:maxDistance + # The minimum and maximum distance is measured from the world spawn (/setworldspawn). + # The maximum distance can't be larger than the size of your world border. + wild-worlds_list: + - world + + # Should permissions for random teleportation be per world based instead of just lands.command.wild? + # Example: world 'A': lands.command.wild.a, world 'B': lands.command.wild.b + world-perms: false + + # Players will be random teleported in this world, if they're currently not in a world defined above. + # NOTE: The world name is case-sensitive. + backup: 'world' + # Command (/lands wild) cooldown + rtp-cooldown_time: 10m + # Teleportation cost + costs_4: 250.0 + # Extensive biome check: If your custom world generator or downloaded map does not have biome maps properly implemented, this option + # will load the destination chunk before teleportation to check to biome. This will prevent players getting teleported into oceans, because the biome + # map of your world generator or downloaded map is not registered at the server. Please note that this option will cost performance + # and should be disabled if not needed. Most world generators do not need this option as they support retrieving the biome without loading the destination chunk + # before the teleportation counter starts. + extensive-check: false + + +# Introduce new players to claiming. +introduction: + # Notify these players until they reached this playtime. + # 0 disabled this section completely. + max-playtime_time: 10m + # Reminders can be sent multiple times, but they have a cooldown to prevent spam and annoyance. + reminder: + # Send a warning that the placed container isn't protected when placing it in wilderness. + # Will only be sent if the player isn't part of any land already. + container-placement: true + + +# Sound configuration +# You can find the sound names by using the /playsound command ingame. +# Format: sound,volume,pitch +# The volume and pitch parameter are optional. They allow you to control how the sound is played. +# Disabling a sound: Just set it to '' +sounds: + # At /lands create + create-land_sound: 'BLOCK_ANVIL_USE:0.25' + # Play a sound on /claim? + # This does not include radius and claimblock claims. + claim_sound: 'ITEM_SHOVEL_FLATTEN' + # Sent when a player receives a notification. For example when the player receives an invite at /trust. + notification_sound: 'ENTITY_EXPERIENCE_ORB_PICKUP:0.25' + # Played for the player that invited or trusted someone. + invite-sent_sound: 'ITEM_ARMOR_EQUIP_ELYTRA' + # Played for the target player at /lands ban + banned_sound: 'BLOCK_IRON_DOOR_CLOSE' + + # Sound which should be played whenever a player gets teleported by Lands. + # Sounds can be disabled by setting their value to '' + teleport: + teleported_sound: 'ENTITY_ENDERMAN_TELEPORT' + countdown_sound: 'BLOCK_LEVER_CLICK' + + # Play a sound when the players fly gets re-enabled after it has been disabled by Lands before. + # You can disable this, by setting it to '' + fly-re-enable_sound: 'ITEM_ARMOR_EQUIP_ELYTRA' + + +# Top lands and nations leaderboard options +# Includes /lands top, /nations top, leaderboard signs and holograms +top-lands: + # Should Lands divide the balance of the lands by 1000 and append "k" to it, if the balance is greater or equal to 1000? + # NOTE: This also influences the "[...]_balance" papi placeholders. + # Example: 1400 = 1k + divide: false + # Sign lederboard settings + sign: + head: + enabled_5: true + # Place the head of the land owner on top of the block, where the leaderboard sign is? + above: false + # Holograms (/lands admin hologram) + hologram: + # Set an item, which should appear over the hologram. + # You can set this to AIR, if you want to disable this. + # NOTE: It may take up to two minutes to update the item. + item: 'GOLDEN_HELMET' + # Exclude lands from being in top lists from players + # with these UUIDs. Get UID from player name: https://mcuuid.net/ + # NOTE: Changes to this option might take a few minutes to take effect. + exclude-uids_list: + - '8667ba71-b85a-4004-af54-457a9734eed7' + + +# Visualization options for /lands view etc. +visualization: + type: + # Wilderness + wilderness: + # Particles can be found here: + # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.html#enum.constant.summary + particle: 'BARRIER' + # NOTE: Only the color of the REDSTONE particle can be changed. + # To edit the color you need to insert the hex values given here: + # https://www.google.com/search?q=color+picker + color: 16753920 + # Duration in seconds + duration: 20 + rows: 1 + # If you want to use blocks instead of particles for sub AREAS (not land border): + # NOTE: It is not recommended to use this with the option 'only-corners' (from below) as sending block changes to players might cause lag at their client. Also using particles performs better on the server side. + # NOTE: If empty or AIR, it will use the configured particle from above. + block: '' + # If the player is the land owner. + own: + particle_3: 'BARRIER' + # NOTE: Only the color of the REDSTONE particle can be changed. + # To edit the color you need to insert the hex values given here: + # https://www.google.com/search?q=color+picker + color_3: 65280 + duration_3: 4 + rows_3: 1 + # If you want to use blocks instead of particles for sub AREAS (not land border): + # NOTE: It is not recommended to use this with the option 'only-corners' (from below) as sending block changes to players might cause lag at their client. Also using particles performs better on the server side. + # NOTE: If empty or AIR, it will use the configured particle from above. + block_2: '' + # If the player is trusted in the land. + trusted: + particle_4: 'BARRIER' + # NOTE: Only the color of the REDSTONE particle can be changed. + # To edit the color you need to insert the hex values given here: + # https://www.google.com/search?q=color+picker + color_4: 16776960 + duration_4: 4 + rows_4: 1 + # If you want to use blocks instead of particles for sub AREAS (not land border): + # NOTE: It is not recommended to use this with the option 'only-corners' (from below) as sending block changes to players might cause lag at their client. Also using particles performs better on the server side. + # NOTE: If empty or AIR, it will use the configured particle from above. + block_3: '' + # If player isn't trusted in the land. + untrusted: + particle_5: 'BARRIER' + # NOTE: Only the color of the REDSTONE particle can be changed. + # To edit the color you need to insert the hex values given here: + # https://www.google.com/search?q=color+picker + color_5: 16711680 + duration_5: 4 + rows_5: 1 + # If you want to use blocks instead of particles for sub AREAS (not land border): + # NOTE: It is not recommended to use this with the option 'only-corners' (from below) as sending block changes to players might cause lag at their client. Also using particles performs better on the server side. + # NOTE: If empty or AIR, it will use the configured particle from above. + block_4: '' + # Visualize selection mode (/lands selection) + selection: + particle_8: 'BARRIER' + # NOTE: Only the color of the REDSTONE particle can be changed. + # To edit the color you need to insert the hex values given here: + # https://www.google.com/search?q=color+picker + color_8: 16753920 + # Will stay permanent until selection mode is disabled. + # You can change that by editing this value. + duration_8: -1 + rows_8: 1 + + # /lands view visualization + view: + # Should Lands display land borders automatically once the player joins? + # NOTE: You can set duration_9 (below) to -1 to make the visualization permanent. + join: false + # The interval of the particles appearing. + # The minimum is one second. + view-interval_time: 1s + # Duration of land view. + # Time unit is seconds. You can make this permanent by setting the value to -1 + duration_9: 60 + # Should the border visualization stay at the initial height (y-block)? + # If false: The border will follow the players position up and downwards. + # NOTE: This is a default. Players can still toggle it by executing /lands view stay. + y-lock: false + # Set the maximum block distance from the player in which sub areas should be visualized. + # Recommended: 112 + area-radius: 112 + # Set the view distance in chunks. + # 0 = your server's view distance + chunk-radius: 0 + + # Should for sub areas only the corners be visualized? + # NOTE: This does not affect borders of lands. + only-corners: true + # Set a y offset (adjust height of visulization) + offset: 0 + + # /lands map settings + map: + # Should players be able to claim by clicking on the map? + claim: true + # /lands map lengths + # X Length (left to right) + length: 15 + # Y Heigth (up) + height_2: 10 + + +# Command options +command: + # Add separate permissions for specific subcommands. + inherit-perm: + # By default, the lands.command.claim command also gives access to claim subcommands, such as /lands claim auto etc. + # By disabling this option, each subcommand gets their own permission node: lands.command.claim.auto etc. + claim_2: true + + # This is needed for time rewards and the "/lands player give permission chunk" command + permission-plugin: + # Your permissions plugins command to add permissions. + # {player} The player's name + # {uuid} = The player's UUID + # {permission} = The Lands permission + add: 'Luckperms user {player} permission set {permission}' + # Your permission plugins command to remove permissions. + remove: 'Luckperms user {player} permission unset {permission}' + + # These options require a server reload / restart. + alias: + # Set aliases for the /lands command + # NOTE: This setting requires server reload / restart. + lands_list: + - land + - l + + # Set aliases for the /wars command + # This is only needed, if wars is enabled. + # NOTE: This setting requires server reload / restart. + wars_list: + - war + - w + + # Set aliases for the /nations command + # This is only needed, if nations is enabled. + # NOTE: This setting requires server reload / restart. + nations_list: [ ] + + # Block commands + # They are not case-sensitive. + blacklist: + # This affects all players which are standing in a land, where they aren't trusted. + nottrusted_list: + - sethome + + # This affects all players, which are standing in a land. + general_list: + - EnterCommandToDenyOnLandHere + + +# Lands menu options (/lands menu) +gui: + # Should Lands automatically adjust the length of item lore lines? + # Recommended length is 35. + # NOTE: Set this to 0 to disable it. + max-lore-length: 0 + # Should the /lands list menu show only lands where to player can teleport to? + # Players can still toggle it afterwards. This is just a default setting. + list-only-public: false + + +# Database options +database: + # MySQL database + # To use this without issues, your connection limits etc. need to be configured properly in your MySQL server configuration. + # If you want to synchronize lands and claims across servers, please read the setup instructions: https://wiki.incredibleplugins.com/lands/configuration/database#synchronizing-claims-across-servers + mysql-v2: + enabled_19: false + address_2: 'localhost' + port_2: '3306' + username_2: 'minecraft' + password_2: 'password' + database_2: 'lands' + + # It is highly recommended to set a unique table prefix if the plugin shares a database with other plugins. + table-prefix_2: 'lands_' + + # Only needed if you want to synchronize lands, nations and claims across servers. + redis: + enabled_6: false + # Redis url should start with redis:// or rediss:// (for SSL connection). + address_3: "redis://127.0.0.1" + port_3: 6379 + # Database index. No other plugin should use the same index. + database-index: 1 + username_3: "default" + password_3: "password" + # This should be the name that you configured for this server in your BungeeCord or Velocity config. + # NOTE: If you're using mutlipaper, this option will be overridden by multipaper's own name decision. + # NOTE: This option can be overriden in server-name.yml to allow you copying this file (config.yml) to other servers without adjust this section. + server-name: "server-1" + # This option should only be enabled on ONE of the servers that are connected to the same Lands database and Redis. + # If true: This server will execute tasks, such as upkeep, taxes etc. for all lands across all servers that are connected to the same Lands database and Redis. + # NOTE: If you're using multipaper, make sure to provide the actual name of the multipaper instance that should be the master server (not the multipaper master). + # NOTE: This option can be overriden in server-name.yml to allow you copying this file (config.yml) to other servers without adjust this section. + master: false + + # Use SQLite for the database. Doesn't require a database server. + sqlite-v2: false + + ########################################################## + # Deprecated SQL schema. Use mysql-v2 (above) instead. # + ########################################################## + mysql: + enabled_20: false + ip-address: 'localhost' + port: '3306' + username: 'minecraft' + password: 'password' + database: 'lands' + + # It is highly recommended to set a unique table prefix if the plugin shares a database with other plugins or Lands instances. + table-prefix: 'lands_' + + + # If Lands can't connect to your MySQL database, because for example the credentials are invalid or outdated. + # Should Lands disallow players to join the server, if it couldn't connect to the database? + # This can happen if you change the database credentials, but forget to update it in this config. + error-disallow-join: true + + +# 3rd party plugin options +integration: + # Management integrations + manager: + WorldEdit: + # Disallow WorldEdit use in other players lands, where the player isn't trusted? + # Bypass permission in claims: lands.bypass.worldedit + # Bypass permission in wilderness: lands.bypass.wilderness.worldedit + enabled_7: true + + # Apply the lands-claim flag also to global regions in world manager plugins, like WorldGuard? + # NOTE: This option should only be enabled, if you want to disallow claiming in the wilderness. + # If you want to manage wilderness flags like block breaking, use /lands admin menu instead. + # This option requires server reload / restart. + global-regions: false + + # Options for the 3rd party plugin MythicMobs. + mythicmobs: + # Here you can add mob IDs from the MythicMobs plugin, that should bypass the animal and monster spawn flag. + bypass-spawn-flags_list: [] + + # Should skins be fetched from the 3rd party plugin SkinsRestorer. + # This option requires the option "general.fetch-skins-names" to be enabled. + skins-restorer: false + + # Options for vehicles of the Vehicles plugin. This doesn't affect Minecraft vanilla vehicles. + # If enabled: + # Disallows the placement of vehicles in a land if the player isn't allowed to use vehicles in it. + # Allow land members to pickup vehicles from other players in the land, even if they don't own the vehicle. + # If disabled, untrusted players can place vehicles, which can't be removed by land members, in lands. + vehicles: true + + # Should Lands provide Luckperms context for setting permissions? + luckperms-context: true + + # Economy settings + # If all types are disabled, the item based economy will be used instead. + # NOTE: When changing these option you might also want to adjust the "eco-format" in this config. + economy: + vault: + # You need an economy plugin, which supports Vault, to let this work. + enabled_10: true + # Server bank account name. Upkeep will go here. Empty means, that this feature is disabled. + server-bank: '' + # Player experience + exp: + enabled_15: false + # Item currency is used when all other economy options are disabled or unavailable. + # The currency item can be changed in the GUI locale file. Just search for "currency" there. The locale file is located under /plugins/Lands/Language/yourlocale_gui.yml. + # You can also apply model-data to the currency item in the GUI locale file: https://wiki.incredibleplugins.com/general/menus/gui-menus#set-custom-model-data + # Please note that taxes can't be enabled, if you don't use Vault economy. + items: + # If enabled, only items that have the same name, lore etc. will belong to the currency. + # Not just items of the same type or items with the same model-data. + strict: false + + +# You most likely don't need to edit this section. +entities: + # You can specify here which entities should be considered an animal or monster. + # This affects all parts of the plugin, that involves these entity groups. + # If the list contains "default": New entities of future updates, that are part of this category will be added automatically. + # You can remove specific entities from the "default" list by adding both "default" and "-entity_type" to the list. Note the minus before the entity type. + animals_list: + - 'default' + monsters_list: + - 'default' + + +# Configure logging +logging: + # We might ask you to enable this, when you submit a bugreport. + # It's also helpful to debug variables for events.yml. + debug: false + # Forcefully save everything at shutdown, even if the data had no changes. + force-save: false + # Identify caller of events etc. + # Available: land_balance_changed + print-callstack_list: [ ] diff --git a/live-server/plugins/Lands/events.yml b/live-server/plugins/Lands/events.yml new file mode 100755 index 0000000..138ae9a --- /dev/null +++ b/live-server/plugins/Lands/events.yml @@ -0,0 +1,731 @@ +# In this file you can execute commands at specific events. +# Wiki: https://github.com/Angeschossen/General/wiki/Events + +events: + BroadcastEvent: + commands: + condition: '' + groups: + recipients: + 1: + condition: '' + commands: [ ] + LandUnclaimSelectionEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + LandUnclaimAllEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + ChunkDeleteEvent: + cancel: '' + commands: + # It's recommended to use more specific events for land delete, selection unclaim etc. + # Therefore, we only listen to unclaims that affect a single chunk. You're also not able + # to cancel this event, if the unclaim type does not equals DEFAULT. + # A list of dedicated unclaim events, which also can be cancelled: + # LAND_DELETION: LandDeleteEvent + # SELECTION: LandUnclaimSelectionEvent + # ALL: LandUnclaimAllEvent + condition: 'type == "DEFAULT"' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + ChunkPostClaimEvent: + commands: + condition: '' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + ChunkPreClaimEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + LandBanPlayerEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + player_target: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + LandChatEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + recipients: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + LandCreateEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + LandDeleteEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + LandInvitePlayerEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + player_target: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + LandOwnerChangeEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + player_target: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + LandRenameEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + LandTrustPlayerEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + player_target: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + LandUnbanPlayerEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + player_target: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + LandUntrustPlayerEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + player_target: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + PlayerLeaveLandEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + PlayerAreaEnterEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + PlayerAreaLeaveEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + PlayerSpawnLandEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + PlayerTaxEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: 'area_name == null' + commands: [ ] + land_online: + 1: + condition: 'area_name == null' + commands: [ ] + area_trusted: + 1: + condition: 'area_name != null' + commands: [ ] + area_online: + 1: + condition: 'area_name != null' + commands: [ ] + WarDeclareEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + war_attacker_trusted: + 1: + condition: '' + commands: [ ] + war_attacker_online: + 1: + condition: '' + commands: [ ] + war_defender_trusted: + 1: + condition: '' + commands: [ ] + war_defender_online: + 1: + condition: '' + commands: [ ] + WarEndEvent: + cancel: '' + commands: + condition: '' + groups: + player_self: + 1: + condition: '' + commands: [ ] + war_attacker_trusted: + 1: + condition: '' + commands: [ ] + war_attacker_online: + 1: + condition: '' + commands: [ ] + war_defender_trusted: + 1: + condition: '' + commands: [ ] + war_defender_online: + 1: + condition: '' + commands: [ ] + war_winner_trusted: + 1: + condition: '' + commands: [ ] + war_winner_online: + 1: + condition: '' + commands: [ ] + war_loser_trusted: + 1: + condition: '' + commands: [ ] + war_loser_online: + 1: + condition: '' + commands: [ ] + NationCreateEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + NationDeleteEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + NationRenameEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + NationTrustLandEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + NationUntrustLandEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + InboxMessageReceivedEvent: + commands: + condition: '' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + LevelChangedEvent: + commands: + condition: '' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + MemberHolderUpkeepEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + nation_trusted: + 1: + condition: '' + commands: [ ] + nation_online: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] + LandConvertEvent: + cancel: '' + commands: + condition: '!cancelled' + groups: + player_self: + 1: + condition: '' + commands: [ ] + land_trusted: + 1: + condition: '' + commands: [ ] + land_online: + 1: + condition: '' + commands: [ ] \ No newline at end of file diff --git a/live-server/plugins/Lands/levels.yml b/live-server/plugins/Lands/levels.yml new file mode 100755 index 0000000..27d72e9 --- /dev/null +++ b/live-server/plugins/Lands/levels.yml @@ -0,0 +1,465 @@ +# In this file you can edit/add default land and nation levels. +# Please note that each config section (level section) name and level name must be unique. +# You must insert valid YAML format. To verify your format, you can paste the content of this file here: https://yaml-online-parser.appspot.com + +# Default land and nation levels. You can also add your own levels. +# The order of the levels is ascending (lowest level -> highest). +# This file can not be reloaded via /lands reload. + +land: + # Enable land levels? + enabled: true + # Here you can edit existing or add new levels. + levels: + 1: + # Set the name of the level. + title: 'Settlement' + # These values are only active if the land isn't a member of any nation. + attributes: + # The chunks attribute will add or remove (= negative value) chunks to the land. That means that the land can claim more (or less) chunks at /claim. + chunks: + description: '&7{value} claims' + value: 0 + # The upkeep attribute will higher or lower (= negative value) their upkeep costs by a given value. + # This attribute is not active, if the land is part of a nation. + upkeep: + description: '&7{value}% upkeep cost' + value: 0 + 2: + title: 'Village' + requirements: + # Required members to get this level assigned. + members: + required: 4 + title: 'Trust {req} Players' + description: + - '&7Trust {req} players in this land.' + - '&7Command: &e/lands trust' + # Required chunks to get this level assigned. + chunks: + required: 0 + title: 'Claim {req} Chunks' + description: + - '&7Claim {req} chunks for this land.' + - '&7Command: &e/claim' + # Required bank balance to get this level assigned (/lands balance). + balance: + required: 7500 + title: 'Balance of ${req}' + description: + - '&7Have ${req} deposited into this land bank.' + - '&7Command: &e/lands deposit' + # Plugin: https://www.spigotmc.org/resources/67627 + betterfarming: + farms: + required: 1 + title: '{req} Upgradeable Farm' + description: + - '&7Have {req} upgradeable farm in your land.' + - '&7Command: &e/farm get' + # Plugin: https://www.spigotmc.org/resources/69201 + upgradeablehoppers: + hoppers: + required: 5 + title: '{req} Upgradeable Hoppers' + description: + - '&7Have {req} upgradeable hoppers in your land.' + - '&7Command: &e/hopper get' + # Plugin: https://www.spigotmc.org/resources/77717 + upgradeablespawners: + spawners: + required: 3 + title: '{req} Upgradeable Spawners' + description: + - '&7Have {req} upgradeable spawners in your land.' + - '&7Command: &e/spawner get' + attributes: + chunks: + description: '&7{value} claims' + value: 1 + upkeep: + description: '&7{value}% upkeep cost' + value: 5 + # Execute console commands, if the land reaches this level or gets downgraded from this level to the previous one. + # Available placeholders: + # {level}: Name of the level + # {land}: Parameter name of the land = without spaces. + # {land_name}: Name of the land. Might contain spaces. + # {owner}: The player name of the land owner. + # {member}: The player name a land member. + # If the command contains the {member} placeholder, the command will be executed for each player that is trusted in the land. + commands: + # When a land reaches this level. + reached: [ ] + # When a land gets downgraded from the next level to this one. + down: [ ] + 3: + title: 'Town' + requirements: + members: + required: 8 + title: 'Trust {req} Players' + description: + - '&7Trust {req} players in this land.' + - '&7Command: &e/lands trust' + chunks: + required: 0 + title: 'Claim {req} Chunks' + description: + - '&7Claim {req} chunks for this land.' + - '&7Command: &e/claim' + balance: + required: 17000 + title: 'Balance of ${req}' + description: + - '&7Have ${req} deposited into this land bank.' + - '&7Command: &e/lands deposit' + # Plugin: https://www.spigotmc.org/resources/67627 + betterfarming: + farms: + required: 3 + title: '{req} Upgradeable Farms' + description: + - '&7Have {req} upgradeable farms in your land.' + - '&7Command: &e/farm get' + # Plugin: https://www.spigotmc.org/resources/69201 + upgradeablehoppers: + hoppers: + required: 8 + title: '{req} Upgradeable Hoppers' + description: + - '&7Have {req} upgradeable hoppers in your land.' + - '&7Command: &e/hopper get' + # Plugin: https://www.spigotmc.org/resources/77717 + upgradeablespawners: + spawners: + required: 3 + title: '{req} Upgradeable Spawners' + description: + - '&7Have {req} upgradeable spawners in your land.' + - '&7Command: &e/spawner get' + attributes: + chunks: + description: '&7{value} claims' + value: 2 + upkeep: + description: '&7{value}% upkeep cost' + value: 10 + commands: + reached: [ ] + down: [ ] + 4: + title: 'Province' + requirements: + members: + required: 14 + title: 'Trust {req} Players' + description: + - '&7Trust {req} players in this land.' + - '&7Command: &e/lands trust' + chunks: + required: 0 + title: 'Claim {req} Chunks' + description: + - '&7Claim {req} chunks for this land.' + - '&7Command: &e/claim' + balance: + required: 30000 + title: 'Balance of ${req}' + description: + - '&7Have ${req} deposited into this land bank.' + - '&7Command: &e/lands deposit' + # Plugin: https://www.spigotmc.org/resources/67627 + betterfarming: + farms: + required: 5 + title: '{req} Upgradeable Farms' + description: + - '&7Have {req} upgradeable farms in your land.' + - '&7Command: &e/farm get' + # Plugin: https://www.spigotmc.org/resources/69201 + upgradeablehoppers: + hoppers: + required: 15 + title: '{req} Upgradeable Hoppers' + description: + - '&7Have {req} upgradeable hoppers in your land.' + - '&7Command: &e/hopper get' + # Plugin: https://www.spigotmc.org/resources/77717 + upgradeablespawners: + spawners: + required: 5 + title: '{req} Upgradeable Spawners' + description: + - '&7Have {req} upgradeable spawners in your land.' + - '&7Command: &e/spawner get' + attributes: + chunks: + description: '&7{value} claims' + value: 4 + upkeep: + description: '&7{value}% upkeep cost' + value: 25 + commands: + reached: [ ] + down: [ ] + 5: + title: 'Land' + requirements: + members: + required: 24 + title: 'Trust {req} Players' + description: + - '&7Trust {req} players in this land.' + - '&7Command: &e/lands trust' + chunks: + required: 0 + title: 'Claim {req} Chunks' + description: + - '&7Claim {req} chunks for this land.' + - '&7Command: &e/claim' + balance: + required: 55000 + title: 'Balance of ${req}' + description: + - '&7Have ${req} deposited into this land bank.' + - '&7Command: &e/lands deposit' + # Plugin: https://www.spigotmc.org/resources/67627 + betterfarming: + farms: + required: 6 + title: '{req} Upgradeable Farms' + description: + - '&7Have {req} upgradeable farms in your land.' + - '&7Command: &e/farm get' + # Plugin: https://www.spigotmc.org/resources/69201 + upgradeablehoppers: + hoppers: + required: 25 + title: '{req} Upgradeable Hoppers' + description: + - '&7Have {req} upgradeable hoppers in your land.' + - '&7Command: &e/hopper get' + # Plugin: https://www.spigotmc.org/resources/77717 + upgradeablespawners: + spawners: + required: 6 + title: '{req} Upgradeable Spawners' + description: + - '&7Have {req} upgradeable spawners in your land.' + - '&7Command: &e/spawner get' + attributes: + chunks: + description: '&7{value} claims' + value: 8 + upkeep: + description: '&7{value}% upkeep cost' + value: 30 + commands: + reached: [ ] + down: [ ] + + +nation: + # Enable nation levels? + enabled: true + # Here you can edit existing or add new nation levels. + levels: + 1: + # Set the name of the level. + title: 'Federation' + # For the entry level, there are not attributes set. But you could add them anyways, if you modify the value options. + attributes: + chunks: + description: '&7{value} claims' + value: 0 + upkeep: + description: '&7{value}% upkeep cost' + value: 0 + effects: + description: '&a+ Unlock effects: {value}' + value: [ ] + effects_amount: + description: '&a+ Have {value} effects active at once' + value: 0 + 2: + title: 'Nation' + requirements: + # Required minimum amount of unique lands in the nation. + # This does not include the capital land. + lands: + required: 3 + title: '{req} Lands' + description: + - '&7Invite {req} lands to join your nation' + - '&7and let them accept your invite.' + - '&7Command: &e/nation trust' + # Required members (total unique players) to get this level assigned. + members: + required: 32 + title: '{req} unique Players' + description: + - '&7Have {req} players trusted in total.' + - '&7Command: &e/lands trust' + # Required total chunks to get this level assigned. + chunks: + required: 0 + title: 'Claim {req} Chunks' + description: + - '&7Have {req} claims in total.' + - '&7Command: &e/claim' + # Required total balance (the balance of all lands) to get this level assigned. + balance: + required: 100000 + title: 'Balance of ${req}' + description: + - '&7Have ${req} deposited across all lands.' + - '&7Command: &e/lands deposit' + # Plugin: https://www.spigotmc.org/resources/67627 + betterfarming: + farms: + required: 9 + title: '{req} Upgradeable Farms' + description: + - '&7Have {req} upgradeable farms in your land.' + - '&7Command: &e/farm get' + # Plugin: https://www.spigotmc.org/resources/69201 + upgradeablehoppers: + hoppers: + required: 24 + title: '{req} Upgradeable Hoppers' + description: + - '&7Have {req} upgradeable hoppers in your land.' + - '&7Command: &e/hopper get' + # Plugin: https://www.spigotmc.org/resources/77717 + upgradeablespawners: + spawners: + required: 9 + title: '{req} Upgradeable Spawners' + description: + - '&7Have {req} upgradeable spawners in your land.' + - '&7Command: &e/spawner get' + attributes: + # Give each land of the nation x amount of additional chunks. + chunks: + description: '&7{value} claims' + value: 20 + # Modify upkeep by x percent. This also supports negative values. + # The nation pays the upkeep to the server. + upkeep: + description: '&7{value}% upkeep cost' + value: 20 + # Allow nations to activate a specific amount of effects in their nation. Effects can be unlocked through level progression. + effects: + description: '&a+ Unlock effects: {value}' + # Configure a list of unlocked effects for this level. Valid effects: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/potion/PotionEffectType.html + # Format: EFFECT:AMPLIFIER + # The amiplifier is the strength (level) of the effect. Example: JUMP:2 -> Jump II + value: + - JUMP + - SPEED + - FAST_DIGGING + - DOLPHINS_GRACE + # Modify how many effects can be active at the same time. + effects_amount: + description: '&a+ Have {value} effects active at once' + value: 1 + # Execute console commands, if the nation reaches this level or gets downgraded from this level to the previous one. + # Available placeholders: + # {level}: Name of the level + # {nation}: Name of the nation + # {owner}: The player name of nation owner. + # {land}: Parameter name of the land that is part of the nation. Doesn't contain spaces. + # {land_name}: Name of the land that is part of the nation. May contain spaces. + # If the command contains the {land} placeholder, the command will be executed for each land, which is part of the nation. + commands: + # When a nation reaches this level. + reached: [ ] + # When a nation gets downgraded from the next level to this one. + down: [ ] + 3: + title: 'Empire' + requirements: + lands: + required: 6 + title: '{req} Lands' + description: + - '&7Invite {req} lands to join your nation' + - '&7and let them accept your invite.' + - '&7Command: &e/nations trust' + members: + required: 64 + title: '{req} unique Players' + description: + - '&7Have {req} players trusted in total.' + - '&7Command: &e/lands trust' + chunks: + required: 0 + title: 'Claim {req} Chunks' + description: + - '&7Have {req} claims in total.' + - '&7Command: &e/claim' + balance: + required: 250000 + title: 'Balance of ${req}' + description: + - '&7Have ${req} deposited across all lands.' + - '&7Command: &e/lands deposit' + # Plugin: https://www.spigotmc.org/resources/67627 + betterfarming: + farms: + required: 18 + title: '{req} Upgradeable Farms' + description: + - '&7Have {req} upgradeable farms in your land.' + - '&7Command: &e/farm get' + # Plugin: https://www.spigotmc.org/resources/69201 + upgradeablehoppers: + hoppers: + required: 30 + title: '{req} Upgradeable Hoppers' + description: + - '&7Have {req} upgradeable hoppers in your land.' + - '&7Command: &e/hopper get' + # Plugin: https://www.spigotmc.org/resources/77717 + upgradeablespawners: + spawners: + required: 18 + title: '{req} Upgradeable Spawners' + description: + - '&7Have {req} upgradeable spawners in your land.' + - '&7Command: &e/spawner get' + attributes: + chunks: + description: '&7{value} claims' + value: 35 + upkeep: + description: '&7{value}% upkeep cost' + value: 35 + effects: + description: '&a+ Unlock effects: {value}' + value: + - JUMP:2 + - SPEED:2 + - FAST_DIGGING:2 + - DOLPHINS_GRACE:2 + - ABSORPTION + - NIGHT_VISION + - LUCK + - INCREASE_DAMAGE + - HEALTH_BOOST + effects_amount: + description: '&a+ Have {value} effects active at once' + value: 3 + commands: + reached: [ ] + down: [ ] + + +# You can disable sounds by setting them to '' +sound: + # Played to each player of the land or nation on level up. + up: 'BLOCK_BELL_USE' + # Played to each player of the land or nation on level down. + down: 'BLOCK_ANVIL_DESTROY' + diff --git a/live-server/plugins/Lands/nations.yml b/live-server/plugins/Lands/nations.yml new file mode 100755 index 0000000..8b309b6 --- /dev/null +++ b/live-server/plugins/Lands/nations.yml @@ -0,0 +1,99 @@ +# Explanation for players: https://wiki.incredibleplugins.com/lands/players/general/nations + +# Enable nations? +# NOTE: This setting requires server reload / restart. +enabled: false + +nation: + # Customize the creation + creation: + # Set the creation cost + costs: 20000.0 + # Require a specific land level to be able to create a nation. You can set this to 1 in order to disable this. + # NOTE: This must be the section name of the specific level. + # This option requires server reload / restart. + capital-level: 5 + + # Nation name options + name: + # Should spaces be allowed in nation names? + # Spaces will be replaced with an underscore, when being displayed as a command parameter. + # Disabling this option at a later time, will also remove spaces from existing nations. + spaces: false + # Maximum nation name length + # The maximum possible length is 80 when using MySQL and 32 when using SQLite (including color codes). + # How to filter names: https://wiki.incredibleplugins.com/general/locale-and-config/messages#filter-swear-words-and-forbidden-names + length: 24 + # Should colors be allowed in nation names? + # Disabling this option at a later time, will also remove color from existing nations. + color: true + # Should nation names be allowed to include formatting, such as bold, underlined etc.? + format: true + # Should numbers be allowed in nation names? + numbers: true + # Allow only latin letters for nation names? + # If enabled: They won't be able to use chinese letters etc. + only-latin: false + + # Rename settings + # Command: /nations rename + rename: + # Costs x each time the name is changed. + costs_2: 10000.0 + # Nation needs to wait x until they can change their name again. + # Bypass permission: lands.bypass.cooldown.rename_nation + cooldown_rename_time: 1d + + # Nation tag options + tag: + # Enable tags? + # NOTE: This setting required server reload / restart. + enabled_2: true + # Maximum nation tag length + # The maximum possible length is 80 when using MySQL and 32 when using SQLite (including color codes). + length_2: 4 + # Should colors be allowed in nation tags? + # Disabling this option at a later time, will also remove color from existing nations. + color_2: false + # Should nation tags be allowed to include formatting, such as bold, underlined etc.? + format_2: false + # Should numbers be allowed in nation tags? + numbers_2: false + # Allow only latin letters for nation tags? + # If enabled: They won't be able to use chinese letters etc. + only-latin_2: false + +# Land related settings +land: + # Set a maximum distance between the capital and the land that they want to invite to their nation. + # 0 disables this option. + max-distance: 0 + + +# Let lands, which are part of a nation pay taxes. +# If a land is member of a nation they won't pay upkeep to the server anymore. Instead +# they will pay taxes to the nation. To prevent abuse of this, it's recommended enabling nations upkeep, +# so the nation needs to pay upkeep to the server depending on their size. +# NOTE: This option is bound to the upkeep option from config.yml. Upkeep needs to be enabled in config.yml. +taxes: + # Set the minimum tax value per chunk. + min: 0 + # Set the maximum tax value the nation should be able to set PER CHUNK of their lands? + # NOTE: Final payment would be for each land: land size (chunks) * cost + max: 5.0 + # Use the configured land upkeep as the minimum amount + # Should a land be removed from the nation, if it can't pay the tax? + remove-land: true + + +# Let a nation pay money to the server in order to keep it up. +upkeep: + enabled_4: true + # Set the upkeep costs for a nation per chunk. + per-chunk: 3.0 + # Should a nation get deleted if it can't pay the upkeep costs? + # NOTE: This does not delete any lands. + delete-nation: true + # Exclude nation from upkeep, if it was recently created? + # This excludes nations from their first upkeep payment, if they're younger than x time. + nopay_time: 2d diff --git a/live-server/plugins/Lands/roles.yml b/live-server/plugins/Lands/roles.yml new file mode 100755 index 0000000..ca4f1f9 --- /dev/null +++ b/live-server/plugins/Lands/roles.yml @@ -0,0 +1,217 @@ +# In this file you can edit/add default roles. +# Please note that each config section (role section) name and role name must be unique. +# You must insert valid YAML format. To verify your format, you can paste the content of this file here: https://yaml-online-parser.appspot.com +# Explanation of roles and their flags: https://github.com/Angeschossen/Lands/wiki/Roles-and-their-Flags +# Please note that changing options in this file may require server reload / restart. + +# Default land roles. You can also add your own default roles. +# The priority of the roles is descending (highest role -> lowest). +land: + # Which flags should be displayed in the role settings menu? + # You can still set default values below and hide them by removing them from this list. + # The order of this list also defines their sorting in the menus. + display: + - BLOCK_PLACE + - BLOCK_BREAK + - BLOCK_IGNITE + - PLANT + - HARVEST + - TRAMPLE_FARMLAND + - SHEAR + - ITEM_PICKUP + - INTERACT_GENERAL + - INTERACT_CONTAINER + - INTERACT_DOOR + - INTERACT_TRAPDOOR + - INTERACT_MECHANISM + - INTERACT_VILLAGER + - VEHICLE_USE + - ATTACK_PLAYER + - ATTACK_ANIMAL + - ATTACK_MONSTER + - LAND_ENTER + - FLY + - ELYTRA + - SPAWN_TELEPORT + - ENDER_PEARL + - PLAYER_TRUST + - PLAYER_SETROLE + - PLAYER_UNTRUST + - PLAYER_BAN + - LAND_CLAIM + - LAND_CLAIM_BORDER + - SPAWN_SET + - BALANCE_WITHDRAW + - AREA_ASSIGN + - WAR_MANAGE + - SETTING_EDIT_LAND + - SETTING_EDIT_ROLE + - SETTING_EDIT_TAXES + - SETTING_EDIT_VARIOUS + + # Here you can add your own default roles or edit the existing ones. Players will still be able to create new roles in their land menu if they have the required permission. + # NOTE: The order of the roles will affect the initial priority of the role. Means that roles at the top have the highest priority and roles at the bottom the lowest. + ################################################################################################################################ + # Whenever a new flag is added to Lands, all existing Lands will apply the flag, if specified by the flag author. # + # But for future land creations you need to configure it correctly here. Lands will always send you a popup in console and on # + # admin ingame accounts, if there is a new flag available. # + # You can force sync / reset flag(s) by using /lands admin land resetFlag # + ################################################################################################################################ + roles: + # NOTE: The owner role can not be deleted. + owner: + name: '&4&lOwner' + # The icon supports texture values (example: https://minecraft-heads.com/) and normal material values. + icon: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmJjMzExYTRmYjljNDkzODliNGY0NThjMjllOTY4MzI0YzU4MjNiOGE5OWVhZGUxNzQ3ODY2Yzk1YjA2NGEifX19' + # Default flag values. Please note that these only apply to new land creations. The flags of the owner role can only be toggled by server administrators. + # Using ALL instead of a list will give this role all player flags. Flags which are only for admin lands won't be set for this role. + default: 'ALL' + + # This role can be deleted, in case you don't want it. + admin: + name: '&c&lAdmin' + # The icon supports texture values (example: https://minecraft-heads.com/) and normal material values. + icon: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2UzZmVhODhlMmI4NWNjZGZiMWIzODcyOTgyZWFlMTY0ODlhODRjNjgxYmQ5ZmU0ZmU5YmM4YmNjMmU1In19fQ==' + # Should members of this role automatically be added to new sub areas? + parent: true + # Default flag values. Please note that these only apply to new land creations. Players will be able to change them later in their land menu if the flag is listed under 'display' above. + default: + - BLOCK_PLACE + - BLOCK_BREAK + - PLANT + - HARVEST + - SHEAR + - INTERACT_GENERAL + - INTERACT_DOOR + - INTERACT_TRAPDOOR + - INTERACT_CONTAINER + - INTERACT_MECHANISM + - INTERACT_VILLAGER + - BLOCK_IGNITE + - ATTACK_PLAYER + - ATTACK_ANIMAL + - ATTACK_MONSTER + - FLY + - ELYTRA + - LAND_ENTER + - SPAWN_TELEPORT + - ENDER_PEARL + - VEHICLE_USE + - ITEM_PICKUP + - TRAMPLE_FARMLAND + - PLAYER_TRUST + - PLAYER_SETROLE + - PLAYER_UNTRUST + - PLAYER_BAN + - SETTING_EDIT_LAND + - SETTING_EDIT_ROLE + + # NOTE: The member role can not be deleted. + member: + name: '&e&lMember' + # The icon supports texture values (example: https://minecraft-heads.com/) and normal material values. + icon: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjFhZGZkZjA3MTE3NWFkYWQ2NDRmZTRiM2E5NzMxYWM2YThmYTQ3NTExNjJlODEzOGM4OTlmYmFhNWZmMGI5In19fQ==' + # Default flag values. Please note that these only apply to new land creations. Players will be able to change them later in their land menu if the flag is listed under 'display' above. + default: + - BLOCK_PLACE + - BLOCK_BREAK + - PLANT + - HARVEST + - SHEAR + - INTERACT_GENERAL + - INTERACT_DOOR + - INTERACT_TRAPDOOR + - INTERACT_CONTAINER + - INTERACT_MECHANISM + - INTERACT_VILLAGER + - BLOCK_IGNITE + - ATTACK_PLAYER + - ATTACK_ANIMAL + - ATTACK_MONSTER + - FLY + - ELYTRA + - LAND_ENTER + - SPAWN_TELEPORT + - ENDER_PEARL + - TRAMPLE_FARMLAND + - VEHICLE_USE + - ITEM_PICKUP + + # This role can be deleted, in case you don't want it. + nation: + name: '&9&lNation' + # The icon supports texture values (example: https://minecraft-heads.com/) and normal material values. + icon: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDU1ODdkYTdmZTczMzZlOGFiOWY3OTFlYTVlMmNmYzhhODI3Y2E5NTk1NjdlYjlkNTNhNjQ3YmFiZjk0OGQ1In19fQ==' + # Default flag values. Please note that these only apply to new land creations. Players will be able to change them later in their land menu if the flag is listed under 'display' above. + default: + - INTERACT_GENERAL + - INTERACT_DOOR + - INTERACT_TRAPDOOR + - INTERACT_MECHANISM + - INTERACT_VILLAGER + - ATTACK_PLAYER + - ATTACK_ANIMAL + - ATTACK_MONSTER + - FLY + - ELYTRA + - SPAWN_TELEPORT + - ENDER_PEARL + - LAND_ENTER + - VEHICLE_USE + - ITEM_PICKUP + - LAND_CLAIM_BORDER + + # A nation has control over the nation role of its lands. + # Here you can specify flags which the nation should be able to toggle for the Nation role of its lands. + # The nation role can be edited in the nation menu -> /nations menu + toggleable-by-nation: + - INTERACT_GENERAL + - INTERACT_DOOR + - INTERACT_TRAPDOOR + - INTERACT_MECHANISM + - INTERACT_VILLAGER + - ATTACK_PLAYER + - ATTACK_ANIMAL + - ATTACK_MONSTER + - FLY + - SPAWN_TELEPORT + - ENDER_PEARL + - LAND_ENTER + - VEHICLE_USE + - ITEM_PICKUP + - LAND_CLAIM_BORDER + + # This role can be deleted, in case you don't want it. + ally: + name: '&a&lAlly' + # The icon supports texture values (example: https://minecraft-heads.com/) and normal material values. + icon: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjU2NzI1MWQ3MWI2ZjNhNGRjMDNmYTAxZTQ0MWRlN2VkZjkzNTQ3OTRlNzRhZWMxNmMwNGYxNDFkZGYzMWM3MCJ9fX0=' + # Default flag values. Please note that these only apply to new land creations. Players will be able to change them later in their land menu if the flag is listed under 'display' above. + default: + - INTERACT_GENERAL + - INTERACT_DOOR + - INTERACT_TRAPDOOR + - INTERACT_MECHANISM + - INTERACT_VILLAGER + - ATTACK_PLAYER + - ATTACK_ANIMAL + - ATTACK_MONSTER + - FLY + - SPAWN_TELEPORT + - ENDER_PEARL + - LAND_ENTER + - VEHICLE_USE + - ITEM_PICKUP + - LAND_CLAIM_BORDER + + # NOTE: The visitor role can not be deleted. + visitor: + name: '&8&lUntrusted' + # The icon supports texture values (example: https://minecraft-heads.com/) and normal material values. + icon: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZThiOGM2YTQ2ZDg3Y2Y4NmE1NWRmMjE0Y2Y4NGJmNDVjY2EyNWVkYjlhNjc2ZTk2MzY0ZGQ2YTZlZWEyMzViMyJ9fX0=' + # Default flag values. Please note that these only apply to new land creations. Players will be able to change them later in their land menu if the flag is listed under 'display' above. + default: + - LAND_ENTER + - ITEM_PICKUP + - ATTACK_MONSTER + - ATTACK_PLAYER diff --git a/live-server/plugins/Lands/server-name.yml b/live-server/plugins/Lands/server-name.yml new file mode 100755 index 0000000..ef59ecc --- /dev/null +++ b/live-server/plugins/Lands/server-name.yml @@ -0,0 +1,14 @@ +# This file is only relevant if Redis is enabled in config.yml. +# Here you can override the server-name and master option for Redis. +# Since copying the config.yml from one server to another will cause issues, if you don't adjust +# the Redis server-name and master option, you can configure these values in this file, so they override the config.yml Redis options. +# Just remove the comments at the option lines and set your desired value. + +# This should be the name that you configured for this server in your BungeeCord or Velocity config. +# NOTE: If you're using mutlipaper, this option will be overridden by multipaper's own name decision. +#server-name: "server-1" + +# This option should only be enabled on ONE of the servers that are connected to the same Lands database and Redis. +# If true: This server will execute tasks, such as upkeep, taxes etc. for all lands across all servers that are connected to the same Lands database and Redis. +# NOTE: If you're using multipaper, make sure to provide the actual name of the multipaper instance that should be the master server (not the multipaper master). +#master: false diff --git a/live-server/plugins/Lands/wars.yml b/live-server/plugins/Lands/wars.yml new file mode 100755 index 0000000..c80c561 --- /dev/null +++ b/live-server/plugins/Lands/wars.yml @@ -0,0 +1,290 @@ +# Wiki Page (configuration): hhttps://wiki.incredibleplugins.com/lands/configuration/wars +# Explanation for players: https://wiki.incredibleplugins.com/lands/players/general/wars + +# Enable wars? +# NOTE: This setting requires server reload / restart. +enabled: false + +# Should wars only be possible between nations and not single lands? +only-nations: false + +# War declaration settings +declaration: + # Set the minimum amount of trusted players a land needs to have to be allowed to engaged in a war. + min-players: + # Set minimum amount of trusted players for the declaring attacker. + attacker: 0 + # Set minimum amount of trusted players for the defender to receive a war declaration. + defender_3: 0 + + # Define when a declaration can be sent. + send-time: + # Day of the week. 1 is Monday and 7 is Sunday. + # Example: 1,2,3 -> Allows a declaration be sent on Monday, Wednesday and Thursday. + # Default: 1-7 -> Allows all days. + days_range: "1-7" + # Hours of the above defined days during which a declaration can be sent. + # Uses 24 hour format. Default is 0-23 which includes any hour of the day. + # Another example: 20-23;0-4 -> 8pm till 4am + hours_range: "0-23" + + # How much time do you want to give the defender lands for war preparation, before it will start? + # NOTE: Timeunit is seconds + # Default is one day + preparation_time: 1d + # Should attackers only be able to send war declarations to lands or nations where at least one player is online? + online: false + # Should a broadcast message be sent to the whole server? + # You can edit the message in your language file. + broadcast: true + # Should war declarations need a mutual acceptation? + # If enabled, the defender land needs to confirm the declaration before the war can start. They need to do this by executing /Wars declare + # They can deny a war declaration by executing /Wars deny + # NOTE: This setting requires server reload / restart. + mutual: + enabled_2: false + # Should the declaration be deleted if the enemy did not accept it during the configured period? + # You can disable this by setting the value to 0. + declaration-timeout_time: 5d + min-balance: + # Set the minimum land balance for attackers to be able to start a war. + attacker_2: 5000 + # Set the minimum balance for defenders to have war declared against them directly. + # They can still be engaged in war, if they're part of a nation that has a balance higher than this. + defender_2: 0 + min-age: + # Set the minimum age of a attacker. + attacker_time: 0d + # Set the minimum age of a defender. + defender_time: 0d + +# Configure points +points: + # Get x points per kill + kill: 1 + # Capture block points + capture-block: + # Get x points, if you capture a capture flag. + capture: 5 + # Get x points, if you break a capture flag of the enemy. + break: 3 + # Get x points, if you explode a capture flag of the enemy. + explode: 5 + # How many points does a team need to win? + # Calculation: * towin-per-player + towin: + # The amount of needed points to win is defined by the amount of players in the smallest team multipled by this value (per-player). + per-player: 5 + # Set a minimum amount of required points. This will be used if the calculation resulting of per-player is smaller than minimum. + min_2: 100 + +# Whenever a enemy places a beacon on the outskirts of a land, a capture flag will be created. +# The invaders then need to hold this point a specific time. +capture: + enabled_3: true + # A capture point must be crafted. Players can see the recipe in their /war menu. + recipe_list: + - 'AIR,RED_STAINED_GLASS_PANE,AIR' + - 'AIR,BEACON,AIR' + - 'IRON_BLOCK,IRON_BLOCK,IRON_BLOCK' + # Set the maximum amount of capture points a team can have placed at the same time. + max: 3 + # Only allow the team to place a capture flag every period. + place-cooldown_time: 10m + # Should only be players with the MANAGE_WAR flag be able to place capture flags for their land? + # If enabled, land owners can restrict who can place flags using the role system. + restrict-placement: false + # Set the chunks radius that will be affected by the capture flag. Invaders will start capturing once they enter the claimed area. + # If set to 1, only the chunk in which the capture flag is placed in, is affected. + # NOTE: This shouldn't be greater than your servers view distance. + radius: 1 + # Should the captured area become unclaimed? + unclaim: true + # Should the unclaimed area become claimed by the enemy? + claim: false + # The invaders need to hold the capture flag this long, to capture the chunk. + hold_time: 10m + # Spawn a firework every period, if any players are in the area. + firework_time: 30s + # Should a capture flag item be dropped at removal of the capture flag? + drop: false + # Allow players of the team that placed the flag to break it as well. + invaders-break: true + # Limit y levels on which capture flags are placeable. + y: + min: 30 + max_2: 127 + + +# Sound configuration +# You can find the sound names by using the /playsound command ingame. +# Format: sound,volume,pitch +# The volume and pitch parameter are optional. They allow you to control how the sound is played. +# Disabling a sound: Just set it to '' +sounds: + capture: + place_sound: 'BLOCK_BELL_USE' + + +# War status message interval. This message appears while the war is running. This is very useful to inform players, which might have been offline for some time, that their land is participating in a war. +status-interval_time: 15m + +# Set the max time a war can hold on. When this time is over the team with the points will win. If both teams have the same amount of points, it will end in a draw and no team will be rewarded. +# Default: 1,5 days +war-timeout_time: 36h + +# Should players, which are engaged in a war, be hidden from dynmap? +# NOTE: It's currently not possible to do that with BlueMap. +hide-player: false + +# Should Lands set a enemy or ally nametag above players that are at war? +# If you already have a scoreboard or tablist plugin on your server, it's recommended to use the %rel_lands_war_relation% PlaceholderAPI placeholder instead. +# NOTE: Only players that are in the same war, will see these. +# NOTE: If you use Folia instead of spigot/paper: Folia doesn't support scoreboard at this time. +nametag: true + +# Here you can define a list of commands, which shouldn't get executed while a player is engaged in a war. +cmd-blacklist_list: [ ] + +# Cutomize what happens when a defender surrenders. +surrender: + # Tribute settings + tribute: + # If you disable this option, the opposite team will be able to surrender even if no tribute is set. + force: true + + # Max tribute settings + max: + # Maximum tribute size that attackers can set. + # The tribute size set by the attackers will be paid by the defenders in + # favor of the attackers, if the defenders voluntarily surrender in the war. + # + # Use % to set a specific percentage of the defenders land balance. + # Use normal numbers to set a total amount of money. + # If you have banks disabled, the money will be taken from the land owner. + defender: 75% + # In the case that the attackers voluntarily surrender in a war, regardless + # of the tribute size, the attackers will pay in favor of the + # defenders, the amount of money set in this variable. + # + # Use % to set a specific percentage of the attackers land balance. + # Use normal numbers to set a total amount of money. + # If you have banks disabled, the money will be taken from the land owner. + # NOTE: You can set this to 0 to disable it. + attacker: 5000 + +# War settings, which can also be chaned ingame by players. +# Please note that they need certain permissions in order to change the settings. You can find them in the wiki. +settings: + # Allow team mates killing each other. This won't count to the war kill stats. + friendly_fire: + default_2: true + +shield: + # Configure when a land should get a war shield. + # If a war shield is active, other lands can't attack the land. + activation: + # Give war shield to a new land or nation? + # Use 0 to disable this. + shield_creation_time: 1d + + # Set a war shield for a land or nation after it surrendered? + # If you want to disable this, just set the value to 0. + shield_surrender_time: 4d + + # Give a shield to the land that surrendered before the war even started. + declaration: + # Only give the shield, if they paid at least the specified amount of money as a tribute. + min-tribute: 1000 + # Set to 0, to disable this shield. + shield_declaration_time: 1d + + # Set a war shield for both parties after war? + # If you want to disable this, just set the value to 0. + shield_end_time: 7d + +# Configure what happens when a war starts. +start: + # Should a message be broadcasted to the whole server? + # You can edit the message in your language file. + broadcast_2: true + +# Configure what happens when a land wins a war. +end: + # Execute a command when a land wins or looses. + # Placeholders: + # {winner} - Parameter name of the winner. Doesn't contain spaces. + # {winner_name} - Name of the winner. Might contain spaces. + # {winner_owner} - Owner of the winner. + # {loser} - Parameter name of the loser. Doesn't contain spaces. + # {loser_name} - Name of the winner. Might contain spaces. + # {loser_owner} - Owner of the loser. + # Set a command to [] in order to disable it. + winner: + winner-cmds_list: [ ] + + loser: + loser-cmds_list: [ ] + + # The looser will pay a specific amount of money to the attackers when the war ends. + # Set the reward mode. + # Use % to set a specific percentage of the loosers balance. + # Use normal numbers to set a total amount of money. If the looser does not have anough money, they will pay as much as possible. + # If you have banks disabled, the money will be taken from the land owner. + robbery: 75% + +# Here you can enable natural flags during a war. +# List of available land-flags: https://wiki.incredibleplugins.com/lands/configuration/natural-flags +land-flags_list: [ ] + +# Should players keep their inventory, if they die during a war? +keep-inventory: + enabled_4: false + mode: false + +# Invading means that the enemy is invading their opponent. Depending on the options "role-settings_list", "block-place_list" and "block-break_list" +# they will be able to do certain actions in these lands, like opening chests. +# If you want to limit what they're able to do, edit "role-settings_list", "block-place_list" and "block-break_list" in this section. +invading: + # Limit when invading enemies are able to do certain actions (editable in the "flags" section below). + restrictions: + # Set a amount of players of the defenders, which need to be online before the attackers can interact in the land. + # If nations are invloved: This value is applied to the land that is currently being invaded. Not the whole nation (collection of lands). + # This option also affects capture flags. + # NOTE: If you want to allow pillages WHILE no defender is online, set this option to 0. + # NOTE: This setting requires server reload / restart. + min-players: 1 + # Set a time period where players are still able to attack the land after the last player of the target land left the server. + cooldown_logging_time: 1m + + # Should players be able to fight in the lands of the allies of both sides as well or just + # in the land that declared war or got declared war against? + allies-war-field: false + + # Limit what invading enemies are able to do. + flags: + # Allow players doing the following things in the enemy land (only during war). + # Available actions: https://wiki.incredibleplugins.com/lands/configuration/roles-and-their-flags#flags + # NOTE: Adding BLOCK_PLACE or BLOCK_BREAK to this list will allow invaders to break, place ALL blocks. If you want to specify blocks, please use the lists below. + # NOTE: In war the attackers and defenders also have the flags of the untrusted role of the area they're invading. + # NOTE: If you want to allow players to ignite and explode tnt blocks you need to add BLOCK_IGNITE to this list and TNT_GRIEFING to land-flags_list above. + role-flags_list: + - ITEM_PICKUP + - ATTACK_PLAYER + - LAND_ENTER + + # Allow the placement of specific blocks if the land part of a war. + # NOTE: This is only needed if BLOCK_PLACE is NOT in the role-settings_list above. + # Values: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html + block-place_list: + - LADDER + - VINE + - SCAFFOLDING + + # Allow breaking of specific blocks if the land part of a war. + # NOTE: This is only needed if BLOCK_BREAK is NOT in the role-settings_list above. + # Values: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html + block-break_list: + - LADDER + - VINE + - SCAFFOLDING diff --git a/live-server/plugins/Lands/web.yml b/live-server/plugins/Lands/web.yml new file mode 100755 index 0000000..a7777cc --- /dev/null +++ b/live-server/plugins/Lands/web.yml @@ -0,0 +1,171 @@ +# Web integration +# Supports (Dynmap, BlueMap, squaremap) +# All three can be used at the same time. +# Changes in this section require server reload / restart. +map: + general: + # Should land markers be hidden by default? + hide: false + # The name of the layer where users can see the marked lands. + layer: 'Lands' + # If you want your players activity to be more anonymous, you can specify an update interval. + # This helps to prevent enemies spying dynmap to track player activity. + # Time units: d, h, m, s -> Example: 1h + # Default: 0 = use default handling defined by Lands (recommended) + # This option requires server reload / restart. + update_time: -1 + land: + # Should admin lands (/lands admin menu) be displayed? + show-admin: true + # Should only lands, that are part of a nation, appear on the map? + # Note: This option requires server reload / restart. + only-nation: false + # To edit the color you need to insert the hex values given here: + # https://www.google.com/search?q=color+picker + color: + from-name: + # Set the color depending on the land's name? + land: false + # Set the color depending on the nation's name? + nation: true + # Default colors, if the land name has no color set or from-name option is disabled. + # Color picker: https://www.google.com/search?q=color+picker + land: '#00ff00' + admin: '#ffff00' + border: + # Default border color: + # Color picker: https://www.google.com/search?q=color+picker + color: + from-name: + # Set the color depending on the land's name? + land_2: false + # Set the color depending on the nation's name? + nation_2: true + # Default colors, if the land name has no color set or from-name option is disabled. + # Color picker: https://www.google.com/search?q=color+picker + land_2: '#009933' + admin_2: '#ffcc00' + + dynmap: + enabled: true + # Link to the map for the /lands map link command. + # Add the "{dynmap}" placeholder to the "map.link" message in the locale file to display the link there. + # If no link is set for any active map type, the command will be disabled. + link: "http://127.0.0.1:8123" + # Set the spawn icon + # You can disable this by setting icon to '' + spawn: + # Set the icon. If empty, no icon will be displayed. + icon: 'greenflag' + # Set the icon for a nation's capital. If empty, no icon will be displayed. + icon-capital: 'greenflag' + # Set minimum zoom. The icon won't display, if the zoom in your browser is greater (mousewheel). + min-zoom: 5 + land: + # Opactiy of the land. Needs to be between 0 (lowest) and 1 (highest). + opacity: 0.35 + border: + # Opactiy of the land border. Needs to be between 0 (lowest) and 1 (highest). + opacity_2: 1 + # Thickness of the border. + thickness: 2 + + bluemap: + enabled_2: true + # Link to the map for the /lands map link command. + # Add the "{bluemap}" placeholder to the "map.link" message in the locale file to display the link there. + # If no link is set for any active map type, the command will be disabled. + link_2: "http://127.0.0.1:8100" + # Set the spawn icon + # You can disable this by setting icon to '' + spawn: + # Set the icon + # NOTE: This needs to be the absolute image address. Recommended imgage size: 32 x 32 pixels + # Path is relative to the "bluemap" folder in your server. + # Example: 'assets\steve.png' + icon_2: '' + # Center the icon + icon-anchor: + # If you want the icon to be centered you should set this to half of the icon width in pixels. + x: 25 + # If you want the icon to be centered you should set this to half of the icon height in pixels. + y: 25 + # Set the icon for a nations capital. + # NOTE: This needs to be the absolute image address. Recommended imgage size: 32 x 32 pixels + # Path is relative to the "bluemap" folder in your server. + # Example: 'assets\steve.png' + icon-capital_2: '' + # Center the icon + icon-capital-anchor: + # If you want the icon to be centered you should set this to half of the icon width in pixels. + x_2: 25 + # If you want the icon to be centered you should set this to half of the icon height in pixels. + y_2: 25 + # Set minimum zoom. The icon won't display, if the zoom in your browser is smaller (mousewheel). + min-zoom_2: 5 + # Set the markers height. + height: 62 + land: + # Opactiy of the land. Needs to be between 0 (lowest) and 1 (highest). + opacity_3: 0.35 + # Should 3D markers be used to visualize claims? That means that they extend to the min and max height of the claim. + 3d: false + + border: + # Opactiy of the land border. Needs to be between 0 (lowest) and 1 (highest). + opacity_4: 1 + + + squaremap: + enabled_3: true + # Link to the map for the /lands map link command. + # Add the "{squaremap}" placeholder to the "map.link" message in the locale file to display the link there. + # If no link is set for any active map type, the command will be disabled. + link_3: "http://127.0.0.1:8080" + # Set the spawn icon + # You can disable this by setting icon to '' + spawn: + # Set the icon + # NOTE: This needs to be the absolute image address. Recommended imgage size: 32 x 32 pixels + # Example: 'path-to-server\bluemap\web\assets\steve.png' + icon_3: '' + # Set the icon for a nations capital. + # NOTE: This needs to be the absolute image address. Recommended imgage size: 32 x 32 pixels + # Example: 'path-to-server\bluemap\web\assets\steve.png' + icon-capital_3: '' + # Set minimum zoom. The icon won't display, if the zoom in your browser is smaller (mousewheel). + min-zoom_3: 126 + land: + # Opactiy of the land. Needs to be between 0 (transparent) and 255 (completely opaque). + opacity_5: 0.35 + border: + # Opactiy of the land border. Needs to be between 0 (transparent) and 255 (completely opaque). + opacity_6: 1 + # Thickness of the border. + thickness_3: 2 + + Pl3xMap: + enabled_4: true + # Link to the map for the /lands map link command. + # Add the "{pl3xmap}" placeholder to the "map.link" message in the locale file to display the link there. + # If no link is set for any active map type, the command will be disabled. + link_4: "http://127.0.0.1:5555" + # Set the spawn icon + # You can disable this by setting icon to '' + spawn: + # Set the icon + # NOTE: This needs to be the absolute image address. Recommended imgage size: 32 x 32 pixels + # Example: 'path-to-server\bluemap\web\assets\steve.png' + icon_4: '' + # Set the icon for a nations capital. + # NOTE: This needs to be the absolute image address. Recommended imgage size: 32 x 32 pixels + # Example: 'path-to-server\bluemap\web\assets\steve.png' + icon-capital_4: '' + land: + # Opactiy of the land. Needs to be between 0 (lowest) and 1 (highest). + opacity_7: 0.6 + border: + # Opactiy of the land border. Needs to be between 0 (lowest) and 1 (highest). + opacity_8: 0.9 + # Thickness of the border. + thickness_4: 2 diff --git a/live-server/plugins/LuckPerms/config.yml b/live-server/plugins/LuckPerms/config.yml new file mode 100755 index 0000000..9ec0d5a --- /dev/null +++ b/live-server/plugins/LuckPerms/config.yml @@ -0,0 +1,631 @@ +#################################################################################################### +# +----------------------------------------------------------------------------------------------+ # +# | __ __ ___ __ __ | # +# | | | | / ` |__/ |__) |__ |__) |\/| /__` | # +# | |___ \__/ \__, | \ | |___ | \ | | .__/ | # +# | | # +# | https://luckperms.net | # +# | | # +# | SOURCE CODE: https://github.com/lucko/LuckPerms | # +# | WIKI: https://github.com/lucko/LuckPerms/wiki | # +# | BUG REPORTS: https://github.com/lucko/LuckPerms/issues | # +# | | # +# | Each option in this file is documented and explained here: | # +# | ==> https://github.com/lucko/LuckPerms/wiki/Configuration | # +# | | # +# | New options are not added to this file automatically. Default values are used if an | # +# | option cannot be found. The latest config versions can be obtained at the link above. | # +# +----------------------------------------------------------------------------------------------+ # +#################################################################################################### + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | ESSENTIAL SETTINGS | # +# | | # +# | Important settings that control how LuckPerms functions. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# The name of the server, used for server specific permissions. +# +# - When set to "global" this setting is effectively ignored. +# - In all other cases, the value here is added to all players in a "server" context. +# - See: https://github.com/lucko/LuckPerms/wiki/Context +server: global + +# If the servers own UUID cache/lookup facility should be used when there is no record for a player +# already in LuckPerms. +# +# - When this is set to 'false', commands using a player's username will not work unless the player +# has joined since LuckPerms was first installed. +# - To get around this, you can use a player's uuid directly in the command, or enable this option. +# - When this is set to 'true', the server facility is used. This may use a number of methods, +# including checking the servers local cache, or making a request to the Mojang API. +use-server-uuid-cache: false + + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | STORAGE SETTINGS | # +# | | # +# | Controls which storage method LuckPerms will use to store data. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# How the plugin should store data +# +# - The various options are explained in more detail on the wiki: +# https://github.com/lucko/LuckPerms/wiki/Storage-types +# +# - Possible options: +# +# | Remote databases - require connection information to be configured below +# |=> MySQL +# |=> MariaDB (preferred over MySQL) +# |=> PostgreSQL +# |=> MongoDB +# +# | Flatfile/local database - don't require any extra configuration +# |=> H2 (preferred over SQLite) +# |=> SQLite +# +# | Readable & editable text files - don't require any extra configuration +# |=> YAML (.yml files) +# |=> JSON (.json files) +# |=> HOCON (.conf files) +# |=> TOML (.toml files) +# | +# | By default, user, group and track data is separated into different files. Data can be combined +# | and all stored in the same file by switching to a combined storage variant. +# | Just add '-combined' to the end of the storage-method, e.g. 'yaml-combined' +# +# - A H2 database is the default option. +# - If you want to edit data manually in "traditional" storage files, we suggest using YAML. +storage-method: h2 + +# The following block defines the settings for remote database storage methods. +# +# - You don't need to touch any of the settings here if you're using a local storage method! +# - The connection detail options are shared between all remote storage types. +data: + + # Define the address and port for the database. + # - The standard DB engine port is used by default + # (MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017) + # - Specify as "host:port" if differs + address: localhost + + # The name of the database to store LuckPerms data in. + # - This must be created already. Don't worry about this setting if you're using MongoDB. + database: minecraft + + # Credentials for the database. + username: root + password: '' + + # These settings apply to the MySQL connection pool. + # - The default values will be suitable for the majority of users. + # - Do not change these settings unless you know what you're doing! + pool-settings: + + # Sets the maximum size of the MySQL connection pool. + # - Basically this value will determine the maximum number of actual + # connections to the database backend. + # - More information about determining the size of connection pools can be found here: + # https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing + maximum-pool-size: 10 + + # Sets the minimum number of idle connections that the pool will try to maintain. + # - For maximum performance and responsiveness to spike demands, it is recommended to not set + # this value and instead allow the pool to act as a fixed size connection pool. + # (set this value to the same as 'maximum-pool-size') + minimum-idle: 10 + + # This setting controls the maximum lifetime of a connection in the pool in milliseconds. + # - The value should be at least 30 seconds less than any database or infrastructure imposed + # connection time limit. + maximum-lifetime: 1800000 # 30 minutes + + # This setting controls the maximum number of milliseconds that the plugin will wait for a + # connection from the pool, before timing out. + connection-timeout: 5000 # 5 seconds + + # This setting allows you to define extra properties for connections. + # + # By default, the following options are set to enable utf8 encoding. (you may need to remove + # these if you are using PostgreSQL) + # useUnicode: true + # characterEncoding: utf8 + # + # You can also use this section to disable SSL connections, by uncommenting the 'useSSL' and + # 'verifyServerCertificate' options below. + properties: + useUnicode: true + characterEncoding: utf8 + #useSSL: false + #verifyServerCertificate: false + + # The prefix for all LuckPerms SQL tables. + # - Change this if you want to use different tables for different servers. + table-prefix: 'luckperms_' + + # The prefix to use for all LuckPerms collections. Change this if you want to use different + # collections for different servers. The default is no prefix. + mongodb-collection-prefix: '' + + # MongoDB ClientConnectionURI for use with replica sets and custom connection options + # - See https://docs.mongodb.com/manual/reference/connection-string/ + mongodb-connection-uri: '' + +# Define settings for a "split" storage setup. +# +# - This allows you to define a storage method for each type of data. +# - The connection options above still have to be correct for each type here. +split-storage: + # Don't touch this if you don't want to use split storage! + enabled: false + methods: + # These options don't need to be modified if split storage isn't enabled. + user: h2 + group: h2 + track: h2 + uuid: h2 + log: h2 + + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | UPDATE PROPAGATION & MESSAGING SERVICE | # +# | | # +# | Controls the ways in which LuckPerms will sync data & notify other servers of changes. | # +# | These options are documented on greater detail on the wiki under "Instant Updates". | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# This option controls how frequently LuckPerms will perform a sync task. +# +# - A sync task will refresh all data from the storage, and ensure that the most up-to-date data is +# being used by the plugin. +# - This is disabled by default, as most users will not need it. However, if you're using a remote +# storage type without a messaging service setup, you may wish to set this to something like 3. +# - Set to -1 to disable the task completely. +sync-minutes: -1 + +# If the file watcher should be enabled. +# +# - When using a file-based storage type, LuckPerms can monitor the data files for changes, and +# automatically update when changes are detected. +# - If you don't want this feature to be active, set this option to false. +watch-files: true + +# Define which messaging service should be used by the plugin. +# +# - If enabled and configured, LuckPerms will use the messaging service to inform other connected +# servers of changes. +# - Use the command "/lp networksync" to manually push changes. +# - Data is NOT stored using this service. It is only used as a messaging platform. +# +# - If you decide to enable this feature, you should set "sync-minutes" to -1, as there is no need +# for LuckPerms to poll the database for changes. +# +# - Possible options: +# => sql Uses the SQL database to form a queue system for communication. Will only work when +# 'storage-method' is set to MySQL or MariaDB. This is chosen by default if the +# option is set to 'auto' and SQL storage is in use. Set to 'notsql' to disable this. +# => pluginmsg Uses the plugin messaging channels to communicate with the proxy. +# LuckPerms must be installed on your proxy & all connected servers backend servers. +# Won't work if you have more than one proxy. +# => lilypad Uses LilyPad pub-sub to push changes. You need to have the LilyPad-Connect plugin +# installed. +# => redis Uses Redis pub-sub to push changes. Your server connection info must be configured +# below. +# => auto Attempts to automatically setup a messaging service using redis or sql. +messaging-service: auto + +# If LuckPerms should automatically push updates after a change has been made with a command. +auto-push-updates: true + +# If LuckPerms should push logging entries to connected servers via the messaging service. +push-log-entries: true + +# If LuckPerms should broadcast received logging entries to players on this platform. +# +# - If you have LuckPerms installed on your backend servers as well as a BungeeCord proxy, you +# should set this option to false on either your backends or your proxies, to avoid players being +# messaged twice about log entries. +broadcast-received-log-entries: true + +# Settings for Redis. +# Port 6379 is used by default; set address to "host:port" if differs +redis: + enabled: false + address: localhost + password: '' + + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | CUSTOMIZATION SETTINGS | # +# | | # +# | Settings that allow admins to customize the way LuckPerms operates. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# Controls how temporary permissions/parents/meta should be accumulated. +# +# - The default behaviour is "deny". +# - This behaviour can also be specified when the command is executed. See the command usage +# documentation for more info. +# +# - Possible options: +# => accumulate durations will be added to the existing expiry time +# => replace durations will be replaced if the new duration is later than the current +# expiration +# => deny the command will just fail if you try to add another node with the same expiry +temporary-add-behaviour: deny + +# Controls how LuckPerms will determine a users "primary" group. +# +# - The meaning and influence of "primary groups" are explained in detail on the wiki. +# - The preferred approach is to let LuckPerms automatically determine a users primary group +# based on the relative weight of their parent groups. +# +# - Possible options: +# => stored use the value stored against the users record in the file/database +# => parents-by-weight just use the users most highly weighted parent +# => all-parents-by-weight same as above, but calculates based upon all parents inherited from +# both directly and indirectly +primary-group-calculation: parents-by-weight + +# If the plugin should check for "extra" permissions with users run LP commands. +# +# - These extra permissions allow finer control over what users can do with each command, and who +# they have access to edit. +# - The nature of the checks are documented on the wiki under "Argument based command permissions". +# - Argument based permissions are *not* static, unlike the 'base' permissions, and will depend upon +# the arguments given within the command. +argument-based-command-permissions: false + +# If the plugin should check whether senders are a member of a given group before they're able to +# edit the groups data or add/remove other users to/from it. +# Note: these limitations do not apply to the web editor! +require-sender-group-membership-to-modify: false + +# If the plugin should send log notifications to users whenever permissions are modified. +# +# - Notifications are only sent to those with the appropriate permission to receive them +# - They can also be temporarily enabled/disabled on a per-user basis using +# '/lp log notify ' +log-notify: true + +# Defines a list of log entries which should not be sent as notifications to users. +# +# - Each entry in the list is a RegEx expression which is matched against the log entry description. +log-notify-filtered-descriptions: +# - "parent add example" + +# Defines the options for prefix and suffix stacking. +# +# - The feature allows you to display multiple prefixes or suffixes alongside a players username in +# chat. +# - It is explained and documented in more detail on the wiki under "Prefix & Suffix Stacking". +# +# - The options are divided into separate sections for prefixes and suffixes. +# - The 'duplicates' setting refers to how duplicate elements are handled. Can be 'retain-all', +# 'first-only' or 'last-only'. +# - The value of 'start-spacer' is included at the start of the resultant prefix/suffix. +# - The value of 'end-spacer' is included at the end of the resultant prefix/suffix. +# - The value of 'middle-spacer' is included between each element in the resultant prefix/suffix. +# +# - Possible format options: +# => highest Selects the value with the highest weight, from all values +# held by or inherited by the player. +# +# => lowest Same as above, except takes the one with the lowest weight. +# +# => highest_own Selects the value with the highest weight, but will not +# accept any inherited values. +# +# => lowest_own Same as above, except takes the value with the lowest weight. +# +# => highest_inherited Selects the value with the highest weight, but will only +# accept inherited values. +# +# => lowest_inherited Same as above, except takes the value with the lowest weight. +# +# => highest_on_track_ Selects the value with the highest weight, but only if the +# value was inherited from a group on the given track. +# +# => lowest_on_track_ Same as above, except takes the value with the lowest weight. +# +# => highest_not_on_track_ Selects the value with the highest weight, but only if the +# value was inherited from a group not on the given track. +# +# => lowest_not_on_track_ Same as above, except takes the value with the lowest weight. +# +# => highest_from_group_ Selects the value with the highest weight, but only if the +# value was inherited from the given group. +# +# => lowest_from_group_ Same as above, except takes the value with the lowest weight. +# +# => highest_not_from_group_ Selects the value with the highest weight, but only if the +# value was not inherited from the given group. +# +# => lowest_not_from_group_ Same as above, except takes the value with the lowest weight. +meta-formatting: + prefix: + format: + - "highest" + duplicates: first-only + start-spacer: "" + middle-spacer: " " + end-spacer: "" + suffix: + format: + - "highest" + duplicates: first-only + start-spacer: "" + middle-spacer: " " + end-spacer: "" + + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | PERMISSION CALCULATION AND INHERITANCE | # +# | | # +# | Modify the way permission checks, meta lookups and inheritance resolutions are handled. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# The algorithm LuckPerms should use when traversing the "inheritance tree". +# +# - Possible options: +# => breadth-first See: https://en.wikipedia.org/wiki/Breadth-first_search +# => depth-first-pre-order See: https://en.wikipedia.org/wiki/Depth-first_search +# => depth-first-post-order See: https://en.wikipedia.org/wiki/Depth-first_search +inheritance-traversal-algorithm: depth-first-pre-order + +# If a final sort according to "inheritance rules" should be performed after the traversal algorithm +# has resolved the inheritance tree. +# +# "Inheritance rules" refers to things such as group weightings, primary group status, and the +# natural contextual ordering of the group nodes. +# +# Setting this to 'true' will allow for the inheritance rules to take priority over the structure of +# the inheritance tree. +# +# Effectively when this setting is 'true': the tree is flattened, and rules applied afterwards, +# and when this setting is 'false':, the rules are just applied during each step of the traversal. +post-traversal-inheritance-sort: false + +# Defines the mode used to determine whether a set of contexts are satisfied. +# +# - Possible options: +# => at-least-one-value-per-key Set A will be satisfied by another set B, if at least one of the +# key-value entries per key in A are also in B. +# => all-values-per-key Set A will be satisfied by another set B, if all key-value +# entries in A are also in B. +context-satisfy-mode: at-least-one-value-per-key + +# +----------------------------------------------------------------------------------------------+ # +# | Permission resolution settings | # +# +----------------------------------------------------------------------------------------------+ # + +# If users on this server should have their global permissions applied. +# When set to false, only server specific permissions will apply for users on this server +include-global: true + +# If users on this server should have their global world permissions applied. +# When set to false, only world specific permissions will apply for users on this server +include-global-world: true + +# If users on this server should have global (non-server specific) groups applied +apply-global-groups: true + +# If users on this server should have global (non-world specific) groups applied +apply-global-world-groups: true + +# +----------------------------------------------------------------------------------------------+ # +# | Meta lookup settings | # +# +----------------------------------------------------------------------------------------------+ # + +# Defines how meta values should be selected. +# +# - Possible options: +# => inheritance Selects the meta value that was inherited first +# => highest-number Selects the highest numerical meta value +# => lowest-number Selects the lowest numerical meta value +meta-value-selection-default: inheritance + +# Defines how meta values should be selected per key. +meta-value-selection: +# max-homes: highest-number + +# +----------------------------------------------------------------------------------------------+ # +# | Inheritance settings | # +# +----------------------------------------------------------------------------------------------+ # + +# If the plugin should apply wildcard permissions. +# +# - If set to true, LuckPerms will detect wildcard permissions, and resolve & apply all registered +# permissions matching the wildcard. +apply-wildcards: true + +# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard +# inheritance system. +# +# - That being: If a user has been granted "example", then the player should have also be +# automatically granted "example.function", "example.another", "example.deeper.nesting", +# and so on. +apply-sponge-implicit-wildcards: false + +# If the plugin should parse regex permissions. +# +# - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the +# node, and resolve & apply all registered permissions matching the regex. +apply-regex: true + +# If the plugin should complete and apply shorthand permissions. +# +# - If set to true, LuckPerms will detect and expand shorthand node patterns. +apply-shorthand: true + +# If the plugin should apply Bukkit child permissions. +# +# - Plugin authors can define custom permissions structures for their plugin, which will be resolved +# and used by LuckPerms if this setting is enabled. +apply-bukkit-child-permissions: true + +# If the plugin should apply Bukkit default permissions. +# +# - Plugin authors can define permissions which should be given to all users by default, or setup +# permissions which should/shouldn't be given to opped players. +# - If this option is set to false, LuckPerms will ignore these defaults. +apply-bukkit-default-permissions: true + +# If the plugin should apply attachment permissions. +# +# - Other plugins on the server are able to add their own "permission attachments" to players. +# - This allows them to grant players additional permissions which last until the end of the +# session, or until they're removed. +# - If this option is set to false, LuckPerms will not include these attachment permissions when +# considering if a player should have access to a certain permission. +apply-bukkit-attachment-permissions: true + +# +----------------------------------------------------------------------------------------------+ # +# | Extra settings | # +# +----------------------------------------------------------------------------------------------+ # + +# Allows you to set "aliases" for the worlds sent forward for context calculation. +# +# - These aliases are provided in addition to the real world name. Applied recursively. +# - Remove the comment characters for the default aliases to apply. +world-rewrite: +# world_nether: world +# world_the_end: world + +# Define special group weights for this server. +# +# - Group weights can also be applied directly to group data, using the setweight command. +# - This section allows weights to be set on a per-server basis. +group-weight: +# admin: 10 + + + + +# +----------------------------------------------------------------------------------------------+ # +# | | # +# | FINE TUNING OPTIONS | # +# | | # +# | A number of more niche settings for tweaking and changing behaviour. The section also | # +# | contains toggles for some more specialised features. It is only necessary to make changes to | # +# | these options if you want to fine-tune LuckPerms behaviour. | # +# | | # +# +----------------------------------------------------------------------------------------------+ # + +# +----------------------------------------------------------------------------------------------+ # +# | Server Operator (OP) settings | # +# +----------------------------------------------------------------------------------------------+ # + +# Controls whether server operators should exist at all. +# +# - When set to 'false', all players will be de-opped, and the /op and /deop commands will be +# disabled. +enable-ops: true + +# Enables or disables a special permission based system in LuckPerms for controlling OP status. +# +# - If set to true, any user with the permission "luckperms.autoop" will automatically be granted +# server operator status. This permission can be inherited, or set on specific servers/worlds, +# temporarily, etc. +# - Additionally, setting this to true will force the "enable-ops" option above to false. All users +# will be de-opped unless they have the permission node, and the op/deop commands will be +# disabled. +# - It is recommended that you use this option instead of assigning a single '*' permission. +auto-op: false + +# Defines if "opped" players should be able to use all LuckPerms commands by default. +# +# - Set to false to only allow users who have the permissions access to the commands +commands-allow-op: true + +# +----------------------------------------------------------------------------------------------+ # +# | Vault integration settings | # +# +----------------------------------------------------------------------------------------------+ # + +# If Vault lookups for offline players on the main server thread should be enabled. +# +# LuckPerms has a "catch" for plugins attempting to perform unsafe offline player data lookups +# from the main server thread. This catch raises an exception (causes an error to occur) when unsafe +# lookups are made, instead of allowing the lookup to happen, which would likely cause the server +# to lag. +# +# However, if you're willing to accept the consequences, the catch can be disabled by setting this +# option to 'true. +vault-unsafe-lookups: false + +# Controls which group LuckPerms should use for NPC players when handling Vault requests. +# +# - As NPCs aren't actually real players, LuckPerms does not load any user data for them. This +# becomes an issue when plugins want to check for their permissions using Vault. +# - As a solution, Vault checks for NPCs fallback to a group, which is defined below. +vault-npc-group: default + +# Controls how LuckPerms should consider the OP status of NPC players when handing Vault requests. +# +# - If you want NPCs to have the same permissions as "normal" players, set this option to false. +# - If you want NPCs to have OP status, set this option to true. +vault-npc-op-status: false + +# If the vault-server option below should be used. +# +# - When this option is set to false, the server value defined above under "server" is used. +use-vault-server: false + +# The name of the server used within Vault operations. +# +# - If you don't want Vault operations to be server specific, set this to "global". +# - Will only take effect if use-vault-server is set to true above. +vault-server: global + +# If global permissions should be considered when retrieving meta or player groups +vault-include-global: true + +# If Vault operations should ignore any world arguments if supplied. +vault-ignore-world: false + +# +----------------------------------------------------------------------------------------------+ # +# | Miscellaneous (and rarely used) settings | # +# +----------------------------------------------------------------------------------------------+ # + +# If LuckPerms should produce extra logging output when it handles logins. +# +# - Useful if you're having issues with UUID forwarding or data not being loaded. +debug-logins: false + +# If LuckPerms should allow usernames with non alphanumeric characters. +# +# - Note that due to the design of the storage implementation, usernames must still be 16 characters +# or less. +allow-invalid-usernames: false + +# If LuckPerms should allow a users primary group to be removed with the 'parent remove' command. +# +# - When this happens, the plugin will set their primary group back to default. +prevent-primary-group-removal: false + +# If LuckPerms should update the list of commands sent to the client when permissions are changed. +update-client-command-list: true + +# If LuckPerms should attempt to resolve Vanilla command target selectors for LP commands. +# See here for more info: https://minecraft.gamepedia.com/Commands#Target_selectors +resolve-command-selectors: false diff --git a/live-server/plugins/LuckPerms/contexts.json b/live-server/plugins/LuckPerms/contexts.json new file mode 100755 index 0000000..b8d7b61 --- /dev/null +++ b/live-server/plugins/LuckPerms/contexts.json @@ -0,0 +1,4 @@ +{ + "static-contexts": {}, + "default-contexts": {} +} \ No newline at end of file diff --git a/live-server/plugins/LuckPerms/editor-keystore.json b/live-server/plugins/LuckPerms/editor-keystore.json new file mode 100755 index 0000000..0f4e3a4 --- /dev/null +++ b/live-server/plugins/LuckPerms/editor-keystore.json @@ -0,0 +1,8 @@ +{ + "_comment": "This file stores a list of trusted editor public keys", + "consoleKeys": [ + "Wa+fLXEONrjOYECIG40KjWpPodI=", + "seVUcU84toZJkTedX7vm0sGwvKM=", + "LzZhq2R3gimo/iQk69RzdvMmdWA=" + ] +} \ No newline at end of file diff --git a/live-server/plugins/MarriageMaster/config.yml b/live-server/plugins/MarriageMaster/config.yml new file mode 100644 index 0000000..eef0618 --- /dev/null +++ b/live-server/plugins/MarriageMaster/config.yml @@ -0,0 +1,294 @@ +# MarriageMaster Config File + +# Language Settings +Language: + # Defines the used language and the corresponding file used. The corresponding language file will be placed next to the config.yml named: .yml + Language: en + # Options: + # Overwrite (deletes all changes from the file and extracts a new language file) + # Upgrade (extracts a new language file and copy's all settings from the old language file) + # Update (adds the default (english) text values for all missing values, just some basic formatting) + UpdateMode: Upgrade + +# Database Settings +Database: + # SQLite = data stored in SQLite file, MySQL = data stored in MySQL database (see selection below), Shared = use shared connection pool from PCGF PluginLib + Type: SQLite + # Defines the storage format for UUIDs for compatibility with other plugins (shared user table). + # true: format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + # false: format: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + UseUUIDSeparators: false + # Options: auto, online, offline | auto will decide based on the server online mode option. + # If you are using BungeeCord, set it to whatever you use on your BungeeCord server!!! + UUID_Type: auto + SQL: + Host: 'localhost' + Database: 'minecraft' + User: 'minecraft' + Password: 'minecraft' + # The max amount of connections to the database the connection pool will open. + # You may want to adjust this setting based on the load of your database server and the amount of players. + MaxConnections: 2 + # Allows to set the connection properties. + # Properties: ["useSSL=false"] + Properties: [] + Tables: + User: marry_players + Partner: marry_partners + Home: marry_home + Priests: marry_priests + # Settings controlling the cache behavior of the plugin. You might be able to optimize it a little bit depending on your player count, ram or cpu bottlenecks. + Cache: + UnCache: + # The strategy used to uncache offline players. Options + # interval (offline players get uncached every x seconds) + # intervalChecked (like interval, but also ensures that the player is already offline for at lest the interval time) + # ondisconnect (player instantly gets uncached as soon as he disconnects from the server, may adds overhead if other plugins try to access the player data when they go offline, also it may be problematic for players with unstable connections) + # ondisconnectdelayed (player gets uncached x seconds after he went offline, adds overhead on disconnect, you shouldn't use this with a lot of players joining and leaving.) + Strategy: interval + # Used for the interval based uncaching algorithms. Also used as delay for ondisconnectdelayed. Value in seconds. Default: 600 = 10 minutes + Interval: 600 + Delay: 600 + +Marriage: + # Defines if players need to get married by a priest or if they can marry each other on their own. + RequirePriest: false + # This option defines if a priest is needed to divorce 2 players or if they can divorce on their own. + # Options: true, false, auto (auto will copy the RequirePriest value) + DivorceRequiresPriest: auto + # Max numbers of partners that a player can have. Values < 1 disable the limit. + MaxPartners: 1 + # This setting disables the "/marry setpriest" command players can still be promoted to a priest with the "marry.priest" permission. + DisableSetPriestCommand: false + Surnames: + Enable: false + Force: false + # Surname requirements + AllowColors: false + AllowedCharacters: A-Za-z + BannedNames: [] + # Values below 3 will be set to 3 + MinLength: 3 + # Values below the in length will be set to the min length + MaxLength: 16 + # Options: None, Player, BothPlayers + Confirmation: None + # Defines if marriages should be announced to all players. + AnnounceOnMarriage: false + # Defines if divorces should be announced to all players. auto mirrors the AnnounceOnMarriage setting + AnnounceOnDivorce: auto + Confirmation: + Enable: true + AutoDialog: true + BothPlayersOnDivorce: false + OtherPlayerOnSelfDivorce: false + +InfoOnPartnerJoinLeave: + Enable: false + # Delay for online partners info on join. In seconds + JoinDelay: 0 + +# The prefix/suffix options do not work with all chat plugins! +# If your chat plugin support placeholder APIs it would be better to use them! More details: https://github.com/GeorgH93/MarriageMaster/wiki/Placeholders +Prefix: + Enable: false + # Placeholders: {Surname}, {PartnerName}, {PartnerDisplayName}, {StatusHeart}, {MagicHeart} + String: "{PartnerName}" + OnLineBeginning: true +Suffix: + Enable: false + # Placeholders: {Surname}, {PartnerName}, {PartnerDisplayName}, {StatusHeart}, {MagicHeart} + String: "{Surname}" + +Gift: + Enable: true + AllowedGameModesAllowed: [ "SURVIVAL" ] + AllowedGameModesReceive: [ "SURVIVAL" ] + # List of worlds where players can't receive gifts + BlacklistedWorlds: [] + # If this option is enabled the partner has to accept the gift. + RequireConfirmation: false + ItemFilter: + # Enables the item filter. Make sure to define items to be filtered. + Enabled: false + # Changes the filter mode, either blacklist (only unlisted materials are allowed) or whitelist (only listed materials are allowed) + Mode: blacklist + # Filter lists bellow. An item will be blocked (in blacklist mode) or allowed (in whitelist mode) if it matches on of the given filters. + # List of materials that should be filtered. Can be name or id (id only for MC versions older than 1.13!). + Materials: [ ] + # List of names that should be filtered. Must match the display name of the item exactly. & color codes will be converted automatically. + Names: [ ] + # List of lore that should be filtered. Can be a single line or all lines of the lore. + Lore: [ ] + +Kiss: + # Enables the kiss command + Enable: true + # Enables kissing by sneak + right click + EnableInteract: true + # Time between two kisses in seconds, 0 to disable cooldown + WaitTime: 1 + # How many hearths should be spawned + HearthCount: 50 + +Hug: + # Enables the hug command + Enable: true + # Time between two hugs in seconds, 0 to disable cooldown + WaitTime: 10 + # How many particles should be spawned, 0 to disable + ParticleCount: 25 + +List: + UseFooter: true + EntriesPerPage: 8 + +PvP: + AllowBlocking: true + +BonusXp: + Enable: true + # Values less or equals 1 will disable the bonus xp, but still allows to split xp between players + Multiplier: 2 + # If enabled the picked up xp will be split between both players. So each player will receive (xp * multiplier / 2) xp + SplitXpOnPickup: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXpOnPickup is enabled. + SplitWithAllPartnersInRange: false + SkillAPI: + Enable: false + # List of sources that should be excluded from the xp boost. The command source is always excluded! + ExcludeSources: [] + Multiplier: 2 + # If split is enabled the multiplied amount will be split between both partners. So each player will receive (xp * multiplier / 2) xp + SplitXp: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXp is enabled. + SplitWithAllPartnersInRange: false + McMMO: + Enable: false + Multiplier: 2 + # If split is enabled the multiplied amount will be split between both partners. So each player will receive (xp * multiplier / 2) xp + SplitXp: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXp is enabled. + SplitWithAllPartnersInRange: false + # List of sources that should be excluded from the xp boost. + ExcludeSources: [ "COMMAND" ] + # List of skills that should be excluded from the xp boost. + ExcludeSkills: [] + AuraSkills: + Enable: false + # List of sources that should be excluded from the xp boost. The command source is always excluded! + ExcludeSources: [] + ExcludeSkills: [] + Multiplier: 2 + # If split is enabled the multiplied amount will be split between both partners. So each player will receive (xp * multiplier / 2) xp + SplitXp: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXp is enabled. + SplitWithAllPartnersInRange: false + Jobs: + Enable: false + Multiplier: 2 + SplitXp: true + ExcludeJobs: [] + +HealthRegain: + Enable: true + Multiplier: 2 + # List of worlds where players can't receive health regain bonus + BlacklistedWorlds: [] + +Chat: + Enabled: true + AllowSurveillance: false + +# Ranges for actions +# -1 no range limit and no world limit, 0 no range limit but in the same world, >= 1 range limit in meters/blocks +Range: + Marry: 25 + Divorce: 25 + Backpack: 5 + Gift: 0 + Kiss: 2 + KissInteract: 5 + Hug: 2 + HearthVisible: 128 + HugParticleVisible: 128 + BonusXP: 10 + Heal: 3 + +# These settings will be used for all teleports (home and to partner) +Teleport: + Delay: false + # Time in seconds + DelayTime: 3 + # List of worlds where you can/can't teleport to (based on FilterMode) + FilteredWorlds: [] + # Defines how the FilteredWorlds will be treated, block = prevent players from teleporting to these worlds; allow = allows players to teleport to only these worlds + FilterMode: "block" + # This option controls whether a safety check is performed before the player is teleported. + CheckSafety: true + # This option controls whether the plugin attempts to find a safe location if the safety check failed. Enabling this might allow the play to glitch through walls. + FindSafeLocation: false + # If this option is enabled the partner has to accept the teleport request before the player will be teleported. Only applicable for teleporting to another player. + RequireConfirmation: false + +# Config options for sharing backpacks between partners +# Currently the only supported backpack plugin is Minepacks +BackpackShare: + # Enables the backpack sharing feature (with supported plugins) + Enable: true + +Economy: + Enable: false + # Each of the two players will have to pay half of the amount. Example: cost=100 -> player_a has to pay 50 and player_b has to pay 50 + Marry: 100.0 + # Each of the two players will have to pay half of the amount. Example: cost=100 -> player_a has to pay 50 and player_b has to pay 50 + Divorce: 100.0 + Tp: 25.0 + Gift: 10.0 + HomeTp: 25.0 + SetHome: 100.0 + ChangeSurname: 0 + +# Allows the execution of commands on certain events related to the marriage +CommandExecutor: + Enable: false + # General information about the command executor: + # The commands can contain placeholders in the format {PlaceholderName} (The {} is part of the name. The available placeholders are listed right about the event). + # Every event can execute multiple commands in the list. Commands do not have to start with / ! + # Commands to be executed: + # Will be executed when two players marry, without a priest + # Allowed placeholders: {Player1}, {Player2} + # OnMarry: [ "eco give {Player1} 100", "pex user {Player2} add example.perm" ] + OnMarry: [] + # Will be executed when two players marry by a priest + # Allowed placeholders: {Player1}, {Player2}, {Priest} + OnMarryWithPriest: [] + # Will be executed when two players get divorced, without a priest + # Allowed placeholders: {Player1}, {Player2} + OnDivorce: [] + # Will be executed when two players get divorced through a priest + # Allowed placeholders: {Player1}, {Player2}, {Priest} + OnDivorceWithPriest: [] + +# The command that should be used if no sub-command was used. +# Options: help (/marry help), custom_help (will display the messages defined in the language file in Language.Ingame.Help.CustomHelp) +DefaultCommand: "help" +# The marriage color is used for the magic/colored heart and is set to a random value by default. +AllowPlayersToChangeMarriageColor: true + +Sound: + # Global setting if sounds should be used. Each sound effect can be disabled individually by setting it to 'DISABLED'. + Enable: true + Married: ORB_PICKUP + Divorced: ORB_PICKUP + +Misc: + AutoUpdate: + # When auto update is disabled you still can use the build in update function manually with /marry update + Enable: true + Channel: Release + # Enable this option if you are in a BungeeCord environment. Please also install the plugin on your BungeeCord server to allow the data to be synchronized across all your servers. + UseBungeeCord: false + +# Config File Version. Don't touch it! +Version: 109 \ No newline at end of file diff --git a/live-server/plugins/MarriageMaster/config.yml.old_v107 b/live-server/plugins/MarriageMaster/config.yml.old_v107 new file mode 100755 index 0000000..274a101 --- /dev/null +++ b/live-server/plugins/MarriageMaster/config.yml.old_v107 @@ -0,0 +1,274 @@ +# MarriageMaster Config File + +# Language Settings +Language: + # Defines the used language and the corresponding file used. The corresponding language file will be placed next to the config.yml named: .yml + Language: en + # Options: + # Overwrite (deletes all changes from the file and extracts a new language file) + # Upgrade (extracts a new language file and copy's all settings from the old language file) + # Update (adds the default (english) text values for all missing values, just some basic formatting) + UpdateMode: Upgrade + +# Database Settings +Database: + # SQLite = data stored in SQLite file, MySQL = data stored in MySQL database (see selection below), Shared = use shared connection pool from PCGF PluginLib + Type: SQLite + # Defines the storage format for UUIDs for compatibility with other plugins (shared user table). + # true: format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + # false: format: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + UseUUIDSeparators: false + # Options: auto, online, offline | auto will decide based on the server online mode option. + # If you are using BungeeCord, set it to whatever you use on your BungeeCord server!!! + UUID_Type: auto + SQL: + Host: 'localhost' + Database: 'minecraft' + User: 'minecraft' + Password: 'minecraft' + # The max amount of connections to the database the connection pool will open. + # You may want to adjust this setting based on the load of your database server and the amount of players. + MaxConnections: 2 + # Allows to set the connection properties. + # Properties: ["useSSL=false"] + Properties: [] + Tables: + User: marry_players + Partner: marry_partners + Home: marry_home + Priests: marry_priests + # Settings controlling the cache behavior of the plugin. You might be able to optimize it a little bit depending on your player count, ram or cpu bottlenecks. + Cache: + UnCache: + # The strategy used to uncache offline players. Options + # interval (offline players get uncached every x seconds) + # intervalChecked (like interval, but also ensures that the player is already offline for at lest the interval time) + # ondisconnect (player instantly gets uncached as soon as he disconnects from the server, may adds overhead if other plugins try to access the player data when they go offline, also it may be problematic for players with unstable connections) + # ondisconnectdelayed (player gets uncached x seconds after he went offline, adds overhead on disconnect, you shouldn't use this with a lot of players joining and leaving.) + Strategy: interval + # Used for the interval based uncaching algorithms. Also used as delay for ondisconnectdelayed. Value in seconds. Default: 600 = 10 minutes + Interval: 600 + Delay: 600 + +Marriage: + # Defines if players need to get married by a priest or if they can marry each other on their own. + RequirePriest: false + # This option defines if a priest is needed to divorce 2 players or if they can divorce on their own. + # Options: true, false, auto (auto will copy the RequirePriest value) + DivorceRequiresPriest: auto + # Max numbers of partners that a player can have. Values < 1 disable the limit. + MaxPartners: 1 + # This setting disables the "/marry setpriest" command players can still be promoted to a priest with the "marry.priest" permission. + DisableSetPriestCommand: false + Surnames: + Enable: false + Force: false + # Surname requirements + AllowColors: false + AllowedCharacters: A-Za-z + # Values below 3 will be set to 3 + MinLength: 3 + # Values below the in length will be set to the min length + MaxLength: 16 + # Defines if marriages should be announced to all players. + AnnounceOnMarriage: false + # Defines if divorces should be announced to all players. auto mirrors the AnnounceOnMarriage setting + AnnounceOnDivorce: auto + Confirmation: + Enable: true + AutoDialog: true + BothPlayersOnDivorce: false + OtherPlayerOnSelfDivorce: false + +InfoOnPartnerJoinLeave: + Enable: false + # Delay for online partners info on join. In seconds + JoinDelay: 0 + +# The prefix/suffix options do not work with all chat plugins! +# If your chat plugin support placeholder APIs it would be better to use them! More details: https://github.com/GeorgH93/MarriageMaster/wiki/Placeholders +Prefix: + Enable: false + # Placeholders: {Surname}, {PartnerName}, {PartnerDisplayName}, {StatusHeart}, {MagicHeart} + String: "{PartnerName}" + OnLineBeginning: true +Suffix: + Enable: false + # Placeholders: {Surname}, {PartnerName}, {PartnerDisplayName}, {StatusHeart}, {MagicHeart} + String: "{Surname}" + +Gift: + Enable: true + AllowedGameModesAllowed: [ "SURVIVAL" ] + AllowedGameModesReceive: [ "SURVIVAL" ] + # List of worlds where players can't receive gifts + BlacklistedWorlds: [] + # If this option is enabled the partner has to accept the gift. + RequireConfirmation: false + ItemFilter: + # Enables the item filter. Make sure to define items to be filtered. + Enabled: false + # Changes the filter mode, either blacklist (only unlisted materials are allowed) or whitelist (only listed materials are allowed) + Mode: blacklist + # Filter lists bellow. An item will be blocked (in blacklist mode) or allowed (in whitelist mode) if it matches on of the given filters. + # List of materials that should be filtered. Can be name or id (id only for MC versions older than 1.13!). + Materials: [ ] + # List of names that should be filtered. Must match the display name of the item exactly. & color codes will be converted automatically. + Names: [ ] + # List of lore that should be filtered. Can be a single line or all lines of the lore. + Lore: [ ] + +Kiss: + # Enables the kiss command + Enable: true + # Enables kissing by sneak + right click + EnableInteract: true + # Time between two kisses in seconds, 0 to disable cooldown + WaitTime: 1 + # How many hearths should be spawned + HearthCount: 50 + +Hug: + # Enables the hug command + Enable: true + # Time between two hugs in seconds, 0 to disable cooldown + WaitTime: 10 + # How many particles should be spawned, 0 to disable + ParticleCount: 25 + +List: + UseFooter: true + EntriesPerPage: 8 + +PvP: + AllowBlocking: true + +BonusXp: + Enable: true + # Values less or equals 1 will disable the bonus xp, but still allows to split xp between players + Multiplier: 2 + # If enabled the picked up xp will be split between both players. So each player will receive (xp * multiplier / 2) xp + SplitXpOnPickup: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXpOnPickup is enabled. + SplitWithAllPartnersInRange: false + SkillAPI: + Enable: false + # List of sources that should be excluded from the xp boost. The command source is always excluded! + ExcludeSources: [] + Multiplier: 2 + # If split is enabled the multiplied amount will be split between both partners. So each player will receive (xp * multiplier / 2) xp + SplitXp: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXp is enabled. + SplitWithAllPartnersInRange: false + McMMO: + Enable: false + Multiplier: 2 + # If split is enabled the multiplied amount will be split between both partners. So each player will receive (xp * multiplier / 2) xp + SplitXp: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXp is enabled. + SplitWithAllPartnersInRange: false + # List of sources that should be excluded from the xp boost. + ExcludeSources: [ "COMMAND" ] + # List of skills that should be excluded from the xp boost. + ExcludeSkills: [] + +HealthRegain: + Enable: true + Multiplier: 2 + # List of worlds where players can't receive health regain bonus + BlacklistedWorlds: [] + +Chat: + Enabled: true + AllowSurveillance: false + +# Ranges for actions +# -1 no range limit and no world limit, 0 no range limit but in the same world, >= 1 range limit in meters/blocks +Range: + Marry: 25 + Divorce: 25 + Backpack: 5 + Gift: 0 + Kiss: 2 + KissInteract: 5 + Hug: 2 + HearthVisible: 128 + HugParticleVisible: 128 + BonusXP: 10 + Heal: 3 + +# These settings will be used for all teleports (home and to partner) +Teleport: + Delay: false + # Time in seconds + DelayTime: 3 + # List of worlds where you can't teleport to + BlacklistedWorlds: [] + # This option controls whether a safety check is performed before the player is teleported. + CheckSafety: true + # This option controls whether the plugin attempts to find a safe location if the safety check failed. Enabling this might allow the play to glitch through walls. + FindSafeLocation: false + # If this option is enabled the partner has to accept the teleport request before the player will be teleported. Only applicable for teleporting to another player. + RequireConfirmation: false + +# Config options for sharing backpacks between partners +# Currently the only supported backpack plugin is Minepacks +BackpackShare: + # Enables the backpack sharing feature (with supported plugins) + Enable: true + +Economy: + Enable: false + # Each of the two players will have to pay half of the amount. Example: cost=100 -> player_a has to pay 50 and player_b has to pay 50 + Marry: 100.0 + # Each of the two players will have to pay half of the amount. Example: cost=100 -> player_a has to pay 50 and player_b has to pay 50 + Divorce: 100.0 + Tp: 25.0 + Gift: 10.0 + HomeTp: 25.0 + SetHome: 100.0 + ChangeSurname: 0 + +# Allows the execution of commands on certain events related to the marriage +CommandExecutor: + Enable: false + # General information about the command executor: + # The commands can contain placeholders in the format {PlaceholderName} (The {} is part of the name. The available placeholders are listed right about the event). + # Every event can execute multiple commands in the list. Commands do not have to start with / ! + # Commands to be executed: + # Will be executed when two players marry, without a priest + # Allowed placeholders: {Player1}, {Player2} + # OnMarry: [ "eco give {Player1} 100", "pex user {Player2} add example.perm" ] + OnMarry: [] + # Will be executed when two players marry by a priest + # Allowed placeholders: {Player1}, {Player2}, {Priest} + OnMarryWithPriest: [] + # Will be executed when two players get divorced, without a priest + # Allowed placeholders: {Player1}, {Player2} + OnDivorce: [] + # Will be executed when two players get divorced through a priest + # Allowed placeholders: {Player1}, {Player2}, {Priest} + OnDivorceWithPriest: [] + +# The command that should be used if no sub-command was used. +# Options: help (/marry help), custom_help (will display the messages defined in the language file in Language.Ingame.Help.CustomHelp) +DefaultCommand: "help" +# The marriage color is used for the magic/colored heart and is set to a random value by default. +AllowPlayersToChangeMarriageColor: true + +Sound: + # Global setting if sounds should be used. Each sound effect can be disabled individually by setting it to 'DISABLED'. + Enable: true + Married: ORB_PICKUP + Divorced: ORB_PICKUP + +Misc: + AutoUpdate: + # When auto update is disabled you still can use the build in update function manually with /marry update + Enable: true + Channel: Release + # Enable this option if you are in a BungeeCord environment. Please also install the plugin on your BungeeCord server to allow the data to be synchronized across all your servers. + UseBungeeCord: false + +# Config File Version. Don't touch it! +Version: 107 \ No newline at end of file diff --git a/live-server/plugins/MarriageMaster/config.yml.old_v108 b/live-server/plugins/MarriageMaster/config.yml.old_v108 new file mode 100755 index 0000000..c794eb4 --- /dev/null +++ b/live-server/plugins/MarriageMaster/config.yml.old_v108 @@ -0,0 +1,279 @@ +# MarriageMaster Config File + +# Language Settings +Language: + # Defines the used language and the corresponding file used. The corresponding language file will be placed next to the config.yml named: .yml + Language: en + # Options: + # Overwrite (deletes all changes from the file and extracts a new language file) + # Upgrade (extracts a new language file and copy's all settings from the old language file) + # Update (adds the default (english) text values for all missing values, just some basic formatting) + UpdateMode: Upgrade + +# Database Settings +Database: + # SQLite = data stored in SQLite file, MySQL = data stored in MySQL database (see selection below), Shared = use shared connection pool from PCGF PluginLib + Type: SQLite + # Defines the storage format for UUIDs for compatibility with other plugins (shared user table). + # true: format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + # false: format: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + UseUUIDSeparators: false + # Options: auto, online, offline | auto will decide based on the server online mode option. + # If you are using BungeeCord, set it to whatever you use on your BungeeCord server!!! + UUID_Type: auto + SQL: + Host: 'localhost' + Database: 'minecraft' + User: 'minecraft' + Password: 'minecraft' + # The max amount of connections to the database the connection pool will open. + # You may want to adjust this setting based on the load of your database server and the amount of players. + MaxConnections: 2 + # Allows to set the connection properties. + # Properties: ["useSSL=false"] + Properties: [] + Tables: + User: marry_players + Partner: marry_partners + Home: marry_home + Priests: marry_priests + # Settings controlling the cache behavior of the plugin. You might be able to optimize it a little bit depending on your player count, ram or cpu bottlenecks. + Cache: + UnCache: + # The strategy used to uncache offline players. Options + # interval (offline players get uncached every x seconds) + # intervalChecked (like interval, but also ensures that the player is already offline for at lest the interval time) + # ondisconnect (player instantly gets uncached as soon as he disconnects from the server, may adds overhead if other plugins try to access the player data when they go offline, also it may be problematic for players with unstable connections) + # ondisconnectdelayed (player gets uncached x seconds after he went offline, adds overhead on disconnect, you shouldn't use this with a lot of players joining and leaving.) + Strategy: interval + # Used for the interval based uncaching algorithms. Also used as delay for ondisconnectdelayed. Value in seconds. Default: 600 = 10 minutes + Interval: 600 + Delay: 600 + +Marriage: + # Defines if players need to get married by a priest or if they can marry each other on their own. + RequirePriest: false + # This option defines if a priest is needed to divorce 2 players or if they can divorce on their own. + # Options: true, false, auto (auto will copy the RequirePriest value) + DivorceRequiresPriest: auto + # Max numbers of partners that a player can have. Values < 1 disable the limit. + MaxPartners: 1 + # This setting disables the "/marry setpriest" command players can still be promoted to a priest with the "marry.priest" permission. + DisableSetPriestCommand: false + Surnames: + Enable: false + Force: false + # Surname requirements + AllowColors: false + AllowedCharacters: A-Za-z + BannedNames: [] + # Values below 3 will be set to 3 + MinLength: 3 + # Values below the in length will be set to the min length + MaxLength: 16 + # Options: None, Player, BothPlayers + Confirmation: None + # Defines if marriages should be announced to all players. + AnnounceOnMarriage: false + # Defines if divorces should be announced to all players. auto mirrors the AnnounceOnMarriage setting + AnnounceOnDivorce: auto + Confirmation: + Enable: true + AutoDialog: true + BothPlayersOnDivorce: false + OtherPlayerOnSelfDivorce: false + +InfoOnPartnerJoinLeave: + Enable: false + # Delay for online partners info on join. In seconds + JoinDelay: 0 + +# The prefix/suffix options do not work with all chat plugins! +# If your chat plugin support placeholder APIs it would be better to use them! More details: https://github.com/GeorgH93/MarriageMaster/wiki/Placeholders +Prefix: + Enable: false + # Placeholders: {Surname}, {PartnerName}, {PartnerDisplayName}, {StatusHeart}, {MagicHeart} + String: "{PartnerName}" + OnLineBeginning: true +Suffix: + Enable: false + # Placeholders: {Surname}, {PartnerName}, {PartnerDisplayName}, {StatusHeart}, {MagicHeart} + String: "{Surname}" + +Gift: + Enable: true + AllowedGameModesAllowed: [ "SURVIVAL" ] + AllowedGameModesReceive: [ "SURVIVAL" ] + # List of worlds where players can't receive gifts + BlacklistedWorlds: [] + # If this option is enabled the partner has to accept the gift. + RequireConfirmation: false + ItemFilter: + # Enables the item filter. Make sure to define items to be filtered. + Enabled: false + # Changes the filter mode, either blacklist (only unlisted materials are allowed) or whitelist (only listed materials are allowed) + Mode: blacklist + # Filter lists bellow. An item will be blocked (in blacklist mode) or allowed (in whitelist mode) if it matches on of the given filters. + # List of materials that should be filtered. Can be name or id (id only for MC versions older than 1.13!). + Materials: [ ] + # List of names that should be filtered. Must match the display name of the item exactly. & color codes will be converted automatically. + Names: [ ] + # List of lore that should be filtered. Can be a single line or all lines of the lore. + Lore: [ ] + +Kiss: + # Enables the kiss command + Enable: true + # Enables kissing by sneak + right click + EnableInteract: true + # Time between two kisses in seconds, 0 to disable cooldown + WaitTime: 1 + # How many hearths should be spawned + HearthCount: 50 + +Hug: + # Enables the hug command + Enable: true + # Time between two hugs in seconds, 0 to disable cooldown + WaitTime: 10 + # How many particles should be spawned, 0 to disable + ParticleCount: 25 + +List: + UseFooter: true + EntriesPerPage: 8 + +PvP: + AllowBlocking: true + +BonusXp: + Enable: true + # Values less or equals 1 will disable the bonus xp, but still allows to split xp between players + Multiplier: 2 + # If enabled the picked up xp will be split between both players. So each player will receive (xp * multiplier / 2) xp + SplitXpOnPickup: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXpOnPickup is enabled. + SplitWithAllPartnersInRange: false + SkillAPI: + Enable: false + # List of sources that should be excluded from the xp boost. The command source is always excluded! + ExcludeSources: [] + Multiplier: 2 + # If split is enabled the multiplied amount will be split between both partners. So each player will receive (xp * multiplier / 2) xp + SplitXp: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXp is enabled. + SplitWithAllPartnersInRange: false + McMMO: + Enable: false + Multiplier: 2 + # If split is enabled the multiplied amount will be split between both partners. So each player will receive (xp * multiplier / 2) xp + SplitXp: true + # If enabled the xp will be split with all partners that are in range. So each player will receive (xp * multiplier / count_partners_in_range) xp. Requires that SplitXp is enabled. + SplitWithAllPartnersInRange: false + # List of sources that should be excluded from the xp boost. + ExcludeSources: [ "COMMAND" ] + # List of skills that should be excluded from the xp boost. + ExcludeSkills: [] + +HealthRegain: + Enable: true + Multiplier: 2 + # List of worlds where players can't receive health regain bonus + BlacklistedWorlds: [] + +Chat: + Enabled: true + AllowSurveillance: false + +# Ranges for actions +# -1 no range limit and no world limit, 0 no range limit but in the same world, >= 1 range limit in meters/blocks +Range: + Marry: 25 + Divorce: 25 + Backpack: 5 + Gift: 0 + Kiss: 2 + KissInteract: 5 + Hug: 2 + HearthVisible: 128 + HugParticleVisible: 128 + BonusXP: 10 + Heal: 3 + +# These settings will be used for all teleports (home and to partner) +Teleport: + Delay: false + # Time in seconds + DelayTime: 3 + # List of worlds where you can/can't teleport to (based on FilterMode) + FilteredWorlds: [] + # Defines how the FilteredWorlds will be treated, block = prevent players from teleporting to these worlds; allow = allows players to teleport to only these worlds + FilterMode: "block" + # This option controls whether a safety check is performed before the player is teleported. + CheckSafety: true + # This option controls whether the plugin attempts to find a safe location if the safety check failed. Enabling this might allow the play to glitch through walls. + FindSafeLocation: false + # If this option is enabled the partner has to accept the teleport request before the player will be teleported. Only applicable for teleporting to another player. + RequireConfirmation: false + +# Config options for sharing backpacks between partners +# Currently the only supported backpack plugin is Minepacks +BackpackShare: + # Enables the backpack sharing feature (with supported plugins) + Enable: true + +Economy: + Enable: false + # Each of the two players will have to pay half of the amount. Example: cost=100 -> player_a has to pay 50 and player_b has to pay 50 + Marry: 100.0 + # Each of the two players will have to pay half of the amount. Example: cost=100 -> player_a has to pay 50 and player_b has to pay 50 + Divorce: 100.0 + Tp: 25.0 + Gift: 10.0 + HomeTp: 25.0 + SetHome: 100.0 + ChangeSurname: 0 + +# Allows the execution of commands on certain events related to the marriage +CommandExecutor: + Enable: false + # General information about the command executor: + # The commands can contain placeholders in the format {PlaceholderName} (The {} is part of the name. The available placeholders are listed right about the event). + # Every event can execute multiple commands in the list. Commands do not have to start with / ! + # Commands to be executed: + # Will be executed when two players marry, without a priest + # Allowed placeholders: {Player1}, {Player2} + # OnMarry: [ "eco give {Player1} 100", "pex user {Player2} add example.perm" ] + OnMarry: [] + # Will be executed when two players marry by a priest + # Allowed placeholders: {Player1}, {Player2}, {Priest} + OnMarryWithPriest: [] + # Will be executed when two players get divorced, without a priest + # Allowed placeholders: {Player1}, {Player2} + OnDivorce: [] + # Will be executed when two players get divorced through a priest + # Allowed placeholders: {Player1}, {Player2}, {Priest} + OnDivorceWithPriest: [] + +# The command that should be used if no sub-command was used. +# Options: help (/marry help), custom_help (will display the messages defined in the language file in Language.Ingame.Help.CustomHelp) +DefaultCommand: "help" +# The marriage color is used for the magic/colored heart and is set to a random value by default. +AllowPlayersToChangeMarriageColor: true + +Sound: + # Global setting if sounds should be used. Each sound effect can be disabled individually by setting it to 'DISABLED'. + Enable: true + Married: ORB_PICKUP + Divorced: ORB_PICKUP + +Misc: + AutoUpdate: + # When auto update is disabled you still can use the build in update function manually with /marry update + Enable: true + Channel: Release + # Enable this option if you are in a BungeeCord environment. Please also install the plugin on your BungeeCord server to allow the data to be synchronized across all your servers. + UseBungeeCord: false + +# Config File Version. Don't touch it! +Version: 108 \ No newline at end of file diff --git a/live-server/plugins/MarriageMaster/lang/en.yml b/live-server/plugins/MarriageMaster/lang/en.yml new file mode 100644 index 0000000..23b6149 --- /dev/null +++ b/live-server/plugins/MarriageMaster/lang/en.yml @@ -0,0 +1,507 @@ +# To simplify the customisation and the translation process please check out the editor: https://ptp.pcgamingfreaks.at +Language: + NotFromConsole: "&cThis command can't be used from the console!" + # Global Wildcards: and + Ingame: + NoPermission: "&cYou don't have the permission to do that." + NaN: "&cThe entered value is not a number!" + NotMarried: "&cYou are not married." + PartnerOffline: "&cYour partner is offline." + PartnerNotInRange: "&cYour partner is too far away." + TargetPartnerNotFound: "&cYour targeted partner was not found!" + PlayerNotMarried: "&c\"{PlayerName}\" is not married!" + PlayerNotFound: "&cCouldn't find \"{PlayerName}\"!" + PlayerNotOnline: "&c\"{PlayerName}\" is offline!" + PlayersNotMarried: "&cThe players aren't married!" + MarriageNotExact: "&cWe are sorry, but there is more than one marriage matching your request!" + JoinLeaveInfo: + # Only used for players with 1 partner + PartnerOnline: "&aYour partner is online." + # Only used for players with 1 partner + PartnerOffline: "&7Your partner is offline." + # Only used for players with more than 1 partner + AllPartnersOffline: "&7All your partners are offline." + # Only used for players with more than 1 partner + PartnerOnlineMulti: "&aFollowing partners are online: &r&f{OnlinePartners}" + # Placeholders: {Name}, {DisplayName}. Keep in mind display names can contain colors! No JSON!!! + MultiOnlineFormat: "{DisplayName}" + # No JSON!!! + MultiOnlineSeparator: "&r, " + # Placeholders: {Name}, {DisplayName} + PartnerNowOnline: "&aYour partner is now online." + # Placeholders: {Name}, {DisplayName} + PartnerNowOffline: "&7Your partner is now offline." + Backpack: + OnlyInSurvival: "&cYou can only access your partner's backpack when you are in survival mode." + ShareOn: "&aYou now share your backpack with your partner." + ShareOff: "&cYou are no longer sharing your backpack with your partner." + Opened: "&aYour partner has opened your backpack." + ShareDenied: "&cYour partner doesn't give you access to their backpack." + Chat: + Joined: "&aYou have set your chat to the private marry chat." + Left: "&aYou have set your chat to public chat." + ListeningStarted: "&aYou are now listening to the marry chat." + ListeningStopped: "&aYou are no longer listening to the marry chat." + TargetSet: "&aPrivate chat target set." + DisplayNameAll: "All Partners" + # Placeholders: {SenderDisplayName}, {SenderName}, {ReceiverDisplayName}, {ReceiverName}, {Message}, {MagicHeart} + Format: "{MagicHeart}&r {SenderDisplayName}&r&6 => &r{ReceiverDisplayName}&r&f: &r{Message}" + Gift: + # Placeholders: {AllowedGameModes}, {CurrentGameMode} + GameModeNotAllowedSender: "&cYou are not allowed to send gifts in your current game mode." + # Placeholders: {AllowedGameModes}, {CurrentGameMode} + GameModeNotAllowedReceiver: "&cYour partner can not receive gifts in their current game mode." + NoItemInHand: "&cYou are not holding an item." + PartnerInvFull: "&cYour partner has no empty space in their inventory." + # Placeholders: {Name}, {DisplayName}, {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + ItemSent: "[{\"text\":\"You have sent your partner \",\"color\":\"green\"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\".\"}]" + # Placeholders: {Name}, {DisplayName}, {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + ItemReceived: "[{\"text\":\"Your \",\"color\":\"green\"},{\"text\":\"partner\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"{DisplayName}\"}},{\"text\":\" has sent you \"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\".\"}]" + WorldNotAllowed: "&cYour partner is in a world where it is not allowed to receive gifts." + ItemNotAllowed: "&cYou are not allowed to gift {ItemName} &cto your partner!" + # Placeholders: {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + Request: + Notification: "[\"\",{\"text\":\"{DisplayName}&r wants to gift you \"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\". Accept the gift with \"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\"}]" + WaitForConfirmation: "Gift request sent to your partner." + Denied: "You denied the gift of your partner." + DeniedPartner: "Your partner denied the gift. Your item has been refunded." + Canceled: "You canceled your gift request." + CanceledPartner: "Your partner canceled the gift request. Your item has been refunded." + CanceledDisconnectRequester: "Your partner went offline. Gift request canceled. Your item has been refunded." + CanceledDisconnectTarget: "Your partner went offline. Gift request canceled." + RefundInvFull: "&cYour inventory is full, dropped leftover gift items on the ground!" + PartnerAlreadyHasAnOpenRequest: "&cYour partner already has an open request. Please wait from them to accept or deny it first." + Home: + Deleted: "&aHome successfully deleted." + PlayerNoHome: "&cThe player doesn't have a home yet." + NoHome: "&cYou have no home yet." + TPed: "&aYou have been teleported to your home." + Set: "&aHome has been saved." + BlockedFrom: "&cYou are not allowed to teleport home from here." + BlockedTo: "&cYou are not allowed to teleport to your home. Please move it." + Kiss: + Kissed: "&eYou have kissed your partner!" + Kissed_SendMethod: "action_bar" + GotKissed: "&eYour partner has kissed you!" + GotKissed_SendMethod: "action_bar" + TooFarAway: "&cYou are too far away to kiss your partner. (Max {Distance} blocks)" + # Placeholders: {Time}, {TimeLeft} in seconds + Wait: "&cYou have to wait {Time} seconds to kiss your partner again." + Hug: + Hugged: "&eYou have hugged your partner!" + Hugged_SendMethod: "action_bar" + GotHugged: "&eYour partner has hugged you!" + GotHugged_SendMethod: "action_bar" + TooFarAway: "&cYou are too far away to hug your partner. (Max {Distance} blocks)" + # Placeholders: {Time}, {TimeLeft} in seconds + Wait: "&cYou have to wait {Time} seconds to hug your partner again." + Info: + # Placeholders: {Player1Name}, {Player1DisplayName}, {Player2Name}, {Player2DisplayName}, {Surname}, {MagicHeart}, {WeddingDate}, {PriestName}, {PriestDisplayName}, {HasHome}, {PvPEnabled} + Headline: "&e--- Marriage Info ---" + Footer: "&e---------------------" + Player1: "&ePartner 1: {Player1DisplayName}" + Player2: "&ePartner 2: {Player2DisplayName}" + Surname: "&eSurname: {Surname}" + WeddingDate: "&eMarried on: {WeddingDate}" + # No Json!!! + DateFormat: "yyyy-MM-dd" + Priest: "&ePriest: {PriestDisplayName}" + NoPriest: "&ePriest: &7none" + HasHome: "&eHome set: {HasHome}" + PvP: "&ePvP: {PvPEnabled}" + Heart: "&eHeart: {MagicHeart}" + NotMarried: "{DisplayName}&e is not married." + Seen: + # Placeholders: {Name}, {DisplayName} + CurrentlyOnline: "{DisplayName}&r is currently &aonline&r." + # Placeholders: {Name}, {Date}, {Count}, {CountTotalDays} + LastSeen: "[\"\",{\"text\":\"{Name} was last seen on \",\"extra\":[{\"text\":\"{Date}\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"{Count} ago\"}},{\"text\":\".\"}]}]" + # No Json!!! + DateFormat: "yyyy-MM-dd 'at' HH:mm:ss" + List: + # Placeholders: {Player1Name}, {Player1DisplayName}, {Player2Name}, {Player2DisplayName}, {Surname}, {MagicHeart} + Format: "&2{Player1DisplayName} {MagicHeart} &2{Player2DisplayName}" + NoMarriedPlayers: "&cThere are no married players." + Headline: "&eMarried players list&r&f - &r&6showing page {CurrentPage}/{MaxPage}" + Footer: "[\"\",{\"text\":\"<<< Previous <<<\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"}},{\"text\":\" Showing page {CurrentPage}/{MaxPage} \",\"color\":\"gold\"},{\"text\":\">>> Next >>>\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"}}]" + Partners: + Headline: "&ePartner list of {DisplayName}:" + Footer: "&e##############################" + NotMarried: "{DisplayName}&e is not married." + # Player1 is the player that was queried. Player2 is the partner + Format: "&2{Player1DisplayName} {MagicHeart} &2{Player2DisplayName}" + ListPriests: + Format: "&2{PriestDisplayName}" + NoPriestsOnline: "&cThere are no priests online." + Headline: "&eOnline priests&r&f - &r&6showing page {CurrentPage}/{MaxPage}" + Footer: "[\"\",{\"text\":\"<<< Previous <<<\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"}},{\"text\":\" Showing page {CurrentPage}/{MaxPage} \",\"color\":\"gold\"},{\"text\":\">>> Next >>>\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"}}]" + PvP: + IsDisabled: "&cYou can't hurt your partner if you have PvP disabled." + IsDisabled_SendMethod: "action_bar" + On: "&aYou have now enabled PvP with your partner." + Off: "&aYou have now disabled PvP with your partner." + TP: + PartnerVanished: "&cYou can't use teleport if your partner is vanished." + Teleport: "&aTeleporting to partner..." + TeleportTo: "&aYour partner is teleporting to you..." + Unsafe: "&cTeleport cancelled! You would not survive it!" + ToUnsafe: "&cYour partner was about to teleport to you, but would not survive it!" + WorldNotAllowed: "&cYour partner is in a world where tp is not allowed." + Moved: "&cTeleport canceled! You have moved!" + DontMove: "&cTeleport in {Time} sec! Don't Move!" + BlockedFrom: "&cYou are not allowed to teleport to your partner from here." + BlockedTo: "&cYou are not allowed to teleport to where your partner is." + Request: + Notification: "[\"\",{\"text\":\"{DisplayName}&r wants teleport to you. Accept the teleport with \"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\"}]" + WaitForConfirmation: "Please wait till your partner accepts the teleport." + Denied: "You denied the teleport request of your partner." + DeniedPartner: "Your partner denied the teleport request." + Canceled: "You canceled your teleport request." + CanceledPartner: "Your partner canceled the teleport request." + CanceledDisconnectRequester: "Your partner went offline. Teleport request canceled." + CanceledDisconnectTarget: "Your partner went offline. Teleport request canceled." + SetColor: + UnknownColor: "&cUnable to identify color '{Input}'!" + Set: "Color set." + Selection: '["",{"text":"Please click on how you would like the heart for your marriage to look like:"},{"text":"\n"},{"text":" ❤ ","color":"dark_red","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_red"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &4dark red&r."}},{"text":" ❤ ","color":"red","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} red"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &cred&r."}},{"text":" ❤ ","color":"gold","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} gold"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &6gold&r."}},{"text":" ❤ ","color":"yellow","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} yellow"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &eyellow&r."}},{"text":" ❤ ","color":"dark_green","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_green"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &2dark green&r."}},{"text":" ❤ ","color":"green","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} green"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &agreen&r."}},{"text":" ❤ ","color":"aqua","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} aqua"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &baqua&r."}},{"text":" ❤ ","color":"dark_aqua","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_aqua"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &3dark aqua&r."}},{"text":" ❤ ","color":"dark_blue","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_blue"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &1dark blue&r."}},{"text":" ❤ ","color":"blue","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} blue"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &9blue&r."}},{"text":" ❤ ","color":"light_purple","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} light_purple"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &dlight purple&r."}},{"text":" ❤ ","color":"dark_purple","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_purple"},"hoverEvent":{"action":"show_text","value":"Sets the text of the heart to &5dark purple&r."}},{"text":" ❤ ","color":"white","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} white"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &fwhite&r."}},{"text":" ❤ ","color":"gray","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} gray"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &7gray&r."}},{"text":" ❤ ","color":"dark_gray","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_gary"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &8dark gray&r."}},{"text":" ❤ ","color":"black","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} black"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to black."}}]' + SetPriest: + # Placeholders: {Name}, {DisplayName}. Keep in mind display names contain colors! + MadeYouAPriest: "{DisplayName}&r&a has made you a priest." + YouMadeAPriest: "{DisplayName}&r&a now is a priest." + FiredYou: "{DisplayName}&r&c has fired you as a priest." + YouFiredAPriest: "{DisplayName}&r&a is no longer a priest." + PerPermission: "{DisplayName}&r&c is set as a priest per permission and can't be fired by command." + Surname: + SetSuccessful: "&aSurname changed." + SetFailed: "&cFailed changing surname." + ToShort: "&cThe given surname is too short. It has to be at least {MinLength} characters long." + ToLong: "&cThe given surname is too long. It can't be more than {MaxLength} characters long." + AlreadyUsed: "&cThe given surname is already in use!" + Banned: "&cThe given surname is not allowed." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to change your surname from\",\"color\":\"white\"},{\"text\":\"{Surname}&r\"},{\"text\":\" to \",\"color\":\"white\"},{\"text\":\"{NewSurname}&r\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Current surname: {Surname}\"}},{\"text\":\". Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + PlayerOff: "{DisplayName}&r is now offline, surname change canceled." + PriestOff: "Priest {DisplayName}&r is now offline, surname change canceled." + PlayerCancelled: "&c&r&c{PlayerDisplayName}&r&c cancelled the surname change to {NewSurname}&r&c!" + PriestCancelled: "&c&r&c{PriestDisplayName}&r&c cancelled the surname change to {NewSurname}&r&c!" + YouCancelled: "&aYou cancelled your surname change to {NewSurname}&r&a!" + YouCancelledPriest: "&aYou cancelled the surname change of &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a to {NewSurname}&r&a!" + Deny: "{DisplayName}&r&c denied the surname change!" + YouDeny: "&aYou denied the surname change to {NewSurname}&r&a." + PlayerOffline: "&cCan't check for consent to change surname while player is offline." + Requests: + NothingToAccept: "&cThere is no open request to accept." + NothingToDeny: "&cThere is no open request to deny." + NothingToCancel: "&cThere is no open request to cancel." + Marry: + # Placeholders: {Name}, {DisplayName}. Keep in mind display names contain colors! + NotWithHimself: "&cYou can't marry &r&c{DisplayName}&r&c with himself." + AlreadySamePair: "&cYou can't marry players that are already married to each other. &r&c{Player1DisplayName}&r&c is already married with &r&c{Player2DisplayName}&r&c." + AlreadyMarried: "&cYou can't marry players that are already married. &r&c{DisplayName}&r&c is already married." + SurnameNeeded: "&cYou need a surname for the couple to marry." + Married: "&aYou have married &r&a{Player1DisplayName}&r&a with &r&a{Player2DisplayName}&r&a." + HasMarried: "{PriestDisplayName}&r&a has married you with &r{PartnerDisplayName}&r&a." + Broadcast: "{PriestDisplayName}&r&a has married {Player1DisplayName}&r&a with &r{Player2DisplayName}&r&a." + NotInRange: "&cThe players are not in range! They need to be within {Range} blocks!" + AlreadyOpenRequest: "{DisplayName}&r&c has already one not answered marry request." + YouCalledOff: "You have called the wedding off." + PlayerCalledOff: "{DisplayName}&r called the wedding off." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to marry you with \",\"color\":\"white\"},{\"text\":\"{PlayerDisplayName}&r\"},{\"text\":\". Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + PriestOff: "Priest {DisplayName}&r is now offline, wedding called off." + PlayerOff: "{DisplayName}&r is now offline, wedding called off." + MaxPartnersReached: "{DisplayName}&r has already reached the maximum allowed amount of partners ({MaxPartnerCount})." + Self: + NotYourself: "&cYou can't marry yourself." + NotInRange: "&cThe player is not in range! They need to be within {Range} blocks!" + AlreadySamePair: "&cWe are already married with &r&c{DisplayName}&r&c!" + AlreadyMarried: "&cYou are already married with &r&c{DisplayName}&r&c!" + OtherAlreadyMarried: "&c&r&c{DisplayName}&r&c is already married!" + AlreadyOpenRequest: "&cYou have already one not answered marry request." + Married: "&aYou have married &r&a{DisplayName}&r&a." + Broadcast: "&a&r&a{Player1DisplayName}&r&a has married &r&a{Player2DisplayName}&r&a." + YouCalledOff: "You have called the wedding off." + PlayerCalledOff: "{DisplayName}&r called the wedding off." + Confirm: "[\"\",{\"text\":\"{DisplayName}&r\"},{\"text\":\" wants to marry you. Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + RequestSent: "Marriage request sent." + PlayerOff: "{DisplayName}&r is now offline, wedding called off." + NotOnYourOwn: "&cYou can't perform your own wedding. Please ask a priest to perform the wedding for you." + MaxPartnersReached: "You have already reached the maximum allowed amount of partners ({MaxPartnerCount})." + MaxPartnersReachedOther: "{DisplayName}&r has already reached the maximum allowed amount of partners ({MaxPartnerCount})." + Divorce: + Broadcast: "&a&r&a{PriestDisplayName}&r&a has divorced &r&a{Player1DisplayName}&r&a from &r&a{Player2DisplayName}&r&a." + DivorcedPlayer: "&a&r&a{PriestDisplayName}&r&a has divorced your marriage with &r&a{PartnerDisplayName}&r&a." + Divorced: "&aYou have divorced &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a." + PlayerOff: "{DisplayName}&r is now offline, divorce canceled." + PriestOff: "Priest {DisplayName}&r is now offline, divorce canceled." + PlayerCancelled: "&c&r&c{PlayerDisplayName}&r&c cancelled the divorce with &r&c{PartnerDisplayName}&r&c!" + PriestCancelled: "&c&r&c{PriestDisplayName}&r&c cancelled the divorce between you and &r&c{PartnerDisplayName}&r&c!" + YouCancelled: "&aYou cancelled your divorce from &r&a{DisplayName}&r&a!" + YouCancelledPriest: "&aYou cancelled the divorce of &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a!" + Deny: "{DisplayName}&r&c denied the divorce!" + YouDeny: "&aYou denied the divorce from &r&a{DisplayName}&r&a." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to divorce you from \",\"color\":\"white\"},{\"text\":\"{PartnerDisplayName}\"},{\"text\":\". Accept the divorce with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + NotInRange: "&aThe players are not in range! They need to be within {Range} blocks!" + Self: + Divorced: "&aYou left &r&a{DisplayName}&r&a. You are free now." + DivorcedPlayer: "{DisplayName}&r&a has left you. You are free now." + Broadcast: "&a&r&a{Player1DisplayName}&r&a has divorced from &r&a{Player2DisplayName}&r&a." + PlayerOff: "{DisplayName}&r is now offline, divorce canceled." + RequestSent: "Divorce request sent to {DisplayName}&r." + Confirm: "[\"\",{\"text\":\"{DisplayName}&r\"},{\"text\":\" wants to divorce from you. Accept the divorce with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + Deny: "{DisplayName}&r&c denied your divorce request!" + YouDeny: "&aYou denied &r&a{DisplayName}&r&a's divorce request." + Cancelled: "{DisplayName}&r&c cancelled their divorce request!" + YouCancelled: "&aYou cancelled your divorce request from &r&a{DisplayName}&r&a!" + NotInRange: "&aYour partner is not in range! You need to be within {Range} blocks!" + Economy: + NotEnough: "&cYou don't have enough money! You need {Cost} {CurrencyName} for that." + PartnerNotEnough: "&cYour partner doesn't have enough money!" + PriestMarryNotEnough: "&cThe players you are trying to marry don't have enough money." + PriestDivorceNotEnough: "&cThe players you are trying to divorce don't have enough money." + MarriagePaid: "&aYou paid {Cost} {CurrencyName} for your marriage ({Remaining} {CurrencyName} left)." + DivorcePaid: "&aYou paid {Cost} {CurrencyName} for the annul of your marriage ({Remaining} {CurrencyName} left)." + HomeTPPaid: "&aYou paid {Cost} {CurrencyName} for your home teleport ({Remaining} {CurrencyName} left)." + SetHomePaid: "&aYou paid {Cost} {CurrencyName} to set your Home ({Remaining} {CurrencyName} left)." + TpPaid: "&aYou paid {Cost} {CurrencyName} for the Teleport ({Remaining} {CurrencyName} left)." + GiftPaid: "&aYou have paid {Cost} {CurrencyName} for gifting an item to your partner ({Remaining} {CurrencyName} left)." + SurnameChangePaid: "&aYou have paid {Cost} {CurrencyName} to change a surename ({Remaining} {CurrencyName} left)." + Admin: + Reloading: "&1Reloading ..." + Reloaded: "&1Reloaded!" + ReloadingDatabase: '&bReloading database &6.&r&c.&r&a.&r' + CheckingForUpdates: "&1Checking for updates ..." + Updated: "&ePlugin updated, will be loaded on next restart/reload." + NoUpdate: "&6No plugin update available." + UpdateFail: "&cThere was a problem looking for updates! Please check the console!" + # You can change this message if you like to, but don't cry if the link isn't linking to the plugin anymore! + UpdateAvailable: "[{\"text\":\"There is an update available! Please go to \\\"\",\"color\":\"green\"},{\"text\":\"https://www.spigotmc.org/resources/marriage-master-mc-1-7-1-9.19273/\",\"color\":\"yellow\",\"underlined\":true,\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.spigotmc.org/resources/marriage-master-mc-1-7-1-9.19273/\"}},{\"text\":\"\\\" to download it!\"}]" + Help: + Header: "&6### Marriage Master Commands ###" + Footer: "&6#############################" + # Allows you to define messages that should be sent if the player uses the "/marry" command without any parameters (HelpMode must be set to CustomHelp in the config) + CustomHelp: + # Will be used if the player is married + Married: + - " &3__&b&lMarry Commands&r&3__" + - + - '[{"text":" ➤ ","color":"white"},{"text":"/marry kiss","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry kiss"}},{"text":" kiss your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"yellow"},{"text":"/marry tp","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry tp"}},{"text":" tp to your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"gold"},{"text":"/marry chat toggle","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry chat toggle"}},{"text":" talk private whit your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"gold"},{"text":"/marry gift","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry gift"}},{"text":" give your partners things","color":"aqua"}]' + - '[{"text":"Use ","color":"dark_green"},{"text":"/marry help","color":"dark_aqua","bold":true},{"text":" for full list of all commands"}]' + # Will be used if the player is a priest + Priest: + - " &3__&b&lMarry&r&3__" + - "&b You can marry players by using /marry marry " + - '[{"text":"Use ","color":"dark_green"},{"text":"/marry help","color":"dark_aqua","bold":true},{"text":" for full list of all commands"}]' + # Will be used if the player is neither married nor a priest + Default: + - " &3__&b&lMarry&r&3__" + - "&cYou must be married to use this command" + + Commands: + HelpFormat: "[\"\",{\"text\":\"/{MainCommand} {SubCommand} {Parameters}\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/{MainCommand} {SubCommand}\"}},{\"text\":\" - \",\"color\":\"white\"},{\"text\":\"{Description}\",\"color\":\"aqua\"}]" + # No color codes please + PlayerNameVariable: "player_name" + PartnerNameVariable: "partner_name" + SurnameVariable: "surname" + MessageVariable: "message" + Description: + Backpack: "Opens the backpack of your partner." + BackpackOn: "Allows your partner to use your backpack." + BackpackOff: "Disallows your partner to use your backpack." + Chat: "Private chat with your partner." + ChatSetTarget: "Changes the private message target. If not changed all partners will get the message." + ChatToggle: "Toggles your chat to be private with your partner." + ChatListen: "Shows all chat-messages sent from a married player to their partner." + Gift: "Gifts the item in your hand to your partner." + Home: "Teleports you to your home." + HomeOther: "Teleports you to a married players home." + SetHome: "Sets your home." + SetHomeOther: "Sets the home of a married player." + DelHome: "Deletes your home." + DelHomeOther: "Deletes the home of a married player." + Help: "Shows all available commands and their description." + List: "Lists all married players." + ListPriests: "Lists all currently online priests." + Partners: "List all partners of a player" + PvP: "Changes PvP status with partner." + PvPOn: "Enables PvP with partner." + PvPOff: "Disables PvP with partner." + Tp: "Teleports you to your partner." + Kiss: "You kiss your partner." + Hug: "You hug your partner." + Seen: "Shows when your partner was online the last time." + Info: "Shows information about a marriage." + Marry: "Marry two players." + MarrySelf: "Sends a marry request to another player." + Divorce: "Divorces two players." + DivorceSelf: "To leave your partner." + Surname: "Changes the surname of a couple." + SurnameSelf: "Changes the surname from your partner and you." + Update: "Checks if there is an update available and downloads it." + Accept: "Accepts an open request." + Cancel: "Cancels an open request." + Deny: "Denies an open request." + SetColor: "Sets the color of the marriage." + SetPriest: "Promotes/Demotes a player to a priest." + Reload: "Reloads the config of the plugin." + Version: "Prints the version details about the plugin and it's dependencies." +# The first option in the list will be the one displayed in the commands help +Command: + Switches: + On: + - on + - true + - yes + Off: + - off + - false + - no + Toggle: + - toggle + - switch + All: + - all + Remove: + - remove + - rm + - delete + - del + - clear + - clean + Main: + - marry + Backpack: + - backpack + - bp + Chat: + - chat + ChatSetTarget: + - settarget + - target + ChatToggle: + - chattoggle + ChatListen: + - listenchat + - chatlisten + Gift: + - gift + - send + - give + Help: + - help + Home: + - home + SetHome: + - sethome + - definehome + - savehome + DelHome: + - delhome + - deletehome + - unsethome + PvP: + - pvp + Kiss: + - kiss + Hug: + - hug + Seen: + - seen + - lastOnline + Info: + - info + - marriageinfo + PvPOn: + - pvpon + PvPOff: + - pvpoff + List: + - list + ListPriests: + - listpriests + Partners: + - partners + - listpartners + - partnerlist + Tp: + - tp + SetColor: + - setcolor + Marry: + - marry + Divorce: + - divorce + SetPriest: + - setpriest + Update: + - update + Version: + - version + Accept: + - accept + Cancel: + - cancel + Deny: + - deny +Dialog: + # Placeholders: {Player1Name}, {Player1DisplayName}, {Player2Name}, {Player2DisplayName} + DoYouWant: "Do you {Player1Name}, want to marry {Player2Name} on this server?" + # Placeholders: {Player1Name}, {Player1DisplayName}, {Player2Name}, {Player2DisplayName} + AndDoYouWant: "And do you {Player2Name}, want to marry {Player1Name} on this server?" + # Placeholders: {Player1Name}, {Player1DisplayName}, {Player2Name}, {Player2DisplayName} + Married: "I now pronounce {Player1Name} and {Player2Name} married! You may now kiss." + YesIWant: "Yes, I will!" + NoIDontWant: "No, I will not!" +# This selection allows to change the placeholder return values. You can change them if you like. https://github.com/GeorgH93/MarriageMaster/wiki/Placeholders +Placeholders: + # The default formatting data that should be used if nothing else is specified + Default: + Boolean: + True: true + False: false + NotMarried: "not married" + NoHome: "no home" + Separator: "&r, " + NoPartnerForSlot: "" + Years: "&6{years}&ey " + Months: "&6{months}&eM " + Days: "&6{days}&ed " + Hours: "&6{hours}&eh " + Minutes: "&6{minutes}&em" + TimeMain: "{years}{months}{days}{hours}{minutes}" + Heart: + Married: "&c&f" + NotMarried: "" + MagicHeart: + Married: "&f" + NotMarried: "" + Prefix: + NotMarried: "" + Suffix: + NotMarried: "" + StatusHeart: + Married: "&c&f" + NotMarried: "&7&f" + Home: + # Order: world, x, y, z + Married: "%1$s %2$.1f %3$.1f %4$.1f" + HomeCoordinates: + # Order: x, y, z + Married: "%1$.1f %2$.1f %3$.1f" + NearestHome: + # Order: world, x, y, z + Married: "%1$s %2$.1f %3$.1f %4$.1f" + NearestHomeCoordinates: + # Order: x, y, z + Married: "%1$.1f %2$.1f %3$.1f" + + +# The name of the language represented by the language file +LanguageName: "English" +# The author of the language file +Author: "GeorgH93" + +# Language file version. Don't touch it! +Version: 115 +Revision: 1 \ No newline at end of file diff --git a/live-server/plugins/MarriageMaster/lang/en.yml.old_v113 b/live-server/plugins/MarriageMaster/lang/en.yml.old_v113 new file mode 100755 index 0000000..d83a963 --- /dev/null +++ b/live-server/plugins/MarriageMaster/lang/en.yml.old_v113 @@ -0,0 +1,470 @@ +# To simplify the customisation and the translation process please check out the editor: https://ptp.pcgamingfreaks.at +Language: + NotFromConsole: "&cThis command can't be used from the console!" + # Global Wildcards: and + Ingame: + NoPermission: "&cYou don't have the permission to do that." + NaN: "&cThe entered value is not a number!" + NotMarried: "&cYou are not married." + PartnerOffline: "&cYour partner is offline." + PartnerNotInRange: "&cYour partner is too far away." + TargetPartnerNotFound: "&cYour targeted partner was not found!" + PlayerNotMarried: "&c\"{PlayerName}\" is not married!" + PlayerNotFound: "&cCouldn't find \"{PlayerName}\"!" + PlayerNotOnline: "&c\"{PlayerName}\" is offline!" + PlayersNotMarried: "&cThe players aren't married!" + MarriageNotExact: "&cWe are sorry, but there is more than one marriage matching your request!" + JoinLeaveInfo: + # Only used for players with 1 partner + PartnerOnline: "&aYour partner is online." + # Only used for players with 1 partner + PartnerOffline: "&7Your partner is offline." + # Only used for players with more than 1 partner + AllPartnersOffline: "&7All your partners are offline." + # Only used for players with more than 1 partner + PartnerOnlineMulti: "&aFollowing partners are online: &r&f{OnlinePartners}" + # Placeholders: {Name}, {DisplayName}. Keep in mind display names can contain colors! No JSON!!! + MultiOnlineFormat: "{DisplayName}" + # No JSON!!! + MultiOnlineSeparator: "&r, " + # Placeholders: {Name}, {DisplayName} + PartnerNowOnline: "&aYour partner is now online." + # Placeholders: {Name}, {DisplayName} + PartnerNowOffline: "&7Your partner is now offline." + Backpack: + OnlyInSurvival: "&cYou can only access your partner's backpack when you are in survival mode." + ShareOn: "&aYou now share your backpack with your partner." + ShareOff: "&cYou are no longer sharing your backpack with your partner." + Opened: "&aYour partner has opened your backpack." + ShareDenied: "&cYour partner doesn't give you access to their backpack." + Chat: + Joined: "&aYou have set your chat to the private marry chat." + Left: "&aYou have set your chat to public chat." + ListeningStarted: "&aYou are now listening to the marry chat." + ListeningStopped: "&aYou are no longer listening to the marry chat." + TargetSet: "&aPrivate chat target set." + DisplayNameAll: "All Partners" + # Placeholders: {SenderDisplayName}, {SenderName}, {ReceiverDisplayName}, {ReceiverName}, {Message}, {MagicHeart} + Format: "{MagicHeart}&r {SenderDisplayName}&r&6 => &r{ReceiverDisplayName}&r&f: &r{Message}" + Gift: + # Placeholders: {AllowedGameModes}, {CurrentGameMode} + GameModeNotAllowedSender: "&cYou are not allowed to send gifts in your current game mode." + # Placeholders: {AllowedGameModes}, {CurrentGameMode} + GameModeNotAllowedReceiver: "&cYour partner can not receive gifts in their current game mode." + NoItemInHand: "&cYou are not holding an item." + PartnerInvFull: "&cYour partner has no empty space in their inventory." + # Placeholders: {Name}, {DisplayName}, {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + ItemSent: "[{\"text\":\"You have sent your partner \",\"color\":\"green\"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\".\"}]" + # Placeholders: {Name}, {DisplayName}, {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + ItemReceived: "[{\"text\":\"Your \",\"color\":\"green\"},{\"text\":\"partner\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"{DisplayName}\"}},{\"text\":\" has sent you \"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\".\"}]" + WorldNotAllowed: "&cYour partner is in a world where it is not allowed to receive gifts." + ItemNotAllowed: "&cYou are not allowed to gift {ItemName} &cto your partner!" + # Placeholders: {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + Request: + Notification: "[\"\",{\"text\":\"{DisplayName}&r wants to gift you \"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\". Accept the gift with \"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\"}]" + WaitForConfirmation: "Gift request sent to your partner." + Denied: "You denied the gift of your partner." + DeniedPartner: "Your partner denied the gift. Your item has been refunded." + Canceled: "You canceled your gift request." + CanceledPartner: "Your partner canceled the gift request. Your item has been refunded." + CanceledDisconnectRequester: "Your partner went offline. Gift request canceled. Your item has been refunded." + CanceledDisconnectTarget: "Your partner went offline. Gift request canceled." + RefundInvFull: "&cYour inventory is full, dropped leftover gift items on the ground!" + PartnerAlreadyHasAnOpenRequest: "&cYour partner already has an open request. Please wait from them to accept or deny it first." + Home: + Deleted: "&aHome successfully deleted." + PlayerNoHome: "&cThe player doesn't have a home yet." + NoHome: "&cYou have no home yet." + TPed: "&aYou have been teleported to your home." + Set: "&aHome has been saved." + BlockedFrom: "&cYou are not allowed to teleport home from here." + BlockedTo: "&cYou are not allowed to teleport to your home. Please move it." + Kiss: + Kissed: "&eYou have kissed your partner!" + Kissed_SendMethod: "action_bar" + GotKissed: "&eYour partner has kissed you!" + GotKissed_SendMethod: "action_bar" + TooFarAway: "&cYou are too far away to kiss your partner. (Max {Distance} blocks)" + # Placeholders: {Time}, {TimeLeft} in seconds + Wait: "&cYou have to wait {Time} seconds to kiss your partner again." + Hug: + Hugged: "&eYou have hugged your partner!" + Hugged_SendMethod: "action_bar" + GotHugged: "&eYour partner has hugged you!" + GotHugged_SendMethod: "action_bar" + TooFarAway: "&cYou are too far away to hug your partner. (Max {Distance} blocks)" + # Placeholders: {Time}, {TimeLeft} in seconds + Wait: "&cYou have to wait {Time} seconds to hug your partner again." + Seen: + # Placeholders: {Name}, {DisplayName} + CurrentlyOnline: "{DisplayName}&r is currently &aonline&r." + # Placeholders: {Name}, {Date}, {Count}, {CountTotalDays} + LastSeen: "[\"\",{\"text\":\"{Name} was last seen on \",\"extra\":[{\"text\":\"{Date}\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"{Count} ago\"}},{\"text\":\".\"}]}]" + # No Json!!! + DateFormat: "yyyy-MM-dd 'at' HH:mm:ss" + List: + # Placeholders: {Player1Name}, {Player1DisplayName}, {Player2Name}, {Player2DisplayName}, {Surname}, {MagicHeart} + Format: "&2{Player1DisplayName} {MagicHeart} &2{Player2DisplayName}" + NoMarriedPlayers: "&cThere are no married players." + Headline: "&eMarried players list&r&f - &r&6showing page {CurrentPage}/{MaxPage}" + Footer: "[\"\",{\"text\":\"<<< Previous <<<\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"}},{\"text\":\" Showing page {CurrentPage}/{MaxPage} \",\"color\":\"gold\"},{\"text\":\">>> Next >>>\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"}}]" + Partners: + Headline: "&ePartner list of {DisplayName}:" + Footer: "&e##############################" + NotMarried: "{DisplayName}&e is not married." + # Player1 is the player that was queried. Player2 is the partner + Format: "&2{Player1DisplayName} {MagicHeart} &2{Player2DisplayName}" + ListPriests: + Format: "&2{PriestDisplayName}" + NoPriestsOnline: "&cThere are no priests online." + Headline: "&eOnline priests&r&f - &r&6showing page {CurrentPage}/{MaxPage}" + Footer: "[\"\",{\"text\":\"<<< Previous <<<\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"}},{\"text\":\" Showing page {CurrentPage}/{MaxPage} \",\"color\":\"gold\"},{\"text\":\">>> Next >>>\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"}}]" + PvP: + IsDisabled: "&cYou can't hurt your partner if you have PvP disabled." + IsDisabled_SendMethod: "action_bar" + On: "&aYou have now enabled PvP with your partner." + Off: "&aYou have now disabled PvP with your partner." + TP: + PartnerVanished: "&cYou can't use teleport if your partner is vanished." + Teleport: "&aTeleporting to partner..." + TeleportTo: "&aYour partner is teleporting to you..." + Unsafe: "&cTeleport cancelled! You would not survive it!" + ToUnsafe: "&cYour partner was about to teleport to you, but would not survive it!" + WorldNotAllowed: "&cYour partner is in a world where tp is not allowed." + Moved: "&cTeleport canceled! You have moved!" + DontMove: "&cTeleport in {Time} sec! Don't Move!" + BlockedFrom: "&cYou are not allowed to teleport to your partner from here." + BlockedTo: "&cYou are not allowed to teleport to where your partner is." + Request: + Notification: "[\"\",{\"text\":\"{DisplayName}&r wants teleport to you. Accept the teleport with \"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\"}]" + WaitForConfirmation: "Please wait till your partner accepts the teleport." + Denied: "You denied the teleport request of your partner." + DeniedPartner: "Your partner denied the teleport request." + Canceled: "You canceled your teleport request." + CanceledPartner: "Your partner canceled the teleport request." + CanceledDisconnectRequester: "Your partner went offline. Teleport request canceled." + CanceledDisconnectTarget: "Your partner went offline. Teleport request canceled." + SetColor: + UnknownColor: "&cUnable to identify color '{Input}'!" + Set: "Color set." + Selection: '["",{"text":"Please click on how you would like the heart for your marriage to look like:"},{"text":"\n"},{"text":" ❤ ","color":"dark_red","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_red"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &4dark red&r."}},{"text":" ❤ ","color":"red","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} red"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &cred&r."}},{"text":" ❤ ","color":"gold","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} gold"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &6gold&r."}},{"text":" ❤ ","color":"yellow","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} yellow"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &eyellow&r."}},{"text":" ❤ ","color":"dark_green","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_green"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &2dark green&r."}},{"text":" ❤ ","color":"green","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} green"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &agreen&r."}},{"text":" ❤ ","color":"aqua","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} aqua"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &baqua&r."}},{"text":" ❤ ","color":"dark_aqua","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_aqua"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &3dark aqua&r."}},{"text":" ❤ ","color":"dark_blue","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_blue"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &1dark blue&r."}},{"text":" ❤ ","color":"blue","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} blue"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &9blue&r."}},{"text":" ❤ ","color":"light_purple","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} light_purple"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &dlight purple&r."}},{"text":" ❤ ","color":"dark_purple","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_purple"},"hoverEvent":{"action":"show_text","value":"Sets the text of the heart to &5dark purple&r."}},{"text":" ❤ ","color":"white","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} white"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &fwhite&r."}},{"text":" ❤ ","color":"gray","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} gray"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &7gray&r."}},{"text":" ❤ ","color":"dark_gray","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_gary"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &8dark gray&r."}},{"text":" ❤ ","color":"black","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} black"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to black."}}]' + SetPriest: + # Placeholders: {Name}, {DisplayName}. Keep in mind display names contain colors! + MadeYouAPriest: "{DisplayName}&r&a has made you a priest." + YouMadeAPriest: "{DisplayName}&r&a now is a priest." + FiredYou: "{DisplayName}&r&c has fired you as a priest." + YouFiredAPriest: "{DisplayName}&r&a is no longer a priest." + PerPermission: "{DisplayName}&r&c is set as a priest per permission and can't be fired by command." + Surname: + SetSuccessful: "&aSurname changed." + SetFailed: "&cFailed changing surname." + ToShort: "&cThe given surname is too short. It has to be at least {MinLength} characters long." + ToLong: "&cThe given surname is too long. It can't be more than {MaxLength} characters long." + AlreadyUsed: "&cThe given surname is already in use!" + Requests: + NothingToAccept: "&cThere is no open request to accept." + NothingToDeny: "&cThere is no open request to deny." + NothingToCancel: "&cThere is no open request to cancel." + Marry: + # Placeholders: {Name}, {DisplayName}. Keep in mind display names contain colors! + NotWithHimself: "&cYou can't marry &r&c{DisplayName}&r&c with himself." + AlreadySamePair: "&cYou can't marry players that are already married to each other. &r&c{Player1DisplayName}&r&c is already married with &r&c{Player2DisplayName}&r&c." + AlreadyMarried: "&cYou can't marry players that are already married. &r&c{DisplayName}&r&c is already married." + SurnameNeeded: "&cYou need a surname for the couple to marry." + Married: "&aYou have married &r&a{Player1DisplayName}&r&a with &r&a{Player2DisplayName}&r&a." + HasMarried: "{PriestDisplayName}&r&a has married you with &r{PartnerDisplayName}&r&a." + Broadcast: "{PriestDisplayName}&r&a has married {Player1DisplayName}&r&a with &r{Player2DisplayName}&r&a." + NotInRange: "&cThe players are not in range! They need to be within {Range} blocks!" + AlreadyOpenRequest: "{DisplayName}&r&c has already one not answered marry request." + YouCalledOff: "You have called the wedding off." + PlayerCalledOff: "{DisplayName}&r called the wedding off." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to marry you with \",\"color\":\"white\"},{\"text\":\"{PlayerDisplayName}&r\"},{\"text\":\". Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + PriestOff: "Priest {DisplayName}&r is now offline, wedding called off." + PlayerOff: "{DisplayName}&r is now offline, wedding called off." + MaxPartnersReached: "{DisplayName}&r has already reached the maximum allowed amount of partners ({MaxPartnerCount})." + Self: + NotYourself: "&cYou can't marry yourself." + NotInRange: "&cThe player is not in range! They need to be within {Range} blocks!" + AlreadySamePair: "&cWe are already married with &r&c{DisplayName}&r&c!" + AlreadyMarried: "&cYou are already married with &r&c{DisplayName}&r&c!" + OtherAlreadyMarried: "&c&r&c{DisplayName}&r&c is already married!" + AlreadyOpenRequest: "&cYou have already one not answered marry request." + Married: "&aYou have married &r&a{DisplayName}&r&a." + Broadcast: "&a&r&a{Player1DisplayName}&r&a has married &r&a{Player2DisplayName}&r&a." + YouCalledOff: "You have called the wedding off." + PlayerCalledOff: "{DisplayName}&r called the wedding off." + Confirm: "[\"\",{\"text\":\"{DisplayName}&r\"},{\"text\":\" wants to marry you. Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + RequestSent: "Marriage request sent." + PlayerOff: "{DisplayName}&r is now offline, wedding called off." + NotOnYourOwn: "&cYou can't perform your own wedding. Please ask a priest to perform the wedding for you." + MaxPartnersReached: "You have already reached the maximum allowed amount of partners ({MaxPartnerCount})." + MaxPartnersReachedOther: "{DisplayName}&r has already reached the maximum allowed amount of partners ({MaxPartnerCount})." + Divorce: + Broadcast: "&a&r&a{PriestDisplayName}&r&a has divorced &r&a{Player1DisplayName}&r&a from &r&a{Player2DisplayName}&r&a." + DivorcedPlayer: "&a&r&a{PriestDisplayName}&r&a has divorced your marriage with &r&a{PartnerDisplayName}&r&a." + Divorced: "&aYou have divorced &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a." + PlayerOff: "{DisplayName}&r is now offline, divorce canceled." + PriestOff: "Priest {DisplayName}&r is now offline, divorce canceled." + PlayerCancelled: "&c&r&c{PlayerDisplayName}&r&c cancelled the divorce with &r&c{PartnerDisplayName}&r&c!" + PriestCancelled: "&c&r&c{PriestDisplayName}&r&c cancelled the divorce between you and &r&c{PartnerDisplayName}&r&c!" + YouCancelled: "&aYou cancelled your divorce from &r&a{DisplayName}&r&a!" + YouCancelledPriest: "&aYou cancelled the divorce of &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a!" + Deny: "{DisplayName}&r&c denied the divorce!" + YouDeny: "&aYou denied the divorce from &r&a{DisplayName}&r&a." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to divorce you from \",\"color\":\"white\"},{\"text\":\"{PartnerDisplayName}\"},{\"text\":\". Accept the divorce with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + NotInRange: "&aThe players are not in range! They need to be within {Range} blocks!" + Self: + Divorced: "&aYou left &r&a{DisplayName}&r&a. You are free now." + DivorcedPlayer: "{DisplayName}&r&a has left you. You are free now." + Broadcast: "&a&r&a{Player1DisplayName}&r&a has divorced from &r&a{Player2DisplayName}&r&a." + PlayerOff: "{DisplayName}&r is now offline, divorce canceled." + RequestSent: "Divorce request sent to {DisplayName}&r." + Confirm: "[\"\",{\"text\":\"{DisplayName}&r\"},{\"text\":\" wants to divorce from you. Accept the divorce with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + Deny: "{DisplayName}&r&c denied your divorce request!" + YouDeny: "&aYou denied &r&a{DisplayName}&r&a's divorce request." + Cancelled: "{DisplayName}&r&c cancelled their divorce request!" + YouCancelled: "&aYou cancelled your divorce request from &r&a{DisplayName}&r&a!" + NotInRange: "&aYour partner is not in range! You need to be within {Range} blocks!" + Economy: + NotEnough: "&cYou don't have enough money! You need {Cost} {CurrencyName} for that." + PartnerNotEnough: "&cYour partner doesn't have enough money!" + PriestMarryNotEnough: "&cThe players you are trying to marry don't have enough money." + PriestDivorceNotEnough: "&cThe players you are trying to divorce don't have enough money." + MarriagePaid: "&aYou paid {Cost} {CurrencyName} for your marriage ({Remaining} {CurrencyName} left)." + DivorcePaid: "&aYou paid {Cost} {CurrencyName} for the annul of your marriage ({Remaining} {CurrencyName} left)." + HomeTPPaid: "&aYou paid {Cost} {CurrencyName} for your home teleport ({Remaining} {CurrencyName} left)." + SetHomePaid: "&aYou paid {Cost} {CurrencyName} to set your Home ({Remaining} {CurrencyName} left)." + TpPaid: "&aYou paid {Cost} {CurrencyName} for the Teleport ({Remaining} {CurrencyName} left)." + GiftPaid: "&aYou have paid {Cost} {CurrencyName} for gifting an item to your partner ({Remaining} {CurrencyName} left)." + SurnameChangePaid: "&aYou have paid {Cost} {CurrencyName} to change a surename ({Remaining} {CurrencyName} left)." + Admin: + Reloading: "&1Reloading ..." + Reloaded: "&1Reloaded!" + ReloadingDatabase: '&bReloading database &6.&r&c.&r&a.&r' + CheckingForUpdates: "&1Checking for updates ..." + Updated: "&ePlugin updated, will be loaded on next restart/reload." + NoUpdate: "&6No plugin update available." + UpdateFail: "&cThere was a problem looking for updates! Please check the console!" + # You can change this message if you like to, but don't cry if the link isn't linking to the plugin anymore! + UpdateAvailable: "[{\"text\":\"There is an update available! Please go to \\\"\",\"color\":\"green\"},{\"text\":\"https://www.spigotmc.org/resources/marriage-master-mc-1-7-1-9.19273/\",\"color\":\"yellow\",\"underlined\":true,\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.spigotmc.org/resources/marriage-master-mc-1-7-1-9.19273/\"}},{\"text\":\"\\\" to download it!\"}]" + Help: + Header: "&6### Marriage Master Commands ###" + Footer: "&6#############################" + # Allows you to define messages that should be sent if the player uses the "/marry" command without any parameters (HelpMode must be set to CustomHelp in the config) + CustomHelp: + # Will be used if the player is married + Married: + - " &3__&b&lMarry Commands&r&3__" + - "" + - '[{"text":" ➤ ","color":"white"},{"text":"/marry kiss","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry kiss"}},{"text":" kiss your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"yellow"},{"text":"/marry tp","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry tp"}},{"text":" tp to your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"gold"},{"text":"/marry chat toggle","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry chat toggle"}},{"text":" talk private whit your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"gold"},{"text":"/marry gift","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry gift"}},{"text":" give your partners things","color":"aqua"}]' + - '[{"text":"Use ","color":"dark_green"},{"text":"/marry help","color":"dark_aqua","bold":true},{"text":" for full list of all commands"}]' + # Will be used if the player is a priest + Priest: + - " &3__&b&lMarry&r&3__" + - "&b You can marry players by using /marry marry " + - '[{"text":"Use ","color":"dark_green"},{"text":"/marry help","color":"dark_aqua","bold":true},{"text":" for full list of all commands"}]' + # Will be used if the player is neither married nor a priest + Default: + - " &3__&b&lMarry&r&3__" + - "&cYou must be married to use this command" + + Commands: + HelpFormat: "[\"\",{\"text\":\"/{MainCommand} {SubCommand} {Parameters}\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/{MainCommand} {SubCommand}\"}},{\"text\":\" - \",\"color\":\"white\"},{\"text\":\"{Description}\",\"color\":\"aqua\"}]" + # No color codes please + PlayerNameVariable: "player_name" + PartnerNameVariable: "partner_name" + SurnameVariable: "surname" + MessageVariable: "message" + Description: + Backpack: "Opens the backpack of your partner." + BackpackOn: "Allows your partner to use your backpack." + BackpackOff: "Disallows your partner to use your backpack." + Chat: "Private chat with your partner." + ChatSetTarget: "Changes the private message target. If not changed all partners will get the message." + ChatToggle: "Toggles your chat to be private with your partner." + ChatListen: "Shows all chat-messages sent from a married player to their partner." + Gift: "Gifts the item in your hand to your partner." + Home: "Teleports you to your home." + HomeOther: "Teleports you to a married players home." + SetHome: "Sets your home." + SetHomeOther: "Sets the home of a married player." + DelHome: "Deletes your home." + DelHomeOther: "Deletes the home of a married player." + Help: "Shows all available commands and their description." + List: "Lists all married players." + ListPriests: "Lists all currently online priests." + Partners: "List all partners of a player" + PvP: "Changes PvP status with partner." + PvPOn: "Enables PvP with partner." + PvPOff: "Disables PvP with partner." + Tp: "Teleports you to your partner." + Kiss: "You kiss your partner." + Hug: "You hug your partner." + Seen: "Shows when your partner was online the last time." + Marry: "Marry two players." + MarrySelf: "Sends a marry request to another player." + Divorce: "Divorces two players." + DivorceSelf: "To leave your partner." + Surname: "Changes the surname of a couple." + SurnameSelf: "Changes the surname from your partner and you." + Update: "Checks if there is an update available and downloads it." + Accept: "Accepts an open request." + Cancel: "Cancels an open request." + Deny: "Denies an open request." + SetColor: "Sets the color of the marriage." + SetPriest: "Promotes/Demotes a player to a priest." + Reload: "Reloads the config of the plugin." + Version: "Prints the version details about the plugin and it's dependencies." +# The fist option in the list will be the one displayed in the commands help +Command: + Switches: + On: + - on + - true + - yes + Off: + - off + - false + - no + Toggle: + - toggle + - switch + All: + - all + Remove: + - remove + - rm + - delete + - del + - clear + - clean + Main: + - marry + Backpack: + - backpack + - bp + Chat: + - chat + ChatSetTarget: + - settarget + - target + ChatToggle: + - chattoggle + ChatListen: + - listenchat + - chatlisten + Gift: + - gift + - send + - give + Help: + - help + Home: + - home + SetHome: + - sethome + - definehome + - savehome + DelHome: + - delhome + - deletehome + - unsethome + PvP: + - pvp + Kiss: + - kiss + Hug: + - hug + Seen: + - seen + - lastOnline + PvPOn: + - pvpon + PvPOff: + - pvpoff + List: + - list + ListPriests: + - listpriests + Partners: + - partners + - listpartners + - partnerlist + Tp: + - tp + SetColor: + - setcolor + Marry: + - marry + Divorce: + - divorce + SetPriest: + - setpriest + Update: + - update + Version: + - version + Accept: + - accept + Cancel: + - cancel + Deny: + - deny +Dialog: + # Placeholders: {Planer1Name}, {Player1DisplayName}, {Planer2Name}, {Player2DisplayName} + DoYouWant: "Do you {Player1Name}, want to marry {Player2Name} on this server?" + # Placeholders: {Planer1Name}, {Player1DisplayName}, {Planer2Name}, {Player2DisplayName} + AndDoYouWant: "And do you {Player2Name}, want to marry {Player1Name} on this server?" + # Placeholders: {Planer1Name}, {Player1DisplayName}, {Planer2Name}, {Player2DisplayName} + Married: "I now pronounce {Player1Name} and {Player2Name} married! You may now kiss." + YesIWant: "Yes, I will!" + NoIDontWant: "No, I will not!" +# This selection allows to change the placeholder return values. You can change them if you like. https://github.com/GeorgH93/MarriageMaster/wiki/Placeholders +Placeholders: + # The default formatting data that should be used if nothing else is specified + Default: + Boolean: + True: true + False: false + NotMarried: "not married" + NoHome: "no home" + Separator: "&r, " + NoPartnerForSlot: "" + Heart: + Married: "&c&f" + NotMarried: "" + MagicHeart: + Married: "&f" + NotMarried: "" + Prefix: + NotMarried: "" + Suffix: + NotMarried: "" + StatusHeart: + Married: "&c&f" + NotMarried: "&7&f" + Home: + # Order: world, x, y, z + Married: "%1$s %2$.1f %3$.1f %4$.1f" + HomeCoordinates: + # Order: x, y, z + Married: "%1$.1f %2$.1f %3$.1f" + NearestHome: + # Order: world, x, y, z + Married: "%1$s %2$.1f %3$.1f %4$.1f" + NearestHomeCoordinates: + # Order: x, y, z + Married: "%1$.1f %2$.1f %3$.1f" + + +# The name of the language represented by the language file +LanguageName: "English" +# The author of the language file +Author: "GeorgH93" + +# Language file version. Don't touch it! +Version: 113 +Revision: 1 diff --git a/live-server/plugins/MarriageMaster/lang/en.yml.old_v114 b/live-server/plugins/MarriageMaster/lang/en.yml.old_v114 new file mode 100755 index 0000000..58ac572 --- /dev/null +++ b/live-server/plugins/MarriageMaster/lang/en.yml.old_v114 @@ -0,0 +1,487 @@ +# To simplify the customisation and the translation process please check out the editor: https://ptp.pcgamingfreaks.at +Language: + NotFromConsole: "&cThis command can't be used from the console!" + # Global Wildcards: and + Ingame: + NoPermission: "&cYou don't have the permission to do that." + NaN: "&cThe entered value is not a number!" + NotMarried: "&cYou are not married." + PartnerOffline: "&cYour partner is offline." + PartnerNotInRange: "&cYour partner is too far away." + TargetPartnerNotFound: "&cYour targeted partner was not found!" + PlayerNotMarried: "&c\"{PlayerName}\" is not married!" + PlayerNotFound: "&cCouldn't find \"{PlayerName}\"!" + PlayerNotOnline: "&c\"{PlayerName}\" is offline!" + PlayersNotMarried: "&cThe players aren't married!" + MarriageNotExact: "&cWe are sorry, but there is more than one marriage matching your request!" + JoinLeaveInfo: + # Only used for players with 1 partner + PartnerOnline: "&aYour partner is online." + # Only used for players with 1 partner + PartnerOffline: "&7Your partner is offline." + # Only used for players with more than 1 partner + AllPartnersOffline: "&7All your partners are offline." + # Only used for players with more than 1 partner + PartnerOnlineMulti: "&aFollowing partners are online: &r&f{OnlinePartners}" + # Placeholders: {Name}, {DisplayName}. Keep in mind display names can contain colors! No JSON!!! + MultiOnlineFormat: "{DisplayName}" + # No JSON!!! + MultiOnlineSeparator: "&r, " + # Placeholders: {Name}, {DisplayName} + PartnerNowOnline: "&aYour partner is now online." + # Placeholders: {Name}, {DisplayName} + PartnerNowOffline: "&7Your partner is now offline." + Backpack: + OnlyInSurvival: "&cYou can only access your partner's backpack when you are in survival mode." + ShareOn: "&aYou now share your backpack with your partner." + ShareOff: "&cYou are no longer sharing your backpack with your partner." + Opened: "&aYour partner has opened your backpack." + ShareDenied: "&cYour partner doesn't give you access to their backpack." + Chat: + Joined: "&aYou have set your chat to the private marry chat." + Left: "&aYou have set your chat to public chat." + ListeningStarted: "&aYou are now listening to the marry chat." + ListeningStopped: "&aYou are no longer listening to the marry chat." + TargetSet: "&aPrivate chat target set." + DisplayNameAll: "All Partners" + # Placeholders: {SenderDisplayName}, {SenderName}, {ReceiverDisplayName}, {ReceiverName}, {Message}, {MagicHeart} + Format: "{MagicHeart}&r {SenderDisplayName}&r&6 => &r{ReceiverDisplayName}&r&f: &r{Message}" + Gift: + # Placeholders: {AllowedGameModes}, {CurrentGameMode} + GameModeNotAllowedSender: "&cYou are not allowed to send gifts in your current game mode." + # Placeholders: {AllowedGameModes}, {CurrentGameMode} + GameModeNotAllowedReceiver: "&cYour partner can not receive gifts in their current game mode." + NoItemInHand: "&cYou are not holding an item." + PartnerInvFull: "&cYour partner has no empty space in their inventory." + # Placeholders: {Name}, {DisplayName}, {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + ItemSent: "[{\"text\":\"You have sent your partner \",\"color\":\"green\"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\".\"}]" + # Placeholders: {Name}, {DisplayName}, {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + ItemReceived: "[{\"text\":\"Your \",\"color\":\"green\"},{\"text\":\"partner\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"{DisplayName}\"}},{\"text\":\" has sent you \"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\".\"}]" + WorldNotAllowed: "&cYour partner is in a world where it is not allowed to receive gifts." + ItemNotAllowed: "&cYou are not allowed to gift {ItemName} &cto your partner!" + # Placeholders: {ItemAmount}, {ItemName}, {ItemMetaJSON} = Item as JSON for hover event + Request: + Notification: "[\"\",{\"text\":\"{DisplayName}&r wants to gift you \"},{\"text\":\"{ItemAmount} {ItemName}\",\"hoverEvent\":{\"action\":\"show_item\",\"value\":\"{ItemMetaJSON}\"}},{\"text\":\". Accept the gift with \"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\"}]" + WaitForConfirmation: "Gift request sent to your partner." + Denied: "You denied the gift of your partner." + DeniedPartner: "Your partner denied the gift. Your item has been refunded." + Canceled: "You canceled your gift request." + CanceledPartner: "Your partner canceled the gift request. Your item has been refunded." + CanceledDisconnectRequester: "Your partner went offline. Gift request canceled. Your item has been refunded." + CanceledDisconnectTarget: "Your partner went offline. Gift request canceled." + RefundInvFull: "&cYour inventory is full, dropped leftover gift items on the ground!" + PartnerAlreadyHasAnOpenRequest: "&cYour partner already has an open request. Please wait from them to accept or deny it first." + Home: + Deleted: "&aHome successfully deleted." + PlayerNoHome: "&cThe player doesn't have a home yet." + NoHome: "&cYou have no home yet." + TPed: "&aYou have been teleported to your home." + Set: "&aHome has been saved." + BlockedFrom: "&cYou are not allowed to teleport home from here." + BlockedTo: "&cYou are not allowed to teleport to your home. Please move it." + Kiss: + Kissed: "&eYou have kissed your partner!" + Kissed_SendMethod: "action_bar" + GotKissed: "&eYour partner has kissed you!" + GotKissed_SendMethod: "action_bar" + TooFarAway: "&cYou are too far away to kiss your partner. (Max {Distance} blocks)" + # Placeholders: {Time}, {TimeLeft} in seconds + Wait: "&cYou have to wait {Time} seconds to kiss your partner again." + Hug: + Hugged: "&eYou have hugged your partner!" + Hugged_SendMethod: "action_bar" + GotHugged: "&eYour partner has hugged you!" + GotHugged_SendMethod: "action_bar" + TooFarAway: "&cYou are too far away to hug your partner. (Max {Distance} blocks)" + # Placeholders: {Time}, {TimeLeft} in seconds + Wait: "&cYou have to wait {Time} seconds to hug your partner again." + Seen: + # Placeholders: {Name}, {DisplayName} + CurrentlyOnline: "{DisplayName}&r is currently &aonline&r." + # Placeholders: {Name}, {Date}, {Count}, {CountTotalDays} + LastSeen: "[\"\",{\"text\":\"{Name} was last seen on \",\"extra\":[{\"text\":\"{Date}\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"{Count} ago\"}},{\"text\":\".\"}]}]" + # No Json!!! + DateFormat: "yyyy-MM-dd 'at' HH:mm:ss" + List: + # Placeholders: {Player1Name}, {Player1DisplayName}, {Player2Name}, {Player2DisplayName}, {Surname}, {MagicHeart} + Format: "&2{Player1DisplayName} {MagicHeart} &2{Player2DisplayName}" + NoMarriedPlayers: "&cThere are no married players." + Headline: "&eMarried players list&r&f - &r&6showing page {CurrentPage}/{MaxPage}" + Footer: "[\"\",{\"text\":\"<<< Previous <<<\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"}},{\"text\":\" Showing page {CurrentPage}/{MaxPage} \",\"color\":\"gold\"},{\"text\":\">>> Next >>>\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"}}]" + Partners: + Headline: "&ePartner list of {DisplayName}:" + Footer: "&e##############################" + NotMarried: "{DisplayName}&e is not married." + # Player1 is the player that was queried. Player2 is the partner + Format: "&2{Player1DisplayName} {MagicHeart} &2{Player2DisplayName}" + ListPriests: + Format: "&2{PriestDisplayName}" + NoPriestsOnline: "&cThere are no priests online." + Headline: "&eOnline priests&r&f - &r&6showing page {CurrentPage}/{MaxPage}" + Footer: "[\"\",{\"text\":\"<<< Previous <<<\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {PrevPage}\"}},{\"text\":\" Showing page {CurrentPage}/{MaxPage} \",\"color\":\"gold\"},{\"text\":\">>> Next >>>\",\"color\":\"gray\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"/{MainCommand} {SubCommand} {NextPage}\"}}]" + PvP: + IsDisabled: "&cYou can't hurt your partner if you have PvP disabled." + IsDisabled_SendMethod: "action_bar" + On: "&aYou have now enabled PvP with your partner." + Off: "&aYou have now disabled PvP with your partner." + TP: + PartnerVanished: "&cYou can't use teleport if your partner is vanished." + Teleport: "&aTeleporting to partner..." + TeleportTo: "&aYour partner is teleporting to you..." + Unsafe: "&cTeleport cancelled! You would not survive it!" + ToUnsafe: "&cYour partner was about to teleport to you, but would not survive it!" + WorldNotAllowed: "&cYour partner is in a world where tp is not allowed." + Moved: "&cTeleport canceled! You have moved!" + DontMove: "&cTeleport in {Time} sec! Don't Move!" + BlockedFrom: "&cYou are not allowed to teleport to your partner from here." + BlockedTo: "&cYou are not allowed to teleport to where your partner is." + Request: + Notification: "[\"\",{\"text\":\"{DisplayName}&r wants teleport to you. Accept the teleport with \"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\"}]" + WaitForConfirmation: "Please wait till your partner accepts the teleport." + Denied: "You denied the teleport request of your partner." + DeniedPartner: "Your partner denied the teleport request." + Canceled: "You canceled your teleport request." + CanceledPartner: "Your partner canceled the teleport request." + CanceledDisconnectRequester: "Your partner went offline. Teleport request canceled." + CanceledDisconnectTarget: "Your partner went offline. Teleport request canceled." + SetColor: + UnknownColor: "&cUnable to identify color '{Input}'!" + Set: "Color set." + Selection: '["",{"text":"Please click on how you would like the heart for your marriage to look like:"},{"text":"\n"},{"text":" ❤ ","color":"dark_red","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_red"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &4dark red&r."}},{"text":" ❤ ","color":"red","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} red"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &cred&r."}},{"text":" ❤ ","color":"gold","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} gold"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &6gold&r."}},{"text":" ❤ ","color":"yellow","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} yellow"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &eyellow&r."}},{"text":" ❤ ","color":"dark_green","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_green"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &2dark green&r."}},{"text":" ❤ ","color":"green","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} green"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &agreen&r."}},{"text":" ❤ ","color":"aqua","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} aqua"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &baqua&r."}},{"text":" ❤ ","color":"dark_aqua","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_aqua"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &3dark aqua&r."}},{"text":" ❤ ","color":"dark_blue","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_blue"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &1dark blue&r."}},{"text":" ❤ ","color":"blue","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} blue"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &9blue&r."}},{"text":" ❤ ","color":"light_purple","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} light_purple"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &dlight purple&r."}},{"text":" ❤ ","color":"dark_purple","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_purple"},"hoverEvent":{"action":"show_text","value":"Sets the text of the heart to &5dark purple&r."}},{"text":" ❤ ","color":"white","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} white"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &fwhite&r."}},{"text":" ❤ ","color":"gray","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} gray"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &7gray&r."}},{"text":" ❤ ","color":"dark_gray","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} dark_gary"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to &8dark gray&r."}},{"text":" ❤ ","color":"black","clickEvent":{"action":"run_command","value":"/{MainCmdAlias} {SubCmdAlias} black"},"hoverEvent":{"action":"show_text","value":"Sets the color of the heart to black."}}]' + SetPriest: + # Placeholders: {Name}, {DisplayName}. Keep in mind display names contain colors! + MadeYouAPriest: "{DisplayName}&r&a has made you a priest." + YouMadeAPriest: "{DisplayName}&r&a now is a priest." + FiredYou: "{DisplayName}&r&c has fired you as a priest." + YouFiredAPriest: "{DisplayName}&r&a is no longer a priest." + PerPermission: "{DisplayName}&r&c is set as a priest per permission and can't be fired by command." + Surname: + SetSuccessful: "&aSurname changed." + SetFailed: "&cFailed changing surname." + ToShort: "&cThe given surname is too short. It has to be at least {MinLength} characters long." + ToLong: "&cThe given surname is too long. It can't be more than {MaxLength} characters long." + AlreadyUsed: "&cThe given surname is already in use!" + Banned: "&cThe given surname is not allowed." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to change your surname from\",\"color\":\"white\"},{\"text\":\"{Surname}&r\"},{\"text\":\" to \",\"color\":\"white\"},{\"text\":\"{NewSurname}&r\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Current surname: {Surname}\"}},{\"text\":\". Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + PlayerOff: "{DisplayName}&r is now offline, surname change canceled." + PriestOff: "Priest {DisplayName}&r is now offline, surname change canceled." + PlayerCancelled: "&c&r&c{PlayerDisplayName}&r&c cancelled the surname change to {NewSurname}&r&c!" + PriestCancelled: "&c&r&c{PriestDisplayName}&r&c cancelled the surname change to {NewSurname}&r&c!" + YouCancelled: "&aYou cancelled your surname change to {NewSurname}&r&a!" + YouCancelledPriest: "&aYou cancelled the surname change of &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a to {NewSurname}&r&a!" + Deny: "{DisplayName}&r&c denied the surname change!" + YouDeny: "&aYou denied the surname change to {NewSurname}&r&a." + PlayerOffline: "&cCan't check for consent to change surname while player is offline." + Requests: + NothingToAccept: "&cThere is no open request to accept." + NothingToDeny: "&cThere is no open request to deny." + NothingToCancel: "&cThere is no open request to cancel." + Marry: + # Placeholders: {Name}, {DisplayName}. Keep in mind display names contain colors! + NotWithHimself: "&cYou can't marry &r&c{DisplayName}&r&c with himself." + AlreadySamePair: "&cYou can't marry players that are already married to each other. &r&c{Player1DisplayName}&r&c is already married with &r&c{Player2DisplayName}&r&c." + AlreadyMarried: "&cYou can't marry players that are already married. &r&c{DisplayName}&r&c is already married." + SurnameNeeded: "&cYou need a surname for the couple to marry." + Married: "&aYou have married &r&a{Player1DisplayName}&r&a with &r&a{Player2DisplayName}&r&a." + HasMarried: "{PriestDisplayName}&r&a has married you with &r{PartnerDisplayName}&r&a." + Broadcast: "{PriestDisplayName}&r&a has married {Player1DisplayName}&r&a with &r{Player2DisplayName}&r&a." + NotInRange: "&cThe players are not in range! They need to be within {Range} blocks!" + AlreadyOpenRequest: "{DisplayName}&r&c has already one not answered marry request." + YouCalledOff: "You have called the wedding off." + PlayerCalledOff: "{DisplayName}&r called the wedding off." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to marry you with \",\"color\":\"white\"},{\"text\":\"{PlayerDisplayName}&r\"},{\"text\":\". Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + PriestOff: "Priest {DisplayName}&r is now offline, wedding called off." + PlayerOff: "{DisplayName}&r is now offline, wedding called off." + MaxPartnersReached: "{DisplayName}&r has already reached the maximum allowed amount of partners ({MaxPartnerCount})." + Self: + NotYourself: "&cYou can't marry yourself." + NotInRange: "&cThe player is not in range! They need to be within {Range} blocks!" + AlreadySamePair: "&cWe are already married with &r&c{DisplayName}&r&c!" + AlreadyMarried: "&cYou are already married with &r&c{DisplayName}&r&c!" + OtherAlreadyMarried: "&c&r&c{DisplayName}&r&c is already married!" + AlreadyOpenRequest: "&cYou have already one not answered marry request." + Married: "&aYou have married &r&a{DisplayName}&r&a." + Broadcast: "&a&r&a{Player1DisplayName}&r&a has married &r&a{Player2DisplayName}&r&a." + YouCalledOff: "You have called the wedding off." + PlayerCalledOff: "{DisplayName}&r called the wedding off." + Confirm: "[\"\",{\"text\":\"{DisplayName}&r\"},{\"text\":\" wants to marry you. Accept the marriage with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + RequestSent: "Marriage request sent." + PlayerOff: "{DisplayName}&r is now offline, wedding called off." + NotOnYourOwn: "&cYou can't perform your own wedding. Please ask a priest to perform the wedding for you." + MaxPartnersReached: "You have already reached the maximum allowed amount of partners ({MaxPartnerCount})." + MaxPartnersReachedOther: "{DisplayName}&r has already reached the maximum allowed amount of partners ({MaxPartnerCount})." + Divorce: + Broadcast: "&a&r&a{PriestDisplayName}&r&a has divorced &r&a{Player1DisplayName}&r&a from &r&a{Player2DisplayName}&r&a." + DivorcedPlayer: "&a&r&a{PriestDisplayName}&r&a has divorced your marriage with &r&a{PartnerDisplayName}&r&a." + Divorced: "&aYou have divorced &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a." + PlayerOff: "{DisplayName}&r is now offline, divorce canceled." + PriestOff: "Priest {DisplayName}&r is now offline, divorce canceled." + PlayerCancelled: "&c&r&c{PlayerDisplayName}&r&c cancelled the divorce with &r&c{PartnerDisplayName}&r&c!" + PriestCancelled: "&c&r&c{PriestDisplayName}&r&c cancelled the divorce between you and &r&c{PartnerDisplayName}&r&c!" + YouCancelled: "&aYou cancelled your divorce from &r&a{DisplayName}&r&a!" + YouCancelledPriest: "&aYou cancelled the divorce of &r&a{Player1DisplayName}&r&a and &r&a{Player2DisplayName}&r&a!" + Deny: "{DisplayName}&r&c denied the divorce!" + YouDeny: "&aYou denied the divorce from &r&a{DisplayName}&r&a." + Confirm: "[\"\",{\"text\":\"{PriestDisplayName}&r\"},{\"text\":\" wants to divorce you from \",\"color\":\"white\"},{\"text\":\"{PartnerDisplayName}\"},{\"text\":\". Accept the divorce with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + NotInRange: "&aThe players are not in range! They need to be within {Range} blocks!" + Self: + Divorced: "&aYou left &r&a{DisplayName}&r&a. You are free now." + DivorcedPlayer: "{DisplayName}&r&a has left you. You are free now." + Broadcast: "&a&r&a{Player1DisplayName}&r&a has divorced from &r&a{Player2DisplayName}&r&a." + PlayerOff: "{DisplayName}&r is now offline, divorce canceled." + RequestSent: "Divorce request sent to {DisplayName}&r." + Confirm: "[\"\",{\"text\":\"{DisplayName}&r\"},{\"text\":\" wants to divorce from you. Accept the divorce with \",\"color\":\"white\"},{\"text\":\"/marry accept\",\"color\":\"green\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry accept\"}},{\"text\":\" or deny it with \",\"color\":\"white\"},{\"text\":\"/marry deny\",\"color\":\"red\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/marry deny\"}},{\"text\":\".\",\"color\":\"white\"}]" + Deny: "{DisplayName}&r&c denied your divorce request!" + YouDeny: "&aYou denied &r&a{DisplayName}&r&a's divorce request." + Cancelled: "{DisplayName}&r&c cancelled their divorce request!" + YouCancelled: "&aYou cancelled your divorce request from &r&a{DisplayName}&r&a!" + NotInRange: "&aYour partner is not in range! You need to be within {Range} blocks!" + Economy: + NotEnough: "&cYou don't have enough money! You need {Cost} {CurrencyName} for that." + PartnerNotEnough: "&cYour partner doesn't have enough money!" + PriestMarryNotEnough: "&cThe players you are trying to marry don't have enough money." + PriestDivorceNotEnough: "&cThe players you are trying to divorce don't have enough money." + MarriagePaid: "&aYou paid {Cost} {CurrencyName} for your marriage ({Remaining} {CurrencyName} left)." + DivorcePaid: "&aYou paid {Cost} {CurrencyName} for the annul of your marriage ({Remaining} {CurrencyName} left)." + HomeTPPaid: "&aYou paid {Cost} {CurrencyName} for your home teleport ({Remaining} {CurrencyName} left)." + SetHomePaid: "&aYou paid {Cost} {CurrencyName} to set your Home ({Remaining} {CurrencyName} left)." + TpPaid: "&aYou paid {Cost} {CurrencyName} for the Teleport ({Remaining} {CurrencyName} left)." + GiftPaid: "&aYou have paid {Cost} {CurrencyName} for gifting an item to your partner ({Remaining} {CurrencyName} left)." + SurnameChangePaid: "&aYou have paid {Cost} {CurrencyName} to change a surename ({Remaining} {CurrencyName} left)." + Admin: + Reloading: "&1Reloading ..." + Reloaded: "&1Reloaded!" + ReloadingDatabase: '&bReloading database &6.&r&c.&r&a.&r' + CheckingForUpdates: "&1Checking for updates ..." + Updated: "&ePlugin updated, will be loaded on next restart/reload." + NoUpdate: "&6No plugin update available." + UpdateFail: "&cThere was a problem looking for updates! Please check the console!" + # You can change this message if you like to, but don't cry if the link isn't linking to the plugin anymore! + UpdateAvailable: "[{\"text\":\"There is an update available! Please go to \\\"\",\"color\":\"green\"},{\"text\":\"https://www.spigotmc.org/resources/marriage-master-mc-1-7-1-9.19273/\",\"color\":\"yellow\",\"underlined\":true,\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.spigotmc.org/resources/marriage-master-mc-1-7-1-9.19273/\"}},{\"text\":\"\\\" to download it!\"}]" + Help: + Header: "&6### Marriage Master Commands ###" + Footer: "&6#############################" + # Allows you to define messages that should be sent if the player uses the "/marry" command without any parameters (HelpMode must be set to CustomHelp in the config) + CustomHelp: + # Will be used if the player is married + Married: + - " &3__&b&lMarry Commands&r&3__" + - + - '[{"text":" ➤ ","color":"white"},{"text":"/marry kiss","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry kiss"}},{"text":" kiss your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"yellow"},{"text":"/marry tp","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry tp"}},{"text":" tp to your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"gold"},{"text":"/marry chat toggle","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry chat toggle"}},{"text":" talk private whit your partner","color":"aqua"}]' + - '[{"text":" ➤ ","color":"gold"},{"text":"/marry gift","color":"dark_aqua","bold":true,"underlined":true,"clickEvent":{"action":"run_command","value":"/marry gift"}},{"text":" give your partners things","color":"aqua"}]' + - '[{"text":"Use ","color":"dark_green"},{"text":"/marry help","color":"dark_aqua","bold":true},{"text":" for full list of all commands"}]' + # Will be used if the player is a priest + Priest: + - " &3__&b&lMarry&r&3__" + - "&b You can marry players by using /marry marry " + - '[{"text":"Use ","color":"dark_green"},{"text":"/marry help","color":"dark_aqua","bold":true},{"text":" for full list of all commands"}]' + # Will be used if the player is neither married nor a priest + Default: + - " &3__&b&lMarry&r&3__" + - "&cYou must be married to use this command" + + Commands: + HelpFormat: "[\"\",{\"text\":\"/{MainCommand} {SubCommand} {Parameters}\",\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/{MainCommand} {SubCommand}\"}},{\"text\":\" - \",\"color\":\"white\"},{\"text\":\"{Description}\",\"color\":\"aqua\"}]" + # No color codes please + PlayerNameVariable: "player_name" + PartnerNameVariable: "partner_name" + SurnameVariable: "surname" + MessageVariable: "message" + Description: + Backpack: "Opens the backpack of your partner." + BackpackOn: "Allows your partner to use your backpack." + BackpackOff: "Disallows your partner to use your backpack." + Chat: "Private chat with your partner." + ChatSetTarget: "Changes the private message target. If not changed all partners will get the message." + ChatToggle: "Toggles your chat to be private with your partner." + ChatListen: "Shows all chat-messages sent from a married player to their partner." + Gift: "Gifts the item in your hand to your partner." + Home: "Teleports you to your home." + HomeOther: "Teleports you to a married players home." + SetHome: "Sets your home." + SetHomeOther: "Sets the home of a married player." + DelHome: "Deletes your home." + DelHomeOther: "Deletes the home of a married player." + Help: "Shows all available commands and their description." + List: "Lists all married players." + ListPriests: "Lists all currently online priests." + Partners: "List all partners of a player" + PvP: "Changes PvP status with partner." + PvPOn: "Enables PvP with partner." + PvPOff: "Disables PvP with partner." + Tp: "Teleports you to your partner." + Kiss: "You kiss your partner." + Hug: "You hug your partner." + Seen: "Shows when your partner was online the last time." + Marry: "Marry two players." + MarrySelf: "Sends a marry request to another player." + Divorce: "Divorces two players." + DivorceSelf: "To leave your partner." + Surname: "Changes the surname of a couple." + SurnameSelf: "Changes the surname from your partner and you." + Update: "Checks if there is an update available and downloads it." + Accept: "Accepts an open request." + Cancel: "Cancels an open request." + Deny: "Denies an open request." + SetColor: "Sets the color of the marriage." + SetPriest: "Promotes/Demotes a player to a priest." + Reload: "Reloads the config of the plugin." + Version: "Prints the version details about the plugin and it's dependencies." +# The fist option in the list will be the one displayed in the commands help +Command: + Switches: + On: + - on + - true + - yes + Off: + - off + - false + - no + Toggle: + - toggle + - switch + All: + - all + Remove: + - remove + - rm + - delete + - del + - clear + - clean + Main: + - marry + Backpack: + - backpack + - bp + Chat: + - chat + ChatSetTarget: + - settarget + - target + ChatToggle: + - chattoggle + ChatListen: + - listenchat + - chatlisten + Gift: + - gift + - send + - give + Help: + - help + Home: + - home + SetHome: + - sethome + - definehome + - savehome + DelHome: + - delhome + - deletehome + - unsethome + PvP: + - pvp + Kiss: + - kiss + Hug: + - hug + Seen: + - seen + - lastOnline + PvPOn: + - pvpon + PvPOff: + - pvpoff + List: + - list + ListPriests: + - listpriests + Partners: + - partners + - listpartners + - partnerlist + Tp: + - tp + SetColor: + - setcolor + Marry: + - marry + Divorce: + - divorce + SetPriest: + - setpriest + Update: + - update + Version: + - version + Accept: + - accept + Cancel: + - cancel + Deny: + - deny +Dialog: + # Placeholders: {Planer1Name}, {Player1DisplayName}, {Planer2Name}, {Player2DisplayName} + DoYouWant: "Do you {Player1Name}, want to marry {Player2Name} on this server?" + # Placeholders: {Planer1Name}, {Player1DisplayName}, {Planer2Name}, {Player2DisplayName} + AndDoYouWant: "And do you {Player2Name}, want to marry {Player1Name} on this server?" + # Placeholders: {Planer1Name}, {Player1DisplayName}, {Planer2Name}, {Player2DisplayName} + Married: "I now pronounce {Player1Name} and {Player2Name} married! You may now kiss." + YesIWant: "Yes, I will!" + NoIDontWant: "No, I will not!" +# This selection allows to change the placeholder return values. You can change them if you like. https://github.com/GeorgH93/MarriageMaster/wiki/Placeholders +Placeholders: + # The default formatting data that should be used if nothing else is specified + Default: + Boolean: + True: true + False: false + NotMarried: "not married" + NoHome: "no home" + Separator: "&r, " + NoPartnerForSlot: "" + Years: "&6{years}&ey " + Months: "&6{months}&eM " + Days: "&6{days}&ed " + Hours: "&6{hours}&eh " + Minutes: "&6{minutes}&em" + TimeMain: "{years}{months}{days}{hours}{minutes}" + Heart: + Married: "&c&f" + NotMarried: "" + MagicHeart: + Married: "&f" + NotMarried: "" + Prefix: + NotMarried: "" + Suffix: + NotMarried: "" + StatusHeart: + Married: "&c&f" + NotMarried: "&7&f" + Home: + # Order: world, x, y, z + Married: "%1$s %2$.1f %3$.1f %4$.1f" + HomeCoordinates: + # Order: x, y, z + Married: "%1$.1f %2$.1f %3$.1f" + NearestHome: + # Order: world, x, y, z + Married: "%1$s %2$.1f %3$.1f %4$.1f" + NearestHomeCoordinates: + # Order: x, y, z + Married: "%1$.1f %2$.1f %3$.1f" + + +# The name of the language represented by the language file +LanguageName: "English" +# The author of the language file +Author: "GeorgH93" + +# Language file version. Don't touch it! +Version: 114 +Revision: 1 \ No newline at end of file diff --git a/live-server/plugins/MarriageMaster/lang/items_en.yml b/live-server/plugins/MarriageMaster/lang/items_en.yml new file mode 100755 index 0000000..2f4347d --- /dev/null +++ b/live-server/plugins/MarriageMaster/lang/items_en.yml @@ -0,0 +1,861 @@ +# This file contains the known block/item names for the ItemNameResolver. +# These names will be used for all plugins that support this library. + +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Attention !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# If you make changes here make sure to update the "Language.ItemUpdateMode" in the "config.yml" to make sure your changes wont get overwritten!!! +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Attention !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +# For all items that are not in the file the names from the Bukkit Materials enum will be used. + +Items: + air: "Air" + barrier: "Barrier" + stone: "Stone" + granite: "Granite" + polished_granite: "Polished Granite" + diorite: "Diorite" + polished_diorite: "Polished Diorite" + andesite: "Andesite" + polished_andesite: "Polished Andesite" + hay_block: "Hay Bale" + grass_block: "Grass Block" + dirt: "Dirt" + coarse_dirt: "Coarse Dirt" + podzol: "Podzol" + cobblestone: "Cobblestone" + oak_planks: "Oak Planks" + spruce_planks: "Spruce Planks" + birch_planks: "Birch Planks" + jungle_planks: "Jungle Planks" + acacia_planks: "Acacia Planks" + dark_oak_planks: "Dark Oak Planks" + oak_sapling: "Oak Sapling" + spruce_sapling: "Spruce Sapling" + birch_sapling: "Birch Sapling" + jungle_sapling: "Jungle Sapling" + acacia_sapling: "Acacia Sapling" + dark_oak_sapling: "Dark Oak Sapling" + oak_door: "Oak Door" + spruce_door: "Spruce Door" + birch_door: "Birch Door" + jungle_door: "Jungle Door" + acacia_door: "Acacia Door" + dark_oak_door: "Dark Oak Door" + bedrock: "Bedrock" + water: "Water" + lava: "Lava" + flowing_water: "Flowing Water" + flowing_lava: "Flowing Lava" + sand: "Sand" + red_sand: "Red Sand" + sandstone: "Sandstone" + chiseled_sandstone: "Chiseled Sandstone" + cut_sandstone: "Cut Sandstone" + red_sandstone: "Red Sandstone" + chiseled_red_sandstone: "Chiseled Red Sandstone" + cut_red_sandstone: "Cut Red Sandstone" + gravel: "Gravel" + gold_ore: "Gold Ore" + iron_ore: "Iron Ore" + coal_ore: "Coal Ore" + oak_wood: "Oak Wood" + spruce_wood: "Spruce Wood" + birch_wood: "Birch Wood" + jungle_wood: "Jungle Wood" + acacia_wood: "Acacia Wood" + dark_oak_wood: "Dark Oak Wood" + oak_log: "Oak Log" + spruce_log: "Spruce Log" + birch_log: "Birch Log" + jungle_log: "Jungle Log" + acacia_log: "Acacia Log" + dark_oak_log: "Dark Oak Log" + stripped_oak_log: "Stripped Oak Log" + stripped_spruce_log: "Stripped Spruce Log" + stripped_birch_log: "Stripped Birch Log" + stripped_jungle_log: "Stripped Jungle Log" + stripped_acacia_log: "Stripped Acacia Log" + stripped_dark_oak_log: "Stripped Dark Oak Log" + stripped_oak_wood: "Stripped Oak Wood" + stripped_spruce_wood: "Stripped Spruce Wood" + stripped_birch_wood: "Stripped Birch Wood" + stripped_jungle_wood: "Stripped Jungle Wood" + stripped_acacia_wood: "Stripped Acacia Wood" + stripped_dark_oak_wood: "Stripped Dark Oak Wood" + oak_leaves: "Oak Leaves" + spruce_leaves: "Spruce Leaves" + birch_leaves: "Birch Leaves" + jungle_leaves: "Jungle Leaves" + acacia_leaves: "Acacia Leaves" + dark_oak_leaves: "Dark Oak Leaves" + dead_bush: "Dead Bush" + grass: "Grass" + fern: "Fern" + sponge: "Sponge" + wet_sponge: "Wet Sponge" + glass: "Glass" + kelp_plant: "Kelp Plant" + kelp: "Kelp" + dried_kelp_block: "Dried Kelp Block" + white_stained_glass: "White Stained Glass" + orange_stained_glass: "Orange Stained Glass" + magenta_stained_glass: "Magenta Stained Glass" + light_blue_stained_glass: "Light Blue Stained Glass" + yellow_stained_glass: "Yellow Stained Glass" + lime_stained_glass: "Lime Stained Glass" + pink_stained_glass: "Pink Stained Glass" + gray_stained_glass: "Gray Stained Glass" + light_gray_stained_glass: "Light Gray Stained Glass" + cyan_stained_glass: "Cyan Stained Glass" + purple_stained_glass: "Purple Stained Glass" + blue_stained_glass: "Blue Stained Glass" + brown_stained_glass: "Brown Stained Glass" + green_stained_glass: "Green Stained Glass" + red_stained_glass: "Red Stained Glass" + black_stained_glass: "Black Stained Glass" + white_stained_glass_pane: "White Stained Glass Pane" + orange_stained_glass_pane: "Orange Stained Glass Pane" + magenta_stained_glass_pane: "Magenta Stained Glass Pane" + light_blue_stained_glass_pane: "Light Blue Stained Glass Pane" + yellow_stained_glass_pane: "Yellow Stained Glass Pane" + lime_stained_glass_pane: "Lime Stained Glass Pane" + pink_stained_glass_pane: "Pink Stained Glass Pane" + gray_stained_glass_pane: "Gray Stained Glass Pane" + light_gray_stained_glass_pane: "Light Gray Stained Glass Pane" + cyan_stained_glass_pane: "Cyan Stained Glass Pane" + purple_stained_glass_pane: "Purple Stained Glass Pane" + blue_stained_glass_pane: "Blue Stained Glass Pane" + brown_stained_glass_pane: "Brown Stained Glass Pane" + green_stained_glass_pane: "Green Stained Glass Pane" + red_stained_glass_pane: "Red Stained Glass Pane" + black_stained_glass_pane: "Black Stained Glass Pane" + glass_pane: "Glass Pane" + dandelion: "Dandelion" + poppy: "Poppy" + blue_orchid: "Blue Orchid" + allium: "Allium" + azure_bluet: "Azure Bluet" + red_tulip: "Red Tulip" + orange_tulip: "Orange Tulip" + white_tulip: "White Tulip" + pink_tulip: "Pink Tulip" + oxeye_daisy: "Oxeye Daisy" + sunflower: "Sunflower" + lilac: "Lilac" + tall_grass: "Tall Grass" + tall_seagrass: "Tall Seagrass" + large_fern: "Large Fern" + rose_bush: "Rose Bush" + peony: "Peony" + seagrass: "Seagrass" + sea_pickle: "Sea Pickle" + brown_mushroom: "Brown Mushroom" + red_mushroom_block: "Red Mushroom Block" + brown_mushroom_block: "Brown Mushroom Block" + mushroom_stem: "Mushroom Stem" + gold_block: "Block of Gold" + iron_block: "Block of Iron" + smooth_stone: "Smooth Stone" + smooth_sandstone: "Smooth Sandstone" + smooth_red_sandstone: "Smooth Red Sandstone" + smooth_quartz: "Smooth Quartz" + stone_slab: "Stone Slab" + sandstone_slab: "Sandstone Slab" + red_sandstone_slab: "Red Sandstone Slab" + petrified_oak_slab: "Petrified Oak Slab" + cobblestone_slab: "Cobblestone Slab" + brick_slab: "Brick Slab" + stone_brick_slab: "Stone Brick Slab" + nether_brick_slab: "Nether Brick Slab" + quartz_slab: "Quartz Slab" + oak_slab: "Oak Slab" + spruce_slab: "Spruce Slab" + birch_slab: "Birch Slab" + jungle_slab: "Jungle Slab" + acacia_slab: "Acacia Slab" + dark_oak_slab: "Dark Oak Slab" + dark_prismarine_slab: "Dark Prismarine Slab" + prismarine_slab: "Prismarine Slab" + prismarine_brick_slab: "Prismarine Brick Slab" + bricks: "Bricks" + tnt: "TNT" + bookshelf: "Bookshelf" + mossy_cobblestone: "Mossy Cobblestone" + obsidian: "Obsidian" + torch: "Torch" + wall_torch: "Wall Torch" + fire: "Fire" + spawner: "Spawner" + oak_stairs: "Oak Stairs" + spruce_stairs: "Spruce Stairs" + birch_stairs: "Birch Stairs" + jungle_stairs: "Jungle Stairs" + acacia_stairs: "Acacia Stairs" + dark_oak_stairs: "Dark Oak Stairs" + dark_prismarine_stairs: "Dark Prismarine Stairs" + prismarine_stairs: "Prismarine Stairs" + prismarine_brick_stairs: "Prismarine Brick Stairs" + chest: "Chest" + trapped_chest: "Trapped Chest" + redstone_wire: "Redstone Dust" + diamond_ore: "Diamond Ore" + coal_block: "Block of Coal" + diamond_block: "Block of Diamond" + crafting_table: "Crafting Table" + farmland: "Farmland" + furnace: "Furnace" + sign: "Sign" + wall_sign: "Wall Sign" + ladder: "Ladder" + rail: "Rail" + powered_rail: "Powered Rail" + activator_rail: "Activator Rail" + detector_rail: "Detector Rail" + cobblestone_stairs: "Cobblestone Stairs" + sandstone_stairs: "Sandstone Stairs" + red_sandstone_stairs: "Red Sandstone Stairs" + lever: "Lever" + stone_pressure_plate: "Stone Pressure Plate" + oak_pressure_plate: "Oak Pressure Plate" + spruce_pressure_plate: "Spruce Pressure Plate" + birch_pressure_plate: "Birch Pressure Plate" + jungle_pressure_plate: "Jungle Pressure Plate" + acacia_pressure_plate: "Acacia Pressure Plate" + dark_oak_pressure_plate: "Dark Oak Pressure Plate" + light_weighted_pressure_plate: "Light Weighted Pressure Plate" + heavy_weighted_pressure_plate: "Heavy Weighted Pressure Plate" + iron_door: "Iron Door" + redstone_ore: "Redstone Ore" + redstone_torch: "Redstone Torch" + redstone_wall_torch: "Redstone Wall Torch" + stone_button: "Stone Button" + oak_button: "Oak Button" + spruce_button: "Spruce Button" + birch_button: "Birch Button" + jungle_button: "Jungle Button" + acacia_button: "Acacia Button" + dark_oak_button: "Dark Oak Button" + snow: "Snow" + white_carpet: "White Carpet" + orange_carpet: "Orange Carpet" + magenta_carpet: "Magenta Carpet" + light_blue_carpet: "Light Blue Carpet" + yellow_carpet: "Yellow Carpet" + lime_carpet: "Lime Carpet" + pink_carpet: "Pink Carpet" + gray_carpet: "Gray Carpet" + light_gray_carpet: "Light Gray Carpet" + cyan_carpet: "Cyan Carpet" + purple_carpet: "Purple Carpet" + blue_carpet: "Blue Carpet" + brown_carpet: "Brown Carpet" + green_carpet: "Green Carpet" + red_carpet: "Red Carpet" + black_carpet: "Black Carpet" + ice: "Ice" + frosted_ice: "Frosted Ice" + packed_ice: "Packed Ice" + blue_ice: "Blue Ice" + cactus: "Cactus" + clay: "Clay" + white_terracotta: "White Terracotta" + orange_terracotta: "Orange Terracotta" + magenta_terracotta: "Magenta Terracotta" + light_blue_terracotta: "Light Blue Terracotta" + yellow_terracotta: "Yellow Terracotta" + lime_terracotta: "Lime Terracotta" + pink_terracotta: "Pink Terracotta" + gray_terracotta: "Gray Terracotta" + light_gray_terracotta: "Light Gray Terracotta" + cyan_terracotta: "Cyan Terracotta" + purple_terracotta: "Purple Terracotta" + blue_terracotta: "Blue Terracotta" + brown_terracotta: "Brown Terracotta" + green_terracotta: "Green Terracotta" + red_terracotta: "Red Terracotta" + black_terracotta: "Black Terracotta" + terracotta: "Terracotta" + sugar_cane: "Sugar Cane" + jukebox: "Jukebox" + oak_fence: "Oak Fence" + spruce_fence: "Spruce Fence" + birch_fence: "Birch Fence" + jungle_fence: "Jungle Fence" + dark_oak_fence: "Dark Oak Fence" + acacia_fence: "Acacia Fence" + oak_fence_gate: "Oak Fence Gate" + spruce_fence_gate: "Spruce Fence Gate" + birch_fence_gate: "Birch Fence Gate" + jungle_fence_gate: "Jungle Fence Gate" + dark_oak_fence_gate: "Dark Oak Fence Gate" + acacia_fence_gate: "Acacia Fence Gate" + pumpkin_stem: "Pumpkin Stem" + attached_pumpkin_stem: "Attached Pumpkin Stem" + pumpkin: "Pumpkin" + carved_pumpkin: "Carved Pumpkin" + jack_o_lantern: "Jack o'Lantern" + netherrack: "Netherrack" + soul_sand: "Soul Sand" + glowstone: "Glowstone" + nether_portal: "Nether Portal" + white_wool: "White Wool" + orange_wool: "Orange Wool" + magenta_wool: "Magenta Wool" + light_blue_wool: "Light Blue Wool" + yellow_wool: "Yellow Wool" + lime_wool: "Lime Wool" + pink_wool: "Pink Wool" + gray_wool: "Gray Wool" + light_gray_wool: "Light Gray Wool" + cyan_wool: "Cyan Wool" + purple_wool: "Purple Wool" + blue_wool: "Blue Wool" + brown_wool: "Brown Wool" + green_wool: "Green Wool" + red_wool: "Red Wool" + black_wool: "Black Wool" + lapis_ore: "Lapis Lazuli Ore" + lapis_block: "Lapis Lazuli Block" + dispenser: "Dispenser" + dropper: "Dropper" + note_block: "Note Block" + cake: "Cake" + bed: "Bed" + oak_trapdoor: "Oak Trapdoor" + spruce_trapdoor: "Spruce Trapdoor" + birch_trapdoor: "Birch Trapdoor" + jungle_trapdoor: "Jungle Trapdoor" + acacia_trapdoor: "Acacia Trapdoor" + dark_oak_trapdoor: "Dark Oak Trapdoor" + iron_trapdoor: "Iron Trapdoor" + cobweb: "Cobweb" + stone_bricks: "Stone Bricks" + mossy_stone_bricks: "Mossy Stone Bricks" + cracked_stone_bricks: "Cracked Stone Bricks" + chiseled_stone_bricks: "Chiseled Stone Bricks" + infested_stone: "Infested Stone" + infested_cobblestone: "Infested Cobblestone" + infested_stone_bricks: "Infested Stone Bricks" + infested_mossy_stone_bricks: "Infested Mossy Stone Bricks" + infested_cracked_stone_bricks: "Infested Cracked Stone Bricks" + infested_chiseled_stone_bricks: "Infested Chiseled Stone Bricks" + piston: "Piston" + sticky_piston: "Sticky Piston" + iron_bars: "Iron Bars" + melon: "Melon" + brick_stairs: "Brick Stairs" + stone_brick_stairs: "Stone Brick Stairs" + vine: "Vines" + nether_bricks: "Nether Bricks" + nether_brick_fence: "Nether Brick Fence" + nether_brick_stairs: "Nether Brick Stairs" + nether_wart: "Nether Wart" + cauldron: "Cauldron" + enchanting_table: "Enchanting Table" + anvil: "Anvil" + chipped_anvil: "Chipped Anvil" + damaged_anvil: "Damaged Anvil" + end_stone: "End Stone" + end_portal_frame: "End Portal Frame" + mycelium: "Mycelium" + lily_pad: "Lily Pad" + dragon_egg: "Dragon Egg" + redstone_lamp: "Redstone Lamp" + cocoa: "Cocoa" + ender_chest: "Ender Chest" + emerald_ore: "Emerald Ore" + emerald_block: "Block of Emerald" + redstone_block: "Block of Redstone" + tripwire: "Tripwire" + tripwire_hook: "Tripwire Hook" + command_block: "Command Block" + repeating_command_block: "Repeating Command Block" + chain_command_block: "Chain Command Block" + beacon: "Beacon" + cobblestone_wall: "Cobblestone Wall" + mossy_cobblestone_wall: "Mossy Cobblestone Wall" + carrots: "Carrots" + potatoes: "Potatoes" + daylight_detector: "Daylight Detector" + nether_quartz_ore: "Nether Quartz Ore" + hopper: "Hopper" + quartz_block: "Block of Quartz" + chiseled_quartz_block: "Chiseled Quartz Block" + quartz_pillar: "Quartz Pillar" + quartz_stairs: "Quartz Stairs" + slime_block: "Slime Block" + prismarine: "Prismarine" + prismarine_bricks: "Prismarine Bricks" + dark_prismarine: "Dark Prismarine" + sea_lantern: "Sea Lantern" + end_rod: "End Rod" + chorus_plant: "Chorus Plant" + chorus_flower: "Chorus Flower" + purpur_block: "Purpur Block" + purpur_pillar: "Purpur Pillar" + purpur_stairs: "Purpur Stairs" + purpur_slab: "Purpur Slab" + end_stone_bricks: "End Stone Bricks" + beetroots: "Beetroots" + grass_path: "Grass Path" + magma_block: "Magma Block" + nether_wart_block: "Nether Wart Block" + red_nether_bricks: "Red Nether Bricks" + bone_block: "Bone Block" + observer: "Observer" + shulker_box: "Shulker Box" + white_shulker_box: "White Shulker Box" + orange_shulker_box: "Orange Shulker Box" + magenta_shulker_box: "Magenta Shulker Box" + light_blue_shulker_box: "Light Blue Shulker Box" + yellow_shulker_box: "Yellow Shulker Box" + lime_shulker_box: "Lime Shulker Box" + pink_shulker_box: "Pink Shulker Box" + gray_shulker_box: "Gray Shulker Box" + light_gray_shulker_box: "Light Gray Shulker Box" + cyan_shulker_box: "Cyan Shulker Box" + purple_shulker_box: "Purple Shulker Box" + blue_shulker_box: "Blue Shulker Box" + brown_shulker_box: "Brown Shulker Box" + green_shulker_box: "Green Shulker Box" + red_shulker_box: "Red Shulker Box" + black_shulker_box: "Black Shulker Box" + white_glazed_terracotta: "White Glazed Terracotta" + orange_glazed_terracotta: "Orange Glazed Terracotta" + magenta_glazed_terracotta: "Magenta Glazed Terracotta" + light_blue_glazed_terracotta: "Light Blue Glazed Terracotta" + yellow_glazed_terracotta: "Yellow Glazed Terracotta" + lime_glazed_terracotta: "Lime Glazed Terracotta" + pink_glazed_terracotta: "Pink Glazed Terracotta" + gray_glazed_terracotta: "Gray Glazed Terracotta" + light_gray_glazed_terracotta: "Light Gray Glazed Terracotta" + cyan_glazed_terracotta: "Cyan Glazed Terracotta" + purple_glazed_terracotta: "Purple Glazed Terracotta" + blue_glazed_terracotta: "Blue Glazed Terracotta" + brown_glazed_terracotta: "Brown Glazed Terracotta" + green_glazed_terracotta: "Green Glazed Terracotta" + red_glazed_terracotta: "Red Glazed Terracotta" + black_glazed_terracotta: "Black Glazed Terracotta" + black_concrete: "Black Concrete" + red_concrete: "Red Concrete" + green_concrete: "Green Concrete" + brown_concrete: "Brown Concrete" + blue_concrete: "Blue Concrete" + purple_concrete: "Purple Concrete" + cyan_concrete: "Cyan Concrete" + light_gray_concrete: "Light Gray Concrete" + gray_concrete: "Gray Concrete" + pink_concrete: "Pink Concrete" + lime_concrete: "Lime Concrete" + yellow_concrete: "Yellow Concrete" + light_blue_concrete: "Light Blue Concrete" + magenta_concrete: "Magenta Concrete" + orange_concrete: "Orange Concrete" + white_concrete: "White Concrete" + black_concrete_powder: "Black Concrete Powder" + red_concrete_powder: "Red Concrete Powder" + green_concrete_powder: "Green Concrete Powder" + brown_concrete_powder: "Brown Concrete Powder" + blue_concrete_powder: "Blue Concrete Powder" + purple_concrete_powder: "Purple Concrete Powder" + cyan_concrete_powder: "Cyan Concrete Powder" + light_gray_concrete_powder: "Light Gray Concrete Powder" + gray_concrete_powder: "Gray Concrete Powder" + pink_concrete_powder: "Pink Concrete Powder" + lime_concrete_powder: "Lime Concrete Powder" + yellow_concrete_powder: "Yellow Concrete Powder" + light_blue_concrete_powder: "Light Blue Concrete Powder" + magenta_concrete_powder: "Magenta Concrete Powder" + orange_concrete_powder: "Orange Concrete Powder" + white_concrete_powder: "White Concrete Powder" + turtle_egg: "Turtle Egg" + two_turtle_eggs: "Two Turtle Eggs" + three_turtle_eggs: "Three Turtle Eggs" + four_turtle_eggs: "Four Turtle Eggs" + banner: "Banner" + wall_banner: "Wall Banner" + piston_head: "Piston Head" + moving_piston: "Moving Piston" + red_mushroom: "Red Mushroom" + snow_block: "Snow Block" + attached_melon_stem: "Attached Melon Stem" + melon_stem: "Melon Stem" + brewing_stand: "Brewing Stand" + end_portal: "End Portal" + flower_pot: "Flower Pot" + potted_oak_sapling: "Potted Oak Sapling" + potted_spruce_sapling: "Potted Spruce Sapling" + potted_birch_sapling: "Potted Birch Sapling" + potted_jungle_sapling: "Potted Jungle Sapling" + potted_acacia_sapling: "Potted Acacia Sapling" + potted_dark_oak_sapling: "Potted Dark Oak Sapling" + potted_fern: "Potted Fern" + potted_dandelion: "Potted Dandelion" + potted_poppy: "Potted Poppy" + potted_blue_orchid: "Potted Blue Orchid" + potted_allium: "Potted Allium" + potted_azure_bluet: "Potted Azure Bluet" + potted_red_tulip: "Potted Red Tulip" + potted_orange_tulip: "Potted Orange Tulip" + potted_white_tulip: "Potted White Tulip" + potted_pink_tulip: "Potted Pink Tulip" + potted_oxeye_daisy: "Potted Oxeye Daisy" + potted_red_mushroom: "Potted Red Mushroom" + potted_brown_mushroom: "Potted Brown Mushroom" + potted_dead_bush: "Potted Dead Bush" + potted_cactus: "Potted Cactus" + skeleton_wall_skull: "Skeleton Wall Skull" + skeleton_skull: "Skeleton Skull" + wither_skeleton_wall_skull: "Wither Skeleton Wall Skull" + wither_skeleton_skull: "Wither Skeleton Skull" + zombie_wall_head: "Zombie Wall Head" + zombie_head: "Zombie Head" + player_wall_head: "Player Wall Head" + player_head: "Player Head" + creeper_wall_head: "Creeper Wall Head" + creeper_head: "Creeper Head" + dragon_wall_head: "Dragon Wall Head" + dragon_head: "Dragon Head" + end_gateway: "End Gateway" + structure_void: "Structure Void" + structure_block: "Structure Block" + void_air: "Void Air" + cave_air: "Cave Air" + bubble_column: "Bubble Column" + dead_tube_coral_block: "Dead Tube Coral Block" + dead_brain_coral_block: "Dead Brain Coral Block" + dead_bubble_coral_block: "Dead Bubble Coral Block" + dead_fire_coral_block: "Dead Fire Coral Block" + dead_horn_coral_block: "Dead Horn Coral Block" + tube_coral_block: "Tube Coral Block" + brain_coral_block: "Brain Coral Block" + bubble_coral_block: "Bubble Coral Block" + fire_coral_block: "Fire Coral Block" + horn_coral_block: "Horn Coral Block" + tube_coral: "Tube Coral" + brain_coral: "Brain Coral" + bubble_coral: "Bubble Coral" + fire_coral: "Fire Coral" + horn_coral: "Horn Coral" + dead_tube_coral: "Dead Tube Coral" + dead_brain_coral: "Dead Brain Coral" + dead_bubble_coral: "Dead Bubble Coral" + dead_fire_coral: "Dead Fire Coral" + dead_horn_coral: "Dead Horn Coral" + tube_coral_fan: "Tube Coral Fan" + brain_coral_fan: "Brain Coral Fan" + bubble_coral_fan: "Bubble Coral Fan" + fire_coral_fan: "Fire Coral Fan" + horn_coral_fan: "Horn Coral Fan" + dead_tube_coral_fan: "Dead Tube Coral Fan" + dead_brain_coral_fan: "Dead Brain Coral Fan" + dead_bubble_coral_fan: "Dead Bubble Coral Fan" + dead_fire_coral_fan: "Dead Fire Coral Fan" + dead_horn_coral_fan: "Dead Horn Coral Fan" + tube_coral_wall_fan: "Tube Coral Wall Fan" + brain_coral_wall_fan: "Brain Coral Wall Fan" + bubble_coral_wall_fan: "Bubble Coral Wall Fan" + fire_coral_wall_fan: "Fire Coral Wall Fan" + horn_coral_wall_fan: "Horn Coral Wall Fan" + dead_tube_coral_wall_fan: "Dead Tube Coral Wall Fan" + dead_brain_coral_wall_fan: "Dead Brain Coral Wall Fan" + dead_bubble_coral_wall_fan: "Dead Bubble Coral Wall Fan" + dead_fire_coral_wall_fan: "Dead Fire Coral Wall Fan" + dead_horn_coral_wall_fan: "Dead Horn Coral Wall Fan" + conduit: "Conduit" + name_tag: "Name Tag" + lead: "Lead" + iron_shovel: "Iron Shovel" + iron_pickaxe: "Iron Pickaxe" + iron_axe: "Iron Axe" + flint_and_steel: "Flint and Steel" + apple: "Apple" + cookie: "Cookie" + bow: "Bow" + arrow: "Arrow" + spectral_arrow: "Spectral Arrow" + tipped_arrow: "Tipped Arrow" + dried_kelp: "Dried Kelp" + coal: "Coal" + charcoal: "Charcoal" + diamond: "Diamond" + emerald: "Emerald" + iron_ingot: "Iron Ingot" + gold_ingot: "Gold Ingot" + iron_sword: "Iron Sword" + wooden_sword: "Wooden Sword" + wooden_shovel: "Wooden Shovel" + wooden_pickaxe: "Wooden Pickaxe" + wooden_axe: "Wooden Axe" + stone_sword: "Stone Sword" + stone_shovel: "Stone Shovel" + stone_pickaxe: "Stone Pickaxe" + stone_axe: "Stone Axe" + diamond_sword: "Diamond Sword" + diamond_shovel: "Diamond Shovel" + diamond_pickaxe: "Diamond Pickaxe" + diamond_axe: "Diamond Axe" + stick: "Stick" + bowl: "Bowl" + mushroom_stew: "Mushroom Stew" + golden_sword: "Golden Sword" + golden_shovel: "Golden Shovel" + golden_pickaxe: "Golden Pickaxe" + golden_axe: "Golden Axe" + string: "String" + feather: "Feather" + gunpowder: "Gunpowder" + wooden_hoe: "Wooden Hoe" + stone_hoe: "Stone Hoe" + iron_hoe: "Iron Hoe" + diamond_hoe: "Diamond Hoe" + golden_hoe: "Golden Hoe" + wheat_seeds: "Wheat Seeds" + pumpkin_seeds: "Pumpkin Seeds" + melon_seeds: "Melon Seeds" + melon_slice: "Melon Slice" + wheat: "Wheat" + bread: "Bread" + leather_helmet: "Leather Cap" + leather_chestplate: "Leather Tunic" + leather_leggings: "Leather Pants" + leather_boots: "Leather Boots" + chainmail_helmet: "Chainmail Helmet" + chainmail_chestplate: "Chainmail Chestplate" + chainmail_leggings: "Chainmail Leggings" + chainmail_boots: "Chainmail Boots" + iron_helmet: "Iron Helmet" + iron_chestplate: "Iron Chestplate" + iron_leggings: "Iron Leggings" + iron_boots: "Iron Boots" + diamond_helmet: "Diamond Helmet" + diamond_chestplate: "Diamond Chestplate" + diamond_leggings: "Diamond Leggings" + diamond_boots: "Diamond Boots" + golden_helmet: "Golden Helmet" + golden_chestplate: "Golden Chestplate" + golden_leggings: "Golden Leggings" + golden_boots: "Golden Boots" + flint: "Flint" + porkchop: "Raw Porkchop" + cooked_porkchop: "Cooked Porkchop" + chicken: "Raw Chicken" + cooked_chicken: "Cooked Chicken" + mutton: "Raw Mutton" + cooked_mutton: "Cooked Mutton" + rabbit: "Raw Rabbit" + cooked_rabbit: "Cooked Rabbit" + rabbit_stew: "Rabbit Stew" + rabbit_foot: "Rabbit's Foot" + rabbit_hide: "Rabbit Hide" + beef: "Raw Beef" + cooked_beef: "Steak" + painting: "Painting" + item_frame: "Item Frame" + golden_apple: "Golden Apple" + enchanted_golden_apple: "Enchanted Golden Apple" + bucket: "Bucket" + water_bucket: "Water Bucket" + lava_bucket: "Lava Bucket" + pufferfish_bucket: "Bucket of Pufferfish" + salmon_bucket: "Bucket of Salmon" + cod_bucket: "Bucket of Cod" + tropical_fish_bucket: "Bucket of Tropical Fish" + minecart: "Minecart" + saddle: "Saddle" + redstone: "Redstone" + snowball: "Snowball" + oak_boat: "Oak Boat" + spruce_boat: "Spruce Boat" + birch_boat: "Birch Boat" + jungle_boat: "Jungle Boat" + acacia_boat: "Acacia Boat" + dark_oak_boat: "Dark Oak Boat" + leather: "Leather" + milk_bucket: "Milk Bucket" + brick: "Brick" + clay_ball: "Clay" + paper: "Paper" + book: "Book" + slime_ball: "Slimeball" + chest_minecart: "Minecart with Chest" + furnace_minecart: "Minecart with Furnace" + tnt_minecart: "Minecart with TNT" + hopper_minecart: "Minecart with Hopper" + command_block_minecart: "Minecart with Command Block" + egg: "Egg" + compass: "Compass" + fishing_rod: "Fishing Rod" + clock: "Clock" + glowstone_dust: "Glowstone Dust" + cod: "Raw Cod" + salmon: "Raw Salmon" + pufferfish: "Pufferfish" + tropical_fish: "Tropical Fish" + cooked_cod: "Cooked Cod" + cooked_salmon: "Cooked Salmon" + music_disc_13: "Music Disc 13" + music_disc_cat: "Music Disc Cat" + music_disc_blocks: "Music Disc Blocks" + music_disc_chirp: "Music Disc Chirp" + music_disc_far: "Music Disc Far" + music_disc_mall: "Music Disc Mall" + music_disc_mellohi: "Music Disc Mellohi" + music_disc_stal: "Music Disc Stal" + music_disc_strad: "Music Disc Strad" + music_disc_ward: "Music Disc Ward" + bone: "Bone" + ink_sac: "Ink Sac" + rose_red: "Rose Red" + cactus_green: "Cactus Green" + cocoa_beans: "Cocoa Beans" + lapis_lazuli: "Lapis Lazuli" + purple_dye: "Purple Dye" + cyan_dye: "Cyan Dye" + light_gray_dye: "Light Gray Dye" + gray_dye: "Gray Dye" + pink_dye: "Pink Dye" + lime_dye: "Lime Dye" + dandelion_yellow: "Dandelion Yellow" + light_blue_dye: "Light Blue Dye" + magenta_dye: "Magenta Dye" + orange_dye: "Orange Dye" + bone_meal: "Bone Meal" + sugar: "Sugar" + black_bed: "Black Bed" + red_bed: "Red Bed" + green_bed: "Green Bed" + brown_bed: "Brown Bed" + blue_bed: "Blue Bed" + purple_bed: "Purple Bed" + cyan_bed: "Cyan Bed" + light_gray_bed: "Light Gray Bed" + gray_bed: "Gray Bed" + pink_bed: "Pink Bed" + lime_bed: "Lime Bed" + yellow_bed: "Yellow Bed" + light_blue_bed: "Light Blue Bed" + magenta_bed: "Magenta Bed" + orange_bed: "Orange Bed" + white_bed: "White Bed" + repeater: "Redstone Repeater" + comparator: "Redstone Comparator" + filled_map: "Map" + shears: "Shears" + rotten_flesh: "Rotten Flesh" + ender_pearl: "Ender Pearl" + blaze_rod: "Blaze Rod" + ghast_tear: "Ghast Tear" + potion: "Potion" + splash_potion: "Splash Potion" + lingering_potion: "Lingering Potion" + end_crystal: "End Crystal" + gold_nugget: "Gold Nugget" + glass_bottle: "Glass Bottle" + spider_eye: "Spider Eye" + fermented_spider_eye: "Fermented Spider Eye" + blaze_powder: "Blaze Powder" + magma_cream: "Magma Cream" + ender_eye: "Eye of Ender" + glistering_melon_slice: "Glistering Melon Slice" + bat_spawn_egg: "Bat Spawn Egg" + blaze_spawn_egg: "Blaze Spawn Egg" + cave_spider_spawn_egg: "Cave Spider Spawn Egg" + chicken_spawn_egg: "Chicken Spawn Egg" + cod_spawn_egg: "Cod Spawn Egg" + cow_spawn_egg: "Cow Spawn Egg" + creeper_spawn_egg: "Creeper Spawn Egg" + dolphin_spawn_egg: "Dolphin Spawn Egg" + donkey_spawn_egg: "Donkey Spawn Egg" + drowned_spawn_egg: "Drowned Spawn Egg" + elder_guardian_spawn_egg: "Elder Guardian Spawn Egg" + enderman_spawn_egg: "Enderman Spawn Egg" + endermite_spawn_egg: "Endermite Spawn Egg" + evoker_spawn_egg: "Evoker Spawn Egg" + ghast_spawn_egg: "Ghast Spawn Egg" + guardian_spawn_egg: "Guardian Spawn Egg" + horse_spawn_egg: "Horse Spawn Egg" + husk_spawn_egg: "Husk Spawn Egg" + llama_spawn_egg: "Llama Spawn Egg" + magma_cube_spawn_egg: "Magma Cube Spawn Egg" + mooshroom_spawn_egg: "Mooshroom Spawn Egg" + mule_spawn_egg: "Mule Spawn Egg" + ocelot_spawn_egg: "Ocelot Spawn Egg" + parrot_spawn_egg: "Parrot Spawn Egg" + pig_spawn_egg: "Pig Spawn Egg" + phantom_spawn_egg: "Phantom Spawn Egg" + polar_bear_spawn_egg: "Polar Bear Spawn Egg" + pufferfish_spawn_egg: "Pufferfish Spawn Egg" + rabbit_spawn_egg: "Rabbit Spawn Egg" + salmon_spawn_egg: "Salmon Spawn Egg" + sheep_spawn_egg: "Sheep Spawn Egg" + shulker_spawn_egg: "Shulker Spawn Egg" + silverfish_spawn_egg: "Silverfish Spawn Egg" + skeleton_spawn_egg: "Skeleton Spawn Egg" + skeleton_horse_spawn_egg: "Skeleton Horse Spawn Egg" + slime_spawn_egg: "Slime Spawn Egg" + spider_spawn_egg: "Spider Spawn Egg" + squid_spawn_egg: "Squid Spawn Egg" + stray_spawn_egg: "Stray Spawn Egg" + tropical_fish_spawn_egg: "Tropical Fish Spawn Egg" + turtle_spawn_egg: "Turtle Spawn Egg" + vex_spawn_egg: "Vex Spawn Egg" + villager_spawn_egg: "Villager Spawn Egg" + vindicator_spawn_egg: "Vindicator Spawn Egg" + witch_spawn_egg: "Witch Spawn Egg" + wither_skeleton_spawn_egg: "Wither Skeleton Spawn Egg" + wolf_spawn_egg: "Wolf Spawn Egg" + zombie_spawn_egg: "Zombie Spawn Egg" + zombie_horse_spawn_egg: "Zombie Horse Spawn Egg" + zombie_pigman_spawn_egg: "Zombie Pigman Spawn Egg" + zombie_villager_spawn_egg: "Zombie Villager Spawn Egg" + experience_bottle: "Bottle o' Enchanting" + fire_charge: "Fire Charge" + writable_book: "Book and Quill" + written_book: "Written Book" + map: "Empty Map" + carrot: "Carrot" + golden_carrot: "Golden Carrot" + potato: "Potato" + baked_potato: "Baked Potato" + poisonous_potato: "Poisonous Potato" + carrot_on_a_stick: "Carrot on a Stick" + nether_star: "Nether Star" + pumpkin_pie: "Pumpkin Pie" + enchanted_book: "Enchanted Book" + firework_rocket: "Firework Rocket" + firework_star: "Firework Star" + nether_brick: "Nether Brick" + quartz: "Nether Quartz" + armor_stand: "Armor Stand" + iron_horse_armor: "Iron Horse Armor" + golden_horse_armor: "Golden Horse Armor" + diamond_horse_armor: "Diamond Horse Armor" + prismarine_shard: "Prismarine Shard" + prismarine_crystals: "Prismarine Crystals" + chorus_fruit: "Chorus Fruit" + popped_chorus_fruit: "Popped Chorus Fruit" + beetroot: "Beetroot" + beetroot_seeds: "Beetroot Seeds" + beetroot_soup: "Beetroot Soup" + dragon_breath: "Dragon's Breath" + elytra: "Elytra" + totem_of_undying: "Totem of Undying" + shulker_shell: "Shulker Shell" + iron_nugget: "Iron Nugget" + knowledge_book: "Knowledge Book" + debug_stick: "Debug Stick" + trident: "Trident" + scute: "Scute" + turtle_helmet: "Turtle Shell" + phantom_membrane: "Phantom Membrane" + nautilus_shell: "Nautilus Shell" + heart_of_the_sea: "Heart of the Sea" + + +LanguageName: english +Author: GeorgH93 + +# Language file version. Don't touch it! +Version: 2 \ No newline at end of file diff --git a/live-server/plugins/MiniMOTD/config.yml b/live-server/plugins/MiniMOTD/config.yml new file mode 100755 index 0000000..1b051c4 --- /dev/null +++ b/live-server/plugins/MiniMOTD/config.yml @@ -0,0 +1,65 @@ +motd: + # Do you want to enable this feature? + motdEnabled: true + + # Placeholders: {onlinePlayers} {maxPlayers} + # Use {br} to separate lines. + # Putting more than one will cause one to be randomly chosen each refresh + motds: + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Funky*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Get Schwifty*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Litty Titty*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Rip FHZ*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net BOOBIES*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Just add milk*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Tell your mom*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net U WOT M8*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Flexin*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Kawaii*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Since 2020*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net WOW*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Special Edition*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net UWU*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net XXX Rated*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net High Af*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Vegan*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Ok Boomer*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Yes*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Noot Noot*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Dislexic*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net 404 Not Found*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net Wyd Step Bro*" + - " Survival | R A C K E D . R U | 1.16.2 salvos.ddns.net OnlyFans*" +# +# - " Survival | R A C K E D . R U | 1.16.2 I sold my soul to the devil for designer." +# +# +# +# +# - "----====[ UltraCraft Official ]=====----{br} Custom Survival Discord: Ab3d5f" +# - "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||{br}Hello {onlinePlayers} / {maxPlayers} Players Online" + +maxPlayers: + # Do you want to enable this feature? + maxPlayersEnabled: true + + # Changes the Max Players value. + maxPlayers: 128 + + # Changes the Max Players to X more than the online players + # Example: 16/19 players online. + justXMoreEnabled: false + xValue: 3 + +bungeeOnly: + # Do you want to enable this feature? + fakePlayersEnabled: false + + # Modes: static, random, percent + # static: This many fake players will be added + # ex: fakePlayers: "3" + # random: A random number of fake players in this range will be added + # ex: fakePlayers: "3:6" + # percent: The player count will be inflated by this much, rounding up + # ex: fakePlayers: "25%" + fakePlayers: "25%" \ No newline at end of file diff --git a/live-server/plugins/MiniMOTD/icons/server-icon.png b/live-server/plugins/MiniMOTD/icons/server-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..4f83267dd97bf1cef45ff14bc01a139e4d1385bf GIT binary patch literal 2888 zcmV-O3%B%%P)00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TNznwZ<}vOBk)?wRiDuG_hk->K@|?967#c6HD0%YM{UcU7J4 z`oHsk|K(Hon$)b!BK}MaK)0hnbhjG_ww-@fDyvn?``PxhqN)Z6&GKer{Uh!f{EAFLnu)TUR zkuwn0v;-V(bJl3J4%trCt1M~8NtTVT705F9fq_X*172Z{ZRwPZx@l6-fH&60gC|FM z0ZWJ^ecg(?N7JMRO67`dK&|mvcoJPH9bv$?y7|)h~ z=ge0t^Nv$-oOwze#(aw+fN=%;_nVabWR_)&^Wp^KOlMju=}=m))_uRBQyGb%xO(L% zLjYQ+`E6!b@Ggnhh3FGPl}tGIk#dR=`M}-4S(B6)&s3U*-7FrkxXUfYyc(lC6Y17y z;*cmuz;c~BV+c^#V?z;1(vfmNGE3`(Q_mzHM8YLBz+B5%#9f*6wdit2+*(s}8@{oW zj7QsBqmA*mjp4YH6?52FKx` zGa7VOPXCkJwOV6=K!R7%1BL)RP=qa_x7ct{(7-N9HbokMhD-yPPMsL0`?UqFbg;ED z>~E}{dzq8;hNWe%+Opjyk#aQL9)uGUxJ=f&66{R(0J8`;8!lLkS3y+D4c|!#3BAfZ zW$t$8bbtHo>gvlPSwDF5p?&*q@GDh2&r6yRu{&h02&FyH^xPV=Oay0{%Gr$XpNq;E z1f3u`He36JP)f<|t+Sntlgtt~E+4Gdo4)63r8c|kD)Vfw3B@JD{xF<43zhOfKKHO5 zvCAkbvCF8NUl;?y4Of5$5~z+8Tiq~z&PHvlrQmcf_}UK3e(|l5X*la+r$! zrMQ?w5nkYmwg;Y)Qg%0!PFH>5Yy5jZ%|^WtC!@-Ok}@Ay5;GO(&H|jQlV0chBeD;~>*FQ&>5qWM_tN3oMMQV$N zr%An5CPn_~$*?B`00(<84Q<-$0tjOMz$4jD9#7spX}x%~*--0V zvaP*l-g=kE)C4SA^Xf*)W&#K%+|Dd7T|U>Yn-U_VceC8QuHMWa(~8 zPt^zkGmsExcHL{hT)anA+UNCb1f&(UlubuCay)YSf7Ty9vLOyPyX5{yQnkdQh9jk;GKUoi8E1v2WaIcV0%8?UnGp0-~)K78gWG<>*q#>`_bWTEmT z$`lbyZN+Ulb_H)>AEH($$*?%ir&DR{#s+cQas5Uj2^Piu{=4VSh&NxyNX3XR=;d-r1t27FRaku#3m19~DV8z(->NX{z3?mUqEYx?cuu#I#?I1%b!~^6`mv3x* z_^?v@Kc2M@@l!_$z1DSrQwG^M=9d_q)7ViBOpaw()LYd`bNQy`t+!R~dpP;(ckT!( zx9Cb+Eq?-eYZ?j7B8WvQ@*r;dO=Ib<*~}kqfyY*#9(h20{rlo*xBcg%eOGJ|EH!O^ z8tZ{s1TlJHtr96fqvf~e{Kojgc@!Zr*Ca3ho&WJSZ2hgyvF<(Uz+GnU-;0-$n1+D4 zvk77q7wX3r3z6Wg4jbrrWSf3 z&=?OhFu(R`6V_R)ssDA1{{BfjrJ?PhyeXmu>Hs&-M$0oPMZi3DL;4rkLqcJSQY_I; z7#fV3M{$<`p*?;1UvPDg)rD1^^;+m7#IT_P`jcO>emgw(ef`; z;vLAV9^lj%<5r|^I-(DJjGaDq4e9{q9oG1^Q-nc*oQ95sfH%gcE+GGz#&a8o@2cPT zpf5d=`Zo@0OPSY@Hy9D+u_EjTI1snghkr(oy8MGO>)=!)cv zen=}p=9jXAhb`KfcVB&~wf+xy01d22Q}c-3vCBDO3Ic`#Chmg?z<6ZR?SR~Qx4Qpx z;c(s!Zu9%Y*a*%z6P@T)e>RGHnJsq$a{2h|CBPWir!t9`xt4zZY5Mq&ZJG6KyDi;1 zl}SY;-1bomnCD(q4=61qHYE)Q+qoQvLg36Y>#|YU@2vDspXn=SNjUe}jfM95zn8PL z-dr}17exX$jXyRC$}DJrL=4g7$0BsOheMm&Me^A-iMHc7UM(2)Q2Byjh4_Ts?$Gu< zwP1PS-0_M|As;D|;b5b;{?>MQZv3%HP?7+I5sN{b2IxQ&5xcgBRe{3{4frHi4*oLk zcy6U0jJ9wrQ_T+4-S!RbGnpH#nhqn4;;28^e7DzsC(YN*B~U7Gc7j^GQQ7ZsXTH9O zK7vzQ8+s{HkL%Yf&Bc|@+qhBw?+DV&A&N$%&P_?v(g2h+;o{H!DxFWpY>7k4bxx-1PbIdf>;cNQn{#H$jP=1fx)PU z0p!db#EWu m=u8c!_^-I@xQ;ypA^!(SF@Z_F0J=*60000, +# - Putting more than one will cause one to be randomly chosen each refresh +motds=[ + { + line1=" ʀ ᴀ ᴄ ᴋ ᴇ ᴅ . ʀ ᴜ " + line2=" выживание" + # Set the icon to use with this MOTD + # Either use 'random' to randomly choose an icon, or use the name + # of a file in the icons folder (excluding the '.png' extension) + # ex: icon="myIconFile" + icon=random + } +] +# Enable MOTD-related features +motd-enabled=true +# Enable server list icon related features +icon-enabled=true +player-count-settings { + # Enable modification of the max player count + max-players-enabled=true + # Changes the Max Players value + max-players=69 + # Setting this to true will disable the hover text showing online player usernames + disable-player-list-hover=true + # Setting this to true will disable the player list hover (same as 'disable-player-list-hover'), + # but will also cause the player count to appear as '???' + hide-player-count=false + # Settings for the fake player count feature + fake-players { + # Enable fake player count feature + fake-players-enabled=false + # Modes: add, constant, minimum, random, percent + # + # - add: This many fake players will be added + # ex: fake-players="3" + # - constant: A constant value for the player count + # ex: fake-players="=42" + # - minimum: The minimum bound of the player count + # ex: fake-players="7+" + # - random: A random number of fake players in this range will be added + # ex: fake-players="3:6" + # - percent: The player count will be inflated by this much, rounding up + # ex: fake-players="25%" + fake-players="25%" + } + # Changes the Max Players to be X more than the online players + # ex: x=3 -> 16/19 players online. + just-x-more-settings { + # Enable this feature + just-x-more-enabled=false + x-value=3 + } + # Should the displayed online player count be allowed to exceed the displayed maximum player count? + # If false, the online player count will be capped at the maximum player count + allow-exceeding-maximum=false + # The list of server names that affect player counts/listing. + # Only applicable when running the plugin on a proxy (Velocity or Waterfall/Bungeecord). + # When set to an empty list, the default count & list as determined by the proxy will be used. + servers=[] +} diff --git a/live-server/plugins/MiniMOTD/plugin_settings.conf b/live-server/plugins/MiniMOTD/plugin_settings.conf new file mode 100755 index 0000000..ff284a3 --- /dev/null +++ b/live-server/plugins/MiniMOTD/plugin_settings.conf @@ -0,0 +1,22 @@ +# MiniMOTD Plugin Configuration + +# Do you want the plugin to check for updates on GitHub at launch? +# https://github.com/jpenilla/MiniMOTD +update-checker=true +# Settings only applicable when running the plugin on a proxy (Velocity or Waterfall/Bungeecord) +proxy-settings { + # Here you can assign configs in the 'extra-configs' folder to specific virtual hosts + # Either use the name of the config in 'extra-configs', or use "default" to use the configuration in main.conf + # + # Format is "hostname:port"="configName|default" + # Parts of domains can be substituted for wildcards, i.e. "*.mydomain.com:25565". Wildcard-containing configs are + # checked in the order they are declared if there are no exact matches. + virtual-host-configs { + "minigames.example.com:25565"=default + "skyblock.example.com:25565"=skyblock + "survival.example.com:25565"=survival + } + # Set whether to enable virtual host testing mode. + # When enabled, MiniMOTD will print virtual host debug info to the console on each server ping. + virtual-host-test-mode=false +} diff --git a/live-server/plugins/Multiverse-Core/anchors.yml b/live-server/plugins/Multiverse-Core/anchors.yml new file mode 100644 index 0000000..e370072 --- /dev/null +++ b/live-server/plugins/Multiverse-Core/anchors.yml @@ -0,0 +1 @@ +anchors: {} diff --git a/live-server/plugins/Multiverse-Core/config.yml b/live-server/plugins/Multiverse-Core/config.yml new file mode 100644 index 0000000..84ef40b --- /dev/null +++ b/live-server/plugins/Multiverse-Core/config.yml @@ -0,0 +1,298 @@ +#################################################################################################### +# # +# █▀▄▀█ █░█ █░░ ▀█▀ █ █░█ █▀▀ █▀█ █▀ █▀▀   █▀▀ █▀█ █▀█ █▀▀ # +# █░▀░█ █▄█ █▄▄ ░█░ █ ▀▄▀ ██▄ █▀▄ ▄█ ██▄   █▄▄ █▄█ █▀▄ ██▄ # +# # +# # +# WIKI: https://mvplugins.org/core/ # +# DISCORD: https://discord.gg/NZtfKky # +# BUG REPORTS: https://github.com/Multiverse/Multiverse-Core/issues # +# DONATE: https://github.com/sponsors/Multiverse # +# # +# # +# New options are added to this file automatically. If you manually made changes # +# to this file while your server is running, please run `/mv reload` command. # +# # +#################################################################################################### + + +world: + # When enabled, Multiverse will automatically import default worlds defined in the server.properties + # `level-name` property when the Multiverse is enabled or reloaded. This will include the nether and + # end if the server created them. + auto-import-default-worlds: true + + # When enabled, Multiverse will import all other worlds created by other plugins when Multiverse starts + # or when Multiverse is reloaded. + auto-import-3rd-party-worlds: true + + # This setting will prevent players from entering worlds they don't have access to. + # If this is set to false, players will be able to enter any world they want. + # If this is set to true, players will only be able to enter worlds they have + # the `mv.access.` permission. + enforce-access: false + + # Sets whether Multiverse will should enforce gamemode on world change. + # If enabled, players will be forced into the gamemode of the world they are entering, unless they have + # the `mv.bypass.gamemode.` permission. + enforce-gamemode: true + + # Sets whether Multiverse will should globally enforce flight ability on worlds. + # Disable this if you want another plugin to handle player's flight ability. + # Disabling this will make the world property `allow-flight` have no effect. + enforce-flight: true + + # Sets the delay in ticks before Multiverse enforces gamemode and flight ability on world change. + # Increase this value if you are experiencing issues with other plugins overriding gamemode or flight ability. + # Or set to 0 to enforce immediately during world change event. + gamemode-and-flight-enforce-delay: 1 + + # Sets whether Multiverse will apply the world's entity `tick-rate` config in worlds.yml. + # If disabled, the `tick-rate` config in worlds.yml will be ignored. + # Disable this if you want paper-world.yml or another plugin to handle entity spawn rate per world. + # !!!NOTE: This will only apply after a server restart! + apply-entity-spawn-rate: true + + # Sets whether Multiverse will apply the world's entity `spawn-limit` config when a world is loaded. + # If disabled, the `spawn-limit` config in worlds.yml will be ignored. + # Disable this if you want paper-world.yml or another plugin to handle entity limits per world. + # !!!NOTE: This will only apply after a server restart! + apply-entity-spawn-limit: true + + # Sets whether Multiverse will purge entities on world load based world's entity spawn config. + auto-purge-entities: false + + # Format for world names for multiverse to automatically detect a world group consist of overworld, nether and end. + # This is used default-respawn-in-overworld and potentially other features. + world-name-format: + nether: '%overworld%_nether' + end: '%overworld%_the_end' + + +teleport: + # Sets whether Multiverse will use more fine-grained teleport permissions. + # ---- + # New finer teleport permissions for /mvtp and /mvspawn commands: + # - For specific teleport types: `multiverse.teleport...` + # - For specific world spawn: `multiverse.core.spawn..` + # For example, if `multiverse.teleport.self.w.world2` is set, Multiverse will only allow the player to teleport to the world2. + # ---- + # Legacy permissions will be used if this is set to false: + # - For teleport destinations: `multiverse.teleport..` + # - For spawn: `multiverse.core.spawn.` + use-finer-teleport-permissions: true + + # Configures how passengers and vehicles are handled when an entity is teleported. This config is + # only applied to /mvtp, join-destination and first-spawn-override. It will not touch any other + # teleport by other plugins or commands. + # ========= Available options: ========= + # default: Server will handle passengers and vehicles. On papermc 1.21.10+, all will be retained by default. + # On older versions, all will be dismounted if world changes. + # dismount_passengers: Passengers will be removed from the parent entity before the teleport. + # dismount_vehicle: Vehicle will be removed and from the parent entity before the teleport. + # dismount_all: All passengers and vehicles will be removed from the parent entity before the teleport. + # retain_passengers: Passengers will teleport together with the parent entity. + # retain_vehicle: Vehicles will teleport together with the parent entity. + # retain_all: All passengers and vehicles will teleport together with the parent entity. + passenger-mode: default + + # Sets the maximum number of players allowed to be teleported at once with `/mv teleport` command + concurrent-teleport-limit: 50 + + # If this is set to true, Multiverse will enforce access permissions for all teleportation, + # including teleportation from other plugins. You should not disable this unless you are facing + # conflict with another plugin handling teleportation. + teleport-intercept: false + + # Sets the horizontal (x and z-axis) search radius for finding a safe location to teleport to. + # Increasing this value will widen the search area at the cost of performance. + # To disable, set to 0. + safe-location-horizontal-search-radius: 0 + + # Sets the vertical (y-axis) search radius for finding a safe location to teleport to. + # Increasing this value will widen the search area at the cost of performance. + # To disable, set to 0. + safe-location-vertical-search-radius: 0 + + +spawn: + # Sets whether Multiverse will override the location where the player spawns when they join the server + # for the first time. For fixed spawn location on every login, see the `join-destination` option below. + # If disabled, it will default to server.properties settings. + first-spawn-override: false + + # Sets the world that Multiverse will use as the location for players that join the server for the first time. + # This only applies if first-spawn-override is set to true. + first-spawn-location: '' + + # Enables setting of a fixed location for players to spawn in when they join the server every time. + # See `join-destination` option below as well. + enable-join-destination: false + + # Sets the destination that Multiverse will use to spawn players on every login. + # Set the above enable-join-destination to false to disable + join-destination: '' + + # This only applies if the `respawn-world` property is not set for the world that the player died in, + # and the player does not have bed or anchor set. + # ---- + # When this option is enabled, players will respawn in the overworld when dying in nether or end, mimicking the vanilla behavior. + # The automatic selection of overworld is determined by the `world-name-format` config section above. + # This option takes precedence over the `default-respawn-within-same-world` option. + # ---- + # Set this to false if you want another plugin to handle respawning or do not want this vanilla behavior. + default-respawn-in-overworld: true + + # This only applies if the `respawn-world` property is not set for the world that the player died in, + # and the player does not have bed or anchor set. + # ---- + # When this option is enabled, players will respawn in the same world's that they died in. + # If the /spawnpoint is already within that world and `enforce-respawn-at-world-spawn` is disabled, + # Multiverse will use that spawn location, else it will use the world's spawn where the player died in. + # ---- + # You can set `respawn-world` property with the command: `/mv modify set respawn-world ` + # You can reset `respawn-world` property with the command: `/mv modify reset respawn-world` + # ---- + # Set this to false if you want another plugin to handle respawning. + default-respawn-within-same-world: true + + # When this option is enabled, players will always respawn at the world's spawn location of calculated respawn world, + # unless bed or anchor is set and `bed-respawn` or `anchor-spawn` is enabled respectively. + # ---- + # Set this to false if you want to use a custom spawn location such as /spawnpoint instead of the world's spawn location. + enforce-respawn-at-world-spawn: false + + +portal: + # This config option defines whether or not Multiverse should interfere with's Bukkit's default portal search radius. + # Setting it to false would mean you want to simply let Bukkit decides the search radius itself. + use-custom-portal-search: false + + # This config option defines the search radius Multiverse should use when searching for a portal. + # This only applies if use-custom-portal-search is set to true. + custom-portal-search-radius: 128 + + +messaging: + # This config option defines whether or not Multiverse should prefix the chat with the world name. + # Ensure this is false if you want another plugin to handle chat formatting. + enable-chat-prefix: false + + # This config option defines the format Multiverse should use when prefixing the chat with the world name. + # This only applies if enable-chat-prefix is set to true. + chat-prefix-format: '[%world%]%chat%' + + # This config option defines whether or not Multiverse should register the PlaceholderAPI hook. + # This only applies if PlaceholderAPI is installed. + register-papi-hook: true + + # This config option defines whether or not Multiverse should warn about invalid PlaceholderAPI formats. + # Only applies if PlaceholderAPI is installed, and only to multiverse placeholders. + warn-invalid-papi-format: true + + # By default, invalid formats will return the original placeholder string. + # This config option defines whether or not Multiverse should show invalid PlaceholderAPI formats as blank. + # Only applies if PlaceholderAPI is installed, and only to multiverse placeholders. + invalid-papi-format-returns-blank: false + + # This config option defines the default language Multiverse should use. + default-locale: en + + # This config option defines if Multiverse should use the player's language based on their client's language. + # If the player's language does not have a translation, it will use the default language set above instead. + per-player-locale: true + + +command: + # If this is set to true, Multiverse will resolve world based on their alias names for commands and destinations. + # Normal world names will still be accepted. + # In the event you have multiple worlds with the same alias name, the first world found will be used. + resolve-alias-name: true + + # If this is set to true, Multiverse will only suggest simple destination formats in tab completion. + # This means only world names will be suggested without other destination type such as `e:worldname:x,y,z` or `p:playername`. + # Note: This DOES NOT prevent players from using the destinations, as that is controlled by permissions. + simplified-destination-tab-completion: false + + # This config option defines whether `/mv confirm` is needed before running a DANGEROUS action. + # enable: `/mv confirm` is required. + # player_only: `/mv confirm` only required when running command as a player. + # disable_command_blocks: `/mv confirm` not required for command blocks. + # disable_console: `/mv confirm` not required for the console. + # disable: `/mv confirm` is not required. + confirm-mode: enable + + # If this is set to true, `/mv confirm` will include a 3 digit random number that must be entered to confirm the command. + # For example: `/mv confirm 726` + use-confirm-otp: true + + # The amount of time in seconds before `/mv confirm` times out + confirm-timeout: 30 + + # If this is set to true, legacy aliases will be shown in tab completion. + # These are old mv4 aliases such as `/mvclone` in addition to `/mv clone` which crowds the tab completion. + # !!!NOTE: This will only apply after a server restart! + show-legacy-aliases: false + + +event-priority: + # The follow configuration changes the bukkit's EventPriority for certain events. + # Only ever change this if you need multiverse's events outcomes to override another plugin, or if + # you want another plugin's outcome to override multiverse's. + # ---- + # !!!NOTE: This will only apply after a server restart! + + # This config option defines the priority for the PlayerPortalEvent. + player-portal: high + + # This config option defines the priority for the PlayerRespawnEvent. + player-respawn: low + + # This config option defines the priority for the PlayerSpawnLocationEvent. + player-spawn-location: lowest + + # This config option defines the priority for the PlayerTeleportEvent. + player-teleport: highest + + # This config option defines the priority for the PlayerChangedWorldEvent. + player-changed-world: normal + + +misc: + # Change this if you use a custom path for the bukkit.yml file with `--bukkit-settings` startup flag. + # Note: this config option needs a server restart to take effect. + bukkit-yml-path: bukkit.yml + + # Change this if you use a custom path for the server.properties file with `--config` startup flag. + # Note: this config option needs a server restart to take effect. + server-properties-path: server.properties + + # When enabled, Multiverse will attempt to automatically detect world generator plugins installed on your server. + # This option only affects tab-completion within `/mv create` command and output of `/mv generators` command. + # Disabling this will not have any affect on the usages of world generator plugins itself. + auto-detect-generator-plugins: true + + # This is our debug flag to help identify issues with Multiverse. + # If you are having issues with Multiverse, please set this to 3 and then post your log to pastebin.com + # Otherwise, there's no need to touch this. If not instructed by a wiki page or developer. + # 0 = Off, No debug messages + # 1 = fine + # 2 = finer + # 3 = finest + global-debug: 0 + + # Sets whether console will log every permission check done by all multiverse plugins. + # This will only work if the above 'global-debug' is set to 1 or more. + debug-permissions: false + + # If true, the startup console messages will no longer show. + silent-start: false + + # If you don't want to donate, you can set this to false and Multiverse will stop nagging you. + # But if you want to donate, here is our Github Sponsors page: https://github.com/sponsors/Multiverse + show-donation-message: true + + +# This just signifies the version number so we can see what version of config you have. +# NEVER TOUCH THIS VALUE +version: 5.2 diff --git a/live-server/plugins/Multiverse-Core/worlds.yml b/live-server/plugins/Multiverse-Core/worlds.yml new file mode 100644 index 0000000..db80cca --- /dev/null +++ b/live-server/plugins/Multiverse-Core/worlds.yml @@ -0,0 +1,312 @@ +auth_limbo: + adjust-spawn: true + alias: '' + allow-advancement-grant: true + allow-flight: false + allow-weather: true + anchor-respawn: true + auto-heal: true + auto-load: true + bed-respawn: true + biome: '' + difficulty: easy + entry-fee: + enabled: false + amount: 0.0 + currency: '@vault-economy' + environment: the_end + gamemode: survival + generator: VoidWorldGenerator + hidden: false + hunger: true + keep-spawn-in-memory: false + player-limit: -1 + portal-form: all + pvp: true + respawn-world: world + scale: 1.0 + seed: 4175276427617009277 + spawn-location: + ==: MVSpawnLocation + x: 0.5 + y: 128.0 + z: 0.5 + pitch: 0.0 + yaw: 0.0 + spawning: + monster: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_underground_creature: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + axolotl: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + misc: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + world-blacklist: [] + version: 1.2 +world: + adjust-spawn: true + alias: '' + allow-advancement-grant: true + allow-flight: false + allow-weather: true + anchor-respawn: true + auto-heal: true + auto-load: true + bed-respawn: true + biome: '' + difficulty: hard + entry-fee: + enabled: false + amount: 0.0 + currency: '@vault-economy' + environment: normal + gamemode: survival + generator: '' + hidden: false + hunger: true + keep-spawn-in-memory: false + player-limit: -1 + portal-form: all + pvp: true + respawn-world: world + scale: 1.0 + seed: 8491026986654631198 + spawn-location: + ==: MVSpawnLocation + x: -64.0 + y: 162.0 + z: 96.0 + pitch: 0.0 + yaw: 0.0 + spawning: + monster: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_underground_creature: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + axolotl: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + misc: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + world-blacklist: [] + version: 1.2 +world_nether: + adjust-spawn: true + alias: '' + allow-advancement-grant: true + allow-flight: false + allow-weather: true + anchor-respawn: true + auto-heal: true + auto-load: true + bed-respawn: true + biome: '' + difficulty: hard + entry-fee: + enabled: false + amount: 0.0 + currency: '@vault-economy' + environment: nether + gamemode: survival + generator: '' + hidden: false + hunger: true + keep-spawn-in-memory: false + player-limit: -1 + portal-form: all + pvp: true + respawn-world: world + scale: 8.0 + seed: 8491026986654631198 + spawn-location: + ==: MVSpawnLocation + x: 2.5 + y: 50.0 + z: -1.5 + pitch: 0.0 + yaw: 0.0 + spawning: + monster: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_underground_creature: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + axolotl: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + misc: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + world-blacklist: [] + version: 1.2 +world_the_end: + adjust-spawn: true + alias: '' + allow-advancement-grant: true + allow-flight: false + allow-weather: true + anchor-respawn: true + auto-heal: true + auto-load: true + bed-respawn: true + biome: '' + difficulty: hard + entry-fee: + enabled: false + amount: 0.0 + currency: '@vault-economy' + environment: the_end + gamemode: survival + generator: '' + hidden: false + hunger: true + keep-spawn-in-memory: false + player-limit: -1 + portal-form: all + pvp: true + respawn-world: world + scale: 1.0 + seed: 8491026986654631198 + spawn-location: + ==: MVSpawnLocation + x: 0.0 + y: 66.0 + z: 0.0 + pitch: 0.0 + yaw: 0.0 + spawning: + monster: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_animal: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + water_underground_creature: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + ambient: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + axolotl: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + misc: + spawn: true + tick-rate: '@unset' + spawn-limit: '@unset' + exceptions: [] + world-blacklist: [] + version: 1.2 diff --git a/live-server/plugins/PhantomSMP/config.yml b/live-server/plugins/PhantomSMP/config.yml new file mode 100755 index 0000000..753f480 --- /dev/null +++ b/live-server/plugins/PhantomSMP/config.yml @@ -0,0 +1,28 @@ +# PhantomSMP by Simon Chuu + +# For help, follow the plugin project link below: +# https://github.com/SimonOrJ/PhantomSMP/ + +# Remove phantoms that try to target player slept within three (Minecraft) +# days? +# true = remove phantom targeting rested player +# false = Keep phantoms (and make phantoms try to target another player) +remove-targeting-rested: true + +# Remove phantoms right away when the player sleeps in bed? +# true = remove phantoms as soon as player sleeps +# false = Keep phantoms (and let the above option take care of it) +remove-when-sleeping: false + +# How many ticks since player rested should phantoms ignore the player? +# NOTE: Any value under 72000 (3 full Minecraft days) will essentially be +# ignored for phantom spawning. It will only have an effect on already +# spawned phantoms only. +disallow-targeting-for: 272000 + +# Enable metrics for this plugin? (If unsure, leave it as true) +# Link to metrics: https://bstats.org/plugin/bukkit/PhantomSMP/ +enable-metrics: true + +# Keeps track of configuration version -- do not change! +config-version: 1 diff --git a/live-server/plugins/PlaceholderAPI/config.yml b/live-server/plugins/PlaceholderAPI/config.yml new file mode 100755 index 0000000..caf028b --- /dev/null +++ b/live-server/plugins/PlaceholderAPI/config.yml @@ -0,0 +1,96 @@ +# PlaceholderAPI +# Version: 2.11.6 +# Created by: extended_clip +# Contributors: https://github.com/PlaceholderAPI/PlaceholderAPI/graphs/contributors +# Issues: https://github.com/PlaceholderAPI/PlaceholderAPI/issues +# Expansions: https://placeholderapi.com/ecloud +# Wiki: https://wiki.placeholderapi.com/ +# Discord: https://helpch.at/discord +# No placeholders are provided with this plugin by default. +# Download placeholders: /papi ecloud +check_updates: false +cloud_enabled: true +cloud_sorting: name +boolean: + 'true': 'yes' + 'false': 'no' +date_format: MM/dd/yy HH:mm:ss +debug: false +expansions: + checkdate: + days: + monday: Monday + tuesday: Tuesday + wednesday: Wednesday + thursday: Thursday + friday: Friday + saturday: Saturday + sunday: Sunday + unknown: Unknown? + localtime: + date_format: dd/MM/yyyy hh:mma + pinger: + offline: '&cOffline' + check_interval: 30 + online: '&aOnline' + server: + server_name: A Minecraft Server + time: + locale: en-US + zone: Europe/London + suffix: + week: w + day: d + hour: h + minute: m + second: s + tps_color: + high: '&a' + medium: '&e' + low: '&c' + utils: + shortcuts: + othermath: '%utils_parseother:[{0}]_math_{1}+1%' + player: + ping_value: + high: 100 + medium: 50 + direction: + north: N + south: S + north_west: NW + north_east: NE + east: E + south_east: SE + west: W + south_west: SW + ping_color: + medium: '&e' + high: '&c' + low: '&a' + playerlist: + offline-text: Offline + argument-separator: ',' + lists: + players: + type: ONLINE + included: true + filters: + - '!PERMISSION:group.staff' + - CANSEE + staff: + type: ONLINE + included: true + filters: + - PERMISSION:group.staff + - CANSEE + groups: + staffAndPlayers: + gap: 1 + lists: + staff: + title: Staff Members (%amount%) + max: 10 + remaining: '... and %remaining% more!' + players: + title: Players (%amount%) diff --git a/live-server/plugins/ProAntiTab/How-To-Read.txt b/live-server/plugins/ProAntiTab/How-To-Read.txt new file mode 100755 index 0000000..7a3f81b --- /dev/null +++ b/live-server/plugins/ProAntiTab/How-To-Read.txt @@ -0,0 +1,80 @@ +Confused about the display of missing parts in the console? +It's actually quite easy to read and I'll show you how its done! :D + +Missing parts are written in this format right here: xyz.zyx.idk +A more befitting example would be something like: +--> test-feature.enabled + +In the config.yml, this would look like this: + + + test-feature: + enabled: true + + +Here's another example of this format: +--> info.version.updated + +In the config.yml, this would look like this: + + + info: + version: + updated: ... + + +----------------------------------------------------------------------- + +Now that we know how things from the missing parts look like in the config.yml, let's go over to the more important part. +Inserting the missing parts to your current config.yml. But how and what exactly? + +Well, it's actually quite easy. Just take a look on what is missing. +If PAT says, something like this is missing: +- test-feature.enabled +- test-feature.message +- test-feature.failed + +Then this basically just means, that the entire section for "test-feature" is missing. +In other words, check the "comparable-config.yml" and look for the "test-feature" section. +It would look like this for example: + + + test-feature: + enabled: true + message: "Hello World" + failed: "Error ;c" + + +Just copy the entire thing and paste it somewhere in the config.yml. +Once you've reloaded the plugin then, using "/(b)pat reload", everything should work fine. + +If something went wrong, PAT will let you know! ^^ + + +Here's a more close to your case example. Let's say your config.yml looks like this: + + handle-through-proxy: + ... + + turn-blacklist-to-whitelist: true + + custom-protocol-ping: + ... + + +and now let's say PAT says that "base-command-case-sensitive" is missing. +Then this would be what PAT is looking for as solution: + + handle-through-proxy: + ... + + turn-blacklist-to-whitelist: true + + base-command-case-sensitive: true/false + + custom-protocol-ping: + ... + + +On how exactly it needs to be implemented can be seen in the comparison-config.yml file, +as this is the original version which would be generated by default. \ No newline at end of file diff --git a/live-server/plugins/ProAntiTab/comparable-config.yml b/live-server/plugins/ProAntiTab/comparable-config.yml new file mode 100755 index 0000000..725a4d8 --- /dev/null +++ b/live-server/plugins/ProAntiTab/comparable-config.yml @@ -0,0 +1,854 @@ +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# WARNING: This file is auto generated and its sole purpose is to be used as comparison! +# WARNING: It will be deleted once this file is no longer needed. + + +# ____ ___ __ _ ______ __ +# / __ \_________ / | ____ / /_(_)_ __/___ _/ /_ +# / /_/ / ___/ __ \/ /| | / __ \/ __/ / / / / __ `/ __ \ +# / ____/ / / /_/ / ___ |/ / / / /_/ / / / / /_/ / /_/ / +# /_/ /_/ \____/_/ |_/_/ /_/\__/_/ /_/ \__,_/_.___/ +# config.yml (Bukkit/Spigot version) + +# This section doesn't really need to be changed, +# but a few people seem not to like my design for a custom update-notification message... +# Well... that's basically the whole reason for this one here. xd +updater: + enabled: true + period: 10000 + + announce-missing-parts: true + + # (!) Warning: + # Activating this will automatically update the config.yml in case something's missing. + # This will most likely cause the config.yml to look weird, considering that all comments, + # as well as spaces will be missing. Please take this in consideration. + auto-update-config: false + + updated: + - '&8[&2PAT &7| &2Bukkit&8] &aYou are using the newest version! ^^' + outdated: + - '&8[&4PAT &7| &4Bukkit&8] &cThere is a new version available! (%newest_version%)' + - '&8[&4PAT &7| &4Bukkit&8] &cYou are still using the %current_version%.' + - '&8[&4PAT &7| &4Bukkit&8] &cGet the newest version here:' + - '&8[&4PAT &7| &4Bukkit&8] &ehttps://www.rayzs.de/products/proantitab/page' + +# (!) Warning: If you have a Bungeecord/Velocity server, please enable this option! +# (!) How to use it properly can be seen on the following page: +# (!) https://www.spigotmc.org/resources/113172/field?field=documentation +# (!) At the first section ("How to setup") are spoilers with different server scenarios. +# (!) Open the spoiler that matches your server scenario and follow the instructed steps in there. +# Enabling this allows the Bungeecord/Velocity and backend servers to communicate with each other. +# Information that are being communicated with are for example settings of certain features, but also important +# data about groups, commands and much more, that are very important for the tab-completion & suggestions! +# Affected features that are being synced with, or overwritten by the proxy, are marked as ">> HTP". +handle-through-proxy: + enabled: false + token: insert-token-of-proxy-here + + # Advanced option: + # Loads the token from an ENV variable instead. + # (!) Warning: Do NOT enable this option, unless you know what you're doing! + load-from-env: + enabled: false + name: "PAT_TOKEN" + + +#>> HTP +# This is a very necessary feature if you have way too many commands to block and instead decide +# to whitelist specific commands. +# Enabling this will disable ALL commands except for those that are in the (group-)list. +turn-blacklist-to-whitelist: true + +# This decides whether PAT ignores or detects whether a command is written in upper/-lower cased letters. +# Here are a few examples if this option is enabled: +# Example with allowing the command "HelP" +# /help --> Blocked +# /Help --> Blocked +# /HelP --> Allowed +# Pro tip: You can also just use auto-lowercase-commands feature instead. ^^ +base-command-case-sensitive: true + +# (!) Warning: +# Enabling this could lead to performance issues if many players +# change worlds frequently in a short amount of time. +# +# This decides whether PAT updates the commands for a player after switching worlds. +# Enabling this allows you to make per-world commands using PAT's group system by +# giving a user/group the PAT group permission using a LuckPerms world as context. +# +# Example command: +# lp (...) permission set proantitab.group. world= +update-groups-per-world: false + +# Here you can customize the server version that is displayed on a ping. (The text at the player-count) +# (!) Warning: It's required to use Paper or Purpur to use this feature! +# (!) Supported server versions: 1.12.2 - latest +custom-protocol-ping: + enabled: false + + # Normally it would only display when someone pings the server with the wrong version. + # Enabling this will always display the protocol and replace it with the normal player count. + always-show: false + + # This number here determines the outcome for the %online_extended% placeholder. + # It's the current amount of players increased by this number. + # For example: 5/20 becomes 6/20 + extend-online-count: 1 + # true: Use new calculated online-count (%online_extended%) as max-players count. + # false: Use the default max-players count. + use-as-maxplayers: false + + # Enabling this option hides the list of players on your server, + # when you hover over the player count. + hide-players: false + + # The displayed protocol message + # Available placeholders: + # %online% - current online player count + # %online_extended% - manipulated online player count + # %max% - max player count + # ... and all the other placeholders from PlaceholderAPI + protocol: '&f&lProAntiTab &7(&a%online%&7/&c%max%&7)' + + # The displayed message when you hover over the player count. + custom-playerlist: + enabled: true + + # Available placeholders: + # %players% - list of players + # %online% - current online player count + # %max% - max player count + # ... and all the other placeholders from PlaceholderAPI + list: + - '&8> &7Online players: &a%online%&7/&2%max%' + - '&8> &7Using &fProAntiTab' + +#>> HTP (Sync) +# This feature allows you to create your own 'Unknown command.' message. +# It is very helpful considering the fact you might have to set the same message +# for if a command is blocked or really doesn't exist. ^^ +# Good to hide real and not-real commands from your players. +custom-unknown-command: + enabled: false + message: + - '&cThis command does not exist!' + +#>> HTP (Overwritten) +# This setting decides if a listed command should be cancelled from execution or not. +# As you can see it's enabled by default, which is also why every command that is listed +# is being blocked entirely. +cancel-blocked-commands: + enabled: true + base-command-message: + - '%prefix% &cThis command &8(&4%command%&8) &cis blocked!' + sub-command-message: + - '%prefix% &cCommand &8(&4%command%&8) &cwith the provided sub-argument is not allowed!' + +#>> HTP (Overwritten) +# Here you can customize your own fake '/plugins' command. +custom-plugins: + enabled: true + + # If this is set to true, the command will always be tab-completable, + # even if the command is supposed to be blocked + always-tab-completable: false + + commands: + - pl + - plugins + message: + - '&fPlugins (0):' + +#>> HTP (Overwritten) +# Here you can customize your own fake '/version' command. +custom-version: + enabled: true + + # If this is set to true, the command will always be tab-completable, + # even if the command is supposed to be blocked + always-tab-completable: false + + commands: + - icanhasbukkit + - about + - version + - ver + message: + - '&fThis server is running CraftBukkit version git-NasaSpigot-294 (MC: X)' + +#>> HTP (Overwritten) +# Here you can disable all namespace commands. +# Namespace commands are commands like plugin:command (e.g: essentials:warp) +# You can bypass this restriction with the proantitab.namespace permission. +block-namespace-commands: + enabled: false + +#>> HTP (Overwritten) +# Auto lowercase all commands when being executed, +# such that something like /PAY turns into /pay. +auto-lowercase-commands: + enabled: false + +# Patches a small exploit which causes the server to lag. +# Due to the fact that PAT interacts directly with Tab-Completions and their packets, +# it would be a waste not to provide some simple patches like these. ^^ +patch-exploits: + enabled: true + alert-message: '%prefix% &4%player% &ctried to crash/lag the server.' + kick-message: '&cFailed to read packet! Please reconnect.' + +#>> HTP (Overwritten) +# This feature allows you to customize your server brand you see when you press F3. +# Normally there is something like 'Purpur', or 'Spigot'. +# With this feature, you are able to change and even animate it. +custom-server-brand: + enabled: false + + # Determines the speed at which the animation goes. + # Set this to -1 to disable the animation. + # Disabling the animation will only display + # the first brand of this list. + # Warning: + # By disabling the animation, you also disable the + # automatic update of information. + # That means that placeholders won't update unless the + # player rejoins the server. + repeat-delay: 3 + + # This is the list of the animation + # Possible placeholders: + # %player% - name of the player + # %displayname% - display name of the player + # %world% - name of the world where the player is + # and the other placeholders from PlaceholderAPI. + brands: + - '&f&lP&froAntiTab |' + - '&fP&lr&foAntiTab /' + - '&fPr&lo&fAntiTab -' + - '&fPro&lA&fntiTab |' + - '&fProA&ln&ftiTab \' + - '&fProAn<&fiTab |' + - '&fProAnt&li&fTab /' + - '&fProAnti&lT&fab -' + - '&fProAnti&lT&fab \' + - '&fProAntiT&la&fb |' + - '&fProAntiTa&lb&f /' + - '&fProAntiTab -' + - '&fProAntiTab \' + +# ------------------------------------------------------------------------------ +# __ ___ +# / |/ /__ ______________ _____ ____ _____ +# / /|_/ / _ \/ ___/ ___/ __ `/ __ `/ _ \/ ___/ +# / / / / __(__ |__ ) /_/ / /_/ / __(__ ) +# /_/ /_/\___/____/____/\__,_/\__, /\___/____/ +# /____/ +# Here are all the remaining messages for the InGame commands. +# Have fun editing them to your liking! ^^ +# Remember: PlaceholderAPI & MiniMessage works on all these messages! ^^ +# Here are a few other placeholders that can be used in any message here: +# %prefix% - the plugin prefix +# %executor% - the name of the executor (command specified) +# %newest_version% - the version name of the latest plugin update +# %current_version% - the version name of the plugin that is installed right now + +prefix: '&8[&4ProAntiTab&8]' +only-for-proxy: '&cThis command works on Bungeecord/Velocity servers only!' +no-permissions: '&cYou are not allowed to execute this command! Missing permission: &4%permission%' +command-failed: '&cFailed to execute this command! Use "/pat" to see all available commands.' + +update-permissions: + all-players: '&aUpdated permissions!' + specific-player: '&aUpdated %target%''s permissions!' + player-not-online: '&c%target% is not online!' + +post-debug: + success: '&aSuccessfully uploaded debug logs: &e%link% &8(CLICK&8)' + failed: '&cFailed to upload debug logs!' + +reload: + loading: '&eReloading all configuration files...' + done: '&aSuccessfully reloaded all configuration files!' + +perms-check: + message: "&7All of &e%player%'s &7PAT-related permission: &e%permissions%" + player-is-missing: "&cPlease specify the player whose permission you want to check." + player-not-online: "&c%player% is not online!" + +help: + - '&7Available commands are: &f/%label%&7... &8[&fBUKKIT&8]' + - '&7Format: &8 (required)' + - '&f reload &7to reload the plugin' + - '&f notify &7to get alerted' + - '&f info &7to get a few information' + - '&f postdebug &7to post the PAT logs' + - '&f update &7to update player(s) permissions' + - "&f perms &7to check a player's permissions" + - '&f add/rem (command) &8 &7to manage the list' + - '&f clear &8 &7to clear the list' + - '&f creategroup (group) &7to create a group' + - '&f deletegroup (group) &7to delete a group' + - '&f setpriority (group) (priority) &7to set the priority' + - '&f list &8(group) &7to see all listed commands' + - '&f listgroups &7List all groups' + - '&f listpriorities &7to list all group priorities' + +info: + version: + updated: '&aUpdated' + outdated: '&cOutdated (%newest_version%)' + + proxy-sync: + time: '&e%time%' + disabled: '&cDisabled!' + + message: + - '&7Necessary information about &fPAT&8:' + - '&7 Version: &e%current_version%' + - '&7 Status: %version_status%' + - '&7 Last sync with proxy: %sync_time%' + - '&7 Proxy sync-token: &e%token%' + - '&7 Proxy-received server name: &e%sync_server_name%' + +notification: + enabled: '&aEnabled notifications' + disabled: '&cDisabled notifications' + alert: + - '&8[&4ALERT&8] &c%player% &8(&7world: &e%world%&8) &ctried to execute the following blocked command: &4%command%' + +blacklist: + clear: '&aList has been cleared!' + clear-confirmation: '&4Warning! &7This command will &cclear the entire list&7! &7Repeat the &esame command &7to confirm this action.' + + list: + message: '&7Listed commands (&f%size%&7)&8: &f%commands%' + splitter: '&7, &f' + + add: + success: '&aSuccessfully added %command% to the list!' + failed: '&c%command% is already in the list!' + + remove: + success: '&aSuccessfully removed %command% from the list!' + failed: '&c%command% is not listed!' + +group: + create: '&aGroup %group% has been created!' + already-exist: '&cGroup %group% already exists!' + does-not-exist: '&cGroup %group% does not exist!' + + delete: '&cGroup %group% has been deleted!' + delete-confirmation: '&4Warning! &7This command will &cdelete the group with the entire list&7 of this group! &7Repeat the &esame command &7to confirm this action.' + + clear: '&aList of group %group% has been cleared!' + clear-confirmation: '&4Warning! &7This command will &cclear the entire list&7 of this group! &7Repeat the &esame command &7to confirm this action.' + + priority: + success: '&aSuccessfully set the priority of group &e%group% &ato &e%priority%&a!' + failed: '&cInvalid priority! Please choose a number which is greater than 0.' + + list: + message: '&7Listed commands of group %group% (&f%size%&7)&8: &f%commands%' + splitter: '&7, &f' + + list-groups: + message: '&7All groups (&f%size%&7)&8: &f%groups%' + splitter: '&7, ' + command: '&f%group%' + + list-priorities: + message: '&7List of all group priorities (&f%size%&7)&8: \n&f%groups%' + splitter: '\n' + group: '&8- &e%priority%&8: &e%group%' + + add: + success: '&aSuccessfully added %command% to the list of group %group%!' + failed: '&c%command% is already in the list of group %group%!' + + remove: + success: '&aSuccessfully removed %command% from the list of group %group%!' + failed: '&c%command% is not listed in the group %group%!' diff --git a/live-server/plugins/ProAntiTab/config.yml b/live-server/plugins/ProAntiTab/config.yml new file mode 100755 index 0000000..d8b0e22 --- /dev/null +++ b/live-server/plugins/ProAntiTab/config.yml @@ -0,0 +1,346 @@ +# ____ ___ __ _ ______ __ +# / __ \_________ / | ____ / /_(_)_ __/___ _/ /_ +# / /_/ / ___/ __ \/ /| | / __ \/ __/ / / / / __ `/ __ \ +# / ____/ / / /_/ / ___ |/ / / / /_/ / / / / /_/ / /_/ / +# /_/ /_/ \____/_/ |_/_/ /_/\__/_/ /_/ \__,_/_.___/ +# config.yml (Bukkit/Spigot version) + +# This section doesn't really need to be changed, +# but a few people seem not to like my design for a custom update-notification message... +# Well... that's basically the whole reason for this one here. xd +updater: + enabled: true + period: 10000 + + announce-missing-parts: true + + # (!) Warning: + # Activating this will automatically update the config.yml in case something's missing. + # This will most likely cause the config.yml to look weird, considering that all comments, + # as well as spaces will be missing. Please take this in consideration. + auto-update-config: false + + updated: + - '&8[&2PAT &7| &2Bukkit&8] &aYou are using the newest version! ^^' + outdated: + - '&8[&4PAT &7| &4Bukkit&8] &cThere is a new version available! (%newest_version%)' + - '&8[&4PAT &7| &4Bukkit&8] &cYou are still using the %current_version%.' + - '&8[&4PAT &7| &4Bukkit&8] &cGet the newest version here:' + - '&8[&4PAT &7| &4Bukkit&8] &ehttps://www.rayzs.de/products/proantitab/page' + +# (!) Warning: If you have a Bungeecord/Velocity server, please enable this option! +# (!) How to use it properly can be seen on the following page: +# (!) https://www.spigotmc.org/resources/113172/field?field=documentation +# (!) At the first section ("How to setup") are spoilers with different server scenarios. +# (!) Open the spoiler that matches your server scenario and follow the instructed steps in there. +# Enabling this allows the Bungeecord/Velocity and backend servers to communicate with each other. +# Information that are being communicated with are for example settings of certain features, but also important +# data about groups, commands and much more, that are very important for the tab-completion & suggestions! +# Affected features that are being synced with, or overwritten by the proxy, are marked as ">> HTP". +handle-through-proxy: + enabled: false + token: insert-token-of-proxy-here + + # Advanced option: + # Loads the token from an ENV variable instead. + # (!) Warning: Do NOT enable this option, unless you know what you're doing! + load-from-env: + enabled: false + name: "PAT_TOKEN" + +#>> HTP +# This is a very necessary feature if you have way too many commands to block and instead decide +# to whitelist specific commands. +# Enabling this will disable ALL commands except for those that are in the (group-)list. +turn-blacklist-to-whitelist: true + +# Here you can customize the server version that is displayed on a ping. (The text at the player-count) +# (!) Warning: It's required to use Paper or Purpur to use this feature! +# (!) Supported server versions: 1.12.2 - latest +custom-protocol-ping: + enabled: false + + # Normally it would only display when someone pings the server with the wrong version. + # Enabling this will always display the protocol and replace it with the normal player count. + always-show: false + + # This number here determines the outcome for the %online_extended% placeholder. + # It's the current amount of players increased by this number. + # For example: 5/20 becomes 6/20 + extend-online-count: 1 + # true: Use new calculated online-count (%online_extended%) as max-players count. + # false: Use the default max-players count. + use-as-maxplayers: false + + # Enabling this option hides the list of players on your server, + # when you hover over the player count. + hide-players: false + + # The displayed protocol message + # Available placeholders: + # %online% - current online player count + # %online_extended% - manipulated online player count + # %max% - max player count + # ... and all the other placeholders from PlaceholderAPI + protocol: '&f&lProAntiTab &7(&a%online%&7/&c%max%&7)' + + # The displayed message when you hover over the player count. + custom-playerlist: + enabled: false + + # Available placeholders: + # %players% - list of players + # %online% - current online player count + # %max% - max player count + # ... and all the other placeholders from PlaceholderAPI + list: + - '&8> &7Online players: &a%online%&7/&2%max%' + - '&8> &7Using &fProAntiTab' + +#>> HTP (Sync) +# This feature allows you to create your own 'Unknown command.' message. +# It is very helpful considering the fact you might have to set the same message +# for if a command is blocked or really doesn't exist. ^^ +# Good to hide real and not-real commands from your players. +custom-unknown-command: + enabled: false + message: + - '&cThis command does not exist!' + +#>> HTP (Overwritten) +# This setting decides if a listed command should be cancelled from execution or not. +# As you can see it's enabled by default, which is also why every command that is listed +# is being blocked entirely. +cancel-blocked-commands: + enabled: true + base-command-message: + - '' +# - '%prefix% &cThis command &8(&4%command%&8) &cis blocked!' + sub-command-message: +# - '%prefix% &cCommand &8(&4%command%&8) &cwith the provided sub-argument is not allowed!' + - '' + +#>> HTP (Overwritten) +# Here you can customize your own fake '/plugins' command. +custom-plugins: + enabled: false + + # If this is set to true, the command will always be tab-completable, + # even if the command is supposed to be blocked + always-tab-completable: false + + commands: + - pl + - plugins + message: + - '&fPlugins (0):' + +#>> HTP (Overwritten) +# Here you can customize your own fake '/version' command. +custom-version: + enabled: true + + # If this is set to true, the command will always be tab-completable, + # even if the command is supposed to be blocked + always-tab-completable: false + + commands: + - icanhasbukkit + - about + - version + - ver + message: + - '&fracked.ru (MC: 1.21.1)' + +#>> HTP (Overwritten) +# Here you can disable all namespace commands. +# Namespace commands are commands like plugin:command (e.g: essentials:warp) +# You can bypass this restriction with the proantitab.namespace permission. +block-namespace-commands: + enabled: true + +#>> HTP (Overwritten) +# Auto lowercase all commands when being executed, +# such that something like /PAY turns into /pay. +auto-lowercase-commands: + enabled: true + +# Patches a small exploit which causes the server to lag. +# Due to the fact that PAT interacts directly with Tab-Completions and their packets, +# it would be a waste not to provide some simple patches like these. ^^ +patch-exploits: + enabled: true + alert-message: '%prefix% &4%player% &ctried to crash/lag the server.' + kick-message: '&cFailed to read packet! Please reconnect.' + +#>> HTP (Overwritten) +# This feature allows you to customize your server brand you see when you press F3. +# Normally there is something like 'Purpur', or 'Spigot'. +# With this feature, you are able to change and even animate it. +custom-server-brand: + enabled: false + + # Determines the speed at which the animation goes. + # Set this to -1 to disable the animation. + # Disabling the animation will only display + # the first brand of this list. + # Warning: + # By disabling the animation, you also disable the + # automatic update of information. + # That means that placeholders won't update unless the + # player rejoins the server. + repeat-delay: 3 + + # This is the list of the animation + # Possible placeholders: + # %player% - name of the player + # %displayname% - display name of the player + # %world% - name of the world where the player is + # and the other placeholders from PlaceholderAPI. + brands: + - '&f&lP&froAntiTab |' + - '&fP&lr&foAntiTab /' + - '&fPr&lo&fAntiTab -' + - '&fPro&lA&fntiTab |' + - '&fProA&ln&ftiTab \' + - '&fProAn<&fiTab |' + - '&fProAnt&li&fTab /' + - '&fProAnti&lT&fab -' + - '&fProAnti&lT&fab \' + - '&fProAntiT&la&fb |' + - '&fProAntiTa&lb&f /' + - '&fProAntiTab -' + - '&fProAntiTab \' + +# ------------------------------------------------------------------------------ +# __ ___ +# / |/ /__ ______________ _____ ____ _____ +# / /|_/ / _ \/ ___/ ___/ __ `/ __ `/ _ \/ ___/ +# / / / / __(__ |__ ) /_/ / /_/ / __(__ ) +# /_/ /_/\___/____/____/\__,_/\__, /\___/____/ +# /____/ +# Here are all the remaining messages for the InGame commands. +# Have fun editing them to your liking! ^^ +# Remember: PlaceholderAPI & MiniMessage works on all these messages! ^^ +# Here are a few other placeholders that can be used in any message here: +# %prefix% - the plugin prefix +# %executor% - the name of the executor (command specified) +# %newest_version% - the version name of the latest plugin update +# %current_version% - the version name of the plugin that is installed right now + +prefix: '&8[&4ProAntiTab&8]' +only-for-proxy: '&cThis command works on Bungeecord/Velocity servers only!' +no-permissions: '&cYou are not allowed to execute this command! Missing permission: &4%permission%' +command-failed: '&cFailed to execute this command! Use "/pat" to see all available commands.' + +update-permissions: + all-players: '&aUpdated permissions!' + specific-player: '&aUpdated %target%''s permissions!' + player-not-online: '&c%target% is not online!' + +post-debug: + success: '&aSuccessfully uploaded debug logs: &e%link% &8(CLICK&8)' + failed: '&cFailed to upload debug logs!' + +reload: + loading: '&eReloading all configuration files...' + done: '&aSuccessfully reloaded all configuration files!' + +perms-check: + message: "&7All of &e%player%'s &7PAT-related permission: &e%permissions%" + player-is-missing: "&cPlease specify the player whose permission you want to check." + player-not-online: "&c%player% is not online!" + +help: + - '&7Available commands are: &f/%label%&7... &8[&fBUKKIT&8]' + - '&7Format: &8 (required)' + - '&f reload &7to reload the plugin' + - '&f notify &7to get alerted' + - '&f info &7to get a few information' + - '&f postdebug &7to post the PAT logs' + - '&f update &7to update player(s) permissions' + - "&f perms &7to check a player's permissions" + - '&f add/rem (command) &8 &7to manage the list' + - '&f clear &8 &7to clear the list' + - '&f creategroup (group) &7to create a group' + - '&f deletegroup (group) &7to delete a group' + - '&f setpriority (group) (priority) &7to set the priority' + - '&f list &8(group) &7to see all listed commands' + - '&f listgroups &7List all groups' + - '&f listpriorities &7to list all group priorities' + +info: + version: + updated: '&aUpdated' + outdated: '&cOutdated (%newest_version%)' + + proxy-sync: + time: '&e%time%' + disabled: '&cDisabled!' + + message: + - '&7Necessary information about &fPAT&8:' + - '&7 Version: &e%current_version%' + - '&7 Status: %version_status%' + - '&7 Last sync with proxy: %sync_time%' + - '&7 Proxy sync-token: &e%token%' + - '&7 Proxy-received server name: &e%sync_server_name%' + +notification: + enabled: '&aEnabled notifications' + disabled: '&cDisabled notifications' + alert: + - '&8[&4ALERT&8] &c%player% &8(&7world: &e%world%&8) &ctried to execute the following blocked command: &4%command%' + +blacklist: + clear: '&aList has been cleared!' + clear-confirmation: '&4Warning! &7This command will &cclear the entire list&7! &7Repeat the &esame command &7to confirm this action.' + + list: + message: '&7Listed commands (&f%size%&7)&8: &f%commands%' + splitter: '&7, &f' + + add: + success: '&aSuccessfully added %command% to the list!' + failed: '&c%command% is already in the list!' + + remove: + success: '&aSuccessfully removed %command% from the list!' + failed: '&c%command% is not listed!' + +group: + create: '&aGroup %group% has been created!' + already-exist: '&cGroup %group% already exists!' + does-not-exist: '&cGroup %group% does not exist!' + + delete: '&cGroup %group% has been deleted!' + delete-confirmation: '&4Warning! &7This command will &cdelete the group with the entire list&7 of this group! &7Repeat the &esame command &7to confirm this action.' + + clear: '&aList of group %group% has been cleared!' + clear-confirmation: '&4Warning! &7This command will &cclear the entire list&7 of this group! &7Repeat the &esame command &7to confirm this action.' + + priority: + success: '&aSuccessfully set the priority of group &e%group% &ato &e%priority%&a!' + failed: '&cInvalid priority! Please choose a number which is greater than 0.' + + list: + message: '&7Listed commands of group %group% (&f%size%&7)&8: &f%commands%' + splitter: '&7, &f' + + list-groups: + message: '&7All groups (&f%size%&7)&8: &f%groups%' + splitter: '&7, ' + command: '&f%group%' + + list-priorities: + message: '&7List of all group priorities (&f%size%&7)&8: \n&f%groups%' + splitter: '\n' + group: '&8- &e%priority%&8: &e%group%' + + add: + success: '&aSuccessfully added %command% to the list of group %group%!' + failed: '&c%command% is already in the list of group %group%!' + + remove: + success: '&aSuccessfully removed %command% from the list of group %group%!' + failed: '&c%command% is not listed in the group %group%!' \ No newline at end of file diff --git a/live-server/plugins/ProAntiTab/custom-responses.yml b/live-server/plugins/ProAntiTab/custom-responses.yml new file mode 100755 index 0000000..d80b9ed --- /dev/null +++ b/live-server/plugins/ProAntiTab/custom-responses.yml @@ -0,0 +1,86 @@ +# ____ ___ __ _ ______ __ +# / __ \_________ / | ____ / /_(_)_ __/___ _/ /_ +# / /_/ / ___/ __ \/ /| | / __ \/ __/ / / / / __ `/ __ \ +# / ____/ / / /_/ / ___ |/ / / / /_/ / / / / /_/ / /_/ / +# /_/ /_/ \____/_/ |_/_/ /_/\__/_/ /_/ \__,_/_.___/ +# custom-responses.yml +# +# Here you can configure a few of the blocked commands a bit further. +# But what exactly is this here? Every command that would normally respond with the typical "command is blocked" message, can be configured in here! +# And how does it work? It's simple. You just provide the a trigger of the command that would be normally blocked. +# Commands that would normally work won't send the messages you have set here. +# This way PAT can offer you full control over certain commands and their normal responses. +# What are these action section at each block? +# This is an additional feature to make your responses much more alive. +# Example actions that can be used are the following: +# Execute console command: +# Syntax: console::command +# Example: console::say %player% is an evil player +# Execute player command: +# Syntax: execute::command +# Example: execute::help +# Send actionbar: +# Syntax: actionbar::text +# Example: actionbar::&cThis is not cool %player%! +# Send title: +# Syntax: title::title::subtitle::5::20::5 +# Example: title::&aTest title::&cHello %player%! +# Play sound: +# Syntax: sound::soundName::volume::pitch +# Example: sound::ENTITY_ENDER_DRAGON_GROWL::1.0::1.0 +# Give potion effect: +# Syntax: effect::potionEffect::duration::amplifier +# Example: effect::BLINDNESS::45::1 + +# Possible variable: +# %args[from-to]% to get the command arguments +# Example if you've typed: /shop open gui user +# %args[1]% = shop +# %args[2]% = open +# %args[1-2]% = shop open +# %args[1-3]% = shop open gui +# %args[2-4]% = open gui user + +# Here are a few examples: + +# Example for all blocked commands. +# In here we only trigger this response in any case. +# This applies to all commands, as well as sub-commands, +# unless you have specified another custom response. +#example-with-everything: +# triggers: +# - "*" +# message: +# - "&cI'm blocked" +# actions: +# - "actionbar::&cSorry %player%, but this command is blocked." + +# Example with kits. +# In here we only trigger the given message, if the player would type "/kit ...". +# If this command would work through sub-arguments, then the player would only able to execute the command with the +# listed sub-arguments assigned to it. Everything else will result with the set message in there. +# -- +#example-with-kits: +# triggers: +# - "kit *" +# message: +# - "&cThis kit does not exist!" +# actions: +# - "actionbar::&cSorry %player%, but this kit does not exist!" + +# Here another example with an auctionhouse plugin. +# In here we only trigger the given message, if the player would type "/ah plugin". +# Normally it would print out the "command is blocked" message, because PAT would have blocked it in our case. +# Therefore, we can also assign a custom response message to it. +# --- +#example-with-auctionhouse: +# triggers: +# - "ah plugin" +# message: +# - "&cThis sub-command does not exist. Please type: &e/ah help" +# actions: +# - "console::say That's not nice %player%!" +# - "effect::BLINDNESS::45::1" +# - "sound::ENTITY_ENDER_DRAGON_GROWL::1.0::1.0" +# - "title::&cHey!::&cYou can't do that %player%!::5::20::5" +# - "actionbar::&cNop, sorry %player%" \ No newline at end of file diff --git a/live-server/plugins/ProAntiTab/placeholders.yml b/live-server/plugins/ProAntiTab/placeholders.yml new file mode 100755 index 0000000..532c1e0 --- /dev/null +++ b/live-server/plugins/ProAntiTab/placeholders.yml @@ -0,0 +1,82 @@ +# ____ ___ __ _ ______ __ +# / __ \_________ / | ____ / /_(_)_ __/___ _/ /_ +# / /_/ / ___/ __ \/ /| | / __ \/ __/ / / / / __ `/ __ \ +# / ____/ / / /_/ / ___ |/ / / / /_/ / / / / /_/ / /_/ / +# /_/ /_/ \____/_/ |_/_/ /_/\__/_/ /_/ \__,_/_.___/ +# placeholders.yml (PlaceholderAPI Hook) +# (!) Warning: Those placeholders only work if PlaceholderAPI is installed! + +# This here are all placeholders PAT can provide you with. +# Here you can change those placeholders to your liking. +# The names of the usable placeholders are the heading of the sections. +# Here's a small overview of all placeholders: + +# Some general Placeholders to work with: +# %pat_general_prefix% = Get the PAT prefix set in the config.yml. +# %pat_general_user% = Get the name of the user who receives this message. +# %pat_general_version_current% = Get current version name of PAT. +# %pat_general_version_newest% = Get newest version name of PAT. + +# Placeholders of some of the messages in the config.yml: +# %pat_message_unknowncommand% = Get the "unknown command"-message from the config.yml of PAT. [cancel-blocked-command] +# %pat_message_base_blocked% = Get the "command blocked"-message from the config.yml of PAT. [custom-unknown-command] +# %pat_message_sub_blocked% = Get the "sub-command blocked"-message from the config.yml of PAT. [custom-unknown-command] + +# Placeholders to list all commands: +# %pat_list_size_commands% = Get the amount of all listed commands. +# %pat_list_commands% = Get all listed commands. +# %pat_list_sorted_commands% = Get all listed commands in alphabetic order. (A-Z) +# %pat_list_reversed_groups% = Get all listed commands in reversed alphabetic order. (Z-A) + +# Placeholders to list all commands of a group: (replace 'xxx' with the group-name) +# %pat_list_size_commands_group_xxx% = Get the amount of all commands of a group. +# %pat_list_commands_group_xxx% = Get all commands of a group. +# %pat_list_sorted_commands_group_xxx% = Get all commands of a group in alphabetic order. (A-Z) +# %pat_list_reversed_commands_group_xxx% = Get all commands of a group in reversed alphabetic order. (Z-A) + +# Placeholders to list all groups: +# %pat_list_size_groups% = Get the amount of all available groups. +# %pat_list_groups% = Get all groups. +# %pat_list_sorted_groups% = Get all groups in alphabetic order. (A-Z) +# %pat_list_reversed_groups% = Get all groups in reversed alphabetic order. (Z-A) + +# Get the name of the user. +# If the user is the console, the placeholder below will be used instead. +general_user: + console-name: 'Server console' + +# Get all groups. +list_groups: + splitter: '&7, &e' + +# Get all groups in alphabetic order. (A-Z) +list_sorted_groups: + splitter: '&7, &e' + +# Get all groups in reversed alphabetic order. (Z-A) +list_reversed_groups: + splitter: '&7, &e' + +# Get all commands of a group. +list_commands_group_: + splitter: '&7, &e' + +# Get all commands of a group in alphabetic order. (A-Z) +list_sorted_commands_group_: + splitter: '&7 &e' + +# Get all commands of a group in reversed alphabetic order. (Z-A) +list_reversed_commands_group_: + splitter: '&7, &e' + +# Get all listed commands. +list_commands: + splitter: '&7, &e' + +# Get all listed commands in alphabetic order. (A-Z) +list_sorted_commands: + splitter: '&7, &e' + +# Get all listed commands in reversed alphabetic order. (Z-A) +list_reversed_commands: + splitter: '&7, &e' \ No newline at end of file diff --git a/live-server/plugins/ProAntiTab/storage.yml b/live-server/plugins/ProAntiTab/storage.yml new file mode 100755 index 0000000..4e75364 --- /dev/null +++ b/live-server/plugins/ProAntiTab/storage.yml @@ -0,0 +1,27 @@ +global: + commands: + - login + - register + +groups: + default: + priority: 1 + commands: + - login + - register +# - discord + - help + - rules + - sethome + - home + - deletehome + - claim + - lands + - tpaccept + - tp + - pay + - pm + - bal + - skin + - skin url + - skin set diff --git a/live-server/plugins/ProtocolLib/config.yml b/live-server/plugins/ProtocolLib/config.yml new file mode 100644 index 0000000..6bf6d62 --- /dev/null +++ b/live-server/plugins/ProtocolLib/config.yml @@ -0,0 +1,30 @@ +global: + # Settings for the automatic version updater + auto updater: + notify: true + download: false + + # Number of seconds to wait until a new update is downloaded + delay: 43200 # 12 hours + + metrics: true + + # Prints certain warnings to players with the protocol.info permission + chat warnings: true + + # Automatically compile structure modifiers + background compiler: true + + # Disable version checking for the given Minecraft version. Backup your world first! + ignore version check: + + # Whether or not to enable the filter command + debug: false + + # Whether or not to print a stack trace for every warning + detailed error: false + + # The engine used by the filter command + script engine: JavaScript + + suppressed reports: \ No newline at end of file diff --git a/live-server/plugins/ProtocolLib/lastupdate b/live-server/plugins/ProtocolLib/lastupdate new file mode 100644 index 0000000..41dddba --- /dev/null +++ b/live-server/plugins/ProtocolLib/lastupdate @@ -0,0 +1 @@ +1777546703 \ No newline at end of file diff --git a/live-server/plugins/RackedLimbo/config.yml b/live-server/plugins/RackedLimbo/config.yml new file mode 100644 index 0000000..df06030 --- /dev/null +++ b/live-server/plugins/RackedLimbo/config.yml @@ -0,0 +1,28 @@ +# RackedLimbo configuration + +# Limbo world settings — pre-auth players are kept here. +limbo: + # Bukkit world name. Folder will be created at /data//. + world: auth_limbo + # Spawn coordinates inside the limbo world. + spawn-x: 0.5 + spawn-y: 128.0 + spawn-z: 0.5 + # Build a 5x5 barrier platform under spawn so unauth players don't fall. + build-platform: true + platform-y: 127 + +# Where AuthMe's SQLite DB lives, relative to the server data dir. +# Default matches itzg/minecraft-server with a /data bind mount. +authme: + db-path: plugins/AuthMe/authme.db + # Tick delay between LoginEvent firing and us forcing the teleport. + # 10 ticks (~0.5s) lets AuthMe's own broken teleport finish first + # so our async teleport is the LAST one to run. + teleport-delay-ticks: 10 + # Whether to forceload the chunk at the saved quit-loc 1s before login + # completes (via AuthMeAsyncPreLoginEvent), then unforce after teleport. + preload-chunks: true + +# Set to true for verbose logs. False = only INFO on actual restores. +debug: false diff --git a/live-server/plugins/SkinsRestorer/config.yml b/live-server/plugins/SkinsRestorer/config.yml new file mode 100755 index 0000000..e3834de --- /dev/null +++ b/live-server/plugins/SkinsRestorer/config.yml @@ -0,0 +1,380 @@ +################################## +# SkinsRestorer config # +################################## + +# We from SRTeam thank you for using our plugin! + +# We recommend you read the official installation guide before asking for help: +# https://skinsrestorer.net/docs/installation + +# We have prepared a few resources to help you configure the plugin: +# General help: https://skinsrestorer.net/docs/configuration +# Commands and permissions: https://skinsrestorer.net/docs/configuration/commands-permissions +# Translations and messages: https://skinsrestorer.net/docs/configuration/locale-translations + +# If you encounter issues, you can do the following: +# Read the troubleshooting guide: https://skinsrestorer.net/docs/troubleshooting +# For advanced help or other, go to our Discord Server: https://skinsrestorer.net/discord + +# (?) Step by step installation guide: https://skinsrestorer.net/docs/installation + +# (!) IF YOU ARE USING A PROXY (BungeeCord, Waterfall or Velocity), YOU NEED TO INSTALL SKINSRESTORER ON THE PROXY AND ALL SERVERS! (!) +# (!) YOU ALSO NEED TO CONFIGURE YOUR SERVERS TO DETECT THE PROXY! (!) +# (!) AND YOU ALSO NEED TO PUT THE SAME CONFIG FILE IN ALL PROXIES AND SERVERS! (!) +# (!) You can find detailed proxy instructions here: https://skinsrestorer.net/docs/installation + +########## +# Locale # +########## + +# Translation & message options here +# To learn more about translations and how to make custom translations, visit: https://skinsrestorer.net/docs/configuration/locale-translations +messages: + # A locale code for the locale you want to use by default for messages and commands. + # Has to be a string separated by an underscore. + locale: en + # A locale code for the messages and commands sent to the console. + # This is useful if you want to use a different locale for the console than for players. + # We recommend keeping this at the default value because we mostly only provide support in English. + # Has to be a string separated by an underscore. + consoleLocale: en + # Disable the message prefix in SkinsRestorer messages. + disablePrefix: false + # Every message sent by the plugin will use the players client locale if a translation is available. + # If disabled, the config locale will be used instead. + perIssuerLocale: true + # How dates are formatted by the plugin in messages. Format is explained here: + # https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/format/DateTimeFormatter.html + dateFormat: dd MMMM yyyy + +############ +# Database # +############ + +# Settings for databases skin storage (recommended for large networks with a lot of skins) +# Set database.type to FILE, MYSQL or POSTGRESQL. +# [!] Make sure you have the correct permissions set for your database user. [!] +# [!] Make sure to fill in database.connectionOptions if you're using certificate / ssl authentication. [!] +# [!] If you're not using ssl, change sslMode=trust to sslMode=disable [!] +database: + # Database backend selection. Valid values: FILE, MYSQL, POSTGRESQL. + type: FILE + host: localhost + port: 3306 + database: db + username: root + password: pass + maxPoolSize: 10 + tablePrefix: sr_ + connectionOptions: sslMode=trust&serverTimezone=UTC + +############ +# Commands # +############ + +# Control behaviour of commands. +# To learn more about commands and permissions, visit: https://skinsrestorer.net/docs/configuration/commands-permissions +commands: + # For all player commands to work by default, you need to give players the permission 'skinsrestorer.player'. + # This option allows you to force the default permission (skinsrestorer.player) to be given to all players. + # A value of 'false' will disable this behaviour, and players will need to be given the permission explicitly. + # This is because some platforms (like BungeeCord) do not have a default permission system. + # If your platform supports default permissions, this option is ignored. + forceDefaultPermissions: true + # Players cooldown in seconds when changing skins (set to 0 to disable). + # SkinErrorCooldown is used when an error or invalid url occurs. + # Can be bypassed with 'skinsrestorer.bypasscooldown'. + skinChangeCooldown: 1 + # Players cooldown in seconds when getting skulls (set to 0 to disable). + # SkullErrorCooldown is used when an error or invalid url occurs. + # Can be bypassed with 'skinsrestorer.bypasscooldown'. + skullGetCooldown: 30 + skinErrorCooldown: 5 + skullErrorCooldown: 5 + # When enabled, only websites from the list below is allowed to be set using /skin url + # [?] this is useful if you host your own image server. + restrictSkinUrls: + enabled: false + list: + - https://i.imgur.com + - http://i.imgur.com + - https://storage.googleapis.com + - http://storage.googleapis.com + - https://cdn.discordapp.com + - http://cdn.discordapp.com + - https://textures.minecraft.net + - http://textures.minecraft.net + # Skins in this list will be disabled, so users can't set them. + # Can be bypassed with 'skinsrestorer.bypassdisabled'. + disabledSkins: + enabled: false + list: + - steve + - owner + # To enable per skin permissions you must agree to these rules: + # - Do not monetize players being able to use their own skin + # - Do not force players to steve skins and make them pay to use their own skin + # - You can charge them for custom skins, but not their own skin + # If you agree, set this to: 'I will follow the rules' + perSkinPermissionsConsent: '' + # Allows the usage of per-skin permission. + # Example: skinsrestorer.skin.xknat OR skinsrestorer.skin.Pistonmaster + # with "skinsrestorer.ownskin" players can run /skin set . + # [!] Only enable if you have set up permissions properly and know what you are doing. + # [!] This option only works if 'commands.perSkinPermissionsConsent' is consented to. + perSkinPermissions: false + # How many commands to store in the player's command history. + # This is used for the /skin undo command. + # Use 0 to disable storing command history. + maxHistoryLength: 36 + # How many favourites a player may have. + # This is used for the /skin favourite command. + # Use 0 to disable storing favourites. + maxFavouriteLength: 180 + customHelp: + # Override the automatically generated translated help message with a custom one. + # This is useful if you want to have a custom help message for your server. + # This only affects the base help message when running /skin with no parameters, not the error/subcommand help messages. + enabled: false + # The custom help message to send to the player when running /skin with no parameters. + message: + - Skin plugin Help + - --------------------- + - /skin set - Set your skin + # + # This option will disable the /skin command from being registered on the server. + # Do not disable this unless you are overriding the /skin command with a different plugin or you don't want the skin command. + # Requires a server restart to take effect. + disableSkinCommand: false + # + # This option will disable the /skull command from being registered on the server. + # Do not disable this unless you are overriding the /skull command with a different plugin or you don't want the skull command. + # Requires a server restart to take effect. + disableSkullCommand: false + # + # This option will disable the /skins command from being registered on the server. + # Do not disable this unless you are overriding the /skins command with a different plugin or you don't want the GUI command. + # Requires a server restart to take effect. + disableGUICommand: false + +# Control what skins appear in the /skins GUI +gui: + # Control what skin is displayed when a player does not have permission for a skin. + # This is the end part of the skin texture URL. + # You can obtain the texture URL from /sr info skin + notUnlockedSkin: c10591e6909e6a281b371836e462d67a2c78fa0952e910f32b41a26c48c1757c + # Control custom skins in the /skins GUI + custom: + # Whether custom skins are enabled in the /skins GUI + enabled: false + # Order of custom skins relative to the other skin types + index: 0 + # Whether only specific custom skins are allowed in the /skins GUI + onlyShowList: true + # Specific custom skins to show in the /skins GUI + list: + - xknat + - pistonmaster + # Control player skins in the /skins GUI + players: + # Whether player skins are enabled in the /skins GUI + enabled: false + # Order of player skins relative to the other skin types + index: 1 + # Whether only specific player skins are allowed in the /skins GUI + onlyShowList: false + # Specific player skins to show in the /skins GUI + list: + - 7dcfc130-344a-4719-9fbe-3176bc2075c6 + - b1ae0778-4817-436c-96a3-a72c67cda060 + # Control recommended skins in the /skins GUI + recommendations: + # Whether recommended skins are enabled in the /skins GUI + enabled: true + # Order of recommended skins relative to the other skin types + index: 2 + # Whether only specific recommended skins are allowed in the /skins GUI + onlyShowList: false + # Specific recommended skins to show in the /skins GUI + list: + - vampire + - space-suit + +########### +# Storage # +########### + +# Here you can design the plugin the way you want it. + +# Enable or disable default skins +# applyForPremium: false will only put a skin on skinless/steve players. +# If there is more than one, the plugin will choose a random one. +# You can use "" in the defaultSkins list to select a random SkinsRestorer recommended skin. +# [!] url.png skins will be cached and therefore will not be updated +storage: + defaultSkins: + enabled: false + applyForPremium: false + list: + - xknat + - pistonmaster + # + # Enable this will require players to run "/skin update" to update their skin. + disallowAutoUpdateSkin: false + # Time that skins are stored in the database before we request again (in minutes). + # [?] A value of 0 will always trigger a request to the Mojang API. + # [!] Lowering this value will increase the amount of requests which could be a problem on large servers. + skinExpiresAfter: 15 + # How long we should cache the UUIDs of players (in minutes). + # [?] A value of 0 will always trigger a request to the Mojang API. + # [!] Lowering this value will increase the amount of requests which could be a problem on large servers. + uuidExpiresAfter: 60 + +######### +# Proxy # +######### + +# Change proxy specific settings here. +proxy: + # Disable all SkinsRestorer commands on specific backend servers. + # [!] This only works & is relevant if you're using proxies like BungeeCord / Velocity + notAllowedCommandServers: + # Whether to enable the backend server command blocking feature. + enabled: true + # Block players from executing SkinsRestorer commands before having joined a server. + ifNoServerBlockCommand: false + # When false means servers in the list are NOT allowed to execute SkinsRestorer commands, true means ONLY servers in the list are allowed to execute SkinsRestorer commands. + allowList: false + # List of servers where SkinsRestorer commands are allowed/disallowed depending on the 'allowList' setting. + list: + - auth + +########## +# Server # +########## + +# Change server specific settings here. +server: + # Disabling this will stop SkinsRestorer from changing skins when a player loads a server resource pack. + # When a player loads a server resource pack, their skin is reset. By default, SkinsRestorer reapplies the skin when the player reports that the resource pack has been loaded or an error has occurred. + resourcePackFix: true + # Dismounts a mounted (on a horse, or sitting) player when their skin is updated, preventing players from becoming desynced. + dismountPlayerOnSkinUpdate: true + # Remounts a player that was dismounted after a skin update (above option must be true). + # Disabling this is only recommended if you use plugins that allow you ride other players, or use sit. Otherwise you could get errors or players could be kicked for flying. + remountPlayerOnSkinUpdate: true + # Dismounts all passengers mounting a player (such as plugins that let you ride another player), preventing those players from becoming desynced. + dismountPassengersOnSkinUpdate: false + sound: + # Play a sound when a player runs /skin to change their skin. + enabled: true + # Sound to play when a player runs /skin to change their skin. + # You can find the allowed format and values at + # https://javadoc.io/static/com.github.cryptomorin/XSeries/11.0.0/com/cryptomorin/xseries/XSound.html#parse(java.lang.String) + value: ENTITY_PLAYER_TELEPORT, 0.7 + # Proxy mode settings. Allows SkinsRestorer to work with proxies. + proxyMode: + # Proxy mode detection. Valid values are ENABLED, DISABLED, AUTO. Auto will auto detect based on your server configuration. + detection: AUTO + # Proxy mode API will make server-side plugin calls to SkinsRestorer API possible. Only works if a database is set up instead of file storage. + api: true +login: + # Stops the process of setting a skin if the LoginEvent was canceled by an AntiBot plugin. + # [?] Unsure? leave this true for better performance. + noSkinIfLoginCanceled: true + # This will make SkinsRestorer always apply the skin even if the player joins as premium on an online mode server. + alwaysApplyPremium: false +api: + # Here you can fill in your APIKey for lower MineSkin request times. + # Key can be requested from https://mineskin.org/apikey + # MineSkin offers 10% off your first three months (all plans except Lite) with the coupon SKINSRESTORER10. + # All plans other than Lite include cape generation, higher limits, and other exclusive features. + # [?] A key is not required, but recommended. + mineskinAPIKey: key + # SkinsRestorer uses MineSkin to generate usable skins from links. + # All skins generated by MineSkin are by default shown in their public gallery on their website. + # Enabling this option will hide all skins generated by MineSkin from their public gallery. + mineskinSecretSkins: false + # SkinsRestorer provides curated recommended skins for players to use + # These skin can be used via /skin random and the /skins GUI + # If you would like to opt out of this feature, set this to false. + # It will prevent loading of recommended skins from storage and downloading new ones. + # Be aware that commands like /skin random will not work without this feature. + fetchRecommendedSkins: true + # Window size in seconds for batching Mojang API requests to avoid rate limits. + # Requests are batched in windows of this duration or up to 10 requests, whichever comes first. + # Default is 1 second. + mojangBatchWindowSeconds: 1 + # Enable Ely.by as a skin data provider. + # When enabled, SkinsRestorer will use Ely.by to fetch player skins instead of Mojang. + # This is useful for servers that support non-premium players using Ely.by accounts. + # Disabled by default. Enable only if your server uses Ely.by. + elyByEnabled: false + +############### +# Danger Zone # +############### + +# ABSOLUTELY DO NOT CHANGE SETTINGS HERE IF YOU DO NOT KNOW WHAT YOU DO! +advanced: + # + # Enabling this will stop SkinsRestorer to change skins on join. + # Handy for when you want run /skin apply to apply skin after texturepack popup + disableOnJoinSkins: false + # + # This enables the PaperMC join event integration that allows instant skins on join. + # It is recommended over the fallback listener because it is smoother and should not lag the server. + # It also fixes all resource pack skin apply issues. + # If your players are experiencing extremely long loading screens, try disabling this. + enablePaperJoinListener: true + # + # This is a very dangerous feature that should only be used if you know what you are doing. + # Instead of resending player skins to other players by hiding and shadowing them, we will teleport them to a far away location and back + # This is a workaround for some server software with broken vanishing support, like Arclight. + teleportRefresh: false + # + # When enabled SkinsRestorer will not try to connect to any web server, which means the follow things won't work: + # Getting new skins from Mojang, looking up uuids of players, skin url, update checking and more. + # SkinsRestorer will only be able to access already downloaded skins. + # This is useful for servers that are not connected to the internet or have a firewall blocking connections. + noConnections: false + # + # When enabled SkinsRestorer will use the new player head objects inside chat messages. + # While these new objects look great, they are not supported by all server software and plugins, especially older servers. + # This option will be on by default in the future when backwards compatibility is no longer a concern. + playerHeadChatObjects: false + +# Updater Settings +# +# Using outdated version void's support, compatibility & stability. + +# To block all types of automatic updates (which can risk keeping an exploit): +# Create a file called 'noautoupdate.txt' in the plugin directory (./plugins/SkinsRestorer/ ) + +################ +# DEV's corner # +################ + +# Enable these on the dev's request +dev: + # Enable to start receiving debug messages about api requests & more. + debug: false + +# End # + +# Useful tools: +# +# SkinFile Generator: +# With SkinFile Generator, you can upload your own custom skin to get a unique .skin file that you can put in your skins folder, to use with SkinsRestorer. +# Check it out here: https://generator.skinsrestorer.net +# +# SkinSystem: +# With SkinSystem, you, as a server owner, can connect AuthMe with the SkinSystem website that you can host, to give your players the ability to upload custom skins. +# Check it out here: https://github.com/SkinsRestorer/SkinSystem +# +# Useful Links # +# Website: https://skinsrestorer.net +# Docs: https://skinsrestorer.net/docs +# Spigot: https://skinsrestorer.net/spigot +# Github: https://github.com/SkinsRestorer/SkinsRestorer +# Discord: https://skinsrestorer.net/discord diff --git a/live-server/plugins/TAB/animations.yml b/live-server/plugins/TAB/animations.yml new file mode 100644 index 0000000..3e1b761 --- /dev/null +++ b/live-server/plugins/TAB/animations.yml @@ -0,0 +1,145 @@ +MyAnimation1: + change-interval: 100 + texts: + - '&d-&3--------------' + - '&3-&d-&3-------------' + - '&3--&d-&3------------' + - '&3---&d-&3-----------' + - '&3----&d-&3----------' + - '&3-----&d-&3---------' + - '&3------&d-&3--------' + - '&3-------&d-&3-------' + - '&3--------&d-&3------' + - '&3---------&d-&3-----' + - '&3----------&d-&3----' + - '&3-----------&d-&3---' + - '&3------------&d-&3--' + - '&3-------------&d-&3-' + - '&3--------------&d-' + - '&3-------------&d-&3-' + - '&3------------&d-&3--' + - '&3-----------&d-&3---' + - '&3----------&d-&3----' + - '&3---------&d-&3-----' + - '&3--------&d-&3------' + - '&3-------&d-&3-------' + - '&3------&d-&3--------' + - '&3-----&d-&3---------' + - '&3----&d-&3----------' + - '&3---&d-&3-----------' + - '&3--&d-&3------------' + - '&3-&d-&3-------------' + - '&d-&3--------------' +ServerName: + change-interval: 300 + texts: + - '&c&lServerName' + - '&c&n&lServerName' + - '&b&lServerName' + - '&b&l&nServerName' + - '&e&lServerName' + - '&e&n&lServerName' +web: + change-interval: 200 + texts: + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&6w&eww.domain.com' + - '&ew&6w&ew.domain.com' + - '&eww&6w&e.domain.com' + - '&ewww&6.&edomain.com' + - '&ewww.&6d&eomain.com' + - '&ewww.d&6o&emain.com' + - '&ewww.do&6m&eain.com' + - '&ewww.dom&6a&ein.com' + - '&ewww.doma&6i&en.com' + - '&ewww.domai&6n&e.com' + - '&ewww.domain&6.&ecom' + - '&ewww.domain.&6c&eom' + - '&ewww.domain.c&6o&em' + - '&ewww.domain.co&6m' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' + - '&ewww.domain.com' +vote: + change-interval: 1000 + texts: + - '&avote.domain.com' + - '&a&nvote.domain.com' + - '&5vote.domain.com' + - '&5&nvote.domain.com' +Welcome: + change-interval: 400 + texts: + - '&7&lW_' + - '&7&lW_' + - '&7&lWe_' + - '&7&lWel_' + - '&7&lWelc_' + - '&7&lWelco_' + - '&7&lWelcom_' + - '&7&lWelcome_' + - '&7&lWelcome_' + - '&7&lWelcome_' + - '&7&lWelcome_' + - '&7&lWelcom_' + - '&7&lWelco_' + - '&7&lWelc_' + - '&7&lWel_' + - '&7&lWe_' + - '&7&lW_' + - '&7&lW_' +time: + change-interval: 900 + texts: + - '&7Time &b%time%' + - '&7> Time &b%time% &7<' + - '&7>> Time &b%time% &7<<' + - '&7>>> Time &b%time% &7<<<' + - '&7Date &b%date%' + - '&7> Date &b%date% &7<' + - '&7>> Date &b%date% &7<<' + - '&7>>> Date &b%date% &7<<<' +ping-tps: + change-interval: 5000 + texts: + - '&aPing: &2&n%ping%&r &ams' + - '&bServer TPS: &8%tps%' +admin_prefix: + change-interval: 1000 + texts: + - '&6&lAdmin &e' + - '&6&lAdmin &e' + - '&9&lAdmin &e' + - '&9&lAdmin &e' + - '&4&lAdmin &e' + - '&4&lAdmin &e' + - '&3&lAdmin &e' + - '&3&lAdmin &e' + - '&2&lAdmin &e' + - '&2&lAdmin &e' + - '&d&lAdmin &e' + - '&d&lAdmin &e' + - '&f&lAdmin &e' + - '&f&lAdmi &e' + - '&f&lAdm &e' + - '&f&lAd &e' + - '&f&lA &e' + - '&f&lAd &e' + - '&f&lAdm &e' + - '&f&lAdmi &e' + - '&f&lAdmin &e' +barcolors: + change-interval: 1000 + texts: + - RED + - BLUE + - GREEN + - YELLOW diff --git a/live-server/plugins/TAB/config.yml b/live-server/plugins/TAB/config.yml new file mode 100644 index 0000000..da220ab --- /dev/null +++ b/live-server/plugins/TAB/config.yml @@ -0,0 +1,179 @@ +header-footer: + enabled: true + designs: + world-world1: + display-condition: '%world%=world1' + header: + - an example of world with custom + footer: + - header/footer and prefix/suffix + world-world2;world3: + display-condition: '%world%=world2|%world%=world3' + header: + - This is a shared header for + - world2 and world3 + footer: [] + default: + display-condition: '%world%!=disabledworld' + header: + - '' + - '&7ᴄᴏᴏʀᴅɪɴᴀᴛᴇs: &f%player_x% %player_y% %player_z%' + - '&7ᴡᴏʀʟᴅ ᴛɪᴍᴇ: &f%player_world_time_12%' + - '&7ᴄᴏᴍᴘᴀss: &f%player_direction%' + - '' + footer: + - '' + - '&7ᴛᴘs: %server_tps_1_colored% &7/ ᴘɪɴɢ: %player_colored_ping%' + - '' + - '&fᴍ ᴄ . ʀ ᴀ ᴄ ᴋ ᴇ ᴅ . ʀ ᴜ' +tablist-name-formatting: + enabled: true + disable-condition: '%world%=disabledworld' +scoreboard-teams: + enabled: true + invisible-nametags: false + enable-collision: true + case-sensitive-sorting: true + sorting-types: + - GROUPS:owner,dev,admin,moderator,duke,marquess,earl,viscount,baron,lord,settler,adventurer,default + - PLACEHOLDER_A_TO_Z:%player% + disable-condition: '%world%=disabledworld' + can-see-friendly-invisibles: false +belowname-objective: + enabled: true + disable-condition: '%world%=disabledworld' + fancy-value-default: NPC + fancy-value: '&c%health%' + value: '%health%' + title: Health +bossbar: + enabled: false + toggle-command: /bossbar + remember-toggle-choice: false + hidden-by-default: false + bars: + ServerInfo: + style: PROGRESS + color: '%animation:barcolors%' + progress: '100' + text: '&fWebsite: &bwww.domain.com' + announcement-bar: false + test: + style: PROGRESS + color: WHITE + progress: '100' + text: test + display-condition: '%world%=testworld' + announcement-bar: false +scoreboard: + enabled: false + toggle-command: /sb + remember-toggle-choice: false + hidden-by-default: false + delay-on-join-milliseconds: 0 + scoreboards: + admin: + display-condition: permission:tab.scoreboard.admin + title: Admin scoreboard + lines: + - '%animation:MyAnimation1%' + - '&6Online:' + - '* &eOnline&7: &f%online%&7' + - '* &eCurrent World&7: &f%worldonline%' + - '* &eStaff&7: &f%staffonline%' + - ' ' + - '&6Server Info:' + - '* &bTPS&7: %tps%' + - '* &bUptime&7: &f%server_uptime%' + - '* &bMemory&7: &f%memory-used%&7/&4%memory-max%' + - '%animation:MyAnimation1%' + scoreboard1: + title: Default + lines: + - '%animation:MyAnimation1%' + - '&6My Stats:' + - '* &eKills&7: &f%statistic_player_kills%' + - '* &eDeaths&7: &f%statistic_deaths%' + - '* &eHealth&7: &f%health%' + - ' ' + - '&6Personal Info:' + - '* &bRank&7: &f%group%' + - '* &bPing&7: &f%ping%&7ms' + - '* &bWorld&7: &f%world%' + - '%animation:MyAnimation1%' +prevent-spectator-effect: + enabled: false +placeholder-output-replacements: + '%essentials_vanished%': + 'yes': '&7| Vanished' + 'no': '' + "%afk%": + "true": " &4*&4&lAFK&4*&r" + "false": "" +conditions: + nick: + conditions: + - '%player%=%essentials_nickname%' + 'true': '%player%' + 'false': ~%essentials_nickname% +placeholders: + date-format: dd.MM.yyyy + time-format: '[HH:mm:ss / h:mm a]' + time-offset: 0 + register-tab-expansion: false + locale: en-US +assign-groups-by-permissions: false +primary-group-finding-list: +- Owner +- Admin +- Helper +- default +debug: false +mysql: + enabled: false + host: 127.0.0.1 + port: 3306 + database: tab + username: user + password: password +per-world-playerlist: + enabled: false + allow-bypass-permission: false + ignore-effect-in-worlds: + - ignoredworld + - build + shared-playerlist-world-groups: + lobby: + - lobby1 + - lobby2 + minigames: + - paintball + - bedwars + DoNotDoThis: + - ThisIsASingleWorldSoThereIsNoPointInEvenCreatingGroupForIt +layout: + enabled: false +global-playerlist: + enabled: false + update-latency: false +use-online-uuid-in-tablist: true +permission-refresh-interval: 1000 +compensate-for-packetevents-bug: false +playerlist-objective: + enabled: true + value: '%statistic_minutes_played%' + disable-condition: '%world%=disabledworld' + fancy-value: '&7Ping: %ping%' + title: TAB + render-type: INTEGER +placeholder-refresh-intervals: + default-refresh-interval: 100 +config-version: 6 +components: + minimessage-support: true + disable-shadow-for-heads: true +proxy-support: + channel-name-suffix: TAB + enabled: true +ping-spoof: + enabled: false diff --git a/live-server/plugins/TAB/groups.yml b/live-server/plugins/TAB/groups.yml new file mode 100644 index 0000000..bc9b879 --- /dev/null +++ b/live-server/plugins/TAB/groups.yml @@ -0,0 +1,20 @@ +#Owner: +# tabprefix: "&0&l[&a&lOwner&0&l] &a" +# tagprefix: "&2&lOwner &a" +Player: + tabprefix: "&0&l[&7&lPlayer&0&l] &3" + tagprefix: "&2&lPlayer &3" + + # default settings for all groups, all groups will take properties from this section unless player's primary group overrides a specific setting +_DEFAULT_: + tabprefix: "%luckperms-prefix%" + tagprefix: "%luckperms-prefix%" + customtabname: "%player%" + tabsuffix: "%luckperms-suffix%" + tagsuffix: "%luckperms-suffix%" + +per-world: + world1: + Owner: + tabprefix: "&0&l[&a&lOwner&0&l] &a" + tagprefix: "&2&lOwner &a" \ No newline at end of file diff --git a/live-server/plugins/TAB/messages.yml b/live-server/plugins/TAB/messages.yml new file mode 100644 index 0000000..c1d3335 --- /dev/null +++ b/live-server/plugins/TAB/messages.yml @@ -0,0 +1,106 @@ +announce-command-usage: |- + Usage: /tab announce + Currently supported types: &lbar, scoreboard +bossbar-feature-not-enabled: '&cThis command requires the bossbar feature to be enabled.' +bossbar-announce-command-usage: 'Usage: /tab announce bar ' +bossbar-not-found: '&cNo bossbar found with the name "%name%"' +bossbar-already-announced: '&cThis bossbar is already being announced' +group-data-removed: '&3[TAB] All data has been successfully removed from group &e%group%' +group-value-assigned: '&3[TAB] %property% ''&r%value%&r&3'' has been successfully + assigned to group &e%group%' +group-value-removed: '&3[TAB] %property% has been successfully removed from group + &e%group%' +user-data-removed: '&3[TAB] All data has been successfully removed from player &e%player%' +user-value-assigned: '&3[TAB] %property% ''&r%value%&r&3'' has been successfully assigned + to player &e%player%' +user-value-removed: '&3[TAB] %property% has been successfully removed from player + &e%player%' +parse-command-usage: 'Usage: /tab parse ' +send-command-usage: |- + Usage: /tab send + Currently supported types: &lbar +send-bar-command-usage: 'Usage: /tab send bar ' +team-feature-required: This command requires scoreboard teams feature enabled +collision-command-usage: 'Usage: /tab setcollision ' +no-permission: '&cI''m sorry, but you do not have permission to perform this command. + Please contact the server administrators if you believe that this is in error.' +command-only-from-game: '&cThis command must be ran from the game' +player-not-online: '&cNo online player found with the name "%player%"' +unlimited-nametag-mode-not-enabled: '&c[TAB] Warning! To make this feature work, you + need to enable unlimited-nametag-mode in the config!' +invalid-number: '"%input%" is not a number!' +scoreboard-feature-not-enabled: '&4This command requires the scoreboard feature to + be enabled.' +scoreboard-announce-command-usage: 'Usage: /tab scoreboard announce + ' +scoreboard-not-found: '&cNo scoreboard found with the name "%name%"' +nametag-preview-on: '&7Preview mode &aactivated&7.' +nametag-preview-of: '&7Preview mode &3deactivated&7.' +reload-success: '&3[TAB] Successfully reloaded' +reload-fail-file: '&3[TAB] &4Failed to reload, file %file% has broken syntax. Check + console for more info.' +scoreboard-toggle-on: '&2Scoreboard enabled' +scoreboard-toggle-off: '&7Scoreboard disabled' +bossbar-toggle-on: '&2Bossbar is now visible' +bossbar-toggle-off: '&7Bossbar is no longer visible. Magic!' +scoreboard-show-usage: 'Usage: /tab scoreboard show [player]' +bossbar-not-marked-as-announcement: '&cThis bossbar is not marked as an announcement + bar and is therefore already displayed permanently (if display condition is met)' +bossbar-announcement-success: '&aAnnouncing bossbar &6%bossbar% &afor %length% seconds.' +bossbar-send-success: '&aSending bossbar &6%bossbar% &ato player &6%player% &afor + %length% seconds.' +armorstands-disabled-cannot-use-preview: '&cYour armor stands are disabled, therefore + you cannot use preview feature' +help-menu: +- '&m ' +- ' &8>> &3&l/tab reload' +- ' - &7Reloads plugin and config' +- ' &8>> &3&l/tab &9group&3/&9player &3 &9 &3' +- ' - &7Do &8/tab group/player &7to show properties' +- ' &8>> &3&l/tab nametag preview' +- ' - &7Shows your nametag for yourself, for testing purposes' +- ' &8>> &3&l/tab announce bar &3 &9' +- ' - &7Temporarily displays bossbar to all players' +- ' &8>> &3&l/tab parse ' +- ' - &7Test if a placeholder works' +- ' &8>> &3&l/tab debug [player]' +- ' - &7displays debug information about player' +- ' &8>> &3&l/tab cpu' +- ' - &7shows CPU usage of the plugin' +- ' &8>> &3&l/tab group/player remove' +- ' - &7Clears all data about player/group' +- '&m ' +mysql-help-menu: +- '&6/tab mysql upload - uploads data from files to mysql' +- '&6/tab mysql download - downloads data from mysql to files' +mysql-fail-not-enabled: '&cCannot download/upload data from/to MySQL, because it''s + disabled.' +mysql-fail-error: MySQL download failed due to an error. Check console for more info. +mysql-download-success: '&aMySQL data downloaded successfully.' +mysql-upload-success: '&aMySQL data uploaded successfully.' +nametag-help-menu: +- /tab nametag preview [player] - toggles armor stand preview mode +- /tab nametag toggle [player] - toggles nametags on all players for command sender +nametag-feature-not-enabled: '&cThis command requires nametag feature to be enabled.' +nametags-hidden: '&aNametags of all players were hidden to you' +nametags-shown: '&aNametags of all players were shown to you' +scoreboard-help-menu: +- /tab scoreboard [on/off/toggle] [player] [options] +- /tab scoreboard show [player] +- /tab scoreboard announce +bossbar-help-menu: +- /tab bossbar [on/off/toggle] [player] [options] +- /tab bossbar send [player] +- /tab bossbar announce +nametag: + help-menu: + - /tab nametag [player] [-s] - Toggles nametag of specified player + - /tab nametag [player] [viewer] [-s] - Toggles nametag + VIEW of specified player on other player(s) + feature-not-enabled: '&cThis command requires nametag feature to be enabled.' + view-hidden: '&aNametags of all players were hidden to you' + view-shown: '&aNametags of all players were shown to you' + player-hidden: '&aYour nametag was hidden' + player-shown: '&aYour nametag was shown' + no-arg-from-console: '&cYou need to specify player if running this command from + the console' diff --git a/live-server/plugins/TAB/playerdata.yml b/live-server/plugins/TAB/playerdata.yml new file mode 100644 index 0000000..e69de29 diff --git a/live-server/plugins/TAB/skincache.yml b/live-server/plugins/TAB/skincache.yml new file mode 100644 index 0000000..fc2ba56 --- /dev/null +++ b/live-server/plugins/TAB/skincache.yml @@ -0,0 +1,4 @@ +mineskin: + '1753261242': + - ewogICJ0aW1lc3RhbXAiIDogMTYwODkxNjE3NjQ3OCwKICAicHJvZmlsZUlkIiA6ICJmZDYwZjM2ZjU4NjE0ZjEyYjNjZDQ3YzJkODU1Mjk5YSIsCiAgInByb2ZpbGVOYW1lIiA6ICJSZWFkIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzM2YzU5N2EzMjY5NWVlZDYwY2NlZDRlYWJkZTQxOGZkMTg1MDg0ZTAxNjE5N2FlNGEwZjdjMzY1NDRiZjJhMWUiCiAgICB9CiAgfQp9 + - mTWMn0hz7s4m0kqmNA+6uNdPrAj8FFUaMtZEzBP2iPPglY9nyIsjWMF3ypzvEoplJ8tMUGmO07jj0o/VUFkSMj+Bia0uLeLMSsogQdOTJAyMHZpFffEXCCX6DXPvwYwn5xeMxz6xRxI+Qm3PJRBK6RX/9JdVJcB+WXKUYrS1R1yzDBAYuggqgRr3QOk4BmZUW5o4178e8AgpJ+o5prD6PnfShUxJ+wsfqs52GExmX7FINmHUTVD/mkOP1UdxkZuAokYNTYXH4mEGJT2LmdR8X2sbIZIrSHQdhDSwKqFy8xVeKBiKfio9U+g/30DCmnc/QnBnBFj3rPVmnW+C9JYcUtYZX9dwc/kNrVekzw2+1VdhIKetm7Z3nqLF5htBYt7x4YrVnXUyCwEbn5T+W/KYgkaNHVThTFiGBsdJlFb+9NXmuMo1eNfSbq8XLmNB4V8zv95MCYoYcE6EufkriUWVNx8+J8eJjzmGMr1K6+M6BbYJx1Pv3YgJpVzSiP6RZsTLEyXBI8c1hx87Qq1vzkkihYiaBwYzgtNHEe+S2GMVVwujvtRvVd/MVbr8uBzaiIw0MEchJne9//rNMYRbcmv53lqJHXFBkgN1iLMXD+wg37ccVSTQbWkVQyaNDEYlf8KgYu7ECbTRIFMQxtv0ntLTI3crhPdWkhLrIAi2Fh12Mi4= diff --git a/live-server/plugins/TAB/users.yml b/live-server/plugins/TAB/users.yml new file mode 100644 index 0000000..2c738ad --- /dev/null +++ b/live-server/plugins/TAB/users.yml @@ -0,0 +1,5 @@ +_NEZNAMY_: + tabprefix: "&6&lTAB&r &a" + tagprefix: "&6&lTAB&r &a" +237d8b55-3f97-4749-aa60-e9fe97b45062: # my online uuid + tabsuffix: " &b&lVerified" \ No newline at end of file diff --git a/live-server/plugins/UltimateTimber/config.yml b/live-server/plugins/UltimateTimber/config.yml new file mode 100755 index 0000000..e01adba --- /dev/null +++ b/live-server/plugins/UltimateTimber/config.yml @@ -0,0 +1,609 @@ +# ____ ___ __ __ __ __ ___________ __ ___ +# | | \ |_/ |_|__| _____ _____ _/ |_ ___\__ ___/|__| _____\_ |__ ___________ +# | | / |\ __\ |/ \\__ \\ __\/ __ \| | | |/ \| __ \_/ __ \_ __ \ +# | | /| |_| | | | Y Y \/ __ \| | \ ___/| | | | Y Y \ \_\ \ ___/| | \/ +# |______/ |____/__| |__|__|_| (____ /__| \___ |____| |__|__|_| /___ /\___ >__| + +# The type of server you are running in relation to this plugin +# Do not change this value +# Default: CURRENT +server-type: CURRENT + +# The locale to use in the /locale folder +# Default: en_US +locale: en_US + +# A list of worlds that the plugin is disabled in +# Default: +# - disabled_world_name +disabled-worlds: + - disabled_world_name + +# The max number of logs that can be broken at one time +# Default: 150 +max-logs-per-chop: 150 + +# The minimum number of leaves required for something to be considered a tree +# Default: 5 +leaves-required-for-tree: 5 + +# If leaves should be destroyed +# Default: true +destroy-leaves: true + +# Apply realistic damage to the tools based on the number of logs chopped +# If false, only one durability will be removed from the tool +# Default: true +realistic-tool-damage: true + +# Protect the tool used to chop down the tree from breaking +# Prevents the tree from being toppled if the tool would break +# Default: false +protect-tool: false + +# Use the silk touch enchantment if the tool has it +# Logs and leaves will drop their original block 100% of the time +# Default: true +apply-silk-touch: true + +# Damage the tool extra for each leaf block broken, this is vanilla behavior but can be disabled here +# Does nothing if realistic-tool-damage is false +# Default: true +apply-silk-touch-tool-damage: true + +# Require the entire base of the tree to be broken before it topples +# Default: false +break-entire-tree-base: false + +# Don't drop a block for the block that initiates the tree fall +# Default: false +destroy-initiated-block: false + +# Only detect logs above the initiated block +# Default: true +only-detect-logs-upwards: true + +# Only topple trees while the player is doing something +# Valid values: SNEAKING, NOT_SNEAKING, ALWAYS +# Default: ALWAYS +only-topple-while: NOT_SNEAKING + +# Allow toppling trees in creative mode +# Default: true +allow-creative-mode: true + +# Require the player to have the permission 'ultimatetimber.chop' to topple trees +# Default: false +require-chop-permission: false + +# If a player should only be allowed to chop one tree per cooldown length +# Default: false +player-tree-topple-cooldown: false + +# The amount of seconds a player has to wait before they can chop a tree again +# Does nothing if player-tree-topple-cooldown is false +# The time is in seconds and must be a postive whole number +# Default: 5 +player-tree-topple-cooldown-length: 5 + +# Allow players to topple trees regardless of what they are holding in their hand +# Default: false +ignore-required-tools: false + +# Automatically replant saplings when a tree is toppled +# Default: true +replant-saplings: true + +# Always replant saplings for base tree blocks, regardless of player permissions +# Default: false +always-replant-sapling: false + +# How many seconds to prevent players from breaking replanted saplings +# Set to 0 to disable +# Does nothing if replant-saplings is false +# The time is in seconds and must be a postive whole number +# Default: 3 +replant-saplings-cooldown: 0 + +# Give fallen leaf blocks a chance to replant saplings when they hit the ground +# Default: true +falling-blocks-replant-saplings: true + +# The percent chance that fallen leaves have of planting a sapling +# Does nothing if falling-blocks-replant-saplings is false +# The chance is out of 100 and may contain decimals +# Default: 1 +falling-blocks-replant-saplings-chance: 1 + +# Make falling tree blocks deal damage to players if they get hit +# Default: true +falling-blocks-deal-damage: true + +# The amount of damage that falling tree blocks do +# This does nothing if falling-blocks-deal-damage is false +# Default: 1 +falling-block-damage: 1 + +# Automatically add tree blocks to the player's inventory instead of dropping them +# Default: false +add-items-to-inventory: false + +# Use custom sounds when toppling trees +# Default: true +use-custom-sounds: true + +# Use custom particles when toppling trees +# Default: true +use-custom-particles: true + +# The bonus loot multiplier when a player has the permission ultimatetimber.bonusloot +# Multiplies the chance of tree drops by this value +# Decimal values are allowed +# Default: 2 +bonus-loot-multiplier: 2 + +# If placed blocks should be ignored for toppling trees +# Note: This only keeps track of blocks placed during the current server load +# If your server restarts, the placed tree blocks could be toppled again +# Default: true +ignore-placed-blocks: true + +# The maximum number of blocks to keep track of in memory at once +# Use a lower number if this starts to take up too much memory or trees start taking too long to detect +# Default: 5000 +ignore-placed-blocks-memory-size: 5000 + +# Applies experience when using Jobs/mcMMO +# Only does something if Jobs or mcMMO is installed +# Default: true +hooks-apply-experience: true + +# Applies extra drops passive ability when using mcMMO +# Only does something if mcMMO is installed +# Default: true +hooks-apply-extra-drops: true + +# Requires the tree feller ability in mcMMO to be active to use timber +# Only does something if mcMMO is installed +# Default: false +hooks-require-ability-active: false + +# The type of animation to use for tree toppling +# Types: FANCY, DISINTEGRATE, CRUMBLE, NONE +# You can override the animation a player will receive using the +# permission ultimatetimber.animation. +tree-animation-type: FANCY + +# If the tree-animation-type is FANCY or CRUMBLE, make the blocks stick to the ground +# Does nothing if tree-animation-type is not FANCY or CRUMBLE +# Default: false +scatter-tree-blocks-on-ground: false + +# Tree configuration +# Allows for extreme fine-tuning of tree detection and what are considered trees +# Multiple log and leaf types are allowed, only one sapling type is allowed +# You can add your own custom tree types here, just add a new section +trees: + oak: + logs: + - OAK_LOG + - STRIPPED_OAK_LOG + - OAK_WOOD + - STRIPPED_OAK_WOOD + leaves: + - OAK_LEAVES + - VINE + sapling: OAK_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 6 + max-leaf-distance-from-log: 6 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: OAK_SAPLING + chance: 5 + 1: + material: APPLE + chance: 0.5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + spruce: + logs: + - SPRUCE_LOG + - STRIPPED_SPRUCE_LOG + - SPRUCE_WOOD + - STRIPPED_SPRUCE_WOOD + leaves: + - SPRUCE_LEAVES + - VINE + sapling: SPRUCE_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 2 + max-leaf-distance-from-log: 6 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: SPRUCE_SAPLING + chance: 5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + birch: + logs: + - BIRCH_LOG + - STRIPPED_BIRCH_LOG + - BIRCH_WOOD + - STRIPPED_BIRCH_WOOD + leaves: + - BIRCH_LEAVES + - VINE + sapling: BIRCH_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 1 + max-leaf-distance-from-log: 4 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: BIRCH_SAPLING + chance: 5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + jungle: + logs: + - JUNGLE_LOG + - STRIPPED_JUNGLE_LOG + - JUNGLE_WOOD + - STRIPPED_JUNGLE_WOOD + leaves: + - JUNGLE_LEAVES + - VINE + sapling: JUNGLE_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 6 + max-leaf-distance-from-log: 6 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: JUNGLE_SAPLING + chance: 2.5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + acacia: + logs: + - ACACIA_LOG + - STRIPPED_ACACIA_LOG + - ACACIA_WOOD + - STRIPPED_ACACIA_WOOD + leaves: + - ACACIA_LEAVES + sapling: ACACIA_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 4 + max-leaf-distance-from-log: 5 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: ACACIA_SAPLING + chance: 5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + dark_oak: + logs: + - DARK_OAK_LOG + - STRIPPED_DARK_OAK_LOG + - DARK_OAK_WOOD + - STRIPPED_DARK_OAK_WOOD + leaves: + - DARK_OAK_LEAVES + - VINE + sapling: DARK_OAK_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 3 + max-leaf-distance-from-log: 5 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: DARK_OAK_SAPLING + chance: 5 + 1: + material: APPLE + chance: 0.5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + azalea: + logs: + - OAK_LOG + - STRIPPED_OAK_LOG + - OAK_WOOD + - STRIPPED_OAK_WOOD + leaves: + - AZALEA_LEAVES + - FLOWERING_AZALEA_LEAVES + - VINE + sapling: AZALEA + plantable-soil: [ ] + max-log-distance-from-trunk: 3 + max-leaf-distance-from-log: 4 + search-for-leaves-diagonally: true + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: AZALEA + chance: 5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + cherry: + logs: + - CHERRY_LOG + - STRIPPED_CHERRY_LOG + - CHERRY_WOOD + - STRIPPED_CHERRY_WOOD + leaves: + - CHERRY_LEAVES + sapling: CHERRY_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 10 + max-leaf-distance-from-log: 6 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: CHERRY_SAPLING + chance: 5 + 1: + material: STICK + chance: 2.5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + mangrove: + logs: + - MANGROVE_LOG + - STRIPPED_MANGROVE_LOG + - MANGROVE_WOOD + - STRIPPED_MANGROVE_WOOD + leaves: + - MANGROVE_LEAVES + - MANGROVE_ROOTS + - MOSS_CARPET + - MANGROVE_PROPAGULE + - VINE + sapling: MANGROVE_PROPAGULE + plantable-soil: [ ] + max-log-distance-from-trunk: 30 + max-leaf-distance-from-log: 10 + search-for-leaves-diagonally: true + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: MANGROVE_PROPAGULE + chance: 5 + 1: + material: APPLE + chance: 0.5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + brown_mushroom: + logs: + - MUSHROOM_STEM + leaves: + - BROWN_MUSHROOM_BLOCK + sapling: BROWN_MUSHROOM + plantable-soil: + - MYCELIUM + max-log-distance-from-trunk: 4 + max-leaf-distance-from-log: 4 + search-for-leaves-diagonally: false + drop-original-log: false + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: BROWN_MUSHROOM + chance: 25 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + red_mushroom: + logs: + - MUSHROOM_STEM + leaves: + - RED_MUSHROOM_BLOCK + sapling: RED_MUSHROOM + plantable-soil: + - MYCELIUM + max-log-distance-from-trunk: 4 + max-leaf-distance-from-log: 4 + search-for-leaves-diagonally: true + drop-original-log: false + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: RED_MUSHROOM + chance: 25 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + huge_crimson_fungus: + logs: + - CRIMSON_STEM + - STRIPPED_CRIMSON_STEM + - CRIMSON_HYPHAE + - STRIPPED_CRIMSON_HYPHAE + leaves: + - NETHER_WART_BLOCK + - SHROOMLIGHT + sapling: CRIMSON_FUNGUS + plantable-soil: + - CRIMSON_NYLIUM + max-log-distance-from-trunk: 27 + max-leaf-distance-from-log: 5 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: true + log-loot: [ ] + leaf-loot: [ ] + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + huge_warpped_fungus: + logs: + - WARPED_STEM + - STRIPPED_WARPED_STEM + - WARPED_HYPHAE + - STRIPPED_WARPED_HYPHAE + leaves: + - WARPED_WART_BLOCK + - SHROOMLIGHT + sapling: WARPED_FUNGUS + plantable-soil: + - WARPED_NYLIUM + max-log-distance-from-trunk: 27 + max-leaf-distance-from-log: 5 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: true + log-loot: [ ] + leaf-loot: [ ] + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + pale_oak: + logs: + - PALE_OAK_LOG + - STRIPPED_PALE_OAK_LOG + - PALE_OAK_WOOD + - STRIPPED_PALE_OAK_WOOD + leaves: + - PALE_OAK_LEAVES + - PALE_HANGING_MOSS + sapling: PALE_OAK_SAPLING + plantable-soil: [ ] + max-log-distance-from-trunk: 3 + max-leaf-distance-from-log: 5 + search-for-leaves-diagonally: false + drop-original-log: true + drop-original-leaf: false + log-loot: [ ] + leaf-loot: + 0: + material: PALE_OAK_SAPLING + chance: 5 + 1: + material: APPLE + chance: 0.5 + entire-tree-loot: [ ] + required-tools: [ ] + required-axe: false + +# All soil types that the tree type's saplings can be planted on +global-plantable-soil: + - GRASS_BLOCK + - DIRT + - COARSE_DIRT + - PODZOL + - ROOTED_DIRT + +# Custom loot that is available for all tree types +# The loot applies to each log broken in the tree +# To add more, increment the number by 1 +# The chance is out of 100 and can contain decimals +# The default examples here are to show what you can do with custom loot +# Valid command placeholders: %player%, %type%, %xPos%, %yPos%, %zPos% +global-log-loot: + 0: + material: DIAMOND + chance: 0 + 1: + command: 'eco give %player% 5' + chance: 0 + 2: + material: GOLDEN_APPLE + command: 'broadcast %player% found a golden apple in a %type% tree at %xPos% %yPos% %zPos%!' + chance: 0 + +# Custom loot that is available for all tree types +# The loot applies to each leaf broken in the tree +# To add more, increment the number by 1 +# The chance is out of 100 and can contain decimals +# Valid command placeholders: %player%, %type%, %xPos%, %yPos%, %zPos% +global-leaf-loot: + 0: + material: GOLDEN_APPLE + chance: 0.1 + +# Custom entire tree loot that is available for all tree types +# The loot will be dropped only one time for the entire tree +# To add more, increment the number by 1 +# The chance is out of 100 and can contain decimals +# Valid command placeholders: %player%, %type%, %xPos%, %yPos%, %zPos% +global-entire-tree-loot: + 0: + material: DIAMOND + chance: 0 + +# Tools that must be used to topple over a tree +# Applies to all tree types +global-required-tools: + - WOODEN_AXE + - STONE_AXE + - IRON_AXE + - GOLDEN_AXE + - DIAMOND_AXE + - NETHERITE_AXE + +# Require the custom axe +# Applies to all tree types +global-required-axe: false + +# Axe item +required-axe: + type: DIAMOND_AXE + name: '&aAn Epic Axe' + lore: + - "&7This axe... it's awesome." + - "&7It can chop down trees real fast." + enchants: + - 'DURABILITY:3' + - 'DIG_SPEED:5' + # NBT to identify the axe by. + nbt: 'ultimatetimber_axe' + +# If a tree lands on these blocks they will be destroyed. +fragile-blocks: + - GLASS + - ICE + - PACKED_ICE + - BLUE_ICE diff --git a/live-server/plugins/UltimateTimber/locales/en_US.lang b/live-server/plugins/UltimateTimber/locales/en_US.lang new file mode 100755 index 0000000..6ebf27f --- /dev/null +++ b/live-server/plugins/UltimateTimber/locales/en_US.lang @@ -0,0 +1,27 @@ +# General Messages + +general: + nametag: + prefix: '&8[&6UltimateTimber&8] ' + nopermission: '&cYou don''t have permission for that!' + +# Command Messages + +command: + reload: + description: 'Reloads the config.' + reloaded: '&7Configuration and locale files have been reloaded.' + toggle: + description: 'Toggles your chopping mode' + enabled: '&7Chopping Mode: &aEnabled' + disabled: '&7Chopping Mode: &cDisabled' + give: + not-a-player: '&cNot a player.' + given: '&fGiven to player &a%player%' + no-axe: '&cAxe could not be loaded.' + +# Event Messages + +event: + 'on': + cooldown: '&eYou are on cooldown and cannot topple trees right now.' diff --git a/live-server/plugins/UnexpectedSpawn/config.yml b/live-server/plugins/UnexpectedSpawn/config.yml new file mode 100755 index 0000000..83a416c --- /dev/null +++ b/live-server/plugins/UnexpectedSpawn/config.yml @@ -0,0 +1,75 @@ +# UnexpectedSpawn +# Authors : Shivelight, DeathGOD7 + +global: + # Random respawn area for global settings. + x-max: 2000 + x-min: -2000 + z-max: 2000 + z-min: -2000 + + # Fail radius expansion if normal x and z area failed to obtain suitable block or location + fail-radius: 500 + + # Sets the global respawn world unless set in custom config worlds. + respawn-world: 'world' + + # Do you want to have random respawn than normal world respawn? By default it is enabled in all worlds. If you want to + # disable it in specific world, then add that world name in below 'blacklisted-worlds'. + random-respawn: + # Do you want to have random respawn after user dies? If set to false then user will respawn in world spawnpoint. + # or bed/respawn anchor spawnpoint. + on-death: true + # Checks if bed respawn is taken priority. If set to false then it will force user to random respawn + # even if they have bed respawn point when they die. + bed-respawn-enabled: true + # Do you want to have random spawn when user joins for first time to prevent grief in spawn chunks? If set to false + # then user will spawn in default world spawnpoint. + on-first-join: true + # Enable this if you want to have random respawn each time user joins the server. It's best for Anarchy type server. + always-on-join: false + + # Invert the blacklist to whitelist + invert-block-blacklist: false + + # Specify any block where you don't want user to be teleported. You don't them to drown in lava/water or land on + # someone else campfire, no? + spawn-block-blacklist: + - LAVA + - WATER + - CACTUS + - FIRE + - MAGMA_BLOCK + - SWEET_BERRY_BUSH + - CAMPFIRE + + +# If no worlds are specified, it will use global/default variables. Default Config (worlds: []) +# If you have added any world below, it will override the global settings. +# If it got missing parameters that is in global settings like "spawn-block-blacklist" +# but not in worlds world parameters then it will use global parameters. +# All the features are same as global ones. +# Please change "survival" to the name of your world and remove [] if you want to add worlds. + +worlds: [] +# survival: +# x-max: 500 +# x-min: -500 +# z-max: 500 +# z-min: -500 +# fail-radius: 1000 +# respawn-world: '' +# random-respawn: +# on-death: true +# bed-respawn-enabled: true +# on-first-join: false +# always-on-join: false + +# If you have any worlds here , then it will be excluded from having random spawn +# Even if you have set custom settings in above settings and you add that world to +# blacklist, it will be excluded. Default :[] +blacklisted-worlds: [] +# - bedwars +# - creative + +debug : false \ No newline at end of file diff --git a/live-server/plugins/Vault/config.yml b/live-server/plugins/Vault/config.yml new file mode 100755 index 0000000..5243845 --- /dev/null +++ b/live-server/plugins/Vault/config.yml @@ -0,0 +1 @@ +update-check: true diff --git a/live-server/plugins/VoidWorldGenerator/config.yml b/live-server/plugins/VoidWorldGenerator/config.yml new file mode 100644 index 0000000..53b39e8 --- /dev/null +++ b/live-server/plugins/VoidWorldGenerator/config.yml @@ -0,0 +1,23 @@ +# Empty chunk biome is set only since 1.20.6, for older version it is always set to "THE_VOID". + +# Configuration for a custom world +worlds: + # Default configuration for every world that does not have a specific configuration. + '*': + # The biome to use for empty chunks. This biome will be used for chunks that have not been generated yet. + # Accepted value can be found there: https://jd.papermc.io/paper/1.21.3/org/bukkit/block/Biome.html (Replace 1.21.3 with your server version in the URL) + emptyChunkBiome: "THE_VOID" + + # Coordinates of the spawn point + spawn: + x: 0 + y: 64 + z: 0 + + # Specific configuration for the "aCustomWorld" world. + # aCustomWorld: + # emptyChunkBiome: "DRIPSTONE_CAVES" + # spawn: + # x: 100 + # y: 64 + # z: 30 \ No newline at end of file diff --git a/live-server/plugins/bStats/config.yml b/live-server/plugins/bStats/config.yml new file mode 100755 index 0000000..8141b15 --- /dev/null +++ b/live-server/plugins/bStats/config.yml @@ -0,0 +1,8 @@ +# bStats collects some data for plugin authors like how many servers are using their plugins. +# To honor their work, you should not disable it. +# This has nearly no effect on the server performance! +# Check out https://bStats.org/ to learn more :) + +enabled: false +serverUuid: 883067d4-b779-4c21-965a-71c9b9caa994 +logFailedRequests: false diff --git a/live-server/plugins/voicechat/translations.properties b/live-server/plugins/voicechat/translations.properties new file mode 100755 index 0000000..166672d --- /dev/null +++ b/live-server/plugins/voicechat/translations.properties @@ -0,0 +1,22 @@ +# Simple Voice Chat translations +# This file contains all server-side translations for the Simple Voice Chat plugin + +# The message a player gets when kicked for not having voice chat installed and the server has force_voicechat enabled +# The first parameter is the mod/plugin name and the second parameter is the mod/plugin version +force_voicechat_kick_message=You need %s %s to play on this server +# The message a player gets when kicked for sending too many voice chat packets +rate_limit_kick_message=Kicked for exceeding packet rate limit +# The message a player gets when joining a server with an incompatible voice chat version +# The first parameter is the mod/plugin version and the second parameter is the mod/plugin name +voicechat_not_compatible_message=Your voice chat client version is not compatible with the server-side version.\\nPlease install version %s of %s. +# The message a player gets when trying to execute a command that requires the voice chat mod installed on the client side. +# The first parameter is the mod/plugin name +voicechat_needed_for_command_message=You need to have %s installed on your client to use this command +# The message a player gets when trying to execute a command that can only be executed as a player +player_command_message=This command can only be executed as a player +# The Placeholder API string for '%voicechat_installed%' +placeholder_api_voicechat_installed= +# The Placeholder API string for '%voicechat_not_installed%' +placeholder_api_voicechat_not_installed= +# The Placeholder API string for '%voicechat_disabled%' +placeholder_api_voicechat_disabled= diff --git a/live-server/plugins/voicechat/voicechat-server.properties b/live-server/plugins/voicechat/voicechat-server.properties new file mode 100755 index 0000000..2e7244f --- /dev/null +++ b/live-server/plugins/voicechat/voicechat-server.properties @@ -0,0 +1,53 @@ +# Simple Voice Chat server config v2.6.16 + +# The port number to use for the voice chat communication. +# Audio packets are always transmitted via the UDP protocol on the port number +# specified here, independently of other networking used for the game server. +# Set this to '-1' to use the same port number that is used by the Minecraft server. +# However, it is strongly recommended NOT to use the same port number because UDP on +# it is also used by default for the server query. Doing so may crash the server! +port=45000 +# The server IP address to bind the voice chat to +# Leave blank to use the 'server-ip' property from the 'server.properties' config file +# To bind to the wildcard IP address, use '*' +bind_address= +# The distance to which the voice can be heard +max_voice_distance=48.0 +# The distance to which the voice can be heard when whispering +whisper_distance=24.0 +# The Opus codec +# Valid values are 'VOIP', 'AUDIO', and 'RESTRICTED_LOWDELAY' +codec=VOIP +# The maximum size that audio packets are allowed to have (in bytes) +# Set this to a lower value if audio packets don't arrive +mtu_size=1024 +# The maximum number of packets a player can send per second +# Set this to -1 to disable the rate limit - This must be greater than 0 in all other cases +# This only applies to voice chat packets that are sent through Minecrafts networking +# This affects actions like opening/joining/leaving voice chat groups or general state changes like disabling/enabling the voice chat +tcp_rate_limit=16 +# The frequency at which keep-alive packets are sent (in milliseconds) +# Setting this to a higher value may result in timeouts +keep_alive=1000 +# If group chats are allowed +enable_groups=true +# The hostname that clients should use to connect to the voice chat +# This may also include a port, e.g. 'example.com:24454' +# Do NOT change this value if you don't know what you're doing +voice_host=82.31.156.86:45000 +# If players are allowed to record the voice chat audio +allow_recording=false +# If spectators are allowed to talk to other players +spectator_interaction=false +# If spectators can talk to players they are spectating +spectator_player_possession=false +# If players without the voice chat mod should be kicked from the server +force_voice_chat=false +# The amount of time the server should wait to check if a player has the mod installed (in milliseconds) +# Only relevant when 'force_voice_chat' is set to 'true' +login_timeout=10000 +# The range in which the voice chat should broadcast audio +# A value less than 0 means 'max_voice_distance' +broadcast_range=-1.0 +# If the voice chat server should reply to external pings +allow_pings=true diff --git a/live-server/pufferfish.yml b/live-server/pufferfish.yml new file mode 100755 index 0000000..95a83f1 --- /dev/null +++ b/live-server/pufferfish.yml @@ -0,0 +1,35 @@ +# Pufferfish Configuration +# Check out Pufferfish Host for maximum performance server hosting: https://pufferfish.host +# Join our Discord for support: https://discord.gg/reZw4vQV9H +# Download new builds at https://ci.pufferfish.host/job/Pufferfish +info: + version: '1.0' +tps-catchup: true +allow-end-crystal-respawn: true +# These values define a entity's maximum lifespan. If an +# entity is in this list and it has survived for longer than +# that number of ticks, then it will be removed. Setting a value to +# -1 disables this feature. +entity_timeouts: + SNOWBALL: -1 + LLAMA_SPIT: -1 +# Settings for things that don't belong elsewhere +misc: + disable-method-profiler: true +enable-async-mob-spawning: true +# Optimizes projectile settings +projectile: + max-loads-per-tick: 10 + max-loads-per-projectile: 10 +inactive-goal-selector-throttle: false +enable-books: true +sentry-dsn: '' +# Optimizes entity brains when +# they're far away from the player +dab: + enabled: false + start-distance: 12 + max-tick-freq: 20 + activation-dist-mod: 8 + blacklisted-entities: [] +enable-suffocation-optimization: true diff --git a/live-server/purpur.yml b/live-server/purpur.yml new file mode 100755 index 0000000..385e58d --- /dev/null +++ b/live-server/purpur.yml @@ -0,0 +1,2001 @@ +# This is the main configuration file for Purpur. +# As you can see, there's tons to configure. Some options may impact gameplay, so use +# with caution, and make sure you know what each option does before configuring. +# +# If you need help with the configuration or have any questions related to Purpur, +# join us in our Discord guild. +# +# Website: https://purpurmc.org +# Docs: https://purpurmc.org/docs + +verbose: false +settings: + register-minecraft-disabled-commands: false + messages: + cannot-ride-mob: You cannot mount that mob + afk-broadcast-away: %s is now AFK + afk-broadcast-back: %s is no longer AFK + afk-broadcast-use-display-name: false + afk-tab-list-prefix: '[AFK] ' + afk-tab-list-suffix: '' + credits-command-output: %s has been shown the end credits + demo-command-output: %s has been shown the demo screen + ping-command-output: %s's ping is %sms + ram-command-output: 'Ram Usage: / ()' + rambar-command-output: Rambar toggled for + tpsbar-command-output: Tpsbar toggled for + dont-run-with-scissors: Don't run with scissors! + uptime-command-output: Server uptime is + unverified-username: default + sleep-skipping-night: default + sleeping-players-percent: default + sleep-not-possible: default + death-message: + run-with-scissors: slipped and fell on their shears + stonecutter: has sawed themself in half + tps-catchup: true + limit-armor: true + register-minecraft-debug-commands: false + fix-projectile-looting-transfer: false + block-fall-multipliers: + minecraft:brown_bed: + distance: 0.5 + minecraft:light_gray_bed: + distance: 0.5 + minecraft:magenta_bed: + distance: 0.5 + minecraft:purple_bed: + distance: 0.5 + minecraft:light_blue_bed: + distance: 0.5 + minecraft:pink_bed: + distance: 0.5 + minecraft:red_bed: + distance: 0.5 + minecraft:hay_block: + damage: 0.2 + minecraft:white_bed: + distance: 0.5 + minecraft:gray_bed: + distance: 0.5 + minecraft:cyan_bed: + distance: 0.5 + minecraft:blue_bed: + distance: 0.5 + minecraft:green_bed: + distance: 0.5 + minecraft:orange_bed: + distance: 0.5 + minecraft:black_bed: + distance: 0.5 + minecraft:yellow_bed: + distance: 0.5 + minecraft:lime_bed: + distance: 0.5 + startup-commands: [] + command: + rambar: + title: Ram: / () + overlay: NOTCHED_20 + progress-color: + good: GREEN + medium: YELLOW + low: RED + text-color: + good: + medium: + low: + tick-interval: 20 + tpsbar: + title: TPS: MSPT: Ping: + ms + overlay: NOTCHED_20 + fill-mode: MSPT + progress-color: + good: GREEN + medium: YELLOW + low: RED + text-color: + good: + medium: + low: + tick-interval: 20 + compass: + title: 'S · ◈ · ◈ · ◈ · SW · ◈ · ◈ · ◈ · W · ◈ · ◈ · ◈ · NW · ◈ · ◈ · ◈ · N · ◈ · ◈ · ◈ · NE · ◈ · ◈ · ◈ · E · ◈ · ◈ · ◈ · SE · ◈ · ◈ · ◈ · S · ◈ · ◈ · ◈ · SW · ◈ · ◈ · ◈ · W · ◈ · ◈ · ◈ · NW · ◈ · ◈ · ◈ · N · ◈ · ◈ · ◈ · NE · ◈ · ◈ · ◈ · E · ◈ · ◈ · ◈ · SE · ◈ · ◈ · ◈ · ' + overlay: PROGRESS + progress-color: BLUE + percent: 1.0 + tick-interval: 5 + gamemode: + requires-specific-permission: false + hide-hidden-players-from-entity-selector: false + uptime: + format: + day: '%02d day, ' + days: '%02d days, ' + hour: '%02d hour, ' + hours: '%02d hours, ' + minute: '%02d minute, and ' + minutes: '%02d minutes, and ' + second: '%02d second' + seconds: '%02d seconds' + clamp-attributes: true + blocks: + snow: + smooth-accumulation-step: 0 + barrel: + rows: 3 + ender_chest: + six-rows: false + use-permissions-for-rows: false + crying_obsidian: + valid-for-portal-frame: false + beehive: + max-bees-inside: 3 + anvil: + cumulative-cost: true + lightning_rod: + range: 128 + grindstone: + ignored-enchants: + - minecraft:binding_curse + - minecraft:vanishing_curse + remove-attributes: false + remove-name-and-lore: false + cave_vines: + max-growth-age: 25 + kelp: + max-growth-age: 25 + twisting_vines: + max-growth-age: 25 + weeping_vines: + max-growth-age: 25 + magma-block: + reverse-bubble-column-flow: false + soul-sand: + reverse-bubble-column-flow: false + entity: + enderman: + short-height: false + network: + upnp-port-forwarding: false + max-joins-per-second: false + kick-for-out-of-order-chat: true + bee-count-payload: false + lagging-threshold: 19.0 + logger: + suppress-init-legacy-material-errors: false + suppress-ignored-advancement-warnings: false + suppress-unrecognized-recipe-errors: false + suppress-setblock-in-far-chunk-errors: false + suppress-library-loader: false + broadcasts: + advancement: + only-broadcast-to-affected-player: false + death: + only-broadcast-to-affected-player: false + server-mod-name: Purpur + username-valid-characters: ^[a-zA-Z0-9_.]*$ + use-alternate-keepalive: false + allow-water-placement-in-the-end: true + player-deaths-always-show-item: false + blast-resistance-overrides: {} + enchantment: + allow-looting-on-shears: false + anvil: + allow-inapplicable-enchants: false + allow-incompatible-enchants: false + allow-higher-enchants-levels: false + replace-incompatible-enchants: false + allow-unsafe-enchant-command: false + clamp-levels: false + disable-give-dropping: false +config-version: 47 +world-settings: + default: + settings: + entity: + shared-random: true + tools: + axe: + strippables: + minecraft:crimson_stem: + into: minecraft:stripped_crimson_stem + drops: {} + minecraft:spruce_log: + into: minecraft:stripped_spruce_log + drops: {} + minecraft:acacia_log: + into: minecraft:stripped_acacia_log + drops: {} + minecraft:dark_oak_wood: + into: minecraft:stripped_dark_oak_wood + drops: {} + minecraft:acacia_wood: + into: minecraft:stripped_acacia_wood + drops: {} + minecraft:cherry_log: + into: minecraft:stripped_cherry_log + drops: {} + minecraft:warped_hyphae: + into: minecraft:stripped_warped_hyphae + drops: {} + minecraft:spruce_wood: + into: minecraft:stripped_spruce_wood + drops: {} + minecraft:birch_log: + into: minecraft:stripped_birch_log + drops: {} + minecraft:warped_stem: + into: minecraft:stripped_warped_stem + drops: {} + minecraft:cherry_wood: + into: minecraft:stripped_cherry_wood + drops: {} + minecraft:mangrove_log: + into: minecraft:stripped_mangrove_log + drops: {} + minecraft:birch_wood: + into: minecraft:stripped_birch_wood + drops: {} + minecraft:dark_oak_log: + into: minecraft:stripped_dark_oak_log + drops: {} + minecraft:oak_wood: + into: minecraft:stripped_oak_wood + drops: {} + minecraft:oak_log: + into: minecraft:stripped_oak_log + drops: {} + minecraft:mangrove_wood: + into: minecraft:stripped_mangrove_wood + drops: {} + minecraft:crimson_hyphae: + into: minecraft:stripped_crimson_hyphae + drops: {} + minecraft:bamboo_block: + into: minecraft:stripped_bamboo_block + drops: {} + minecraft:jungle_wood: + into: minecraft:stripped_jungle_wood + drops: {} + minecraft:jungle_log: + into: minecraft:stripped_jungle_log + drops: {} + minecraft:pale_oak_wood: + into: minecraft:stripped_pale_oak_wood + drops: {} + minecraft:pale_oak_log: + into: minecraft:stripped_pale_oak_log + drops: {} + waxables: + minecraft:waxed_chiseled_copper: + into: minecraft:chiseled_copper + drops: {} + minecraft:waxed_weathered_cut_copper: + into: minecraft:weathered_cut_copper + drops: {} + minecraft:waxed_copper_grate: + into: minecraft:copper_grate + drops: {} + minecraft:waxed_weathered_copper_bulb: + into: minecraft:weathered_copper_bulb + drops: {} + minecraft:waxed_oxidized_cut_copper: + into: minecraft:oxidized_cut_copper + drops: {} + minecraft:waxed_weathered_copper_door: + into: minecraft:weathered_copper_door + drops: {} + minecraft:waxed_weathered_cut_copper_stairs: + into: minecraft:weathered_cut_copper_stairs + drops: {} + minecraft:waxed_oxidized_cut_copper_slab: + into: minecraft:oxidized_cut_copper_slab + drops: {} + minecraft:waxed_cut_copper_slab: + into: minecraft:cut_copper_slab + drops: {} + minecraft:waxed_exposed_cut_copper: + into: minecraft:exposed_cut_copper + drops: {} + minecraft:waxed_oxidized_copper_bulb: + into: minecraft:oxidized_copper_bulb + drops: {} + minecraft:waxed_oxidized_copper_grate: + into: minecraft:oxidized_copper_grate + drops: {} + minecraft:waxed_oxidized_copper_door: + into: minecraft:oxidized_copper_door + drops: {} + minecraft:waxed_oxidized_chiseled_copper: + into: minecraft:oxidized_chiseled_copper + drops: {} + minecraft:waxed_copper_block: + into: minecraft:copper_block + drops: {} + minecraft:waxed_exposed_cut_copper_slab: + into: minecraft:exposed_cut_copper_slab + drops: {} + minecraft:waxed_oxidized_copper_trapdoor: + into: minecraft:oxidized_copper_trapdoor + drops: {} + minecraft:waxed_weathered_chiseled_copper: + into: minecraft:weathered_chiseled_copper + drops: {} + minecraft:waxed_exposed_copper: + into: minecraft:exposed_copper + drops: {} + minecraft:waxed_exposed_copper_bulb: + into: minecraft:exposed_copper_bulb + drops: {} + minecraft:waxed_exposed_chiseled_copper: + into: minecraft:exposed_chiseled_copper + drops: {} + minecraft:waxed_cut_copper_stairs: + into: minecraft:cut_copper_stairs + drops: {} + minecraft:waxed_copper_bulb: + into: minecraft:copper_bulb + drops: {} + minecraft:waxed_copper_trapdoor: + into: minecraft:copper_trapdoor + drops: {} + minecraft:waxed_weathered_copper_trapdoor: + into: minecraft:weathered_copper_trapdoor + drops: {} + minecraft:waxed_exposed_copper_door: + into: minecraft:exposed_copper_door + drops: {} + minecraft:waxed_copper_door: + into: minecraft:copper_door + drops: {} + minecraft:waxed_cut_copper: + into: minecraft:cut_copper + drops: {} + minecraft:waxed_oxidized_copper: + into: minecraft:oxidized_copper + drops: {} + minecraft:waxed_exposed_copper_trapdoor: + into: minecraft:exposed_copper_trapdoor + drops: {} + minecraft:waxed_exposed_cut_copper_stairs: + into: minecraft:exposed_cut_copper_stairs + drops: {} + minecraft:waxed_weathered_copper: + into: minecraft:weathered_copper + drops: {} + minecraft:waxed_exposed_copper_grate: + into: minecraft:exposed_copper_grate + drops: {} + minecraft:waxed_weathered_cut_copper_slab: + into: minecraft:weathered_cut_copper_slab + drops: {} + minecraft:waxed_oxidized_cut_copper_stairs: + into: minecraft:oxidized_cut_copper_stairs + drops: {} + minecraft:waxed_weathered_copper_grate: + into: minecraft:weathered_copper_grate + drops: {} + minecraft:waxed_copper_chest: + into: minecraft:copper_chest + drops: {} + minecraft:waxed_exposed_copper_chest: + into: minecraft:exposed_copper_chest + drops: {} + minecraft:waxed_weathered_copper_chest: + into: minecraft:weathered_copper_chest + drops: {} + minecraft:waxed_oxidized_copper_chest: + into: minecraft:oxidized_copper_chest + drops: {} + minecraft:waxed_copper_golem_statue: + into: minecraft:copper_golem_statue + drops: {} + minecraft:waxed_exposed_copper_golem_statue: + into: minecraft:exposed_copper_golem_statue + drops: {} + minecraft:waxed_weathered_copper_golem_statue: + into: minecraft:weathered_copper_golem_statue + drops: {} + minecraft:waxed_oxidized_copper_golem_statue: + into: minecraft:oxidized_copper_golem_statue + drops: {} + minecraft:waxed_lightning_rod: + into: minecraft:lightning_rod + drops: {} + minecraft:waxed_exposed_lightning_rod: + into: minecraft:exposed_lightning_rod + drops: {} + minecraft:waxed_weathered_lightning_rod: + into: minecraft:weathered_lightning_rod + drops: {} + minecraft:waxed_oxidized_lightning_rod: + into: minecraft:oxidized_lightning_rod + drops: {} + minecraft:waxed_copper_bars: + into: minecraft:copper_bars + drops: {} + minecraft:waxed_exposed_copper_bars: + into: minecraft:exposed_copper_bars + drops: {} + minecraft:waxed_weathered_copper_bars: + into: minecraft:weathered_copper_bars + drops: {} + minecraft:waxed_oxidized_copper_bars: + into: minecraft:oxidized_copper_bars + drops: {} + minecraft:waxed_copper_chain: + into: minecraft:copper_chain + drops: {} + minecraft:waxed_exposed_copper_chain: + into: minecraft:exposed_copper_chain + drops: {} + minecraft:waxed_weathered_copper_chain: + into: minecraft:weathered_copper_chain + drops: {} + minecraft:waxed_oxidized_copper_chain: + into: minecraft:oxidized_copper_chain + drops: {} + minecraft:waxed_copper_lantern: + into: minecraft:copper_lantern + drops: {} + minecraft:waxed_exposed_copper_lantern: + into: minecraft:exposed_copper_lantern + drops: {} + minecraft:waxed_weathered_copper_lantern: + into: minecraft:weathered_copper_lantern + drops: {} + minecraft:waxed_oxidized_copper_lantern: + into: minecraft:oxidized_copper_lantern + drops: {} + weatherables: + minecraft:weathered_copper_trapdoor: + into: minecraft:exposed_copper_trapdoor + drops: {} + minecraft:exposed_copper_bulb: + into: minecraft:copper_bulb + drops: {} + minecraft:oxidized_copper_trapdoor: + into: minecraft:weathered_copper_trapdoor + drops: {} + minecraft:weathered_copper_bulb: + into: minecraft:exposed_copper_bulb + drops: {} + minecraft:exposed_copper_grate: + into: minecraft:copper_grate + drops: {} + minecraft:exposed_cut_copper: + into: minecraft:cut_copper + drops: {} + minecraft:exposed_cut_copper_stairs: + into: minecraft:cut_copper_stairs + drops: {} + minecraft:weathered_cut_copper_slab: + into: minecraft:exposed_cut_copper_slab + drops: {} + minecraft:weathered_cut_copper: + into: minecraft:exposed_cut_copper + drops: {} + minecraft:weathered_copper_grate: + into: minecraft:exposed_copper_grate + drops: {} + minecraft:oxidized_cut_copper_slab: + into: minecraft:weathered_cut_copper_slab + drops: {} + minecraft:oxidized_copper_bulb: + into: minecraft:weathered_copper_bulb + drops: {} + minecraft:oxidized_cut_copper: + into: minecraft:weathered_cut_copper + drops: {} + minecraft:exposed_chiseled_copper: + into: minecraft:chiseled_copper + drops: {} + minecraft:oxidized_copper: + into: minecraft:weathered_copper + drops: {} + minecraft:exposed_copper_door: + into: minecraft:copper_door + drops: {} + minecraft:weathered_copper_door: + into: minecraft:exposed_copper_door + drops: {} + minecraft:weathered_copper: + into: minecraft:exposed_copper + drops: {} + minecraft:exposed_copper_trapdoor: + into: minecraft:copper_trapdoor + drops: {} + minecraft:exposed_copper: + into: minecraft:copper_block + drops: {} + minecraft:oxidized_cut_copper_stairs: + into: minecraft:weathered_cut_copper_stairs + drops: {} + minecraft:oxidized_copper_door: + into: minecraft:weathered_copper_door + drops: {} + minecraft:exposed_cut_copper_slab: + into: minecraft:cut_copper_slab + drops: {} + minecraft:weathered_chiseled_copper: + into: minecraft:exposed_chiseled_copper + drops: {} + minecraft:oxidized_copper_grate: + into: minecraft:weathered_copper_grate + drops: {} + minecraft:oxidized_chiseled_copper: + into: minecraft:weathered_chiseled_copper + drops: {} + minecraft:weathered_cut_copper_stairs: + into: minecraft:exposed_cut_copper_stairs + drops: {} + minecraft:exposed_copper_chest: + into: minecraft:copper_chest + drops: {} + minecraft:weathered_copper_chest: + into: minecraft:exposed_copper_chest + drops: {} + minecraft:oxidized_copper_chest: + into: minecraft:weathered_copper_chest + drops: {} + minecraft:exposed_copper_golem_statue: + into: minecraft:copper_golem_statue + drops: {} + minecraft:weathered_copper_golem_statue: + into: minecraft:exposed_copper_golem_statue + drops: {} + minecraft:oxidized_copper_golem_statue: + into: minecraft:weathered_copper_golem_statue + drops: {} + minecraft:exposed_lightning_rod: + into: minecraft:lightning_rod + drops: {} + minecraft:weathered_lightning_rod: + into: minecraft:exposed_lightning_rod + drops: {} + minecraft:oxidized_lightning_rod: + into: minecraft:weathered_lightning_rod + drops: {} + minecraft:exposed_copper_bars: + into: minecraft:copper_bars + drops: {} + minecraft:weathered_copper_bars: + into: minecraft:exposed_copper_bars + drops: {} + minecraft:oxidized_copper_bars: + into: minecraft:weathered_copper_bars + drops: {} + minecraft:exposed_copper_chain: + into: minecraft:copper_chain + drops: {} + minecraft:weathered_copper_chain: + into: minecraft:exposed_copper_chain + drops: {} + minecraft:oxidized_copper_chain: + into: minecraft:weathered_copper_chain + drops: {} + minecraft:exposed_copper_lantern: + into: minecraft:copper_lantern + drops: {} + minecraft:weathered_copper_lantern: + into: minecraft:exposed_copper_lantern + drops: {} + minecraft:oxidized_copper_lantern: + into: minecraft:weathered_copper_lantern + drops: {} + hoe: + tillables: + minecraft:grass_block: + condition: air_above + drops: {} + into: minecraft:farmland + minecraft:dirt: + condition: air_above + drops: {} + into: minecraft:farmland + minecraft:rooted_dirt: + condition: always + drops: + minecraft:hanging_roots: 1.0 + into: minecraft:dirt + minecraft:dirt_path: + condition: air_above + drops: {} + into: minecraft:farmland + minecraft:coarse_dirt: + condition: air_above + drops: {} + into: minecraft:dirt + replant-crops: false + replant-nether-warts: false + shovel: + flattenables: + minecraft:podzol: + into: minecraft:dirt_path + drops: {} + minecraft:coarse_dirt: + into: minecraft:dirt_path + drops: {} + minecraft:rooted_dirt: + into: minecraft:dirt_path + drops: {} + minecraft:mycelium: + into: minecraft:dirt_path + drops: {} + minecraft:grass_block: + into: minecraft:dirt_path + drops: {} + minecraft:dirt: + into: minecraft:dirt_path + drops: {} + blocks: + beacon: + effect-range: + level-1: 20 + level-2: 30 + level-3: 40 + level-4: 50 + allow-effects-with-tinted-glass: false + bed: + explode: true + explode-on-villager-sleep: false + explosion-power: 5.0 + explosion-fire: true + explosion-effect: BLOCK + observer: + disable-clock: false + campfire: + lit-when-placed: true + sugar_cane: + affected-by-bonemeal: false + dispenser: + apply-cursed-to-armor-slots: true + place-anvils: false + door: + requires-redstone: [] + anvil: + allow-colors: false + use-mini-message: false + iron-ingots-used-for-repair: 0 + obsidian-used-for-damage: 0 + cactus: + breaks-from-solid-neighbors: true + affected-by-bonemeal: false + nether_wart: + affected-by-bonemeal: false + composter: + sneak-to-bulk-process: false + azalea: + growth-chance: 0.0 + dragon_egg: + teleport: true + end-crystal: + baseless: + explode: true + explosion-power: 6.0 + explosion-fire: false + explosion-effect: BLOCK + base: + explode: true + explosion-power: 6.0 + explosion-fire: false + explosion-effect: BLOCK + cramming-amount: 0 + chest: + open-with-solid-block-on-top: false + coral: + die-outside-water: true + piston: + block-push-limit: 12 + magma-block: + damage-when-sneaking: false + turtle_egg: + break-from-exp-orbs: false + break-from-items: false + break-from-minecarts: false + random-tick-crack-chance: 500 + feather-fall-distance-affects-trampling: false + mob-griefing-override: default + packed_ice: + allow-mob-spawns: true + blue_ice: + allow-mob-spawns: true + allow-snow-formation: true + lava: + infinite-required-sources: 2 + speed: + nether: 10 + not-nether: 30 + powered-rail: + activation-range: 8 + sign: + allow-colors: false + water: + infinite-required-sources: 2 + sponge: + absorption: + area: 65 + radius: 6 + absorbs-lava: false + absorbs-water-from-mud: false + farmland: + gets-moist-from-below: false + use-alpha-farmland: false + disable-trampling: false + only-players-trample: false + feather-fall-distance-affects-trampling: false + trample-height: -1.0 + mob-griefing-override: default + spawner: + deactivate-by-redstone: false + fix-mc-238526: false + furnace: + use-lava-from-underneath: false + slab: + break-individual-slabs-when-sneaking: false + powder_snow: + mob-griefing-override: default + conduit: + effect-distance: 16 + mob-damage: + distance: 8.0 + damage-amount: 4.0 + valid-ring-blocks: + - minecraft:prismarine + - minecraft:prismarine_bricks + - minecraft:sea_lantern + - minecraft:dark_prismarine + cauldron: + fill-chances: + rain: 0.05000000074505806 + powder-snow: 0.10000000149011612 + dripstone-water: 0.17578125 + dripstone-lava: 0.05859375 + enchantment-table: + lapis-persists: false + stonecutter: + damage: 0.0 + flowering_azalea: + growth-chance: 0.0 + sculk_shrieker: + can-summon-default: false + respawn_anchor: + explode: true + explosion-power: 5.0 + explosion-fire: true + explosion-effect: BLOCK + big_dripleaf: + tilt-delay: + PARTIAL: 10 + UNSTABLE: 10 + FULL: 100 + mobs: + nautilus: + attributes: + max_health: 15.0 + movement_speed: 1.0 + attack_damage: 3.0 + knockback_resistance: 0.3 + scale: 1.0 + breeding-delay-ticks: 6000 + always-drop-exp: false + zombie_nautilus: + attributes: + max_health: 15.0 + movement_speed: 1.1 + attack_damage: 3.0 + knockback_resistance: 0.3 + scale: 1.0 + always-drop-exp: false + happy_ghast: + ridable-in-water: false + attributes: + max_health: 20.0 + tempt_range: 16.0 + flying_speed: 0.05 + movement_speed: 0.05 + follow_range: 16.0 + camera_distance: 8.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + creaking: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 1.0 + scale: 1.0 + copper_golem: + ridable: false + ridable-in-water: true + controllable: true + can-swim: false + attributes: + max_health: 12.0 + step_height: 1.0 + movement_speed: 0.2 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + can-open-barrel: false + can-open-shulker: false + armadillo: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 12.0 + scale: 1.0 + breeding-delay-ticks: 6000 + enderman: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 40.0 + scale: 1.0 + allow-griefing: true + can-despawn-with-held-block: false + takes-damage-from-water: true + aggressive-towards-endermites: true + aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls: false + ignore-players-wearing-dragon-head: false + disable-player-stare-aggression: false + ignore-projectiles: false + always-drop-exp: false + mob-griefing-override: default + glow_squid: + ridable: false + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + can-fly: false + takes-damage-from-water: false + always-drop-exp: false + cod: + ridable: false + controllable: true + attributes: + max_health: 3.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + husk: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + spawn_reinforcements: 0.1 + jockey: + only-babies: true + chance: 0.05 + try-existing-chickens: true + takes-damage-from-water: false + always-drop-exp: false + can-pick-up-loot: default + illusioner: + ridable: false + ridable-in-water: true + controllable: true + movement-speed: 0.5 + follow-range: 18.0 + attributes: + max_health: 32.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + llama: + ridable: false + ridable-in-water: false + controllable: true + attributes: + max_health: + min: 15.0 + max: 30.0 + jump_strength: + min: 0.5 + max: 0.5 + movement_speed: + min: 0.175 + max: 0.175 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + join-caravans: true + always-drop-exp: false + magma_cube: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: size * size + attack_damage: size + takes-damage-from-water: false + always-drop-exp: false + bat: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 6.0 + scale: 1.0 + follow_range: 16.0 + knockback_resistance: 0.0 + movement_speed: 0.6 + flying_speed: 0.6 + armor: 0.0 + armor_toughness: 0.0 + attack_knockback: 0.0 + takes-damage-from-water: false + always-drop-exp: false + mule: + ridable-in-water: false + attributes: + max_health: + min: 15.0 + max: 30.0 + jump_strength: + min: 0.5 + max: 0.5 + movement_speed: + min: 0.175 + max: 0.175 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + ocelot: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + spawn-below-sea-level: false + parrot: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 6.0 + scale: 1.0 + takes-damage-from-water: false + can-breed: false + always-drop-exp: false + phantom: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + flames: + damage: 1.0 + fire-time: 8 + allow-griefing: false + attributes: + max_health: '20.0' + attack_damage: 6 + size + attacked-by-crystal-range: 0.0 + attacked-by-crystal-damage: 1.0 + orbit-crystal-radius: 0.0 + spawn: + min-sky-darkness: 5 + only-above-sea-level: true + only-with-visible-sky: true + local-difficulty-chance: 3.0 + per-attempt: + min: 1 + max: -1 + burn-in-light: 0 + burn-in-daylight: true + ignore-players-with-torch: false + flames-on-swoop: false + takes-damage-from-water: false + always-drop-exp: false + size: + min: 0 + max: 0 + pig: + ridable: false + ridable-in-water: false + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + give-saddle-back: false + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + piglin: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 16.0 + scale: 1.0 + takes-damage-from-water: false + portal-spawn-modifier: 2000 + always-drop-exp: false + head-visibility-percent: 0.5 + ignores-armor-with-gold-trim: false + can-pick-up-loot: default + chicken: + ridable: false + ridable-in-water: false + controllable: true + attributes: + max_health: 4.0 + scale: 1.0 + retaliate: false + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + bee: + can-instantly-start-drowning: true + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 10.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + can-work-at-night: false + can-work-in-rain: false + always-drop-exp: false + dies-after-sting: true + evoker: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 24.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + mob-griefing-override: default + fox: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + tulips-change-type: false + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + mob-griefing-override: default + can-pick-up-loot: default + pillager: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 24.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + can-pick-up-loot: default + guardian: + ridable: false + controllable: true + attributes: + max_health: 30.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + panda: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + polar_bear: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 30.0 + scale: 1.0 + breedable-item: '' + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + rabbit: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 3.0 + scale: 1.0 + spawn-toast-chance: 0.0 + spawn-killer-rabbit-chance: 0.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + mob-griefing-override: default + ghast: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 10.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + blaze: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 20.0 + scale: 1.0 + takes-damage-from-water: true + always-drop-exp: false + bogged: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 16.0 + scale: 1.0 + can-pick-up-loot: default + mooshroom: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + ravager: + ridable: false + ridable-in-water: false + controllable: true + attributes: + max_health: 100.0 + scale: 1.0 + takes-damage-from-water: false + griefable-blocks: + - minecraft:oak_leaves + - minecraft:spruce_leaves + - minecraft:birch_leaves + - minecraft:jungle_leaves + - minecraft:acacia_leaves + - minecraft:dark_oak_leaves + - minecraft:beetroots + - minecraft:carrots + - minecraft:potatoes + - minecraft:wheat + always-drop-exp: false + avoid-rabbits: false + mob-griefing-override: default + cave_spider: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 12.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + iron_golem: + ridable: false + ridable-in-water: true + controllable: true + can-swim: false + attributes: + max_health: 100.0 + scale: 1.0 + takes-damage-from-water: false + poppy-calms-anger: false + healing-calms-anger: false + always-drop-exp: false + cat: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + spawn-delay: 1200 + scan-range-for-other-cats: + swamp-hut: 16 + village: 48 + breeding-delay-ticks: 6000 + default-collar-color: RED + takes-damage-from-water: false + always-drop-exp: false + pufferfish: + ridable: false + controllable: true + attributes: + max_health: 3.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + salmon: + ridable: false + controllable: true + attributes: + max_health: 3.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + creeper: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + naturally-charged-chance: 0.0 + allow-griefing: true + takes-damage-from-water: false + explode-when-killed: false + health-impacts-explosion: false + always-drop-exp: false + head-visibility-percent: 0.5 + encircle-target: false + mob-griefing-override: default + camel: + ridable-in-water: false + attributes: + max_health: + min: 32.0 + max: 32.0 + jump_strength: + min: 0.42 + max: 0.42 + movement_speed: + min: 0.09 + max: 0.09 + breeding-delay-ticks: 6000 + hoglin: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 40.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + allay: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + can-pick-up-loot: default + axolotl: + ridable: false + controllable: true + attributes: + max_health: 14.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + cow: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + feed-mushrooms-for-mooshroom: 0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + naturally-aggressive-to-players: + chance: 0.0 + damage: 2.0 + always-drop-exp: false + donkey: + ridable-in-water: false + attributes: + max_health: + min: 15.0 + max: 30.0 + jump_strength: + min: 0.5 + max: 0.5 + movement_speed: + min: 0.175 + max: 0.175 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + frog: + ridable: false + ridable-in-water: true + controllable: true + ridable-jump-height: 0.6499999761581421 + breeding-delay-ticks: 6000 + dolphin: + ridable: false + controllable: true + spit: + cooldown: 20 + speed: 1.0 + damage: 2.0 + attributes: + max_health: 10.0 + scale: 1.0 + disable-treasure-searching: false + takes-damage-from-water: false + naturally-aggressive-to-players-chance: 0.0 + always-drop-exp: false + drowned: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + spawn_reinforcements: 0.1 + jockey: + only-babies: true + chance: 0.05 + try-existing-chickens: true + takes-damage-from-water: false + can-break-doors: false + always-drop-exp: false + can-pick-up-loot: default + endermite: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 8.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + giant: + ridable: false + ridable-in-water: true + controllable: true + movement-speed: 0.5 + attack-damage: 50.0 + attributes: + max_health: 100.0 + scale: 1.0 + step-height: 2.0 + jump-height: 1.0 + have-ai: false + have-hostile-ai: false + takes-damage-from-water: false + always-drop-exp: false + goat: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + horse: + ridable-in-water: false + attributes: + max_health: + min: 15.0 + max: 30.0 + jump_strength: + min: 0.4 + max: 1.0 + movement_speed: + min: 0.1125 + max: 0.3375 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + vindicator: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 24.0 + scale: 1.0 + johnny: + spawn-chance: 0.0 + takes-damage-from-water: false + always-drop-exp: false + can-pick-up-loot: default + zoglin: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 40.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + sheep: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 8.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + mob-griefing-override: default + sniffer: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 14.0 + scale: 1.0 + breeding-delay-ticks: 6000 + wither: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 300.0 + scale: 1.0 + health-regen-amount: 1.0 + health-regen-delay: 20 + takes-damage-from-water: false + can-ride-vehicles: false + explosion-radius: 1.0 + play-spawn-sound: true + always-drop-exp: false + mob-griefing-override: default + strider: + ridable: false + ridable-in-water: false + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + breeding-delay-ticks: 6000 + give-saddle-back: false + takes-damage-from-water: true + always-drop-exp: false + turtle: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 30.0 + scale: 1.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + spider: + ridable: false + ridable-in-water: false + controllable: true + attributes: + max_health: 16.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + vex: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 14.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + silverfish: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 8.0 + scale: 1.0 + movement_speed: 0.25 + attack_damage: 1.0 + takes-damage-from-water: false + always-drop-exp: false + mob-griefing-override: default + squid: + ridable: false + controllable: true + attributes: + max_health: 10.0 + scale: 1.0 + immune-to-EAR: true + water-offset-check: 0.0 + can-fly: false + takes-damage-from-water: false + always-drop-exp: false + shulker: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 30.0 + scale: 1.0 + takes-damage-from-water: false + spawn-from-bullet: + base-chance: 1.0 + require-open-lid: true + nearby-range: 8.0 + nearby-equation: (nearby - 1) / 5.0 + random-color: false + change-color-with-dye: false + always-drop-exp: false + warden: + can-use-sonic-boom: true + ridable: false + ridable-in-water: true + controllable: true + stray: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + can-pick-up-loot: default + skeleton: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + head-visibility-percent: 0.5 + feed-wither-roses: 0 + bow-accuracy: 14 - difficulty * 4 + can-pick-up-loot: default + snow_golem: + ridable: false + ridable-in-water: true + controllable: true + leave-trail-when-ridden: false + attributes: + max_health: 4.0 + scale: 1.0 + pumpkin-can-be-added-back: false + min-shoot-interval-ticks: 20 + max-shoot-interval-ticks: 20 + snow-ball-modifier: 10.0 + attack-distance: 1.25 + takes-damage-from-water: true + always-drop-exp: false + mob-griefing-override: default + slime: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: size * size + attack_damage: size + takes-damage-from-water: false + always-drop-exp: false + wolf: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 8.0 + scale: 1.0 + default-collar-color: RED + milk-cures-rabid-wolves: true + spawn-rabid-chance: 0.0 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + tadpole: + ridable: false + ridable-in-water: true + controllable: true + witch: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 26.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + villager: + ridable: false + ridable-in-water: true + controllable: true + attributes: + tempt_range: 10.0 + max_health: 20.0 + scale: 1.0 + follow-emerald-blocks: false + can-be-leashed: false + can-breed: true + breeding-delay-ticks: 6000 + clerics-farm-warts: false + cleric-wart-farmers-throw-warts-at-villagers: true + takes-damage-from-water: false + allow-trading: true + always-drop-exp: false + minimum-demand: 0 + lobotomize: + enabled: false + check-interval: 100 + wait-until-trade-locked: false + display-trade-item: true + spawn-iron-golem: + radius: 0 + limit: 0 + search-radius: + acquire-poi: 48 + nearest-bed-sensor: 48 + mob-griefing-override: default + can-pick-up-loot: default + zombie: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + spawn_reinforcements: 0.1 + jockey: + only-babies: true + chance: 0.05 + try-existing-chickens: true + aggressive-towards-villager-when-lagging: true + takes-damage-from-water: false + always-drop-exp: false + head-visibility-percent: 0.5 + mob-griefing-override: default + can-pick-up-loot: default + ender_dragon: + ridable: false + ridable-in-water: true + controllable: true + ridable-max-y: 320.0 + attributes: + max_health: 200.0 + always-drop-full-exp: false + takes-damage-from-water: false + can-ride-vehicles: false + mob-griefing-override: default + trader_llama: + ridable: false + ridable-in-water: false + controllable: true + attributes: + max_health: + min: 15.0 + max: 30.0 + jump_strength: + min: 0.5 + max: 0.5 + movement_speed: + min: 0.175 + max: 0.175 + breeding-delay-ticks: 6000 + takes-damage-from-water: false + always-drop-exp: false + wandering_trader: + ridable: false + ridable-in-water: true + controllable: true + attributes: + tempt_range: 10.0 + max_health: 20.0 + scale: 1.0 + follow-emerald-blocks: false + can-be-leashed: false + takes-damage-from-water: false + allow-trading: true + always-drop-exp: false + elder_guardian: + ridable: false + controllable: true + attributes: + max_health: 80.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + tropical_fish: + ridable: false + controllable: true + attributes: + max_health: 3.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + piglin_brute: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 50.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + can-pick-up-loot: default + zombified_piglin: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + spawn_reinforcements: 0.0 + jockey: + only-babies: true + chance: 0.05 + try-existing-chickens: true + count-as-player-kill-when-angry: true + takes-damage-from-water: false + always-drop-exp: false + can-pick-up-loot: default + zombie_horse: + ridable: false + ridable-in-water: false + can-swim: false + attributes: + max_health: + min: 15.0 + max: 15.0 + jump_strength: + min: 0.4 + max: 1.0 + movement_speed: + min: 0.2 + max: 0.2 + spawn-chance: 0.0 + takes-damage-from-water: false + always-drop-exp: false + zombie_villager: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + spawn_reinforcements: 0.1 + jockey: + only-babies: true + chance: 0.05 + try-existing-chickens: true + takes-damage-from-water: false + curing_time: + min: 3600 + max: 6000 + cure: + enabled: true + always-drop-exp: false + can-pick-up-loot: default + skeleton_horse: + ridable: false + ridable-in-water: true + can-swim: false + attributes: + max_health: + min: 15.0 + max: 15.0 + jump_strength: + min: 0.4 + max: 1.0 + movement_speed: + min: 0.2 + max: 0.2 + takes-damage-from-water: false + always-drop-exp: false + wither_skeleton: + ridable: false + ridable-in-water: true + controllable: true + attributes: + max_health: 20.0 + scale: 1.0 + takes-damage-from-water: false + always-drop-exp: false + can-pick-up-loot: default + ridable-settings: + babies-are-ridable: true + untamed-tamables-are-ridable: true + use-night-vision: false + use-dismounts-underwater-tag: true + hunger: + starvation-damage: 1.0 + gameplay-mechanics: + entity-lifespan: 0 + entity-left-handed-chance: 0.05000000074505806 + use-better-mending: false + always-tame-in-creative: false + boat: + eject-players-on-land: false + do-fall-damage: false + disable-drops-on-cramming-death: false + entities-can-use-portals: true + impose-teleport-restrictions-on-gateways: false + impose-teleport-restrictions-on-nether-portals: false + impose-teleport-restrictions-on-end-portals: false + milk-cures-bad-omen: true + milk-clears-beneficial-effects: true + note-block-ignore-above: false + persistent-tileentity-lore: false + persistent-tileentity-display-name: true + persistent-droppable-entity-display-names: true + tick-fluids: true + entity-blindness-multiplier: 1.0 + trident-loyalty-void-return-height: 0.0 + raid-cooldown-seconds: 0 + animal-breeding-cooldown-seconds: 0 + mobs-ignore-rails: false + rain-stops-after-sleep: true + thunder-stops-after-sleep: true + mob-last-hurt-by-player-time: 100 + disable-oxidation-proximity-penalty: false + player: + netherite-fire-resistance: + duration: 0 + amplifier: 0 + ambient: false + show-particles: false + show-icon: true + idle-timeout: + kick-if-idle: true + tick-nearby-entities: true + count-as-sleeping: false + update-tab-list: false + mobs-target: true + exp-dropped-on-death: + equation: expLevel * 7 + maximum: 100 + teleport-if-outside-border: false + teleport-on-nether-ceiling-damage: false + totem-of-undying-works-in-inventory: false + fix-stuck-in-portal: false + one-punch-in-creative: false + sleep-ignore-nearby-mobs: false + can-skip-night: true + critical-damage-multiplier: 1.5 + burp-delay: 10 + burp-when-full: false + ridable-in-water: false + curse-of-binding: + remove-with-weakness: false + shift-right-click-repairs-mending-points: 0 + exp-pickup-delay-ticks: 2 + allow-void-trading: false + elytra: + damage-per-second: 1 + damage-multiplied-by-speed: 0.0 + damage-per-boost: + firework: 0 + trident: 0 + kinetic-damage: true + silk-touch: + enabled: false + spawner-name: Monster Spawner + minimal-level: 1 + spawner-lore: + - Spawns a + tools: + - minecraft:iron_pickaxe + - minecraft:golden_pickaxe + - minecraft:diamond_pickaxe + - minecraft:netherite_pickaxe + mob-effects: + health-regen-amount: 1.0 + minimal-health-poison-amount: 1.0 + poison-degeneration-amount: 1.0 + wither-degeneration-amount: 1.0 + hunger-exhaustion-amount: 0.004999999888241291 + saturation-regen-amount: 1.0 + clamp-explosion-radius: true + mob-spawning: + village-cats: default + raid-patrols: default + phantoms: default + wandering-traders: default + village-sieges: default + ignore-creative-players: false + arrow: + movement-resets-despawn-counter: true + armorstand: + step-height: 0.0 + set-name-visible-when-placing-with-custom-name: false + fix-nametags: false + can-movement-tick: true + can-move-in-water: true + can-move-in-water-over-fence: true + place-with-arms-visible: false + item: + immune: + cactus: [] + explosion: [] + fire: [] + lightning: [] + shears: + damage-if-sprinting-item-model: purpurmc:scissors + damage-if-sprinting: false + ignore-in-water: false + ignore-in-lava: false + sprinting-damage: 1.0 + defuse-tnt-chance: 0.0 + ender-pearl: + damage: 5.0 + cooldown: 20 + creative-cooldown: 20 + endermite-spawn-chance: 0.05000000074505806 + glow_berries: + eat-glow-duration: 0 + shulker_box: + drop-contents-when-destroyed: true + compass: + holding-shows-bossbar: false + snowball: + extinguish: + fire: false + candles: false + campfires: false + end-crystal: + place-anywhere: false + drowning: + air-ticks: 300 + ticks-per-damage: 20 + damage-from-drowning: 2.0 + projectile-damage: + snowball: -1 + halloween: + force: false + head-chance: 0.25 + infinity-bow: + works-without-arrows: false + projectile-offset: + bow: 1.0 + crossbow: 1.0 + egg: 1.0 + ender-pearl: 1.0 + throwable-potion: 1.0 + trident: 1.0 + snowball: 1.0 + daylight-cycle-ticks: + daytime: 12000 + nighttime: 12000 + minecart: + max-speed: 0.4 + place-anywhere: false + powered-rail: + boost-modifier: 0.06 + controllable: + enabled: false + step-height: 1.0 + hop-boost: 0.5 + fall-damage: true + base-speed: 0.1 + block-speed: + grass_block: 0.3 + stone: 0.5 + fireballs-mob-griefing-override: default + projectiles-mob-griefing-override: default diff --git a/live-server/server.properties b/live-server/server.properties new file mode 100755 index 0000000..db5fe8b --- /dev/null +++ b/live-server/server.properties @@ -0,0 +1,71 @@ +#Minecraft server properties +#Thu Apr 30 18:15:24 BST 2026 +accepts-transfers=false +allow-flight=false +broadcast-console-to-ops=true +broadcast-rcon-to-ops=true +bug-report-link= +debug=false +difficulty=hard +enable-code-of-conduct=false +enable-jmx-monitoring=false +enable-query=false +enable-rcon=true +enable-status=true +enforce-secure-profile=true +enforce-whitelist=false +entity-broadcast-range-percentage=100 +force-gamemode=false +function-permission-level=2 +gamemode=survival +generate-structures=true +generator-settings={} +hardcore=false +hide-online-players=false +initial-disabled-packs= +initial-enabled-packs=vanilla +level-name=world +level-seed=8491026986654631198 +level-type=minecraft\:normal +log-ips=true +management-server-allowed-origins= +management-server-enabled=false +management-server-host=localhost +management-server-port=0 +management-server-secret=*redacted* +management-server-tls-enabled=true +management-server-tls-keystore= +management-server-tls-keystore-password= +max-chained-neighbor-updates=1000000 +max-players=69 +max-tick-time=-1 +max-world-size=29999984 +motd=racked.ru — experience the game the way it should have always been +network-compression-threshold=256 +online-mode=false +op-permission-level=4 +pause-when-empty-seconds=-1 +player-idle-timeout=0 +prevent-proxy-connections=false +query.port=25565 +rate-limit=0 +rcon.password=*redacted* +rcon.port=25575 +region-file-compression=deflate +require-resource-pack=false +resource-pack= +resource-pack-id= +resource-pack-prompt= +resource-pack-sha1= +server-ip= +server-name=Unknown Server +server-port=25565 +simulation-distance=10 +spawn-protection=0 +status-heartbeat-interval=0 +sync-chunk-writes=true +text-filtering-config= +text-filtering-version=0 +use-native-transport=true +view-distance=20 +white-list=false diff --git a/live-server/spigot.yml b/live-server/spigot.yml new file mode 100755 index 0000000..06ab6aa --- /dev/null +++ b/live-server/spigot.yml @@ -0,0 +1,184 @@ +# This is the Spigot configuration file for Paper. +# As you can see, there's tons to configure. Some options may impact gameplay, so use +# with caution, and make sure you know what each option does before configuring. +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# File Reference: https://docs.papermc.io/paper/reference/spigot-configuration/ +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc +# Website: https://papermc.io/ + +messages: + whitelist: You are not whitelisted on this server! + unknown-command: Unknown command. Type "/help" for help. + server-full: The server is full! + outdated-client: Outdated client! Please use {0} + outdated-server: Outdated server! I'm still on {0} + restart: Server is restarting +settings: + debug: false + sample-count: 12 + bungeecord: false + save-user-cache-on-stop-only: false + player-shuffle: 0 + netty-threads: 4 + attribute: + maxAbsorption: + max: 2048.0 + maxHealth: + max: 2048.0 + movementSpeed: + max: 2048.0 + attackDamage: + max: 2048.0 + user-cache-size: 1000 + timeout-time: 60 + restart-on-crash: true + restart-script: ./start.sh + log-villager-deaths: true + log-named-deaths: true + moved-wrongly-threshold: 0.0625 + moved-too-quickly-multiplier: 10.0 +advancements: + disable-saving: false + disabled: + - minecraft:story/disabled +commands: + tab-complete: 0 + send-namespaced: true + log: true + replace-commands: + - setblock + - summon + - testforblock + - tellraw + spam-exclusions: + - /skill + silent-commandblock-console: false + enable-spam-exclusions: false +world-settings: + default: + below-zero-generation-in-existing-chunks: true + view-distance: default + simulation-distance: default + enable-zombie-pigmen-portal-spawns: true + zombie-aggressive-towards-villager: true + unload-frozen-chunks: false + growth: + cactus-modifier: 100 + cane-modifier: 100 + melon-modifier: 100 + mushroom-modifier: 100 + pumpkin-modifier: 100 + sapling-modifier: 100 + beetroot-modifier: 100 + carrot-modifier: 100 + potato-modifier: 100 + torchflower-modifier: 100 + wheat-modifier: 100 + netherwart-modifier: 100 + vine-modifier: 100 + cocoa-modifier: 100 + bamboo-modifier: 100 + sweetberry-modifier: 100 + kelp-modifier: 100 + twistingvines-modifier: 100 + weepingvines-modifier: 100 + cavevines-modifier: 100 + glowberry-modifier: 100 + pitcherplant-modifier: 100 + nerf-spawner-mobs: false + thunder-chance: 100000 + item-despawn-rate: 6000 + arrow-despawn-rate: 1200 + trident-despawn-rate: 1200 + mob-spawn-range: 8 + seed-village: 10387312 + seed-desert: 14357617 + seed-igloo: 14357618 + seed-jungle: 14357619 + seed-swamp: 14357620 + seed-monument: 10387313 + seed-shipwreck: 165745295 + seed-ocean: 14357621 + seed-outpost: 165745296 + seed-endcity: 10387313 + seed-slime: 987234911 + seed-nether: 30084232 + seed-mansion: 10387319 + seed-fossil: 14357921 + seed-portal: 34222645 + seed-ancientcity: 20083232 + seed-trailruins: 83469867 + seed-trialchambers: 94251327 + seed-buriedtreasure: 10387320 + seed-mineshaft: default + seed-stronghold: default + max-tnt-per-tick: 100 + max-tick-time: + tile: 50 + entity: 50 + entity-activation-range: + animals: 32 + monsters: 32 + raiders: 64 + misc: 16 + water: 16 + villagers: 32 + flying-monsters: 32 + wake-up-inactive: + animals-max-per-tick: 4 + animals-every: 1200 + animals-for: 100 + monsters-max-per-tick: 8 + monsters-every: 400 + monsters-for: 100 + villagers-max-per-tick: 4 + villagers-every: 600 + villagers-for: 100 + flying-monsters-max-per-tick: 8 + flying-monsters-every: 200 + flying-monsters-for: 100 + villagers-work-immunity-after: 100 + villagers-work-immunity-for: 20 + villagers-active-for-panic: true + tick-inactive-villagers: true + ignore-spectators: false + entity-tracking-range: + players: 128 + animals: 96 + monsters: 96 + misc: 96 + display: 128 + other: 64 + merge-radius: + exp: -1.0 + item: 0.5 + ticks-per: + hopper-transfer: 8 + hopper-check: 1 + hopper-amount: 1 + hopper-can-load-chunks: false + hunger: + jump-walk-exhaustion: 0.05 + jump-sprint-exhaustion: 0.2 + combat-exhaustion: 0.1 + regen-exhaustion: 6.0 + swim-multiplier: 0.01 + sprint-multiplier: 0.1 + other-multiplier: 0.0 + hanging-tick-frequency: 100 + end-portal-sound-radius: 0 + wither-spawn-sound-radius: 0 + dragon-death-sound-radius: 0 + verbose: false + worldeditregentempworld: + verbose: false +players: + disable-saving: false +config-version: 12 +stats: + disable-saving: false + forced-stats: {} diff --git a/live-server/wepif.yml b/live-server/wepif.yml new file mode 100755 index 0000000..bac5e5e --- /dev/null +++ b/live-server/wepif.yml @@ -0,0 +1,46 @@ +# +# WEPIF Configuration File +# +# This file handles permissions configuration for every plugin using WEPIF +# +# About editing this file: +# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain. If +# you use an editor like Notepad++ (recommended for Windows users), you +# must configure it to "replace tabs with spaces." In Notepad++, this can +# be changed in Settings > Preferences > Language Menu. +# - Don't get rid of the indents. They are indented so some entries are +# in categories (like "enforce-single-session" is in the "protection" +# category. +# - If you want to check the format of this file before putting it +# into WEPIF, paste it into https://yaml-online-parser.appspot.com/ +# and see if it gives "ERROR:". +# - Lines starting with # are comments and so they are ignored. + + +ignore-nijiperms-bridges: true +resolvers: + enabled: + - PluginPermissionsResolver + - PermissionsExResolver + - bPermissionsResolver + - GroupManagerResolver + - NijiPermissionsResolver + - VaultResolver + - DinnerPermsResolver + - FlatFilePermissionsResolver +permissions: + groups: + default: + permissions: + - worldedit.reload + - worldedit.selection + - worlds.creative.worldedit.region + admins: + permissions: + - '*' + users: + sk89q: + permissions: + - worldedit + groups: + - admins diff --git a/live-server/whitelist.json b/live-server/whitelist.json new file mode 100755 index 0000000..0637a08 --- /dev/null +++ b/live-server/whitelist.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/scripts/backup.sh b/scripts/backup.sh new file mode 100755 index 0000000..ef5e26b --- /dev/null +++ b/scripts/backup.sh @@ -0,0 +1,130 @@ +#!/usr/bin/env bash +# /opt/docker/backup.sh +# Backs up all Docker service databases and named volumes to /opt/backups/ +# Run as root via cron. Keeps 7 daily backups. +set -euo pipefail + +BACKUP_DIR="/opt/backups" +TIMESTAMP=$(date +%Y%m%d_%H%M%S) +BACKUP_PATH="${BACKUP_DIR}/${TIMESTAMP}" +LOG="${BACKUP_DIR}/backup.log" +KEEP_DAYS=7 + +log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"; } + +mkdir -p "$BACKUP_PATH" +log "=== Backup started: ${TIMESTAMP} ===" + +# ── Matrix PostgreSQL ────────────────────────────────────────────── +log "Dumping Matrix PostgreSQL..." +if docker ps --format '{{.Names}}' | grep -q '^matrix-postgres$'; then + docker exec matrix-postgres pg_dump -U synapse synapse \ + | gzip > "${BACKUP_PATH}/matrix-postgres-${TIMESTAMP}.sql.gz" \ + && log " Matrix Postgres: OK ($(du -sh "${BACKUP_PATH}/matrix-postgres-${TIMESTAMP}.sql.gz" | cut -f1))" \ + || log " Matrix Postgres: FAILED" +else + log " matrix-postgres not running — skipping" +fi + +# ── Rocket.Chat MongoDB ──────────────────────────────────────────── +log "Dumping Rocket.Chat MongoDB..." +if docker ps --format '{{.Names}}' | grep -q '^mongodb$'; then + docker exec mongodb mongodump \ + -u admin -p CHANGE_ME_MONGO_ADMIN_PASSWORD \ + --authenticationDatabase admin \ + --db rocketchat \ + --archive \ + | gzip > "${BACKUP_PATH}/rocketchat-mongo-${TIMESTAMP}.archive.gz" \ + && log " MongoDB: OK ($(du -sh "${BACKUP_PATH}/rocketchat-mongo-${TIMESTAMP}.archive.gz" | cut -f1))" \ + || log " MongoDB: FAILED" +else + log " mongodb not running — skipping" +fi + +# ── Named Docker volumes ─────────────────────────────────────────── +log "Backing up Docker volumes..." +for VOLUME in synapse-media rocketchat-uploads; do + if docker volume ls --format '{{.Name}}' | grep -q "^matrix_${VOLUME}\|^rocketchat_${VOLUME}\|^${VOLUME}$"; then + ACTUAL_VOL=$(docker volume ls --format '{{.Name}}' | grep "${VOLUME}" | head -1) + docker run --rm \ + -v "${ACTUAL_VOL}:/volume:ro" \ + -v "${BACKUP_PATH}:/backup" \ + alpine \ + tar czf "/backup/${VOLUME}-${TIMESTAMP}.tar.gz" -C /volume . \ + && log " Volume ${VOLUME}: OK" \ + || log " Volume ${VOLUME}: FAILED" + else + log " Volume ${VOLUME}: not found — skipping" + fi +done + +# ── Config files (bind mounts) ───────────────────────────────────── +log "Backing up config directories..." +tar czf "${BACKUP_PATH}/configs-${TIMESTAMP}.tar.gz" \ + /opt/docker/traefik/traefik.yml \ + /opt/docker/traefik/config/ \ + /opt/docker/matrix/docker-compose.yml \ + /opt/docker/matrix/element-config/ \ + /opt/docker/matrix/synapse-config/homeserver.yaml \ + /opt/docker/matrix/synapse-config/matrix.example.com.log.config \ + /opt/docker/rocketchat/docker-compose.yml \ + 2>/dev/null && log " Configs: OK" || log " Configs: partial (some files missing)" + +# IMPORTANT: signing key is sensitive — back up separately with tight perms +if [ -f /opt/docker/matrix/synapse-config/matrix.example.com.signing.key ]; then + cp /opt/docker/matrix/synapse-config/matrix.example.com.signing.key \ + "${BACKUP_PATH}/synapse-signing-key-${TIMESTAMP}.key" + chmod 600 "${BACKUP_PATH}/synapse-signing-key-${TIMESTAMP}.key" + log " Synapse signing key: backed up (600)" +fi +# ── Minecraft server ─────────────────────────────────────────────── +log "Backing up Minecraft server..." +if docker ps --format '{{.Names}}' | grep -q '^minecraft-mc$'; then + # Server is running - create consistent world snapshot + docker exec minecraft-mc bash -c \ + "cd /data && tar czf /tmp/mc-world-backup-${TIMESTAMP}.tar.gz world/ world_nether/ world_the_end/ 2>/dev/null" && \ + docker cp minecraft-mc:/tmp/mc-world-backup-${TIMESTAMP}.tar.gz "${BACKUP_PATH}/" && \ + docker exec minecraft-mc rm -f /tmp/mc-world-backup-${TIMESTAMP}.tar.gz && \ + log " Minecraft world: OK ($(du -sh "${BACKUP_PATH}/mc-world-backup-${TIMESTAMP}.tar.gz" | cut -f1))" \ + || log " Minecraft world: FAILED" + + # Backup configs and plugins + tar czf "${BACKUP_PATH}/minecraft-configs-${TIMESTAMP}.tar.gz" \ + /opt/docker/minecraft/server.properties \ + /opt/docker/minecraft/purpur.yml \ + /opt/docker/minecraft/spigot.yml \ + /opt/docker/minecraft/paper-*.yml \ + /opt/docker/minecraft/bukkit.yml \ + /opt/docker/minecraft/ops.json \ + /opt/docker/minecraft/banned-*.json \ + /opt/docker/minecraft/eula.txt \ + 2>/dev/null && \ + log " Minecraft configs: OK" \ + || log " Minecraft configs: partial (expected)" +else + # Server is stopped - backup everything directly + tar czf "${BACKUP_PATH}/minecraft-full-backup-${TIMESTAMP}.tar.gz" \ + /opt/docker/minecraft/world/ \ + /opt/docker/minecraft/world_nether/ \ + /opt/docker/minecraft/world_the_end/ \ + /opt/docker/minecraft/plugins/ \ + /opt/docker/minecraft/server.properties \ + /opt/docker/minecraft/purpur.yml \ + /opt/docker/minecraft/spigot.yml \ + 2>/dev/null && \ + log " Minecraft (full, offline): OK ($(du -sh "${BACKUP_PATH}/minecraft-full-backup-${TIMESTAMP}.tar.gz" | cut -f1))" \ + || log " Minecraft (offline): partial" +fi + + "${BACKUP_PATH}/synapse-signing-key-${TIMESTAMP}.key" + chmod 600 "${BACKUP_PATH}/synapse-signing-key-${TIMESTAMP}.key" + log " Synapse signing key: backed up (600)" +fi + +# ── Prune old backups ────────────────────────────────────────────── +log "Pruning backups older than ${KEEP_DAYS} days..." +find "$BACKUP_DIR" -maxdepth 1 -type d -mtime "+${KEEP_DAYS}" -exec rm -rf {} + 2>/dev/null || true +find "$BACKUP_DIR" -maxdepth 1 -name "*.log" -mtime +30 -delete 2>/dev/null || true + +BACKUP_SIZE=$(du -sh "$BACKUP_PATH" | cut -f1) +log "=== Backup complete: ${BACKUP_PATH} (${BACKUP_SIZE}) ==="