From 5bb7fbe3de2b73c521d34f50df8e5202bdc7b79c Mon Sep 17 00:00:00 2001 From: tildejustin Date: Fri, 28 Feb 2025 09:49:28 -0500 Subject: [PATCH 1/3] add bounds checks to x coordinate --- .../set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 10 +++++++--- .../set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 5 +++-- .../set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 5 +++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/1.13.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java b/1.13.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java index eb096f5..b2d4141 100644 --- a/1.13.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java +++ b/1.13.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java @@ -45,10 +45,14 @@ private int setSpawn(Random random, int bounds, Operation original, @Lo return originalResult; } - // Transform x and z coordinates into correct Random#nextInt result. - int result = ((MathHelper.floor(seedObject.getX()) - worldSpawn.getX()) + spawnRadius) + ((MathHelper.floor(seedObject.getZ()) - worldSpawn.getZ()) + spawnRadius) * (spawnRadius * 2 + 1); + // Transform x and z coordinates into corresponding Random#nextInt result. + int spawnDiameter = spawnRadius * 2 + 1; + int x = MathHelper.floor(seedObject.getX()); + int z = MathHelper.floor(seedObject.getZ()); + int xLocal = x - worldSpawn.getX() + spawnRadius; + int result = xLocal + (z - worldSpawn.getZ() + spawnRadius) * spawnDiameter; - if (result >= 0 && result < bounds) { + if (xLocal >=0 && xLocal < spawnDiameter && result >= 0 && result < bounds) { // we save the original result in case the set spawn is invalid, see fallbackOnInvalidSpawn System.out.println("Setting spawn"); originalRandomResult.set(originalResult); diff --git a/1.14-1.18.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java b/1.14-1.18.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java index caa4f3a..38d5899 100644 --- a/1.14-1.18.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java +++ b/1.14-1.18.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java @@ -47,9 +47,10 @@ private int setSpawn(Random random, int bounds, Operation original, @Lo int spawnDiameter = spawnRadius * 2 + 1; int x = MathHelper.floor(seedObject.getX()); int z = MathHelper.floor(seedObject.getZ()); - int result = (x - worldSpawn.getX() + spawnRadius) + (z - worldSpawn.getZ() + spawnRadius) * spawnDiameter; + int xLocal = x - worldSpawn.getX() + spawnRadius; + int result = xLocal + (z - worldSpawn.getZ() + spawnRadius) * spawnDiameter; - if (result >= 0 && result < bounds) { + if (xLocal >=0 && xLocal < spawnDiameter && result >= 0 && result < bounds) { // we save the original result in case the set spawn is invalid, see fallbackOnInvalidSpawn System.out.println("Setting spawn"); originalRandomResult.set(originalResult); diff --git a/1.19-1.21.4/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java b/1.19-1.21.4/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java index 4400d35..03f4b9e 100644 --- a/1.19-1.21.4/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java +++ b/1.19-1.21.4/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java @@ -50,9 +50,10 @@ private int setSpawn(Random random, int bounds, Operation original, @Lo int spawnDiameter = spawnRadius * 2 + 1; int x = MathHelper.floor(seedObject.getX()); int z = MathHelper.floor(seedObject.getZ()); - int result = (x - worldSpawn.getX() + spawnRadius) + (z - worldSpawn.getZ() + spawnRadius) * spawnDiameter; + int xLocal = x - worldSpawn.getX() + spawnRadius; + int result = xLocal + (z - worldSpawn.getZ() + spawnRadius) * spawnDiameter; - if (result >= 0 && result < bounds) { + if (xLocal >=0 && xLocal < spawnDiameter && result >= 0 && result < bounds) { // we save the original result in case the set spawn is invalid, see fallbackOnInvalidSpawn originalRandomResult.set(originalResult); System.out.println("Setting spawn"); From 27517404e6f3214edfa0ffe6861d62c21254f37f Mon Sep 17 00:00:00 2001 From: tildejustin Date: Fri, 28 Feb 2025 10:42:52 -0500 Subject: [PATCH 2/3] fix color --- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 4 +++- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 2 +- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 3 ++- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 3 ++- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 2 +- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 2 +- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 4 +++- .../java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java | 4 +++- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/1.12/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java b/1.12/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java index 08a2acf..d39e92b 100644 --- a/1.12/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java +++ b/1.12/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java @@ -69,7 +69,9 @@ private void failOnNonRandomSpawns(CallbackInfo ci, @Share("seed") LocalRef cir, @Share( @Inject(method = "onSpawn", at = @At("TAIL")) private void sendErrorMessage(CallbackInfo ci) { if (this.setSpawnError != null) { - this.sendMessage(Text.literal("§c" + this.setSpawnError + " This run is not verifiable."), false); + this.sendMessage(Text.literal(this.setSpawnError + " This run is not verifiable.").formatted(Formatting.RED), false); this.setSpawnError = null; } } diff --git a/1.3-1.5.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java b/1.3-1.5.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java index 83cef65..e58cbc6 100644 --- a/1.3-1.5.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java +++ b/1.3-1.5.2/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java @@ -21,7 +21,7 @@ public abstract class ServerPlayerEntityMixin { private String setSpawnError; @Shadow - public abstract void method_3331(String par1); + public abstract void method_3331(String message); @WrapOperation(method = "", at = @At(value = "INVOKE", target = "Ljava/util/Random;nextInt(I)I", ordinal = 0)) private int setSpawnX(Random random, int bounds, Operation original, @Local(argsOnly = true) MinecraftServer server, @Local BlockPos worldSpawn, @Share("seed") LocalRef seed, @Share("zCoord") LocalRef zCoord, @Share("isRandomSpawn") LocalBooleanRef isRandomSpawn) { diff --git a/1.6.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java b/1.6.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java index 259d345..a990b75 100644 --- a/1.6.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java +++ b/1.6.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java @@ -23,7 +23,7 @@ public abstract class ServerPlayerEntityMixin { private String setSpawnError; @Shadow - public abstract void method_5505(ChatMessage par1); + public abstract void method_5505(ChatMessage message); @WrapOperation(method = "", at = @At(value = "INVOKE", target = "Ljava/util/Random;nextInt(I)I", ordinal = 0)) private int setSpawnX(Random random, int bounds, Operation original, @Local(argsOnly = true) MinecraftServer server, @Local BlockPos worldSpawn, @Local(ordinal = 3) int spawnRadius, @Share("seed") LocalRef seed, @Share("zCoord") LocalRef zCoord, @Share("isRandomSpawn") LocalBooleanRef isRandomSpawn) { diff --git a/1.7.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java b/1.7.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java index bf453ec..dd88832 100644 --- a/1.7.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java +++ b/1.7.x/src/main/java/net/set/spawn/mod/mixin/ServerPlayerEntityMixin.java @@ -69,7 +69,9 @@ private void failOnNonRandomSpawns(CallbackInfo ci, @Share("seed") LocalRef Date: Fri, 28 Feb 2025 10:43:10 -0500 Subject: [PATCH 3/3] bump version to 4.1.1 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c065092..a669311 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs = -Xmx2G org.gradle.parallel = true org.gradle.caching = true -mod_version = 4.1.0 +mod_version = 4.1.1 archives_name = setspawnmod base_archives_name = setspawnmod-common maven_group = me.bdamja