From 95aaea22cbd81c8c8743909517595cadfb354542 Mon Sep 17 00:00:00 2001 From: getagripgal Date: Tue, 17 Feb 2026 00:18:53 +0100 Subject: [PATCH] Downgrade to 1.21.1. Spawn coordinates stored as doubles --- gradle.properties | 6 +-- .../persistentspawn/CommandHandlers.java | 12 ++--- .../persistentspawn/EventHandlers.java | 3 +- .../persistentspawn/PersistentSpawn.java | 20 ++++--- .../PersistentSpawnConfig.java | 12 ++--- .../PersistentSpawnManager.java | 17 +++--- src/main/resources/fabric.mod.json | 54 +++++++++---------- 7 files changed, 62 insertions(+), 62 deletions(-) diff --git a/gradle.properties b/gradle.properties index 340890d..b063e4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,12 @@ org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true org.gradle.configuration-cache=false -minecraft_version=1.21.11 +minecraft_version=1.21.1 loader_version=0.18.4 loom_version=1.14-SNAPSHOT -mod_version=1.0.0 +mod_version=2.0.0 maven_group=nl.getagripgal.persistentspawn archives_base_name=persistentspawn -fabric_api_version=0.140.2+1.21.11 \ No newline at end of file +fabric_api_version=0.116.8+1.21.1 \ No newline at end of file diff --git a/src/main/java/nl/getagripgal/persistentspawn/CommandHandlers.java b/src/main/java/nl/getagripgal/persistentspawn/CommandHandlers.java index 36d32dd..c5d89de 100644 --- a/src/main/java/nl/getagripgal/persistentspawn/CommandHandlers.java +++ b/src/main/java/nl/getagripgal/persistentspawn/CommandHandlers.java @@ -3,11 +3,11 @@ package nl.getagripgal.persistentspawn; import com.mojang.brigadier.context.CommandContext; import net.minecraft.commands.CommandSourceStack; -import net.minecraft.commands.arguments.coordinates.Coordinates; +import net.minecraft.commands.arguments.coordinates.Vec3Argument; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; -import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.phys.Vec3; /** @@ -21,15 +21,13 @@ public class CommandHandlers { * @return The exit code. */ public static int setPersistentSpawn(CommandContext context) { - Coordinates positionArgument = context.getArgument("position", Coordinates.class); - Identifier dimensionArgument = context.getArgument("dimension", Identifier.class); + Vec3 position = Vec3Argument.getVec3(context, "position"); + ResourceLocation dimensionArgument = context.getArgument("dimension", ResourceLocation.class); - PersistentSpawnManager.CurrentSpawn = positionArgument.getPosition(context.getSource()); + PersistentSpawnManager.CurrentSpawn = position; PersistentSpawnManager.Dimension = ResourceKey.create(Registries.DIMENSION, dimensionArgument); PersistentSpawnManager.syncToDisk(); - - Vec3 position = PersistentSpawnManager.CurrentSpawn; context.getSource() .sendSuccess( () -> Component.literal("Set spawn at %s in %s".formatted(position.toString(), diff --git a/src/main/java/nl/getagripgal/persistentspawn/EventHandlers.java b/src/main/java/nl/getagripgal/persistentspawn/EventHandlers.java index 7433ae4..7ff5b76 100644 --- a/src/main/java/nl/getagripgal/persistentspawn/EventHandlers.java +++ b/src/main/java/nl/getagripgal/persistentspawn/EventHandlers.java @@ -1,6 +1,7 @@ package nl.getagripgal.persistentspawn; import java.util.Set; + import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -21,6 +22,6 @@ public class EventHandlers { ServerLevel level = (ServerLevel) player.level().getServer().getLevel(PersistentSpawnManager.Dimension); player.teleportTo(level, PersistentSpawnManager.CurrentSpawn.x, PersistentSpawnManager.CurrentSpawn.y, - PersistentSpawnManager.CurrentSpawn.z, Set.of(), 0.0f, 0.0f, false); + PersistentSpawnManager.CurrentSpawn.z, Set.of(), 0.0f, 0.0f); } } diff --git a/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawn.java b/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawn.java index 9fc6eef..be4554b 100644 --- a/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawn.java +++ b/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawn.java @@ -1,17 +1,16 @@ package nl.getagripgal.persistentspawn; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.mojang.brigadier.arguments.BoolArgumentType; + import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.DimensionArgument; import net.minecraft.commands.arguments.coordinates.Vec3Argument; -import net.minecraft.server.permissions.Permissions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.mojang.brigadier.arguments.BoolArgumentType; /** * A very simple mod that implements the functionality of spawning a player at @@ -21,6 +20,11 @@ public class PersistentSpawn implements ModInitializer { public static final String MOD_ID = "persistentspawn"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + /** + * The permission level for the operator. + */ + private static final int PERMISSION_OP = 2; + @Override public void onInitialize() { registerCommands(); @@ -34,14 +38,14 @@ public class PersistentSpawn implements ModInitializer { private void registerCommands() { CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher .register(Commands.literal("setpersistentspawn") - .requires(source -> source.permissions().hasPermission(Permissions.COMMANDS_MODERATOR)) + .requires(source -> source.hasPermission(PERMISSION_OP)) .then(Commands.argument("position", Vec3Argument.vec3()) .then(Commands.argument("dimension", DimensionArgument.dimension()) .executes(CommandHandlers::setPersistentSpawn))))); CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher .register(Commands.literal("setpersistentspawnenabled") - .requires(source -> source.permissions().hasPermission(Permissions.COMMANDS_MODERATOR)) + .requires(source -> source.hasPermission(PERMISSION_OP)) .then(Commands.argument("enable", BoolArgumentType.bool()) .executes(CommandHandlers::enablePersistentSpawn)))); } diff --git a/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnConfig.java b/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnConfig.java index e98b099..2f96f4e 100644 --- a/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnConfig.java +++ b/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnConfig.java @@ -4,17 +4,17 @@ package nl.getagripgal.persistentspawn; * The spawn config as stored on disk. */ public class PersistentSpawnConfig { - public int x; - public int y; - public int z; + public double x; + public double y; + public double z; public String dimension; public boolean enabled; public static PersistentSpawnConfig defaultConfig() { PersistentSpawnConfig config = new PersistentSpawnConfig(); - config.x = 0; - config.y = 100; - config.z = 0; + config.x = 0.0; + config.y = 100.0; + config.z = 0.0; config.dimension = "minecraft:overworld"; config.enabled = false; return config; diff --git a/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnManager.java b/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnManager.java index 6b4712b..ec113cd 100644 --- a/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnManager.java +++ b/src/main/java/nl/getagripgal/persistentspawn/PersistentSpawnManager.java @@ -1,13 +1,14 @@ package nl.getagripgal.persistentspawn; import java.io.File; +import java.io.IOException; import com.moandjiezana.toml.Toml; import com.moandjiezana.toml.TomlWriter; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; @@ -44,7 +45,7 @@ public class PersistentSpawnManager { PersistentSpawnConfig config = toml.to(PersistentSpawnConfig.class); CurrentSpawn = new Vec3(config.x, config.y, config.z); - Dimension = ResourceKey.create(Registries.DIMENSION, Identifier.parse(config.dimension)); + Dimension = ResourceKey.create(Registries.DIMENSION, ResourceLocation.parse(config.dimension)); Enabled = config.enabled; } catch (Exception e) { PersistentSpawn.LOGGER.error( @@ -52,7 +53,7 @@ public class PersistentSpawnManager { e); PersistentSpawnConfig defaultConfig = PersistentSpawnConfig.defaultConfig(); CurrentSpawn = new Vec3(defaultConfig.x, defaultConfig.y, defaultConfig.z); - Dimension = ResourceKey.create(Registries.DIMENSION, Identifier.parse(defaultConfig.dimension)); + Dimension = ResourceKey.create(Registries.DIMENSION, ResourceLocation.parse(defaultConfig.dimension)); Enabled = defaultConfig.enabled; } } @@ -63,15 +64,15 @@ public class PersistentSpawnManager { public static void syncToDisk() { try { PersistentSpawnConfig config = new PersistentSpawnConfig(); - config.x = (int) CurrentSpawn.x; - config.y = (int) CurrentSpawn.y; - config.z = (int) CurrentSpawn.z; - config.dimension = Dimension.identifier().toString(); + config.x = CurrentSpawn.x; + config.y = CurrentSpawn.y; + config.z = CurrentSpawn.z; + config.dimension = Dimension.location().toString(); config.enabled = Enabled; TomlWriter writer = new TomlWriter(); writer.write(config, new File(CONFIG_FILE)); - } catch (Exception e) { + } catch (IOException e) { PersistentSpawn.LOGGER.error("Failed to save persistent spawn config to disk.", e); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e92856c..c629693 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,30 +1,26 @@ { - "schemaVersion": 1, - "id": "spawnpointonjoin", - "version": "1.0.0", - "name": "SpawnpointOnJoin", - "description": "A very simple mod that implements the functionality of spawning a player at the same location on every join.", - "authors": [ - "GetAGripGal" - ], - "contact": { - "homepage": "https://fabricmc.net/", - "sources": "https://github.com/FabricMC/fabric-example-mod" - }, - "license": "CC0-1.0", - "icon": "assets/spawnpointonjoin/icon.png", - "environment": "*", - "entrypoints": { - "main": [ - "nl.getagripgal.persistentspawn.PersistentSpawn" - ], - "client": [] - }, - "mixins": [], - "depends": { - "fabricloader": ">=0.18.4", - "minecraft": "~1.21.11", - "java": ">=21", - "fabric-api": "*" - } -} \ No newline at end of file + "schemaVersion": 1, + "id": "spawnpointonjoin", + "version": "1.0.0", + "name": "SpawnpointOnJoin", + "description": "A very simple mod that implements the functionality of spawning a player at the same location on every join.", + "authors": ["GetAGripGal"], + "contact": { + "homepage": "https://fabricmc.net/", + "sources": "https://github.com/FabricMC/fabric-example-mod" + }, + "license": "CC0-1.0", + "icon": "assets/spawnpointonjoin/icon.png", + "environment": "*", + "entrypoints": { + "main": ["nl.getagripgal.persistentspawn.PersistentSpawn"], + "client": [] + }, + "mixins": [], + "depends": { + "fabricloader": ">=0.18.4", + "minecraft": "~1.21.1", + "java": ">=21", + "fabric-api": "*" + } +}