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 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); @@ -83,7 +87,7 @@ private void failOnNonRandomSpawns(CallbackInfo ci, @Share("seed") LocalRef 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); @@ -95,7 +97,7 @@ private void sendErrorMessage(CallbackInfo ci) { @Inject(method = "method_14235(Lnet/minecraft/class_1703;)V", at = @At("TAIL"), require = 0) private void sendErrorMessage2(CallbackInfo ci) { if (this.setSpawnError != null) { - this.sendMessage(new LiteralText("§c" + this.setSpawnError + " This run is not verifiable."), false); + this.sendMessage(new LiteralText(this.setSpawnError + " This run is not verifiable.").formatted(Formatting.RED), false); this.setSpawnError = null; } } 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..0ac56d3 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 @@ -7,6 +7,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.util.math.*; import net.minecraft.util.math.random.Random; import net.set.spawn.mod.*; @@ -50,9 +51,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"); @@ -105,7 +107,7 @@ private void failOnNonRandomSpawns2(CallbackInfoReturnable 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