19 Commits
Author SHA1 Message Date
AlexProgrammerDEandgithub-actions[bot] b85506f476 chore(release): bump version to 1.1.0 2026-03-01 09:24:23 +00:00
AlexProgrammerDEandClaude Opus 4.6 0a3b019962 refactor: migrate to Stonecutter for multi-version management
Replace 20 separate mc-* submodules and common module with a single
Stonecutter-managed source tree using preprocessor comments. This
eliminates massive code duplication while preserving all version-specific
behavior across 1.19.4 through 1.21.11.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-01 10:06:02 +01:00
LaurandGitHub d2676ac1d2 Added support for versions 1.19.4 through 1.21.7 (#10) 2026-03-01 08:15:38 +01:00
AlexProgrammerDEandgithub-actions[bot] 37815c4858 chore(release): bump version to 1.0.5-SNAPSHOT 2026-02-28 08:04:24 +00:00
AlexProgrammerDEandgithub-actions[bot] d5317783f0 chore(release): bump version to 1.0.4 2026-02-28 08:02:23 +00:00
AlexProgrammerDE 1f623d9501 chore: update homepage url 2026-02-28 09:01:46 +01:00
AlexProgrammerDEandClaude Opus 4.6 16ce2ccbd2 fix: align release and set-version workflows with SkinsRestorer
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-27 21:04:28 +01:00
AlexProgrammerDEandgithub-actions[bot] 4803212976 chore(release): bump version to 1.0.4-SNAPSHOT 2026-02-27 20:00:56 +00:00
AlexProgrammerDEandgithub-actions[bot] 7a0b60c559 chore(release): bump version to 1.0.3 2026-02-27 19:59:08 +00:00
AlexProgrammerDEandClaude Opus 4.6 7a9d02673b fix: add explicit ref to checkout in set-version workflow
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-27 20:58:25 +01:00
AlexProgrammerDEandgithub-actions[bot] 9159dff6ad chore(release): bump version to 1.0.2 2026-02-27 19:54:30 +00:00
AlexProgrammerDE 0fbb447f7a fix: catch even throwables 2026-02-27 20:49:55 +01:00
AlexProgrammerDE e07e8ab1da fix: make lookup more reliable 2026-02-27 20:49:07 +01:00
AlexProgrammerDEandClaude Opus 4.6 35820562be chore: update mod description to reflect 6b6t blacklist bypass purpose
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-27 20:41:49 +01:00
AlexProgrammerDEandClaude Opus 4.6 0fe333b7be fix: merge common resources via sourceSets, bundle only classes in jar
Adds common's resources as a source dir so they're available during
runClient, and bundles only classesDirs in the jar to avoid duplicates.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-27 20:09:27 +01:00
AlexProgrammerDE b46282d294 fix: merge icon resource into runClient runtime 2026-02-27 20:05:42 +01:00
AlexProgrammerDEandClaude Opus 4.6 8ca683768a fix: use @At("RETURN") instead of @At("TAIL") in mixins
TAIL only hooks the last return opcode, missing early returns.
This caused server injection and unblocking to be skipped when
servers.dat doesn't exist or when isBlockedServerHostName
returns early.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-27 19:58:38 +01:00
AlexProgrammerDE c8c7699d9e chore: update .gitignore 2026-02-27 19:46:03 +01:00
AlexProgrammerDEandClaude Opus 4.6 95962939a2 feat: add modmenu discord link and mod icon
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-27 19:45:36 +01:00
67 changed files with 512 additions and 902 deletions
+102 -6
View File
@@ -2,7 +2,7 @@ name: Build
on:
push:
branches: [main]
branches: [ main ]
pull_request:
jobs:
@@ -18,28 +18,124 @@ jobs:
- uses: gradle/actions/setup-gradle@v5
- run: ./gradlew build
- run: ./gradlew chiseledBuild
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.19.4
path: versions/1.19.4/build/libs/anarchymod-mc-1.19.4-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.20
path: versions/1.20/build/libs/anarchymod-mc-1.20-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.20.1
path: versions/1.20.1/build/libs/anarchymod-mc-1.20.1-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.20.2
path: versions/1.20.2/build/libs/anarchymod-mc-1.20.2-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.20.3
path: versions/1.20.3/build/libs/anarchymod-mc-1.20.3-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.20.4
path: versions/1.20.4/build/libs/anarchymod-mc-1.20.4-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.20.5
path: versions/1.20.5/build/libs/anarchymod-mc-1.20.5-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.20.6
path: versions/1.20.6/build/libs/anarchymod-mc-1.20.6-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21
path: versions/1.21/build/libs/anarchymod-mc-1.21-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.1
path: versions/1.21.1/build/libs/anarchymod-mc-1.21.1-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.2
path: versions/1.21.2/build/libs/anarchymod-mc-1.21.2-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.3
path: versions/1.21.3/build/libs/anarchymod-mc-1.21.3-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.4
path: versions/1.21.4/build/libs/anarchymod-mc-1.21.4-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.5
path: versions/1.21.5/build/libs/anarchymod-mc-1.21.5-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.6
path: versions/1.21.6/build/libs/anarchymod-mc-1.21.6-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.7
path: versions/1.21.7/build/libs/anarchymod-mc-1.21.7-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.8
path: mc-1.21.8/build/libs/anarchymod-mc-1.21.8-*.jar
path: versions/1.21.8/build/libs/anarchymod-mc-1.21.8-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.9
path: mc-1.21.9/build/libs/anarchymod-mc-1.21.9-*.jar
path: versions/1.21.9/build/libs/anarchymod-mc-1.21.9-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.10
path: mc-1.21.10/build/libs/anarchymod-mc-1.21.10-*.jar
path: versions/1.21.10/build/libs/anarchymod-mc-1.21.10-*.jar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.21.11
path: mc-1.21.11/build/libs/anarchymod-mc-1.21.11-*.jar
path: versions/1.21.11/build/libs/anarchymod-mc-1.21.11-*.jar
if-no-files-found: error
+59 -24
View File
@@ -1,18 +1,15 @@
name: Release
name: Publish Release
on:
workflow_dispatch:
inputs:
version:
description: "Release version (e.g. 1.1.0)"
description: 'Version to release'
required: true
after-version:
description: "Next snapshot version (e.g. 1.2.0-SNAPSHOT)"
description: 'Snapshot version after release'
required: true
permissions:
contents: write
jobs:
set-release-version:
uses: ./.github/workflows/set-version.yml
@@ -22,28 +19,36 @@ jobs:
build:
needs: set-release-version
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v6
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ github.ref }}
fetch-depth: 0
- uses: actions/setup-java@v5
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v5
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
java-version: '21'
distribution: 'temurin'
- uses: gradle/actions/setup-gradle@v5
- name: Build with Gradle
run: ./gradlew chiseledBuild
- run: ./gradlew build
- name: Generate changelog
- name: Build Changelog
id: changelog
uses: mikepenz/release-changelog-builder-action@v6
with:
commitMode: true
mode: COMMIT
toTag: ${{ github.ref }}
configurationJson: |
{
"template": "#{{CHANGELOG}}",
"commit_template": "- [`#{{SHORT_MERGE_SHA}}`](https://github.com/#{{OWNER}}/#{{REPO}}/commit/#{{MERGE_SHA}}) #{{TITLE}}",
"categories": [
{ "title": "## Features", "labels": ["feat", "feature"] },
{ "title": "## Fixes", "labels": ["fix", "bug"] },
@@ -53,16 +58,14 @@ jobs:
{ "title": "## Build", "labels": ["build", "chore", "ci"] },
{ "title": "## Other", "labels": [] }
],
"empty_template": "no changes",
"label_extractor": [
{
"pattern": "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)",
"pattern": "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)",
"on_property": "title",
"method": "match",
"target": "$1"
}
],
"template": "#{{CHANGELOG}}",
"pr_template": "- [`#{{SHORT_MERGE_SHA}}`](https://github.com/#{{OWNER}}/#{{REPO}}/commit/#{{MERGE_SHA}}) #{{TITLE}}",
"custom_placeholders": [
{
"name": "SHORT_MERGE_SHA",
@@ -91,6 +94,22 @@ jobs:
| Minecraft Version | Download |
|---|---|
| 1.19.4 | [\`anarchymod-mc-1.19.4-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.19.4-${VERSION}.jar) |
| 1.20 | [\`anarchymod-mc-1.20-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.20-${VERSION}.jar) |
| 1.20.1 | [\`anarchymod-mc-1.20.1-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.20.1-${VERSION}.jar) |
| 1.20.2 | [\`anarchymod-mc-1.20.2-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.20.2-${VERSION}.jar) |
| 1.20.3 | [\`anarchymod-mc-1.20.3-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.20.3-${VERSION}.jar) |
| 1.20.4 | [\`anarchymod-mc-1.20.4-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.20.4-${VERSION}.jar) |
| 1.20.5 | [\`anarchymod-mc-1.20.5-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.20.5-${VERSION}.jar) |
| 1.20.6 | [\`anarchymod-mc-1.20.6-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.20.6-${VERSION}.jar) |
| 1.21 | [\`anarchymod-mc-1.21-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21-${VERSION}.jar) |
| 1.21.1 | [\`anarchymod-mc-1.21.1-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.1-${VERSION}.jar) |
| 1.21.2 | [\`anarchymod-mc-1.21.2-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.2-${VERSION}.jar) |
| 1.21.3 | [\`anarchymod-mc-1.21.3-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.3-${VERSION}.jar) |
| 1.21.4 | [\`anarchymod-mc-1.21.4-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.4-${VERSION}.jar) |
| 1.21.5 | [\`anarchymod-mc-1.21.5-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.5-${VERSION}.jar) |
| 1.21.6 | [\`anarchymod-mc-1.21.6-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.6-${VERSION}.jar) |
| 1.21.7 | [\`anarchymod-mc-1.21.7-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.7-${VERSION}.jar) |
| 1.21.8 | [\`anarchymod-mc-1.21.8-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.8-${VERSION}.jar) |
| 1.21.9 | [\`anarchymod-mc-1.21.9-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.9-${VERSION}.jar) |
| 1.21.10 | [\`anarchymod-mc-1.21.10-${VERSION}.jar\`](${DOWNLOAD_URL}/anarchymod-mc-1.21.10-${VERSION}.jar) |
@@ -103,10 +122,26 @@ jobs:
gh release create "${VERSION}" \
--title "AnarchyMod ${VERSION}" \
--notes "${NOTES}" \
mc-1.21.8/build/libs/anarchymod-mc-1.21.8-${VERSION}.jar \
mc-1.21.9/build/libs/anarchymod-mc-1.21.9-${VERSION}.jar \
mc-1.21.10/build/libs/anarchymod-mc-1.21.10-${VERSION}.jar \
mc-1.21.11/build/libs/anarchymod-mc-1.21.11-${VERSION}.jar
versions/1.19.4/build/libs/anarchymod-mc-1.19.4-${VERSION}.jar \
versions/1.20/build/libs/anarchymod-mc-1.20-${VERSION}.jar \
versions/1.20.1/build/libs/anarchymod-mc-1.20.1-${VERSION}.jar \
versions/1.20.2/build/libs/anarchymod-mc-1.20.2-${VERSION}.jar \
versions/1.20.3/build/libs/anarchymod-mc-1.20.3-${VERSION}.jar \
versions/1.20.4/build/libs/anarchymod-mc-1.20.4-${VERSION}.jar \
versions/1.20.5/build/libs/anarchymod-mc-1.20.5-${VERSION}.jar \
versions/1.20.6/build/libs/anarchymod-mc-1.20.6-${VERSION}.jar \
versions/1.21/build/libs/anarchymod-mc-1.21-${VERSION}.jar \
versions/1.21.1/build/libs/anarchymod-mc-1.21.1-${VERSION}.jar \
versions/1.21.2/build/libs/anarchymod-mc-1.21.2-${VERSION}.jar \
versions/1.21.3/build/libs/anarchymod-mc-1.21.3-${VERSION}.jar \
versions/1.21.4/build/libs/anarchymod-mc-1.21.4-${VERSION}.jar \
versions/1.21.5/build/libs/anarchymod-mc-1.21.5-${VERSION}.jar \
versions/1.21.6/build/libs/anarchymod-mc-1.21.6-${VERSION}.jar \
versions/1.21.7/build/libs/anarchymod-mc-1.21.7-${VERSION}.jar \
versions/1.21.8/build/libs/anarchymod-mc-1.21.8-${VERSION}.jar \
versions/1.21.9/build/libs/anarchymod-mc-1.21.9-${VERSION}.jar \
versions/1.21.10/build/libs/anarchymod-mc-1.21.10-${VERSION}.jar \
versions/1.21.11/build/libs/anarchymod-mc-1.21.11-${VERSION}.jar
set-after-version:
needs: build
+18 -13
View File
@@ -1,30 +1,35 @@
name: Set Version
name: set-version
on:
workflow_dispatch:
inputs:
version:
description: "Version to set (e.g. 1.1.0 or 1.2.0-SNAPSHOT)"
description: 'Version to set'
required: true
workflow_call:
inputs:
version:
description: "Version to set"
required: true
type: string
permissions:
contents: write
jobs:
set-version:
name: Set Version
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set version
run: sed -i "s/version = \".*\"/version = \"${{ inputs.version }}\"/" build.gradle.kts
- uses: stefanzweifel/git-auto-commit-action@v7
- name: Checkout repository
uses: actions/checkout@v6
with:
commit_message: "chore(release): bump version to ${{ inputs.version }}"
ref: ${{ github.ref }}
- name: Set Version
run: sed -i "s/mod_version=.*/mod_version=${{ inputs.version }}/" gradle.properties
- name: Commit Version
uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: 'chore(release): bump version to ${{ inputs.version }}'
+29 -9
View File
@@ -1,14 +1,34 @@
.gradle/
build/
out/
# Compiled plugin files
target/
# IDE files
.idea/
.vscode/*
.settings/*
.classpath
.project
.factorypath
# UML
*.plantuml
# Gradle
.kotlin
.gradle
**/build/
!src/**/build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Cache of project
.gradletasknamecache
*.iml
*.ipr
*.iws
*.ipr
.vscode/
.DS_Store
.kotlin/
!gradle/wrapper/gradle-wrapper.jar
**/run/
+19 -2
View File
@@ -3,7 +3,7 @@
[![Build](https://github.com/6b6t/AnarchyMod/actions/workflows/build.yml/badge.svg)](https://github.com/6b6t/AnarchyMod/actions/workflows/build.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
🔓 Client-side Fabric mod for anarchy Minecraft servers — unblocks servers and auto-adds 6b6t to the server list.
🔓 Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.
## Features
@@ -15,6 +15,22 @@
| Minecraft | Module |
|-----------|--------------|
| 1.19.4 | `mc-1.19.4` |
| 1.20 | `mc-1.20` |
| 1.20.1 | `mc-1.20.1` |
| 1.20.2 | `mc-1.20.2` |
| 1.20.3 | `mc-1.20.3` |
| 1.20.4 | `mc-1.20.4` |
| 1.20.5 | `mc-1.20.5` |
| 1.20.6 | `mc-1.20.6` |
| 1.21 | `mc-1.21` |
| 1.21.1 | `mc-1.21.1` |
| 1.21.2 | `mc-1.21.2` |
| 1.21.3 | `mc-1.21.3` |
| 1.21.4 | `mc-1.21.4` |
| 1.21.5 | `mc-1.21.5` |
| 1.21.6 | `mc-1.21.6` |
| 1.21.7 | `mc-1.21.7` |
| 1.21.8 | `mc-1.21.8` |
| 1.21.9 | `mc-1.21.9` |
| 1.21.10 | `mc-1.21.10` |
@@ -22,7 +38,8 @@
## Installation
1. Install [Fabric Loader](https://fabricmc.net/) and [Fabric API](https://modrinth.com/mod/fabric-api) for your Minecraft version
1. Install [Fabric Loader](https://fabricmc.net/) and [Fabric API](https://modrinth.com/mod/fabric-api) for your
Minecraft version
2. Download the matching JAR from [Releases](https://github.com/6b6t/AnarchyMod/releases)
3. Place the JAR in your `.minecraft/mods` folder
+70 -11
View File
@@ -1,20 +1,79 @@
plugins {
id("java")
id("fabric-loom") version "1.15.4"
id("maven-publish")
}
group = "net.blockhost"
version = "1.0.1"
val minecraftVersion = stonecutter.current.project
val loaderVersion = property("loader_version") as String
val fabricApiVersion = property("fabric_api_version") as String
val javaVersion = (property("java_version") as String).toInt()
repositories {
mavenCentral()
version = property("mod_version")!!
group = property("maven_group")!!
base {
archivesName.set("anarchymod-mc-${minecraftVersion}")
}
dependencies {
testImplementation(platform("org.junit:junit-bom:6.0.3"))
testImplementation("org.junit.jupiter:junit-jupiter")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings(loom.officialMojangMappings())
modImplementation("net.fabricmc:fabric-loader:$loaderVersion")
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion")
implementation("com.google.code.gson:gson:2.13.2")
}
tasks.test {
useJUnitPlatform()
}
loom {
runConfigs.all {
ideConfigGenerated(true)
runDir = "../../run"
}
}
tasks.processResources {
inputs.property("version", project.version)
inputs.property("minecraft_version", minecraftVersion)
inputs.property("loader_version", loaderVersion)
inputs.property("java_version", javaVersion)
filteringCharset = "UTF-8"
filesMatching("fabric.mod.json") {
expand(
"version" to project.version,
"minecraft_version" to minecraftVersion,
"loader_version" to loaderVersion,
"java_version" to javaVersion
)
}
filesMatching("anarchymod.mixins.json") {
expand(
"java_version" to javaVersion
)
}
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(javaVersion)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(javaVersion))
withSourcesJar()
}
tasks.jar {
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
-18
View File
@@ -1,18 +0,0 @@
plugins {
id("java-library")
}
group = rootProject.group
version = rootProject.version
repositories {
mavenCentral()
}
dependencies {
implementation("com.google.code.gson:gson:2.13.2")
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
+2
View File
@@ -0,0 +1,2 @@
[.ShellClassInfo]
LocalizedResourceName=AnarchyMod
+2
View File
@@ -1 +1,3 @@
org.gradle.jvmargs=-Xmx1G
mod_version=1.1.0
maven_group=net.blockhost
-72
View File
@@ -1,72 +0,0 @@
plugins {
id("fabric-loom") version "1.15.4"
id("maven-publish")
}
val minecraftVersion = property("minecraft_version") as String
val loaderVersion = property("loader_version") as String
val fabricApiVersion = property("fabric_api_version") as String
version = rootProject.version
group = property("maven_group")!!
base {
archivesName.set("anarchymod-${project.name}")
}
repositories {
}
dependencies {
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings(loom.officialMojangMappings())
modImplementation("net.fabricmc:fabric-loader:$loaderVersion")
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion")
implementation(project(":common"))
}
tasks.named<Jar>("jar") {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output)
}
tasks.processResources {
inputs.property("version", project.version)
inputs.property("minecraft_version", minecraftVersion)
inputs.property("loader_version", loaderVersion)
filteringCharset = "UTF-8"
filesMatching("fabric.mod.json") {
expand(
"version" to project.version,
"minecraft_version" to minecraftVersion,
"loader_version" to loaderVersion,
"fabric_api_version" to fabricApiVersion
)
}
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(21)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
withSourcesJar()
}
tasks.jar {
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
-10
View File
@@ -1,10 +0,0 @@
# Done to increase the memory available to gradle.
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.10
loader_version=0.18.4
fabric_api_version=0.138.4+1.21.10
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.21.10
@@ -1,25 +0,0 @@
package net.blockhost.anarchymod;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload implements CustomPacketPayload {
public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("anarchymod", "join");
public static final StreamCodec<FriendlyByteBuf, JoinPayload> CODEC =
StreamCodec.of(
(payload, buf) -> {},
buf -> new JoinPayload()
);
public static final Type<JoinPayload> TYPE =
new Type<>(ID);
@Override
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}
@@ -1,21 +0,0 @@
package net.blockhost.anarchymod.mixin;
import com.mojang.patchy.BlockedServers;
import net.blockhost.anarchymod.Domains;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(BlockedServers.class)
public class BlockedServersMixin {
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -1,16 +0,0 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
-72
View File
@@ -1,72 +0,0 @@
plugins {
id("fabric-loom") version "1.15.4"
id("maven-publish")
}
val minecraftVersion = property("minecraft_version") as String
val loaderVersion = property("loader_version") as String
val fabricApiVersion = property("fabric_api_version") as String
version = rootProject.version
group = property("maven_group")!!
base {
archivesName.set("anarchymod-${project.name}")
}
repositories {
}
dependencies {
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings(loom.officialMojangMappings())
modImplementation("net.fabricmc:fabric-loader:$loaderVersion")
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion")
implementation(project(":common"))
}
tasks.named<Jar>("jar") {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output)
}
tasks.processResources {
inputs.property("version", project.version)
inputs.property("minecraft_version", minecraftVersion)
inputs.property("loader_version", loaderVersion)
filteringCharset = "UTF-8"
filesMatching("fabric.mod.json") {
expand(
"version" to project.version,
"minecraft_version" to minecraftVersion,
"loader_version" to loaderVersion,
"fabric_api_version" to fabricApiVersion
)
}
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(21)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
withSourcesJar()
}
tasks.jar {
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
-10
View File
@@ -1,10 +0,0 @@
# Done to increase the memory available to gradle.
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.11
loader_version=0.18.4
fabric_api_version=0.141.3+1.21.11
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.21.11
@@ -1,21 +0,0 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.core.registries.BuiltInRegistries;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
PayloadTypeRegistry.playC2S().register(JoinPayload.TYPE, JoinPayload.CODEC);
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
sender.sendPacket(new JoinPayload());
});
}
}
@@ -1,25 +0,0 @@
package net.blockhost.anarchymod;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.Identifier;
public class JoinPayload implements CustomPacketPayload {
public static final Identifier ID = Identifier.fromNamespaceAndPath("anarchymod", "join");
public static final StreamCodec<FriendlyByteBuf, JoinPayload> CODEC =
StreamCodec.of(
(payload, buf) -> {},
buf -> new JoinPayload()
);
public static final Type<JoinPayload> TYPE =
new Type<>(ID);
@Override
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}
@@ -1,21 +0,0 @@
package net.blockhost.anarchymod.mixin;
import com.mojang.patchy.BlockedServers;
import net.blockhost.anarchymod.Domains;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(BlockedServers.class)
public class BlockedServersMixin {
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -1,29 +0,0 @@
package net.blockhost.anarchymod.mixin;
import net.blockhost.anarchymod.Domains;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.client.multiplayer.ServerList;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.List;
@Mixin(ServerList.class)
public class ServerListMixin {
@Shadow
@Final
private List<ServerData> serverList;
@Inject(method = "load", at = @At("TAIL"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -1,16 +0,0 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -1,30 +0,0 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Client-side mod for anarchy Minecraft servers",
"authors": ["6b6t"],
"contact": {
"homepage": "https://6b6t.org",
"issues": "https://github.com/6b6t/AnarchyMod/issues",
"sources": "https://github.com/6b6t/AnarchyMod"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}
-72
View File
@@ -1,72 +0,0 @@
plugins {
id("fabric-loom") version "1.15.4"
id("maven-publish")
}
val minecraftVersion = property("minecraft_version") as String
val loaderVersion = property("loader_version") as String
val fabricApiVersion = property("fabric_api_version") as String
version = rootProject.version
group = property("maven_group")!!
base {
archivesName.set("anarchymod-${project.name}")
}
repositories {
}
dependencies {
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings(loom.officialMojangMappings())
modImplementation("net.fabricmc:fabric-loader:$loaderVersion")
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion")
implementation(project(":common"))
}
tasks.named<Jar>("jar") {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output)
}
tasks.processResources {
inputs.property("version", project.version)
inputs.property("minecraft_version", minecraftVersion)
inputs.property("loader_version", loaderVersion)
filteringCharset = "UTF-8"
filesMatching("fabric.mod.json") {
expand(
"version" to project.version,
"minecraft_version" to minecraftVersion,
"loader_version" to loaderVersion,
"fabric_api_version" to fabricApiVersion
)
}
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(21)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
withSourcesJar()
}
tasks.jar {
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
-10
View File
@@ -1,10 +0,0 @@
# Done to increase the memory available to gradle.
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.8
loader_version=0.18.4
fabric_api_version=0.136.1+1.21.8
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.21.8
@@ -1,21 +0,0 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.core.registries.BuiltInRegistries;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
PayloadTypeRegistry.playC2S().register(JoinPayload.TYPE, JoinPayload.CODEC);
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
sender.sendPacket(new JoinPayload());
});
}
}
@@ -1,25 +0,0 @@
package net.blockhost.anarchymod;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload implements CustomPacketPayload {
public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("anarchymod", "join");
public static final StreamCodec<FriendlyByteBuf, JoinPayload> CODEC =
StreamCodec.of(
(payload, buf) -> {},
buf -> new JoinPayload()
);
public static final Type<JoinPayload> TYPE =
new Type<>(ID);
@Override
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}
@@ -1,29 +0,0 @@
package net.blockhost.anarchymod.mixin;
import net.blockhost.anarchymod.Domains;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.client.multiplayer.ServerList;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.List;
@Mixin(ServerList.class)
public class ServerListMixin {
@Shadow
@Final
private List<ServerData> serverList;
@Inject(method = "load", at = @At("TAIL"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -1,16 +0,0 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -1,30 +0,0 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Client-side mod for anarchy Minecraft servers",
"authors": ["6b6t"],
"contact": {
"homepage": "https://6b6t.org",
"issues": "https://github.com/6b6t/AnarchyMod/issues",
"sources": "https://github.com/6b6t/AnarchyMod"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}
-72
View File
@@ -1,72 +0,0 @@
plugins {
id("fabric-loom") version "1.15.4"
id("maven-publish")
}
val minecraftVersion = property("minecraft_version") as String
val loaderVersion = property("loader_version") as String
val fabricApiVersion = property("fabric_api_version") as String
version = rootProject.version
group = property("maven_group")!!
base {
archivesName.set("anarchymod-${project.name}")
}
repositories {
}
dependencies {
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings(loom.officialMojangMappings())
modImplementation("net.fabricmc:fabric-loader:$loaderVersion")
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion")
implementation(project(":common"))
}
tasks.named<Jar>("jar") {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output)
}
tasks.processResources {
inputs.property("version", project.version)
inputs.property("minecraft_version", minecraftVersion)
inputs.property("loader_version", loaderVersion)
filteringCharset = "UTF-8"
filesMatching("fabric.mod.json") {
expand(
"version" to project.version,
"minecraft_version" to minecraftVersion,
"loader_version" to loaderVersion,
"fabric_api_version" to fabricApiVersion
)
}
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(21)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
withSourcesJar()
}
tasks.jar {
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
-10
View File
@@ -1,10 +0,0 @@
# Done to increase the memory available to gradle.
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.9
loader_version=0.18.4
fabric_api_version=0.134.1+1.21.9
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.21.9
@@ -1,21 +0,0 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.core.registries.BuiltInRegistries;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
PayloadTypeRegistry.playC2S().register(JoinPayload.TYPE, JoinPayload.CODEC);
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
sender.sendPacket(new JoinPayload());
});
}
}
@@ -1,25 +0,0 @@
package net.blockhost.anarchymod;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload implements CustomPacketPayload {
public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("anarchymod", "join");
public static final StreamCodec<FriendlyByteBuf, JoinPayload> CODEC =
StreamCodec.of(
(payload, buf) -> {},
buf -> new JoinPayload()
);
public static final Type<JoinPayload> TYPE =
new Type<>(ID);
@Override
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}
@@ -1,21 +0,0 @@
package net.blockhost.anarchymod.mixin;
import com.mojang.patchy.BlockedServers;
import net.blockhost.anarchymod.Domains;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(BlockedServers.class)
public class BlockedServersMixin {
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -1,29 +0,0 @@
package net.blockhost.anarchymod.mixin;
import net.blockhost.anarchymod.Domains;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.client.multiplayer.ServerList;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.List;
@Mixin(ServerList.class)
public class ServerListMixin {
@Shadow
@Final
private List<ServerData> serverList;
@Inject(method = "load", at = @At("TAIL"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -1,30 +0,0 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Client-side mod for anarchy Minecraft servers",
"authors": ["6b6t"],
"contact": {
"homepage": "https://6b6t.org",
"issues": "https://github.com/6b6t/AnarchyMod/issues",
"sources": "https://github.com/6b6t/AnarchyMod"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}
+8 -2
View File
@@ -1,12 +1,18 @@
{
"extends": ["config:base", "group:allNonMajor", ":semanticCommits"],
"extends": [
"config:base",
"group:allNonMajor",
":semanticCommits"
],
"baseBranches": [
"main"
],
"labels": [
"enhancement"
],
"reviewers": ["xymb-endcrystalme"],
"reviewers": [
"xymb-endcrystalme"
],
"packageRules": [
{
"matchUpdateTypes": [
+16 -10
View File
@@ -1,17 +1,23 @@
rootProject.name = "AnarchyMod"
pluginManagement {
repositories {
maven {
url = uri("https://maven.fabricmc.net/")
}
maven("https://maven.fabricmc.net/")
maven("https://maven.kikugie.dev/releases")
gradlePluginPortal()
}
}
plugins {
id("dev.kikugie.stonecutter") version "0.8.3"
}
include("common")
include("mc-1.21.8")
include("mc-1.21.9")
include("mc-1.21.10")
include("mc-1.21.11")
stonecutter {
create(rootProject) {
versions(
"1.19.4", "1.20", "1.20.1", "1.20.2", "1.20.3", "1.20.4",
"1.20.5", "1.20.6",
"1.21", "1.21.1", "1.21.2", "1.21.3", "1.21.4",
"1.21.5", "1.21.6", "1.21.7",
"1.21.8", "1.21.9", "1.21.10", "1.21.11"
)
}
}
@@ -1,21 +1,29 @@
package net.blockhost.anarchymod;
//? if <1.20.5 {
/*import io.netty.buffer.Unpooled;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.network.FriendlyByteBuf;
*///?} else {
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
//?}
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.core.registries.BuiltInRegistries;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
//? if >=1.20.5 {
PayloadTypeRegistry.playC2S().register(JoinPayload.TYPE, JoinPayload.CODEC);
//?}
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
//? if <1.20.5 {
/*ClientPlayNetworking.send(JoinPayload.ID, new FriendlyByteBuf(Unpooled.buffer()));
*///?} else {
sender.sendPacket(new JoinPayload());
//?}
});
}
}
@@ -8,24 +8,28 @@ import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import java.util.logging.Logger;
public class Domains {
private static final Logger LOGGER = Logger.getLogger("AnarchyMod-Domains");
private static final String DOMAINS_URL = "https://www.6b6t.org/api/anarchy-mod.json";
private static final Set<String> DEFAULT = Set.of(
"*.6b6t.org", "*.10b10t.org", "*.6b6t.cc", "*.6b6t.me",
"*.7b7t.me", "*.8b8t.org", "*.alacity.net",
"*.anarchypvp.pw", "*.l2x9.org", "*.simpleanarchy.org"
"*.6b6t.org", "*.10b10t.org", "*.6b6t.cc", "*.6b6t.me",
"*.7b7t.me", "*.8b8t.org", "*.alacity.net",
"*.anarchypvp.pw", "*.l2x9.org", "*.simpleanarchy.org"
);
private static final Set<String> domains = new HashSet<>();
private static final Gson gson = new Gson();
static {
DEFAULT.forEach(d -> domains.add(d.toLowerCase()));
DEFAULT.forEach(d -> domains.add(d.toLowerCase(Locale.ROOT)));
loadRemote();
}
@@ -33,29 +37,29 @@ public class Domains {
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(DOMAINS_URL))
.GET()
.build();
.uri(URI.create(DOMAINS_URL))
.timeout(Duration.ofSeconds(15))
.GET()
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JsonObject json = gson.fromJson(response.body(), JsonObject.class);
JsonArray array = json.getAsJsonArray("domains");
if (array == null) return;
array.forEach(element ->
domains.add(element.getAsString().toLowerCase())
domains.add(element.getAsString().toLowerCase(Locale.ROOT))
);
} catch (Exception ignored) {
} catch (Throwable t) {
LOGGER.warning("Failed to load domains from remote, using defaults: " + t.getMessage());
}
}
public static boolean contains(String input) {
if (input == null) return false;
String domain = input.toLowerCase();
String domain = input.toLowerCase(Locale.ROOT);
if (domain.startsWith("*.")) {
domain = domain.substring(2);
@@ -67,7 +71,6 @@ public class Domains {
}
for (String entry : domains) {
if (entry.startsWith("*.")) {
String base = entry.substring(2);
if (domain.equals(base) || domain.endsWith("." + base)) {
@@ -0,0 +1,45 @@
package net.blockhost.anarchymod;
//? if <1.20.5 {
/*import net.minecraft.resources.ResourceLocation;
public class JoinPayload {
public static final ResourceLocation ID = new ResourceLocation("anarchymod", "join");
}
*///?} else {
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
//? if >=1.21.11 {
import net.minecraft.resources.Identifier;
//? } else {
/*import net.minecraft.resources.ResourceLocation;
*///?}
public class JoinPayload implements CustomPacketPayload {
//? if >=1.21.11 {
public static final Identifier ID = Identifier.fromNamespaceAndPath("anarchymod", "join");
//? } elif >=1.21.7 {
/*public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("anarchymod", "join");
*///?} else {
/*public static final ResourceLocation ID = ResourceLocation.tryBuild("anarchymod", "join");
*///?}
public static final StreamCodec<FriendlyByteBuf, JoinPayload> CODEC =
StreamCodec.of(
(payload, buf) -> {
},
buf -> new JoinPayload()
);
public static final Type<JoinPayload> TYPE =
new Type<>(ID);
@Override
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}
//?}
@@ -10,12 +10,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(BlockedServers.class)
public class BlockedServersMixin {
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
@Inject(method = "isBlockedServerHostName", at = @At("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -19,11 +19,16 @@ public class ServerListMixin {
@Final
private List<ServerData> serverList;
@Inject(method = "load", at = @At("TAIL"))
@Inject(method = "load", at = @At("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
//? if <1.20.2 {
/*serverList.add(0, new ServerData("6b6t", "6b6t.org", false));
*///? } elif <1.20.5 {
/*serverList.add(0, new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
*///?} else {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
//?}
}
}
}
@@ -2,7 +2,7 @@
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"compatibilityLevel": "JAVA_${java_version}",
"client": [
"BlockedServersMixin",
"ServerListMixin"
Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

@@ -3,10 +3,12 @@
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Client-side mod for anarchy Minecraft servers",
"authors": ["6b6t"],
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"homepage": "https://6b6t.org",
"homepage": "https://www.6b6t.org/?utm_source=anarchymod&utm_medium=mod_menu&utm_campaign=evergreen_website&utm_content=description_link",
"issues": "https://github.com/6b6t/AnarchyMod/issues",
"sources": "https://github.com/6b6t/AnarchyMod"
},
@@ -21,10 +23,17 @@
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
"java": ">=${java_version}"
}
}
+10
View File
@@ -0,0 +1,10 @@
plugins {
id("dev.kikugie.stonecutter")
}
stonecutter active "1.21.11"
tasks.register("chiseledBuild") {
group = "project"
dependsOn(stonecutter.tasks.named("build"))
}
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.19.4
loader_version=0.14.21
fabric_api_version=0.76.0+1.19.4
java_version=17
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.20.1
loader_version=0.18.4
fabric_api_version=0.92.7+1.20.1
java_version=17
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.20.2
loader_version=0.18.4
fabric_api_version=0.91.6+1.20.2
java_version=17
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.20.3
loader_version=0.18.4
fabric_api_version=0.91.1+1.20.3
java_version=17
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.20.4
loader_version=0.18.4
fabric_api_version=0.97.3+1.20.4
java_version=17
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.20.5
loader_version=0.18.4
fabric_api_version=0.97.8+1.20.5
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.20.6
loader_version=0.18.4
fabric_api_version=0.100.8+1.20.6
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.20
loader_version=0.18.4
fabric_api_version=0.83.0+1.20
java_version=17
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.1
loader_version=0.18.4
fabric_api_version=0.116.9+1.21.1
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.10
loader_version=0.18.4
fabric_api_version=0.138.4+1.21.10
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.11
loader_version=0.18.4
fabric_api_version=0.141.3+1.21.11
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.2
loader_version=0.18.4
fabric_api_version=0.106.1+1.21.2
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.3
loader_version=0.18.4
fabric_api_version=0.114.1+1.21.3
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.4
loader_version=0.18.4
fabric_api_version=0.119.4+1.21.4
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.5
loader_version=0.18.4
fabric_api_version=0.128.2+1.21.5
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.6
loader_version=0.18.4
fabric_api_version=0.128.2+1.21.6
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.7
loader_version=0.18.4
fabric_api_version=0.129.0+1.21.7
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.8
loader_version=0.18.4
fabric_api_version=0.136.1+1.21.8
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21.9
loader_version=0.18.4
fabric_api_version=0.134.1+1.21.9
java_version=21
+4
View File
@@ -0,0 +1,4 @@
minecraft_version=1.21
loader_version=0.18.4
fabric_api_version=0.102.0+1.21
java_version=21