aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMyles <43725835+MylesAndMore@users.noreply.github.com>2022-12-09 17:00:43 +0000
committerMyles <43725835+MylesAndMore@users.noreply.github.com>2022-12-09 17:00:43 +0000
commit3e63a58dba76ab0720711f6c5c602848f606d903 (patch)
tree661e75464b0506eeae52b10919539e0ab1b0a994
parentf0a7cd62fb3759e0e196af23b711ff9513d3cd6e (diff)
downloadTumble-3e63a58dba76ab0720711f6c5c602848f606d903.tar.gz
Tumble-3e63a58dba76ab0720711f6c5c602848f606d903.tar.bz2
Tumble-3e63a58dba76ab0720711f6c5c602848f606d903.zip
remove snowball knockback in game
-rw-r--r--README.md2
-rw-r--r--src/main/java/com/MylesAndMore/tumble/EventListener.java20
2 files changed, 17 insertions, 5 deletions
diff --git a/README.md b/README.md
index 04a4a38..e3135c0 100644
--- a/README.md
+++ b/README.md
@@ -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);
+ }
}
}
}