Skip to content

Commit

Permalink
fix #815
Browse files Browse the repository at this point in the history
  • Loading branch information
andrei1058 committed Aug 27, 2023
1 parent 1552212 commit 6f82e34
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import com.andrei1058.bedwars.api.tasks.StartingTask;
import com.andrei1058.bedwars.arena.Arena;
import com.andrei1058.bedwars.arena.team.BedWarsTeam;
import com.andrei1058.bedwars.arena.team.LegacyTeamAssigner;
import com.andrei1058.bedwars.configuration.Sounds;
import com.andrei1058.bedwars.support.papi.SupportPAPI;
import org.bukkit.Bukkit;
Expand Down Expand Up @@ -102,14 +103,11 @@ public void run() {
}
}



// todo enable me back in production
// if (BedWars.config.getBoolean(ConfigPath.GENERAL_CONFIGURATION_EXPERIMENTAL_TEAM_ASSIGNER)) {
// getArena().getTeamAssigner().assignTeams(getArena());
// } else {
// LegacyTeamAssigner.assignTeams(getArena());
// }
if (BedWars.config.getBoolean(ConfigPath.GENERAL_CONFIGURATION_EXPERIMENTAL_TEAM_ASSIGNER)) {
getArena().getTeamAssigner().assignTeams(getArena());
} else {
LegacyTeamAssigner.assignTeams(getArena());
}


//Color bed block if possible
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ public boolean isTabFormattingDisabled() {
!config.getLobbyWorldName().trim().isEmpty()) {

World lobby = Bukkit.getWorld(config.getLobbyWorldName());
return null != lobby;
return null == lobby || !sidebar.getPlayer().getWorld().getName().equals(lobby.getName());
}
}

Expand All @@ -153,18 +153,18 @@ public boolean isTabFormattingDisabled() {
GameState status = sidebar.getArena().getStatus();

// if tab formatting is disabled in game
if (status == GameState.playing && config.getBoolean(ConfigPath.SB_CONFIG_SIDEBAR_LIST_FORMAT_PLAYING)) {
return false;
if (status == GameState.playing) {
return !config.getBoolean(ConfigPath.SB_CONFIG_SIDEBAR_LIST_FORMAT_PLAYING);
}

// if tab formatting is disabled in starting
if (status == GameState.starting && config.getBoolean(ConfigPath.SB_CONFIG_SIDEBAR_LIST_FORMAT_STARTING)) {
return false;
if (status == GameState.starting) {
return !config.getBoolean(ConfigPath.SB_CONFIG_SIDEBAR_LIST_FORMAT_STARTING);
}

// if tab formatting is disabled in waiting
if (status == GameState.waiting && config.getBoolean(ConfigPath.SB_CONFIG_SIDEBAR_LIST_FORMAT_WAITING)) {
return false;
if (status == GameState.waiting) {
return !config.getBoolean(ConfigPath.SB_CONFIG_SIDEBAR_LIST_FORMAT_WAITING);
}

// if tab formatting is disabled in restarting
Expand Down Expand Up @@ -328,8 +328,6 @@ public void giveUpdateTabFormat(@NotNull Player player, boolean skipStateCheck)
if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) {
teamTab.setNameTagVisibility(PlayerTab.NameTagVisibility.NEVER);
}

Bukkit.broadcastMessage(playerTabIdentifier.toString());
}

@NotNull
Expand Down Expand Up @@ -432,6 +430,7 @@ private boolean hasPlayerIdentifier(@NotNull String id) {
return false;
}

@SuppressWarnings("unused")
private @NotNull String getPlayerTabIdentifierAliveInTeam(ITeam team, Player player) {
return getPlayerTabIdentifierAliveInTeam(team, getCreatePlayerTabIdentifier(player));
}
Expand All @@ -440,6 +439,7 @@ private boolean hasPlayerIdentifier(@NotNull String id) {
return getCreateTeamTabOrderPrefix(team) + playerId;
}

@SuppressWarnings("unused")
private @NotNull String getPlayerTabIdentifierEliminatedInTeam(ITeam team, Player player) {
return getPlayerTabIdentifierEliminatedInTeam(team, getCreatePlayerTabIdentifier(player));
}
Expand All @@ -448,6 +448,7 @@ private boolean hasPlayerIdentifier(@NotNull String id) {
return getCreateTeamTabOrderPrefix(team) + ELIMINATED_FROM_TEAM_PREFIX + playerId;
}

@SuppressWarnings("unused")
private @NotNull String getPlayerTabIdentifierSpectator(@Nullable ITeam team, Player player) {
return getPlayerTabIdentifierSpectator(team, getCreatePlayerTabIdentifier(player));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,85 +22,100 @@

import com.andrei1058.bedwars.BedWars;
import com.andrei1058.bedwars.api.arena.IArena;
import com.andrei1058.bedwars.api.configuration.ConfigPath;
import com.andrei1058.bedwars.api.events.player.PlayerBedBreakEvent;
import com.andrei1058.bedwars.api.events.player.PlayerKillEvent;
import com.andrei1058.bedwars.api.events.player.PlayerReJoinEvent;
import com.andrei1058.bedwars.api.events.player.PlayerReSpawnEvent;
import com.andrei1058.bedwars.api.events.player.*;
import com.andrei1058.bedwars.api.server.ServerType;
import com.andrei1058.bedwars.arena.Arena;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.jetbrains.annotations.NotNull;

public class ScoreboardListener implements Listener {

@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerDamage(EntityDamageEvent e) {
if (e == null) return;
if (e.isCancelled()) return;
if (!(e.getEntity() instanceof Player)) return;
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerDamage(@NotNull EntityDamageEvent e) {
if (!(e.getEntity() instanceof Player)) {
return;
}

final Player player = (Player) e.getEntity();
final IArena arena = Arena.getArenaByPlayer(player);

int health = (int) Math.ceil((player.getHealth() - e.getFinalDamage()));
if (arena == null) return;
if (arena == null) {
return;
}

int health = (int) Math.ceil((player.getHealth() - e.getFinalDamage()));
SidebarService.getInstance().refreshHealth(arena, player, health);
}

@EventHandler(priority = EventPriority.MONITOR)
public void onRegain(EntityRegainHealthEvent e) {
if (e == null) return;
if (e.isCancelled()) return;
if (!(e.getEntity() instanceof Player)) return;
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onRegain(@NotNull EntityRegainHealthEvent e) {
if (!(e.getEntity() instanceof Player)) {
return;
}

final Player player = (Player) e.getEntity();
final IArena arena = Arena.getArenaByPlayer(player);
if (arena == null) return;
if (arena == null) {
return;
}

int health = (int) Math.ceil(player.getHealth() + e.getAmount());

SidebarService.getInstance().refreshHealth(arena, player, health);
}

@EventHandler(priority = EventPriority.MONITOR)
public void onReSpawn(PlayerReSpawnEvent e) {
if (e == null) return;
public void onReSpawn(@NotNull PlayerReSpawnEvent e) {
final IArena arena = e.getArena();

SidebarService.getInstance().refreshHealth(arena, e.getPlayer(), (int) Math.ceil(e.getPlayer().getHealth()));
}

@EventHandler(priority = EventPriority.LOWEST)
public void reJoin(PlayerReJoinEvent e) {
if (e == null) return;
if (e.isCancelled()) return;
if (!BedWars.config.getBoolean(ConfigPath.SB_CONFIG_SIDEBAR_LIST_FORMAT_PLAYING)) return;
final IArena arena = e.getArena();
final Player player = e.getPlayer();

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void reJoin(@NotNull PlayerReJoinEvent e) {
// re-add player to scoreboard tab list
SidebarService.getInstance().handleReJoin(arena, player);
SidebarService.getInstance().handleReJoin(e.getArena(), e.getPlayer());
}

@EventHandler
public void onBedDestroy(PlayerBedBreakEvent e) {
if (e == null) return;
final IArena arena = e.getArena();
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void arenaJoin(@NotNull PlayerJoinArenaEvent e) {
// add player to scoreboard tab list
SidebarService.getInstance().handleJoin(e.getArena(), e.getPlayer());
}

// refresh placeholders in case placeholders refresh is disabled
SidebarService.getInstance().refreshPlaceholders(arena);
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void serverJoin(@NotNull PlayerJoinEvent e) {
if (BedWars.getServerType() == ServerType.MULTIARENA || BedWars.getServerType() == ServerType.SHARED) {
// add player to scoreboard tab list
SidebarService.getInstance().applyLobbyTab(e.getPlayer());
}
}

@EventHandler
public void onFinalKill(PlayerKillEvent e) {
if (e == null) return;
if (!e.getCause().isFinalKill()) return;
final IArena arena = e.getArena();
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void arenaLeave(@NotNull PlayerLeaveArenaEvent e) {
if (BedWars.getServerType() == ServerType.MULTIARENA || BedWars.getServerType() == ServerType.SHARED) {
// add player to scoreboard tab list
SidebarService.getInstance().applyLobbyTab(e.getPlayer());
}
}

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBedDestroy(@NotNull PlayerBedBreakEvent e) {
// refresh placeholders in case placeholders refresh is disabled
SidebarService.getInstance().refreshPlaceholders(e.getArena());
}

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onFinalKill(@NotNull PlayerKillEvent e) {
if (!e.getCause().isFinalKill()) {
return;
}
// refresh placeholders in case placeholders refresh is disabled
SidebarService.getInstance().refreshPlaceholders(arena);
SidebarService.getInstance().refreshPlaceholders(e.getArena());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,26 @@ public void handleReJoin(IArena arena, Player player) {
});
}

public void handleJoin(IArena arena, Player player) {
this.sidebars.forEach((k,v) -> {
if (null != v.getArena() && v.getArena().equals(arena)) {
if (!v.getPlayer().equals(player)) {
v.giveUpdateTabFormat(player, false);
}
}
});
}

public void applyLobbyTab(Player player) {
this.sidebars.forEach((k,v) -> {
if (null == v.getArena()) {
if (!v.getPlayer().equals(player)) {
v.giveUpdateTabFormat(player, false);
}
}
});
}

public void handleInvisibility(ITeam team, Player player, boolean toggle) {
this.sidebars.forEach((k,v) -> {
if (null != v.getArena() && v.getArena().equals(team.getArena())) {
Expand Down

0 comments on commit 6f82e34

Please sign in to comment.