From 35ac4dd842d69ac5e45d9466ee5eb03c817a5e27 Mon Sep 17 00:00:00 2001 From: TheWhiteDog9487 Date: Wed, 18 Jun 2025 12:24:29 +0800 Subject: [PATCH] =?UTF-8?q?0.3.6=20=E5=B0=8F=E6=9B=B4=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E7=94=A8=E5=BA=94=E8=AF=A5=E6=98=AF=E6=84=9F?= =?UTF-8?q?=E5=8F=97=E4=B8=8D=E5=88=B0=E7=9A=84=E3=80=82=20=E5=BD=93?= =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E5=8D=8A=E5=BE=84=E8=A2=AB=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA0=E7=9A=84=E6=97=B6=E5=80=99=E4=B8=8D=E4=BC=9A?= =?UTF-8?q?=E5=86=8D=E6=8A=9B=E5=87=BA=E5=BC=82=E5=B8=B8=E8=80=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=91=BD=E4=BB=A4=E8=BF=90=E8=A1=8C=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E4=BA=86=E3=80=82=20=E6=89=8B=E5=8A=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=BA=86=E8=BF=99=E4=B8=AA=E9=83=A8=E5=88=86=EF=BC=8C=E5=90=91?= =?UTF-8?q?=E7=8E=A9=E5=AE=B6=E5=8F=91=E9=80=81=E8=AD=A6=E5=91=8A=E5=B9=B6?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E9=9A=8F=E6=9C=BA=E4=B8=AD=E5=BF=83=E7=82=B9?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E8=A2=AB=E8=AE=BE=E7=BD=AE=E8=80=8C=E5=86=B3?= =?UTF-8?q?=E5=AE=9A=E6=98=AF=E5=90=A6=E8=BF=9B=E8=A1=8C=E4=BC=A0=E9=80=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../xyz/thewhitedog9487/CommandRegister.java | 33 ++++++++++++++----- .../assets/randomteleporter/lang/en_us.json | 2 ++ .../assets/randomteleporter/lang/zh_cn.json | 2 ++ 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9301047..f5618bf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.21.6+build.1 loader_version=0.16.14 # Mod Properties -mod_version=0.3.5 +mod_version=0.3.6 maven_group=xyz.thewhitedog9487 archives_base_name=RandomTeleporter diff --git a/src/main/java/xyz/thewhitedog9487/CommandRegister.java b/src/main/java/xyz/thewhitedog9487/CommandRegister.java index 01e8701..dd6872e 100644 --- a/src/main/java/xyz/thewhitedog9487/CommandRegister.java +++ b/src/main/java/xyz/thewhitedog9487/CommandRegister.java @@ -221,14 +221,27 @@ public class CommandRegister { if (Radius == null){Radius = (int) (WorldBorder - 1e4);} // ↑ 远离世界边界 Radius = Math.abs(Radius); - int Coordinate_X; - int Coordinate_Z; - if (Origin == null){ - Coordinate_X = new SplittableRandom().nextInt(-Radius, Radius); - Coordinate_Z = new SplittableRandom().nextInt(-Radius, Radius);} - else{ - Coordinate_X = new SplittableRandom().nextInt((int) Origin.x - Radius, (int) Origin.x + Radius); - Coordinate_Z = new SplittableRandom().nextInt((int) Origin.y - Radius, (int) Origin.y + Radius);} + int Coordinate_X = 0; + int Coordinate_Z = 0; + try { + if (Origin == null){ + Coordinate_X = new SplittableRandom().nextInt(-Radius, Radius); + Coordinate_Z = new SplittableRandom().nextInt(-Radius, Radius);} + else{ + Coordinate_X = new SplittableRandom().nextInt((int) Origin.x - Radius, (int) Origin.x + Radius); + Coordinate_Z = new SplittableRandom().nextInt((int) Origin.y - Radius, (int) Origin.y + Radius);}} + catch (IllegalArgumentException e) { + // 半径为零 + if (Origin == null) { + Source.sendFeedback(()->{ return Text.translatableWithFallback("warning.radius_equal_zero_no_target", "由于你设置的随机半径为0,并且未设置随机中心点坐标,因此什么都不会发生"); },true); + return -1;} + else { + Coordinate_X = (int) Origin.x; + Coordinate_Z = (int) Origin.y; + int finalCoordinate_X1 = Coordinate_X; + int finalCoordinate_Z1 = Coordinate_Z; + // ↑ "lambda 表达式中使用的变量应为 final 或有效 final" + Source.sendFeedback(()->{ return Text.translatableWithFallback("warning.radius_equal_zero", "警告:由于你设置的随机半径为0,因此在选择出合适高度之后将直接把你传送至%d %d", finalCoordinate_X1, finalCoordinate_Z1); },true);}} int Coordinate_Y = 320; for (var CurrentBlock = Source.getWorld().getBlockState(new BlockPos(Coordinate_X, Coordinate_Y, Coordinate_Z)).getBlock(); // 从世界顶层往下找,直到遇到一个非空气方块 @@ -254,9 +267,11 @@ public class CommandRegister { Coordinate_Y++; // ↑ 高一层,人别站在土里了 entity.teleport(Source.getWorld(),Coordinate_X + 0.5, Coordinate_Y, Coordinate_Z + 0.5, new HashSet<>(), entity.getYaw(), entity.getPitch(), false); + int finalCoordinate_X = Coordinate_X; int finalCoordinate_Y = Coordinate_Y; + int finalCoordinate_Z = Coordinate_Z; // ↑ "lambda 表达式中使用的变量应为 final 或有效 final" final var FeedbackFallbackString = String.format("已将玩家%s传送到%d %d %d", entity.getName().getString(), Coordinate_X, finalCoordinate_Y, Coordinate_Z); - Source.sendFeedback(()->{ return Text.translatableWithFallback("info.success", FeedbackFallbackString, entity.getName(), Coordinate_X, finalCoordinate_Y, Coordinate_Z); },true); + Source.sendFeedback(()->{ return Text.translatableWithFallback("info.success", FeedbackFallbackString, entity.getName(), finalCoordinate_X, finalCoordinate_Y, finalCoordinate_Z); },true); return 16;} } \ No newline at end of file diff --git a/src/main/resources/assets/randomteleporter/lang/en_us.json b/src/main/resources/assets/randomteleporter/lang/en_us.json index ff5ae8a..6165f18 100644 --- a/src/main/resources/assets/randomteleporter/lang/en_us.json +++ b/src/main/resources/assets/randomteleporter/lang/en_us.json @@ -3,5 +3,7 @@ "modmenu.descriptionTranslation.randomteleporter": "Added two commands for random teleportation", "info.success": "Teleported %s to %d %d %d", "error.no_target": "There is no teleported target, and the teleported player ID is explicitly specified when executed by a non-player object", + "warning.radius_equal_zero": "Warning: Since you set a random radius of 0, selecting the right height will teleport you directly to %d %d", + "warning.radius_equal_zero_no_target": "Warning: Since you set a random radius of 0 and you don't set a random center point coordinates, nothing happens", "bilibili": "Bilibili" } \ No newline at end of file diff --git a/src/main/resources/assets/randomteleporter/lang/zh_cn.json b/src/main/resources/assets/randomteleporter/lang/zh_cn.json index df31470..6e912be 100644 --- a/src/main/resources/assets/randomteleporter/lang/zh_cn.json +++ b/src/main/resources/assets/randomteleporter/lang/zh_cn.json @@ -3,5 +3,7 @@ "modmenu.descriptionTranslation.randomteleporter": "增加了两个用于随机传送的命令", "info.success": "已将玩家%s传送到%d %d %d", "error.no_target": "不存在被传送目标,由非玩家物体执行命令时请显式指定被传送玩家ID", + "warning.radius_equal_zero": "警告:由于你设置的随机半径为0,因此在选择出合适高度之后将直接把你传送至%d %d", + "warning.radius_equal_zero_no_target": "警告:由于你设置的随机半径为0,并且未设置随机中心点坐标,因此什么都不会发生", "bilibili": "TheWhiteDog9487的哔哩哔哩主页" } \ No newline at end of file