From d3e3278e725668e8c4c25756534e9227bde36c41 Mon Sep 17 00:00:00 2001 From: DerToaster98 <38782719+DerToaster98@users.noreply.github.com> Date: Sun, 8 Dec 2024 21:24:18 +0100 Subject: [PATCH 1/5] fix infinite loop and missing return (cherry picked from commit 13ce56c0b53b3dcc51c89111c0d06fd41b05e62a) --- .../movecraft/async/translation/TranslationTask.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java index a1a9390b6..c39451087 100644 --- a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java +++ b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java @@ -230,12 +230,19 @@ protected void execute() throws InterruptedException, ExecutionException { newHitBox.getMidPoint().getZ()); test = test.translate(0, -1, 0); while (test.toBukkit(world).getBlock().getType().isAir()) { + // If we are out of bounds, that is technically air, but can we hover over ground??? + if (test.getY() < world.getMinHeight()) { + fail(String.format(I18nSupport.getInternationalisedString("Translation - Failed Craft over void")))); + return; + } test = test.translate(0, -1, 0); } Material testType = test.toBukkit(world).getBlock().getType(); if (craft.getType().getMaterialSetProperty(CraftType.FORBIDDEN_HOVER_OVER_BLOCKS).contains(testType)) { + // Why is there no return here? Shouldnt there be one? fail(String.format(I18nSupport.getInternationalisedString("Translation - Failed Craft over block"), testType.name().toLowerCase().replace("_", " "))); + return; } } //call event From fb79828035388c11b74d6c286b6c7af9370b0519 Mon Sep 17 00:00:00 2001 From: DerToaster98 <38782719+DerToaster98@users.noreply.github.com> Date: Sun, 8 Dec 2024 21:29:52 +0100 Subject: [PATCH 2/5] fix build error (missing semicolon) (cherry picked from commit 6f0b401267cf2f056699c28c3369a99e51c54a1b) --- .../movecraft/async/translation/TranslationTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java index c39451087..30bde2998 100644 --- a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java +++ b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java @@ -232,7 +232,7 @@ protected void execute() throws InterruptedException, ExecutionException { while (test.toBukkit(world).getBlock().getType().isAir()) { // If we are out of bounds, that is technically air, but can we hover over ground??? if (test.getY() < world.getMinHeight()) { - fail(String.format(I18nSupport.getInternationalisedString("Translation - Failed Craft over void")))); + fail(String.format(I18nSupport.getInternationalisedString("Translation - Failed Craft over void"))); return; } test = test.translate(0, -1, 0); From b4a573705fab7305511ed2276f1a6740fea6c4b8 Mon Sep 17 00:00:00 2001 From: DerToaster98 <38782719+DerToaster98@users.noreply.github.com> Date: Sun, 8 Dec 2024 21:35:45 +0100 Subject: [PATCH 3/5] add translation --- .../src/main/resources/localisation/movecraftlang_en.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/Movecraft/src/main/resources/localisation/movecraftlang_en.properties b/Movecraft/src/main/resources/localisation/movecraftlang_en.properties index 96790495e..d71770d52 100644 --- a/Movecraft/src/main/resources/localisation/movecraftlang_en.properties +++ b/Movecraft/src/main/resources/localisation/movecraftlang_en.properties @@ -112,6 +112,7 @@ Translation\ -\ Failed\ Craft\ is\ obstructed=The craft cannot move because its Translation\ -\ Failed\ Craft\ out\ of\ fuel=The craft is out of fuel\! Translation\ -\ Failed\ Craft\ hit\ minimum\ height\ limit=Craft has hit the minimum height limit Translation\ -\ Failed\ Craft\ over\ block=This craft cannot move over %s\! +Translation\ -\ Failed\ Craft\ over\ void=The craft can't go over nonexisting terrain! Insufficient\ Permissions=Insufficient Permissions Invalid\ Coordinates=Invalid Coordinates From 6515aba380d9c25e2c728721e4d90f53a8291afa Mon Sep 17 00:00:00 2001 From: DerToaster98 <38782719+DerToaster98@users.noreply.github.com> Date: Sat, 14 Dec 2024 21:14:59 +0100 Subject: [PATCH 4/5] change loop condition instead --- .../movecraft/async/translation/TranslationTask.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java index 30bde2998..a4bceff2a 100644 --- a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java +++ b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java @@ -229,12 +229,8 @@ protected void execute() throws InterruptedException, ExecutionException { MovecraftLocation test = new MovecraftLocation(newHitBox.getMidPoint().getX(), newHitBox.getMinY(), newHitBox.getMidPoint().getZ()); test = test.translate(0, -1, 0); - while (test.toBukkit(world).getBlock().getType().isAir()) { - // If we are out of bounds, that is technically air, but can we hover over ground??? - if (test.getY() < world.getMinHeight()) { - fail(String.format(I18nSupport.getInternationalisedString("Translation - Failed Craft over void"))); - return; - } + // If we are out of bounds, that is technically air, but then we would have an infinite loop, so stay in Y bounds + while (test.toBukkit(world).getBlock().getType().isAir() && world.getMinHeight() >= test.getY() && world.getMaxHeight() <= test.getY()) { test = test.translate(0, -1, 0); } Material testType = test.toBukkit(world).getBlock().getType(); From 05e0a8bcb9f6215a06a7eadc8aa6de2b8727c99d Mon Sep 17 00:00:00 2001 From: DerToaster98 <38782719+DerToaster98@users.noreply.github.com> Date: Mon, 30 Dec 2024 11:44:32 +0100 Subject: [PATCH 5/5] dont check max y --- .../movecraft/async/translation/TranslationTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java index a4bceff2a..d3b387157 100644 --- a/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java +++ b/Movecraft/src/main/java/net/countercraft/movecraft/async/translation/TranslationTask.java @@ -230,7 +230,7 @@ protected void execute() throws InterruptedException, ExecutionException { newHitBox.getMidPoint().getZ()); test = test.translate(0, -1, 0); // If we are out of bounds, that is technically air, but then we would have an infinite loop, so stay in Y bounds - while (test.toBukkit(world).getBlock().getType().isAir() && world.getMinHeight() >= test.getY() && world.getMaxHeight() <= test.getY()) { + while (test.toBukkit(world).getBlock().getType().isAir() && world.getMinHeight() >= test.getY()) { test = test.translate(0, -1, 0); } Material testType = test.toBukkit(world).getBlock().getType();