From 0899a6bad7fdbcbf73c9a5b5fda4d7b908756806 Mon Sep 17 00:00:00 2001 From: sky Date: Mon, 16 Mar 2020 23:30:13 +0800 Subject: [PATCH] Update 5.22 & Update HologramAPI --- build.gradle | 2 +- .../taboolib/module/hologram/Hologram.java | 51 ++++++++++++++++--- .../taboolib/module/hologram/THologram.java | 2 + 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 8f97050..101dc8e 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { } group = 'me.skymc' -version = '5.21' +version = '5.22' sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/src/main/scala/io/izzel/taboolib/module/hologram/Hologram.java b/src/main/scala/io/izzel/taboolib/module/hologram/Hologram.java index 17a92d9..fb7fb58 100644 --- a/src/main/scala/io/izzel/taboolib/module/hologram/Hologram.java +++ b/src/main/scala/io/izzel/taboolib/module/hologram/Hologram.java @@ -7,6 +7,7 @@ import io.izzel.taboolib.module.packet.TPacketHandler; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; +import org.bukkit.util.Vector; import java.util.List; import java.util.Set; @@ -36,13 +37,28 @@ public class Hologram { } } + public Hologram autoDelete() { + this.autoDelete = true; + return this; + } + public Hologram toAll() { this.viewAll = true; return refresh(); } - public Hologram autoDelete() { - this.autoDelete = true; + public Hologram hideAll() { + this.viewAll = false; + return removeViewers(); + } + + public Hologram viewAll(Boolean viewAll) { + if (!this.viewAll && viewAll) { + toAll(); + } + if (this.viewAll && !viewAll) { + hideAll(); + } return this; } @@ -111,6 +127,13 @@ public class Hologram { return this; } + public Hologram flash(Vector vector, int period, int times) { + for (int i = 0; i < times; i++) { + Bukkit.getScheduler().runTaskLater(TabooLib.getPlugin(), () -> flash(location.add(vector)), period * i); + } + return this; + } + public Hologram flash(Location location) { if (deleted) { return this; @@ -160,27 +183,39 @@ public class Hologram { return this; } - public void addViewer(Player player) { + public Hologram addViewer(Player player) { if (deleted) { - return; + return this; } if (!isViewer(player)) { HologramViewer viewer = new HologramViewer(player); viewers.add(viewer); refresh(viewer); } + return this; } - public void removeViewer(Player player) { + public Hologram removeViewer(Player player) { if (deleted) { - return; + return this; } HologramViewer viewer = getViewer(player); viewers.remove(viewer); destroy(viewer); - if (viewers.isEmpty() && autoDelete) { - deleted = true; + if (viewers.isEmpty()) { + deleted = autoDelete; } + return this; + } + + public Hologram removeViewers() { + if (deleted) { + return this; + } + destroy(); + viewers.clear(); + deleted = autoDelete; + return this; } public boolean isViewer(Player player) { diff --git a/src/main/scala/io/izzel/taboolib/module/hologram/THologram.java b/src/main/scala/io/izzel/taboolib/module/hologram/THologram.java index 9b70f00..3a7fcee 100644 --- a/src/main/scala/io/izzel/taboolib/module/hologram/THologram.java +++ b/src/main/scala/io/izzel/taboolib/module/hologram/THologram.java @@ -54,6 +54,8 @@ public class THologram { HologramViewer viewer = hologram.getViewer(player); if (viewer != null) { hologram.refresh(viewer); + } else if (hologram.isViewAll()) { + hologram.addViewer(player); } } }