Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .github/workflows/auto-bump-hytale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Auto-bump Hytale Server

on:
schedule:
- cron: '17 6 * * *'
workflow_dispatch:

permissions:
contents: write

jobs:
bump:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven

- name: Resolve latest Hytale Server release
id: latest
run: |
set -euo pipefail
curl -sfL -o /tmp/metadata.xml \
https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml
LATEST=$(python3 -c "import xml.etree.ElementTree as E; print(E.parse('/tmp/metadata.xml').getroot().findtext('versioning/release'))")
if [ -z "$LATEST" ]; then
echo "Failed to parse <release> from maven-metadata.xml" >&2
exit 1
fi
echo "version=$LATEST" >> "$GITHUB_OUTPUT"

- name: Read current property
id: current
run: |
set -euo pipefail
CURRENT=$(python3 -c "import xml.etree.ElementTree as E; ns={'m':'http://maven.apache.org/POM/4.0.0'}; print(E.parse('pom.xml').getroot().find('m:properties/m:hytale.server.version', ns).text)")
echo "version=$CURRENT" >> "$GITHUB_OUTPUT"

- name: Skip if unchanged
if: steps.latest.outputs.version == steps.current.outputs.version
run: echo "Already on ${{ steps.current.outputs.version }}"

- name: Update pom.xml
if: steps.latest.outputs.version != steps.current.outputs.version
run: |
sed -i "s|<hytale.server.version>[^<]*</hytale.server.version>|<hytale.server.version>${{ steps.latest.outputs.version }}</hytale.server.version>|" pom.xml

- name: Verify build
if: steps.latest.outputs.version != steps.current.outputs.version
run: mvn clean package -B -ntp -DskipTests

- name: Commit and push
if: steps.latest.outputs.version != steps.current.outputs.version
run: |
set -euo pipefail
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
git add pom.xml
git commit -m "chore: bump Hytale server to ${{ steps.latest.outputs.version }}"
git push
5 changes: 0 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,6 @@ jobs:
distribution: 'temurin'
cache: maven

- name: Download HytaleServer
run: |
mkdir -p libs
curl -sfL -o libs/HytaleServer.jar "${{ secrets.HYTALE_SERVER_JAR_URL }}"

- name: Build with Maven
run: mvn clean package -B -DskipTests

Expand Down
2 changes: 2 additions & 0 deletions docs/PROTOCOL.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ Offset Size Field
... 2 Port (uint16) - only if FLAG_HAS_ADDRESS
```

> **Protocol Hash**: opaque identifier of the Hytale server's wire protocol, used by clients to detect protocol mismatch. Treat as an opaque string; do not parse. Since Hytale Update 4 (2026-03-26) this is an 8-character uppercase hex encoding of `ProtocolSettings.PROTOCOL_CRC` (CRC32). Earlier servers provided a different hash string. The field name is retained for wire compatibility.

### Player List (Type 0x0002)

Returned for PLAYERS queries.
Expand Down
44 changes: 39 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,27 @@
<version>${revision}</version>

<properties>
<revision>2.0.1-SNAPSHOT</revision>
<revision>2.0.2-SNAPSHOT</revision>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lettuce.version>6.3.2.RELEASE</lettuce.version>
<hytale.server.version>2026.03.26-89796e57b</hytale.server.version>
</properties>

<repositories>
<repository>
<id>hytale-release</id>
<url>https://maven.hytale.com/release</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>com.hypixel.hytale</groupId>
<artifactId>hytale-server</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/HytaleServer.jar</systemPath>
<artifactId>Server</artifactId>
<version>${hytale.server.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
Expand All @@ -42,6 +49,33 @@

<build>
<plugins>
<plugin>
<groupId>io.github.projectunified</groupId>
<artifactId>hytale-manifest-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>generateManifest</goal>
</goals>
</execution>
</executions>
<configuration>
<main>dev.hytaleone.query.OneQueryPlugin</main>
<group>HytaleOne</group>
<name>OneQuery</name>
<website>https://hytale.one</website>
<description>Lightweight UDP query protocol for server status. Supports multi-server networks with combined player counts and player lists.</description>
<serverVersion>${hytale.server.version}</serverVersion>
<authors>
<author>
<name>HytaleOne</name>
<url>https://hytale.one</url>
</author>
</authors>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public static int getProtocolVersion() {

@Nonnull
public static String getProtocolHash() {
return ProtocolSettings.PROTOCOL_HASH;
return String.format("%08X", ProtocolSettings.PROTOCOL_CRC);
}

@Nonnull
Expand Down
15 changes: 0 additions & 15 deletions src/main/resources/manifest.json

This file was deleted.