add player to a clientside team removing nametags

This commit is contained in:
2023-06-18 02:52:23 +02:00
parent f74658db28
commit f924c4dd55
6 changed files with 114 additions and 58 deletions
@@ -1,17 +1,13 @@
package me.youhavetrouble.notjustnameplates;
import me.youhavetrouble.notjustnameplates.listeners.TeamManagementListener;
import org.bukkit.plugin.java.JavaPlugin;
public final class NotJustNameplates extends JavaPlugin {
@Override
public void onEnable() {
// Plugin startup logic
getServer().getPluginManager().registerEvents(new TeamManagementListener(), this);
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
}
@@ -1,6 +1,5 @@
package me.youhavetrouble.notjustnameplates.listeners;
import me.youhavetrouble.notjustnameplates.teams.PacketTeam;
import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket;
import net.minecraft.world.scores.PlayerTeam;
import net.minecraft.world.scores.Scoreboard;
@@ -11,16 +10,17 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.jetbrains.annotations.NotNull;
import java.util.HashSet;
public class PlayerJoinLeaveListener implements Listener {
public class TeamManagementListener implements Listener {
private final Scoreboard scoreboard = new Scoreboard();
private final PlayerTeam team = new PlayerTeam(scoreboard, "notjustnameplates");
private final HashSet<String> players = new HashSet<>();
public PlayerJoinLeaveListener() {
public TeamManagementListener() {
team.setNameTagVisibility(PlayerTeam.Visibility.NEVER);
}
@@ -28,9 +28,10 @@ public class PlayerJoinLeaveListener implements Listener {
public void onPlayerJoin(PlayerJoinEvent event) {
Player joiner = event.getPlayer();
for (Player player : event.getPlayer().getServer().getOnlinePlayers()) {
if (player.equals(joiner)) continue;
addPlayerToTeam(joiner, player);
}
PacketTeam.sendTeamMembers(joiner);
sendTeamMembers(joiner);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
@@ -41,27 +42,28 @@ public class PlayerJoinLeaveListener implements Listener {
}
}
private void addPlayerToTeam(Player player, Player target) {
private void addPlayerToTeam(@NotNull Player player, @NotNull Player target) {
CraftPlayer craftPlayer = (CraftPlayer) target;
players.add(player.getName());
ClientboundSetPlayerTeamPacket teamCreatePacket = ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(team, true);
ClientboundSetPlayerTeamPacket teamCreatePacket = ClientboundSetPlayerTeamPacket
.createAddOrModifyPacket(team, true);
craftPlayer.getHandle().connection.send(teamCreatePacket);
ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket.createPlayerPacket(team, player.getName(), ClientboundSetPlayerTeamPacket.Action.ADD);
ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket
.createPlayerPacket(team, player.getName(), ClientboundSetPlayerTeamPacket.Action.ADD);
craftPlayer.getHandle().connection.send(packet);
}
private void removePlayerFromTeam(Player player, Player target) {
ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket.createPlayerPacket(team, player.getName(), ClientboundSetPlayerTeamPacket.Action.REMOVE);
private void removePlayerFromTeam(@NotNull Player player, @NotNull Player target) {
ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket
.createPlayerPacket(team, player.getName(), ClientboundSetPlayerTeamPacket.Action.REMOVE);
CraftPlayer craftPlayer = (CraftPlayer) target;
players.remove(player.getName());
craftPlayer.getHandle().connection.send(packet);
}
private void sendTeamMembers(Player target) {
ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket.createMultiplePlayerPacket(team, players, ClientboundSetPlayerTeamPacket.Action.ADD);
private void sendTeamMembers(@NotNull Player target) {
ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket
.createMultiplePlayerPacket(team, players, ClientboundSetPlayerTeamPacket.Action.ADD);
CraftPlayer craftPlayer = (CraftPlayer) target;
craftPlayer.getHandle().connection.send(packet);
}
@@ -1,2 +1,59 @@
package me.youhavetrouble.notjustnameplates.nameplates;public class Nameplate {
package me.youhavetrouble.notjustnameplates.nameplates;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.UUID;
public class Nameplate {
private Component name;
private final UUID playerUuid;
private double heightOffset = 0.5;
public Nameplate(@NotNull UUID playerUuid, @NotNull Component name) {
this.playerUuid = playerUuid;
this.name = name;
}
/**
* Get content of the nameplate
* @return content of the nameplate
*/
public Component getName() {
return name;
}
/**
* Set content of the nameplate
*/
public void setName(Component name) {
this.name = name;
}
/**
* Set height offset from the player's eye location
*/
public void setHeightOffset(double heightOffset) {
this.heightOffset = heightOffset;
}
/**
* Update the nameplate position
*/
public void updatePosition() {
Player player = Bukkit.getPlayer(playerUuid);
if (player == null) return;
Location location = player
.getEyeLocation()
.clone()
.add(0, heightOffset, 0);
// TODO move fake entity to location
}
}