Skip to content

Commit 9b940c9

Browse files
committed
add hacky minecraft server
0 parents  commit 9b940c9

File tree

11 files changed

+428
-0
lines changed

11 files changed

+428
-0
lines changed

.github/workflows/ci.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
transpire-ci:
10+
uses: ocf/transpire-ci/.github/workflows/trigger.yml@master
11+
with:
12+
module_name: minecraft-server
13+
secrets:
14+
TRANSPIRE_CI_PAT: ${{ secrets.TRANSPIRE_CI_PAT }}

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# paper jar
2+
paper*
3+
4+
logs/
5+
cache/
6+
libraries/
7+
versions/
8+
9+
plugins/.paper-remapped

.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.transpire.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from pathlib import Path
2+
3+
from transpire.resources import Deployment, Ingress, Secret, Service
4+
from transpire.types import Image, ContainerRegistry
5+
from transpire.utils import get_image_tag
6+
7+
name = "minecraft-server"
8+
auto_sync = True
9+
10+
11+
def images():
12+
yield Image(name="ocfmc-1.21.8", path=Path("/"), registry=ContainerRegistry("ghcr"))
13+
14+
15+
def add_volumes(dep):
16+
dep.obj.spec.template.spec.volumes = [
17+
{"name": "data", "persistentVolumeClaim": {"claimName": "ocfmc-1.21.8"}},
18+
]
19+
20+
dep.obj.spec.template.spec.containers[0].volume_mounts = [
21+
{"name": "data", "mountPath": "/data"},
22+
]
23+
24+
25+
def objects():
26+
dep = Deployment(
27+
name="ocfmc-1.21.8",
28+
image=get_image_tag(name),
29+
ports=[25565],
30+
)
31+
32+
dep.obj.spec.template.spec.dns_policy = "ClusterFirst"
33+
dep.obj.spec.template.spec.dns_config = {"searches": ["ocf.berkeley.edu"]}
34+
35+
add_volumes(dep)
36+
37+
svc = Service(
38+
name="ocfmc-1.21.8",
39+
selector=dep.get_selector(),
40+
port_on_pod=25565,
41+
port_on_svc=25565,
42+
)
43+
44+
ing = Ingress.from_svc(
45+
svc=svc,
46+
host="mc.ocf.berkeley.edu",
47+
path_prefix="/",
48+
)
49+
50+
yield dep.build()
51+
yield svc.build()
52+
yield ing.build()

Dockerfile

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
FROM theocf/debian:bookworm
2+
3+
RUN apt-get update \
4+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
5+
wget \
6+
apt-transport-https \
7+
&& apt-get clean \
8+
&& rm -rf /var/lib/apt/lists/*
9+
10+
RUN wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public \
11+
| gpg --dearmor \
12+
| tee /etc/apt/trusted.gpg.d/adoptium.gpg \
13+
> /dev/null \
14+
&& echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" \
15+
| tee /etc/apt/sources.list.d/adoptium.list
16+
17+
RUN apt-get update \
18+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
19+
temurin-21-jdk \
20+
&& apt-get clean \
21+
&& rm -rf /var/lib/apt/lists/*
22+
23+
WORKDIR /minecraft
24+
COPY start.sh eula.txt server.properties ops.json /minecraft/
25+
COPY plugins /minecraft/plugins
26+
RUN curl -sSL "https://fill-data.papermc.io/v1/objects/e72a1c23c38683c32d8affa5c499c21e21524acb9bbeb38bdff8d8b6296f7d08/paper-1.21.8-10.jar" -o paper.jar
27+
28+
RUN ln -s /data/world world \
29+
&& ln -s /data/world_nether world_nether \
30+
&& ln -s /data/world_the_end world_the_end \
31+
&& ln -s /data/banned-ips.json banned-ips.json \
32+
&& ln -s /data/banned-players.json banned-players.json \
33+
&& ln -s /data/whitelist.json whitelist.json
34+
35+
36+
EXPOSE 25565
37+
CMD ["./start.sh"]

bukkit.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# This is the Bukkit configuration file in Paper.
2+
# As you can see, there's actually not that much to configure without any plugins.
3+
#
4+
# If you need help with the configuration or have any questions related to Paper,
5+
# join us in our Discord or check the docs page.
6+
#
7+
# File Reference: https://docs.papermc.io/paper/reference/bukkit-configuration/
8+
# Docs: https://docs.papermc.io/
9+
# Discord: https://discord.gg/papermc
10+
# Website: https://papermc.io/
11+
12+
settings:
13+
allow-end: true
14+
warn-on-overload: true
15+
permissions-file: permissions.yml
16+
update-folder: update
17+
plugin-profiling: false
18+
connection-throttle: 4000
19+
query-plugins: true
20+
deprecated-verbose: default
21+
shutdown-message: Server closed
22+
minimum-api: none
23+
use-map-color-cache: true
24+
spawn-limits:
25+
monsters: 70
26+
animals: 10
27+
water-animals: 5
28+
water-ambient: 20
29+
water-underground-creature: 5
30+
axolotls: 5
31+
ambient: 15
32+
chunk-gc:
33+
period-in-ticks: 600
34+
ticks-per:
35+
animal-spawns: 400
36+
monster-spawns: 1
37+
water-spawns: 1
38+
water-ambient-spawns: 1
39+
water-underground-creature-spawns: 1
40+
axolotl-spawns: 1
41+
ambient-spawns: 1
42+
autosave: 6000
43+
aliases: now-in-commands.yml

eula.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
eula=true

ops.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[
2+
{
3+
"uuid": "b88102da-2468-42e3-bc41-ea6d34f7a67a",
4+
"name": "fae_drifter",
5+
"level": 4,
6+
"bypassesPlayerLimit": true
7+
}
8+
]

server.properties

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#Minecraft server properties
2+
#Mon Jul 21 20:58:50 PDT 2025
3+
accepts-transfers=false
4+
allow-flight=true
5+
allow-nether=true
6+
broadcast-console-to-ops=true
7+
broadcast-rcon-to-ops=true
8+
bug-report-link=
9+
debug=false
10+
difficulty=normal
11+
enable-command-block=true
12+
enable-jmx-monitoring=false
13+
enable-query=false
14+
enable-rcon=false
15+
enable-status=true
16+
enforce-secure-profile=true
17+
enforce-whitelist=false
18+
entity-broadcast-range-percentage=100
19+
force-gamemode=false
20+
function-permission-level=2
21+
gamemode=survival
22+
generate-structures=true
23+
generator-settings={}
24+
hardcore=false
25+
hide-online-players=false
26+
initial-disabled-packs=
27+
initial-enabled-packs=vanilla
28+
level-name=world
29+
level-seed=
30+
level-type=minecraft\:normal
31+
log-ips=true
32+
max-chained-neighbor-updates=1000000
33+
max-players=20
34+
max-tick-time=60000
35+
max-world-size=29999984
36+
motd=OCF Minecraft
37+
network-compression-threshold=256
38+
online-mode=true
39+
op-permission-level=3
40+
pause-when-empty-seconds=-1
41+
player-idle-timeout=0
42+
prevent-proxy-connections=false
43+
pvp=true
44+
query.port=25565
45+
rate-limit=0
46+
rcon.password=
47+
rcon.port=25575
48+
region-file-compression=deflate
49+
require-resource-pack=false
50+
resource-pack=
51+
resource-pack-id=
52+
resource-pack-prompt=
53+
resource-pack-sha1=
54+
server-ip=
55+
server-port=25565
56+
simulation-distance=10
57+
spawn-monsters=true
58+
spawn-protection=16
59+
sync-chunk-writes=true
60+
text-filtering-config=
61+
text-filtering-version=0
62+
use-native-transport=true
63+
view-distance=10
64+
white-list=false

0 commit comments

Comments
 (0)