diff --git a/ReadMe.md b/ReadMe.md index 40364ec..ecbc435 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -48,7 +48,7 @@ OptiFine Alternatives | :-- | :-- | :-- | | **[Iris Shaders](https://www.curseforge.com/minecraft/mc-mods/irisshaders)** | Shader support for Fabric | ✅ **Requires: [[Sodium]](#sodium)**
Get shaders from: [Modrinth Shaders](https://modrinth.com/discover/shaders) | | **[Sodium](https://www.curseforge.com/minecraft/mc-mods/sodium)** | Drastically improves client performance | **Required by: [[Iris]](#iris-shaders)** | -| **[Spark](https://spark.lucko.me)** | Performance profiler for diagnosing lag and memory issues | `/spark profiler` to start/stop profiling | +| **[Spark](https://spark.lucko.me)** | Performance profiler for diagnosing lag and memory issues | Console: `spark profiler start --allow`, `spark profiler stop` | --- @@ -57,6 +57,7 @@ OptiFine Alternatives | Mod | Purpose | Required For | | :-- | :-- | :-- | +| **[Adventure Platform Mod](https://modrinth.com/mod/adventure-platform-mod)** | Kyori Adventure on Fabric | Required by **[[Better Fabric Console]](#better-fabric-console)** | | **[Collective](https://www.curseforge.com/minecraft/mc-mods/collective)** | Library for shared code | Service module for **[[Serilum]](#serilum-mods)** mods | | **[Fabric API](https://www.curseforge.com/minecraft/mc-mods/fabric-api)** | Core hooks for Fabric mods | Needed for **[[Forge Config API Port]](#forge-config-api-port)** & **[[Advanced XRay]](#-cheats)** & **[Tech Reborn](https://www.curseforge.com/minecraft/mc-mods/techreborn)** & **[Tom's Simple Storage Mod (Fabric)](https://www.curseforge.com/minecraft/mc-mods/toms-storage-fabric)**| | **[Forge Config API Port](https://www.curseforge.com/minecraft/mc-mods/forge-config-api-port)** | Port of Forge's config system | Required by **[[Remove Reloading Screen]](#-improvements--enhancements)**.
✅ **Requires: [[Fabric API]](#fabric-api)** | @@ -93,6 +94,7 @@ OptiFine Alternatives | Mod | Description | Dependencies | | :-- | :-- | :-- | +| **[Better Fabric Console](https://modrinth.com/mod/better-fabric-console)** 🥕 | **The** server console upgrade: MC 26 vanilla reads stdin via dumb `readLine()` — no history, no line editing, arrow keys print `^[[D` like it's 1995. This mod replaces all of that with a full JLine terminal: ↑/↓ command history, left/right editing, tab completion, syntax highlighting, readable colored logs. If you touch the server console more than once a week, this mod is non-negotiable | **Server-only.** ✅ **Requires: [[Adventure Platform Mod]](#adventure-platform-mod)** & **[[Fabric API]](#fabric-api)** | | **[Dynamic FPS](https://www.curseforge.com/minecraft/mc-mods/dynamic-fps)** | Reduces FPS when the game is not in focus. | | | **[Remove Reloading Screen](https://www.curseforge.com/minecraft/mc-mods/rrls)** | Removes the red reload splash screen when changing settings | ✅ **Requires: [[Forge Config API Port]](#forge-config-api-port)** | @@ -158,8 +160,8 @@ OptiFine Alternatives # TODO -- Обязвку для создания сервера добавить сюда в сборку под git -- При экспорте серверной сборки в локальный папку - синхронизировать датапаки по типу `rsync -a datapacks/ /home/dimti/Seafile/minecraft/installers/m2612/world/datapacks/` +- ~~Обязвку для создания сервера добавить сюда в сборку под git~~ → `server-template/` + `bash/init-local-server.sh` +- ~~При экспорте серверной сборки в локальный папку - синхронизировать датапаки~~ → сделано в `bash/export-serverpack.sh` - При отправки обновленной сборки на NixOS-сервер - синхронизировать каким-нибудь образом датапаки # Datapacks diff --git a/bash/export-serverpack.sh b/bash/export-serverpack.sh index 996993a..ac59796 100755 --- a/bash/export-serverpack.sh +++ b/bash/export-serverpack.sh @@ -32,4 +32,11 @@ rm -rf "${TARGET_DIR}/config" echo "Распаковка архива в ${TARGET_DIR}..." unzip -o ${SOURCE_ZIP} -d "${TARGET_DIR}" -echo "Синхронизация завершена успешно." \ No newline at end of file +# Синхронизируем датапаки в мир локального сервера +DATAPACKS_SRC="${REPO_ROOT}/datapacks/" +DATAPACKS_DST="${TARGET_DIR}/world/datapacks/" +echo "Синхронизация датапаков: ${DATAPACKS_SRC} → ${DATAPACKS_DST}" +mkdir -p "${DATAPACKS_DST}" +rsync -a "${DATAPACKS_SRC}" "${DATAPACKS_DST}" + +echo "Синхронизация завершена успешно." diff --git a/bash/init-local-server.sh b/bash/init-local-server.sh new file mode 100755 index 0000000..74468f2 --- /dev/null +++ b/bash/init-local-server.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# +# Развёртывание минимального локального тестового сервера: +# eula.txt, server.properties, start.sh + Fabric Server Launcher. +# +set -euo pipefail + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) +REPO_ROOT="${SCRIPT_DIR}/.." +TEMPLATE_DIR="${REPO_ROOT}/server-template" +TARGET_DIR="/home/dimti/Seafile/minecraft/installers/m2612" +LOCK_FILE="${REPO_ROOT}/pakku-lock.json" +FABRIC_INSTALLER_VERSION="${FABRIC_INSTALLER_VERSION:-1.1.1}" + +cd "${REPO_ROOT}" || exit 1 + +if [[ ! -f "${LOCK_FILE}" ]]; then + echo "Ошибка: не найден ${LOCK_FILE}" + exit 1 +fi + +MC_VERSION=$(python3 -c "import json; print(json.load(open('${LOCK_FILE}'))['mc_versions'][0])") +LOADER_VERSION=$(python3 -c "import json; print(json.load(open('${LOCK_FILE}'))['loaders']['fabric'])") +FABRIC_JAR="fabric-server-mc.${MC_VERSION}-loader.${LOADER_VERSION}-launcher.${FABRIC_INSTALLER_VERSION}.jar" +FABRIC_URL="https://meta.fabricmc.net/v2/versions/loader/${MC_VERSION}/${LOADER_VERSION}/${FABRIC_INSTALLER_VERSION}/server/jar" + +echo "MC=${MC_VERSION} loader=${LOADER_VERSION} installer=${FABRIC_INSTALLER_VERSION}" +echo "Целевая папка: ${TARGET_DIR}" + +mkdir -p "${TARGET_DIR}" + +cp -f "${TEMPLATE_DIR}/eula.txt" "${TARGET_DIR}/eula.txt" + +if [[ ! -f "${TARGET_DIR}/server.properties" ]]; then + cp "${TEMPLATE_DIR}/server.properties" "${TARGET_DIR}/server.properties" + echo "Создан server.properties из шаблона" +else + echo "server.properties уже есть — не перезаписываю" +fi + +sed "s/__FABRIC_SERVER_JAR__/${FABRIC_JAR}/" "${TEMPLATE_DIR}/start.sh" > "${TARGET_DIR}/start.sh" +chmod +x "${TARGET_DIR}/start.sh" +echo "Обновлён start.sh → ${FABRIC_JAR}" + +if [[ -f "${TARGET_DIR}/${FABRIC_JAR}" ]]; then + echo "Fabric launcher уже скачан: ${FABRIC_JAR}" +else + echo "Скачиваю Fabric Server Launcher..." + curl -fL --progress-bar -o "${TARGET_DIR}/${FABRIC_JAR}" "${FABRIC_URL}" + echo "Скачан: ${TARGET_DIR}/${FABRIC_JAR}" +fi + +echo "Готово. Запуск: ${TARGET_DIR}/start.sh" diff --git a/bash/start-local-server.sh b/bash/start-local-server.sh new file mode 100755 index 0000000..4f3b621 --- /dev/null +++ b/bash/start-local-server.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# +# Запуск локального тестового сервера. +# MC 26.1.2 требует Java 25. Консоль с историей — better-fabric-console (vanilla readLine стрелки не понимает). +# +set -euo pipefail + +SERVER_DIR="/home/dimti/Seafile/minecraft/installers/m2612" + +cd "${SERVER_DIR}" +exec bash start.sh diff --git a/mods/adventure-platform-fabric-6.9.0.jar b/mods/adventure-platform-fabric-6.9.0.jar new file mode 100644 index 0000000..8100b0a Binary files /dev/null and b/mods/adventure-platform-fabric-6.9.0.jar differ diff --git a/mods/better-fabric-console-mc26.1.2-2.0.0.jar b/mods/better-fabric-console-mc26.1.2-2.0.0.jar new file mode 100644 index 0000000..42765cf Binary files /dev/null and b/mods/better-fabric-console-mc26.1.2-2.0.0.jar differ diff --git a/pakku-lock.json b/pakku-lock.json index 348d7bf..f3ead4b 100644 --- a/pakku-lock.json +++ b/pakku-lock.json @@ -462,6 +462,51 @@ ] }, { + "pakku_id": "e1fNU92neL5v8WNp", + "pakku_links": [ + "nWaCtvtb2WJpkfg2", + "oJMh4DIB3LCTd6nF" + ], + "type": "MOD", + "side": "SERVER", + "slug": { + "modrinth": "better-fabric-console" + }, + "name": { + "modrinth": "Better Fabric Console" + }, + "id": { + "modrinth": "Y8o1j1Sf" + }, + "files": [ + { + "type": "modrinth", + "file_name": "better-fabric-console-mc26.1.2-2.0.0.jar", + "mc_versions": [ + "26.1.2", + "26.2" + ], + "loaders": [ + "fabric" + ], + "release_type": "release", + "url": "https://cdn.modrinth.com/data/Y8o1j1Sf/versions/hOTbk3bT/better-fabric-console-mc26.1.2-2.0.0.jar", + "id": "hOTbk3bT", + "parent_id": "Y8o1j1Sf", + "hashes": { + "sha512": "32b581f4a92b13a89f149c50025d21a87c4e87159daf5d1c4a099b9149c3ea630790b4e248a05f9139885a8df90b610f05cc099d9a46e2f037565c5d5c617506", + "sha1": "1714a377c3ca6d88157d5569dbcd91008dc33155" + }, + "required_dependencies": [ + "O5VsIpQY", + "P7dR8mSH" + ], + "size": 1564220, + "date_published": "2026-07-08T22:57:38.008788Z" + } + ] + }, + { "pakku_id": "Y55eYmQZHYB1sHSu", "type": "MOD", "side": "CLIENT", @@ -3496,6 +3541,50 @@ ] }, { + "pakku_id": "nWaCtvtb2WJpkfg2", + "pakku_links": [ + "oJMh4DIB3LCTd6nF" + ], + "type": "MOD", + "side": "BOTH", + "slug": { + "modrinth": "adventure-platform-mod" + }, + "name": { + "modrinth": "adventure-platform-mod" + }, + "id": { + "modrinth": "O5VsIpQY" + }, + "files": [ + { + "type": "modrinth", + "file_name": "adventure-platform-fabric-6.9.0.jar", + "mc_versions": [ + "26.1", + "26.1.1", + "26.1.2" + ], + "loaders": [ + "fabric" + ], + "release_type": "release", + "url": "https://cdn.modrinth.com/data/O5VsIpQY/versions/Rvd03EvD/adventure-platform-fabric-6.9.0.jar", + "id": "Rvd03EvD", + "parent_id": "O5VsIpQY", + "hashes": { + "sha512": "e74182238faea8be1f03c523ccd73e4b2e117c59bf9fb9b2382eb06995658b65cfc490acdcbf1eef8078829a99c048e98227c472754ca0be747fe3e06eb7b574", + "sha1": "259d952d0800cabbc8b651fb4a21ce5b32ddc0bf" + }, + "required_dependencies": [ + "P7dR8mSH" + ], + "size": 1006092, + "date_published": "2026-04-15T01:56:24.864176Z" + } + ] + }, + { "pakku_id": "hh5QeN4Nk3nGGXqK", "type": "MOD", "slug": { diff --git a/server-template/eula.txt b/server-template/eula.txt new file mode 100644 index 0000000..02dccd9 --- /dev/null +++ b/server-template/eula.txt @@ -0,0 +1 @@ +eula=true diff --git a/server-template/server.properties b/server-template/server.properties new file mode 100644 index 0000000..38a13ef --- /dev/null +++ b/server-template/server.properties @@ -0,0 +1,67 @@ +#Minecraft server properties (template) +accepts-transfers=false +allow-flight=false +broadcast-console-to-ops=true +broadcast-rcon-to-ops=true +bug-report-link= +difficulty=easy +enable-code-of-conduct=false +enable-jmx-monitoring=false +enable-query=false +enable-rcon=false +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= +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-tls-enabled=true +management-server-tls-keystore= +management-server-tls-keystore-password= +max-chained-neighbor-updates=1000000 +max-players=20 +max-tick-time=60000 +max-world-size=29999984 +motd=A Minecraft Server +network-compression-threshold=256 +online-mode=false +op-permission-level=4 +pause-when-empty-seconds=60 +player-idle-timeout=0 +prevent-proxy-connections=false +query.port=25565 +rate-limit=0 +rcon.password= +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-port=25565 +simulation-distance=10 +spawn-protection=16 +status-heartbeat-interval=0 +sync-chunk-writes=true +text-filtering-config= +text-filtering-version=0 +use-native-transport=true +view-distance=10 +white-list=false diff --git a/server-template/start.sh b/server-template/start.sh new file mode 100755 index 0000000..258fe2c --- /dev/null +++ b/server-template/start.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# MC 26.1.2 требует Java 25 (class file 69). Консоль с историей — better-fabric-console. +# epsilon - 25 +# delta - 21 +JAVA=/home/dimti/.local/share/FreesmLauncher/java/java-runtime-epsilon/bin/java +exec "$JAVA" -Xmx2G -jar __FABRIC_SERVER_JAR__ nogui