Compare commits

...

3 Commits

Author SHA1 Message Date
Teriuihi 4f8a7a0416 Clear player potion effects on class reset
Ensure active potion effects are removed when resetting a player's class. This prevents lingering effects from other classes, maintaining consistent game behavior.
2025-02-08 23:11:41 +01:00
Teriuihi 55b88a950d Refactor snowball event handling for better readability.
Renamed method for clarity and improved team player checks. Added debug logs for unsupported scenarios and ensured no actions occur when players hit teammates. These changes enhance code maintainability and prevent unintended behavior.
2025-02-08 23:09:09 +01:00
Teriuihi 172f9a29a2 Add throw speed to item lore in GameClass
This update enhances the item lore display by including the throw speed attribute alongside health and damage. It improves clarity for players by providing more comprehensive item stats directly on the display.
2025-02-08 23:06:51 +01:00
2 changed files with 19 additions and 6 deletions

View File

@ -48,7 +48,7 @@ public class SnowballEvent implements Listener {
}
@EventHandler
public void onSnowballHitBySnowball(ProjectileLaunchEvent event) {
public void onSnowballThrown(ProjectileLaunchEvent event) {
handleSnowballThrown(event, (shooter, shooterTeamPlayer) -> {
GameClass shooterClass = shooterTeamPlayer.getGameClass();
shooter.setCooldown(Material.SNOWBALL, shooterClass.getThrowTickSpeed());
@ -105,11 +105,22 @@ public class SnowballEvent implements Listener {
return;
}
Optional<TeamPlayer> teamPlayer = gameManager.getTeamPlayer(shooter.getUniqueId());
if (teamPlayer.isEmpty()) {
Optional<TeamPlayer> teamPlayerShooter = gameManager.getTeamPlayer(shooter.getUniqueId());
if (teamPlayerShooter.isEmpty()) {
log.debug("The shooter that hit a player with a snowball was not a team player");
return;
}
consumer.apply(hitPlayer, shooter, teamPlayer.get());
Optional<TeamPlayer> teamPlayerHit = gameManager.getTeamPlayer(hitPlayer.getUniqueId());
if (teamPlayerHit.isEmpty()) {
log.debug("The shooter that hit a player with a snowball was not a team player");
return;
}
if (teamPlayerHit.get().getTeam().getId() == teamPlayerShooter.get().getTeam().getId()) {
log.debug("The shooter hit a member of their own team");
return;
}
consumer.apply(hitPlayer, shooter, teamPlayerHit.get());
}
}

View File

@ -62,9 +62,10 @@ public abstract class GameClass {
throw new IllegalArgumentException("Display item has no lore");
}
ArrayList<Component> loreList = new ArrayList<>(lore);
loreList.add(miniMessage.deserialize("<gold>Health: <health>, Damage: <damage></gold>",
loreList.add(miniMessage.deserialize("<gold>Health: <health>, Damage: <damage> Throw speed: <throw_speed></gold>",
Placeholder.parsed("health", String.valueOf(health)),
Placeholder.parsed("damage", String.valueOf(damage))
Placeholder.parsed("damage", String.valueOf(damage)),
Placeholder.parsed("throw_speed", String.valueOf(throwTickSpeed))
));
itemMeta.lore(loreList);
displayItem.setItemMeta(itemMeta);
@ -85,6 +86,7 @@ public abstract class GameClass {
player.setHealth(health);
//Always reset the player inventory since other classes might have had them get items
player.getInventory().clear();
player.clearActivePotionEffects();
player.getInventory().setContents(tools.toArray(ItemStack[]::new));
TeamColor color = teamPlayer.getTeam().getColor();