mirror of
https://github.com/CivMC/Civ.git
synced 2026-07-18 00:20:44 +00:00
Merge pull request #356 from CivMC/feature/pvp-container
Create PVP Server Container
This commit is contained in:
4
.github/workflows/check_gradle_all.yaml
vendored
4
.github/workflows/check_gradle_all.yaml
vendored
@@ -2,8 +2,8 @@
|
||||
name: 🐘 Gradle | Check All
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
pull_request:
|
||||
types: [ opened, synchronize, reopened ]
|
||||
|
||||
jobs:
|
||||
check_gradle:
|
||||
|
||||
6
.github/workflows/comment_on_pr.yaml
vendored
6
.github/workflows/comment_on_pr.yaml
vendored
@@ -1,7 +1,11 @@
|
||||
name: 💬 Comment on PR
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
workflow_run:
|
||||
types:
|
||||
- "completed"
|
||||
workflows:
|
||||
- "🐘 Gradle | Check All"
|
||||
|
||||
jobs:
|
||||
comment-on-pr:
|
||||
|
||||
4
.github/workflows/lint_yaml.yaml
vendored
4
.github/workflows/lint_yaml.yaml
vendored
@@ -2,8 +2,8 @@
|
||||
name: 🔎 Lint Yaml
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
pull_request:
|
||||
types: [ opened, synchronize, reopened ]
|
||||
|
||||
jobs:
|
||||
lint_yaml:
|
||||
|
||||
16
.github/workflows/on_pr_updated.yaml
vendored
16
.github/workflows/on_pr_updated.yaml
vendored
@@ -1,16 +0,0 @@
|
||||
name: ⬇️ PR Updated
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
jobs:
|
||||
call_gradle_check:
|
||||
name: ☎️ Call Gradle Check
|
||||
uses: ./.github/workflows/check_gradle_all.yaml
|
||||
secrets: inherit
|
||||
|
||||
call_lint_yaml:
|
||||
name: ☎️ Call Lint Yaml
|
||||
uses: ./.github/workflows/lint_yaml.yaml
|
||||
secrets: inherit
|
||||
14
.github/workflows/on_pr_updated_completed.yaml
vendored
14
.github/workflows/on_pr_updated_completed.yaml
vendored
@@ -1,14 +0,0 @@
|
||||
name: ✅ PR Updated Completed
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
types:
|
||||
- "completed"
|
||||
workflows:
|
||||
- "⬇️ PR Updated"
|
||||
|
||||
jobs:
|
||||
call_comment_on_pr:
|
||||
name: ☎️ Call Comment on PR
|
||||
uses: ./.github/workflows/check_gradle_all.yaml
|
||||
secrets: inherit
|
||||
49
.github/workflows/on_tag_pushed.yaml
vendored
49
.github/workflows/on_tag_pushed.yaml
vendored
@@ -1,49 +0,0 @@
|
||||
# Publish and release a project when a tag is created.
|
||||
# TODO: Currently, this only supports plugins.
|
||||
name: 🏷️ Tag Pushed
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*/v*.*.*'
|
||||
|
||||
jobs:
|
||||
split_values:
|
||||
name: ✂️ Split Values
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
version: ${{ steps.split_version.outputs.version }}
|
||||
project: ${{ steps.split_project.outputs.project }}
|
||||
|
||||
steps:
|
||||
- name: ✂️ Split Project Version
|
||||
id: split_version
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
run: echo "version=${TAG##*/}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: ✂️ Split Project Name
|
||||
id: split_project
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
VERSION: ${{steps.split_version.outputs.version }}
|
||||
run: echo "project=${TAG///$VERSION}" >> $GITHUB_OUTPUT
|
||||
|
||||
call_publish_gradle:
|
||||
needs: split_values
|
||||
name: ☎️ Call Publish Gradle
|
||||
uses: ./.github/workflows/publish_gradle_project.yaml
|
||||
secrets: inherit
|
||||
with:
|
||||
category: plugins
|
||||
project: ${{ needs.split_values.outputs.project }}
|
||||
|
||||
call_release_gradle:
|
||||
needs: split_values
|
||||
name: ☎️ Call Release Gradle
|
||||
uses: ./.github/workflows/release_gradle_project.yaml
|
||||
secrets: inherit
|
||||
with:
|
||||
category: plugins
|
||||
project: ${{ needs.split_values.outputs.project }}
|
||||
82
.github/workflows/publish_container.yaml
vendored
Normal file
82
.github/workflows/publish_container.yaml
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
# Publish a container
|
||||
name: 🐋 Container | Publish
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'containers/*/v*.*.*'
|
||||
|
||||
jobs:
|
||||
determine_values:
|
||||
name: 🔎 Determine Values
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
category: ${{ steps.determine_values.outputs.category }}
|
||||
version: ${{ steps.determine_values.outputs.version }}
|
||||
project: ${{ steps.determine_values.outputs.project }}
|
||||
|
||||
steps:
|
||||
- name: 🔎 Determine Project Values
|
||||
id: determine_values
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
run: |
|
||||
category=${TAG%%/*}
|
||||
echo "category=${category}"
|
||||
echo "category=${category}" >> $GITHUB_OUTPUT
|
||||
|
||||
version=${TAG##*/}
|
||||
echo "version=${version}"
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
|
||||
project=${TAG#*/}
|
||||
project=${project%/*}
|
||||
echo "project=${project}"
|
||||
echo "project=${project}" >> $GITHUB_OUTPUT
|
||||
|
||||
publish_container:
|
||||
name: 🐋 Publish Container
|
||||
needs: determine_values
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: 🚩 Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 🔎 Introspect metadata
|
||||
id: metadata
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/civmc/civ/${{needs.determine_values.outputs.project}}
|
||||
tags: |
|
||||
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
|
||||
type=ref,event=branch
|
||||
type=semver,pattern={{version}},value=${{needs.determine_values.outputs.version}}
|
||||
type=semver,pattern={{major}}.{{minor}},value=${{needs.determine_values.outputs.version}}
|
||||
type=semver,pattern={{major}},value=${{needs.determine_values.outputs.version}}
|
||||
|
||||
- name: 🪵 Login to Github Packages
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: 🗃️ Create/Update Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ needs.determine_values.outputs.category }}/${{ needs.determine_values.outputs.project }}/${{ needs.determine_values.outputs.version }}
|
||||
|
||||
- name: 🐳 Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: containers/${{needs.determine_values.outputs.project}}
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.metadata.outputs.tags }}
|
||||
labels: ${{ steps.metadata.outputs.labels }}
|
||||
76
.github/workflows/publish_gradle_project.yaml
vendored
76
.github/workflows/publish_gradle_project.yaml
vendored
@@ -1,36 +1,47 @@
|
||||
# Publish a project to maven
|
||||
# Release a gradle project
|
||||
# Publish to maven, and create/update
|
||||
name: 🐘 Gradle | Publish Project
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
category:
|
||||
required: true
|
||||
description: 'The category of project'
|
||||
type: choice
|
||||
options:
|
||||
- plugins
|
||||
project:
|
||||
required: true
|
||||
description: 'The project to publish'
|
||||
type: string
|
||||
workflow_call:
|
||||
inputs:
|
||||
category:
|
||||
required: true
|
||||
description: 'The category of project'
|
||||
type: string
|
||||
project:
|
||||
required: true
|
||||
description: 'The project to publish'
|
||||
type: string
|
||||
push:
|
||||
tags:
|
||||
- 'plugins/*/v*.*.*'
|
||||
|
||||
jobs:
|
||||
determine_values:
|
||||
name: 🔎 Determine Values
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
category: ${{ steps.determine_values.outputs.category }}
|
||||
version: ${{ steps.determine_values.outputs.version }}
|
||||
project: ${{ steps.determine_values.outputs.project }}
|
||||
|
||||
steps:
|
||||
- name: 🔎 Determine Project Values
|
||||
id: determine_values
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
run: |
|
||||
category=${TAG%%/*}
|
||||
echo "category=${category}"
|
||||
echo "category=${category}" >> $GITHUB_OUTPUT
|
||||
|
||||
version=${TAG##*/}
|
||||
echo "version=${version}"
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
|
||||
project=${TAG#*/}
|
||||
project=${project%/*}
|
||||
echo "project=${project}"
|
||||
echo "project=${project}" >> $GITHUB_OUTPUT
|
||||
|
||||
publish_gradle:
|
||||
name: 🐘 Publish Gradle
|
||||
runs-on: ubuntu-latest
|
||||
needs: determine_values
|
||||
permissions:
|
||||
contents: read
|
||||
contents: write
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
@@ -46,10 +57,25 @@ jobs:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
|
||||
# TODO: Bump version if not already done
|
||||
|
||||
- name: 🐘 Gradle Build
|
||||
uses: gradle/gradle-build-action@v2
|
||||
env:
|
||||
CI: true
|
||||
with:
|
||||
arguments: "${{needs.determine_values.outputs.category}}:${{needs.determine_values.outputs.project}}:build --scan"
|
||||
|
||||
- name: 🗃️ Create/Update Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ needs.determine_values.outputs.category }}/${{ needs.determine_values.outputs.project }}/${{ needs.determine_values.outputs.version }}
|
||||
files: '${{needs.determine_values.outputs.category}}/${{needs.determine_values.outputs.project}}/build/libs/*'
|
||||
|
||||
- name: 🐘 Gradle Publish
|
||||
uses: gradle/gradle-build-action@v2
|
||||
env:
|
||||
CI: true
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
arguments: "${{inputs.category}}:${{inputs.project}}:publish --scan"
|
||||
arguments: "${{needs.determine_values.outputs.category}}:${{needs.determine_values.outputs.project}}:publish --scan"
|
||||
|
||||
58
.github/workflows/release_gradle_project.yaml
vendored
58
.github/workflows/release_gradle_project.yaml
vendored
@@ -1,58 +0,0 @@
|
||||
# Attach artifacts to a github release
|
||||
name: 🐘 Gradle | Release Project
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
category:
|
||||
required: true
|
||||
description: 'The category of project'
|
||||
type: choice
|
||||
options:
|
||||
- plugins
|
||||
project:
|
||||
required: true
|
||||
description: 'The project to build'
|
||||
type: string
|
||||
workflow_call:
|
||||
inputs:
|
||||
category:
|
||||
required: true
|
||||
description: 'The category of project'
|
||||
type: string
|
||||
project:
|
||||
required: true
|
||||
description: 'The project to build'
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
release_gradle:
|
||||
name: 🐘 Release Gradle
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: 🚩 Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: ❓ Ensure Wrapper Permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: ☕ Setup Java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
|
||||
- name: 🐘 Gradle Build
|
||||
uses: gradle/gradle-build-action@v2
|
||||
env:
|
||||
CI: true
|
||||
with:
|
||||
arguments: "${{inputs.category}}:${{inputs.project}}:build --scan"
|
||||
|
||||
- name: 🗃️ Create Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: '${{inputs.category}}/${{inputs.project}}/build/libs/*'
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -34,3 +34,7 @@ build
|
||||
run
|
||||
|
||||
temp
|
||||
|
||||
|
||||
### Docker ###
|
||||
containers/data
|
||||
|
||||
25
README.md
Normal file
25
README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Civ
|
||||
|
||||
This monorepo will eventually contain all civ projects and development
|
||||
|
||||
## Developing Locally
|
||||
|
||||
### Plugins
|
||||
|
||||
### Containers
|
||||
A docker compose stack is provided to help test containers built from
|
||||
this repo. To start the stack, run the following command:
|
||||
`docker compose up --build`. Please note that this stack is NOT suitable for production use.
|
||||
|
||||
Optional services may be started by enabling the profile flag, e.g. `--profile <name>`
|
||||
|
||||
Current services and exposed ports are:
|
||||
|
||||
| Name | Ports | Description | Profile |
|
||||
|----------|-------|---------------------|------------|
|
||||
| pvp | | | |
|
||||
| mariadb | 3306 | TCP, Database | |
|
||||
| postgres | 5432 | TCP, Database | |
|
||||
| rabbitmq | 5672 | TCP, AMQP | |
|
||||
| | 15672 | HTTP, Management UI | |
|
||||
| grafana | 3000 | HTTP, Grafana UI | monitoring |
|
||||
9
containers/provisioning/grafana/dashboards/default.yml
Normal file
9
containers/provisioning/grafana/dashboards/default.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
# TODO: Can't figure this out yet. Manually impory the dashboard.
|
||||
|
||||
#apiVersion: 1
|
||||
#
|
||||
#providers:
|
||||
# - name: 'dashboards'
|
||||
# options:
|
||||
# path:
|
||||
# /etc/grafana/provisioning/dashboards/files
|
||||
File diff suppressed because it is too large
Load Diff
13
containers/provisioning/grafana/datasources/influx.yml
Normal file
13
containers/provisioning/grafana/datasources/influx.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: 1
|
||||
|
||||
datasources:
|
||||
- name: InfluxDB
|
||||
type: influxdb
|
||||
access: proxy
|
||||
url: ${CIV_INFLUX_HOST}
|
||||
secureJsonData:
|
||||
token: ${CIV_INFLUX_TOKEN}
|
||||
jsonData:
|
||||
version: Flux
|
||||
organization: ${CIV_INFLUX_ORG}
|
||||
tlsSkipVerify: true
|
||||
@@ -0,0 +1,27 @@
|
||||
CREATE DATABASE donum;
|
||||
CREATE DATABASE banstick;
|
||||
CREATE DATABASE bastion;
|
||||
CREATE DATABASE citadel;
|
||||
CREATE DATABASE civchat2;
|
||||
CREATE DATABASE civduties;
|
||||
CREATE DATABASE jukealert;
|
||||
CREATE DATABASE namelayer;
|
||||
CREATE DATABASE civmodcore;
|
||||
CREATE DATABASE castlegates;
|
||||
CREATE DATABASE essenceglue;
|
||||
CREATE DATABASE exilepearl;
|
||||
CREATE DATABASE realisticbiomes;
|
||||
|
||||
GRANT ALL PRIVILEGES ON `donum`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `banstick`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `bastion`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `citadel`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `civchat2`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `civduties`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `jukealert`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `namelayer`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `civmodcore`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `castlegates`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `essenceglue`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `exilepearl`.* TO 'mariadb'@'%';
|
||||
GRANT ALL PRIVILEGES ON `realisticbiomes`.* TO 'mariadb'@'%';
|
||||
@@ -0,0 +1,6 @@
|
||||
CREATE DATABASE kira;
|
||||
CREATE DATABASE luckperms;
|
||||
|
||||
CREATE DATABASE civspy;
|
||||
\c civspy;
|
||||
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
|
||||
24
containers/pvp/Dockerfile
Normal file
24
containers/pvp/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
||||
# Pin to java17
|
||||
FROM itzg/minecraft-server@sha256:346cb47929edc36e977f3b064f882a9c919df65fe4807ac35c05fdacf442822f
|
||||
|
||||
# https://github.com/itzg/docker-minecraft-server/blob/master/README.md#versions
|
||||
ENV VERSION=1.18.2
|
||||
|
||||
# https://github.com/itzg/docker-minecraft-server#optional-plugins-mods-and-config-attach-points
|
||||
COPY plugins /plugins
|
||||
ENV REMOVE_OLD_MODS=TRUE
|
||||
|
||||
# https://github.com/itzg/docker-minecraft-server#optional-plugins-mods-and-config-attach-points
|
||||
COPY config /config
|
||||
ENV COPY_CONFIG_DEST=/data
|
||||
ENV SYNC_SKIP_NEWER_IN_DESTINATION=false
|
||||
|
||||
# https://github.com/itzg/docker-minecraft-server#running-a-paper-server
|
||||
ENV TYPE=PAPER
|
||||
ENV EULA=TRUE
|
||||
ENV USE_AIKAR_FLAGS=TRUE
|
||||
# https://github.com/itzg/docker-minecraft-server#replacing-variables-inside-configs
|
||||
ENV REPLACE_ENV_DURING_SYNC=TRUE
|
||||
ENV REPLACE_ENV_VARIABLE_PREFIX=CIV
|
||||
|
||||
ENV CIV_WHITELIST=false
|
||||
32
containers/pvp/config/ops.json
Normal file
32
containers/pvp/config/ops.json
Normal file
@@ -0,0 +1,32 @@
|
||||
[
|
||||
{
|
||||
"uuid": "771e81cd-2f11-43b4-bd86-731fe468f131",
|
||||
"name": "Wingzero54",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": true
|
||||
},
|
||||
{
|
||||
"uuid": "54b84e38-ac83-43c0-b285-8c7163343488",
|
||||
"name": "Ahrimanne",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": true
|
||||
},
|
||||
{
|
||||
"uuid": "6e8e4f6f-a414-4f13-962c-6d914363788a",
|
||||
"name": "SoundTech",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": true
|
||||
},
|
||||
{
|
||||
"uuid": "82569b12-c44c-4864-8a73-85a9192ee8f9",
|
||||
"name": "RedDevel",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": true
|
||||
},
|
||||
{
|
||||
"uuid": "2c7c20f7-8472-4780-9b35-4cd4fae460c6",
|
||||
"name": "Okx",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": true
|
||||
}
|
||||
]
|
||||
226
containers/pvp/config/plugins/TAB/config.yml
Normal file
226
containers/pvp/config/plugins/TAB/config.yml
Normal file
@@ -0,0 +1,226 @@
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Header-&-Footer
|
||||
header-footer:
|
||||
enabled: true
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
header:
|
||||
- '&6&kAAAA&r&6&l Welcome to CivMC! &r&6&kAAAA'
|
||||
- "&7Online players: &f%online%"
|
||||
footer:
|
||||
- '&9Modmail at &6reddit.com/r/civmc'
|
||||
- '&a%tps% TPS &r&6discord.gg/nDnsU6vJqg'
|
||||
- '&cPatreon: &6patreon.com/Civ_MC'
|
||||
- '&6Admins: Wingzero54, Ahrimanne, SoundTech, RedDevel, Okx'
|
||||
per-world:
|
||||
world1:
|
||||
header:
|
||||
- "an example of world with custom"
|
||||
footer:
|
||||
- "header/footer and prefix/suffix"
|
||||
world2;world3:
|
||||
header:
|
||||
- "This is a shared header for"
|
||||
- "world2 and world3"
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Tablist-name-formatting
|
||||
tablist-name-formatting:
|
||||
enabled: true
|
||||
align-tabsuffix-on-the-right: false
|
||||
character-width-overrides: {}
|
||||
anti-override: true
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Nametags
|
||||
scoreboard-teams:
|
||||
enabled: false
|
||||
enable-collision: true
|
||||
invisible-nametags: false
|
||||
anti-override: true
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Sorting-players-in-tablist
|
||||
sorting-types:
|
||||
- "GROUPS:owner,admin,mod,helper,builder,vip,default"
|
||||
- "PLACEHOLDER_A_TO_Z:%player%"
|
||||
case-sensitive-sorting: true
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Unlimited-nametag-mode
|
||||
unlimited-nametag-mode:
|
||||
enabled: false
|
||||
use-marker-tag-for-1-8-x-clients: false
|
||||
disable-on-boats: true
|
||||
space-between-lines: 0.22
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
dynamic-lines:
|
||||
- abovename
|
||||
- nametag #the original one, combination of tagprefix + customtagname + tagsuffix
|
||||
- belowname
|
||||
- another
|
||||
static-lines:
|
||||
myCustomLine: 0.66
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Yellow-number
|
||||
yellow-number-in-tablist:
|
||||
enabled: false
|
||||
value: "%ping%"
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Belowname
|
||||
belowname-objective:
|
||||
enabled: false
|
||||
number: "%health%"
|
||||
text: "&cHealth"
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Spectator-fix
|
||||
prevent-spectator-effect:
|
||||
enabled: false
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Bossbar
|
||||
bossbar:
|
||||
enabled: false
|
||||
toggle-command: /bossbar
|
||||
remember-toggle-choice: false
|
||||
hidden-by-default: false
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
bars:
|
||||
ServerInfo:
|
||||
style: "PROGRESS" # for 1.9+: PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12, NOTCHED_20
|
||||
color: "%animation:barcolors%" # for 1.9+: BLUE, GREEN, PINK, PURPLE, RED, WHITE, YELLOW
|
||||
progress: "100" # in %
|
||||
text: "&fWebsite: &bwww.domain.com"
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Per-world-playerlist
|
||||
per-world-playerlist:
|
||||
enabled: false
|
||||
# players with tab.staff will always see all players
|
||||
allow-bypass-permission: false
|
||||
# players in these worlds will always see all players
|
||||
ignore-effect-in-worlds:
|
||||
- ignoredworld
|
||||
- build
|
||||
shared-playerlist-world-groups:
|
||||
lobby:
|
||||
- lobby1
|
||||
- lobby2
|
||||
minigames:
|
||||
- paintball
|
||||
- bedwars
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Scoreboard
|
||||
scoreboard:
|
||||
enabled: false
|
||||
toggle-command: /sb
|
||||
remember-toggle-choice: false
|
||||
hidden-by-default: false
|
||||
use-numbers: false
|
||||
static-number: 0
|
||||
delay-on-join-milliseconds: 0
|
||||
respect-other-plugins: true
|
||||
disable-in-worlds:
|
||||
- disabledworld
|
||||
scoreboards:
|
||||
admin:
|
||||
# Only players with tab.scoreboard.admin can see this scoreboard, others will see scoreboard1
|
||||
display-condition: "permission:tab.scoreboard.admin"
|
||||
title: "Admin scoreboard"
|
||||
lines:
|
||||
- "%animation:MyAnimation1%"
|
||||
- "&6Online:"
|
||||
- "* &eOnline&7: &f%online%&7/&4%maxplayers%"
|
||||
- "* &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%"
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Ping-Spoof
|
||||
ping-spoof:
|
||||
enabled: true
|
||||
value: 0
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Pet-name-fix
|
||||
fix-pet-names:
|
||||
enabled: false
|
||||
|
||||
placeholders:
|
||||
date-format: "dd.MM.yyyy"
|
||||
time-format: "[HH:mm:ss / h:mm a]"
|
||||
time-offset: 0
|
||||
register-tab-expansion: false
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Placeholder-output-replacements
|
||||
placeholder-output-replacements:
|
||||
"%essentials_vanished%":
|
||||
"yes": "&7| Vanished"
|
||||
"no": ""
|
||||
"%afk%":
|
||||
true: " &o[AFK]&r"
|
||||
false: ""
|
||||
"%essentials_nickname%":
|
||||
"%essentials_nickname%": "%player%" #placeholder did not parse correctly, show real name instead
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Conditional-placeholders
|
||||
conditions:
|
||||
nick: # use it with %condition:nick%
|
||||
conditions:
|
||||
- "%player%=%essentials_nickname%"
|
||||
yes: "%player%"
|
||||
no: "~%essentials_nickname%"
|
||||
|
||||
placeholderapi-refresh-intervals:
|
||||
default-refresh-interval: 500
|
||||
server:
|
||||
"%server_uptime%": 1000
|
||||
"%server_tps_1_colored%": 1000
|
||||
"%server_unique_joins%": 5000
|
||||
player:
|
||||
"%player_health%": 200
|
||||
"%player_ping%": 1000
|
||||
"%vault_prefix%": 1000
|
||||
relational:
|
||||
"%rel_factionsuuid_relation_color%": 1000
|
||||
|
||||
# assigning groups by permission nodes instead of taking them from permission plugin
|
||||
assign-groups-by-permissions: false
|
||||
|
||||
# if the option above is true, all groups are taken based on permissions and the one higher in this list is used as primary
|
||||
# Warning! This is not sorting list and has nothing to do with sorting players in tablist!
|
||||
primary-group-finding-list:
|
||||
- Owner
|
||||
- Admin
|
||||
- Mod
|
||||
- Helper
|
||||
- default
|
||||
|
||||
debug: false
|
||||
|
||||
# https://github.com/NEZNAMY/TAB/wiki/MySQL
|
||||
mysql:
|
||||
enabled: false
|
||||
host: 127.0.0.1
|
||||
port: 3306
|
||||
database: tab
|
||||
username: user
|
||||
password: password
|
||||
BIN
containers/pvp/plugins/TAB-3.1.1.jar
Normal file
BIN
containers/pvp/plugins/TAB-3.1.1.jar
Normal file
Binary file not shown.
117
docker-compose.yml
Normal file
117
docker-compose.yml
Normal file
@@ -0,0 +1,117 @@
|
||||
version: '3.9'
|
||||
|
||||
# Development stack for Civ. This stack can be used to develop and test the server and plugins locally.
|
||||
# Please note that this stack is NOT suitable for production use, as it exposes all service ports, and uses default passwords.
|
||||
|
||||
services:
|
||||
|
||||
#################
|
||||
### Minecraft ###
|
||||
#################
|
||||
|
||||
pvp:
|
||||
build: containers/pvp
|
||||
restart: unless-stopped
|
||||
tty: true
|
||||
stdin_open: true
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
INIT_MEMORY: 1G
|
||||
MAX_MEMORY: 5G
|
||||
|
||||
CIV_SERVER_NAME: local-pvp
|
||||
|
||||
CIV_MYSQL_HOST: mariadb
|
||||
CIV_MYSQL_USERNAME: mariadb
|
||||
CIV_MYSQL_PASSWORD: mariadb
|
||||
|
||||
CIV_POSTGRES_HOST: postgres
|
||||
CIV_POSTGRES_USERNAME: postgres
|
||||
CIV_POSTGRES_PASSWORD: postgres
|
||||
|
||||
CIV_RABBITMQ_HOST: rabbitmq
|
||||
CIV_RABBITMQ_USERNAME: rabbitmq
|
||||
CIV_RABBITMQ_PASSWORD: rabbitmq
|
||||
volumes:
|
||||
- ./containers/data/pvp:/data
|
||||
|
||||
#################
|
||||
### Databases ###
|
||||
#################
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.7.1
|
||||
restart: unless-stopped
|
||||
command: --max-connections 500
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", 'mysqladmin ping --user "$$MYSQL_USER" --password="$$MYSQL_PASSWORD"' ]
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: mariadb
|
||||
MYSQL_USER: mariadb
|
||||
MYSQL_PASSWORD: mariadb
|
||||
MYSQL_DATABASE: mariadb
|
||||
volumes:
|
||||
- ./containers/provisioning/mariadb/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
|
||||
- ./containers/data/mariadb:/var/lib/mysql
|
||||
|
||||
postgres:
|
||||
image: timescale/timescaledb:latest-pg14
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", 'pg_isready -U "$$POSTGRES_USER"' ]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_DB: postgres
|
||||
volumes:
|
||||
- ./containers/provisioning/postgres/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
|
||||
- ./containers/data/postgres:/var/lib/postgresql/data
|
||||
|
||||
rabbitmq:
|
||||
image: rabbitmq:3.9.16-management
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD", "rabbitmq-diagnostics", "ping" ]
|
||||
interval: 60s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
ports:
|
||||
- "5672:5672"
|
||||
- "15672:15672"
|
||||
environment:
|
||||
RABBITMQ_DEFAULT_USER: rabbitmq
|
||||
RABBITMQ_DEFAULT_PASS: rabbitmq
|
||||
|
||||
##################
|
||||
### Monitoring ###
|
||||
##################
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana-oss:latest
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
profiles:
|
||||
- monitoring
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
CIV_INFLUX_HOST: http://influx:8086
|
||||
CIV_INFLUX_ORG: CivMC
|
||||
CIV_INFLUX_TOKEN: admintoken
|
||||
volumes:
|
||||
- ./containers/provisioning/grafana:/etc/grafana/provisioning
|
||||
Reference in New Issue
Block a user