Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package games.coob.core.specific.hologram;
- import org.bukkit.Location;
- import org.bukkit.entity.ArmorStand;
- import org.bukkit.entity.Player;
- import org.mineacademy.fo.MinecraftVersion;
- import org.mineacademy.fo.ReflectionUtil;
- import org.mineacademy.fo.collection.SerializedMap;
- import org.mineacademy.fo.exception.FoException;
- import org.mineacademy.fo.model.ConfigSerializable;
- import org.mineacademy.fo.remain.Remain;
- import java.util.UUID;
- public abstract class NMSHologram implements ConfigSerializable {
- public void show(Location location, final Player player, final String... linesOfText) {
- final Object nmsWorld = Remain.getHandleWorld(location.getWorld());
- setLines(linesOfText);
- for (final String line : linesOfText) { // TODO
- final Object nmsArmorStand = this.createEntity(nmsWorld, location);
- final ArmorStand armorStand = ReflectionUtil.invoke("getBukkitEntity", nmsArmorStand);
- if (MinecraftVersion.atLeast(MinecraftVersion.V.v1_9))
- armorStand.setInvisible(true);
- Remain.setCustomName(armorStand, line);
- this.sendPackets(player, nmsArmorStand);
- location = location.subtract(0, 0.26, 0);
- }
- // Make a new EntityArmorStand < NOT registered in Bukkit so no Bukkit events
- // send 2 packets > PacketSpawnEntity... + EntityMetadata packet
- }
- public static NMSHologram deserialize(final SerializedMap map) {
- if (MinecraftVersion.equals(MinecraftVersion.V.v1_16))
- return NMSHologram_v1_16.deserialize(map);
- else if (MinecraftVersion.equals(MinecraftVersion.V.v1_17))
- return NMSHologram_v1_17.deserialize(map);
- else if (MinecraftVersion.equals(MinecraftVersion.V.v1_8))
- return NMSHologram_v1_8.deserialize(map);
- throw new FoException("Unsupported Minecraft version " + MinecraftVersion.getServerVersion());
- }
- protected abstract Object createEntity(Object nmsWorld, Location location);
- protected abstract void sendPackets(Player player, Object nmsArmorStand);
- public abstract UUID getUniqueId();
- public abstract Location getLocation();
- public abstract void setLines(String[] lines);
- public abstract String[] getLines();
- public static void sendTo(final Location location, final Player player, final String... linesOfText) {
- final NMSHologram hologram;
- if (MinecraftVersion.equals(MinecraftVersion.V.v1_8))
- hologram = new NMSHologram_v1_8();
- else if (MinecraftVersion.equals(MinecraftVersion.V.v1_16))
- hologram = new NMSHologram_v1_16();
- else if (MinecraftVersion.equals(MinecraftVersion.V.v1_17))
- hologram = new NMSHologram_v1_17();
- else
- throw new FoException("Unsupported Minecraft version " + MinecraftVersion.getServerVersion());
- hologram.show(location, player, linesOfText);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment