diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9e0bfdc --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +*/logs diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 0000000..04b167f --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,46 @@ +--- + +on: + push: + branches: + - main + - develop + +jobs: + build-docker: + runs-on: ubuntu-latest + env: + registry: gitea.cuqmbr.xyz + steps: + - name: Login to Docker Container Registry + uses: docker/login-action@v3 + with: + registry: ${{env.registry}} + username: ${{vars.DOCKER_USER}} + password: ${{secrets.DOCKER_TOKEN}} + - name: Checkout repository + uses: actions/checkout@v4 + # https://github.com/actions/checkout/issues/1830 + # https://gitea.com/gitea/act_runner/issues/164 + - name: Checkout lfs + run: | + git lfs install --local + AUTH=$(git config --local http.${{ github.server_url }}/.extraheader) + git config --local --unset http.${{ github.server_url }}/.extraheader + git config --local http.${{ github.server_url }}/${{ github.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH" + git lfs pull + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + platforms: linux/arm64,linux/amd64 + push: true + # TODO: split tag names into multiple lines + tags: | + ${{env.registry}}/${{github.repository_owner}}/${{github.event.repository.name}}/${{github.ref_name}}:${{github.sha}} + ${{env.registry}}/${{github.repository_owner}}/${{github.event.repository.name}}/${{github.ref_name}}:latest diff --git a/.gitignore b/.gitignore index ed708a8..9e0bfdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1 @@ -cache -libraries -logs -versions - -world -world_nether -world_the_end - -./.console_history - -banned-ips.json -banned-players.json -ops.json -whitelist.json -usercache.json +*/logs diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5ce3ed5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM sapmachine:21-jre-headless-ubuntu + + +ENV WORKDIR_PATH=/workspace +ENV CONFIG_PATH=${WORKDIR_PATH}/config +ENV DATA_PATH=${WORKDIR_PATH}/data + +ADD ./src ${CONFIG_PATH} +RUN mkdir ${DATA_PATH} + + +RUN mkdir ${DATA_PATH}/logs && \ + ln -sf ${DATA_PATH}/logs ${CONFIG_PATH} + +VOLUME ${DATA_PATH} + + +ENV MEMORY=4G +ENV PROXY_SECRET=change_me +ENV SERVERS=lobby="lobby:25565";survival="survival:25565" +ENV TRY=lobby;survival + +WORKDIR ${WORKDIR_PATH}/config + +EXPOSE 25565/tcp + +# TODO: Make awk commands sapn multiple lines +# TODO: Use one call to awk to perform substitutions +CMD \ + sed -i "s/_PROXY_SECRET_/${PROXY_SECRET}/g" forwarding.secret && \ + awk -v servers_str="${SERVERS}" '{ count=split(servers_str,servers_arr,";"); servers_fmt_str = ""; for (i = 1; i <= count; i++) servers_fmt_str = servers_fmt_str servers_arr[i] "\n"; sub(/_SERVERS_/,servers_fmt_str); print }' velocity.toml > velocity.toml.tmp && mv -T -f velocity.toml.tmp velocity.toml &&\ + awk -v try_str="${TRY}" '{ count=split(try_str,try_arr,";"); try_fmt_str = ""; for (i = 1; i <= count; i++) try_fmt_str = try_fmt_str "\"" try_arr[i] "\"" ",\n "; sub(/_TRY_/,try_fmt_str); print }' velocity.toml > velocity.toml.tmp && mv -T -f velocity.toml.tmp velocity.toml && \ + java -Xms${MEMORY} -Xmx${MEMORY} -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar diff --git a/forwarding.secret b/forwarding.secret deleted file mode 100644 index 48550f9..0000000 --- a/forwarding.secret +++ /dev/null @@ -1 +0,0 @@ -gWlMDmsD2kAI \ No newline at end of file diff --git a/src/forwarding.secret b/src/forwarding.secret new file mode 100644 index 0000000..ba0206a --- /dev/null +++ b/src/forwarding.secret @@ -0,0 +1 @@ +_PROXY_SECRET_ diff --git a/lang/messages.properties b/src/lang/messages.properties similarity index 100% rename from lang/messages.properties rename to src/lang/messages.properties diff --git a/lang/messages_ar_SA.properties b/src/lang/messages_ar_SA.properties similarity index 100% rename from lang/messages_ar_SA.properties rename to src/lang/messages_ar_SA.properties diff --git a/lang/messages_bg_BG.properties b/src/lang/messages_bg_BG.properties similarity index 100% rename from lang/messages_bg_BG.properties rename to src/lang/messages_bg_BG.properties diff --git a/lang/messages_cs_CZ.properties b/src/lang/messages_cs_CZ.properties similarity index 100% rename from lang/messages_cs_CZ.properties rename to src/lang/messages_cs_CZ.properties diff --git a/lang/messages_da_DK.properties b/src/lang/messages_da_DK.properties similarity index 100% rename from lang/messages_da_DK.properties rename to src/lang/messages_da_DK.properties diff --git a/lang/messages_de_DE.properties b/src/lang/messages_de_DE.properties similarity index 100% rename from lang/messages_de_DE.properties rename to src/lang/messages_de_DE.properties diff --git a/lang/messages_es_ES.properties b/src/lang/messages_es_ES.properties similarity index 100% rename from lang/messages_es_ES.properties rename to src/lang/messages_es_ES.properties diff --git a/lang/messages_et_EE.properties b/src/lang/messages_et_EE.properties similarity index 100% rename from lang/messages_et_EE.properties rename to src/lang/messages_et_EE.properties diff --git a/lang/messages_fi_FI.properties b/src/lang/messages_fi_FI.properties similarity index 100% rename from lang/messages_fi_FI.properties rename to src/lang/messages_fi_FI.properties diff --git a/lang/messages_fr_FR.properties b/src/lang/messages_fr_FR.properties similarity index 100% rename from lang/messages_fr_FR.properties rename to src/lang/messages_fr_FR.properties diff --git a/lang/messages_he_IL.properties b/src/lang/messages_he_IL.properties similarity index 100% rename from lang/messages_he_IL.properties rename to src/lang/messages_he_IL.properties diff --git a/lang/messages_hu_HU.properties b/src/lang/messages_hu_HU.properties similarity index 100% rename from lang/messages_hu_HU.properties rename to src/lang/messages_hu_HU.properties diff --git a/lang/messages_it_IT.properties b/src/lang/messages_it_IT.properties similarity index 100% rename from lang/messages_it_IT.properties rename to src/lang/messages_it_IT.properties diff --git a/lang/messages_ja_JP.properties b/src/lang/messages_ja_JP.properties similarity index 100% rename from lang/messages_ja_JP.properties rename to src/lang/messages_ja_JP.properties diff --git a/lang/messages_ko_KR.properties b/src/lang/messages_ko_KR.properties similarity index 100% rename from lang/messages_ko_KR.properties rename to src/lang/messages_ko_KR.properties diff --git a/lang/messages_nb_NO.properties b/src/lang/messages_nb_NO.properties similarity index 100% rename from lang/messages_nb_NO.properties rename to src/lang/messages_nb_NO.properties diff --git a/lang/messages_nl_NL.properties b/src/lang/messages_nl_NL.properties similarity index 100% rename from lang/messages_nl_NL.properties rename to src/lang/messages_nl_NL.properties diff --git a/lang/messages_nn_NO.properties b/src/lang/messages_nn_NO.properties similarity index 100% rename from lang/messages_nn_NO.properties rename to src/lang/messages_nn_NO.properties diff --git a/lang/messages_pl_PL.properties b/src/lang/messages_pl_PL.properties similarity index 100% rename from lang/messages_pl_PL.properties rename to src/lang/messages_pl_PL.properties diff --git a/lang/messages_pt_BR.properties b/src/lang/messages_pt_BR.properties similarity index 100% rename from lang/messages_pt_BR.properties rename to src/lang/messages_pt_BR.properties diff --git a/lang/messages_ro_RO.properties b/src/lang/messages_ro_RO.properties similarity index 100% rename from lang/messages_ro_RO.properties rename to src/lang/messages_ro_RO.properties diff --git a/lang/messages_ru_RU.properties b/src/lang/messages_ru_RU.properties similarity index 100% rename from lang/messages_ru_RU.properties rename to src/lang/messages_ru_RU.properties diff --git a/lang/messages_sk_SK.properties b/src/lang/messages_sk_SK.properties similarity index 100% rename from lang/messages_sk_SK.properties rename to src/lang/messages_sk_SK.properties diff --git a/lang/messages_sq_AL.properties b/src/lang/messages_sq_AL.properties similarity index 100% rename from lang/messages_sq_AL.properties rename to src/lang/messages_sq_AL.properties diff --git a/lang/messages_sr_CS.properties b/src/lang/messages_sr_CS.properties similarity index 100% rename from lang/messages_sr_CS.properties rename to src/lang/messages_sr_CS.properties diff --git a/lang/messages_sr_Latn.properties b/src/lang/messages_sr_Latn.properties similarity index 100% rename from lang/messages_sr_Latn.properties rename to src/lang/messages_sr_Latn.properties diff --git a/lang/messages_sv_SE.properties b/src/lang/messages_sv_SE.properties similarity index 100% rename from lang/messages_sv_SE.properties rename to src/lang/messages_sv_SE.properties diff --git a/lang/messages_tl_PH.properties b/src/lang/messages_tl_PH.properties similarity index 100% rename from lang/messages_tl_PH.properties rename to src/lang/messages_tl_PH.properties diff --git a/lang/messages_tr_TR.properties b/src/lang/messages_tr_TR.properties similarity index 100% rename from lang/messages_tr_TR.properties rename to src/lang/messages_tr_TR.properties diff --git a/lang/messages_uk_UA.properties b/src/lang/messages_uk_UA.properties similarity index 100% rename from lang/messages_uk_UA.properties rename to src/lang/messages_uk_UA.properties diff --git a/lang/messages_vi_VN.properties b/src/lang/messages_vi_VN.properties similarity index 100% rename from lang/messages_vi_VN.properties rename to src/lang/messages_vi_VN.properties diff --git a/lang/messages_zh_CN.properties b/src/lang/messages_zh_CN.properties similarity index 100% rename from lang/messages_zh_CN.properties rename to src/lang/messages_zh_CN.properties diff --git a/lang/messages_zh_HK.properties b/src/lang/messages_zh_HK.properties similarity index 100% rename from lang/messages_zh_HK.properties rename to src/lang/messages_zh_HK.properties diff --git a/lang/messages_zh_TW.properties b/src/lang/messages_zh_TW.properties similarity index 100% rename from lang/messages_zh_TW.properties rename to src/lang/messages_zh_TW.properties diff --git a/plugins/bStats/config.txt b/src/plugins/bStats/config.txt similarity index 100% rename from plugins/bStats/config.txt rename to src/plugins/bStats/config.txt diff --git a/run.bat b/src/run.bat similarity index 74% rename from run.bat rename to src/run.bat index 1614d1a..b2f5831 100755 --- a/run.bat +++ b/src/run.bat @@ -1,3 +1,3 @@ @echo off -java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity.jar +java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar pause diff --git a/run.sh b/src/run.sh similarity index 73% rename from run.sh rename to src/run.sh index 5508703..1acd63e 100755 --- a/run.sh +++ b/src/run.sh @@ -1,3 +1,3 @@ #!/bin/sh -java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity*.jar +java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar diff --git a/velocity-3.4.0-SNAPSHOT-503.jar b/src/velocity-3.4.0-SNAPSHOT-503.jar similarity index 100% rename from velocity-3.4.0-SNAPSHOT-503.jar rename to src/velocity-3.4.0-SNAPSHOT-503.jar diff --git a/velocity.toml b/src/velocity.toml similarity index 96% rename from velocity.toml rename to src/velocity.toml index 4d71e58..a0b8732 100644 --- a/velocity.toml +++ b/src/velocity.toml @@ -13,7 +13,7 @@ motd = "<#09add3>A Velocity Server" show-max-players = 500 # Should we authenticate players with Mojang? By default, this is on. -online-mode = true +online-mode = false # Should the proxy enforce the new public key security standard? By default, this is on. force-key-authentication = true @@ -34,7 +34,7 @@ prevent-client-proxy-connections = false # unable to implement network level firewalling (on a shared host). # - "modern": Forward player IPs and UUIDs as part of the login process using # Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher. -player-info-forwarding-mode = "NONE" +player-info-forwarding-mode = "modern" # If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here. # The file is expected to be UTF-8 encoded and not empty. @@ -77,26 +77,24 @@ enable-player-address-logging = true [servers] # Configure your servers here. Each key represents the server's name, and the value # represents the IP address of the server to connect to. -lobby = "127.0.0.1:30066" -factions = "127.0.0.1:30067" -minigames = "127.0.0.1:30068" +_SERVERS_ # In what order we should try servers when a player logs in or is kicked from a server. try = [ - "lobby" + _TRY_ ] [forced-hosts] # Configure your forced hosts here. -"lobby.example.com" = [ - "lobby" -] -"factions.example.com" = [ - "factions" -] -"minigames.example.com" = [ - "minigames" -] +# "lobby.example.com" = [ +# "lobby" +# ] +# "factions.example.com" = [ +# "factions" +# ] +# "minigames.example.com" = [ +# "minigames" +# ] [advanced] # How large a Minecraft packet has to be before we compress it. Setting this to zero will