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); +                        }                      }                  }              } | 
