Skip to content
This repository was archived by the owner on Feb 15, 2026. It is now read-only.
Merged

V2 #5

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
8873de1
Depend on monkeylib (and thus jankson too)
OffsetMonkey538 Sep 17, 2025
5a564a9
refactorizationing
OffsetMonkey538 Sep 17, 2025
a6d4e63
make loom generate run configuration
OffsetMonkey538 Sep 17, 2025
0480cd6
this is supposedly kind of a thing that maybe makes sense?
OffsetMonkey538 Sep 17, 2025
753b74e
Update Gradle to v9.1.0
OffsetMonkey538 Sep 21, 2025
00ed2f8
Update Loom to v1.11
OffsetMonkey538 Sep 21, 2025
afff12f
Refactor build system
OffsetMonkey538 Sep 21, 2025
1484781
Fix build errors (use monkeylib logger)
OffsetMonkey538 Sep 21, 2025
5999f0d
Update github workflow
OffsetMonkey538 Sep 21, 2025
cb050a6
fix env vars not being used
OffsetMonkey538 Sep 21, 2025
d75252c
imprt
OffsetMonkey538 Sep 21, 2025
c4d5d77
fix build workflow one maybe last time
OffsetMonkey538 Sep 21, 2025
3952f49
I really shouldn't be committing code that's in this state...
OffsetMonkey538 Sep 23, 2025
cd21846
debug logs
OffsetMonkey538 Oct 5, 2025
9e71477
will it work? nooooobodyyy knowssssss!
OffsetMonkey538 Oct 5, 2025
bb5ddaa
fix javadoc error so github actions can actually compile this crap
OffsetMonkey538 Oct 7, 2025
b493907
neoforge version?
OffsetMonkey538 Oct 7, 2025
8e52b9d
depend on newer monkeylib
OffsetMonkey538 Oct 7, 2025
c33be54
depend on newer monkeylib
OffsetMonkey538 Oct 7, 2025
1a52522
depend on newer monkeylib and offsetconfig
OffsetMonkey538 Oct 7, 2025
bcec8d6
depend on newer monkeylib
OffsetMonkey538 Oct 11, 2025
6126daa
redo versioning
OffsetMonkey538 Oct 11, 2025
a938519
Allow disabling vanilla handler
OffsetMonkey538 Oct 20, 2025
e346d4f
Create HttpResponseUtil, add some utils and move sendError methods fr…
OffsetMonkey538 Oct 20, 2025
a009a85
fix javadoc compilation
OffsetMonkey538 Oct 20, 2025
13ed83a
switch to gradle wrapper bin distribution
OffsetMonkey538 Oct 20, 2025
822463a
register simple-server handler type only when examples are enabled
OffsetMonkey538 Oct 20, 2025
7d490a5
some refactoring, static file handler, static directory handler with …
OffsetMonkey538 Oct 23, 2025
b34136e
static directory handler without directory list enabled will try to s…
OffsetMonkey538 Oct 23, 2025
26dbc1d
minify directory list page html
OffsetMonkey538 Oct 23, 2025
c8fbd42
less append calls for rendering directory listing
OffsetMonkey538 Oct 23, 2025
49696d2
refactor rule and handler registries and their (de)serializers
OffsetMonkey538 Oct 23, 2025
20c4662
missing semicolon :concern:
OffsetMonkey538 Oct 23, 2025
3a91a75
hm, i guess intellij may not think they may be final after all
OffsetMonkey538 Oct 23, 2025
38e2ac0
lots o' unused imports
OffsetMonkey538 Oct 23, 2025
6e5157d
create events for registration
OffsetMonkey538 Oct 23, 2025
4973e68
fix no border around "provided" text cell in directory list
OffsetMonkey538 Oct 23, 2025
e952b87
Suppress some warnings
OffsetMonkey538 Oct 23, 2025
f5f088d
atoamtically prefix path rule path with slash
OffsetMonkey538 Oct 23, 2025
e57198a
EVENT_EVENT? yeah that seems correct
OffsetMonkey538 Oct 23, 2025
f6d13dc
update github actions, please tell me this fixes cache not working 🙏
OffsetMonkey538 Oct 23, 2025
1901e70
dummy config
OffsetMonkey538 Oct 23, 2025
89c3c64
Add files via upload
OffsetMonkey538 Oct 23, 2025
1fbcd48
Update monkeylib to v3.0.0-alpha.0.1761395863791+bd100da and add conf…
OffsetMonkey538 Oct 30, 2025
33a37a6
separate jankson configuration into method available from api
OffsetMonkey538 Nov 2, 2025
ebb3215
allow loading routers from disk?
OffsetMonkey538 Nov 2, 2025
5f78b10
add more example stuff.
OffsetMonkey538 Nov 2, 2025
c50e0d4
Respect keep-alive in HttpResponseUtil
OffsetMonkey538 Nov 12, 2025
d227635
Cleanup
OffsetMonkey538 Nov 12, 2025
6e552a1
Update Gradle to v9.3.0
OffsetMonkey538 Jan 23, 2026
4f6abff
Migrate to new buildscripts
OffsetMonkey538 Jan 25, 2026
0ad4ebe
Refactoring
OffsetMonkey538 Jan 25, 2026
6b62339
Refactoring
OffsetMonkey538 Jan 26, 2026
6e6d080
Fix github actions
OffsetMonkey538 Jan 26, 2026
fbaeb00
Move to modded
OffsetMonkey538 Jan 26, 2026
e94f83f
Fix paper runServer task
OffsetMonkey538 Jan 26, 2026
ff0d2bd
include netty-http
OffsetMonkey538 Jan 26, 2026
17c99b8
fix example all command (was meshlib all, now meshlib example all)
OffsetMonkey538 Jan 26, 2026
bd21d44
update monkeylib (now uses offsetutils538 and also jspecify so lots o…
OffsetMonkey538 Jan 26, 2026
284a7c0
Allow hosting on separate port from minecraft, actually use the confi…
OffsetMonkey538 Jan 27, 2026
1493fc4
optimize imports
OffsetMonkey538 Jan 27, 2026
37223ab
update copyright notice
OffsetMonkey538 Jan 27, 2026
41c3543
set mod_website to modrinth page
OffsetMonkey538 Jan 27, 2026
4a26cb6
update monkeylib
OffsetMonkey538 Jan 27, 2026
ccf70b5
Create MESHLibApi, move reload code there, add method to get exposed …
OffsetMonkey538 Jan 28, 2026
a8207ac
cleanup
OffsetMonkey538 Jan 28, 2026
86028b3
fixc github actions
OffsetMonkey538 Jan 29, 2026
bbacf53
use idexed color mode for icon
OffsetMonkey538 Jan 29, 2026
5f40127
Update Loom to v1.15
OffsetMonkey538 Jan 31, 2026
5dd5dd9
Update monkeylib, depend on adventure api
OffsetMonkey538 Jan 31, 2026
2a06f27
Update buildSrc
OffsetMonkey538 Jan 31, 2026
1a435fc
Update monkeylib
OffsetMonkey538 Jan 31, 2026
6cc77dd
Update monkeylib, remove minecraftServerExternalPort config option
OffsetMonkey538 Feb 1, 2026
d34dbc5
Allow copying path of generated example configs
OffsetMonkey538 Feb 1, 2026
dbe96cf
register for telemetry
OffsetMonkey538 Feb 3, 2026
294970c
Run initial reload at server started event. Otherwise server proprtie…
OffsetMonkey538 Feb 7, 2026
7fcfdc1
argh pls work
OffsetMonkey538 Feb 7, 2026
2b7ac87
don't try initializing when config wrobng
OffsetMonkey538 Feb 7, 2026
8cd3423
Merge branch 'master' into v2
OffsetMonkey538 Feb 7, 2026
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
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
<<<<<<< v2
# Set update schedule for GitHub Actions

version: 2
updates:
=======
version: 2
updates:
- package-ecosystem: "github-actions"
Expand All @@ -9,13 +15,19 @@ updates:
master-actions:
patterns:
- "*"
>>>>>>> master

- package-ecosystem: "github-actions"
directory: "/"
schedule:
<<<<<<< v2
# Check for updates to GitHub Actions every week
interval: "daily"
=======
interval: "weekly"
target-branch: "docs/master"
groups:
docs-actions:
patterns:
- "*"
>>>>>>> master
25 changes: 19 additions & 6 deletions .github/workflows/build_artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,41 @@ jobs:

steps:
- uses: actions/checkout@v4
with:
submodules: true

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

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: false

- name: Store short commit hash
run: echo "short_commit_hash=$(git rev-parse --short "$GITHUB_SHA")" >> "$GITHUB_ENV"

- name: Build with Gradle
run: ./gradlew build
env:
PRESERVE_PRERELEASE_VERSION: true
DISABLE_PROPERTIES_UPDATE: true
VERSION_SUFFIX: ${{ env.short_commit_hash }}

- name: Delete common libs
run: rm -r ./common/build/libs
- name: Publish to Maven
run: ./gradlew publishMavenPublicationToOffsetMonkey538Repository
env:
PRESERVE_PRERELEASE_VERSION: true
DISABLE_PROPERTIES_UPDATE: true
VERSION_SUFFIX: ${{ env.short_commit_hash }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: Artifacts
path: ./*/build/libs/
name: Build Artifacts
path: ./loader/*/*/build/libs/
19 changes: 13 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,33 @@ jobs:

steps:
- uses: actions/checkout@v4
with:
submodules: true

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

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: false

- name: Build with Gradle
run: ./gradlew build
env:
IS_RELEASE: true
DISABLE_PROPERTIES_UPDATE: true
VERSION_SUFFIX: ""

- name: Upload to Modrinth
run: ./gradlew modrinth
env:
IS_RELEASE: true
DISABLE_PROPERTIES_UPDATE: true
VERSION_SUFFIX: ""
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
VERSION_NAME: ${{ github.event.release.name }}
VERSION_IS_PRERELEASE: ${{ github.event.release.prerelease }}
Expand All @@ -42,13 +49,13 @@ jobs:
- name: Publish to Maven
run: ./gradlew publishMavenPublicationToOffsetMonkey538Repository
env:
IS_RELEASE: true
DISABLE_PROPERTIES_UPDATE: true
VERSION_SUFFIX: ""
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}

- name: Delete common libs
run: rm -r ./common/build/libs

- name: Upload to GitHub
uses: softprops/action-gh-release@v2
with:
files: ./*/build/libs/*.jar
files: ./loader/*/*/build/libs/*.jar
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "buildSrc"]
path = buildSrc
url = https://github.com/OffsetMods538/multiversion-buildscripts
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2024,2025 OffsetMonkey538
Copyright (c) 2024-2026 OffsetMonkey538

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@ This class has to implement the `HttpHandler` interface, this will look somethin
public class MyHttpHandler implements HttpHandler {

@Override
public void handleRequest(@NotNull ChannelHandlerContext ctx, @NotNull FullHttpRequest request) throws Exception {
public void handleRequest(@NonNull ChannelHandlerContext ctx, @NonNull FullHttpRequest request) throws Exception {
// Logic will go here
}
}
```

Now we'll need to actually implement the handler. You can google "HTTP Netty" for more info on how to handle HTTP requests with Netty.
```java
public void handleRequest(@NotNull ChannelHandlerContext ctx, @NotNull FullHttpRequest request) throws Exception {
public void handleRequest(@NonNull ChannelHandlerContext ctx, @NonNull FullHttpRequest request) throws Exception {
// Write "Hello, World!" to a buffer, encoded in UTF-8
final ByteBuf content = Unpooled.copiedBuffer("Hello, World!", StandardCharsets.UTF_8);
// Create a response with said buffer
Expand Down
158 changes: 65 additions & 93 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,101 +1,73 @@
import dex.plugins.outlet.v2.util.ReleaseType

plugins {
id 'fabric-loom' version '1.9-SNAPSHOT' apply false
id 'io.github.dexman545.outlet' version '1.6.1' apply false
id 'com.modrinth.minotaur' version '2.+' apply false
id 'maven-publish'
}

ext {
debugVersion = System.currentTimeMillis()
id 'multiloader-root'
id 'java'
id 'java-library'
id 'net.neoforged.moddev' version "${neoforged_moddev}" apply false
id 'fabric-loom' version "${fabric_loom}" apply false
id 'io.papermc.paperweight.userdev' version "${papermc_paperweight_userdev}" apply false
id 'xyz.jpenilla.run-paper' version "${jpenilla_run_task}" apply false
id 'com.gradleup.shadow' version "${gradleup_shadow}" apply false
id 'xyz.jpenilla.resource-factory' version "${jpenilla_resource_factory}" apply false
id 'io.github.dexman545.outlet' version "${dexman_outlet}" apply false
id 'com.modrinth.minotaur' version "${modrinth_minotaur}" apply false
id 'hamburg.janove.elevator-music' version "0.1"
}

allprojects {
group = "top.offsetmonkey538.meshlib"
}
//elevatorMusic {
// if (Boolean.parseBoolean(System.getenv("DISABLE_MUSIC"))) return
// waitMusic = file("${rootProject.projectDir}/veryImportant/music.wav")
// successSound = file("${rootProject.projectDir}/veryImportant/done.wav")
//}

subprojects {
apply plugin: "maven-publish"
apply plugin: "java"
apply plugin: "java-library"

archivesBaseName = "mesh-lib-${project.nameSuffix}"
version = "${rootProject.mod_version}+${rootProject.minecraft_version}"

tasks.named("javadoc", Javadoc) {
options.addFileOption('-add-stylesheet', rootProject.file("javadoc-stylesheet.css"))
}

java {
withSourcesJar()
withJavadocJar()
}

jar {
from("${rootProject.projectDir}/LICENSE") {
rename { "${it}" }
}
}

dependencies {
compileOnly "org.jetbrains:annotations:24.0.0"
compileOnly "org.slf4j:slf4j-api:2.0.16"
}

publishing {
repositories {
maven {
name = "OffsetMonkey538"
url = "https://maven.offsetmonkey538.top/releases"
credentials {
username = providers.gradleProperty("OffsetMonkey538Username").getOrElse(System.getenv("MAVEN_USERNAME"))
password = providers.gradleProperty("OffsetMonkey538Password").getOrElse(System.getenv("MAVEN_PASSWORD"))
}
authentication {
basic(BasicAuthentication)
}
}
}
publications {
maven(MavenPublication) {
artifactId = project.archivesBaseName

from(components["java"])
}
}
}
tasks.publishMavenPublicationToMavenLocal.doLast {
if (System.getenv("IS_DEBUG") == "true") System.out.println("Version: " + version)
}
apply plugin: "java-library"

repositories {
mavenCentral()
mavenLocal()
exclusiveContent {
forRepository {
maven {
name = "OffsetMods538"
url = "https://maven.offsetmonkey538.top/releases"
}
}
filter {
includeGroupAndSubgroups "top.offsetmonkey538"
}
}
}

dependencies {
compileOnlyApi "org.jspecify:jspecify:${rootProject.jspecify_version}"
}
}

configure(subprojects.findAll { it.name != "common" }) {
apply plugin: 'com.modrinth.minotaur'
apply plugin: 'io.github.dexman545.outlet'

if (System.getenv("IS_DEBUG") == "true") version = "${version}-${rootProject.debugVersion}"

outlet {
mcVersionRange = rootProject.supported_minecraft_versions
allowedReleaseTypes = Set.of(ReleaseType.RELEASE)
}

modrinth {
token = System.getenv("MODRINTH_TOKEN")
projectId = "mesh-lib"
def customVersionName = System.getenv("VERSION_NAME")
if (customVersionName != null) versionName = customVersionName
versionNumber = "${project.version}"
versionType = "alpha"
def isPreRelease = System.getenv("VERSION_IS_PRERELEASE")
versionType = !"false".equals(isPreRelease) ? "beta" : "release"
additionalFiles = [sourcesJar.archiveFile]
gameVersions = outlet.mcVersions()
syncBodyFrom = rootProject.file("README.md").text
def changelogEnv = System.getenv("VERSION_CHANGELOG")
if (changelogEnv != null) changelog = changelogEnv
}

tasks.modrinth.dependsOn(tasks.modrinthSyncBody)
configure(subprojects.findAll { it.hasProperty("project_name") }) {
apply plugin: "maven-publish"

publishing {
repositories {
maven {
name = "OffsetMonkey538"
url = "https://maven.offsetmonkey538.top/releases"
credentials {
username = providers.gradleProperty("OffsetMonkey538Username").getOrElse(System.getenv("MAVEN_USERNAME"))
password = providers.gradleProperty("OffsetMonkey538Password").getOrElse(System.getenv("MAVEN_PASSWORD"))
}
authentication {
basic(BasicAuthentication)
}
}
}
publications {
register("maven", MavenPublication) {
afterEvaluate {
artifactId base.archivesName.get()
}
groupId "top.offsetmonkey538.meshlib"
from components.java
}
}
}
}
1 change: 1 addition & 0 deletions buildSrc
Submodule buildSrc added at 31a237
23 changes: 17 additions & 6 deletions common/build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
plugins {
id 'com.gradleup.shadow' version '9.0.0-beta4'
id 'maven-publish'
id 'multiloader-base'
}

repositories {
mavenCentral()
maven {
name = "Mojang Libraries"
url = "https://libraries.minecraft.net"
content {
includeGroup "com.mojang"
}
}
}

dependencies {
// Netty
api "io.netty:netty-codec-http:${project.netty_version}"
compileOnlyApi("top.offsetmonkey538.monkeylib538:monkeylib538-common:${rootProject.monkeylib538_version}+common") {
exclude(group: "net.kyori")
}
compileOnlyApi "io.netty:netty-codec-http:${rootProject.netty_version}"
compileOnlyApi "io.netty:netty-transport-classes-epoll:${rootProject.netty_version}"
compileOnly "com.google.guava:guava:${rootProject.guava_version}"
compileOnly "com.mojang:brigadier:${rootProject.brigadier_version}"

compileOnlyApi "net.kyori:adventure-api:${project.adventure_api_version}"
}
tasks.build.dependsOn(shadowJar)
8 changes: 4 additions & 4 deletions common/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## Netty, only used for netty-codec-http. Hopefully this version won't conflict with other versions of Netty
netty_version = 4.1.82.Final
project_name = common


nameSuffix = api
# Dependencies
## Adventure
adventure_api_version = 4.26.1
23 changes: 0 additions & 23 deletions common/src/main/java/top/offsetmonkey538/meshlib/MESHLib.java

This file was deleted.

Loading