diff --git a/src/main/java/de/melanx/skyblockbuilder/commands/HomeCommand.java b/src/main/java/de/melanx/skyblockbuilder/commands/HomeCommand.java index 58fcad9..09dd40a 100644 --- a/src/main/java/de/melanx/skyblockbuilder/commands/HomeCommand.java +++ b/src/main/java/de/melanx/skyblockbuilder/commands/HomeCommand.java @@ -52,6 +52,11 @@ private static int home(CommandSourceStack source) throws CommandSyntaxException return 0; } + if (!player.hasPermissions(2) && PermissionsConfig.Teleports.preventWhileFalling && player.fallDistance > 1) { + source.sendFailure(Component.translatable("skyblockbuilder.command.error.prevent_while_falling")); + return 0; + } + switch (SkyblockHooks.onHome(player, team)) { case DENY: source.sendSuccess(() -> Component.translatable("skyblockbuilder.command.denied.teleport_home").withStyle(ChatFormatting.RED), false); diff --git a/src/main/java/de/melanx/skyblockbuilder/commands/SpawnCommand.java b/src/main/java/de/melanx/skyblockbuilder/commands/SpawnCommand.java index b4f1b04..674f92e 100644 --- a/src/main/java/de/melanx/skyblockbuilder/commands/SpawnCommand.java +++ b/src/main/java/de/melanx/skyblockbuilder/commands/SpawnCommand.java @@ -45,6 +45,11 @@ private static int spawn(CommandSourceStack source) throws CommandSyntaxExceptio return 0; } + if (!player.hasPermissions(2) && PermissionsConfig.Teleports.preventWhileFalling && player.fallDistance > 1) { + source.sendFailure(Component.translatable("skyblockbuilder.command.error.prevent_while_falling")); + return 0; + } + data.getOrCreateMetaInfo(player).setLastSpawnTeleport(level.getGameTime()); source.sendSuccess(() -> Component.translatable("skyblockbuilder.command.success.teleport_to_spawn"), false); WorldUtil.teleportToIsland(player, team); diff --git a/src/main/java/de/melanx/skyblockbuilder/config/common/PermissionsConfig.java b/src/main/java/de/melanx/skyblockbuilder/config/common/PermissionsConfig.java index 405f54b..71958ad 100644 --- a/src/main/java/de/melanx/skyblockbuilder/config/common/PermissionsConfig.java +++ b/src/main/java/de/melanx/skyblockbuilder/config/common/PermissionsConfig.java @@ -23,6 +23,9 @@ public static class Teleports { @Config("Should fall damage be removed when teleporting? [default: false]") public static boolean noFallDamage = false; + @Config("Should teleporting be prevented while falling? [default: false]") + public static boolean preventWhileFalling = false; + @Config("Should players be able to teleport to spawn? [default: true]") public static boolean spawn = true; diff --git a/src/main/resources/assets/skyblockbuilder/lang/de_de.json b/src/main/resources/assets/skyblockbuilder/lang/de_de.json index 7271037..2dc1a67 100644 --- a/src/main/resources/assets/skyblockbuilder/lang/de_de.json +++ b/src/main/resources/assets/skyblockbuilder/lang/de_de.json @@ -37,6 +37,7 @@ "skyblockbuilder.command.error.user_no_player": "Du bist kein Spieler. Lügner!", "skyblockbuilder.command.error.teleport_across_dimensions": "Du darfst dich nicht zwischen Dimensionen teleportieren.", "skyblockbuilder.command.error.teleportation_not_allowed_dimension": "Du darfst dich nicht in dieser Dimension teleportieren.", + "skyblockbuilder.command.error.prevent_while_falling": "Du darfst dich nicht teleportieren während du fällst.", "skyblockbuilder.command.denied.accept_invitations": "Du kannst diese Einladung nicht annehmen!", "skyblockbuilder.command.denied.decline_invitations": "Du kannst diese Einladung nicht ablehnen!", diff --git a/src/main/resources/assets/skyblockbuilder/lang/en_us.json b/src/main/resources/assets/skyblockbuilder/lang/en_us.json index 152ee09..25f3655 100644 --- a/src/main/resources/assets/skyblockbuilder/lang/en_us.json +++ b/src/main/resources/assets/skyblockbuilder/lang/en_us.json @@ -37,6 +37,7 @@ "skyblockbuilder.command.error.user_no_player": "You are not a player, but a mere liar!", "skyblockbuilder.command.error.teleport_across_dimensions": "You are not allowed to teleport across dimensions.", "skyblockbuilder.command.error.teleportation_not_allowed_dimension": "You are not allowed to teleport in this dimension.", + "skyblockbuilder.command.error.prevent_while_falling": "You are not allowed to teleport while falling.", "skyblockbuilder.command.denied.accept_invitations": "You cannot accept this invitation!", "skyblockbuilder.command.denied.decline_invitations": "You cannot decline this invitation!",