mirror of
https://github.com/YouHaveTrouble/NotJustNameplates.git
synced 2026-05-12 06:26:58 +00:00
switch to purpur api, use teleport hindered
This commit is contained in:
+5
-1
@@ -13,8 +13,12 @@ java {
|
|||||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven("https://repo.purpurmc.org/snapshots/")
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
paperweight.paperDevBundle("1.20.1-R0.1-SNAPSHOT")
|
paperweight.paperDevBundle("1.20.1-R0.1-SNAPSHOT", "org.purpurmc.purpur")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
|
|||||||
@@ -2,10 +2,13 @@ package me.youhavetrouble.notjustnameplates;
|
|||||||
|
|
||||||
import me.youhavetrouble.notjustnameplates.commands.MainCommand;
|
import me.youhavetrouble.notjustnameplates.commands.MainCommand;
|
||||||
import me.youhavetrouble.notjustnameplates.nameplates.TeamManagementListener;
|
import me.youhavetrouble.notjustnameplates.nameplates.TeamManagementListener;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
import org.bukkit.permissions.PermissionDefault;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.util.permissions.DefaultPermissions;
|
import org.bukkit.util.permissions.DefaultPermissions;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class NotJustNameplates extends JavaPlugin {
|
public final class NotJustNameplates extends JavaPlugin {
|
||||||
|
|
||||||
private static NotJustNameplates instance;
|
private static NotJustNameplates instance;
|
||||||
|
|||||||
@@ -6,10 +6,13 @@ import net.kyori.adventure.text.Component;
|
|||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.TextDisplay;
|
import org.bukkit.entity.TextDisplay;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
import org.bukkit.util.Transformation;
|
import org.bukkit.util.Transformation;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.joml.AxisAngle4f;
|
import org.joml.AxisAngle4f;
|
||||||
@@ -19,6 +22,9 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class Nameplate {
|
public class Nameplate {
|
||||||
|
|
||||||
|
public static final NamespacedKey NAMEPLATE_KEY = new NamespacedKey(NotJustNameplates.getInstance(), "nameplate");
|
||||||
|
|
||||||
|
protected boolean forceHide = false;
|
||||||
private DisplayContent content;
|
private DisplayContent content;
|
||||||
private final UUID playerUuid;
|
private final UUID playerUuid;
|
||||||
private final float heightOffset = 0.7f;
|
private final float heightOffset = 0.7f;
|
||||||
@@ -32,6 +38,10 @@ public class Nameplate {
|
|||||||
this.content = content;
|
this.content = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected TextDisplay getEntity() {
|
||||||
|
return textDisplay;
|
||||||
|
}
|
||||||
|
|
||||||
private void createDisplayEntity() {
|
private void createDisplayEntity() {
|
||||||
if (textDisplay != null && !textDisplay.isDead()) return;
|
if (textDisplay != null && !textDisplay.isDead()) return;
|
||||||
if (this.content == null) return;
|
if (this.content == null) return;
|
||||||
@@ -44,6 +54,7 @@ public class Nameplate {
|
|||||||
EntityType.TEXT_DISPLAY,
|
EntityType.TEXT_DISPLAY,
|
||||||
CreatureSpawnEvent.SpawnReason.CUSTOM, entity -> {
|
CreatureSpawnEvent.SpawnReason.CUSTOM, entity -> {
|
||||||
TextDisplay textDisplay = (TextDisplay) entity;
|
TextDisplay textDisplay = (TextDisplay) entity;
|
||||||
|
textDisplay.getPersistentDataContainer().set(NAMEPLATE_KEY, PersistentDataType.STRING, player.getName());
|
||||||
textDisplay.setInvulnerable(true);
|
textDisplay.setInvulnerable(true);
|
||||||
textDisplay.setPersistent(false);
|
textDisplay.setPersistent(false);
|
||||||
textDisplay.setAlignment(alignment);
|
textDisplay.setAlignment(alignment);
|
||||||
@@ -103,11 +114,16 @@ public class Nameplate {
|
|||||||
* Update the nameplate position
|
* Update the nameplate position
|
||||||
*/
|
*/
|
||||||
public void update() {
|
public void update() {
|
||||||
|
if (forceHide) {
|
||||||
|
remove();
|
||||||
|
return;
|
||||||
|
}
|
||||||
Player player = Bukkit.getPlayer(playerUuid);
|
Player player = Bukkit.getPlayer(playerUuid);
|
||||||
if (player == null || player.isDead() || content.getCurrentFrame().text() == null) {
|
if (player == null || player.isDead() || content.getCurrentFrame().text() == null) {
|
||||||
remove();
|
remove();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
createDisplayEntity();
|
createDisplayEntity();
|
||||||
if (textDisplay == null || textDisplay.isDead()) return;
|
if (textDisplay == null || textDisplay.isDead()) return;
|
||||||
if (!player.getPassengers().contains(textDisplay)) {
|
if (!player.getPassengers().contains(textDisplay)) {
|
||||||
|
|||||||
+23
-3
@@ -1,20 +1,27 @@
|
|||||||
package me.youhavetrouble.notjustnameplates.nameplates;
|
package me.youhavetrouble.notjustnameplates.nameplates;
|
||||||
|
|
||||||
|
import io.papermc.paper.event.entity.EntityPortalReadyEvent;
|
||||||
import me.youhavetrouble.notjustnameplates.NotJustNameplates;
|
import me.youhavetrouble.notjustnameplates.NotJustNameplates;
|
||||||
import me.youhavetrouble.notjustnameplates.displays.DisplayContent;
|
import me.youhavetrouble.notjustnameplates.displays.DisplayContent;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket;
|
import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket;
|
||||||
import net.minecraft.world.scores.PlayerTeam;
|
import net.minecraft.world.scores.PlayerTeam;
|
||||||
import net.minecraft.world.scores.Scoreboard;
|
import net.minecraft.world.scores.Scoreboard;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.TextDisplay;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.entity.EntityPortalEnterEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.entity.EntityPortalExitEvent;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.*;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
@@ -54,11 +61,24 @@ public class TeamManagementListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
||||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||||
|
NotJustNameplates.getInstance().getLogger().info("Teleport event");
|
||||||
Nameplate nameplate = players.get(event.getPlayer().getName());
|
Nameplate nameplate = players.get(event.getPlayer().getName());
|
||||||
if (nameplate == null) return;
|
if (nameplate == null) return;
|
||||||
nameplate.remove();
|
nameplate.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
||||||
|
public void onPlayerTeleportHindered(EntityTeleportHinderedEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player)) return;
|
||||||
|
if (event.getReason() != EntityTeleportHinderedEvent.Reason.IS_VEHICLE) return;
|
||||||
|
NotJustNameplates.getInstance().getLogger().info("Teleport hindered event");
|
||||||
|
Nameplate nameplate = players.get(player.getName());
|
||||||
|
if (nameplate == null) return;
|
||||||
|
nameplate.remove();
|
||||||
|
event.setShouldRetry(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void reloadTeams() {
|
public void reloadTeams() {
|
||||||
this.players.values().forEach(Nameplate::remove);
|
this.players.values().forEach(Nameplate::remove);
|
||||||
this.players.clear();
|
this.players.clear();
|
||||||
|
|||||||
Reference in New Issue
Block a user