Added support for versions 1.19.4 through 1.21.7 (#10)

This commit is contained in:
Laur
2026-03-01 08:15:38 +01:00
committed by GitHub
parent 37815c4858
commit d2676ac1d2
148 changed files with 3831 additions and 39 deletions
+97 -1
View File
@@ -2,7 +2,7 @@ name: Build
on:
push:
branches: [main]
branches: [ main ]
pull_request:
jobs:
@@ -20,6 +20,102 @@ jobs:
- run: ./gradlew build
- uses: actions/upload-artifact@v7
with:
name: anarchymod-mc-1.19.4
path: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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: mc-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
+32
View File
@@ -94,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) |
@@ -106,6 +122,22 @@ jobs:
gh release create "${VERSION}" \
--title "AnarchyMod ${VERSION}" \
--notes "${NOTES}" \
mc-1.19.4/build/libs/anarchymod-mc-1.19.4-${VERSION}.jar \
mc-1.20/build/libs/anarchymod-mc-1.20-${VERSION}.jar \
mc-1.20.1/build/libs/anarchymod-mc-1.20.1-${VERSION}.jar \
mc-1.20.2/build/libs/anarchymod-mc-1.20.2-${VERSION}.jar \
mc-1.20.3/build/libs/anarchymod-mc-1.20.3-${VERSION}.jar \
mc-1.20.4/build/libs/anarchymod-mc-1.20.4-${VERSION}.jar \
mc-1.20.5/build/libs/anarchymod-mc-1.20.5-${VERSION}.jar \
mc-1.20.6/build/libs/anarchymod-mc-1.20.6-${VERSION}.jar \
mc-1.21/build/libs/anarchymod-mc-1.21-${VERSION}.jar \
mc-1.21.1/build/libs/anarchymod-mc-1.21.1-${VERSION}.jar \
mc-1.21.2/build/libs/anarchymod-mc-1.21.2-${VERSION}.jar \
mc-1.21.3/build/libs/anarchymod-mc-1.21.3-${VERSION}.jar \
mc-1.21.4/build/libs/anarchymod-mc-1.21.4-${VERSION}.jar \
mc-1.21.5/build/libs/anarchymod-mc-1.21.5-${VERSION}.jar \
mc-1.21.6/build/libs/anarchymod-mc-1.21.6-${VERSION}.jar \
mc-1.21.7/build/libs/anarchymod-mc-1.21.7-${VERSION}.jar \
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 \
+18 -1
View File
@@ -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
+1 -1
View File
@@ -14,5 +14,5 @@ dependencies {
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
@@ -34,7 +34,8 @@ public class Domains {
}
private static void loadRemote() {
try (HttpClient client = HttpClient.newHttpClient()) {
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(DOMAINS_URL))
.timeout(Duration.ofSeconds(15))
+2
View File
@@ -0,0 +1,2 @@
[.ShellClassInfo]
LocalizedResourceName=AnarchyMod
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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(17)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
withSourcesJar()
}
tasks.jar {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+10
View File
@@ -0,0 +1,10 @@
# Done to increase the memory available to gradle.
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.19.4
loader_version=0.14.21
fabric_api_version=0.76.0+1.19.4
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.19.4
@@ -0,0 +1,18 @@
package net.blockhost.anarchymod;
import io.netty.buffer.Unpooled;
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.minecraft.network.FriendlyByteBuf;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
ClientPlayNetworking.send(JoinPayload.ID, new FriendlyByteBuf(Unpooled.buffer()));
});
}
}
@@ -0,0 +1,8 @@
package net.blockhost.anarchymod;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload {
public static final ResourceLocation ID = new ResourceLocation("anarchymod", "join");
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.add(0, new ServerData("6b6t", "6b6t.org", false));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=17"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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(17)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
withSourcesJar()
}
tasks.jar {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20.1
loader_version=0.18.4
fabric_api_version=0.92.7+1.20.1
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.20.1
@@ -0,0 +1,18 @@
package net.blockhost.anarchymod;
import io.netty.buffer.Unpooled;
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.minecraft.network.FriendlyByteBuf;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
ClientPlayNetworking.send(JoinPayload.ID, new FriendlyByteBuf(Unpooled.buffer()));
});
}
}
@@ -0,0 +1,8 @@
package net.blockhost.anarchymod;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload {
public static final ResourceLocation ID = new ResourceLocation("anarchymod", "join");
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.add(0, new ServerData("6b6t", "6b6t.org", false));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=17"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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(17)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
withSourcesJar()
}
tasks.jar {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20.2
loader_version=0.18.4
fabric_api_version=0.91.6+1.20.2
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.20.2
@@ -0,0 +1,18 @@
package net.blockhost.anarchymod;
import io.netty.buffer.Unpooled;
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.minecraft.network.FriendlyByteBuf;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
ClientPlayNetworking.send(JoinPayload.ID, new FriendlyByteBuf(Unpooled.buffer()));
});
}
}
@@ -0,0 +1,8 @@
package net.blockhost.anarchymod;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload {
public static final ResourceLocation ID = new ResourceLocation("anarchymod", "join");
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.add(0, new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=17"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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(17)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
withSourcesJar()
}
tasks.jar {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20.3
loader_version=0.18.4
fabric_api_version=0.91.1+1.20.3
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.20.3
@@ -0,0 +1,18 @@
package net.blockhost.anarchymod;
import io.netty.buffer.Unpooled;
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.minecraft.network.FriendlyByteBuf;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
ClientPlayNetworking.send(JoinPayload.ID, new FriendlyByteBuf(Unpooled.buffer()));
});
}
}
@@ -0,0 +1,8 @@
package net.blockhost.anarchymod;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload {
public static final ResourceLocation ID = new ResourceLocation("anarchymod", "join");
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.add(0, new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=17"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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(17)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
withSourcesJar()
}
tasks.jar {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20.4
loader_version=0.18.4
fabric_api_version=0.97.3+1.20.4
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.20.4
@@ -0,0 +1,18 @@
package net.blockhost.anarchymod;
import io.netty.buffer.Unpooled;
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.minecraft.network.FriendlyByteBuf;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
ClientPlayNetworking.send(JoinPayload.ID, new FriendlyByteBuf(Unpooled.buffer()));
});
}
}
@@ -0,0 +1,8 @@
package net.blockhost.anarchymod;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload {
public static final ResourceLocation ID = new ResourceLocation("anarchymod", "join");
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.add(0, new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=17"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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 {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20.5
loader_version=0.18.4
fabric_api_version=0.97.8+1.20.5
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.20.5
@@ -0,0 +1,19 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
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());
});
}
}
@@ -0,0 +1,26 @@
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.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;
}
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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 {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20.6
loader_version=0.18.4
fabric_api_version=0.100.8+1.20.6
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.20.6
@@ -0,0 +1,19 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
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());
});
}
}
@@ -0,0 +1,26 @@
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.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;
}
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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(17)
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
withSourcesJar()
}
tasks.jar {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20
loader_version=0.18.4
fabric_api_version=0.83.0+1.20
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.20
@@ -0,0 +1,18 @@
package net.blockhost.anarchymod;
import io.netty.buffer.Unpooled;
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.minecraft.network.FriendlyByteBuf;
public class AnarchyMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientPlayConnectionEvents.JOIN.register((listener, sender, client) -> {
if (client.getCurrentServer() != null && Domains.contains(client.getCurrentServer().ip))
ClientPlayNetworking.send(JoinPayload.ID, new FriendlyByteBuf(Unpooled.buffer()));
});
}
}
@@ -0,0 +1,8 @@
package net.blockhost.anarchymod;
import net.minecraft.resources.ResourceLocation;
public class JoinPayload {
public static final ResourceLocation ID = new ResourceLocation("anarchymod", "join");
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.add(0, new ServerData("6b6t", "6b6t.org", false));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=17"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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 {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.1
loader_version=0.18.4
fabric_api_version=0.116.9+1.21.1
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.21.1
@@ -0,0 +1,19 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
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());
});
}
}
@@ -0,0 +1,26 @@
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.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;
}
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}
@@ -2,9 +2,7 @@ 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 {
@@ -11,7 +11,8 @@ public class JoinPayload implements CustomPacketPayload {
public static final StreamCodec<FriendlyByteBuf, JoinPayload> CODEC =
StreamCodec.of(
(payload, buf) -> {},
(payload, buf) -> {
},
buf -> new JoinPayload()
);
@@ -4,7 +4,9 @@
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": ["6b6t"],
"authors": [
"6b6t"
],
"contact": {
"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",
@@ -2,9 +2,7 @@ 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 {
@@ -11,7 +11,8 @@ public class JoinPayload implements CustomPacketPayload {
public static final StreamCodec<FriendlyByteBuf, JoinPayload> CODEC =
StreamCodec.of(
(payload, buf) -> {},
(payload, buf) -> {
},
buf -> new JoinPayload()
);
@@ -4,7 +4,9 @@
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": ["6b6t"],
"authors": [
"6b6t"
],
"contact": {
"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",
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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 {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.2
loader_version=0.18.4
fabric_api_version=0.106.1+1.21.2
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.21.2
@@ -0,0 +1,19 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
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());
});
}
}
@@ -0,0 +1,26 @@
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.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;
}
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}
+75
View File
@@ -0,0 +1,75 @@
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 {
}
sourceSets {
main {
resources.srcDir(project(":common").sourceSets["main"].resources.srcDirs)
}
}
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.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 {
dependsOn(project(":common").tasks.named("classes"))
from(project(":common").sourceSets["main"].output.classesDirs)
from("LICENSE") {
rename { "${it}_${base.archivesName.get()}" }
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = base.archivesName.get()
from(components["java"])
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.3
loader_version=0.18.4
fabric_api_version=0.114.1+1.21.3
# Mod Properties
maven_group=net.blockhost
archives_base_name=mc-1.21.3
@@ -0,0 +1,19 @@
package net.blockhost.anarchymod;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
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());
});
}
}
@@ -0,0 +1,26 @@
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.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;
}
}
@@ -0,0 +1,21 @@
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("RETURN"), cancellable = true, remap = false)
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
boolean contains = Domains.contains(server);
if (contains) {
cir.setReturnValue(false);
}
}
}
@@ -0,0 +1,29 @@
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("RETURN"))
public void afterLoad(CallbackInfo ci) {
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
}
}
}
@@ -0,0 +1,16 @@
{
"required": true,
"minVersion": "0.8",
"package": "net.blockhost.anarchymod.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"BlockedServersMixin",
"ServerListMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
}
}
@@ -0,0 +1,39 @@
{
"schemaVersion": 1,
"id": "anarchymod",
"version": "${version}",
"name": "AnarchyMod",
"description": "Bypass a potential Mojang blacklist of 6b6t - the biggest anarchy server in the world.",
"authors": [
"6b6t"
],
"contact": {
"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"
},
"license": "MIT",
"icon": "assets/anarchymod/icon.png",
"environment": "client",
"entrypoints": {
"client": [
"net.blockhost.anarchymod.AnarchyMod"
]
},
"mixins": [
"anarchymod.mixins.json"
],
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://6b6t.org/discord"
}
}
},
"depends": {
"fabric": "*",
"fabricloader": ">=${loader_version}",
"minecraft": "${minecraft_version}",
"java": ">=21"
}
}

Some files were not shown because too many files have changed in this diff Show More