Skip to content

Commit 2d7872d

Browse files
Merge branch 'master' into master
2 parents b63032e + ab10e3d commit 2d7872d

24 files changed

Lines changed: 449 additions & 263 deletions

File tree

.examples/bedrock/docker-compose.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ services:
22
gate:
33
image: ghcr.io/minekube/gate:latest
44
restart: unless-stopped
5+
working_dir: /data
56
environment:
6-
- GATE_CONFIG_PATH=/gate/gate.yml
7+
- GATE_CONFIG=/config/gate.yml
78
volumes:
8-
- ./gate.yml:/gate/gate.yml
9-
- gate-cache:/gate/.cache
10-
- gate-data:/gate/data
9+
- ./gate.yml:/config/gate.yml:ro
10+
- gate-cache:/var/cache/gate
11+
- gate-data:/data
1112
ports:
1213
- '25565:25565' # Java Edition
1314
- '19132:19132/udp' # Bedrock Edition
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
config:
2+
bind: 0.0.0.0:25565
3+
onlineMode: false
4+
servers:
5+
backend: 127.0.0.1:25566
6+
try:
7+
- backend
8+
bedrock:
9+
enabled: true
10+
floodgateKeyPath: /tmp/floodgate.pem
11+
managed: true

.github/workflows/ci.yml

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,18 @@ jobs:
1717
runs-on: ubuntu-latest
1818
steps:
1919
- name: Checkout
20-
uses: actions/checkout@v4
20+
uses: actions/checkout@v6
2121

2222
- name: Setup Go
23-
uses: actions/setup-go@v5
23+
uses: actions/setup-go@v6
2424
with:
2525
go-version-file: go.mod
2626

27+
- name: Install golangci-lint
28+
run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8
29+
2730
- name: golangci-lint
28-
uses: golangci/golangci-lint-action@v6
29-
with:
30-
version: latest
31-
install-mode: goinstall
32-
args: --timeout 3m0s
31+
run: golangci-lint run --timeout 3m0s
3332
test:
3433
strategy:
3534
fail-fast: false
@@ -38,34 +37,43 @@ jobs:
3837
runs-on: ${{ matrix.platform }}
3938
steps:
4039
- name: Checkout
41-
uses: actions/checkout@v4
40+
uses: actions/checkout@v6
4241

4342
- name: Setup Go with cache
44-
uses: actions/setup-go@v5
43+
uses: actions/setup-go@v6
4544
with:
4645
cache: true
4746
go-version-file: go.mod
4847

4948
- name: Test
5049
run: make test
50+
51+
- name: Smoke test - Geyserlite Windows auto-download starts
52+
if: matrix.platform == 'windows-latest'
53+
run: go test ./pkg/edition/bedrock/geyser -tags=geyserlite_smoke -run TestLiteManagedRunnerWindowsAutoDownloadSmoke -count=1 -timeout 6m -v
5154
# Regression test for https://github.com/minekube/gate/issues/697:
5255
# The published images crashed with "exec /gate: no such file or directory"
5356
# because the gate binary is dynamically linked (the geyserlite dependency
5457
# pulls in github.com/ebitengine/purego, which imports libdl.so.2 via
5558
# //go:cgo_import_dynamic even with CGO_ENABLED=0) but the runtime base image
5659
# had no glibc dynamic loader. This job builds the actual images and runs the
57-
# binary so a broken runtime base fails CI instead of shipping.
60+
# binary and starts managed Bedrock on both architectures so broken runtime
61+
# dependencies or cache paths fail CI instead of shipping.
5862
docker-smoke:
59-
runs-on: ubuntu-latest
63+
strategy:
64+
fail-fast: false
65+
matrix:
66+
runner: [ubuntu-latest, ubuntu-24.04-arm]
67+
runs-on: ${{ matrix.runner }}
6068
steps:
6169
- name: Checkout
62-
uses: actions/checkout@v4
70+
uses: actions/checkout@v6
6371

6472
- name: Set up docker buildx
65-
uses: docker/setup-buildx-action@v3
73+
uses: docker/setup-buildx-action@v4
6674

6775
- name: Build gate image (host arch, load)
68-
uses: docker/build-push-action@v6
76+
uses: docker/build-push-action@v7
6977
with:
7078
context: .
7179
file: ./Dockerfile
@@ -81,8 +89,27 @@ jobs:
8189
echo "$out"
8290
echo "$out" | grep -q "gate version smoke-test"
8391
92+
- name: Smoke test - managed Bedrock starts in read-only distroless image
93+
run: |
94+
cid=$(docker run -d --read-only --tmpfs /tmp \
95+
-v "$PWD/.github/testdata/managed-bedrock.yml:/config.yml:ro" \
96+
gate:smoke --config /config.yml)
97+
trap 'docker logs "$cid" 2>&1 || true; docker rm -f "$cid" >/dev/null 2>&1 || true' EXIT
98+
99+
for _ in $(seq 1 180); do
100+
logs=$(docker logs "$cid" 2>&1)
101+
if grep -q "geyser integration started" <<<"$logs"; then
102+
exit 0
103+
fi
104+
if [ "$(docker inspect -f '{{.State.Running}}' "$cid")" != "true" ]; then
105+
exit 1
106+
fi
107+
sleep 1
108+
done
109+
exit 1
110+
84111
- name: Build jre variant image (host arch, load)
85-
uses: docker/build-push-action@v6
112+
uses: docker/build-push-action@v7
86113
with:
87114
context: .
88115
file: ./Dockerfile
@@ -109,13 +136,13 @@ jobs:
109136
image_latest: ${{ steps.image-ref.outputs.image_latest }}
110137
steps:
111138
- name: Checkout
112-
uses: actions/checkout@v4
139+
uses: actions/checkout@v6
113140

114141
- name: Set up docker buildx
115-
uses: docker/setup-buildx-action@v3
142+
uses: docker/setup-buildx-action@v4
116143

117144
- name: Login to Container registry
118-
uses: docker/login-action@v3
145+
uses: docker/login-action@v4
119146
with:
120147
registry: ${{ env.REGISTRY }}
121148
username: ${{ github.actor }}
@@ -157,7 +184,7 @@ jobs:
157184
echo "Version: ${VERSION}" >> $GITHUB_STEP_SUMMARY
158185
159186
- name: Build and push docker image
160-
uses: docker/build-push-action@v6
187+
uses: docker/build-push-action@v7
161188
with:
162189
context: .
163190
file: ./Dockerfile
@@ -174,7 +201,7 @@ jobs:
174201
${{ steps.image-ref.outputs.image_version }}
175202
176203
- name: Build and push docker image (jre variant)
177-
uses: docker/build-push-action@v6
204+
uses: docker/build-push-action@v7
178205
with:
179206
context: .
180207
file: ./Dockerfile
@@ -196,18 +223,18 @@ jobs:
196223
runs-on: ubuntu-latest
197224
steps:
198225
- name: Checkout
199-
uses: actions/checkout@v4
226+
uses: actions/checkout@v6
200227
with:
201228
fetch-depth: 0
202229

203230
- name: Setup Go
204-
uses: actions/setup-go@v5
231+
uses: actions/setup-go@v6
205232
with:
206233
cache: true
207234
go-version-file: go.mod
208235

209236
- name: Run GoReleaser
210-
uses: goreleaser/goreleaser-action@v6
237+
uses: goreleaser/goreleaser-action@v7
211238
with:
212239
version: latest
213240
args: release --clean

.web/docs/developers/api/go/integration-options.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ description: "Learn different ways to integrate Gate Minecraft proxy with Go app
66
<div class="integration-options">
77
<a href="https://github.com/minekube/gate-plugin-template" class="option-card" target="_blank">
88
<div class="option-content">
9-
<h3>🔌 Native Go Plugin</h3>
9+
<h3>Native Go Plugin</h3>
1010
<ul>
1111
<li>Create your own Go module and import Gate APIs</li>
1212
<li>Compile like a normal Go program</li>
@@ -22,7 +22,7 @@ description: "Learn different ways to integrate Gate Minecraft proxy with Go app
2222

2323
<a href="/developers/api/" class="option-card">
2424
<div class="option-content">
25-
<h3>🌐 HTTP API Client</h3>
25+
<h3>HTTP API Client</h3>
2626
<ul>
2727
<li>Language-agnostic interface</li>
2828
<li>Perfect for out-of-process execution</li>

.web/docs/developers/api/index.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,27 @@ The HTTP API enables you to build and deploy functionality independently from yo
3131
3232
<div class="vp-features">
3333
<div class="vp-feature">
34-
<div class="title">🚀 Independent Updates</div>
34+
<div class="title">Independent Updates</div>
3535
<div class="details">Ship updates without restarting Gate or disconnecting players</div>
3636
</div>
3737
<div class="vp-feature">
38-
<div class="title">🌐 Cross-Language Support</div>
38+
<div class="title">Cross-Language Support</div>
3939
<div class="details">Access Gate's core functionality from any programming language</div>
4040
</div>
4141
<div class="vp-feature">
42-
<div class="title">🔌 Plugin Development</div>
42+
<div class="title">Plugin Development</div>
4343
<div class="details">Build extensions and plugins in your preferred language</div>
4444
</div>
4545
<div class="vp-feature">
46-
<div class="title">🤖 Automation</div>
46+
<div class="title">Automation</div>
4747
<div class="details">Automate server registration and management tasks</div>
4848
</div>
4949
<div class="vp-feature">
50-
<div class="title">🎮 Custom Tools</div>
50+
<div class="title">Custom Tools</div>
5151
<div class="details">Create administrative interfaces and management tools</div>
5252
</div>
5353
<div class="vp-feature">
54-
<div class="title">🔄 Integration</div>
54+
<div class="title">Integration</div>
5555
<div class="details">Connect Gate with external systems and services</div>
5656
</div>
5757
</div>

.web/docs/developers/api/java/pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,28 @@
3333
<dependency>
3434
<groupId>build.buf.gen</groupId>
3535
<artifactId>minekube_gate_protocolbuffers_java</artifactId>
36-
<version>29.5.0.1.20241118150055.50fffb007499</version>
36+
<version>29.5.0.2.20241118150055.50fffb007499</version>
3737
</dependency>
3838
<dependency>
3939
<groupId>build.buf.gen</groupId>
4040
<artifactId>minekube_gate_grpc_java</artifactId>
41-
<version>1.78.0.1.20241118150055.50fffb007499</version>
41+
<version>1.81.0.1.20241118150055.50fffb007499</version>
4242
</dependency>
4343
<!-- gRPC dependencies -->
4444
<dependency>
4545
<groupId>io.grpc</groupId>
4646
<artifactId>grpc-netty-shaded</artifactId>
47-
<version>1.78.0</version>
47+
<version>1.81.0</version>
4848
</dependency>
4949
<dependency>
5050
<groupId>io.grpc</groupId>
5151
<artifactId>grpc-protobuf</artifactId>
52-
<version>1.78.0</version>
52+
<version>1.81.0</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>io.grpc</groupId>
5656
<artifactId>grpc-stub</artifactId>
57-
<version>1.78.0</version>
57+
<version>1.81.0</version>
5858
</dependency>
5959
<!-- Protobuf dependencies -->
6060
<dependency>

.web/docs/developers/api/kotlin/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ repositories {
1111
}
1212
}
1313

14-
val grpcVersion = "1.78.0"
14+
val grpcVersion = "1.81.0"
1515
val grpcKotlinVersion = "1.5.0"
1616
val connectVersion = "0.7.1"
1717
val protobufVersion = "4.33.4"

.web/docs/developers/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ _If you want to learn how to extend Gate with your own code, you are in the righ
1212
## Starter Template
1313

1414
The starter template is designed to help you get started with your own Gate powered project.
15-
Fork it! 🚀 - [minekube/gate-plugin-template](https://github.com/minekube/gate-plugin-template)
15+
Fork it: [minekube/gate-plugin-template](https://github.com/minekube/gate-plugin-template)
1616

1717
## Any Language
1818

19-
Go to the [API](/developers/api/) 🌐 section to learn how to use Gate's API from any programming language.
19+
Go to the [API](/developers/api/) section to learn how to use Gate's API from any programming language.
2020

2121
## Integration Options
2222

.web/docs/developers/sound.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ Sound sources determine which volume slider in the client controls the sound:
8686
| Player actions | `sound.SourcePlayer` |
8787
| Ambient sounds | `sound.SourceAmbient` |
8888
| Voice chat | `sound.SourceVoice` |
89-
| Interface sounds | `sound.SourceUI` ⚠️ 1.21.5+ |
89+
| Interface sounds | `sound.SourceUI` (1.21.5+) |
9090

9191
### Parsing Sound Sources
9292

0 commit comments

Comments
 (0)