diff options
| author | Sho Sakuma <me@m1sk9.dev> | 2026-02-23 17:48:34 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-23 17:48:34 +0900 |
| commit | 59a7e742fe52afba246ff2e4dce9753dd1468e05 (patch) | |
| tree | 14f9d9c9e2ed3e26e63efd709b81f3af6c7291ef | |
| parent | 2513c22f3bfb188df3f8d467f7ad8e47eda8b429 (diff) | |
| parent | b56034e18739653f87d0663f26a4b231de067ced (diff) | |
| download | LunaticChat-59a7e742fe52afba246ff2e4dce9753dd1468e05.tar.gz LunaticChat-59a7e742fe52afba246ff2e4dce9753dd1468e05.tar.bz2 LunaticChat-59a7e742fe52afba246ff2e4dce9753dd1468e05.zip | |
Merge pull request #114 from m1sk9/feat/folia-support
feat: Add Folia Support
20 files changed, 258 insertions, 78 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 455fb25..5ddd4d4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -52,7 +52,7 @@ jobs: with: name: LunaticChat-${{ github.sha }} path: | - platform-paper/build/libs/LunaticChat-*-paper.jar + platform-paper/build/libs/LunaticChat-*.jar platform-velocity/build/libs/LunaticChat-*-velocity.jar retention-days: 7 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e94cfff..1fd9f27 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -12,6 +12,7 @@ jobs: version: ${{ steps.get_version.outputs.version }} paper_jar_name: ${{ steps.get_version.outputs.paper_jar_name }} velocity_jar_name: ${{ steps.get_version.outputs.velocity_jar_name }} + folia_jar_name: ${{ steps.get_version.outputs.folia_jar_name }} steps: - name: Checkout repository uses: actions/checkout@v6 @@ -21,8 +22,9 @@ jobs: run: | VERSION=$(grep ' version = ' build.gradle.kts | sed 's/.*version = "\(.*\)"/\1/') echo "version=$VERSION" >> $GITHUB_OUTPUT - echo "paper_jar_name=LunaticChat-$VERSION-paper.jar" >> $GITHUB_OUTPUT + echo "paper_jar_name=LunaticChat-$VERSION.jar" >> $GITHUB_OUTPUT echo "velocity_jar_name=LunaticChat-$VERSION-velocity.jar" >> $GITHUB_OUTPUT + echo "folia_jar_name=LunaticChat-$VERSION.jar" >> $GITHUB_OUTPUT echo "Extracted version: $VERSION" - name: Validate tag matches version @@ -83,6 +85,7 @@ jobs: env: MODRINTH_CHANNEL: beta MODRINTH_GAME_VERSIONS: "1.21.x" + MODRINTH_MC_VERSION: "1.21.11" steps: - name: Checkout repository uses: actions/checkout@v6 @@ -116,7 +119,7 @@ jobs: uses: cloudnode-pro/modrinth-publish@0a5268ad092d4727bb6424326746fa2fe88761ff # v2 with: token: ${{ secrets.MODRINTH_TOKEN }} - name: v${{ needs.validate.outputs.version }} (Paper v${{ env.MODRINTH_GAME_VERSIONS }}) + name: v${{ needs.validate.outputs.version }} (Paper v${{ env.MODRINTH_MC_VERSION }}) project: ${{ secrets.MODRINTH_PROJECT_ID }} version: ${{ needs.validate.outputs.version }}-paper channel: ${{ env.MODRINTH_CHANNEL }} @@ -126,11 +129,25 @@ jobs: game-versions: ${{ env.MODRINTH_GAME_VERSIONS }} files: platform-paper/build/libs/${{ needs.validate.outputs.paper_jar_name }} + - name: Publish to Modrinth (Folia) + uses: cloudnode-pro/modrinth-publish@0a5268ad092d4727bb6424326746fa2fe88761ff # v2 + with: + token: ${{ secrets.MODRINTH_TOKEN }} + name: v${{ needs.validate.outputs.version }} (Folia v${{ env.MODRINTH_MC_VERSION }}) + project: ${{ secrets.MODRINTH_PROJECT_ID }} + version: ${{ needs.validate.outputs.version }}-folia + channel: ${{ env.MODRINTH_CHANNEL }} + changelog: |- + Please refer to the [GitHub release](https://github.com/m1sk9/LunaticChat/releases/tag/v${{ needs.validate.outputs.version }}) for update details. + loaders: folia + game-versions: ${{ env.MODRINTH_GAME_VERSIONS }} + files: platform-paper/build/libs/${{ needs.validate.outputs.folia_jar_name }} + - name: Publish to Modrinth (Velocity) uses: cloudnode-pro/modrinth-publish@0a5268ad092d4727bb6424326746fa2fe88761ff # v2 with: token: ${{ secrets.MODRINTH_TOKEN }} - name: v${{ needs.validate.outputs.version }} (Velocity v${{ env.MODRINTH_GAME_VERSIONS }}) + name: v${{ needs.validate.outputs.version }} (Velocity) project: ${{ secrets.MODRINTH_PROJECT_ID }} version: ${{ needs.validate.outputs.version }}-velocity channel: ${{ env.MODRINTH_CHANNEL }} diff --git a/CHANGELOG.md b/CHANGELOG.md index ae9a946..b1f50b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## v0 +### v0.10.0 + +- Added support for Folia 1.21 and later. + ### v0.9.1 - Fixed an issue where update notification messages were not formatted correctly. diff --git a/build.gradle.kts b/build.gradle.kts index 7d52e10..36906c9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,7 +13,7 @@ plugins { allprojects { group = "dev.m1sk9" - version = "0.9.1" + version = "0.10.0" repositories { mavenCentral() diff --git a/docker/folia/.gitignore b/docker/folia/.gitignore new file mode 100644 index 0000000..16873f6 --- /dev/null +++ b/docker/folia/.gitignore @@ -0,0 +1 @@ +plugins/ diff --git a/docker/bukkit.yml b/docker/folia/bukkit.yml index 2f44ae9..2f44ae9 100644 --- a/docker/bukkit.yml +++ b/docker/folia/bukkit.yml diff --git a/docker/folia/compose.yaml b/docker/folia/compose.yaml new file mode 100644 index 0000000..dd3f38c --- /dev/null +++ b/docker/folia/compose.yaml @@ -0,0 +1,47 @@ +services: + folia: + image: itzg/minecraft-server:java21 + container_name: debug-folia + ports: + - "25565:25565" + - "25575:25575" + volumes: + - lunatic-debug-folia-data:/data + - ./plugins:/data/plugins + - ./bukkit.yml:/data/bukkit.yml + environment: + EULA: "TRUE" + TYPE: "FOLIA" + VERSION: "1.21.11" + MEMORY: "2G" + + # デバッグ用高速化設定 + LEVEL_TYPE: "flat" + VIEW_DISTANCE: "3" + SIMULATION_DISTANCE: "3" + GENERATE_STRUCTURES: "false" + SPAWN_PROTECTION: "0" + ALLOW_NETHER: "false" + + # 権限関連 + OVERRIDE_SERVER_PROPERTIES: "true" + + ENABLE_RCON: "true" + RCON_PASSWORD: "minecraft" + RCON_PORT: 25575 + + DIFFICULTY: "peaceful" + MAX_PLAYERS: "3" + ONLINE_MODE: "false" + SYNC_SKIP_NEWER_IN_DESTINATION: "false" + healthcheck: + test: mc-health + start_period: 90s + interval: 10s + timeout: 5s + retries: 3 + tty: true + stdin_open: true + +volumes: + lunatic-debug-folia-data: diff --git a/docker/.gitignore b/docker/velocity/.gitignore index 4c0fc30..4c0fc30 100644 --- a/docker/.gitignore +++ b/docker/velocity/.gitignore diff --git a/docker/velocity/bukkit.yml b/docker/velocity/bukkit.yml new file mode 100644 index 0000000..2f44ae9 --- /dev/null +++ b/docker/velocity/bukkit.yml @@ -0,0 +1,43 @@ +# 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/ + +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 +settings: + 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 + allow-end: false diff --git a/docker/compose.yaml b/docker/velocity/compose.yaml index 2f3d5c9..2f3d5c9 100644 --- a/docker/compose.yaml +++ b/docker/velocity/compose.yaml diff --git a/docker/paper-global.yml b/docker/velocity/paper-global.yml index 4c01c4e..4c01c4e 100644 --- a/docker/paper-global.yml +++ b/docker/velocity/paper-global.yml diff --git a/docker/velocity.toml b/docker/velocity/velocity.toml index 1b5b374..1b5b374 100644 --- a/docker/velocity.toml +++ b/docker/velocity/velocity.toml diff --git a/platform-paper/build.gradle.kts b/platform-paper/build.gradle.kts index 972cce3..18eaf0f 100644 --- a/platform-paper/build.gradle.kts +++ b/platform-paper/build.gradle.kts @@ -29,7 +29,7 @@ dependencies { tasks { shadowJar { - archiveClassifier.set("paper") + archiveClassifier.set("") archiveBaseName.set("LunaticChat") } diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt index 0af6ed8..73657a1 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt @@ -23,6 +23,7 @@ import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.player.PlayerJoinEvent import org.bukkit.plugin.java.JavaPlugin +import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean import java.util.logging.Logger import kotlin.time.Duration.Companion.milliseconds @@ -337,12 +338,13 @@ class ServiceInitializer( // Only perform handshake once if (!handshakeCompleted.getAndSet(true)) { // Schedule handshake 1 second after first player joins - plugin.server.scheduler.runTaskLater( + plugin.server.asyncScheduler.runDelayed( plugin, - Runnable { + { performVelocityHandshake(event.player, manager) }, - 20L, + 1, + TimeUnit.SECONDS, ) } } @@ -408,17 +410,20 @@ class ServiceInitializer( /** * Schedules periodic tasks such as cache saving. + * Uses Folia-compatible AsyncScheduler API. */ fun schedulePeriodicTasks() { if (configuration.features.japaneseConversion.enabled && conversionCache != null) { - val saveInterval = configuration.features.japaneseConversion.cacheSaveIntervalSeconds * 20L - plugin.server.scheduler.runTaskTimerAsynchronously( + val intervalSeconds = + configuration.features.japaneseConversion + .cacheSaveIntervalSeconds + .toLong() + plugin.server.asyncScheduler.runAtFixedRate( plugin, - Runnable { - conversionCache?.saveToDisk() - }, - saveInterval, - saveInterval, + { conversionCache?.saveToDisk() }, + intervalSeconds, + intervalSeconds, + TimeUnit.SECONDS, ) } } diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelMessageLogger.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelMessageLogger.kt index 206968c..a100d93 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelMessageLogger.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelMessageLogger.kt @@ -2,6 +2,7 @@ package dev.m1sk9.lunaticChat.paper.chat.channel import dev.m1sk9.lunaticChat.engine.chat.channel.ChannelMessageLogEntry import io.ktor.util.logging.Logger +import io.papermc.paper.threadedregions.scheduler.ScheduledTask import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import org.bukkit.plugin.Plugin @@ -13,6 +14,7 @@ import java.time.LocalDate import java.time.ZoneOffset import java.time.format.DateTimeFormatter import java.util.concurrent.ConcurrentLinkedQueue +import java.util.concurrent.TimeUnit import kotlin.io.path.deleteIfExists import kotlin.io.path.fileSize import kotlin.io.path.listDirectoryEntries @@ -39,16 +41,16 @@ class ChannelMessageLogger( ) { private val pendingEntries = ConcurrentLinkedQueue<ChannelMessageLogEntry>() private val json = Json { encodeDefaults = true } - private var flushTaskId: Int? = null - private var cleanupTaskId: Int? = null + private var flushTask: ScheduledTask? = null + private var cleanupTask: ScheduledTask? = null companion object { private const val LOG_FILE_PREFIX = "channel-messages-" private const val LOG_FILE_EXTENSION = ".json" private val DATE_FORMATTER: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") - private const val FLUSH_INTERVAL_TICKS = 20L // 1 second - private const val CLEANUP_INTERVAL_TICKS = 24 * 60 * 60 * 20L // 24 hours - private const val CLEANUP_INITIAL_DELAY_TICKS = 5 * 60 * 20L // 5 minutes + private const val FLUSH_INTERVAL_SECONDS = 1L + private const val CLEANUP_INTERVAL_SECONDS = 24 * 60 * 60L // 24 hours + private const val CLEANUP_INITIAL_DELAY_SECONDS = 5 * 60L // 5 minutes } init { @@ -74,20 +76,22 @@ class ChannelMessageLogger( /** * Schedules periodic flushing of pending log entries. + * Uses Folia-compatible AsyncScheduler API. */ private fun schedulePeriodicFlush() { - flushTaskId = - plugin.server.scheduler - .runTaskTimerAsynchronously( - plugin, - Runnable { flushPendingEntries() }, - FLUSH_INTERVAL_TICKS, - FLUSH_INTERVAL_TICKS, - ).taskId + flushTask = + plugin.server.asyncScheduler.runAtFixedRate( + plugin, + { flushPendingEntries() }, + FLUSH_INTERVAL_SECONDS, + FLUSH_INTERVAL_SECONDS, + TimeUnit.SECONDS, + ) } /** * Schedules periodic cleanup of old log files. + * Uses Folia-compatible AsyncScheduler API. */ private fun schedulePeriodicCleanup() { if (retentionDays <= 0) { @@ -95,14 +99,14 @@ class ChannelMessageLogger( return } - cleanupTaskId = - plugin.server.scheduler - .runTaskTimerAsynchronously( - plugin, - Runnable { cleanupOldLogs(retentionDays) }, - CLEANUP_INITIAL_DELAY_TICKS, - CLEANUP_INTERVAL_TICKS, - ).taskId + cleanupTask = + plugin.server.asyncScheduler.runAtFixedRate( + plugin, + { cleanupOldLogs(retentionDays) }, + CLEANUP_INITIAL_DELAY_SECONDS, + CLEANUP_INTERVAL_SECONDS, + TimeUnit.SECONDS, + ) logger.info("Scheduled log cleanup task (retention: $retentionDays days)") } @@ -159,8 +163,8 @@ class ChannelMessageLogger( */ fun shutdown() { // Cancel scheduled tasks - flushTaskId?.let { plugin.server.scheduler.cancelTask(it) } - cleanupTaskId?.let { plugin.server.scheduler.cancelTask(it) } + flushTask?.cancel() + cleanupTask?.cancel() // Flush remaining entries flushPendingEntries() diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelStorage.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelStorage.kt index 7176014..7a0c3c8 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelStorage.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/chat/channel/ChannelStorage.kt @@ -84,16 +84,13 @@ class ChannelStorage( * @throws ChannelStorageSaveException if there is an error saving the data. */ fun queueAsyncSave(data: ChannelData) { - plugin.server.scheduler.runTaskAsynchronously( - plugin, - Runnable { - try { - saveToDisk(data) - } catch (e: ChannelStorageSaveException) { - logger.severe("Error saving channel data asynchronously: ${e.message}") - e.printStackTrace() - } - }, - ) + plugin.server.asyncScheduler.runNow(plugin) { + try { + saveToDisk(data) + } catch (e: ChannelStorageSaveException) { + logger.severe("Error saving channel data asynchronously: ${e.message}") + e.printStackTrace() + } + } } } diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt index da79cfa..bab4e8d 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt @@ -2,10 +2,10 @@ package dev.m1sk9.lunaticChat.paper.converter import dev.m1sk9.lunaticChat.engine.converter.CacheData import kotlinx.serialization.json.Json -import org.bukkit.Bukkit import org.bukkit.plugin.java.JavaPlugin import java.nio.file.Path import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean import java.util.logging.Logger import kotlin.io.path.bufferedReader @@ -110,13 +110,14 @@ class ConversionCache( private fun queueSaveToDisk() { if (conversionSaveQueue.compareAndSet(false, true)) { - Bukkit.getScheduler().runTaskLaterAsynchronously( + plugin.server.asyncScheduler.runDelayed( plugin, - Runnable { + { conversionSaveQueue.set(false) saveToDisk() }, - 100L, // 5 seconds = 100 ticks + 5, + TimeUnit.SECONDS, ) } } diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/settings/YamlPlayerSettingsStorage.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/settings/YamlPlayerSettingsStorage.kt index 0aa8eef..5a2c8e2 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/settings/YamlPlayerSettingsStorage.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/settings/YamlPlayerSettingsStorage.kt @@ -2,9 +2,9 @@ package dev.m1sk9.lunaticChat.paper.settings import com.charleskorn.kaml.Yaml import dev.m1sk9.lunaticChat.engine.settings.PlayerSettingsData -import org.bukkit.Bukkit import org.bukkit.plugin.java.JavaPlugin import java.nio.file.Path +import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean import java.util.logging.Logger import kotlin.io.path.bufferedReader @@ -87,13 +87,14 @@ class YamlPlayerSettingsStorage( */ fun queueAsyncSave(data: PlayerSettingsData) { if (saveFlag.compareAndSet(false, true)) { - Bukkit.getScheduler().runTaskLaterAsynchronously( + plugin.server.asyncScheduler.runDelayed( plugin, - Runnable { + { saveFlag.set(false) saveToDisk(data) }, - 100L, // 5 seconds = 100 ticks + 5, + TimeUnit.SECONDS, ) } } diff --git a/platform-paper/src/main/resources/paper-plugin.yml b/platform-paper/src/main/resources/paper-plugin.yml index f8a804b..cd37c13 100644 --- a/platform-paper/src/main/resources/paper-plugin.yml +++ b/platform-paper/src/main/resources/paper-plugin.yml @@ -2,6 +2,7 @@ name: LunaticChat version: ${version} main: dev.m1sk9.lunaticChat.paper.LunaticChat api-version: '1.21' +folia-supported: true prefix: LunaticChat load: STARTUP authors: [ m1sk9 ] @@ -2,51 +2,110 @@ set -e -DOCKER_COMPOSE="docker compose -f docker/compose.yaml" +DC_VELOCITY="docker compose -f docker/velocity/compose.yaml" +DC_FOLIA="docker compose -f docker/folia/compose.yaml" help() { cat <<EOF Usage: ./x <command> [options] -Commands: - start Build with gradlew and start docker compose +Velocity environment (Paper s1 + s2 + Velocity proxy): + start Build Paper+Velocity and start all containers start-s1 Build Paper and start only s1 container restart Restart s1, s2 and velocity containers - stop Stop docker compose - clean Stop docker compose and remove volumes + stop Stop velocity environment + clean Stop velocity environment and remove volumes rcon [server] Open rcon-cli for server container (default: s1) Available servers: s1, s2 logs [server] Show server container logs (default: s1) Available servers: s1, s2 - vlogs Show velocity container logs + vlogs Show velocity proxy container logs + +Folia environment (single Folia server): + folia start Build Paper and start Folia server + folia restart Restart Folia server + folia stop Stop Folia server + folia clean Stop Folia server and remove volumes + folia rcon Open rcon-cli for Folia server + folia logs Show Folia server logs + +General: help Show this help message EOF } +ensure_plugin_dir() { + mkdir -p "$1" +} + +# --- Folia commands --- +folia_cmd() { + case "${1:-}" in + start) + ./gradlew :platform-paper:clean :platform-paper:shadowJar + ensure_plugin_dir docker/folia/plugins + rm -f docker/folia/plugins/*.jar + cp platform-paper/build/libs/*.jar docker/folia/plugins/ + $DC_FOLIA up + ;; + restart) + $DC_FOLIA restart folia + ;; + stop) + $DC_FOLIA down + ;; + clean) + $DC_FOLIA down -v + ;; + rcon) + $DC_FOLIA exec folia rcon-cli + ;; + logs) + $DC_FOLIA logs -f folia + ;; + *) + echo "Unknown folia command: ${1:-}" + echo "" + help + exit 1 + ;; + esac +} + +# --- Main --- case "${1:-}" in + folia) + folia_cmd "${2:-}" + ;; start) ./gradlew :platform-paper:clean :platform-paper:shadowJar :platform-velocity:clean :platform-velocity:shadowJar - # Copy built JARs to plugin directories - cp platform-paper/build/libs/*.jar docker/plugins-paper-s1/ - cp platform-paper/build/libs/*.jar docker/plugins-paper-s2/ - cp platform-velocity/build/libs/*.jar docker/plugins-velocity/ - $DOCKER_COMPOSE up + ensure_plugin_dir docker/velocity/plugins-paper-s1 + ensure_plugin_dir docker/velocity/plugins-paper-s2 + ensure_plugin_dir docker/velocity/plugins-velocity + rm -f docker/velocity/plugins-paper-s1/*.jar + rm -f docker/velocity/plugins-paper-s2/*.jar + rm -f docker/velocity/plugins-velocity/*.jar + cp platform-paper/build/libs/*.jar docker/velocity/plugins-paper-s1/ + cp platform-paper/build/libs/*.jar docker/velocity/plugins-paper-s2/ + cp platform-velocity/build/libs/*.jar docker/velocity/plugins-velocity/ + $DC_VELOCITY up ;; start-s1) ./gradlew :platform-paper:clean :platform-paper:shadowJar - # Copy built JAR to s1 plugin directory - cp platform-paper/build/libs/*.jar docker/plugins-paper-s1/ - $DOCKER_COMPOSE up s1 + ensure_plugin_dir docker/velocity/plugins-paper-s1 + rm -f docker/velocity/plugins-paper-s1/*.jar + cp platform-paper/build/libs/*.jar docker/velocity/plugins-paper-s1/ + $DC_VELOCITY up s1 ;; restart) - $DOCKER_COMPOSE restart s1 s2 velocity + $DC_VELOCITY restart s1 s2 velocity ;; stop) - $DOCKER_COMPOSE down + $DC_VELOCITY down ;; clean) - $DOCKER_COMPOSE down -v + $DC_VELOCITY down -v ;; rcon) SERVER="${2:-s1}" @@ -54,7 +113,7 @@ case "${1:-}" in echo "Error: Invalid server '$SERVER'. Available servers: s1, s2" exit 1 fi - $DOCKER_COMPOSE exec $SERVER rcon-cli + $DC_VELOCITY exec "$SERVER" rcon-cli ;; logs) SERVER="${2:-s1}" @@ -62,10 +121,10 @@ case "${1:-}" in echo "Error: Invalid server '$SERVER'. Available servers: s1, s2" exit 1 fi - $DOCKER_COMPOSE logs -f $SERVER + $DC_VELOCITY logs -f "$SERVER" ;; vlogs) - $DOCKER_COMPOSE logs -f velocity + $DC_VELOCITY logs -f velocity ;; help|"") help |
