From 0486b08129468bb3ee257078ecbf877895c7a5f0 Mon Sep 17 00:00:00 2001 From: Jsinco Date: Tue, 3 Mar 2026 02:56:21 -0500 Subject: [PATCH 1/4] Add Folia support Signed-off-by: Jsinco --- .idea/copilot.data.migration.ask2agent.xml | 6 + .idea/jarRepositories.xml | 56 +- .idea/misc.xml | 2 +- .idea/modules.xml | 9 + .idea/workspace.xml | 150 +++-- hubparkour-api/hubparkour-api.iml | 13 + hubparkour-api/pom.xml | 10 + .../hubparkour/api/IHubParkourPlayer.java | 4 +- plugin/plugin.iml | 13 + plugin/pom.xml | 25 +- .../me/block2block/hubparkour/HubParkour.java | 12 + .../hubparkour/commands/CommandParkour.java | 575 ++++++++---------- .../hubparkour/entities/EditWizard.java | 42 +- .../hubparkour/entities/HubParkourPlayer.java | 438 ++++++------- .../entities/LeaderboardHologram.java | 23 +- .../hubparkour/entities/Parkour.java | 232 +++---- .../hubparkour/entities/SetupWizard.java | 44 +- .../hubparkour/gui/ParkourListGUI.java | 2 +- .../hubparkour/listeners/FallListener.java | 12 +- .../hubparkour/listeners/GUIListener.java | 11 +- .../listeners/ItemClickListener.java | 59 +- .../listeners/PressurePlateListener.java | 29 +- .../hubparkour/signs/StartClickableSign.java | 6 +- .../hubparkour/signs/StatsClickableSign.java | 62 +- .../signs/TeleportClickableSign.java | 3 +- plugin/src/main/resources/plugin.yml | 3 +- 26 files changed, 891 insertions(+), 950 deletions(-) create mode 100644 .idea/copilot.data.migration.ask2agent.xml create mode 100644 .idea/modules.xml create mode 100644 hubparkour-api/hubparkour-api.iml create mode 100644 plugin/plugin.iml diff --git a/.idea/copilot.data.migration.ask2agent.xml b/.idea/copilot.data.migration.ask2agent.xml new file mode 100644 index 0000000..1f2ea11 --- /dev/null +++ b/.idea/copilot.data.migration.ask2agent.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index aa09f3c..a3c2bca 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -6,35 +6,20 @@ - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..bdf486c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 34e68fb..694ba0c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -31,13 +31,31 @@ + + + + + + + + + + + + + + + + + + + + + + + - { - "selectedUrlAndAccountId": { - "url": "https://github.com/Block2Block/HubParkour.git", - "accountId": "e48afc10-7980-4fd9-bd8e-e19e9d60f5d7" + +}]]> + + {} { "isMigrated": true @@ -244,11 +270,27 @@ - - + + + + - { "customColor": "", @@ -263,42 +305,47 @@ - { - "keyToString": { - "DefaultHtmlFileTemplate": "HTML File", - "Maven.hubparkour [clean,javadoc:javadoc].executor": "Run", - "Maven.hubparkour [clean,package,-U].executor": "Run", - "Maven.hubparkour [clean,package,deploy,-pl...].executor": "Run", - "Maven.hubparkour [clean,package,deploy].executor": "Run", - "Maven.hubparkour [clean,package].executor": "Run", - "Maven.hubparkour [javadoc:javadoc,-pl...].executor": "Run", - "Maven.hubparkour [javadoc:javadoc].executor": "Run", - "RunOnceActivity.MCP Project settings loaded": "true", - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "SONARLINT_PRECOMMIT_ANALYSIS": "true", - "WebServerToolWindowFactoryState": "false", - "com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true", - "extract.method.default.visibility": "private", - "git-widget-placeholder": "master", - "junie.onboarding.icon.badge.shown": "true", - "kotlin-language-version-configured": "true", - "last_opened_file_path": "E:/Programming Projects/Java/HubParkour", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "project.structure.last.edited": "Project", - "project.structure.proportion": "0.0", - "project.structure.side.proportion": "0.0", - "settings.editor.selected.configurable": "AtomSelectConfig", - "to.speed.mode.migration.done": "true", - "vue.rearranger.settings.migration": "true" + +}]]> @@ -406,8 +453,8 @@ - @@ -838,6 +885,7 @@ + 1588429523231 @@ -1254,8 +1302,20 @@ + + false + true + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 72be07c93f3642ca30df6ae0662179c0dab01eed Mon Sep 17 00:00:00 2001 From: Jsinco Date: Tue, 17 Mar 2026 15:48:35 -0400 Subject: [PATCH 4/4] fix pressure plate listener Signed-off-by: Jsinco --- .../listeners/PressurePlateListener.java | 493 +++++++++--------- 1 file changed, 253 insertions(+), 240 deletions(-) diff --git a/plugin/src/main/java/me/block2block/hubparkour/listeners/PressurePlateListener.java b/plugin/src/main/java/me/block2block/hubparkour/listeners/PressurePlateListener.java index a6a046a..7d9c21e 100644 --- a/plugin/src/main/java/me/block2block/hubparkour/listeners/PressurePlateListener.java +++ b/plugin/src/main/java/me/block2block/hubparkour/listeners/PressurePlateListener.java @@ -14,6 +14,7 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.block.data.Waterlogged; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -83,190 +84,233 @@ public void onPressurePlate(PlayerMoveEvent e) { } } - if (e.getFrom().getBlock().getType().equals(e.getTo().getBlock().getType())) { - if (CacheManager.isParkour(e.getPlayer())) { - if (e.getPlayer().isOnGround()) { - Player p = e.getPlayer(); - HubParkourPlayer player = CacheManager.getPlayer(p); - player.touchedGround(); - } - if (e.getPlayer().getVelocity().getY() > STILL) { - Player p = e.getPlayer(); - HubParkourPlayer player = CacheManager.getPlayer(p); - if (player.hasTouchedGround() && !player.getPlayer().isOnGround()) { - player.leftGround(); - player.getParkourRun().jumped(); - } - } - Location from = e.getFrom().clone(); - Location to = e.getTo().clone(); - from.setY(0); - to.setY(0); - double distance = Math.abs(from.distance(to)); - { - Player p = e.getPlayer(); - HubParkourPlayer player = CacheManager.getPlayer(p); - player.getParkourRun().addTravel(distance); - } - if (ConfigUtil.getBoolean("Settings.Incompatibility-Workarounds.VoidSpawn.Enabled", false)) { - if (ConfigUtil.getBoolean("Settings.Teleport.On-Void", true)) { - if (ConfigUtil.getInt("Settings.Incompatibility-Workarounds.VoidSpawn.Min-Y", -1) > e.getTo().getY()) { + Location fromIni = e.getFrom(); + Location toIni = e.getTo(); + + HubParkour.getScheduler().runAtLocation(fromIni, t -> { + Material fromType = fromIni.getBlock().getType(); + HubParkour.getScheduler().runAtLocation(toIni, tt -> { + Block toBlock = toIni.getBlock(); + Material toType = toBlock.getType(); + + if (fromType.equals(toType)) { + if (CacheManager.isParkour(e.getPlayer())) { + if (e.getPlayer().isOnGround()) { Player p = e.getPlayer(); - p.setFallDistance(0); HubParkourPlayer player = CacheManager.getPlayer(p); + player.touchedGround(); + } + if (e.getPlayer().getVelocity().getY() > STILL) { + Player p = e.getPlayer(); + HubParkourPlayer player = CacheManager.getPlayer(p); + if (player.hasTouchedGround() && !player.getPlayer().isOnGround()) { + player.leftGround(); + player.getParkourRun().jumped(); + } + } + Location from = fromIni.clone(); + Location to = toIni.clone(); + from.setY(0); + to.setY(0); + double distance = Math.abs(from.distance(to)); + { + Player p = e.getPlayer(); + HubParkourPlayer player = CacheManager.getPlayer(p); + player.getParkourRun().addTravel(distance); + } + if (ConfigUtil.getBoolean("Settings.Incompatibility-Workarounds.VoidSpawn.Enabled", false)) { + if (ConfigUtil.getBoolean("Settings.Teleport.On-Void", true)) { + if (ConfigUtil.getInt("Settings.Incompatibility-Workarounds.VoidSpawn.Min-Y", -1) > toIni.getY()) { + Player p = e.getPlayer(); + p.setFallDistance(0); + HubParkourPlayer player = CacheManager.getPlayer(p); - Location l = player.getParkour().getRestartPoint().getLocation().clone(); - if (player.getLastReached() != 0) { - l = player.getParkour().getCheckpoint(player.getLastReached()).getLocation().clone(); + Location l = player.getParkour().getRestartPoint().getLocation().clone(); + if (player.getLastReached() != 0) { + l = player.getParkour().getCheckpoint(player.getLastReached()).getLocation().clone(); + } + l.setX(l.getX() + 0.5); + l.setY(l.getY() + 0.5); + l.setZ(l.getZ() + 0.5); + double health = p.getHealth(); + p.setVelocity(new Vector(0, 0, 0)); + HubParkour.getScheduler().teleportAsync(p, l); + ConfigUtil.sendMessage(p, "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); + FallListener.getHasTeleported().add(p); + HubParkour.getScheduler().runLater(ta -> { + FallListener.getHasTeleported().remove(p); + }, 5); + return; + } } - l.setX(l.getX() + 0.5); - l.setY(l.getY() + 0.5); - l.setZ(l.getZ() + 0.5); - double health = p.getHealth(); - p.setVelocity(new Vector(0, 0, 0)); - HubParkour.getScheduler().teleportAsync(p, l); - ConfigUtil.sendMessage(p, "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); - FallListener.getHasTeleported().add(p); - HubParkour.getScheduler().runLater(t -> { - FallListener.getHasTeleported().remove(p); - }, 5); - return; } + } + return; } - } - return; - } - if (CacheManager.isParkour(e.getPlayer())) { - if (e.getTo().getBlock().isLiquid()) { - boolean tpwater = ConfigUtil.getBoolean("Settings.Teleport.On-Water", true); - boolean tplava = ConfigUtil.getBoolean("Settings.Teleport.On-Lava", true); - ParkourPlayerTeleportEvent.TeleportReason reason = - ParkourPlayerTeleportEvent.TeleportReason.UNKNOWN; - if (e.getTo().getBlock().getType() == Material.WATER || e.getTo().getBlock().getType() == Material.BUBBLE_COLUMN) { - reason = ParkourPlayerTeleportEvent.TeleportReason.WATER; - if (!tpwater) { - return; - } - } else if (e.getTo().getBlock().getType() == Material.LAVA) { - reason = ParkourPlayerTeleportEvent.TeleportReason.LAVA; - if (!tplava) { - return; - } - } else if (HubParkour.isPre1_13()) { - if (e.getTo().getBlock().getType() == Material.getMaterial("STATIONARY_WATER")) { - reason = ParkourPlayerTeleportEvent.TeleportReason.WATER; - if (!tpwater) { - return; + if (CacheManager.isParkour(e.getPlayer())) { + if (toBlock.isLiquid()) { + boolean tpwater = ConfigUtil.getBoolean("Settings.Teleport.On-Water", true); + boolean tplava = ConfigUtil.getBoolean("Settings.Teleport.On-Lava", true); + ParkourPlayerTeleportEvent.TeleportReason reason = + ParkourPlayerTeleportEvent.TeleportReason.UNKNOWN; + if (toBlock.getType() == Material.WATER || toBlock.getType() == Material.BUBBLE_COLUMN) { + reason = ParkourPlayerTeleportEvent.TeleportReason.WATER; + if (!tpwater) { + return; + } + } else if (toBlock.getType() == Material.LAVA) { + reason = ParkourPlayerTeleportEvent.TeleportReason.LAVA; + if (!tplava) { + return; + } + } else if (HubParkour.isPre1_13()) { + if (toBlock.getType() == Material.getMaterial("STATIONARY_WATER")) { + reason = ParkourPlayerTeleportEvent.TeleportReason.WATER; + if (!tpwater) { + return; + } + } else { + reason = ParkourPlayerTeleportEvent.TeleportReason.LAVA; + if (!tplava) { + return; + } + } } - } else { - reason = ParkourPlayerTeleportEvent.TeleportReason.LAVA; - if (!tplava) { + if (tpwater || tplava) { + HubParkourPlayer player = CacheManager.getPlayer(e.getPlayer()); + Parkour parkour = player.getParkour(); + ParkourPlayerTeleportEvent event = new ParkourPlayerTeleportEvent(parkour, player, parkour.getRestartPoint(), reason); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + + Location l = parkour.getRestartPoint().getLocation().clone(); + if (player.getLastReached() != 0) { + l = parkour.getCheckpoint(player.getLastReached()).getLocation().clone(); + } + l.setX(l.getX() + 0.5); + l.setY(l.getY() + 0.5); + l.setZ(l.getZ() + 0.5); + e.getPlayer().setFallDistance(0); + e.getPlayer().setVelocity(new Vector(0, 0, 0)); + HubParkour.getScheduler().teleportAsync(e.getPlayer(), l); + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); return; } + } else if (!HubParkour.isPre1_13()) { + if (toBlock.getBlockData() instanceof Waterlogged) { + Waterlogged waterlogged = (Waterlogged) toBlock.getBlockData(); + if (waterlogged.isWaterlogged() && ConfigUtil.getBoolean("Settings.Teleport.On-Water", true)) { + HubParkourPlayer player = CacheManager.getPlayer(e.getPlayer()); + Parkour parkour = player.getParkour(); + Location l = parkour.getRestartPoint().getLocation().clone(); + if (player.getLastReached() != 0) { + l = parkour.getCheckpoint(player.getLastReached()).getLocation().clone(); + } + l.setX(l.getX() + 0.5); + l.setY(l.getY() + 0.5); + l.setZ(l.getZ() + 0.5); + e.getPlayer().setFallDistance(0); + e.getPlayer().setVelocity(new Vector(0, 0, 0)); + HubParkour.getScheduler().teleportAsync(e.getPlayer(), l); + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); + return; + } + } } - } - if (tpwater || tplava) { - HubParkourPlayer player = CacheManager.getPlayer(e.getPlayer()); - Parkour parkour = player.getParkour(); - ParkourPlayerTeleportEvent event = new ParkourPlayerTeleportEvent(parkour, player, parkour.getRestartPoint(), reason); - Bukkit.getPluginManager().callEvent(event); - if (event.isCancelled()) { - return; - } + if (ConfigUtil.getBoolean("Settings.Incompatibility-Workarounds.VoidSpawn.Enabled", false)) { + if (ConfigUtil.getBoolean("Settings.Teleport.On-Void", true)) { + if (ConfigUtil.getInt("Settings.Incompatibility-Workarounds.VoidSpawn.Min-Y", -1) > e.getTo().getY()) { + Player p = e.getPlayer(); + p.setFallDistance(0); + HubParkourPlayer player = CacheManager.getPlayer(p); + Parkour parkour = player.getParkour(); - Location l = parkour.getRestartPoint().getLocation().clone(); - if (player.getLastReached() != 0) { - l = parkour.getCheckpoint(player.getLastReached()).getLocation().clone(); - } - l.setX(l.getX() + 0.5); - l.setY(l.getY() + 0.5); - l.setZ(l.getZ() + 0.5); - e.getPlayer().setFallDistance(0); - e.getPlayer().setVelocity(new Vector(0, 0, 0)); - HubParkour.getScheduler().teleportAsync(e.getPlayer(), l); - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); - return; - } - } else if (!HubParkour.isPre1_13()) { - if (e.getTo().getBlock().getBlockData() instanceof Waterlogged) { - Waterlogged waterlogged = (Waterlogged) e.getTo().getBlock().getBlockData(); - if (waterlogged.isWaterlogged() && ConfigUtil.getBoolean("Settings.Teleport.On-Water", true)) { - HubParkourPlayer player = CacheManager.getPlayer(e.getPlayer()); - Parkour parkour = player.getParkour(); - Location l = parkour.getRestartPoint().getLocation().clone(); - if (player.getLastReached() != 0) { - l = parkour.getCheckpoint(player.getLastReached()).getLocation().clone(); + Location l = parkour.getRestartPoint().getLocation().clone(); + if (player.getLastReached() != 0) { + l = parkour.getCheckpoint(player.getLastReached()).getLocation().clone(); + } + l.setX(l.getX() + 0.5); + l.setY(l.getY() + 0.5); + l.setZ(l.getZ() + 0.5); + double health = p.getHealth(); + p.setVelocity(new Vector(0, 0, 0)); + HubParkour.getScheduler().teleportAsync(p, l); + ConfigUtil.sendMessage(p, "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); + FallListener.getHasTeleported().add(p); + HubParkour.getScheduler().runLater(() -> { + FallListener.getHasTeleported().remove(p); + }, 5); + return; + } } - l.setX(l.getX() + 0.5); - l.setY(l.getY() + 0.5); - l.setZ(l.getZ() + 0.5); - e.getPlayer().setFallDistance(0); - e.getPlayer().setVelocity(new Vector(0, 0, 0)); - HubParkour.getScheduler().teleportAsync(e.getPlayer(), l); - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); - return; } } - } - if (ConfigUtil.getBoolean("Settings.Incompatibility-Workarounds.VoidSpawn.Enabled", false)) { - if (ConfigUtil.getBoolean("Settings.Teleport.On-Void", true)) { - if (ConfigUtil.getInt("Settings.Incompatibility-Workarounds.VoidSpawn.Min-Y", -1) > e.getTo().getY()) { - Player p = e.getPlayer(); - p.setFallDistance(0); - HubParkourPlayer player = CacheManager.getPlayer(p); - Parkour parkour = player.getParkour(); - - Location l = parkour.getRestartPoint().getLocation().clone(); - if (player.getLastReached() != 0) { - l = parkour.getCheckpoint(player.getLastReached()).getLocation().clone(); + if (CacheManager.isPoint(toBlock.getLocation())) { + PressurePlate pp = CacheManager.getPoint(toBlock.getLocation()); + Player p = e.getPlayer(); + if (CacheManager.isSomeoneEdit()) { + if (pp.getParkour().equals(CacheManager.getEditWizard().getParkour())) { + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Currently-Being-Edited", "This parkour is currently in being modified by an admin. Please wait to attempt this parkour!", true, Collections.emptyMap()); + return; } - l.setX(l.getX() + 0.5); - l.setY(l.getY() + 0.5); - l.setZ(l.getZ() + 0.5); - double health = p.getHealth(); - p.setVelocity(new Vector(0, 0, 0)); - HubParkour.getScheduler().teleportAsync(p, l); - ConfigUtil.sendMessage(p, "Messages.Parkour.Teleport", "You have been teleported to your last checkpoint.", true, Collections.emptyMap()); - FallListener.getHasTeleported().add(p); - HubParkour.getScheduler().runLater(() -> { - FallListener.getHasTeleported().remove(p); - }, 5); - return; } - } - } - } - if (CacheManager.isPoint(e.getTo().getBlock().getLocation())) { - PressurePlate pp = CacheManager.getPoint(e.getTo().getBlock().getLocation()); - Player p = e.getPlayer(); - if (CacheManager.isSomeoneEdit()) { - if (pp.getParkour().equals(CacheManager.getEditWizard().getParkour())) { - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Currently-Being-Edited", "This parkour is currently in being modified by an admin. Please wait to attempt this parkour!", true, Collections.emptyMap()); - return; - } - } - switch (pp.getType()) { - case 0: - //StartPoint - if (CacheManager.isParkour(p)) { - HubParkourPlayer old = CacheManager.getPlayer(p); - - if (old.getParkour().getId() == pp.getParkour().getId()) { - //Restart the parkour. + switch (pp.getType()) { + case 0: + //StartPoint + if (CacheManager.isParkour(p)) { + HubParkourPlayer old = CacheManager.getPlayer(p); - old.restart(); - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Restarted", "You have restarted the parkour! Your time has been reset to 0!", true, Collections.emptyMap()); - return; - } else { - //Do nothing, is doing a different parkour. - if (ConfigUtil.getBoolean("Settings.Start-When-In-Parkour", false)) { - old.end(ParkourPlayerFailEvent.FailCause.NEW_PARKOUR); + if (old.getParkour().getId() == pp.getParkour().getId()) { + //Restart the parkour. + + old.restart(); + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Restarted", "You have restarted the parkour! Your time has been reset to 0!", true, Collections.emptyMap()); + return; + } else { + //Do nothing, is doing a different parkour. + if (ConfigUtil.getBoolean("Settings.Start-When-In-Parkour", false)) { + old.end(ParkourPlayerFailEvent.FailCause.NEW_PARKOUR); + + //Start the new parkour + Parkour parkour = (Parkour) pp.getParkour(); + HubParkourPlayer player = new HubParkourPlayer(old, parkour); + ParkourPlayerStartEvent event = new ParkourPlayerStartEvent(parkour, player, player.getStartTime()); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + parkour.playerStart(player); + CacheManager.playerStart(player); + if (ConfigUtil.getBoolean("Settings.Exploit-Prevention.Remove-Potion-Effects", true)) { + for (PotionEffect effect : p.getActivePotionEffects()) { + p.removePotionEffect(effect.getType()); + } + } + if (ConfigUtil.getBoolean("Settings.Exploit-Prevention.Remove-Fly", true)) { + p.setFlying(false); + if (Material.getMaterial("ELYTRA") != null) { + p.setGliding(false); + } + } - //Start the new parkour + Map bindings = new HashMap<>(); + bindings.put("parkour-name", parkour.getName()); + + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Started", "You have started the &a{parkour-name} &rparkour!", true, bindings); + return; + } else { + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Already-In-Parkour", "You are already doing a parkour. If you wish to leave the current parkour and start a new one, do /parkour leave.", true, Collections.emptyMap()); + return; + } + } + } else { + //Start the parkour Parkour parkour = (Parkour) pp.getParkour(); - HubParkourPlayer player = new HubParkourPlayer(old, parkour); + HubParkourPlayer player = new HubParkourPlayer(p, parkour); ParkourPlayerStartEvent event = new ParkourPlayerStartEvent(parkour, player, player.getStartTime()); Bukkit.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -285,95 +329,64 @@ public void onPressurePlate(PlayerMoveEvent e) { p.setGliding(false); } } + player.startParkour(); Map bindings = new HashMap<>(); bindings.put("parkour-name", parkour.getName()); ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Started", "You have started the &a{parkour-name} &rparkour!", true, bindings); - return; + + } + break; + case 1: + //EndPoint + if (CacheManager.isParkour(p)) { + HubParkourPlayer player = CacheManager.getPlayer(p); + if (player.getParkour().getId() == pp.getParkour().getId()) { + //End the parkour. + player.end(null); + return; + } else { + //Do nothing, is doing a different parkour. + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Already-In-Parkour", "You are already doing a parkour. If you wish to leave the current parkour and start a new one, do /parkour leave.", true, Collections.emptyMap()); + return; + } } else { - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Already-In-Parkour", "You are already doing a parkour. If you wish to leave the current parkour and start a new one, do /parkour leave.", true, Collections.emptyMap()); - return; + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.End.Not-Started", "You must start a parkour in order to finish it.", true, Collections.emptyMap()); } - } - } else { - //Start the parkour - Parkour parkour = (Parkour) pp.getParkour(); - HubParkourPlayer player = new HubParkourPlayer(p, parkour); - ParkourPlayerStartEvent event = new ParkourPlayerStartEvent(parkour, player, player.getStartTime()); - Bukkit.getPluginManager().callEvent(event); - if (event.isCancelled()) { + break; + case 2: return; - } - parkour.playerStart(player); - CacheManager.playerStart(player); - if (ConfigUtil.getBoolean("Settings.Exploit-Prevention.Remove-Potion-Effects", true)) { - for (PotionEffect effect : p.getActivePotionEffects()) { - p.removePotionEffect(effect.getType()); - } - } - if (ConfigUtil.getBoolean("Settings.Exploit-Prevention.Remove-Fly", true)) { - p.setFlying(false); - if (Material.getMaterial("ELYTRA") != null) { - p.setGliding(false); - } - } - player.startParkour(); - - Map bindings = new HashMap<>(); - bindings.put("parkour-name", parkour.getName()); - - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Started", "You have started the &a{parkour-name} &rparkour!", true, bindings); + case 3: + //Checkpoint + if (CacheManager.isParkour(p)) { + HubParkourPlayer player = CacheManager.getPlayer(p); + if (player.getParkour().getId() == pp.getParkour().getId()) { + //Checkpoint the parkour. + Checkpoint checkpoint = (Checkpoint) pp; + ParkourPlayerCheckpointEvent event = new ParkourPlayerCheckpointEvent(pp.getParkour(), player, checkpoint); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } - } - break; - case 1: - //EndPoint - if (CacheManager.isParkour(p)) { - HubParkourPlayer player = CacheManager.getPlayer(p); - if (player.getParkour().getId() == pp.getParkour().getId()) { - //End the parkour. - player.end(null); - return; - } else { - //Do nothing, is doing a different parkour. - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Already-In-Parkour", "You are already doing a parkour. If you wish to leave the current parkour and start a new one, do /parkour leave.", true, Collections.emptyMap()); - return; - } - } else { - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.End.Not-Started", "You must start a parkour in order to finish it.", true, Collections.emptyMap()); - } - break; - case 2: - return; - case 3: - //Checkpoint - if (CacheManager.isParkour(p)) { - HubParkourPlayer player = CacheManager.getPlayer(p); - if (player.getParkour().getId() == pp.getParkour().getId()) { - //Checkpoint the parkour. - Checkpoint checkpoint = (Checkpoint) pp; - ParkourPlayerCheckpointEvent event = new ParkourPlayerCheckpointEvent(pp.getParkour(), player, checkpoint); - Bukkit.getPluginManager().callEvent(event); - if (event.isCancelled()) { - return; + player.checkpoint(checkpoint); + return; + } else { + //Do nothing, is doing a different parkour. + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Already-In-Parkour", "You are already doing a parkour. If you wish to leave the current parkour and start a new one, do /parkour leave.", true, Collections.emptyMap()); + return; + } + } else { + ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Checkpoints.Not-Started", "You must start a parkour in order to reach checkpoints!", true, Collections.emptyMap()); } - - player.checkpoint(checkpoint); + break; + case 5: return; - } else { - //Do nothing, is doing a different parkour. - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Already-In-Parkour", "You are already doing a parkour. If you wish to leave the current parkour and start a new one, do /parkour leave.", true, Collections.emptyMap()); - return; - } - } else { - ConfigUtil.sendMessageOrDefault(e.getPlayer(), "Messages.Parkour.Checkpoints.Not-Started", "You must start a parkour in order to reach checkpoints!", true, Collections.emptyMap()); } - break; - case 5: - return; - } - } + } + }); + }); } }