JackOUT

Untitled

Jan 8th, 2022
729
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1. package games.coob.core.specific.hologram;
  2.  
  3. import org.bukkit.Location;
  4. import org.bukkit.entity.ArmorStand;
  5. import org.bukkit.entity.Player;
  6. import org.mineacademy.fo.MinecraftVersion;
  7. import org.mineacademy.fo.ReflectionUtil;
  8. import org.mineacademy.fo.collection.SerializedMap;
  9. import org.mineacademy.fo.exception.FoException;
  10. import org.mineacademy.fo.model.ConfigSerializable;
  11. import org.mineacademy.fo.remain.Remain;
  12.  
  13. import java.util.UUID;
  14.  
  15. public abstract class NMSHologram implements ConfigSerializable {
  16.  
  17.     public void show(Location location, final Player player, final String... linesOfText) {
  18.         final Object nmsWorld = Remain.getHandleWorld(location.getWorld());
  19.  
  20.         setLines(linesOfText);
  21.  
  22.         for (final String line : linesOfText) { // TODO
  23.             final Object nmsArmorStand = this.createEntity(nmsWorld, location);
  24.             final ArmorStand armorStand = ReflectionUtil.invoke("getBukkitEntity", nmsArmorStand);
  25.  
  26.             if (MinecraftVersion.atLeast(MinecraftVersion.V.v1_9))
  27.                 armorStand.setInvisible(true);
  28.  
  29.             Remain.setCustomName(armorStand, line);
  30.  
  31.             this.sendPackets(player, nmsArmorStand);
  32.  
  33.             location = location.subtract(0, 0.26, 0);
  34.         }
  35.  
  36.         // Make a new EntityArmorStand < NOT registered in Bukkit so no Bukkit events
  37.  
  38.         // send 2 packets > PacketSpawnEntity... + EntityMetadata packet
  39.     }
  40.  
  41.     public static NMSHologram deserialize(final SerializedMap map) {
  42.         if (MinecraftVersion.equals(MinecraftVersion.V.v1_16))
  43.             return NMSHologram_v1_16.deserialize(map);
  44.  
  45.         else if (MinecraftVersion.equals(MinecraftVersion.V.v1_17))
  46.             return NMSHologram_v1_17.deserialize(map);
  47.  
  48.         else if (MinecraftVersion.equals(MinecraftVersion.V.v1_8))
  49.             return NMSHologram_v1_8.deserialize(map);
  50.  
  51.         throw new FoException("Unsupported Minecraft version " + MinecraftVersion.getServerVersion());
  52.     }
  53.  
  54.     protected abstract Object createEntity(Object nmsWorld, Location location);
  55.  
  56.     protected abstract void sendPackets(Player player, Object nmsArmorStand);
  57.  
  58.     public abstract UUID getUniqueId();
  59.  
  60.     public abstract Location getLocation();
  61.  
  62.     public abstract void setLines(String[] lines);
  63.  
  64.  
  65.     public abstract String[] getLines();
  66.  
  67.     public static void sendTo(final Location location, final Player player, final String... linesOfText) {
  68.         final NMSHologram hologram;
  69.  
  70.         if (MinecraftVersion.equals(MinecraftVersion.V.v1_8))
  71.             hologram = new NMSHologram_v1_8();
  72.  
  73.         else if (MinecraftVersion.equals(MinecraftVersion.V.v1_16))
  74.             hologram = new NMSHologram_v1_16();
  75.  
  76.         else if (MinecraftVersion.equals(MinecraftVersion.V.v1_17))
  77.             hologram = new NMSHologram_v1_17();
  78.  
  79.         else
  80.             throw new FoException("Unsupported Minecraft version " + MinecraftVersion.getServerVersion());
  81.  
  82.         hologram.show(location, player, linesOfText);
  83.     }
  84. }
  85.  
Advertisement
Add Comment
Please, Sign In to add comment