From dfb6e142758bfc9874573983373f08096ffad05a Mon Sep 17 00:00:00 2001 From: Abdo <90919769+Abdo9616@users.noreply.github.com> Date: Sun, 1 Feb 2026 15:08:19 +0200 Subject: [PATCH 1/3] a working version of the mod for 1.21.11 --- Command.bat | 3 + build.gradle | 52 ++- gradle.properties | 16 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 7 +- .../java/com/example/jailmod/JailMod.java | 309 +++++++++--------- src/main/resources/fabric.mod.json | 33 +- 7 files changed, 224 insertions(+), 198 deletions(-) create mode 100644 Command.bat diff --git a/Command.bat b/Command.bat new file mode 100644 index 0000000..c788453 --- /dev/null +++ b/Command.bat @@ -0,0 +1,3 @@ +@echo off +start "" pwsh.exe -NoExit + diff --git a/build.gradle b/build.gradle index 83ee647..3e66b5a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,30 +1,60 @@ plugins { - id 'fabric-loom' version '1.3-SNAPSHOT' + id 'fabric-loom' version "${loom_version}" + id 'maven-publish' +} + +version = project.mod_version +group = project.maven_group + +base { + archivesName = project.archives_base_name } repositories { mavenCentral() - maven { url = "https://maven.fabricmc.net/" } // Repositorio Fabric - maven { url = "https://maven.terraformersmc.com/" } } dependencies { - minecraft "com.mojang:minecraft:1.21.1" + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - mappings "net.fabricmc:yarn:1.21.1+build.1:v2" + // Fabric API + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": inputs.properties.version + } +} - modImplementation "net.fabricmc:fabric-loader:0.14.21" - modImplementation "net.fabricmc.fabric-api:fabric-api:0.91.1+1.20.3" +tasks.withType(JavaCompile).configureEach { + it.options.release = 21 } java { - toolchain { - languageVersion = JavaLanguageVersion.of(21) - } + withSourcesJar() + + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } jar { + inputs.property "archivesName", project.base.archivesName + from("LICENSE") { - rename { "LICENSE_${project.archivesBaseName}" } + rename { "${it}_${inputs.properties.archivesName}"} + } +} + +publishing { + publications { + create("mavenJava", MavenPublication) { + artifactId = project.archives_base_name + from components.java + } } } diff --git a/gradle.properties b/gradle.properties index 19598a1..ab672c6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,16 +2,20 @@ org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true +# IntelliJ IDEA is not yet fully compatible with configuration cache +org.gradle.configuration-cache=false + # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.1 -yarn_mappings=1.21.1+build.3 -loader_version=0.16.2 +minecraft_version=1.21.11 +loader_version=0.18.2 +loom_version=1.14-SNAPSHOT +yarn_mappings=1.21.11+build.4 # Mod Properties -mod_version=1.0.0 +mod_version=1.5 maven_group=com.example -archives_base_name=modid +archives_base_name=jailmod # Dependencies -fabric_version=0.102.1+1.21.1 \ No newline at end of file +fabric_version=0.139.4+1.21.11 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9355b41..37f78a6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle b/settings.gradle index e6d1f41..75c4d72 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,9 +1,10 @@ - pluginManagement { repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } mavenCentral() - maven { url = "https://maven.fabricmc.net/" } - maven { url = "https://maven.fabricmc.net/snapshots/" } gradlePluginPortal() } } \ No newline at end of file diff --git a/src/main/java/com/example/jailmod/JailMod.java b/src/main/java/com/example/jailmod/JailMod.java index 4ad01d7..ffa5619 100644 --- a/src/main/java/com/example/jailmod/JailMod.java +++ b/src/main/java/com/example/jailmod/JailMod.java @@ -13,6 +13,7 @@ import net.fabricmc.fabric.api.event.player.UseEntityCallback; import net.fabricmc.fabric.api.event.player.UseItemCallback; import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; +// import net.fabricmc.fabric.api.permissions.v0.Permissions; // API not found import net.minecraft.registry.RegistryKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.command.CommandManager; @@ -20,11 +21,12 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; import net.minecraft.util.ActionResult; -import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.network.packet.s2c.play.PositionFlag; +// import net.minecraft.util.SpawnPoint; // API not found import java.io.*; import java.util.*; @@ -34,10 +36,10 @@ public class JailMod implements ModInitializer { private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); private static final File CONFIG_FILE = new File("config/jailmod/config.json"); private static final File LANGUAGE_FILE = new File("config/jailmod/language.txt"); - private static final File JAIL_DATA_FILE = new File("config/jailmod/jail_data.json"); // File to save jail status + private static final File JAIL_DATA_FILE = new File("config/jailmod/jail_data.json"); private static Config config; private static Map languageStrings = new HashMap<>(); - private static Map jailedPlayers = new HashMap<>(); // Saved jail status of players + private static Map jailedPlayers = new HashMap<>(); private static MinecraftServer serverInstance; @@ -67,9 +69,10 @@ private static class JailData { public RegistryKey originalSpawnDimension; public boolean hadSpawnPoint; public String reason; - public int remainingTicks; // Remaining time in ticks (1 second = 20 ticks) + public int remainingTicks; - public JailData(UUID playerUUID, BlockPos originalSpawnPos, RegistryKey originalSpawnDimension, boolean hadSpawnPoint, String reason, int remainingTicks) { + public JailData(UUID playerUUID, BlockPos originalSpawnPos, RegistryKey originalSpawnDimension, + boolean hadSpawnPoint, String reason, int remainingTicks) { this.playerUUID = playerUUID; this.originalSpawnPos = originalSpawnPos; this.originalSpawnDimension = originalSpawnDimension; @@ -81,19 +84,17 @@ public JailData(UUID playerUUID, BlockPos originalSpawnPos, RegistryKey o @Override public void onInitialize() { - // Print a green bold message when the mod is loaded ServerLifecycleEvents.SERVER_STARTED.register(server -> { serverInstance = server; Text message = Text.literal("[Jail-Mod] Loaded") .styled(style -> style.withColor(0x00FF00).withBold(true)); - server.getCommandSource().sendFeedback(() -> message, false); + server.sendMessage(message); }); - // Load or create the config, language, and jail status files + loadConfig(); loadLanguage(); loadJailData(); - - // Handle ticks to check for player releases + ServerTickEvents.END_SERVER_TICK.register(server -> { List playersToRelease = new ArrayList<>(); for (Map.Entry entry : jailedPlayers.entrySet()) { @@ -111,11 +112,9 @@ public void onInitialize() { releasePlayer(playerUUID); } }); - - // Block interactions if the player is in jail + registerInteractionListeners(); - - // Handle player login to restore jail status + ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> { ServerPlayerEntity player = handler.getPlayer(); UUID playerUUID = player.getUuid(); @@ -128,116 +127,106 @@ public void onInitialize() { } } }); - - // Register commands + CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { - // Command /jail dispatcher.register(CommandManager.literal("jail") - // Subcommand /jail imprison