mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-11-25 20:25:19 +01:00
simplify scoreboard patch to be 100% packet based (#2129)
* simplify scoreboard patch to be 100% packet based which fixes edge case client errors * fix edge cases of respawning and multinpc boards
This commit is contained in:
parent
16c418415b
commit
2c24671ae3
@ -50,7 +50,6 @@ import org.bukkit.event.world.WorldUnloadEvent;
|
|||||||
import org.bukkit.inventory.meta.SkullMeta;
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scoreboard.Team;
|
|
||||||
|
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
@ -288,16 +287,6 @@ public class EventListen implements Listener {
|
|||||||
Bukkit.getPluginManager().callEvent(new NPCDeathEvent(npc, event));
|
Bukkit.getPluginManager().callEvent(new NPCDeathEvent(npc, event));
|
||||||
npc.despawn(DespawnReason.DEATH);
|
npc.despawn(DespawnReason.DEATH);
|
||||||
|
|
||||||
if (npc.data().has(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA)) {
|
|
||||||
String teamName = npc.data().get(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA);
|
|
||||||
Team team = Bukkit.getScoreboardManager().getMainScoreboard().getTeam(teamName);
|
|
||||||
if (team != null) {
|
|
||||||
team.unregister();
|
|
||||||
}
|
|
||||||
|
|
||||||
npc.data().remove(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (npc.data().get(NPC.RESPAWN_DELAY_METADATA, -1) >= 0) {
|
if (npc.data().get(NPC.RESPAWN_DELAY_METADATA, -1) >= 0) {
|
||||||
int delay = npc.data().get(NPC.RESPAWN_DELAY_METADATA, -1);
|
int delay = npc.data().get(NPC.RESPAWN_DELAY_METADATA, -1);
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {
|
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {
|
||||||
@ -482,7 +471,7 @@ public class EventListen implements Listener {
|
|||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
skinUpdateTracker.updatePlayer(event.getPlayer(), 6 * 20, true);
|
skinUpdateTracker.updatePlayer(event.getPlayer(), 6 * 20, true);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean() && !Util.isPlayerMainScoreboard(event.getPlayer())) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Util.updateNPCTeams(event.getPlayer(), 0);
|
Util.updateNPCTeams(event.getPlayer(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -397,7 +397,7 @@ public class CitizensNPC extends AbstractNPC {
|
|||||||
String teamName = data().get(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, "");
|
String teamName = data().get(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, "");
|
||||||
Team team = null;
|
Team team = null;
|
||||||
if (!(getEntity() instanceof Player) || teamName.length() == 0
|
if (!(getEntity() instanceof Player) || teamName.length() == 0
|
||||||
|| (team = Bukkit.getScoreboardManager().getMainScoreboard().getTeam(teamName)) == null)
|
|| (team = Util.getDummyScoreboard().getTeam(teamName)) == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (!Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
|
@ -3,7 +3,6 @@ package net.citizensnpcs.util;
|
|||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -16,12 +15,12 @@ import org.bukkit.entity.LivingEntity;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
import org.bukkit.scoreboard.Team;
|
import org.bukkit.scoreboard.Team;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
|
|
||||||
import net.citizensnpcs.api.event.NPCCollisionEvent;
|
import net.citizensnpcs.api.event.NPCCollisionEvent;
|
||||||
import net.citizensnpcs.api.event.NPCPushEvent;
|
import net.citizensnpcs.api.event.NPCPushEvent;
|
||||||
@ -86,6 +85,10 @@ public class Util {
|
|||||||
NMS.look(entity, to, headOnly, immediate);
|
NMS.look(entity, to, headOnly, immediate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Scoreboard getDummyScoreboard() {
|
||||||
|
return DUMMY_SCOREBOARD;
|
||||||
|
}
|
||||||
|
|
||||||
public static Location getEyeLocation(Entity entity) {
|
public static Location getEyeLocation(Entity entity) {
|
||||||
return entity instanceof LivingEntity ? ((LivingEntity) entity).getEyeLocation() : entity.getLocation();
|
return entity instanceof LivingEntity ? ((LivingEntity) entity).getEyeLocation() : entity.getLocation();
|
||||||
}
|
}
|
||||||
@ -152,16 +155,6 @@ public class Util {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPlayerMainScoreboard(Player player) {
|
|
||||||
boolean isOnMain = player.getScoreboard().equals(Bukkit.getScoreboardManager().getMainScoreboard());
|
|
||||||
if (isOnMain) {
|
|
||||||
PLAYERS_ON_MAIN_SCOREBOARD.add(player.getUniqueId());
|
|
||||||
} else {
|
|
||||||
PLAYERS_ON_MAIN_SCOREBOARD.remove(player.getUniqueId());
|
|
||||||
}
|
|
||||||
return isOnMain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String listValuesPretty(Enum<?>[] values) {
|
public static String listValuesPretty(Enum<?>[] values) {
|
||||||
return "<e>" + Joiner.on("<a>, <e>").join(values).toLowerCase();
|
return "<e>" + Joiner.on("<a>, <e>").join(values).toLowerCase();
|
||||||
}
|
}
|
||||||
@ -242,16 +235,9 @@ public class Util {
|
|||||||
*/
|
*/
|
||||||
public static void sendTeamPacketToOnlinePlayers(Team team, int mode) {
|
public static void sendTeamPacketToOnlinePlayers(Team team, int mode) {
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
boolean wasOnMain = PLAYERS_ON_MAIN_SCOREBOARD.contains(player.getUniqueId());
|
|
||||||
if (isPlayerMainScoreboard(player))
|
|
||||||
continue;
|
|
||||||
if (wasOnMain) {
|
|
||||||
updateNPCTeams(player, 0);
|
|
||||||
} else {
|
|
||||||
NMS.sendTeamPacket(player, team, mode);
|
NMS.sendTeamPacket(player, team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static String[] splitPlayerName(String coloredName) {
|
public static String[] splitPlayerName(String coloredName) {
|
||||||
String name = coloredName, prefix = null, suffix = null;
|
String name = coloredName, prefix = null, suffix = null;
|
||||||
@ -308,7 +294,7 @@ public class Util {
|
|||||||
String teamName = npc.data().get(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, "");
|
String teamName = npc.data().get(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, "");
|
||||||
Team team = null;
|
Team team = null;
|
||||||
if (teamName.length() == 0
|
if (teamName.length() == 0
|
||||||
|| (team = Bukkit.getScoreboardManager().getMainScoreboard().getTeam(teamName)) == null)
|
|| (team = Util.getDummyScoreboard().getTeam(teamName)) == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
NMS.sendTeamPacket(toUpdate, team, mode);
|
NMS.sendTeamPacket(toUpdate, team, mode);
|
||||||
@ -316,7 +302,7 @@ public class Util {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static final Location AT_LOCATION = new Location(null, 0, 0, 0);
|
private static final Location AT_LOCATION = new Location(null, 0, 0, 0);
|
||||||
|
private static final Scoreboard DUMMY_SCOREBOARD = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||||
private static String MINECRAFT_REVISION;
|
private static String MINECRAFT_REVISION;
|
||||||
private static final Pattern NON_ALPHABET_MATCHER = Pattern.compile(".*[^A-Za-z0-9_].*");
|
private static final Pattern NON_ALPHABET_MATCHER = Pattern.compile(".*[^A-Za-z0-9_].*");
|
||||||
private static final Set<UUID> PLAYERS_ON_MAIN_SCOREBOARD = Sets.newHashSet();
|
|
||||||
}
|
}
|
||||||
|
@ -67,12 +67,14 @@ public class HumanController extends AbstractEntityController {
|
|||||||
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
String teamName = profile.getId().toString().substring(0, 16);
|
String teamName = profile.getId().toString().substring(0, 16);
|
||||||
|
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
int mode = 2;
|
||||||
if (team == null) {
|
if (team == null) {
|
||||||
team = scoreboard.registerNewTeam(teamName);
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
mode = 0;
|
||||||
}
|
}
|
||||||
if (prefixCapture != null) {
|
if (prefixCapture != null) {
|
||||||
team.setPrefix(prefixCapture);
|
team.setPrefix(prefixCapture);
|
||||||
@ -84,7 +86,7 @@ public class HumanController extends AbstractEntityController {
|
|||||||
|
|
||||||
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
||||||
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 0);
|
Util.sendTeamPacketToOnlinePlayers(team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
@ -105,15 +107,16 @@ public class HumanController extends AbstractEntityController {
|
|||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
if (team != null && team.hasPlayer(entity)) {
|
if (team != null && team.hasPlayer(entity)) {
|
||||||
if (team.getSize() == 1) {
|
if (team.getSize() == 1) {
|
||||||
team.setPrefix("");
|
|
||||||
team.setSuffix("");
|
|
||||||
}
|
|
||||||
team.removePlayer(entity);
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
team.removePlayer(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NMS.removeFromWorld(entity);
|
NMS.removeFromWorld(entity);
|
||||||
|
@ -67,12 +67,14 @@ public class HumanController extends AbstractEntityController {
|
|||||||
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
String teamName = profile.getId().toString().substring(0, 16);
|
String teamName = profile.getId().toString().substring(0, 16);
|
||||||
|
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
int mode = 2;
|
||||||
if (team == null) {
|
if (team == null) {
|
||||||
team = scoreboard.registerNewTeam(teamName);
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
mode = 0;
|
||||||
}
|
}
|
||||||
if (prefixCapture != null) {
|
if (prefixCapture != null) {
|
||||||
team.setPrefix(prefixCapture);
|
team.setPrefix(prefixCapture);
|
||||||
@ -84,7 +86,7 @@ public class HumanController extends AbstractEntityController {
|
|||||||
|
|
||||||
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
||||||
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 0);
|
Util.sendTeamPacketToOnlinePlayers(team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
@ -105,15 +107,16 @@ public class HumanController extends AbstractEntityController {
|
|||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
if (team != null && team.hasPlayer(entity)) {
|
if (team != null && team.hasPlayer(entity)) {
|
||||||
if (team.getSize() == 1) {
|
if (team.getSize() == 1) {
|
||||||
team.setPrefix("");
|
|
||||||
team.setSuffix("");
|
|
||||||
}
|
|
||||||
team.removePlayer(entity);
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
team.removePlayer(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NMS.removeFromWorld(entity);
|
NMS.removeFromWorld(entity);
|
||||||
|
@ -67,12 +67,14 @@ public class HumanController extends AbstractEntityController {
|
|||||||
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
String teamName = profile.getId().toString().substring(0, 16);
|
String teamName = profile.getId().toString().substring(0, 16);
|
||||||
|
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
int mode = 2;
|
||||||
if (team == null) {
|
if (team == null) {
|
||||||
team = scoreboard.registerNewTeam(teamName);
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
mode = 0;
|
||||||
}
|
}
|
||||||
if (prefixCapture != null) {
|
if (prefixCapture != null) {
|
||||||
team.setPrefix(prefixCapture);
|
team.setPrefix(prefixCapture);
|
||||||
@ -84,7 +86,7 @@ public class HumanController extends AbstractEntityController {
|
|||||||
|
|
||||||
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
||||||
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 0);
|
Util.sendTeamPacketToOnlinePlayers(team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
@ -105,15 +107,16 @@ public class HumanController extends AbstractEntityController {
|
|||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
if (team != null && team.hasPlayer(entity)) {
|
if (team != null && team.hasPlayer(entity)) {
|
||||||
if (team.getSize() == 1) {
|
if (team.getSize() == 1) {
|
||||||
team.setPrefix("");
|
|
||||||
team.setSuffix("");
|
|
||||||
}
|
|
||||||
team.removePlayer(entity);
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
team.removePlayer(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NMS.removeFromWorld(entity);
|
NMS.removeFromWorld(entity);
|
||||||
|
@ -67,12 +67,14 @@ public class HumanController extends AbstractEntityController {
|
|||||||
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
String teamName = profile.getId().toString().substring(0, 16);
|
String teamName = profile.getId().toString().substring(0, 16);
|
||||||
|
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
int mode = 2;
|
||||||
if (team == null) {
|
if (team == null) {
|
||||||
team = scoreboard.registerNewTeam(teamName);
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
mode = 0;
|
||||||
}
|
}
|
||||||
if (prefixCapture != null) {
|
if (prefixCapture != null) {
|
||||||
team.setPrefix(prefixCapture);
|
team.setPrefix(prefixCapture);
|
||||||
@ -84,7 +86,7 @@ public class HumanController extends AbstractEntityController {
|
|||||||
|
|
||||||
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
||||||
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 0);
|
Util.sendTeamPacketToOnlinePlayers(team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
@ -105,15 +107,16 @@ public class HumanController extends AbstractEntityController {
|
|||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
if (team != null && team.hasPlayer(entity)) {
|
if (team != null && team.hasPlayer(entity)) {
|
||||||
if (team.getSize() == 1) {
|
if (team.getSize() == 1) {
|
||||||
team.setPrefix("");
|
|
||||||
team.setSuffix("");
|
|
||||||
}
|
|
||||||
team.removePlayer(entity);
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
team.removePlayer(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NMS.removeFromWorld(entity);
|
NMS.removeFromWorld(entity);
|
||||||
|
@ -67,12 +67,14 @@ public class HumanController extends AbstractEntityController {
|
|||||||
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
String teamName = profile.getId().toString().substring(0, 16);
|
String teamName = profile.getId().toString().substring(0, 16);
|
||||||
|
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
int mode = 2;
|
||||||
if (team == null) {
|
if (team == null) {
|
||||||
team = scoreboard.registerNewTeam(teamName);
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
mode = 0;
|
||||||
}
|
}
|
||||||
if (prefixCapture != null) {
|
if (prefixCapture != null) {
|
||||||
team.setPrefix(prefixCapture);
|
team.setPrefix(prefixCapture);
|
||||||
@ -84,7 +86,7 @@ public class HumanController extends AbstractEntityController {
|
|||||||
|
|
||||||
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
||||||
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 0);
|
Util.sendTeamPacketToOnlinePlayers(team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
@ -105,15 +107,16 @@ public class HumanController extends AbstractEntityController {
|
|||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
if (team != null && team.hasPlayer(entity)) {
|
if (team != null && team.hasPlayer(entity)) {
|
||||||
if (team.getSize() == 1) {
|
if (team.getSize() == 1) {
|
||||||
team.setPrefix("");
|
|
||||||
team.setSuffix("");
|
|
||||||
}
|
|
||||||
team.removePlayer(entity);
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
team.removePlayer(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NMS.removeFromWorld(entity);
|
NMS.removeFromWorld(entity);
|
||||||
|
@ -67,12 +67,14 @@ public class HumanController extends AbstractEntityController {
|
|||||||
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
String teamName = profile.getId().toString().substring(0, 16);
|
String teamName = profile.getId().toString().substring(0, 16);
|
||||||
|
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
int mode = 2;
|
||||||
if (team == null) {
|
if (team == null) {
|
||||||
team = scoreboard.registerNewTeam(teamName);
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
mode = 0;
|
||||||
}
|
}
|
||||||
if (prefixCapture != null) {
|
if (prefixCapture != null) {
|
||||||
team.setPrefix(prefixCapture);
|
team.setPrefix(prefixCapture);
|
||||||
@ -84,7 +86,7 @@ public class HumanController extends AbstractEntityController {
|
|||||||
|
|
||||||
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
||||||
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 0);
|
Util.sendTeamPacketToOnlinePlayers(team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
@ -105,15 +107,16 @@ public class HumanController extends AbstractEntityController {
|
|||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
if (team != null && team.hasPlayer(entity)) {
|
if (team != null && team.hasPlayer(entity)) {
|
||||||
if (team.getSize() == 1) {
|
if (team.getSize() == 1) {
|
||||||
team.setPrefix("");
|
|
||||||
team.setSuffix("");
|
|
||||||
}
|
|
||||||
team.removePlayer(entity);
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
team.removePlayer(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NMS.removeFromWorld(entity);
|
NMS.removeFromWorld(entity);
|
||||||
|
@ -67,12 +67,14 @@ public class HumanController extends AbstractEntityController {
|
|||||||
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
NMS.addOrRemoveFromPlayerList(getBukkitEntity(), removeFromPlayerList);
|
||||||
|
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
String teamName = profile.getId().toString().substring(0, 16);
|
String teamName = profile.getId().toString().substring(0, 16);
|
||||||
|
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
int mode = 2;
|
||||||
if (team == null) {
|
if (team == null) {
|
||||||
team = scoreboard.registerNewTeam(teamName);
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
mode = 0;
|
||||||
}
|
}
|
||||||
if (prefixCapture != null) {
|
if (prefixCapture != null) {
|
||||||
team.setPrefix(prefixCapture);
|
team.setPrefix(prefixCapture);
|
||||||
@ -84,7 +86,7 @@ public class HumanController extends AbstractEntityController {
|
|||||||
|
|
||||||
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
|
||||||
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 0);
|
Util.sendTeamPacketToOnlinePlayers(team, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 20);
|
}, 20);
|
||||||
@ -105,15 +107,16 @@ public class HumanController extends AbstractEntityController {
|
|||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
|
||||||
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
String teamName = entity.getUniqueId().toString().substring(0, 16);
|
||||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
Scoreboard scoreboard = Util.getDummyScoreboard();
|
||||||
Team team = scoreboard.getTeam(teamName);
|
Team team = scoreboard.getTeam(teamName);
|
||||||
if (team != null && team.hasPlayer(entity)) {
|
if (team != null && team.hasPlayer(entity)) {
|
||||||
if (team.getSize() == 1) {
|
if (team.getSize() == 1) {
|
||||||
team.setPrefix("");
|
|
||||||
team.setSuffix("");
|
|
||||||
}
|
|
||||||
team.removePlayer(entity);
|
|
||||||
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
Util.sendTeamPacketToOnlinePlayers(team, 1);
|
||||||
|
team.unregister();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
team.removePlayer(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NMS.removeFromWorld(entity);
|
NMS.removeFromWorld(entity);
|
||||||
|
Loading…
Reference in New Issue
Block a user