mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2025-02-13 18:21:23 +01:00
Build 33
# Added a Hologram System that can display leaderboards of top 10 level or votes. # Added the command '/island admin sethologram' to set the location of a hologram. # Added the command '/island admin removehologram' to remove an existing hologram. # Added the alias '/island teleport <player>' to the command '/island visit [<player>]'. # Added the placeholder 'skyblock_leaderboard_level_<1-10>'. # Added the placeholder 'skyblock_leaderboard_votes_<1-10>'. # Fixed invalid unicode character when adding color codes to signs when saving a structure. # Fixed NSME when sending a World Border to a player on servers using 1.9 & 1.10. # Fixed NSFE when buying 'Spawner Boost' upgrade on servers using paperclip 1.12. # Fixed Placeholders not working for Upgrade messages. # The command '/island admin reload' will also reload the holograms.
This commit is contained in:
parent
e60a4beaa8
commit
c5b789ce6d
@ -14,6 +14,7 @@ import me.goodandevil.skyblock.confirmation.ConfirmationTask;
|
||||
import me.goodandevil.skyblock.creation.CreationManager;
|
||||
import me.goodandevil.skyblock.economy.EconomyManager;
|
||||
import me.goodandevil.skyblock.generator.GeneratorManager;
|
||||
import me.goodandevil.skyblock.hologram.HologramManager;
|
||||
import me.goodandevil.skyblock.invite.InviteManager;
|
||||
import me.goodandevil.skyblock.island.IslandManager;
|
||||
import me.goodandevil.skyblock.leaderboard.LeaderboardManager;
|
||||
@ -69,10 +70,11 @@ public class SkyBlock extends JavaPlugin {
|
||||
private StructureManager structureManager;
|
||||
private SoundManager soundManager;
|
||||
private GeneratorManager generatorManager;
|
||||
private PlaceholderManager placeholderManager;
|
||||
private LeaderboardManager leaderboardManager;
|
||||
private PlaceholderManager placeholderManager;
|
||||
private MessageManager messageManager;
|
||||
private EconomyManager economyManager;
|
||||
private HologramManager hologramManager;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
@ -102,12 +104,14 @@ public class SkyBlock extends JavaPlugin {
|
||||
generatorManager = new GeneratorManager(this);
|
||||
}
|
||||
|
||||
leaderboardManager = new LeaderboardManager(this);
|
||||
|
||||
placeholderManager = new PlaceholderManager(this);
|
||||
placeholderManager.registerPlaceholders();
|
||||
|
||||
leaderboardManager = new LeaderboardManager(this);
|
||||
|
||||
messageManager = new MessageManager(this);
|
||||
economyManager = new EconomyManager();
|
||||
hologramManager = new HologramManager(this);
|
||||
|
||||
new PlaytimeTask(playerDataManager, islandManager).runTaskTimerAsynchronously(this, 0L, 20L);
|
||||
new VisitTask(playerDataManager).runTaskTimerAsynchronously(this, 0L, 20L);
|
||||
@ -168,6 +172,10 @@ public class SkyBlock extends JavaPlugin {
|
||||
if (this.playerDataManager != null) {
|
||||
this.playerDataManager.onDisable();
|
||||
}
|
||||
|
||||
if (this.hologramManager != null) {
|
||||
this.hologramManager.onDisable();
|
||||
}
|
||||
}
|
||||
|
||||
public static SkyBlock getInstance() {
|
||||
@ -238,13 +246,13 @@ public class SkyBlock extends JavaPlugin {
|
||||
return generatorManager;
|
||||
}
|
||||
|
||||
public PlaceholderManager getPlaceholderManager() {
|
||||
return placeholderManager;
|
||||
}
|
||||
|
||||
public LeaderboardManager getLeaderboardManager() {
|
||||
return leaderboardManager;
|
||||
}
|
||||
|
||||
public PlaceholderManager getPlaceholderManager() {
|
||||
return placeholderManager;
|
||||
}
|
||||
|
||||
public MessageManager getMessageManager() {
|
||||
return messageManager;
|
||||
@ -253,6 +261,10 @@ public class SkyBlock extends JavaPlugin {
|
||||
public EconomyManager getEconomyManager() {
|
||||
return economyManager;
|
||||
}
|
||||
|
||||
public HologramManager getHologramManager() {
|
||||
return hologramManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
|
||||
|
@ -54,6 +54,8 @@ import me.goodandevil.skyblock.command.commands.VoteCommand;
|
||||
import me.goodandevil.skyblock.command.commands.WeatherCommand;
|
||||
import me.goodandevil.skyblock.command.commands.admin.GeneratorCommand;
|
||||
import me.goodandevil.skyblock.command.commands.admin.ReloadCommand;
|
||||
import me.goodandevil.skyblock.command.commands.admin.RemoveHologramCommand;
|
||||
import me.goodandevil.skyblock.command.commands.admin.SetHologramCommand;
|
||||
import me.goodandevil.skyblock.command.commands.admin.SetSizeCommand;
|
||||
import me.goodandevil.skyblock.command.commands.admin.StructureCommand;
|
||||
import me.goodandevil.skyblock.config.FileManager;
|
||||
@ -128,6 +130,8 @@ public class CommandManager implements CommandExecutor, TabCompleter {
|
||||
|
||||
subCommands = new ArrayList<>();
|
||||
subCommands.add(new me.goodandevil.skyblock.command.commands.admin.SetSpawnCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Admin.SetSpawn.Info.Message"))));
|
||||
subCommands.add(new SetHologramCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Admin.SetHologram.Info.Message"))));
|
||||
subCommands.add(new RemoveHologramCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Admin.RemoveHologram.Info.Message"))));
|
||||
subCommands.add(new SetSizeCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Admin.SetSize.Info.Message"))));
|
||||
subCommands.add(new me.goodandevil.skyblock.command.commands.admin.CreateCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Admin.Create.Info.Message"))));
|
||||
subCommands.add(new me.goodandevil.skyblock.command.commands.admin.UpgradeCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Admin.Upgrade.Info.Message"))));
|
||||
|
@ -3,6 +3,7 @@ package me.goodandevil.skyblock.command.commands.admin;
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -12,6 +13,9 @@ import me.goodandevil.skyblock.command.SubCommand;
|
||||
import me.goodandevil.skyblock.command.CommandManager.Type;
|
||||
import me.goodandevil.skyblock.config.FileManager;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.hologram.Hologram;
|
||||
import me.goodandevil.skyblock.hologram.HologramManager;
|
||||
import me.goodandevil.skyblock.hologram.HologramType;
|
||||
import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.utils.version.Sounds;
|
||||
@ -27,6 +31,7 @@ public class ReloadCommand extends SubCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(Player player, String[] args) {
|
||||
HologramManager hologramManager = skyblock.getHologramManager();
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
@ -51,6 +56,21 @@ public class ReloadCommand extends SubCommand {
|
||||
skyblock.getScoreboardManager().resendScoreboard();
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (HologramType hologramTypeList : HologramType.values()) {
|
||||
Hologram hologram = hologramManager.getHologram(hologramTypeList);
|
||||
|
||||
if (hologram != null) {
|
||||
hologramManager.removeHologram(hologram);
|
||||
}
|
||||
|
||||
hologramManager.spawnHologram(hologramTypeList);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.Reload.Reloaded.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
|
@ -0,0 +1,123 @@
|
||||
package me.goodandevil.skyblock.command.commands.admin;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.commons.lang3.text.WordUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.command.CommandManager;
|
||||
import me.goodandevil.skyblock.command.SubCommand;
|
||||
import me.goodandevil.skyblock.command.CommandManager.Type;
|
||||
import me.goodandevil.skyblock.config.FileManager;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.hologram.Hologram;
|
||||
import me.goodandevil.skyblock.hologram.HologramManager;
|
||||
import me.goodandevil.skyblock.hologram.HologramType;
|
||||
import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.utils.version.Sounds;
|
||||
|
||||
public class RemoveHologramCommand extends SubCommand {
|
||||
|
||||
private final SkyBlock skyblock;
|
||||
private String info;
|
||||
|
||||
public RemoveHologramCommand(SkyBlock skyblock) {
|
||||
this.skyblock = skyblock;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommand(Player player, String[] args) {
|
||||
HologramManager hologramManager = skyblock.getHologramManager();
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
if (player.hasPermission("skyblock.admin.removehologram") || player.hasPermission("skyblock.admin.*") || player.hasPermission("skyblock.*")) {
|
||||
if (args.length == 1) {
|
||||
HologramType hologramType = null;
|
||||
|
||||
if (args[0].equalsIgnoreCase("Level")) {
|
||||
hologramType = HologramType.Level;
|
||||
} else if (args[0].equalsIgnoreCase("Votes")) {
|
||||
hologramType = HologramType.Votes;
|
||||
}
|
||||
|
||||
if (hologramType != null) {
|
||||
Config locationsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml"));
|
||||
FileConfiguration locationsConfigLoad = locationsConfig.getFileConfiguration();
|
||||
|
||||
if (locationsConfigLoad.getString("Location.Hologram.Leaderboard." + hologramType.name()) == null) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.RemoveHologram.Set.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
locationsConfigLoad.set("Location.Hologram.Leaderboard." + hologramType.name(), null);
|
||||
|
||||
try {
|
||||
locationsConfigLoad.save(locationsConfig.getFile());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
HologramType hologramType = HologramType.valueOf(WordUtils.capitalize(args[0].toLowerCase()));
|
||||
Hologram hologram = hologramManager.getHologram(hologramType);
|
||||
|
||||
if (hologram != null) {
|
||||
hologramManager.removeHologram(hologram);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.RemoveHologram.Removed.Message").replace("%type", hologramType.name()));
|
||||
soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.RemoveHologram.Invalid.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.RemoveHologram.Permission.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "removehologram";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfo() {
|
||||
return info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubCommand setInfo(String info) {
|
||||
this.info = info;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getAliases() {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType() {
|
||||
return CommandManager.Type.Admin;
|
||||
}
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
package me.goodandevil.skyblock.command.commands.admin;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.apache.commons.lang3.text.WordUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.command.CommandManager;
|
||||
import me.goodandevil.skyblock.command.SubCommand;
|
||||
import me.goodandevil.skyblock.command.CommandManager.Type;
|
||||
import me.goodandevil.skyblock.config.FileManager;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.hologram.Hologram;
|
||||
import me.goodandevil.skyblock.hologram.HologramManager;
|
||||
import me.goodandevil.skyblock.hologram.HologramType;
|
||||
import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.utils.version.Sounds;
|
||||
|
||||
public class SetHologramCommand extends SubCommand {
|
||||
|
||||
private final SkyBlock skyblock;
|
||||
private String info;
|
||||
|
||||
public SetHologramCommand(SkyBlock skyblock) {
|
||||
this.skyblock = skyblock;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommand(Player player, String[] args) {
|
||||
HologramManager hologramManager = skyblock.getHologramManager();
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
if (player.hasPermission("skyblock.admin.sethologram") || player.hasPermission("skyblock.admin.*") || player.hasPermission("skyblock.*")) {
|
||||
if (args.length == 1) {
|
||||
HologramType hologramType = null;
|
||||
|
||||
if (args[0].equalsIgnoreCase("Level")) {
|
||||
hologramType = HologramType.Level;
|
||||
} else if (args[0].equalsIgnoreCase("Votes")) {
|
||||
hologramType = HologramType.Votes;
|
||||
}
|
||||
|
||||
if (hologramType != null) {
|
||||
if (hologramType == HologramType.Level || hologramType == HologramType.Votes) {
|
||||
fileManager.setLocation(fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")), "Location.Hologram.Leaderboard." + hologramType.name(), player.getLocation(), true);
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
HologramType hologramType = HologramType.valueOf(WordUtils.capitalize(args[0].toLowerCase()));
|
||||
Hologram hologram = hologramManager.getHologram(hologramType);
|
||||
|
||||
if (hologram != null) {
|
||||
hologramManager.removeHologram(hologram);
|
||||
}
|
||||
|
||||
hologramManager.spawnHologram(hologramType);
|
||||
}
|
||||
});
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.SetHologram.Set.Message").replace("%type", hologramType.name()));
|
||||
soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.SetHologram.Invalid.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.SetHologram.Permission.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "sethologram";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfo() {
|
||||
return info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubCommand setInfo(String info) {
|
||||
this.info = info;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getAliases() {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType() {
|
||||
return CommandManager.Type.Admin;
|
||||
}
|
||||
}
|
75
src/main/java/me/goodandevil/skyblock/hologram/Hologram.java
Normal file
75
src/main/java/me/goodandevil/skyblock/hologram/Hologram.java
Normal file
@ -0,0 +1,75 @@
|
||||
package me.goodandevil.skyblock.hologram;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class Hologram {
|
||||
|
||||
private List<ArmorStand> holograms = new ArrayList<>();
|
||||
|
||||
private HologramType type;
|
||||
private Location location;
|
||||
|
||||
public Hologram(HologramType type, Location location, List<String> lines) {
|
||||
this.type = type;
|
||||
this.location = location;
|
||||
|
||||
for (String lineList : lines) {
|
||||
addLine(lineList);
|
||||
}
|
||||
}
|
||||
|
||||
public void addLine(String text) {
|
||||
ArmorStand as = (ArmorStand) location.getWorld().spawnEntity(location.clone().add(0.0D, getHeight() + getHeightIncrement(), 0.0D), EntityType.ARMOR_STAND);
|
||||
as.setVisible(false);
|
||||
as.setGravity(false);
|
||||
as.setCustomName(ChatColor.translateAlternateColorCodes('&', text));
|
||||
as.setCustomNameVisible(true);
|
||||
|
||||
holograms.add(as);
|
||||
}
|
||||
|
||||
public void setLine(int index, String text) {
|
||||
if (index < holograms.size()) {
|
||||
ArmorStand as = holograms.get(index);
|
||||
|
||||
if (!as.isDead()) {
|
||||
as.setCustomName(ChatColor.translateAlternateColorCodes('&', text));
|
||||
as.setCustomNameVisible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeLine(int index) {
|
||||
if (index < holograms.size()) {
|
||||
ArmorStand as = holograms.get(index);
|
||||
|
||||
if (!as.isDead()) {
|
||||
as.remove();
|
||||
}
|
||||
|
||||
holograms.remove(index);
|
||||
}
|
||||
}
|
||||
|
||||
public double getHeight() {
|
||||
return -2.0D + (holograms.size() * getHeightIncrement());
|
||||
}
|
||||
|
||||
public double getHeightIncrement() {
|
||||
return 0.35;
|
||||
}
|
||||
|
||||
public HologramType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public List<ArmorStand> getHolograms() {
|
||||
return holograms;
|
||||
}
|
||||
}
|
@ -0,0 +1,260 @@
|
||||
package me.goodandevil.skyblock.hologram;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.config.FileManager;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.island.Level;
|
||||
import me.goodandevil.skyblock.leaderboard.Leaderboard;
|
||||
import me.goodandevil.skyblock.leaderboard.LeaderboardManager;
|
||||
import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.utils.NumberUtil;
|
||||
import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.utils.world.LocationUtil;
|
||||
import me.goodandevil.skyblock.visit.Visit;
|
||||
|
||||
public class HologramManager {
|
||||
|
||||
private final SkyBlock skyblock;
|
||||
private List<Hologram> hologramStorage = new ArrayList<>();
|
||||
|
||||
public HologramManager(SkyBlock skyblock) {
|
||||
this.skyblock = skyblock;
|
||||
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLater(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
removeWorldHolograms();
|
||||
|
||||
for (HologramType hologramTypeList : HologramType.values()) {
|
||||
if (hologramTypeList == HologramType.Level || hologramTypeList == HologramType.Votes) {
|
||||
if (hologramTypeList == HologramType.Votes) {
|
||||
if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Vote")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
spawnHologram(hologramTypeList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 200L);
|
||||
}
|
||||
|
||||
public void onDisable() {
|
||||
removeHolograms();
|
||||
}
|
||||
|
||||
public void spawnHologram(HologramType type, Location location, List<String> lines) {
|
||||
hologramStorage.add(new Hologram(type, location, lines));
|
||||
}
|
||||
|
||||
public void spawnHologram(HologramType type) {
|
||||
LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager();
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
Config locationsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml"));
|
||||
FileConfiguration locationsConfigLoad = locationsConfig.getFileConfiguration();
|
||||
FileConfiguration languageConfigLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration();
|
||||
|
||||
if (locationsConfigLoad.getString("Location.Hologram.Leaderboard." + type) != null) {
|
||||
List<Leaderboard> leaderboardPlayers = new ArrayList<>();
|
||||
List<String> hologramLines = new ArrayList<>();
|
||||
|
||||
if (type == HologramType.Level) {
|
||||
leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Level));
|
||||
} else if (type == HologramType.Votes) {
|
||||
leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Votes));
|
||||
}
|
||||
|
||||
hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Header")));
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
if (i < leaderboardPlayers.size()) {
|
||||
Leaderboard leaderboard = leaderboardPlayers.get(i);
|
||||
Visit visit = leaderboard.getVisit();
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID());
|
||||
String islandOwnerName;
|
||||
|
||||
if (targetPlayer == null) {
|
||||
islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName();
|
||||
} else {
|
||||
islandOwnerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
if (type == HologramType.Level) {
|
||||
Level level = visit.getLevel();
|
||||
hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints()))));
|
||||
} else if (type == HologramType.Votes) {
|
||||
hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%votes", "" + NumberUtil.formatNumber(visit.getVoters().size()))));
|
||||
}
|
||||
} else {
|
||||
hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Unclaimed").replace("%position", "" + (i+1))));
|
||||
}
|
||||
}
|
||||
|
||||
String hologramFooter = languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Footer");
|
||||
|
||||
if (!hologramFooter.isEmpty()) {
|
||||
hologramLines.add(messageManager.replaceMessage(null, hologramFooter));
|
||||
}
|
||||
|
||||
Collections.reverse(hologramLines);
|
||||
|
||||
spawnHologram(type, skyblock.getFileManager().getLocation(locationsConfig, "Location.Hologram.Leaderboard." + type, true), hologramLines);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeHologram(Hologram hologram) {
|
||||
if (hologramStorage.contains(hologram)) {
|
||||
List<ArmorStand> holograms = hologram.getHolograms();
|
||||
|
||||
for (Iterator<ArmorStand> it = holograms.iterator(); it.hasNext(); ) {
|
||||
it.next().remove();
|
||||
}
|
||||
|
||||
hologramStorage.remove(hologram);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeHolograms() {
|
||||
for (Hologram hologramList : hologramStorage) {
|
||||
List<ArmorStand> holograms = hologramList.getHolograms();
|
||||
|
||||
for (Iterator<ArmorStand> it = holograms.iterator(); it.hasNext(); ) {
|
||||
it.next().remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeWorldHolograms() {
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
List<Location> locations = new ArrayList<>();
|
||||
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
for (HologramType hologramTypeList : HologramType.values()) {
|
||||
if (hologramTypeList == HologramType.Level || hologramTypeList == HologramType.Votes) {
|
||||
if (configLoad.getString("Location.Hologram.Leaderboard." + hologramTypeList.name()) != null) {
|
||||
locations.add(fileManager.getLocation(config, "Location.Hologram.Leaderboard." + hologramTypeList.name(), true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (World worldList : Bukkit.getWorlds()) {
|
||||
List<Entity> entities = worldList.getEntities();
|
||||
|
||||
for (Iterator<Entity> it = entities.iterator(); it.hasNext(); ) {
|
||||
Entity entity = it.next();
|
||||
|
||||
if (entity instanceof ArmorStand) {
|
||||
for (Location locationList : locations) {
|
||||
if (LocationUtil.isLocationAtLocationRadius(entity.getLocation(), locationList, 1)) {
|
||||
entity.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Hologram getHologram(HologramType type) {
|
||||
for (Hologram hologramList : hologramStorage) {
|
||||
if (hologramList.getType() == type) {
|
||||
return hologramList;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean hasHologram(HologramType type) {
|
||||
for (Hologram hologramList : hologramStorage) {
|
||||
if (hologramList.getType() == type) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void resetHologram() {
|
||||
LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager();
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration();
|
||||
|
||||
for (HologramType hologramTypeList : HologramType.values()) {
|
||||
if (hologramTypeList == HologramType.Level || hologramTypeList == HologramType.Votes) {
|
||||
if (hologramTypeList == HologramType.Votes) {
|
||||
if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Vote")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
Hologram hologram;
|
||||
|
||||
if (hasHologram(hologramTypeList)) {
|
||||
hologram = getHologram(hologramTypeList);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
List<Leaderboard> leaderboardPlayers = new ArrayList<>();
|
||||
|
||||
if (hologramTypeList == HologramType.Level) {
|
||||
leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Level));
|
||||
} else if (hologramTypeList == HologramType.Votes) {
|
||||
leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Votes));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
int hologramLine = 10 - i;
|
||||
|
||||
if (i < leaderboardPlayers.size()) {
|
||||
Leaderboard leaderboard = leaderboardPlayers.get(i);
|
||||
Visit visit = leaderboard.getVisit();
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID());
|
||||
String islandOwnerName;
|
||||
|
||||
if (targetPlayer == null) {
|
||||
islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName();
|
||||
} else {
|
||||
islandOwnerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
if (hologramTypeList == HologramType.Level) {
|
||||
Level level = visit.getLevel();
|
||||
hologram.setLine(hologramLine, messageManager.replaceMessage(null, configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints()))));
|
||||
} else if (hologramTypeList == HologramType.Votes) {
|
||||
hologram.setLine(hologramLine, messageManager.replaceMessage(null, configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%votes", "" + NumberUtil.formatNumber(visit.getVoters().size()))));
|
||||
}
|
||||
} else {
|
||||
hologram.setLine(hologramLine, messageManager.replaceMessage(null, configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Unclaimed").replace("%position", "" + (i+1))));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package me.goodandevil.skyblock.hologram;
|
||||
|
||||
public enum HologramType {
|
||||
|
||||
Level,
|
||||
Votes;
|
||||
|
||||
}
|
@ -17,5 +17,7 @@ public class LeaderboardTask extends BukkitRunnable {
|
||||
LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager();
|
||||
leaderboardManager.clearLeaderboard();
|
||||
leaderboardManager.resetLeaderboard();
|
||||
|
||||
skyblock.getHologramManager().resetHologram();
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
@ -22,6 +23,7 @@ import org.bukkit.event.block.BlockPistonRetractEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.block.BlockSpreadEvent;
|
||||
import org.bukkit.event.block.LeavesDecayEvent;
|
||||
import org.bukkit.event.block.SignChangeEvent;
|
||||
import org.bukkit.material.Crops;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
@ -47,6 +49,11 @@ public class Block implements Listener {
|
||||
public Block(SkyBlock skyblock) {
|
||||
this.skyblock = skyblock;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onSignChange(SignChangeEvent event) {
|
||||
event.setLine(0, ChatColor.RED + "test");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.goodandevil.skyblock.placeholder;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -14,144 +15,179 @@ import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.island.Island;
|
||||
import me.goodandevil.skyblock.island.IslandManager;
|
||||
import me.goodandevil.skyblock.island.Level;
|
||||
import me.goodandevil.skyblock.island.Role;
|
||||
import me.goodandevil.skyblock.leaderboard.Leaderboard;
|
||||
import me.goodandevil.skyblock.leaderboard.LeaderboardManager;
|
||||
import me.goodandevil.skyblock.utils.NumberUtil;
|
||||
import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.visit.Visit;
|
||||
|
||||
public class EZPlaceholder extends PlaceholderExpansion {
|
||||
|
||||
private final SkyBlock skyblock;
|
||||
|
||||
public EZPlaceholder(SkyBlock skyblock) {
|
||||
this.skyblock = skyblock;
|
||||
private final SkyBlock skyblock;
|
||||
|
||||
public EZPlaceholder(SkyBlock skyblock) {
|
||||
this.skyblock = skyblock;
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return "skyblock";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return "skyblock";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
public String getPlugin() {
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthor() {
|
||||
return skyblock.getDescription().getAuthors().get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return skyblock.getDescription().getVersion();
|
||||
}
|
||||
|
||||
public String onPlaceholderRequest(Player player, String identifier) {
|
||||
if (identifier.equalsIgnoreCase("islands")) {
|
||||
return "" + skyblock.getVisitManager().getIslands().size();
|
||||
}
|
||||
|
||||
if (player == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
if (islandManager.hasIsland(player)) {
|
||||
Island island = islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner());
|
||||
|
||||
switch (identifier) {
|
||||
case "island_size":
|
||||
return value(configLoad, "Placeholder.skyblock_island_size.Non-empty.Message", island.getSize());
|
||||
case "island_radius":
|
||||
return value(configLoad, "Placeholder.skyblock_island_radius.Non-empty.Message", island.getSize());
|
||||
case "island_level":
|
||||
return value(configLoad, "Placeholder.skyblock_island_level.Non-empty.Message", island.getLevel().getLevel());
|
||||
case "island_points":
|
||||
return value(configLoad, "Placeholder.skyblock_island_points.Non-empty.Message", island.getLevel().getPoints());
|
||||
case "island_biome":
|
||||
return value(configLoad, "Placeholder.skyblock_island_biome.Non-empty.Message", island.getBiomeName());
|
||||
case "island_time":
|
||||
return value(configLoad, "Placeholder.skyblock_island_time.Non-empty.Message", island.getTime());
|
||||
case "island_weather":
|
||||
return value(configLoad, "Placeholder.skyblock_island_weather.Non-empty.Message", island.getWeatherName());
|
||||
case "island_bans":
|
||||
return value(configLoad, "Placeholder.skyblock_island_bans.Non-empty.Message", island.getBan().getBans().size());
|
||||
case "island_members_total":
|
||||
return value(configLoad, "Placeholder.skyblock_island_members_total.Non-empty.Message", (island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1));
|
||||
case "island_members":
|
||||
return value(configLoad, "Placeholder.skyblock_island_members.Non-empty.Message", island.getRole(Role.Member).size());
|
||||
case "island_operators":
|
||||
return value(configLoad, "Placeholder.skyblock_island_operators.Non-empty.Message", island.getRole(Role.Operator).size());
|
||||
case "island_visitors":
|
||||
return value(configLoad, "Placeholder.skyblock_island_visitors.Non-empty.Message", island.getVisitors().size());
|
||||
case "island_role":
|
||||
for (Role roleList : Role.values()) {
|
||||
if (island.isRole(roleList, player.getUniqueId())) {
|
||||
return value(configLoad, "Placeholder.skyblock_island_role.Non-empty.Message", roleList.name());
|
||||
}
|
||||
}
|
||||
case "island_owner":
|
||||
UUID owner = island.getOwnerUUID();
|
||||
Player target = Bukkit.getServer().getPlayer(owner);
|
||||
|
||||
if (target == null) {
|
||||
return value(configLoad, "Placeholder.skyblock_island_owner.Non-empty.Other.Message", Bukkit.getServer().getOfflinePlayer(owner).getName());
|
||||
}
|
||||
if (target.getName().equals(player.getName())) {
|
||||
return value(configLoad, "Placeholder.skyblock_island_owner.Non-empty.Yourself.Message", target.getName());
|
||||
} else {
|
||||
return value(configLoad, "Placeholder.skyblock_island_owner.Non-empty.Other.Message", target.getName());
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (identifier) {
|
||||
case "island_size":
|
||||
return value(configLoad, "Placeholder.skyblock_island_size.Empty.Message");
|
||||
case "island_radius":
|
||||
return value(configLoad, "Placeholder.skyblock_island_radius.Empty.Message");
|
||||
case "island_level":
|
||||
return value(configLoad, "Placeholder.skyblock_island_level.Empty.Message");
|
||||
case "island_points":
|
||||
return value(configLoad, "Placeholder.skyblock_island_points.Empty.Message");
|
||||
case "island_role":
|
||||
return value(configLoad, "Placeholder.skyblock_island_role.Empty.Message");
|
||||
case "island_owner":
|
||||
return value(configLoad, "Placeholder.skyblock_island_owner.Empty.Message");
|
||||
case "island_biome":
|
||||
return value(configLoad, "Placeholder.skyblock_island_biome.Empty.Message");
|
||||
case "island_time":
|
||||
return value(configLoad, "Placeholder.skyblock_island_time.Empty.Message");
|
||||
case "island_weather":
|
||||
return value(configLoad, "Placeholder.skyblock_island_weather.Empty.Message");
|
||||
case "island_bans":
|
||||
return value(configLoad, "Placeholder.skyblock_island_bans.Empty.Message");
|
||||
case "island_members_total":
|
||||
return value(configLoad, "Placeholder.skyblock_island_members_total.Empty.Message");
|
||||
case "island_members":
|
||||
return value(configLoad, "Placeholder.skyblock_island_members.Empty.Message");
|
||||
case "island_operators":
|
||||
return value(configLoad, "Placeholder.skyblock_island_operators.Empty.Message");
|
||||
case "island_visitors":
|
||||
return value(configLoad, "Placeholder.skyblock_island_visitors.Empty.Message");
|
||||
public String getAuthor() {
|
||||
return skyblock.getDescription().getAuthors().get(0);
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return skyblock.getDescription().getVersion();
|
||||
}
|
||||
|
||||
public String onPlaceholderRequest(Player player, String identifier) {
|
||||
LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager();
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
List<Leaderboard> leaderboardLevelPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Level);
|
||||
List<Leaderboard> leaderboardVotesPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Votes);
|
||||
|
||||
if (identifier.equalsIgnoreCase("islands")) {
|
||||
return "" + skyblock.getVisitManager().getIslands().size();
|
||||
} else {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
if (identifier.equalsIgnoreCase("skyblock_leaderboard_votes_" + (i+1))) {
|
||||
if (i < leaderboardVotesPlayers.size()) {
|
||||
Leaderboard leaderboard = leaderboardVotesPlayers.get(i);
|
||||
Visit visit = leaderboard.getVisit();
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID());
|
||||
String islandOwnerName;
|
||||
|
||||
if (targetPlayer == null) {
|
||||
islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName();
|
||||
} else {
|
||||
islandOwnerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_votes.Non-empty.Message").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%votes", NumberUtil.formatNumber(visit.getVoters().size())));
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_votes.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("skyblock_leaderboard_level_" + (i+1))) {
|
||||
if (i < leaderboardLevelPlayers.size()) {
|
||||
Leaderboard leaderboard = leaderboardLevelPlayers.get(i);
|
||||
Visit visit = leaderboard.getVisit();
|
||||
Level level = visit.getLevel();
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID());
|
||||
String islandOwnerName;
|
||||
|
||||
if (targetPlayer == null) {
|
||||
islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName();
|
||||
} else {
|
||||
islandOwnerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_level.Non-empty.Message").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints())));
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_level.Empty.Message"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(player == null){
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
if (islandManager.hasIsland(player)) {
|
||||
Island island = islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner());
|
||||
|
||||
if (identifier.equalsIgnoreCase("island_size")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_size.Non-empty.Message").replace("%placeholder", "" + island.getSize()));
|
||||
} else if (identifier.equalsIgnoreCase("island_radius")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_radius.Non-empty.Message").replace("%placeholder", "" + island.getRadius()));
|
||||
} else if (identifier.equalsIgnoreCase("island_level")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_level.Non-empty.Message").replace("%placeholder", "" + island.getLevel().getLevel()));
|
||||
} else if (identifier.equalsIgnoreCase("island_points")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Non-empty.Message").replace("%placeholder", "" + island.getLevel().getPoints()));
|
||||
} else if (identifier.equalsIgnoreCase("island_role")) {
|
||||
for (Role roleList : Role.values()) {
|
||||
if (island.isRole(roleList, player.getUniqueId())) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Non-empty.Message").replace("%placeholder", roleList.name()));
|
||||
}
|
||||
}
|
||||
} else if (identifier.equalsIgnoreCase("island_owner")) {
|
||||
UUID islandOwnerUUID = island.getOwnerUUID();
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID);
|
||||
|
||||
if (targetPlayer == null) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", Bukkit.getServer().getOfflinePlayer(islandOwnerUUID).getName()));
|
||||
} else {
|
||||
if (targetPlayer.getName().equals(player.getName())) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Yourself.Message").replace("%placeholder", targetPlayer.getName()));
|
||||
} else {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", targetPlayer.getName()));
|
||||
}
|
||||
}
|
||||
} else if (identifier.equalsIgnoreCase("island_biome")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Non-empty.Message").replace("%placeholder", island.getBiomeName()));
|
||||
} else if (identifier.equalsIgnoreCase("island_time")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Non-empty.Message").replace("%placeholder", "" + island.getTime()));
|
||||
} else if (identifier.equalsIgnoreCase("island_weather")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Non-empty.Message").replace("%placeholder", "" + island.getWeatherName()));
|
||||
} else if (identifier.equalsIgnoreCase("island_bans")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Non-empty.Message").replace("%placeholder", "" + island.getBan().getBans().size()));
|
||||
} else if (identifier.equalsIgnoreCase("island_members_total")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Non-empty.Message").replace("%placeholder", "" + (island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1)));
|
||||
} else if (identifier.equalsIgnoreCase("island_members")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Non-empty.Message").replace("%placeholder", "" + island.getRole(Role.Member).size()));
|
||||
} else if (identifier.equalsIgnoreCase("island_operators")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Non-empty.Message").replace("%placeholder", "" + island.getRole(Role.Operator).size()));
|
||||
} else if (identifier.equalsIgnoreCase("island_visitors")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Non-empty.Message").replace("%placeholder", "" + island.getVisitors().size()));
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if (identifier.equalsIgnoreCase("island_size")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_size.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_radius")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_radius.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_level")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_level.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_points")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_role")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_owner")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_biome")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_time")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_weather")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_bans")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_members_total")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_members")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_operators")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Empty.Message"));
|
||||
} else if (identifier.equalsIgnoreCase("island_visitors")) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Empty.Message"));
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private String color(String msg) {
|
||||
return ChatColor.translateAlternateColorCodes('&', msg);
|
||||
}
|
||||
|
||||
private String value(FileConfiguration configLoad, String string, Object value) {
|
||||
return color(configLoad.getString(string).replace("%placeholder", (CharSequence) value));
|
||||
}
|
||||
|
||||
private String value(FileConfiguration configLoad, String string) {
|
||||
return color(configLoad.getString(string));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.goodandevil.skyblock.placeholder;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -16,7 +17,13 @@ import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.island.Island;
|
||||
import me.goodandevil.skyblock.island.IslandManager;
|
||||
import me.goodandevil.skyblock.island.Level;
|
||||
import me.goodandevil.skyblock.island.Role;
|
||||
import me.goodandevil.skyblock.leaderboard.Leaderboard;
|
||||
import me.goodandevil.skyblock.leaderboard.LeaderboardManager;
|
||||
import me.goodandevil.skyblock.utils.NumberUtil;
|
||||
import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.visit.Visit;
|
||||
|
||||
public class MVdWPlaceholder {
|
||||
|
||||
@ -27,17 +34,74 @@ public class MVdWPlaceholder {
|
||||
}
|
||||
|
||||
public void register() {
|
||||
LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager();
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
List<Leaderboard> leaderboardLevelPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Level);
|
||||
List<Leaderboard> leaderboardVotesPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Votes);
|
||||
|
||||
PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_islands", new PlaceholderReplacer() {
|
||||
@Override
|
||||
public String onPlaceholderReplace(PlaceholderReplaceEvent event) {
|
||||
return "" + skyblock.getVisitManager().getIslands().size();
|
||||
}
|
||||
});
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_leaderboard_votes_" + (i+1), new PlaceholderReplacer() {
|
||||
@Override
|
||||
public String onPlaceholderReplace(PlaceholderReplaceEvent event) {
|
||||
int index = Integer.valueOf(event.getPlaceholder().replace("skyblock_leaderboard_votes_", ""));
|
||||
|
||||
if (index < leaderboardVotesPlayers.size()) {
|
||||
Leaderboard leaderboard = leaderboardVotesPlayers.get(index);
|
||||
Visit visit = leaderboard.getVisit();
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID());
|
||||
String islandOwnerName;
|
||||
|
||||
if (targetPlayer == null) {
|
||||
islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName();
|
||||
} else {
|
||||
islandOwnerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_votes.Non-empty.Message").replace("%position", "" + (index+1)).replace("%player", islandOwnerName).replace("%votes", NumberUtil.formatNumber(visit.getVoters().size())));
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_votes.Empty.Message"));
|
||||
}
|
||||
});
|
||||
|
||||
PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_leaderboard_level_" + (i+1), new PlaceholderReplacer() {
|
||||
@Override
|
||||
public String onPlaceholderReplace(PlaceholderReplaceEvent event) {
|
||||
int index = Integer.valueOf(event.getPlaceholder().replace("skyblock_leaderboard_level_", ""));
|
||||
|
||||
if (index < leaderboardLevelPlayers.size()) {
|
||||
Leaderboard leaderboard = leaderboardLevelPlayers.get(index);
|
||||
Visit visit = leaderboard.getVisit();
|
||||
Level level = visit.getLevel();
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID());
|
||||
String islandOwnerName;
|
||||
|
||||
if (targetPlayer == null) {
|
||||
islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName();
|
||||
} else {
|
||||
islandOwnerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_level.Non-empty.Message").replace("%position", "" + (index+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints())));
|
||||
}
|
||||
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_leaderboard_level.Empty.Message"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
PlaceholderAPI.registerPlaceholder(skyblock, "skyblock_island_size", new PlaceholderReplacer() {
|
||||
@Override
|
||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -147,7 +148,24 @@ public final class BlockUtil {
|
||||
blockData.setStateType(BlockStateType.JUKEBOX.toString());
|
||||
} else if (blockState instanceof Sign) {
|
||||
Sign sign = (Sign) blockState;
|
||||
blockData.setSignLines(sign.getLines());
|
||||
|
||||
String[] signLines = sign.getLines();
|
||||
|
||||
if (signLines != null) {
|
||||
List<String> correctedSignLines = new ArrayList<>();
|
||||
|
||||
for (String signLineList : signLines) {
|
||||
for (ChatColor chatColorList : ChatColor.values()) {
|
||||
signLineList = signLineList.replace(chatColorList + "", "&" + chatColorList.toString().substring(chatColorList.toString().length() -1));
|
||||
}
|
||||
|
||||
correctedSignLines.add(signLineList);
|
||||
}
|
||||
|
||||
signLines = correctedSignLines.toArray(new String[correctedSignLines.size()]);
|
||||
}
|
||||
|
||||
blockData.setSignLines(signLines);
|
||||
blockData.setStateType(BlockStateType.SIGN.toString());
|
||||
} else if (blockState instanceof Skull) {
|
||||
Skull skull = (Skull) blockState;
|
||||
@ -306,7 +324,7 @@ public final class BlockUtil {
|
||||
Sign sign = (Sign) block.getState();
|
||||
|
||||
for (int i = 0; i < blockData.getSignLines().length; i++) {
|
||||
sign.setLine(i, blockData.getSignLines()[i]);
|
||||
sign.setLine(i, ChatColor.translateAlternateColorCodes('&', blockData.getSignLines()[i]));
|
||||
}
|
||||
|
||||
sign.update();
|
||||
|
@ -652,6 +652,26 @@ Command:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou cannot set the spawn point in an Island world."
|
||||
Set:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eThe spawn point has been set to your location."
|
||||
SetHologram:
|
||||
Info:
|
||||
Message: "&f&oSets the location of a hologram."
|
||||
Permission:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou don't have permission to perform that command."
|
||||
Invalid:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eInvalid: /island admin sethologram <Level|Votes>"
|
||||
Set:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eThe '&b%type&e' hologram has been set to your location."
|
||||
RemoveHologram:
|
||||
Info:
|
||||
Message: "&f&oRemoves an existing hologram."
|
||||
Permission:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou don't have permission to perform that command."
|
||||
Invalid:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eInvalid: /island admin removehologram <Level|Votes>"
|
||||
Set:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eA location for that hologram has not been set."
|
||||
Removed:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eYou have removed the '&b%type&e' hologram."
|
||||
SetSize:
|
||||
Info:
|
||||
Message: "&f&oSets the size of a players Island."
|
||||
@ -900,6 +920,16 @@ Island:
|
||||
Division:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eYou have set the points division to '&f%division&e'."
|
||||
Placeholder:
|
||||
skyblock_leaderboard_level:
|
||||
Empty:
|
||||
Message: "&f&oUnclaimed"
|
||||
Non-empty:
|
||||
Message: "&f[%position] %player [%level]"
|
||||
skyblock_leaderboard_votes:
|
||||
Empty:
|
||||
Message: "&f&oUnclaimed"
|
||||
Non-empty:
|
||||
Message: "&f[%position] %player [%votes]"
|
||||
skyblock_island_size:
|
||||
Empty:
|
||||
Message: "&c0"
|
||||
@ -973,6 +1003,18 @@ Placeholder:
|
||||
Message: "&c0"
|
||||
Non-empty:
|
||||
Message: "&f%placeholder"
|
||||
Hologram:
|
||||
Leaderboard:
|
||||
Level:
|
||||
Header: "&b&lSkyBlock &8&l| &e&lTop 10 Level"
|
||||
Claimed: "&8* &f&o[%position] &a%player &7- &6%level"
|
||||
Unclaimed: "&8* &f&o[%position] &7&oUnclaimed Position"
|
||||
Footer: "&ewww.example.net"
|
||||
Votes:
|
||||
Header: "&b&lSkyBlock &8&l| &e&lTop 10 Votes"
|
||||
Claimed: "&8* &f&o[%position] &a%player &7- &6%votes"
|
||||
Unclaimed: "&8* &f&o[%position] &7&oUnclaimed Position"
|
||||
Footer: "&ewww.example.net"
|
||||
Scoreboard:
|
||||
Tutorial:
|
||||
Displayname: "&b&lSkyBlock"
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: SkyBlock
|
||||
main: me.goodandevil.skyblock.SkyBlock
|
||||
version: 32
|
||||
version: 33
|
||||
api-version: 1.13
|
||||
description: A unique SkyBlock plugin
|
||||
author: GoodAndEvil
|
||||
|
Loading…
Reference in New Issue
Block a user