Toggling of scoreboards now affects the default board.

This commit is contained in:
drtshock 2014-10-15 20:58:37 -05:00
parent aee7092b09
commit e20995464e
6 changed files with 36 additions and 4 deletions

View File

@ -7,6 +7,7 @@ import com.massivecraft.factions.iface.RelationParticipator;
import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.integration.Worldguard; import com.massivecraft.factions.integration.Worldguard;
import com.massivecraft.factions.scoreboards.FInfoBoard; import com.massivecraft.factions.scoreboards.FInfoBoard;
import com.massivecraft.factions.scoreboards.FScoreboard;
import com.massivecraft.factions.struct.ChatMode; import com.massivecraft.factions.struct.ChatMode;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Relation; import com.massivecraft.factions.struct.Relation;
@ -120,6 +121,16 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator {
} }
} }
public FScoreboard activeBoard;
public FScoreboard getActiveBoard() {
return this.activeBoard;
}
public void setActiveBoard(FScoreboard board) {
this.activeBoard = board;
}
// FIELD: autoSafeZoneEnabled // FIELD: autoSafeZoneEnabled
private transient boolean autoSafeZoneEnabled; private transient boolean autoSafeZoneEnabled;

View File

@ -2,6 +2,8 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.P; import com.massivecraft.factions.P;
import com.massivecraft.factions.scoreboards.FDefaultBoard;
import com.massivecraft.factions.scoreboards.FScoreboard;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
@ -36,7 +38,14 @@ public class CmdSB extends FCommand {
@Override @Override
public void perform() { public void perform() {
me.sendMessage(TL.TOGGLE_SB.toString().replace("{value}", String.valueOf(toggle(me.getPlayer().getUniqueId())))); boolean toggle = toggle(me.getPlayer().getUniqueId());
if(!toggle && fme.getActiveBoard() != null) {
fme.getActiveBoard().cancel();
} else if(toggle && P.p.getConfig().getBoolean("scoreboards.default-enabled", false)){
FScoreboard board = new FDefaultBoard(fme);
fme.setActiveBoard(board);
}
me.sendMessage(TL.TOGGLE_SB.toString().replace("{value}", String.valueOf(toggle)));
} }
/** /**

View File

@ -2,6 +2,7 @@ package com.massivecraft.factions.listeners;
import com.massivecraft.factions.*; import com.massivecraft.factions.*;
import com.massivecraft.factions.scoreboards.FDefaultBoard; import com.massivecraft.factions.scoreboards.FDefaultBoard;
import com.massivecraft.factions.scoreboards.FScoreboard;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Relation; import com.massivecraft.factions.struct.Relation;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
@ -44,12 +45,13 @@ public class FactionsPlayerListener implements Listener {
// Store player's current FLocation and notify them where they are // Store player's current FLocation and notify them where they are
me.setLastStoodAt(new FLocation(event.getPlayer().getLocation())); me.setLastStoodAt(new FLocation(event.getPlayer().getLocation()));
if (P.p.getConfig().getBoolean("scoreboard.default-enabled", false)) { if (P.p.getConfig().getBoolean("scoreboard.default-enabled", false) && P.p.cmdBase.cmdSB.showBoard(me)) {
Bukkit.getScheduler().runTaskLater(P.p, new Runnable() { // I think we still have to delay this a few seconds. Bukkit.getScheduler().runTaskLater(P.p, new Runnable() { // I think we still have to delay this a few seconds.
@Override @Override
public void run() { public void run() {
if (me.getPlayer().isOnline()) { // In case people are quickly joining and quitting. if (me.getPlayer().isOnline()) { // In case people are quickly joining and quitting.
new FDefaultBoard(me); FScoreboard board = new FDefaultBoard(me);
me.setActiveBoard(board);
} }
} }
}, 20L); }, 20L);

View File

@ -47,7 +47,7 @@ public class FDefaultBoard implements FScoreboard {
public void update(Objective buffer) { public void update(Objective buffer) {
if(fPlayer.getPlayer() == null || !fPlayer.getPlayer().isOnline()) { if(fPlayer.getPlayer() == null || !fPlayer.getPlayer().isOnline()) {
Bukkit.getScheduler().cancelTask(taskId); cancel();
return; return;
} }
buffer.setDisplayName(ChatColor.translateAlternateColorCodes('&', P.p.getConfig().getString("scoreboard.default-title", "i love drt"))); buffer.setDisplayName(ChatColor.translateAlternateColorCodes('&', P.p.getConfig().getString("scoreboard.default-title", "i love drt")));
@ -89,6 +89,10 @@ public class FDefaultBoard implements FScoreboard {
return ChatColor.translateAlternateColorCodes('&', s); return ChatColor.translateAlternateColorCodes('&', s);
} }
public void cancel() {
Bukkit.getScheduler().cancelTask(taskId);
}
public Scoreboard getScoreboard() { public Scoreboard getScoreboard() {
return this.scoreboard; return this.scoreboard;
} }

View File

@ -88,6 +88,10 @@ public class FInfoBoard implements FScoreboard {
} }
} }
public void cancel() {
}
public Scoreboard getScoreboard() { public Scoreboard getScoreboard() {
return this.scoreboard; return this.scoreboard;
} }

View File

@ -15,4 +15,6 @@ public interface FScoreboard {
public void setup(); public void setup();
public Scoreboard getScoreboard(); public Scoreboard getScoreboard();
public void cancel();
} }