diff --git a/build.gradle b/build.gradle index a854c4d..69e15cb 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ repositories { } dependencies { - compileOnly("io.papermc.paper:paper-api:1.21.3-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:1.21.8-R0.1-SNAPSHOT") } tasks { @@ -27,7 +27,7 @@ tasks { // Configure the Minecraft version for our task. // This is the only required configuration besides applying the plugin. // Your plugin's jar (or shadowJar if present) will be used automatically. - minecraftVersion("1.21.3") + minecraftVersion("1.21.8") } } diff --git a/src/main/java/org/walruslab/fmtm/plugin/ClickListener.java b/src/main/java/org/walruslab/fmtm/plugin/ClickListener.java index 0d99958..1246fb8 100644 --- a/src/main/java/org/walruslab/fmtm/plugin/ClickListener.java +++ b/src/main/java/org/walruslab/fmtm/plugin/ClickListener.java @@ -5,6 +5,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerSwapHandItemsEvent; import org.walruslab.fmtm.core.FmtmCore; public class ClickListener implements Listener { @@ -25,9 +26,28 @@ public class ClickListener implements Listener { var player = e.getPlayer(); if (player.getScoreboardTags().contains("fmtm") && item.getType() == Material.DIAMOND_SWORD) { - core.launch(player); + if (player.isSneaking()) { + var curVel = player.getVelocity(); + var dir = player.getEyeLocation().getDirection(); + var newVel = curVel.length() < 10.0 ? curVel.add(dir.multiply(30.0)) : dir.multiply(curVel.length() * 3.0); + player.setVelocity(newVel); + } else { + core.launch(player); + } } } } + + @EventHandler + public void onHandSwap(PlayerSwapHandItemsEvent e) { + var item = e.getOffHandItem(); + + var player = e.getPlayer(); + + if (player.getScoreboardTags().contains("fmtm") && item.getType() == Material.DIAMOND_SWORD) { + player.setVelocity(player.getVelocity().setY(0.2)); + e.setCancelled(true); + } + } }