From abdfcd2106ebb830c63ea4aa8e417e0e0e032ed1 Mon Sep 17 00:00:00 2001 From: Worive <13164341+Worive@users.noreply.github.com> Date: Sat, 25 Oct 2025 16:22:06 +0200 Subject: [PATCH 1/3] Fix ConcurrentModificationException from HangGlider --- .../common/entity/EntityHangGlider.java | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main/java/openblocks/common/entity/EntityHangGlider.java b/src/main/java/openblocks/common/entity/EntityHangGlider.java index a750fbf47..952112718 100644 --- a/src/main/java/openblocks/common/entity/EntityHangGlider.java +++ b/src/main/java/openblocks/common/entity/EntityHangGlider.java @@ -2,6 +2,7 @@ import java.util.Calendar; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.Random; @@ -75,12 +76,19 @@ private static boolean isGliderValid(EntityPlayer player, EntityHangGlider glide @SideOnly(Side.CLIENT) public static void updateGliders(World worldObj) { - for (Map.Entry e : gliderMap.entrySet()) { - EntityPlayer player = e.getKey(); - EntityHangGlider glider = e.getValue(); - if (isGliderValid(player, glider)) glider.fixPositions(player, true); - else glider.setDead(); - } + Iterator> iterator = gliderMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry e = iterator.next(); + EntityPlayer player = e.getKey(); + EntityHangGlider glider = e.getValue(); + + if (isGliderValid(player, glider)) { + glider.fixPositions(player, true); + } else { + iterator.remove(); + glider.setDeadUnsafe(); + } + } } private EntityPlayer player; @@ -245,17 +253,21 @@ public double getNoise() { @Override public void setDead() { - super.setDead(); gliderMap.remove(player); - - if (varioControl.isValid()) { - varioControl.kill(); - varioControl.release(); - ticksSinceLastVarioUpdate = 0; - verticalMotionSinceLastVarioUpdate = 0; - } + setDeadUnsafe(); } + private void setDeadUnsafe() { + super.setDead(); + + if (varioControl.isValid()) { + varioControl.kill(); + varioControl.release(); + ticksSinceLastVarioUpdate = 0; + verticalMotionSinceLastVarioUpdate = 0; + } + } + private void fixPositions(EntityPlayer thePlayer, boolean localPlayer) { this.lastTickPosX = prevPosX = player.prevPosX; this.lastTickPosY = prevPosY = player.prevPosY; From d7910a9c0117c4a3910fcec234f31da1c3fa8c9b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 16:38:28 +0200 Subject: [PATCH 2/3] Spotless apply for branch fix-cme-glider for #35 (#36) Co-authored-by: GitHub GTNH Actions <> --- .../common/entity/EntityHangGlider.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/openblocks/common/entity/EntityHangGlider.java b/src/main/java/openblocks/common/entity/EntityHangGlider.java index 952112718..7a4a488aa 100644 --- a/src/main/java/openblocks/common/entity/EntityHangGlider.java +++ b/src/main/java/openblocks/common/entity/EntityHangGlider.java @@ -76,19 +76,19 @@ private static boolean isGliderValid(EntityPlayer player, EntityHangGlider glide @SideOnly(Side.CLIENT) public static void updateGliders(World worldObj) { - Iterator> iterator = gliderMap.entrySet().iterator(); - while (iterator.hasNext()) { - Map.Entry e = iterator.next(); - EntityPlayer player = e.getKey(); - EntityHangGlider glider = e.getValue(); - - if (isGliderValid(player, glider)) { - glider.fixPositions(player, true); - } else { - iterator.remove(); - glider.setDeadUnsafe(); - } - } + Iterator> iterator = gliderMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry e = iterator.next(); + EntityPlayer player = e.getKey(); + EntityHangGlider glider = e.getValue(); + + if (isGliderValid(player, glider)) { + glider.fixPositions(player, true); + } else { + iterator.remove(); + glider.setDeadUnsafe(); + } + } } private EntityPlayer player; @@ -257,16 +257,16 @@ public void setDead() { setDeadUnsafe(); } - private void setDeadUnsafe() { - super.setDead(); + private void setDeadUnsafe() { + super.setDead(); - if (varioControl.isValid()) { - varioControl.kill(); - varioControl.release(); - ticksSinceLastVarioUpdate = 0; - verticalMotionSinceLastVarioUpdate = 0; - } - } + if (varioControl.isValid()) { + varioControl.kill(); + varioControl.release(); + ticksSinceLastVarioUpdate = 0; + verticalMotionSinceLastVarioUpdate = 0; + } + } private void fixPositions(EntityPlayer thePlayer, boolean localPlayer) { this.lastTickPosX = prevPosX = player.prevPosX; From 7f122d1f7a43f11aade77c29c69592181ee08fd6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 16:40:21 +0200 Subject: [PATCH 3/3] Spotless apply for branch fix-cme-glider for #35 (#37) Co-authored-by: GitHub GTNH Actions <>