diff options
author | Myles <43725835+MylesAndMore@users.noreply.github.com> | 2022-12-09 17:00:43 +0000 |
---|---|---|
committer | Myles <43725835+MylesAndMore@users.noreply.github.com> | 2022-12-09 17:00:43 +0000 |
commit | 3e63a58dba76ab0720711f6c5c602848f606d903 (patch) | |
tree | 661e75464b0506eeae52b10919539e0ab1b0a994 | |
parent | f0a7cd62fb3759e0e196af23b711ff9513d3cd6e (diff) | |
download | Tumble-3e63a58dba76ab0720711f6c5c602848f606d903.tar.gz Tumble-3e63a58dba76ab0720711f6c5c602848f606d903.tar.bz2 Tumble-3e63a58dba76ab0720711f6c5c602848f606d903.zip |
remove snowball knockback in game
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/EventListener.java | 20 |
2 files changed, 17 insertions, 5 deletions
@@ -25,7 +25,7 @@ once this list is complete and all bugs are fixed, we *should* be ready for rele - [ ] set some limits on the spectator mode in-game; make it so they can't fly outside of the map - [ ] make it so rounds end in a draw after 5m - [ ] make it so that players get snowballs instead of shovels in shovels rounds after 2m 30s -- [ ] remove snowball knockback +- [x] remove snowball knockback ## game logic diff --git a/src/main/java/com/MylesAndMore/tumble/EventListener.java b/src/main/java/com/MylesAndMore/tumble/EventListener.java index a5169c5..dd42ea2 100644 --- a/src/main/java/com/MylesAndMore/tumble/EventListener.java +++ b/src/main/java/com/MylesAndMore/tumble/EventListener.java @@ -14,6 +14,7 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.player.*; import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; public class EventListener implements Listener { @EventHandler @@ -145,12 +146,23 @@ public class EventListener implements Listener { // then check if the projectile was a snowball, if (event.getEntity() instanceof Snowball) { // then check if a player threw it, - if (event.getEntity().getShooter() instanceof Player player) { - // then check if that block is within the game area, - if (event.getHitBlock().getLocation().distanceSquared( - Bukkit.getWorld(TumbleManager.getGameWorld()).getSpawnLocation()) < 402) { + if (event.getEntity().getShooter() instanceof Player shooterPlayer) { + // then check to see if it hit a player or a block + if (event.getHitBlock() != null) { + // if it was a block, check if that block is within the game area, + if (event.getHitBlock().getLocation().distanceSquared(Bukkit.getWorld(TumbleManager.getGameWorld()).getSpawnLocation()) < 402) { // then remove that block. event.getHitBlock().setType(Material.AIR); + } + } + else if (event.getHitEntity() != null) { + // if it was an entity, check if it hit a player, + if (event.getHitEntity() instanceof Player hitPlayer) { + // then cancel the knockback (has to be delayed by a tick for some reason) + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> { + hitPlayer.setVelocity(new Vector()); + }, 1); + } } } } |