Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.xericker.mysteryboxes.core.vaults.holograms;
- import com.xericker.mysteryboxes.Main;
- import com.xericker.mysteryboxes.Plugin;
- import com.xericker.mysteryboxes.config.files.VaultsValue;
- import com.xericker.mysteryboxes.config.handlers.ConfigFile;
- import com.xericker.mysteryboxes.config.handlers.ConfigParser;
- import com.xericker.mysteryboxes.core.placeholders.GeneralPlaceholders;
- import com.xericker.mysteryboxes.core.vaults.Vault;
- import com.xericker.mysteryboxes.playerdata.player.PlayerData;
- import com.xericker.mysteryboxes.playerdata.player.PlayerDataManager;
- import org.bukkit.Location;
- import org.bukkit.NamespacedKey;
- import org.bukkit.World;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.entity.ArmorStand;
- import org.bukkit.entity.Display;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.Player;
- import org.bukkit.persistence.PersistentDataType;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- public class Hologram {
- /*-----------------------------------------------------------------------------------------------------------------*/
- private Vault vault;
- private Player player;
- private boolean removed;
- private List<ArmorStand> lines;
- /*-----------------------------------------------------------------------------------------------------------------*/
- public Hologram(Vault vault, Player player) {
- this.vault = vault;
- this.player = player;
- lines = new ArrayList<>();
- }
- /*-----------------------------------------------------------------------------------------------------------------*/
- public void register() {
- FileConfiguration configFile = ConfigFile.VAULTS.getFile();
- if (configFile == null) return;
- String animationPath = "animation-builder";
- ConfigurationSection configSection = configFile.getConfigurationSection(animationPath);
- if (configSection == null) return;
- for (String animationId : configSection.getKeys(false)) {
- HologramAnimation hologramAnimation = new HologramAnimation(animationId, animationPath + "." + animationId, configFile);
- hologramAnimation.register();
- this.animations.add(hologramAnimation);
- }
- }
- /*-----------------------------------------------------------------------------------------------------------------*/
- public void update() {
- if (removed || player == null || !player.isOnline()) return;
- if (vault.isDuringOpening() || vault.isDuringCrafting()) return;
- List<String> hologramLines = new ArrayList<>();
- PlayerData playerData = PlayerDataManager.getData(player);
- int boxesAvailable = playerData.getBoxesAvailable();
- int giftsAvailable = playerData.getGiftsAvailable();
- int dustAvailable = playerData.getDust();
- displayLines:
- for (String displayLine : ConfigParser.getStringList(VaultsValue.HOLOGRAM_LINES)) {
- for (HologramAnimation hologramAnimation : this.animations) {
- if (hologramAnimation.getDisplay() == null) break displayLines;
- String placeholder = "{ANIMATION_[" + hologramAnimation.getAnimationId() + "]}";
- if (!displayLine.contains(placeholder)) continue;
- if (!hologramAnimation.isRequireSyncingData() && !playerData.isDataSynced()) continue displayLines;
- if (hologramAnimation.isRequireBoxes() && boxesAvailable == 0) continue displayLines;
- if (hologramAnimation.isRequireGifts() && giftsAvailable == 0) continue displayLines;
- if (hologramAnimation.isRequireDust() && dustAvailable == 0) continue displayLines;
- if (hologramAnimation.isRequireSyncingData() && playerData.isDataSynced()) continue displayLines;
- displayLine = displayLine.replace(placeholder, hologramAnimation.getDisplay());
- }
- hologramLines.add(displayLine);
- }
- List<String> linesToDisplay = new ArrayList<>();
- for (String hologramLine : hologramLines) {
- linesToDisplay.add(GeneralPlaceholders.translate(player, hologramLine));
- }
- Collections.reverse(linesToDisplay);
- if (linesToDisplay.size() > lines.size() || linesToDisplay.size() < lines.size()) {
- for (ArmorStand line : lines) {
- line.remove();
- }
- lines.clear();
- }
- if (lines.size() > 0) {
- for (int i = 0; i < linesToDisplay.size(); i++) {
- ArmorStand line = lines.get(i);
- line.setCustomName(linesToDisplay.get(i));
- }
- }
- if (lines.size() == 0) {
- for (int i = 0; i < linesToDisplay.size(); i++) {
- Location lineLoc = vault.getVaultLoc().getBlock().getLocation().add(0.5, -1.5 + 0.3 * (i + 1), 0.5);
- ArmorStand line = lineLoc.getWorld().spawn(lineLoc, ArmorStand.class);
- if (!linesToDisplay.get(i).isEmpty()) {
- line.setCustomName(linesToDisplay.get(i));
- line.setCustomNameVisible(true);
- }
- line.setVisible(false);
- line.setGravity(false);
- NamespacedKey vaultKey = new NamespacedKey(Main.getPlugin(), "mysteryVault");
- line.getPersistentDataContainer().set(vaultKey, PersistentDataType.STRING, vault.getVaultId().toString());
- lines.add(line);
- }
- }
- }
- /*-----------------------------------------------------------------------------------------------------------------*/
- public void remove() {
- for (ArmorStand line : lines) {
- line.remove();
- }
- removed = true;
- }
- /*-----------------------------------------------------------------------------------------------------------------*/
- public Vault getVault() {
- return vault;
- }
- public Player getPlayer() {
- return player;
- }
- public boolean isRemoved() {
- return removed;
- }
- public List<ArmorStand> getLines() {
- return lines;
- }
- /*-----------------------------------------------------------------------------------------------------------------*/
- private List<HologramAnimation> animations = new ArrayList<>();
- public List<HologramAnimation> getAnimations() {
- return animations;
- }
- /*-----------------------------------------------------------------------------------------------------------------*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement