diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 259460db..a54e657b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,9 @@ image: gradle:alpine variables: + name: "FabledSkyBlock" path: "/builds/$CI_PROJECT_PATH" + version: "Build-78.5" before_script: - export GRADLE_USER_HOME=`pwd`/.gradle @@ -12,6 +14,7 @@ stages: build: stage: build script: + - find $path/ -type f -name "*.gradle" -print0 | xargs -0 sed -i -e s/maven-version-number/$version/g - gradle build - mv $path/build/libs/*.jar $path/ artifacts: diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/SkyBlock.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/SkyBlock.java new file mode 100644 index 00000000..86598be8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/SkyBlock.java @@ -0,0 +1,335 @@ +package com.songoda.skyblock; + +import com.songoda.skyblock.api.SkyBlockAPI; +import com.songoda.skyblock.ban.BanManager; +import com.songoda.skyblock.biome.BiomeManager; +import com.songoda.skyblock.command.CommandManager; +import com.songoda.skyblock.command.commands.SkyBlockCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.confirmation.ConfirmationTask; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.economy.EconomyManager; +import com.songoda.skyblock.generator.GeneratorManager; +import com.songoda.skyblock.hologram.HologramManager; +import com.songoda.skyblock.invite.InviteManager; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.leaderboard.LeaderboardManager; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.limit.LimitManager; +import com.songoda.skyblock.listeners.*; +import com.songoda.skyblock.menus.Rollback; +import com.songoda.skyblock.menus.admin.Creator; +import com.songoda.skyblock.menus.admin.Generator; +import com.songoda.skyblock.menus.admin.Levelling; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.PlaceholderManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.playtime.PlaytimeTask; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.stackable.StackableManager; +import com.songoda.skyblock.structure.StructureManager; +import com.songoda.skyblock.upgrade.UpgradeManager; +import com.songoda.skyblock.usercache.UserCacheManager; +import com.songoda.skyblock.utils.Metrics; +import com.songoda.skyblock.visit.VisitManager; +import com.songoda.skyblock.visit.VisitTask; +import com.songoda.skyblock.world.WorldManager; +import com.songoda.skyblock.world.generator.VoidGenerator; +import com.songoda.update.Plugin; +import com.songoda.update.SongodaUpdate; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.event.HandlerList; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.File; + +public class SkyBlock extends JavaPlugin { + + private static SkyBlock instance; + + private FileManager fileManager; + private WorldManager worldManager; + private UserCacheManager userCacheManager; + private VisitManager visitManager; + private BanManager banManager; + private IslandManager islandManager; + private UpgradeManager upgradeManager; + private PlayerDataManager playerDataManager; + private CooldownManager cooldownManager; + private LimitManager limitManager; + private ScoreboardManager scoreboardManager; + private InviteManager inviteManager; + private BiomeManager biomeManager; + private LevellingManager levellingManager; + private CommandManager commandManager; + private StructureManager structureManager; + private StackableManager stackableManager; + private SoundManager soundManager; + private GeneratorManager generatorManager; + private LeaderboardManager leaderboardManager; + private PlaceholderManager placeholderManager; + private MessageManager messageManager; + private EconomyManager economyManager; + private HologramManager hologramManager; + + public static SkyBlock getInstance() { + return instance; + } + + @Override + public void onEnable() { + ConsoleCommandSender console = Bukkit.getConsoleSender(); + console.sendMessage(formatText("&a=============================")); + console.sendMessage(formatText("&7FabledSkyBlock " + this.getDescription().getVersion() + " by &5Songoda <3&7!")); + console.sendMessage(formatText("&7Action: &aEnabling&7...")); + console.sendMessage(formatText("&a=============================")); + + instance = this; + + fileManager = new FileManager(this); + worldManager = new WorldManager(this); + userCacheManager = new UserCacheManager(this); + economyManager = new EconomyManager(); + visitManager = new VisitManager(this); + banManager = new BanManager(this); + islandManager = new IslandManager(this); + upgradeManager = new UpgradeManager(this); + playerDataManager = new PlayerDataManager(this); + cooldownManager = new CooldownManager(this); + limitManager = new LimitManager(this); + + if (fileManager.getConfig(new File(getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Scoreboard.Enable")) { + scoreboardManager = new ScoreboardManager(this); + } + + inviteManager = new InviteManager(this); + biomeManager = new BiomeManager(this); + levellingManager = new LevellingManager(this); + commandManager = new CommandManager(this); + structureManager = new StructureManager(this); + soundManager = new SoundManager(this); + + if (fileManager.getConfig(new File(getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Generator.Enable")) { + generatorManager = new GeneratorManager(this); + } + + if (fileManager.getConfig(new File(getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Stackable.Enable")) { + stackableManager = new StackableManager(this); + Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> stackableManager.loadSavedStackables(), 5L); + } + + leaderboardManager = new LeaderboardManager(this); + + placeholderManager = new PlaceholderManager(this); + placeholderManager.registerPlaceholders(); + + messageManager = new MessageManager(this); + hologramManager = new HologramManager(this); + + new PlaytimeTask(playerDataManager, islandManager).runTaskTimerAsynchronously(this, 0L, 20L); + new VisitTask(playerDataManager).runTaskTimerAsynchronously(this, 0L, 20L); + new ConfirmationTask(playerDataManager).runTaskTimerAsynchronously(this, 0L, 20L); + + PluginManager pluginManager = getServer().getPluginManager(); + pluginManager.registerEvents(new Join(this), this); + pluginManager.registerEvents(new Quit(this), this); + pluginManager.registerEvents(new Block(this), this); + pluginManager.registerEvents(new Interact(this), this); + pluginManager.registerEvents(new Entity(this), this); + pluginManager.registerEvents(new Bucket(this), this); + pluginManager.registerEvents(new Projectile(this), this); + pluginManager.registerEvents(new Inventory(this), this); + pluginManager.registerEvents(new Item(this), this); + pluginManager.registerEvents(new Teleport(this), this); + pluginManager.registerEvents(new Portal(this), this); + pluginManager.registerEvents(new Move(this), this); + pluginManager.registerEvents(new Death(this), this); + pluginManager.registerEvents(new Respawn(this), this); + pluginManager.registerEvents(new Chat(this), this); + pluginManager.registerEvents(new Spawner(this), this); + pluginManager.registerEvents(new Food(this), this); + + if (pluginManager.isPluginEnabled("EpicSpawners")) + pluginManager.registerEvents(new EpicSpawners(this), this); + if (pluginManager.isPluginEnabled("WildStacker")) + pluginManager.registerEvents(new WildStacker(this), this); + if (pluginManager.isPluginEnabled("UltimateStacker")) + pluginManager.registerEvents(new UltimateStacker(this), this); + + pluginManager.registerEvents(new Rollback(), this); + pluginManager.registerEvents(new Levelling(), this); + pluginManager.registerEvents(new Generator(), this); + pluginManager.registerEvents(new Creator(), this); + + this.getCommand("skyblock").setExecutor(new SkyBlockCommand()); + + // bStats Metrics + new Metrics(this); + + // Songoda Updater + Plugin plugin = new Plugin(this, 17); + SongodaUpdate.load(plugin); + + SkyBlockAPI.setImplementation(instance); + } + + @Override + public void onDisable() { + ConsoleCommandSender console = Bukkit.getConsoleSender(); + console.sendMessage(formatText("&a=============================")); + console.sendMessage(formatText("&7FabledSkyBlock " + this.getDescription().getVersion() + " by &5Songoda <3&7!")); + console.sendMessage(formatText("&7Action: &cDisabling&7...")); + console.sendMessage(formatText("&a=============================")); + + if (this.userCacheManager != null) { + this.userCacheManager.onDisable(); + } + + if (this.islandManager != null) { + this.islandManager.onDisable(); + } + + if (this.visitManager != null) { + this.visitManager.onDisable(); + } + + if (this.banManager != null) { + this.banManager.onDisable(); + } + + if (this.playerDataManager != null) { + this.playerDataManager.onDisable(); + } + + if (this.cooldownManager != null) { + this.cooldownManager.onDisable(); + } + + if (this.hologramManager != null) { + this.hologramManager.onDisable(); + } + + HandlerList.unregisterAll(this); + } + + private String formatText(String string) { + return ChatColor.translateAlternateColorCodes('&', string); + } + + public FileManager getFileManager() { + return fileManager; + } + + public WorldManager getWorldManager() { + return worldManager; + } + + public UserCacheManager getUserCacheManager() { + return userCacheManager; + } + + public VisitManager getVisitManager() { + return visitManager; + } + + public BanManager getBanManager() { + return banManager; + } + + public IslandManager getIslandManager() { + return islandManager; + } + + public UpgradeManager getUpgradeManager() { + return upgradeManager; + } + + public PlayerDataManager getPlayerDataManager() { + return playerDataManager; + } + + public CooldownManager getCooldownManager() { + return cooldownManager; + } + + public LimitManager getLimitManager() { + return limitManager; + } + + public ScoreboardManager getScoreboardManager() { + return scoreboardManager; + } + + public void setScoreboardManager(ScoreboardManager scoreboardManager) { + this.scoreboardManager = scoreboardManager; + } + + public InviteManager getInviteManager() { + return inviteManager; + } + + public BiomeManager getBiomeManager() { + return biomeManager; + } + + public LevellingManager getLevellingManager() { + return levellingManager; + } + + public CommandManager getCommandManager() { + return commandManager; + } + + public StructureManager getStructureManager() { + return structureManager; + } + + public SoundManager getSoundManager() { + return soundManager; + } + + public GeneratorManager getGeneratorManager() { + return generatorManager; + } + + public void setGeneratorManager(GeneratorManager generatorManager) { + this.generatorManager = generatorManager; + } + + public LeaderboardManager getLeaderboardManager() { + return leaderboardManager; + } + + public PlaceholderManager getPlaceholderManager() { + return placeholderManager; + } + + public MessageManager getMessageManager() { + return messageManager; + } + + public EconomyManager getEconomyManager() { + return economyManager; + } + + public HologramManager getHologramManager() { + return hologramManager; + } + + public StackableManager getStackableManager() { + return stackableManager; + } + + @Override + public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { + return new VoidGenerator(); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/SkyBlockAPI.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/SkyBlockAPI.java new file mode 100644 index 00000000..8000a0ef --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/SkyBlockAPI.java @@ -0,0 +1,79 @@ +package com.songoda.skyblock.api; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.biome.BiomeManager; +import com.songoda.skyblock.api.island.IslandManager; +import com.songoda.skyblock.api.levelling.LevellingManager; +import com.songoda.skyblock.api.structure.StructureManager; + +public class SkyBlockAPI { + + private static SkyBlock implementation; + + private static IslandManager islandManager; + private static BiomeManager biomeManager; + private static LevellingManager levellingManager; + private static StructureManager structureManager; + + /** + * @return The SkyBlock implementation + */ + public static SkyBlock getImplementation() { + return implementation; + } + + /** + * @param implementation the implementation to set + */ + public static void setImplementation(SkyBlock implementation) { + if (SkyBlockAPI.implementation != null) { + throw new IllegalArgumentException("Cannot set API implementation twice"); + } + + SkyBlockAPI.implementation = implementation; + } + + /** + * @return The IslandManager implementation + */ + public static IslandManager getIslandManager() { + if (islandManager == null) { + islandManager = new IslandManager(implementation.getIslandManager()); + } + + return islandManager; + } + + /** + * @return The BiomeManager implementation + */ + public static BiomeManager getBiomeManager() { + if (biomeManager == null) { + biomeManager = new BiomeManager(implementation.getBiomeManager()); + } + + return biomeManager; + } + + /** + * @return The LevellingManager implementation + */ + public static LevellingManager getLevellingManager() { + if (levellingManager == null) { + levellingManager = new LevellingManager(implementation.getLevellingManager()); + } + + return levellingManager; + } + + /** + * @return The StructureManager implementation + */ + public static StructureManager getStructureManager() { + if (structureManager == null) { + structureManager = new StructureManager(implementation.getStructureManager()); + } + + return structureManager; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/ban/Ban.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/ban/Ban.java new file mode 100644 index 00000000..b9d79f22 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/ban/Ban.java @@ -0,0 +1,54 @@ +package com.songoda.skyblock.api.ban; + +import com.google.common.base.Preconditions; +import com.songoda.skyblock.api.island.Island; + +import java.util.Set; +import java.util.UUID; + +public class Ban { + + private final Island handle; + + public Ban(Island handle) { + this.handle = handle; + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isBanned(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); + return getBans().contains(uuid); + } + + /** + * @return A Set of players that have banned from the Island + */ + public Set getBans() { + return handle.getIsland().getBan().getBans(); + } + + /** + * Add a player to the banned players for the Island + */ + public void addBan(UUID issuer, UUID banned) { + Preconditions.checkArgument(banned != null, "Cannot add ban to null banned uuid"); + handle.getIsland().getBan().addBan(issuer, banned); + } + + /** + * Remove a player from the banned players for the Island + */ + public void removeBan(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot remove ban to null uuid"); + handle.getIsland().getBan().removeBan(uuid); + } + + /** + * @return Implementation for the Island + */ + public Island getIsland() { + return handle; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/biome/BiomeManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/biome/BiomeManager.java new file mode 100644 index 00000000..b97192fc --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/biome/BiomeManager.java @@ -0,0 +1,24 @@ +package com.songoda.skyblock.api.biome; + +import com.google.common.base.Preconditions; +import com.songoda.skyblock.api.island.Island; +import org.bukkit.block.Biome; + +public class BiomeManager { + + private final com.songoda.skyblock.biome.BiomeManager biomeManager; + + public BiomeManager(com.songoda.skyblock.biome.BiomeManager biomeManager) { + this.biomeManager = biomeManager; + } + + /** + * Set the Biome of an Island + */ + public void setBiome(Island island, Biome biome) { + Preconditions.checkArgument(island != null, "Cannot set biome to null island"); + Preconditions.checkArgument(biome != null, "Cannot set biome to null biome"); + + this.biomeManager.setBiome(island.getIsland(), biome); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandBanEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandBanEvent.java new file mode 100644 index 00000000..2b07cd07 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandBanEvent.java @@ -0,0 +1,46 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.OfflinePlayer; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class IslandBanEvent extends IslandEvent implements Cancellable { + + private static final HandlerList HANDLERS = new HandlerList(); + private final OfflinePlayer issuer, banned; + private boolean cancelled = false; + + public IslandBanEvent(Island island, OfflinePlayer issuer, OfflinePlayer banned) { + super(island); + this.issuer = issuer; + this.banned = banned; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public OfflinePlayer getIssuer() { + return issuer; + } + + public OfflinePlayer getBanned() { + return banned; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancelled = cancel; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandBiomeChangeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandBiomeChangeEvent.java new file mode 100644 index 00000000..1dd8f4a0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandBiomeChangeEvent.java @@ -0,0 +1,34 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.block.Biome; +import org.bukkit.event.HandlerList; + +public class IslandBiomeChangeEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private Biome biome; + + public IslandBiomeChangeEvent(Island island, Biome biome) { + super(island); + this.biome = biome; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public Biome getBiome() { + return biome; + } + + public void setBiome(Biome biome) { + this.biome = biome; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandCreateEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandCreateEvent.java new file mode 100644 index 00000000..03dc3f83 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandCreateEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class IslandCreateEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final Player player; + + public IslandCreateEvent(Island island, Player player) { + super(island, true); + this.player = player; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public Player getPlayer() { + return player; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandDeleteEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandDeleteEvent.java new file mode 100644 index 00000000..300663bd --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandDeleteEvent.java @@ -0,0 +1,22 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.event.HandlerList; + +public class IslandDeleteEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + public IslandDeleteEvent(Island island) { + super(island); + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandEvent.java new file mode 100644 index 00000000..bdfc9601 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandEvent.java @@ -0,0 +1,22 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.event.Event; + +public abstract class IslandEvent extends Event { + + private final Island island; + + protected IslandEvent(Island island) { + this.island = island; + } + + protected IslandEvent(Island island, boolean async) { + super(async); + this.island = island; + } + + public Island getIsland() { + return island; + } +} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandInviteEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandInviteEvent.java new file mode 100644 index 00000000..91b8cd6a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandInviteEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.invite.IslandInvitation; +import com.songoda.skyblock.api.island.Island; +import org.bukkit.event.HandlerList; + +public class IslandInviteEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final IslandInvitation invite; + + public IslandInviteEvent(Island island, IslandInvitation invite) { + super(island); + this.invite = invite; + } + + public IslandInvitation getInvite() { + return invite; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } + + public HandlerList getHandlerList() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandKickEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandKickEvent.java new file mode 100644 index 00000000..141a3e05 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandKickEvent.java @@ -0,0 +1,52 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import com.songoda.skyblock.api.island.IslandRole; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class IslandKickEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + private final Player kicker; + private final OfflinePlayer kicked; + private final IslandRole role; + private boolean cancelled = false; + + public IslandKickEvent(Island island, IslandRole role, OfflinePlayer kicked, Player kicker) { + super(island); + this.role = role; + this.kicked = kicked; + this.kicker = kicker; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public OfflinePlayer getKicked() { + return kicked; + } + + public Player getKicker() { + return kicker; + } + + public IslandRole getRole() { + return role; + } + + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancel) { + this.cancelled = cancel; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLevelChangeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLevelChangeEvent.java new file mode 100644 index 00000000..c4fb5ce8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLevelChangeEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import com.songoda.skyblock.api.island.IslandLevel; +import org.bukkit.event.HandlerList; + +public class IslandLevelChangeEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final IslandLevel level; + + public IslandLevelChangeEvent(Island island, IslandLevel level) { + super(island); + this.level = level; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public IslandLevel getLevel() { + return level; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLoadEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLoadEvent.java new file mode 100644 index 00000000..db84b1ca --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLoadEvent.java @@ -0,0 +1,22 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.event.HandlerList; + +public class IslandLoadEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + public IslandLoadEvent(Island island) { + super(island); + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLocationChangeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLocationChangeEvent.java new file mode 100644 index 00000000..7ef92b8e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandLocationChangeEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import com.songoda.skyblock.api.island.IslandLocation; +import org.bukkit.event.HandlerList; + +public class IslandLocationChangeEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final IslandLocation location; + + public IslandLocationChangeEvent(Island island, IslandLocation location) { + super(island, true); + this.location = location; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public IslandLocation getLocation() { + return location; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandMessageChangeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandMessageChangeEvent.java new file mode 100644 index 00000000..808c608c --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandMessageChangeEvent.java @@ -0,0 +1,63 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import com.songoda.skyblock.api.island.IslandMessage; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import java.util.List; + +public class IslandMessageChangeEvent extends IslandEvent implements Cancellable { + + private static final HandlerList HANDLERS = new HandlerList(); + private final IslandMessage message; + private boolean cancelled = false; + private List lines; + private String author; + + public IslandMessageChangeEvent(Island island, IslandMessage message, List lines, String author) { + super(island); + this.message = message; + this.lines = lines; + this.author = author; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public IslandMessage getMessage() { + return message; + } + + public List getLines() { + return lines; + } + + public void setLines(List lines) { + this.lines = lines; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancelled = cancel; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandOpenEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandOpenEvent.java new file mode 100644 index 00000000..9af50890 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandOpenEvent.java @@ -0,0 +1,40 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class IslandOpenEvent extends IslandEvent implements Cancellable { + + private static final HandlerList HANDLERS = new HandlerList(); + private final boolean open; + private boolean cancelled = false; + + public IslandOpenEvent(Island island, boolean open) { + super(island); + this.open = open; + } + + public boolean isOpen() { + return open; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } + + public HandlerList getHandlerList() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandOwnershipTransferEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandOwnershipTransferEvent.java new file mode 100644 index 00000000..de630fdb --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandOwnershipTransferEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.OfflinePlayer; +import org.bukkit.event.HandlerList; + +public class IslandOwnershipTransferEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final OfflinePlayer owner; + + public IslandOwnershipTransferEvent(Island island, OfflinePlayer owner) { + super(island); + this.owner = owner; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public OfflinePlayer getOwner() { + return owner; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandPasswordChangeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandPasswordChangeEvent.java new file mode 100644 index 00000000..1617ebd0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandPasswordChangeEvent.java @@ -0,0 +1,33 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.event.HandlerList; + +public class IslandPasswordChangeEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private String password; + + public IslandPasswordChangeEvent(Island island, String password) { + super(island); + this.password = password; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandRoleChangeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandRoleChangeEvent.java new file mode 100644 index 00000000..198917c3 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandRoleChangeEvent.java @@ -0,0 +1,37 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import com.songoda.skyblock.api.island.IslandRole; +import org.bukkit.OfflinePlayer; +import org.bukkit.event.HandlerList; + +public class IslandRoleChangeEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final OfflinePlayer player; + private final IslandRole role; + + public IslandRoleChangeEvent(Island island, OfflinePlayer player, IslandRole role) { + super(island); + this.player = player; + this.role = role; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public OfflinePlayer getPlayer() { + return player; + } + + public IslandRole getRole() { + return role; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUnbanEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUnbanEvent.java new file mode 100644 index 00000000..f285fcf8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUnbanEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.OfflinePlayer; +import org.bukkit.event.HandlerList; + +public class IslandUnbanEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final OfflinePlayer unbanned; + + public IslandUnbanEvent(Island island, OfflinePlayer unbanned) { + super(island); + this.unbanned = unbanned; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public OfflinePlayer getUnbanned() { + return unbanned; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUnloadEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUnloadEvent.java new file mode 100644 index 00000000..3aee5613 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUnloadEvent.java @@ -0,0 +1,22 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.event.HandlerList; + +public class IslandUnloadEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + public IslandUnloadEvent(Island island) { + super(island); + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUpgradeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUpgradeEvent.java new file mode 100644 index 00000000..b69fb248 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandUpgradeEvent.java @@ -0,0 +1,36 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import com.songoda.skyblock.api.island.IslandUpgrade; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class IslandUpgradeEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final Player player; + private IslandUpgrade upgrade; + + public IslandUpgradeEvent(Island island, Player player, IslandUpgrade upgrade) { + super(island); + this.player = player; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public Player getPlayer() { + return player; + } + + public IslandUpgrade getUpgrade() { + return upgrade; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandWeatherChangeEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandWeatherChangeEvent.java new file mode 100644 index 00000000..3c116335 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/island/IslandWeatherChangeEvent.java @@ -0,0 +1,41 @@ +package com.songoda.skyblock.api.event.island; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.WeatherType; +import org.bukkit.event.HandlerList; + +public class IslandWeatherChangeEvent extends IslandEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + private final boolean sync; + private WeatherType weather; + private int time; + + public IslandWeatherChangeEvent(Island island, WeatherType weather, int time, boolean sync) { + super(island); + this.weather = weather; + this.time = time; + this.sync = sync; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public WeatherType getWeather() { + return weather; + } + + public int getTime() { + return time; + } + + public boolean isSync() { + return sync; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerEvent.java new file mode 100644 index 00000000..abea489a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; + +public abstract class PlayerEvent extends Event { + + private final Player player; + private final Island island; + + protected PlayerEvent(Player player, Island island) { + this.player = player; + this.island = island; + } + + protected PlayerEvent(Player player, Island island, boolean async) { + super(async); + this.player = player; + this.island = island; + } + + public Player getPlayer() { + return player; + } + + public Island getIsland() { + return island; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandChatEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandChatEvent.java new file mode 100644 index 00000000..dad5ba92 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandChatEvent.java @@ -0,0 +1,53 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class PlayerIslandChatEvent extends PlayerEvent implements Cancellable { + + private static final HandlerList HANDLERS = new HandlerList(); + + private boolean cancelled = false; + private String message, format; + + public PlayerIslandChatEvent(Player player, Island island, String message, String format) { + super(player, island, true); + this.message = message; + this.format = format; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandChatSwitchEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandChatSwitchEvent.java new file mode 100644 index 00000000..44040c93 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandChatSwitchEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class PlayerIslandChatSwitchEvent extends PlayerEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private boolean chat; + + public PlayerIslandChatSwitchEvent(Player player, Island island, boolean chat) { + super(player, island); + this.chat = chat; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public boolean isChat() { + return chat; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandEnterEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandEnterEvent.java new file mode 100644 index 00000000..3297b798 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandEnterEvent.java @@ -0,0 +1,23 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class PlayerIslandEnterEvent extends PlayerEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + public PlayerIslandEnterEvent(Player player, Island island) { + super(player, island); + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandExitEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandExitEvent.java new file mode 100644 index 00000000..8527b926 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandExitEvent.java @@ -0,0 +1,23 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class PlayerIslandExitEvent extends PlayerEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + public PlayerIslandExitEvent(Player player, Island island) { + super(player, island); + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandJoinEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandJoinEvent.java new file mode 100644 index 00000000..505ed230 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandJoinEvent.java @@ -0,0 +1,33 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class PlayerIslandJoinEvent extends PlayerEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private boolean cancelled = false; + + public PlayerIslandJoinEvent(Player player, Island island) { + super(player, island); + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancel) { + this.cancelled = cancel; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandLeaveEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandLeaveEvent.java new file mode 100644 index 00000000..d76aede0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandLeaveEvent.java @@ -0,0 +1,36 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +public class PlayerIslandLeaveEvent extends PlayerEvent implements Cancellable { + + private static final HandlerList HANDLERS = new HandlerList(); + + private boolean cancelled = false; + + public PlayerIslandLeaveEvent(Player player, Island island) { + super(player, island); + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } + + public HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandSwitchEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandSwitchEvent.java new file mode 100644 index 00000000..ff3244ac --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerIslandSwitchEvent.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.api.event.player; + +import com.songoda.skyblock.api.island.Island; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +public class PlayerIslandSwitchEvent extends PlayerEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final Island lastIsland; + + public PlayerIslandSwitchEvent(Player player, Island lastIsland, Island island) { + super(player, island); + this.lastIsland = lastIsland; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public Island getLastIsland() { + return lastIsland; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerWithdrawMoneyEvent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerWithdrawMoneyEvent.java new file mode 100644 index 00000000..1fc13892 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/event/player/PlayerWithdrawMoneyEvent.java @@ -0,0 +1,35 @@ +package com.songoda.skyblock.api.event.player; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerWithdrawMoneyEvent extends Event { + + private static final HandlerList HANDLERS = new HandlerList(); + + private Player player; + private double money; + + public PlayerWithdrawMoneyEvent(Player player, double money) { + this.player = player; + this.money = money; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + public Player getPlayer() { + return player; + } + + public double getMoney() { + return money; + } + + @Override + public HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/invite/IslandInvitation.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/invite/IslandInvitation.java new file mode 100644 index 00000000..bd030c41 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/invite/IslandInvitation.java @@ -0,0 +1,27 @@ +package com.songoda.skyblock.api.invite; + +import org.bukkit.entity.Player; + +public class IslandInvitation { + + private final Player invited, inviter; + private int time; + + public IslandInvitation(Player invited, Player inviter, int time) { + this.invited = invited; + this.inviter = inviter; + this.time = time; + } + + public Player getInvited() { + return invited; + } + + public Player getInviter() { + return inviter; + } + + public int getTime() { + return time; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/Island.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/Island.java new file mode 100644 index 00000000..ad6ca366 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/Island.java @@ -0,0 +1,507 @@ +package com.songoda.skyblock.api.island; + +import com.google.common.base.Preconditions; +import com.songoda.skyblock.api.SkyBlockAPI; +import com.songoda.skyblock.api.ban.Ban; +import com.songoda.skyblock.api.utils.APIUtil; +import com.songoda.skyblock.api.visit.Visit; +import org.bukkit.Location; +import org.bukkit.OfflinePlayer; +import org.bukkit.WeatherType; +import org.bukkit.World; +import org.bukkit.block.Biome; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +public class Island { + + private com.songoda.skyblock.island.Island handle; + private OfflinePlayer player; + + public Island(com.songoda.skyblock.island.Island handle, OfflinePlayer player) { + this.handle = handle; + this.player = player; + } + + /** + * @return The Island UUID + */ + public UUID getIslandUUID() { + return this.handle.getIslandUUID(); + } + + /** + * @return The Island owner UUID + */ + public UUID getOwnerUUID() { + return this.handle.getOwnerUUID(); + } + + /** + * @return The original Island owner UUID + */ + public UUID getOriginalOwnerUUID() { + return this.handle.getOriginalOwnerUUID(); + } + + /** + * @return The Island size + */ + public int getSize() { + return this.handle.getSize(); + } + + /** + * Set the size of the Island + */ + public void setSize(int size) { + Preconditions.checkArgument(size <= 1000, "Cannot set size to greater than 1000"); + Preconditions.checkArgument(size >= 50, "Cannot set size to less than 50"); + this.handle.setSize(size); + } + + /** + * @return The Island radius + */ + public double getRadius() { + return this.handle.getRadius(); + } + + /** + * @return true if not null, false otherwise + */ + public boolean hasPassword() { + return this.handle.hasPassword(); + } + + /** + * Set the password for ownership + */ + public void setPassword(String password) { + Preconditions.checkArgument(password != null, "Cannot set password to null password"); + this.handle.setPassword(password); + } + + /** + * Get the Location from the World in island world from World in environment. + * + * @return Location of Island + */ + public Location getLocation(IslandWorld world, IslandEnvironment environment) { + Preconditions.checkArgument(world != null, "World in island world null does not exist"); + Preconditions.checkArgument(environment != null, "World in environment null does not exist"); + + return handle.getLocation(APIUtil.toImplementation(world), APIUtil.toImplementation(environment)); + } + + /** + * Set the Location from the World in island world from world in environment + * followed by position + */ + public void setLocation(IslandWorld world, IslandEnvironment environment, int x, int y, int z) { + Preconditions.checkArgument(world != null, "World in island world null does not exist"); + Preconditions.checkArgument(environment != null, "World in environment null does not exist"); + + World bukkitWorld = getLocation(world, environment).getWorld(); + this.handle.setLocation(APIUtil.toImplementation(world), APIUtil.toImplementation(environment), + new Location(bukkitWorld, x, y, z)); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isBorder() { + return this.handle.isBorder(); + } + + /** + * Set the border visible to players for the Island + */ + public void setBorder(boolean border) { + this.handle.setBorder(border); + } + + /** + * @return The color of the Island border + */ + public IslandBorderColor getBorderColor() { + return APIUtil.fromImplementation(this.handle.getBorderColor()); + } + + /** + * Set the border color for the Island + */ + public void setBorderColor(IslandBorderColor color) { + Preconditions.checkArgument(color != null, "IslandBorderColor null does not exist"); + this.handle.setBorderColor(APIUtil.toImplementation(color)); + } + + /** + * @return The biome set for the Island + */ + public Biome getBiome() { + return this.handle.getBiome(); + } + + /** + * Set the biome for the Island + */ + public void setBiome(Biome biome) { + Preconditions.checkArgument(biome != null, "Cannot set biome to null biome"); + this.handle.setBiome(biome); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isDayCycleSynchronizedSynchronized() { + return this.handle.isWeatherSynchronized(); + } + + /** + * Set the Day Cycle of the Island to be Synchronized with the World cycle + */ + public void setDayCycleSynchronzied(boolean sync) { + this.handle.setWeatherSynchronized(sync); + } + + /** + * @return The WeatherType set for the Island + */ + public WeatherType getWeather() { + return this.handle.getWeather(); + } + + /** + * Set the weather for the Island + */ + public void setWeather(WeatherType weatherType) { + Preconditions.checkArgument(weatherType != null, "Cannot set weather to null weather"); + this.handle.setWeather(weatherType); + } + + /** + * @return The time set for the Island + */ + public int getTime() { + return this.handle.getTime(); + } + + /** + * Set the time for the Island + */ + public void setTime(int time) { + this.handle.setTime(time); + } + + /** + * @return A Set of cooped players + */ + public Set getCoopPlayers() { + return this.handle.getCoopPlayers(); + } + + /** + * Add a player to the coop players for the Island + */ + public void addCoopPlayer(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot add coop player to null uuid"); + this.handle.addCoopPlayer(uuid); + } + + /** + * Add a player to the coop players for the Island + */ + public void addCoopPlayer(OfflinePlayer player) { + Preconditions.checkArgument(player != null, "Cannot add coop player to null player"); + this.handle.addCoopPlayer(player.getUniqueId()); + } + + /** + * Remove a player from the coop players for the Island + */ + public void removeCoopPlayer(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot remove coop player to null uuid"); + this.handle.removeCoopPlayer(uuid); + } + + /** + * Remove a player from the coop players for the Island + */ + public void removeCoopPlayer(OfflinePlayer player) { + Preconditions.checkArgument(player != null, "Cannot remove coop player to null player"); + this.handle.removeCoopPlayer(player.getUniqueId()); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isCoopPlayer(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); + return this.handle.isCoopPlayer(uuid); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isCoopPlayer(OfflinePlayer player) { + Preconditions.checkArgument(player != null, "Cannot return condition to null player"); + return this.handle.isCoopPlayer(player.getUniqueId()); + } + + /** + * @return The IslandRole of a player + */ + public IslandRole getRole(OfflinePlayer player) { + Preconditions.checkArgument(player != null, "Cannot get role for null player"); + + for (com.songoda.skyblock.island.IslandRole role : com.songoda.skyblock.island.IslandRole.values()) { + if (this.handle.hasRole(role, player.getUniqueId())) { + return APIUtil.fromImplementation(role); + } + } + + return null; + } + + /** + * @return A Set of players with IslandRole + */ + public Set getPlayersWithRole(IslandRole role) { + Preconditions.checkArgument(role != null, "Cannot get players will null role"); + return this.handle.getRole(APIUtil.toImplementation(role)); + } + + /** + * Set the IslandRole of a player for the Island + * + * @return true of conditions met, false otherwise + */ + public boolean setRole(OfflinePlayer player, IslandRole role) { + Preconditions.checkArgument(player != null, "Cannot set role of null player"); + return setRole(player.getUniqueId(), role); + } + + /** + * Set the IslandRole of a player for the Island + * + * @return true of conditions met, false otherwise + */ + public boolean setRole(UUID uuid, IslandRole role) { + Preconditions.checkArgument(uuid != null, "Cannot set role of null player"); + Preconditions.checkArgument(role != null, "Cannot set role to null role"); + + return this.handle.setRole(APIUtil.toImplementation(role), uuid); + } + + /** + * Remove the IslandRole of a player for the Island + * + * @return true of conditions met, false otherwise + */ + public boolean removeRole(OfflinePlayer player, IslandRole role) { + Preconditions.checkArgument(player != null, "Cannot remove role of null player"); + return removeRole(player.getUniqueId(), role); + } + + /** + * Remove the IslandRole of a player for the Island + * + * @return true of conditions met, false otherwise + */ + public boolean removeRole(UUID uuid, IslandRole role) { + Preconditions.checkArgument(uuid != null, "Cannot remove role of null player"); + Preconditions.checkArgument(role != null, "Cannot remove role to null role"); + + return this.handle.removeRole(APIUtil.toImplementation(role), uuid); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean hasRole(OfflinePlayer player, IslandRole role) { + Preconditions.checkArgument(player != null, "Cannot check role of null player"); + return handle.hasRole(APIUtil.toImplementation(role), player.getUniqueId()); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean hasRole(UUID uuid, IslandRole role) { + Preconditions.checkArgument(uuid != null, "Cannot check role of null player"); + Preconditions.checkArgument(role != null, "Cannot check role to null role"); + + return handle.hasRole(APIUtil.toImplementation(role), uuid); + } + + /** + * Set the condition of an IslandUpgrade for the Island + */ + public void setUpgrade(Player player, IslandUpgrade upgrade, boolean status) { + Preconditions.checkArgument(upgrade != null, "Cannot set upgrade to null upgrade"); + this.handle.setUpgrade(player, APIUtil.toImplementation(upgrade), status); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean hasUpgrade(IslandUpgrade upgrade) { + Preconditions.checkArgument(upgrade != null, "Cannot check upgrade to null upgrade"); + return this.handle.hasUpgrade(APIUtil.toImplementation(upgrade)); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isUpgrade(IslandUpgrade upgrade) { + Preconditions.checkArgument(upgrade != null, "Cannot check upgrade to null upgrade"); + return this.handle.isUpgrade(APIUtil.toImplementation(upgrade)); + } + + /** + * @return Setting of an IslandRole for the Island + */ + public IslandSetting getSetting(IslandRole role, String setting) { + Preconditions.checkArgument(role != null, "Cannot get setting to null role"); + Preconditions.checkArgument(setting != null, "Cannot get setting for null setting"); + + return new IslandSetting(this.handle.getSetting(APIUtil.toImplementation(role), setting)); + } + + /** + * @return A List of Settings of an IslandRole for the Island + */ + public List getSettings(IslandRole role) { + Preconditions.checkArgument(role != null, "Cannot get settings to null role"); + List settings = new ArrayList<>(); + + for (com.songoda.skyblock.island.IslandSetting settingList : this.handle + .getSettings(APIUtil.toImplementation(role))) { + settings.add(new IslandSetting(settingList)); + } + + return settings; + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isOpen() { + return handle.isOpen(); + } + + public void setOpen(boolean open) { + this.handle.setOpen(open); + } + + /** + * @return A List from IslandMessage for the Island + */ + public List getMessage(IslandMessage message) { + Preconditions.checkArgument(message != null, "Cannot get message for null message"); + return this.handle.getMessage(APIUtil.toImplementation(message)); + } + + /** + * @return The author of an IslandMessage for the Island + */ + public String getMessageAuthor(IslandMessage message) { + Preconditions.checkArgument(message != null, "Cannot get message author for null message"); + return this.handle.getMessageAuthor(APIUtil.toImplementation(message)); + } + + /** + * Set the IslandMessage for the Island + */ + public void setMessage(IslandMessage message, String author, List messageLines) { + Preconditions.checkArgument(message != null, "Cannot set message for null message"); + this.handle.setMessage(APIUtil.toImplementation(message), author, messageLines); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean hasStructure() { + return this.handle.hasStructure(); + } + + /** + * @return The Structure name for the Island + */ + public String getStructure() { + return this.handle.getStructure(); + } + + /** + * Set the Structure for the Island + */ + public void setStructure(String structure) { + Preconditions.checkArgument(structure != null, "Cannot set structure to null structure"); + this.handle.setStructure(structure); + } + + /** + * @return The Visit implementation for the Island + */ + public Visit getVisit() { + return new Visit(this); + } + + /** + * @return The Ban implementation for the Island + */ + public Ban getBan() { + return new Ban(this); + } + + /** + * @return The Level implementation for the Island + */ + public IslandLevel getLevel() { + return new IslandLevel(this); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isLoaded() { + return this.handle != null; + } + + /** + * Loads the Island if unloaded + */ + public void load() { + if (this.handle == null) { + this.handle = SkyBlockAPI.getImplementation().getIslandManager().loadIsland(player); + } + } + + /** + * Unloads the Island if loaded + */ + public void unload() { + if (this.handle != null) { + SkyBlockAPI.getImplementation().getIslandManager().unloadIsland(getIsland(), null); + this.handle = null; + } + } + + /** + * Sets the player of the Island + */ + public void setPlayer(OfflinePlayer player) { + this.player = player; + } + + /** + * @return Implementation for the Island + */ + public com.songoda.skyblock.island.Island getIsland() { + return handle; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandBorderColor.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandBorderColor.java new file mode 100644 index 00000000..2ec74077 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandBorderColor.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.api.island; + +public enum IslandBorderColor { + + Blue, Green, Red + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandEnvironment.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandEnvironment.java new file mode 100644 index 00000000..0cba0db5 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandEnvironment.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.api.island; + +public enum IslandEnvironment { + + ISLAND, VISITOR, MAIN + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandLevel.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandLevel.java new file mode 100644 index 00000000..d306e12f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandLevel.java @@ -0,0 +1,115 @@ +package com.songoda.skyblock.api.island; + +import com.google.common.base.Preconditions; +import com.songoda.skyblock.utils.version.Materials; +import org.bukkit.Material; + +public class IslandLevel { + + private final Island handle; + + public IslandLevel(Island handle) { + this.handle = handle; + } + + /** + * @return Points of the Island from gathered materials + */ + public long getPoints() { + return this.handle.getIsland().getLevel().getPoints(); + } + + /** + * @return Level of the Island from points + */ + public long getLevel() { + return this.handle.getIsland().getLevel().getLevel(); + } + + /** + * @return Last calculated points of the Island + */ + public long getLastCalculatedPoints() { + return this.handle.getIsland().getLevel().getLastCalculatedPoints(); + } + + /** + * @return Last calculated level of the Island + */ + public long getLastCalculatedLevel() { + return this.handle.getIsland().getLevel().getLastCalculatedLevel(); + } + + /** + * Set the amount of a Material for the Island + */ + public void setMaterialAmount(Material material, int amount) { + Preconditions.checkArgument(material != null, "Cannot set material amount to null material"); + this.handle.getIsland().getLevel().setMaterialAmount(Materials.fromString(material.name()).name(), amount); + } + + /** + * Set the amount of a Material for the Island + */ + public void setMaterialAmount(Material material, byte data, int amount) { + Preconditions.checkArgument(material != null, "Cannot set material amount to null material"); + this.handle.getIsland().getLevel().setMaterialAmount(Materials.requestMaterials(material.name(), data).name(), + amount); + } + + /** + * @return The amount of a Material from the Island + */ + public long getMaterialAmount(Material material) { + Preconditions.checkArgument(material != null, "Cannot get material amount to null material"); + + Materials materials = Materials.fromString(material.name()); + com.songoda.skyblock.island.IslandLevel level = this.handle.getIsland().getLevel(); + + if (level.getMaterials().containsKey(materials.name())) { + return level.getMaterials().get(materials.name()); + } + + return 0; + } + + /** + * @return The amount of a Material from the Island + */ + public long getMaterialAmount(Material material, byte data) { + Preconditions.checkArgument(material != null, "Cannot get material amount to null material"); + + Materials materials = Materials.requestMaterials(material.name(), data); + com.songoda.skyblock.island.IslandLevel level = this.handle.getIsland().getLevel(); + + if (level.getMaterials().containsKey(materials.name())) { + return level.getMaterials().get(materials.name()); + } + + return 0; + } + + /** + * @return The points earned for a Material from the Island + */ + public long getMaterialPoints(Material material) { + Preconditions.checkArgument(material != null, "Cannot get material points to null material"); + return this.handle.getIsland().getLevel().getMaterialPoints(Materials.fromString(material.name()).name()); + } + + /** + * @return The points earned for a Material from the Island + */ + public long getMaterialPoints(Material material, byte data) { + Preconditions.checkArgument(material != null, "Cannot get material points to null material"); + return this.handle.getIsland().getLevel() + .getMaterialPoints(Materials.requestMaterials(material.name(), data).name()); + } + + /** + * @return Implementation for the Island + */ + public Island getIsland() { + return handle; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandLocation.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandLocation.java new file mode 100644 index 00000000..8ba3386f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandLocation.java @@ -0,0 +1,45 @@ +package com.songoda.skyblock.api.island; + +import org.bukkit.Location; +import org.bukkit.World; + +public class IslandLocation { + + private IslandEnvironment environment; + private IslandWorld world; + private Location location; + + public IslandLocation(IslandEnvironment environment, IslandWorld world, Location location) { + this.environment = environment; + this.world = world; + this.location = location; + } + + public IslandEnvironment getEnvironment() { + return environment; + } + + public IslandWorld getWorld() { + return world; + } + + public Location getLocation() { + return location; + } + + public World getBukkitWorld() { + return location.getWorld(); + } + + public int getX() { + return location.getBlockX(); + } + + public int getY() { + return location.getBlockY(); + } + + public int getZ() { + return location.getBlockZ(); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandManager.java new file mode 100644 index 00000000..a551fe56 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandManager.java @@ -0,0 +1,377 @@ +package com.songoda.skyblock.api.island; + +import com.google.common.base.Preconditions; +import com.songoda.skyblock.api.structure.Structure; +import com.songoda.skyblock.api.utils.APIUtil; +import org.bukkit.Location; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +public class IslandManager { + + private final com.songoda.skyblock.island.IslandManager islandManager; + + public IslandManager(com.songoda.skyblock.island.IslandManager islandManager) { + this.islandManager = islandManager; + } + + /** + * @return true of conditions met, false otherwise + */ + public static boolean hasIsland(OfflinePlayer player) { + Preconditions.checkArgument(player != null, "Cannot check island to null player"); + return new com.songoda.skyblock.utils.player.OfflinePlayer(player.getUniqueId()).getOwner() != null; + } + + /** + * Updates the Island border for players occupying an Island + */ + public void updateBorder(Island island) { + Preconditions.checkArgument(island != null, "Cannot update border to null island"); + + this.islandManager.updateBorder(island.getIsland()); + } + + /** + * Gives Island ownership to a player of their Island + */ + public void giveOwnership(Island island, OfflinePlayer player) { + Preconditions.checkArgument(player != null, "Cannot give ownership to null island"); + Preconditions.checkArgument(player != null, "Cannot give ownership to null player"); + + this.islandManager.giveOwnership(island.getIsland(), player); + } + + /** + * @return The Visitors occupying an Island + */ + public Set getVisitorsAtIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot get visitors at island to null island"); + + return this.islandManager.getVisitorsAtIsland(island.getIsland()); + } + + /** + * Makes a player a Visitor of an Island + */ + public void visitIsland(Player player, Island island) { + Preconditions.checkArgument(player != null, "Cannot visit island to null player"); + Preconditions.checkArgument(island != null, "Cannot visit island to null island"); + + this.islandManager.visitIsland(player, island.getIsland()); + } + + /** + * Closes an Island from Visitors + */ + public void closeIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot closed island to null island"); + + this.islandManager.closeIsland(island.getIsland()); + } + + /** + * Checks if a player has permission at an Island for a Setting + * + * @return true of conditions met, false otherwise + */ + public boolean hasPermission(Player player, String setting) { + Preconditions.checkArgument(player != null, "Cannot check permission to null player"); + + return this.islandManager.hasPermission(player, setting); + } + + /** + * Checks if a player has permission at a location of an Island for a Setting + * + * @return true of conditions met, false otherwise + */ + public boolean hasPermission(Player player, Location location, String setting) { + Preconditions.checkArgument(player != null, "Cannot check permission to null player"); + Preconditions.checkArgument(location != null, "Cannot check permission to null location"); + + return this.islandManager.hasPermission(player, location, setting); + } + + /** + * Checks the permission of a Setting for a Role at a Location + * + * @return true of conditions met, false otherwise + */ + public boolean hasSetting(Location location, IslandRole role, String setting) { + Preconditions.checkArgument(location != null, "Cannot check setting to null location"); + Preconditions.checkArgument(role != null, "Cannot check setting to null role"); + + return this.islandManager.hasSetting(location, APIUtil.toImplementation(role), setting); + } + + /** + * @return A Set of Members of an Island that are online + */ + public Set getMembersOnline(Island island) { + Preconditions.checkArgument(island != null, "Cannot get online members to null island"); + + return this.islandManager.getMembersOnline(island.getIsland()); + } + + /** + * @return A List of Players at an Island + */ + public List getPlayersAtIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot get players at island to null island"); + + return this.islandManager.getPlayersAtIsland(island.getIsland()); + } + + /** + * @return A List of Players at an Island by IslandWorld + */ + public List getPlayersAtIsland(Island island, IslandWorld world) { + Preconditions.checkArgument(island != null, "Cannot get players at island to null island"); + Preconditions.checkArgument(world != null, "Cannot get players at island to null world"); + + return this.islandManager.getPlayersAtIsland(island.getIsland(), APIUtil.toImplementation(world)); + } + + /** + * Gives the Island Upgrades to a player + * + * @deprecated use {@link #updateFlight(Player)} instead + */ + @Deprecated + public void giveUgrades(Player player, Island island) { + Preconditions.checkArgument(player != null, "Cannot give upgrades to null player"); + Preconditions.checkArgument(island != null, "Cannot give upgrades to null island"); + + this.islandManager.updateFlight(player); + } + + /** + * Gives Fly to a player if they have permission at an Island + * + * @deprecated use {@link #updateFlight(Player)} instead + */ + @Deprecated + public void giveFly(Player player, Island island) { + Preconditions.checkArgument(player != null, "Cannot give upgrades to null player"); + Preconditions.checkArgument(island != null, "Cannot give upgrades to null island"); + + this.islandManager.updateFlight(player); + } + + /** + * Removes the Island Upgrades from a player + * + * @deprecated use {@link #updateFlight(Player)} instead + */ + @Deprecated + public void removeUpgrades(Player player) { + Preconditions.checkArgument(player != null, "Cannot remove upgrades to null player"); + + this.islandManager.updateFlight(player); + } + + /** + * Updates the flight of a player based on their permissions and current island upgrades + */ + public void updateFlight(Player player) { + Preconditions.checkArgument(player != null, "Cannot update flight of a null player"); + + this.islandManager.updateFlight(player); + } + + /** + * Updates the flight of all players on an island based on their permissions and island upgrades + */ + public void updateFlightAtIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot update flight of a null island"); + + this.islandManager.updateFlightAtIsland(island.getIsland()); + } + + /** + * @return A Set of Cooped Players at an Island + */ + public Set getCoopPlayersAtIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot get coop players to null island"); + + return this.islandManager.getCoopPlayersAtIsland(island.getIsland()); + } + + /** + * Removes Coop Players occupying an Island + */ + public void removeCoopPlayersAtIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot remove coop players to null island"); + this.islandManager.removeCoopPlayers(island.getIsland(), null); + } + + /** + * Creates an Island for a player from a Structure + * + * @return true of conditions met, false otherwise + */ + public boolean createIsland(Player player, Structure structure) { + Preconditions.checkArgument(player != null, "Cannot create island to null player"); + Preconditions.checkArgument(structure != null, "Cannot create island to null structure"); + + if (!hasIsland(player)) { + return islandManager.createIsland(player, (com.songoda.skyblock.structure.Structure) structure); + } + + return false; + } + + /** + * Deletes an Island permanently + */ + public void deleteIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot delete island to null island"); + + this.islandManager.deleteIsland(island.getIsland()); + } + + /** + * Check if a player is occupying an Island + * + * @return true of conditions met, false otherwise + */ + public boolean isPlayerAtIsland(Island island, Player player) { + Preconditions.checkArgument(island != null, "Cannot check to null island"); + Preconditions.checkArgument(player != null, "Cannot check to null player"); + return this.islandManager.isPlayerAtIsland(island.getIsland(), player); + } + + /** + * Check if a player is occupying an Island by IslandWorld + * + * @return true of conditions met, false otherwise + */ + public boolean isPlayerAtIsland(Island island, Player player, IslandWorld world) { + Preconditions.checkArgument(island != null, "Cannot check to null island"); + Preconditions.checkArgument(player != null, "Cannot check to null player"); + Preconditions.checkArgument(world != null, "Cannot check to null world"); + + return this.islandManager.isPlayerAtIsland(island.getIsland(), player, APIUtil.toImplementation(world)); + } + + /** + * Check if a location is at an Island + * + * @return true of conditions met, false otherwise + */ + public boolean isLocationAtIsland(Island island, Location location) { + Preconditions.checkArgument(island != null, "Cannot check to null island"); + Preconditions.checkArgument(location != null, "Cannot check to null location"); + + return this.islandManager.isLocationAtIsland(island.getIsland(), location); + } + + /** + * @return The Island at a location + */ + public Island getIslandAtLocation(Location location) { + Preconditions.checkArgument(location != null, "Cannot get island to null location"); + + com.songoda.skyblock.island.Island island = this.islandManager.getIslandAtLocation(location); + + if (island != null) { + return island.getAPIWrapper(); + } + + return null; + } + + /** + * Check if a location is at an Island by IslandWorld + * + * @return true of conditions met, false otherwise + */ + public boolean isPlayerAtIsland(Island island, Location location, IslandWorld world) { + Preconditions.checkArgument(island != null, "Cannot check to null island"); + Preconditions.checkArgument(location != null, "Cannot check to null location"); + Preconditions.checkArgument(world != null, "Cannot check to null world"); + + return this.islandManager.isLocationAtIsland(island.getIsland(), location, APIUtil.toImplementation(world)); + } + + /** + * @return The Island the player is occupying + */ + public Island getIslandPlayerAt(Player player) { + Preconditions.checkArgument(player != null, "Cannot get Island to null player"); + + com.songoda.skyblock.island.Island island = this.islandManager.getIslandPlayerAt(player); + + if (island != null) { + return island.getAPIWrapper(); + } + + return null; + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isPlayerAtAnIsland(Player player) { + Preconditions.checkArgument(player != null, "Cannot check to null player"); + return this.islandManager.isPlayerAtAnIsland(player); + } + + /** + * Resets an Island permanently + */ + public void resetIsland(Island island) { + Preconditions.checkArgument(island != null, "Cannot reset island to null island"); + this.islandManager.resetIsland(island.getIsland()); + } + + /** + * @return The Island of a player + */ + public Island getIsland(OfflinePlayer player) { + Preconditions.checkArgument(player != null, "Cannot get island to null player"); + + com.songoda.skyblock.island.Island island = this.islandManager.getIsland(player); + + if (island != null) { + return island.getAPIWrapper(); + } + + return new Island(null, player); + } + + /** + * Gets an Island by its UUID + * Returns null if an Island with the given UUID does not exist + * + * @param islandUUID The UUID of the Island + * @return The Island with the given UUID, or null if one was not found + */ + public Island getIslandByUUID(UUID islandUUID) { + Preconditions.checkArgument(islandUUID != null, "Cannot get island with a null UUID"); + + com.songoda.skyblock.island.Island island = this.islandManager.getIslandByUUID(islandUUID); + + return island != null ? island.getAPIWrapper() : null; + } + + /** + * @return A List of loaded Islands + */ + public List getIslands() { + List islands = new ArrayList<>(); + + for (int i = 0; i < this.islandManager.getIslands().size(); i++) { + islands.add(this.islandManager.getIslands().get(this.islandManager.getIslands().keySet().toArray()[i]) + .getAPIWrapper()); + } + + return islands; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandMessage.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandMessage.java new file mode 100644 index 00000000..6e272dc2 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandMessage.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.api.island; + +public enum IslandMessage { + + WELCOME, SIGNATURE, SIGN + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandRole.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandRole.java new file mode 100644 index 00000000..46dc3c5a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandRole.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.api.island; + +public enum IslandRole { + + COOP, VISITOR, MEMBER, OPERATOR, OWNER + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandSetting.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandSetting.java new file mode 100644 index 00000000..192e1e11 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandSetting.java @@ -0,0 +1,31 @@ +package com.songoda.skyblock.api.island; + +public class IslandSetting { + + private final com.songoda.skyblock.island.IslandSetting handle; + + public IslandSetting(com.songoda.skyblock.island.IslandSetting handle) { + this.handle = handle; + } + + /** + * @return The name of the Setting + */ + public String getName() { + return this.handle.getName(); + } + + /** + * @return The status condition of the Setting + */ + public boolean getStatus() { + return this.handle.getStatus(); + } + + /** + * @param status condition for the Setting + */ + public void setStatus(boolean status) { + this.handle.setStatus(status); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandUpgrade.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandUpgrade.java new file mode 100644 index 00000000..1737d54a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandUpgrade.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.api.island; + +public enum IslandUpgrade { + + CROP, SPAWNER, FLY, DROPS, SIZE, SPEED, JUMP + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandWorld.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandWorld.java new file mode 100644 index 00000000..6fc845e5 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/island/IslandWorld.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.api.island; + +public enum IslandWorld { + + OVERWORLD, NETHER, END + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/levelling/LevellingManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/levelling/LevellingManager.java new file mode 100644 index 00000000..672975f6 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/levelling/LevellingManager.java @@ -0,0 +1,21 @@ +package com.songoda.skyblock.api.levelling; + +import com.google.common.base.Preconditions; +import com.songoda.skyblock.api.island.Island; + +public class LevellingManager { + + private final com.songoda.skyblock.levelling.LevellingManager levellingManager; + + public LevellingManager(com.songoda.skyblock.levelling.LevellingManager levellingManager) { + this.levellingManager = levellingManager; + } + + /** + * Calculates the points of an Island to determine what the Island level is + */ + public void calculatePoints(Island island) { + Preconditions.checkArgument(island != null, "Cannot calculate points to null island"); + this.levellingManager.calculatePoints(null, island.getIsland()); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/structure/Structure.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/structure/Structure.java new file mode 100644 index 00000000..0d272baa --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/structure/Structure.java @@ -0,0 +1,44 @@ +package com.songoda.skyblock.api.structure; + +import com.songoda.skyblock.utils.version.Materials; + +import java.util.List; + +public interface Structure { + + String getName(); + + Materials getMaterials(); + + void setMaterials(Materials materials); + + String getOverworldFile(); + + void setOverworldFile(String file); + + String getNetherFile(); + + void setNetherFile(String file); + + String getDisplayname(); + + void setDisplayname(String displayName); + + boolean isPermission(); + + String getPermission(); + + void setPermission(boolean permission); + + List getDescription(); + + void addLine(String line); + + void removeLine(int index); + + List getCommands(); + + void addCommand(String command); + + void removeCommand(int index); +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/structure/StructureManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/structure/StructureManager.java new file mode 100644 index 00000000..08a0acd3 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/structure/StructureManager.java @@ -0,0 +1,40 @@ +package com.songoda.skyblock.api.structure; + +import java.util.ArrayList; +import java.util.List; + +public class StructureManager { + + private final com.songoda.skyblock.structure.StructureManager structureManager; + + public StructureManager(com.songoda.skyblock.structure.StructureManager structureManager) { + this.structureManager = structureManager; + } + + /** + * @return The Structure for an Island + */ + public Structure getStructure(String structure) { + return this.structureManager.getStructure(structure); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean hasStructure(String structure) { + return structureManager.containsStructure(structure); + } + + /** + * @return A List of Structures for an Island + */ + public List getStructures() { + List structures = new ArrayList<>(); + + for (Structure structureList : structureManager.getStructures()) { + structures.add(structureList); + } + + return structures; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/utils/APIUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/utils/APIUtil.java new file mode 100644 index 00000000..a1136354 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/utils/APIUtil.java @@ -0,0 +1,188 @@ +package com.songoda.skyblock.api.utils; + +import com.songoda.skyblock.api.island.*; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.utils.world.WorldBorder; + +public final class APIUtil { + + public static com.songoda.skyblock.island.IslandWorld toImplementation(IslandWorld world) { + switch (world) { + case NETHER: + return com.songoda.skyblock.island.IslandWorld.Nether; + case OVERWORLD: + return com.songoda.skyblock.island.IslandWorld.Normal; + case END: + return com.songoda.skyblock.island.IslandWorld.End; + } + + return null; + } + + public static IslandWorld fromImplementation(com.songoda.skyblock.island.IslandWorld world) { + switch (world) { + case Nether: + return IslandWorld.NETHER; + case Normal: + return IslandWorld.OVERWORLD; + case End: + return IslandWorld.END; + } + + return null; + } + + public static com.songoda.skyblock.island.IslandEnvironment toImplementation(IslandEnvironment environment) { + switch (environment) { + case ISLAND: + return com.songoda.skyblock.island.IslandEnvironment.Island; + case MAIN: + return com.songoda.skyblock.island.IslandEnvironment.Main; + case VISITOR: + return com.songoda.skyblock.island.IslandEnvironment.Visitor; + } + + return null; + } + + public static IslandEnvironment fromImplementation(com.songoda.skyblock.island.IslandEnvironment environment) { + switch (environment) { + case Island: + return IslandEnvironment.ISLAND; + case Main: + return IslandEnvironment.MAIN; + case Visitor: + return IslandEnvironment.VISITOR; + } + + return null; + } + + public static com.songoda.skyblock.island.IslandRole toImplementation(IslandRole role) { + switch (role) { + case VISITOR: + return com.songoda.skyblock.island.IslandRole.Visitor; + case COOP: + return com.songoda.skyblock.island.IslandRole.Coop; + case MEMBER: + return com.songoda.skyblock.island.IslandRole.Member; + case OPERATOR: + return com.songoda.skyblock.island.IslandRole.Operator; + case OWNER: + return com.songoda.skyblock.island.IslandRole.Owner; + } + + return null; + } + + public static IslandRole fromImplementation(com.songoda.skyblock.island.IslandRole role) { + switch (role) { + case Visitor: + return IslandRole.VISITOR; + case Coop: + return IslandRole.COOP; + case Member: + return IslandRole.MEMBER; + case Operator: + return IslandRole.OPERATOR; + case Owner: + return IslandRole.OWNER; + } + + return null; + } + + public static Upgrade.Type toImplementation(IslandUpgrade upgrade) { + switch (upgrade) { + case CROP: + return Upgrade.Type.Crop; + case DROPS: + return Upgrade.Type.Drops; + case FLY: + return Upgrade.Type.Fly; + case JUMP: + return Upgrade.Type.Jump; + case SIZE: + return Upgrade.Type.Size; + case SPAWNER: + return Upgrade.Type.Spawner; + case SPEED: + return Upgrade.Type.Speed; + } + + return null; + } + + public static IslandUpgrade fromImplementation(Upgrade.Type upgrade) { + switch (upgrade) { + case Crop: + return IslandUpgrade.CROP; + case Drops: + return IslandUpgrade.DROPS; + case Fly: + return IslandUpgrade.FLY; + case Jump: + return IslandUpgrade.JUMP; + case Size: + return IslandUpgrade.SIZE; + case Spawner: + return IslandUpgrade.SPAWNER; + case Speed: + return IslandUpgrade.SPEED; + } + + return null; + } + + public static com.songoda.skyblock.island.IslandMessage toImplementation(IslandMessage message) { + switch (message) { + case SIGN: + return com.songoda.skyblock.island.IslandMessage.Sign; + case SIGNATURE: + return com.songoda.skyblock.island.IslandMessage.Signature; + case WELCOME: + return com.songoda.skyblock.island.IslandMessage.Welcome; + } + + return null; + } + + public static IslandMessage fromImplementation(com.songoda.skyblock.island.IslandMessage message) { + switch (message) { + case Sign: + return IslandMessage.SIGN; + case Signature: + return IslandMessage.SIGNATURE; + case Welcome: + return IslandMessage.WELCOME; + } + + return null; + } + + public static WorldBorder.Color toImplementation(IslandBorderColor color) { + switch (color) { + case Blue: + return WorldBorder.Color.Blue; + case Green: + return WorldBorder.Color.Green; + case Red: + return WorldBorder.Color.Red; + } + + return null; + } + + public static IslandBorderColor fromImplementation(WorldBorder.Color color) { + switch (color) { + case Blue: + return IslandBorderColor.Blue; + case Green: + return IslandBorderColor.Green; + case Red: + return IslandBorderColor.Red; + } + + return null; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/visit/Visit.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/visit/Visit.java new file mode 100644 index 00000000..d1add8af --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/api/visit/Visit.java @@ -0,0 +1,99 @@ +package com.songoda.skyblock.api.visit; + +import com.google.common.base.Preconditions; +import com.songoda.skyblock.api.island.Island; + +import java.util.Set; +import java.util.UUID; + +public class Visit { + + private final Island handle; + + public Visit(Island handle) { + this.handle = handle; + } + + /** + * @return The Safe Level for the Island + */ + public int getSafeLevel() { + return this.handle.getIsland().getVisit().getSafeLevel(); + } + + /** + * Set the Safe Level for the Island + */ + public void setSafeLevel(int safeLevel) { + this.handle.getIsland().getVisit().setSafeLevel(safeLevel); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isVisitor(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); + return getVisitors().contains(uuid); + } + + /** + * @return A Set of players that have visited the Island + */ + public Set getVisitors() { + return this.handle.getIsland().getVisit().getVisitors(); + } + + /** + * Add a player to the visited players for the Island + */ + public void addVisitor(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot add visitor to null uuid"); + this.handle.getIsland().getVisit().addVisitor(uuid); + } + + /** + * Remove a player from the visited players for the Island + */ + public void removeVisitor(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot remove visitor to null uuid"); + this.handle.getIsland().getVisit().removeVisitor(uuid); + } + + /** + * @return true of conditions met, false otherwise + */ + public boolean isVoter(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); + return getVoters().contains(uuid); + } + + /** + * @return A Set of players that have voted for the Island + */ + public Set getVoters() { + return this.handle.getIsland().getVisit().getVoters(); + } + + /** + * Add a player to the voted players for the Island + */ + public void addVoter(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot add voter to null uuid"); + this.handle.getIsland().getVisit().addVoter(uuid); + } + + /** + * Remove a player from the voted players for the Island + */ + public void removeVoter(UUID uuid) { + Preconditions.checkArgument(uuid != null, "Cannot remove voter to null uuid"); + this.handle.getIsland().getVisit().removeVoter(uuid); + } + + /** + * @return Implementation for the Island + */ + public Island getIsland() { + return handle; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/ban/Ban.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/ban/Ban.java new file mode 100644 index 00000000..47dc9a57 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/ban/Ban.java @@ -0,0 +1,114 @@ +package com.songoda.skyblock.ban; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.event.island.IslandBanEvent; +import com.songoda.skyblock.api.event.island.IslandUnbanEvent; +import com.songoda.skyblock.config.FileManager.Config; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +public class Ban { + + private UUID islandOwnerUUID; + + public Ban(UUID islandOwnerUUID) { + this.islandOwnerUUID = islandOwnerUUID; + } + + public UUID getOwnerUUID() { + return islandOwnerUUID; + } + + public void setOwnerUUID(UUID islandOwnerUUID) { + this.islandOwnerUUID = islandOwnerUUID; + } + + public boolean isBanned(UUID uuid) { + return getBans().contains(uuid); + } + + public Set getBans() { + SkyBlock skyblock = SkyBlock.getInstance(); + + Set islandBans = new HashSet<>(); + + for (String islandBanList : skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration().getStringList("Bans")) { + + UUID uuid = UUID.fromString(islandBanList); + if (!Bukkit.getOfflinePlayer(uuid).hasPlayedBefore()) + continue; + + islandBans.add(uuid); + } + + return islandBans; + } + + public void addBan(UUID issuer, UUID banned) { + SkyBlock skyblock = SkyBlock.getInstance(); + + IslandBanEvent islandBanEvent = new IslandBanEvent( + skyblock.getIslandManager().getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)) + .getAPIWrapper(), + Bukkit.getServer().getOfflinePlayer(issuer), Bukkit.getServer().getOfflinePlayer(banned)); + Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> Bukkit.getServer().getPluginManager().callEvent(islandBanEvent)); + + if (!islandBanEvent.isCancelled()) { + List islandBans = new ArrayList<>(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration(); + + for (String islandBanList : configLoad.getStringList("Bans")) { + islandBans.add(islandBanList); + } + + islandBans.add(banned.toString()); + configLoad.set("Bans", islandBans); + } + } + + public void removeBan(UUID uuid) { + SkyBlock skyblock = SkyBlock.getInstance(); + + List islandBans = new ArrayList<>(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration(); + + for (String islandBanList : configLoad.getStringList("Bans")) { + if (!uuid.toString().equals(islandBanList)) { + islandBans.add(islandBanList); + } + } + + configLoad.set("Bans", islandBans); + + Bukkit.getServer().getPluginManager() + .callEvent(new IslandUnbanEvent(skyblock.getIslandManager() + .getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)).getAPIWrapper(), + Bukkit.getServer().getOfflinePlayer(uuid))); + } + + public void save() { + SkyBlock skyblock = SkyBlock.getInstance(); + + Config config = skyblock.getFileManager().getConfig(new File( + new File(skyblock.getDataFolder().toString() + "/ban-data"), islandOwnerUUID.toString() + ".yml")); + + try { + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/ban/BanManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/ban/BanManager.java new file mode 100644 index 00000000..fca4dd24 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/ban/BanManager.java @@ -0,0 +1,139 @@ +package com.songoda.skyblock.ban; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class BanManager { + + private final SkyBlock skyblock; + private Map banStorage = new HashMap<>(); + + public BanManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + loadIslands(); + } + + public void onDisable() { + Map banIslands = getIslands(); + + for (UUID banIslandList : banIslands.keySet()) { + Ban ban = banIslands.get(banIslandList); + ban.save(); + } + } + + public void loadIslands() { + FileManager fileManager = skyblock.getFileManager(); + + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Visitor.Unload")) { + File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); + + if (configFile.exists()) { + for (File fileList : configFile.listFiles()) { + UUID islandOwnerUUID = UUID.fromString(fileList.getName().replaceFirst("[.][^.]+$", "")); + createIsland(islandOwnerUUID); + } + } + } + } + + public void transfer(UUID uuid1, UUID uuid2) { + FileManager fileManager = skyblock.getFileManager(); + + Ban ban = getIsland(uuid1); + ban.save(); + + File oldBanDataFile = new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), + uuid1.toString() + ".yml"); + File newBanDataFile = new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), + uuid2.toString() + ".yml"); + + fileManager.unloadConfig(oldBanDataFile); + fileManager.unloadConfig(newBanDataFile); + + oldBanDataFile.renameTo(newBanDataFile); + + removeIsland(uuid1); + addIsland(uuid2, ban); + } + + public void removeVisitor(Island island) { + 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(); + + for (UUID visitorList : skyblock.getIslandManager().getVisitorsAtIsland(island)) { + Player targetPlayer = Bukkit.getServer().getPlayer(visitorList); + + LocationUtil.teleportPlayerToSpawn(targetPlayer); + + messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Visit.Banned.Island.Message")); + soundManager.playSound(targetPlayer, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); + } + } + + public boolean hasIsland(UUID islandOwnerUUID) { + return banStorage.containsKey(islandOwnerUUID); + } + + public Ban getIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + return banStorage.get(islandOwnerUUID); + } + + return null; + } + + public Map getIslands() { + return banStorage; + } + + public void createIsland(UUID islandOwnerUUID) { + banStorage.put(islandOwnerUUID, new Ban(islandOwnerUUID)); + } + + public void addIsland(UUID islandOwnerUUID, Ban ban) { + banStorage.put(islandOwnerUUID, ban); + } + + public void removeIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + banStorage.remove(islandOwnerUUID); + } + } + + public void unloadIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + skyblock.getFileManager().unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), + islandOwnerUUID.toString() + ".yml")); + banStorage.remove(islandOwnerUUID); + } + } + + public void deleteIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + skyblock.getFileManager().deleteConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), + islandOwnerUUID.toString() + ".yml")); + banStorage.remove(islandOwnerUUID); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/biome/BiomeManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/biome/BiomeManager.java similarity index 89% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/biome/BiomeManager.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/biome/BiomeManager.java index 2507a13a..7bc60c10 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/biome/BiomeManager.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/biome/BiomeManager.java @@ -1,10 +1,10 @@ -package me.goodandevil.skyblock.biome; +package com.songoda.skyblock.biome; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandEnvironment; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.utils.version.NMSUtil; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.block.Biome; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/CommandManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/CommandManager.java new file mode 100644 index 00000000..fcb7dae3 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/CommandManager.java @@ -0,0 +1,564 @@ +package com.songoda.skyblock.command; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.command.commands.admin.*; +import com.songoda.skyblock.command.commands.island.CreateCommand; +import com.songoda.skyblock.command.commands.island.DeleteCommand; +import com.songoda.skyblock.command.commands.island.LevelCommand; +import com.songoda.skyblock.command.commands.island.OwnerCommand; +import com.songoda.skyblock.command.commands.island.SetSpawnCommand; +import com.songoda.skyblock.command.commands.island.SettingsCommand; +import com.songoda.skyblock.command.commands.island.UpgradeCommand; +import com.songoda.skyblock.command.commands.island.*; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.menus.ControlPanel; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.ChatComponent; +import com.songoda.skyblock.utils.version.Sounds; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.*; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class CommandManager implements CommandExecutor, TabCompleter { + + private final SkyBlock skyblock; + private List islandCommands; + private List adminCommands; + + public CommandManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + skyblock.getCommand("island").setExecutor(this); + skyblock.getCommand("island").setTabCompleter(this); + + registerSubCommands(); + } + + public void registerSubCommands() { + islandCommands = Arrays.asList( + new AcceptCommand(), + new BanCommand(), + new BankCommand(), + new BansCommand(), + new BiomeCommand(), + new BorderCommand(), + new CancelCommand(), + new ChatCommand(), + new CloseCommand(), + new ConfirmCommand(), + new ControlPanelCommand(), + new CoopCommand(), + new CreateCommand(), + new CurrentCommand(), + new DeleteCommand(), + new DemoteCommand(), + new DenyCommand(), + new InformationCommand(), + new InviteCommand(), + new KickAllCommand(), + new KickCommand(), + new LeaderboardCommand(), + new LeaveCommand(), + new LevelCommand(), + new MembersCommand(), + new OpenCommand(), + new OwnerCommand(), + new PromoteCommand(), + new PublicCommand(), + new SetSpawnCommand(), + new SettingsCommand(), + new TeleportCommand(), + new UnbanCommand(), + new UnlockCommand(), + new UpgradeCommand(), + new ValueCommand(), + new VisitCommand(), + new VisitorsCommand(), + new VoteCommand(), + new WeatherCommand() + ); + + adminCommands = Arrays.asList( + new AddUpgradeCommand(), + new com.songoda.skyblock.command.commands.admin.CreateCommand(), + new com.songoda.skyblock.command.commands.admin.DeleteCommand(), + new GeneratorCommand(), + new com.songoda.skyblock.command.commands.admin.LevelCommand(), + new LevelScanCommand(), + new com.songoda.skyblock.command.commands.admin.OwnerCommand(), + new RefreshHologramsCommand(), + new ReloadCommand(), + new RemoveHologramCommand(), + new RemoveUpgradeCommand(), + new SetBiomeCommand(), + new SetHologramCommand(), + new SetSizeCommand(), + new com.songoda.skyblock.command.commands.admin.SetSpawnCommand(), + new com.songoda.skyblock.command.commands.admin.SettingsCommand(), + new StructureCommand(), + new com.songoda.skyblock.command.commands.admin.UpgradeCommand() + ); + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { + if (command.getName().equalsIgnoreCase("island")) { + 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(); + + Player player = null; + + if (sender instanceof Player) { + player = (Player) sender; + } + + if (args.length == 0) { + if (player == null) { + sendConsoleHelpCommands(sender); + } else { + if (skyblock.getIslandManager().getIsland(player) == null) { + Bukkit.getServer().getScheduler().runTask(skyblock, () -> Bukkit.getServer().dispatchCommand(sender, "island create")); + } else { + boolean canUseControlPanel = player.hasPermission("fabledskyblock.*") + || player.hasPermission("fabledskyblock.island.*") + || player.hasPermission("fabledskyblock.island.controlpanel"); + + if (!canUseControlPanel) { + messageManager.sendMessage(player, configLoad.getString("Command.PermissionDenied.Island.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return true; + } + + ControlPanel.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + return true; + } + + SubCommand subCommand; + boolean isAdmin; + + if (args[0].equalsIgnoreCase("help")) { + if (player == null) { + sendConsoleHelpCommands(sender); + } else { + boolean canUseHelp = player.hasPermission("fabledskyblock.*") + || player.hasPermission("fabledskyblock.island.*") + || player.hasPermission("fabledskyblock.island.help"); + + if (!canUseHelp) { + messageManager.sendMessage(player, configLoad.getString("Command.PermissionDenied.Island.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return true; + } + + int page = -1; + + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Command.Help.List")) { + page = 1; + + if (args.length == 2) { + if (args[1].matches("[0-9]+")) { + page = Integer.valueOf(args[1]); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Help.Integer.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return true; + } + } + } + + sendPlayerIslandHelpCommands(player, page); + } + + return true; + } else if (args[0].equalsIgnoreCase("admin")) { + if (args.length == 1 || args[1].equalsIgnoreCase("help")) { + if (player == null) { + sendConsoleHelpCommands(sender); + } else { + boolean canUseHelp = player.hasPermission("fabledskyblock.*") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.admin.help"); + + if (!canUseHelp) { + messageManager.sendMessage(player, configLoad.getString("Command.PermissionDenied.Admin.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return true; + } + + int page = -1; + + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Command.Help.List")) { + page = 1; + + if (args.length == 3) { + if (args[2].matches("[0-9]+")) { + page = Integer.valueOf(args[2]); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Help.Integer.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + return true; + } + } + } + + sendPlayerAdminHelpCommands(player, page); + } + + return true; + } + + subCommand = getAdminSubCommand(args[1]); + isAdmin = true; + } else { + subCommand = getIslandSubCommand(args[0]); + isAdmin = false; + } + + if (subCommand == null) { + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Argument.Unrecognised.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + return true; + } + + if (!subCommand.hasPermission(sender, isAdmin)) { + messageManager.sendMessage(sender, configLoad.getString("Command.PermissionDenied." + (isAdmin ? "Admin" : "Island") + ".Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return true; + } + + List arguments = new ArrayList<>(Arrays.asList(args)); + arguments.remove(args[0]); + + if (adminCommands.contains(subCommand)) { + arguments.remove(args[1]); + } + + if (sender instanceof Player) { + subCommand.onCommandByPlayer(player, arguments.toArray(new String[0])); + } else if (sender instanceof ConsoleCommandSender) { + subCommand.onCommandByConsole((ConsoleCommandSender) sender, + arguments.toArray(new String[0])); + } + } + + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String s, String[] args) { + if (!(sender instanceof Player)) { + return null; + } + + boolean isAdmin = sender.hasPermission("fabledskyblock.admin.*") || sender.hasPermission("fabledskyblock.*"); + + if (command.getName().equalsIgnoreCase("island")) { + List commandAliases = new ArrayList<>(); + + if (args.length == 1) { + if (args[0] == null || args[0].isEmpty()) { + commandAliases.add("admin"); + + for (SubCommand subCommandList : islandCommands) { + commandAliases.add(subCommandList.getName()); + } + } else { + if (isAdmin) { + if ("admin".contains(args[0].toLowerCase())) { + commandAliases.add("admin"); + } + } + + for (SubCommand subCommandList : islandCommands) { + if (subCommandList.getName().toLowerCase().contains(args[0].toLowerCase())) { + commandAliases.add(subCommandList.getName()); + } + } + } + } else if (args.length == 2) { + if (isAdmin) { + if (args[0].equalsIgnoreCase("admin")) { + if (args[1] == null || args[1].isEmpty()) { + for (SubCommand subCommandList : adminCommands) { + commandAliases.add(subCommandList.getName()); + } + } else { + for (SubCommand subCommandList : adminCommands) { + if (subCommandList.getName().toLowerCase().contains(args[1].toLowerCase())) { + commandAliases.add(subCommandList.getName()); + } + } + } + } + } + + List arguments = getIslandArguments(args[0], args[1]); + + if (arguments.size() != 0) { + commandAliases.addAll(arguments); + } + } else if (args.length == 3) { + if (isAdmin) { + if (args[0].equalsIgnoreCase("admin")) { + List arguments = getAdminArguments(args[1], args[2]); + + if (arguments.size() != 0) { + commandAliases.addAll(arguments); + } + } + } + } + + if (commandAliases.size() != 0) { + return commandAliases; + } + } + + return null; + } + + public List getIslandArguments(String arg1, String arg2) { + return this.getArguments(islandCommands, arg1, arg2); + } + + public List getAdminArguments(String arg1, String arg2) { + return this.getArguments(adminCommands, arg1, arg2); + } + + public List getArguments(List subCommands, String arg1, String arg2) { + List arguments = new ArrayList<>(); + + for (SubCommand subCommandList : subCommands) { + if (arg1.equalsIgnoreCase(subCommandList.getName())) { + if (arg2 == null || arg2.isEmpty()) { + arguments.addAll(Arrays.asList(subCommandList.getArguments())); + } else { + for (String argumentList : subCommandList.getArguments()) { + if (argumentList.contains(arg2.toLowerCase())) { + arguments.add(argumentList); + + break; + } + } + } + + break; + } + } + + return arguments; + } + + public void sendPlayerIslandHelpCommands(Player player, int page) { + this.sendPlayerHelpCommands(player, islandCommands, page, false); + } + + public void sendPlayerAdminHelpCommands(Player player, int page) { + this.sendPlayerHelpCommands(player, adminCommands, page, true); + } + + public void sendPlayerHelpCommands(Player player, List subCommands, int page, boolean isAdmin) { + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + int pageSize = 7; + + int nextEndIndex = subCommands.size() - page * pageSize, index = page * pageSize - pageSize, + endIndex = index >= subCommands.size() ? subCommands.size() - 1 : index + pageSize; + boolean showAlises = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Command.Help.Aliases.Enable"); + + if (nextEndIndex <= -7) { + skyblock.getMessageManager().sendMessage(player, configLoad.getString("Command.Island.Help.Page.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + + String subCommandText = ""; + + if (isAdmin) { + subCommandText = "admin "; + } + + for (String helpLines : configLoad.getStringList("Command.Island.Help.Lines")) { + if (helpLines.contains("%type")) { + helpLines = helpLines.replace("%type", "Admin"); + } + + if (helpLines.contains("%commands")) { + String[] sections = helpLines.split("%commands"); + String prefix = "", suffix = ""; + + if (sections.length >= 1) { + prefix = ChatColor.translateAlternateColorCodes('&', sections[0]); + } + + if (sections.length == 2) { + suffix = ChatColor.translateAlternateColorCodes('&', sections[1]); + } + + if (page == -1) { + for (SubCommand subCommand : subCommands) { + StringBuilder commandAliases = new StringBuilder(); + + if (showAlises) { + for (int i = 0; i < subCommand.getAliases().length; i++) { + commandAliases.append("/").append(subCommand.getAliases()[i]); + } + } + + player.spigot() + .sendMessage(new ChatComponent( + prefix.replace("%info", subCommand.getInfo()) + "/island " + + subCommandText + subCommand.getName() + commandAliases + + suffix.replace("%info", subCommand.getInfo()), + false, null, null, + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(subCommand.getInfo()).create())) + .getTextComponent()); + } + } else { + for (; index < endIndex; index++) { + if (subCommands.size() > index) { + SubCommand subCommandFromIndex = subCommands.get(index); + StringBuilder commandAliases = new StringBuilder(); + + if (showAlises) { + for (int i = 0; i < subCommandFromIndex.getAliases().length; i++) { + commandAliases.append("/").append(subCommandFromIndex.getAliases()[i]); + } + } + + player.spigot() + .sendMessage(new ChatComponent( + prefix.replace("%info", subCommandFromIndex.getInfo()) + "/island " + + subCommandText + subCommandFromIndex.getName() + commandAliases + + suffix.replace("%info", subCommandFromIndex.getInfo()), + false, null, null, + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(subCommandFromIndex.getInfo()).create())) + .getTextComponent()); + } + } + } + } else { + skyblock.getMessageManager().sendMessage(player, helpLines); + } + } + + if (page != -1) { + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + if (page == 1) { + player.spigot() + .sendMessage( + new ChatComponent( + ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Command.Island.Help.Word.Next")), + false, null, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/island " + subCommandText + "help " + (page + 1)), + null).getTextComponent()); + } else { + player.spigot() + .sendMessage( + new ChatComponent( + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Command.Island.Help.Word.Previous")), + false, null, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/island " + subCommandText + "help " + (page - 1)), + null).addExtraChatComponent( + new ChatComponent(" " + + ChatColor.translateAlternateColorCodes('&', + configLoad + .getString("Command.Island.Help.Word.Pipe")) + + " ", false, null, null, null)) + .addExtraChatComponent(new ChatComponent( + ChatColor.translateAlternateColorCodes('&', + configLoad.getString( + "Command.Island.Help.Word.Next")), + false, null, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/island " + subCommandText + "help " + (page + 1)), + null)) + .getTextComponent()); + } + } else { + if (page != 1) { + player.spigot() + .sendMessage(new ChatComponent( + ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Command.Island.Help.Word.Previous")), + false, null, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/island " + subCommandText + "help " + (page - 1)), + null).getTextComponent()); + } + } + } + + skyblock.getSoundManager().playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + } + + public void sendConsoleHelpCommands(CommandSender sender) { + sender.sendMessage("SkyBlock - Console Commands"); + + String[] commands = {"delete", "owner", "reload", "removehologram", "setsize"}; + + for (String commandList : commands) { + SubCommand subCommand = this.getAdminSubCommand(commandList); + sender.sendMessage("* /island admin " + subCommand.getName() + " - " + subCommand.getInfo()); + } + } + + public SubCommand getIslandSubCommand(String cmdName) { + return this.getSubCommand(islandCommands, cmdName); + } + + public SubCommand getAdminSubCommand(String cmdName) { + return this.getSubCommand(adminCommands, cmdName); + } + + public SubCommand getSubCommand(List subCommands, String cmdName) { + for (SubCommand command : subCommands) { + if (command.getName().equalsIgnoreCase(cmdName)) + return command; + + for (String argList : command.getAliases()) + if (argList.equalsIgnoreCase(cmdName)) + return command; + } + + return null; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/SubCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/SubCommand.java similarity index 90% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/SubCommand.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/SubCommand.java index 9bf5099a..85bf087c 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/SubCommand.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/SubCommand.java @@ -1,6 +1,6 @@ -package me.goodandevil.skyblock.command; +package com.songoda.skyblock.command; -import me.goodandevil.skyblock.SkyBlock; +import com.songoda.skyblock.SkyBlock; import org.bukkit.ChatColor; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; @@ -30,7 +30,9 @@ public abstract class SubCommand { public abstract String[] getArguments(); - public String getInfo() { return this.info; } + public String getInfo() { + return this.info; + } public boolean hasPermission(Permissible toCheck, boolean isAdmin) { if (toCheck.hasPermission("fabledskyblock.*")) diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/SkyBlockCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/SkyBlockCommand.java similarity index 84% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/SkyBlockCommand.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/SkyBlockCommand.java index c3bf33ae..30321c4c 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/SkyBlockCommand.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/SkyBlockCommand.java @@ -1,6 +1,6 @@ -package me.goodandevil.skyblock.command.commands; +package com.songoda.skyblock.command.commands; -import me.goodandevil.skyblock.SkyBlock; +import com.songoda.skyblock.SkyBlock; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -17,7 +17,7 @@ public class SkyBlockCommand implements CommandExecutor { return true; } - private String formatText(String string){ + private String formatText(String string) { return ChatColor.translateAlternateColorCodes('&', string); } } diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/AddUpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/AddUpgradeCommand.java new file mode 100644 index 00000000..87badd46 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/AddUpgradeCommand.java @@ -0,0 +1,156 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +public class AddUpgradeCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + onCommand(sender, args); + } + + public void onCommand(CommandSender sender, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 2) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID islandOwnerUUID; + String targetPlayerName; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + islandOwnerUUID = targetPlayerOffline.getOwner(); + targetPlayerName = targetPlayerOffline.getName(); + } else { + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + targetPlayerName = targetPlayer.getName(); + } + + Upgrade.Type upgrade = null; + + for (Upgrade.Type upgradeList : Upgrade.Type.values()) { + if (upgradeList != Upgrade.Type.Size) { + if (args[1].toUpperCase().equals(upgradeList.name().toUpperCase())) { + upgrade = upgradeList; + + break; + } + } + } + + if (islandOwnerUUID == null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.AddUpgrade.Island.Owner.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (upgrade == null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.AddUpgrade.Upgrade.Exist.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else { + if (islandManager.containsIsland(islandOwnerUUID)) { + Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); + + if (island.hasUpgrade(upgrade)) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.AddUpgrade.Upgrade.Already.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + island.setUpgrade(null, upgrade, true); + } else { + File islandDataFile = new File(skyblock.getDataFolder().toString() + "/island-data", + islandOwnerUUID.toString() + ".yml"); + + if (!fileManager.isFileExist(islandDataFile)) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.AddUpgrade.Island.Data.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + FileConfiguration islandDataConfigLoad = YamlConfiguration.loadConfiguration(islandDataFile); + + if (islandDataConfigLoad.getString("Upgrade." + upgrade.name()) != null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.AddUpgrade.Upgrade.Already.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + islandDataConfigLoad.set("Upgrade." + upgrade.name(), true); + + try { + islandDataConfigLoad.save(islandDataFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.AddUpgrade.Added.Message") + .replace("%player", targetPlayerName).replace("%upgrade", upgrade.name())); + soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.AddUpgrade.Invalid.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public String getName() { + return "addupgrade"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.AddUpgrade.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/CreateCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/CreateCommand.java new file mode 100644 index 00000000..2fe5a57e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/CreateCommand.java @@ -0,0 +1,50 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.menus.admin.Creator; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +public class CreateCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + if (playerDataManager.hasPlayerData(player)) { + playerDataManager.getPlayerData(player).setViewer(null); + } + + Creator.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "create"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Create.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/DeleteCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/DeleteCommand.java new file mode 100644 index 00000000..e90e2215 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/DeleteCommand.java @@ -0,0 +1,126 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class DeleteCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + onCommand(sender, args); + } + + public void onCommand(CommandSender sender, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Player player = null; + + if (sender instanceof Player) { + player = (Player) sender; + } + + if (args.length == 1) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID targetPlayerUUID; + String targetPlayerName; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + targetPlayerUUID = targetPlayerOffline.getUniqueId(); + targetPlayerName = targetPlayerOffline.getName(); + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + targetPlayerName = targetPlayer.getName(); + } + + if (targetPlayerUUID == null || !islandManager.isIslandExist(targetPlayerUUID)) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.Delete.Owner.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Island island = islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(targetPlayerUUID)); + Location spawnLocation = LocationUtil.getSpawnLocation(); + + if (spawnLocation != null && islandManager.isLocationAtIsland(island, spawnLocation)) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Admin.Delete.Spawn.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + islandManager.unloadIsland(island, null); + + return; + } + + for (Player all : Bukkit.getOnlinePlayers()) { + if (island.hasRole(IslandRole.Member, all.getUniqueId()) + || island.hasRole(IslandRole.Operator, all.getUniqueId())) { + all.sendMessage(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Command.Island.Confirmation.Deletion.Broadcast.Message"))); + soundManager.playSound(all, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); + } + } + + island.setDeleted(true); + islandManager.deleteIsland(island); + + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.Delete.Deleted.Message").replace("%player", + targetPlayerName)); + soundManager.playSound(sender, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.Delete.Invalid.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public String getName() { + return "delete"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Delete.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"remove", "disband"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/GeneratorCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/GeneratorCommand.java new file mode 100644 index 00000000..28edd35f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/GeneratorCommand.java @@ -0,0 +1,66 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.menus.admin.Generator; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class GeneratorCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + 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 (skyblock.getGeneratorManager() == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.Generator.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + if (playerDataManager.hasPlayerData(player)) { + playerDataManager.getPlayerData(player).setViewer(null); + } + + Generator.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "generator"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Generator.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/LevelCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/LevelCommand.java new file mode 100644 index 00000000..3f5956ee --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/LevelCommand.java @@ -0,0 +1,44 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.menus.admin.Levelling; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +public class LevelCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + SoundManager soundManager = skyblock.getSoundManager(); + + Levelling.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "level"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Level.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"levelling", "points"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/LevelScanCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/LevelScanCommand.java new file mode 100644 index 00000000..524fbbe3 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/LevelScanCommand.java @@ -0,0 +1,82 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class LevelScanCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + this.onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + this.onCommand(sender, args); + } + + private void onCommand(CommandSender sender, String[] args) { + LevellingManager levellingManager = skyblock.getLevellingManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + FileManager.Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 0) { + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.LevelScan.Invalid.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return; + } + + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[0]); + Island island = islandManager.getIsland(offlinePlayer); + + if (island == null) { + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.LevelScan.NoIsland.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return; + } + + levellingManager.calculatePoints(sender instanceof Player ? (Player) sender : null, island); + + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.LevelScan.Started.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public String getName() { + return "levelscan"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.LevelScan.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/OwnerCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/OwnerCommand.java new file mode 100644 index 00000000..9d61e75a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/OwnerCommand.java @@ -0,0 +1,105 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class OwnerCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + onCommand(sender, args); + } + + public void onCommand(CommandSender sender, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + 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 (args.length == 1) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID targetPlayerUUID, islandOwnerUUID; + String targetPlayerName, islandOwnerName; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + targetPlayerUUID = targetPlayerOffline.getUniqueId(); + islandOwnerUUID = targetPlayerOffline.getOwner(); + targetPlayerName = targetPlayerOffline.getName(); + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + targetPlayerName = targetPlayer.getName(); + } + + if (islandOwnerUUID == null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.Owner.Island.None.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (islandOwnerUUID.equals(targetPlayerUUID)) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.Owner.Island.Owner.Message").replace("%player", + targetPlayerName)); + soundManager.playSound(sender, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } else { + targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID); + + if (targetPlayer == null) { + islandOwnerName = new OfflinePlayer(islandOwnerUUID).getName(); + } else { + islandOwnerName = targetPlayer.getName(); + } + + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.Owner.Island.Member.Message") + .replace("%player", targetPlayerName).replace("%owner", islandOwnerName)); + soundManager.playSound(sender, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.Owner.Invalid.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public String getName() { + return "owner"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Owner.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"ownership", "leader"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RefreshHologramsCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RefreshHologramsCommand.java similarity index 74% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RefreshHologramsCommand.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RefreshHologramsCommand.java index 89702a14..941ecec8 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RefreshHologramsCommand.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RefreshHologramsCommand.java @@ -1,16 +1,12 @@ -package me.goodandevil.skyblock.command.commands.admin; +package com.songoda.skyblock.command.commands.admin; -import me.goodandevil.skyblock.command.SubCommand; -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.leaderboard.LeaderboardManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.apache.commons.lang3.text.WordUtils; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.leaderboard.LeaderboardManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; @@ -18,7 +14,6 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import java.io.File; -import java.io.IOException; public class RefreshHologramsCommand extends SubCommand { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/ReloadCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/ReloadCommand.java new file mode 100644 index 00000000..d5e3a33d --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/ReloadCommand.java @@ -0,0 +1,124 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.generator.GeneratorManager; +import com.songoda.skyblock.hologram.HologramManager; +import com.songoda.skyblock.leaderboard.LeaderboardManager; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.limit.LimitManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.Map; + +public class ReloadCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + onCommand(sender, args); + } + + public void onCommand(CommandSender sender, String[] args) { + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + HologramManager hologramManager = skyblock.getHologramManager(); + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + LimitManager limitManager = skyblock.getLimitManager(); + FileManager fileManager = skyblock.getFileManager(); + + messageManager.sendMessage(sender, "&cPlease note that this command is not supported and may " + + "cause issues that could put the plugin in an unstable state. " + + "If you encounter any issues please stop your server, edit the configuration files, " + + "and then start your server again. This command does NOT reload all the plugin files, only " + + "the config.yml, language.yml, generators.yml, levelling.yml, and limits.yml."); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Map configs = fileManager.getConfigs(); + + for (int i = 0; i < configs.size(); i++) { + String configFileName = (String) configs.keySet().toArray()[i]; + Config configFileConfig = configs.get(configFileName); + String configFilePath = configFileName.replace(configFileConfig.getFile().getName(), ""); + + if (configFilePath.equals(skyblock.getDataFolder().toString() + "\\") + || configFilePath.equals(skyblock.getDataFolder().toString() + "/")) { + configFileConfig.loadFile(); + } + } + + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); + + if (skyblock.getScoreboardManager() == null) { + if (mainConfigLoad.getBoolean("Island.Scoreboard.Enable")) { + skyblock.setScoreboardManager(new ScoreboardManager(skyblock)); + } + } else { + skyblock.getScoreboardManager().resendScoreboard(); + } + + if (skyblock.getGeneratorManager() == null) { + if (mainConfigLoad.getBoolean("Island.Generator.Enable")) { + skyblock.setGeneratorManager(new GeneratorManager(skyblock)); + } + } else { + GeneratorManager generatorManager = skyblock.getGeneratorManager(); + generatorManager.unregisterGenerators(); + generatorManager.registerGenerators(); + } + + LevellingManager levellingManager = skyblock.getLevellingManager(); + levellingManager.unregisterMaterials(); + levellingManager.registerMaterials(); + + Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { + leaderboardManager.clearLeaderboard(); + leaderboardManager.resetLeaderboard(); + leaderboardManager.setupLeaderHeads(); + + Bukkit.getScheduler().runTask(skyblock, () -> skyblock.getHologramManager().resetHologram()); + }); + + limitManager.reload(); + + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.Reload.Reloaded.Message")); + soundManager.playSound(sender, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public String getName() { + return "reload"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Reload.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveHologramCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveHologramCommand.java new file mode 100644 index 00000000..a2789855 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveHologramCommand.java @@ -0,0 +1,118 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.hologram.Hologram; +import com.songoda.skyblock.hologram.HologramManager; +import com.songoda.skyblock.hologram.HologramType; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.apache.commons.lang3.text.WordUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; + +public class RemoveHologramCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + onCommand(sender, args); + } + + public void onCommand(CommandSender sender, 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 (args.length == 1) { + HologramType hologramType = null; + + switch (args[0].toLowerCase()) { + case "level": + hologramType = HologramType.Level; + break; + case "bank": + hologramType = HologramType.Bank; + break; + case "votes": + hologramType = HologramType.Votes; + break; + } + + 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(sender, + configLoad.getString("Command.Island.Admin.RemoveHologram.Set.Message")); + soundManager.playSound(sender, 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, () -> { + HologramType hologramType1 = HologramType + .valueOf(WordUtils.capitalize(args[0].toLowerCase())); + Hologram hologram = hologramManager.getHologram(hologramType1); + + if (hologram != null) { + hologramManager.removeHologram(hologram); + } + }); + + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveHologram.Removed.Message") + .replace("%type", hologramType.name())); + soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + + return; + } + } + + messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.RemoveHologram.Invalid.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public String getName() { + return "removehologram"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.RemoveHologram.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[]{"level", "bank", "votes"}; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveUpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveUpgradeCommand.java new file mode 100644 index 00000000..761c252f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveUpgradeCommand.java @@ -0,0 +1,156 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +public class RemoveUpgradeCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + onCommand(sender, args); + } + + public void onCommand(CommandSender sender, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 2) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID islandOwnerUUID; + String targetPlayerName; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + islandOwnerUUID = targetPlayerOffline.getOwner(); + targetPlayerName = targetPlayerOffline.getName(); + } else { + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + targetPlayerName = targetPlayer.getName(); + } + + Upgrade.Type upgrade = null; + + for (Upgrade.Type upgradeList : Upgrade.Type.values()) { + if (upgradeList != Upgrade.Type.Size) { + if (args[1].toUpperCase().equals(upgradeList.name().toUpperCase())) { + upgrade = upgradeList; + + break; + } + } + } + + if (islandOwnerUUID == null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveUpgrade.Island.Owner.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (upgrade == null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveUpgrade.Upgrade.Exist.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else { + if (islandManager.containsIsland(islandOwnerUUID)) { + Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); + + if (!island.hasUpgrade(upgrade)) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveUpgrade.Upgrade.Missing.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + island.removeUpgrade(upgrade); + } else { + File islandDataFile = new File(skyblock.getDataFolder().toString() + "/island-data", + islandOwnerUUID.toString() + ".yml"); + + if (!fileManager.isFileExist(islandDataFile)) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveUpgrade.Island.Data.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + FileConfiguration islandDataConfigLoad = YamlConfiguration.loadConfiguration(islandDataFile); + + if (islandDataConfigLoad.getString("Upgrade." + upgrade.name()) == null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveUpgrade.Upgrade.Missing.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + islandDataConfigLoad.set("Upgrade." + upgrade.name(), null); + + try { + islandDataConfigLoad.save(islandDataFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveUpgrade.Removed.Message") + .replace("%player", targetPlayerName).replace("%upgrade", upgrade.name())); + soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.RemoveUpgrade.Invalid.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public String getName() { + return "removeupgrade"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.RemoveUpgrade.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetBiomeCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetBiomeCommand.java similarity index 85% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetBiomeCommand.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetBiomeCommand.java index 1177c597..9070a783 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetBiomeCommand.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetBiomeCommand.java @@ -1,27 +1,24 @@ -package me.goodandevil.skyblock.command.commands.admin; +package com.songoda.skyblock.command.commands.admin; -import me.goodandevil.skyblock.biome.BiomeManager; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.SBiome; -import me.goodandevil.skyblock.utils.version.Sounds; +import com.songoda.skyblock.biome.BiomeManager; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.SBiome; +import com.songoda.skyblock.utils.version.Sounds; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import java.io.File; -import java.io.IOException; import java.util.UUID; public class SetBiomeCommand extends SubCommand { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetHologramCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetHologramCommand.java new file mode 100644 index 00000000..fe29fc36 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetHologramCommand.java @@ -0,0 +1,102 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.hologram.Hologram; +import com.songoda.skyblock.hologram.HologramManager; +import com.songoda.skyblock.hologram.HologramType; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.apache.commons.lang3.text.WordUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class SetHologramCommand extends SubCommand { + + @Override + public void onCommandByPlayer(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 (args.length == 1) { + HologramType hologramType = null; + + switch (args[0].toLowerCase()) { + case "level": + hologramType = HologramType.Level; + break; + case "bank": + hologramType = HologramType.Bank; + break; + case "votes": + hologramType = HologramType.Votes; + break; + } + + if (hologramType != null) { + fileManager.setLocation( + fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")), + "Location.Hologram.Leaderboard." + hologramType.name(), player.getLocation(), true); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> { + HologramType hologramType1 = HologramType + .valueOf(WordUtils.capitalize(args[0].toLowerCase())); + Hologram hologram = hologramManager.getHologram(hologramType1); + + if (hologram != null) { + hologramManager.removeHologram(hologram); + } + + hologramManager.spawnHologram(hologramType1); + }); + + 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); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "sethologram"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.SetHologram.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[]{"level", "bank", "votes"}; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetSizeCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetSizeCommand.java new file mode 100644 index 00000000..5b215ae7 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetSizeCommand.java @@ -0,0 +1,147 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +public class SetSizeCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + onCommand(player, args); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + onCommand(sender, args); + } + + public void onCommand(CommandSender sender, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 2) { + if (args[1].matches("[0-9]+")) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID islandOwnerUUID; + String targetPlayerName; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + islandOwnerUUID = targetPlayerOffline.getOwner(); + targetPlayerName = targetPlayerOffline.getName(); + } else { + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + targetPlayerName = targetPlayer.getName(); + } + + int size = Integer.valueOf(args[1]); + + if (islandOwnerUUID == null) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.SetSize.Island.Owner.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (size < 50) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.SetSize.Size.Greater.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (size > 1000) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.SetSize.Size.Less.Message")); + soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else { + if (islandManager.containsIsland(islandOwnerUUID)) { + Island island = islandManager + .getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); + island.setSize(size); + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.WorldBorder.Enable") + && island.isBorder()) { + islandManager.updateBorder(island); + } + } else { + File islandDataFile = new File(skyblock.getDataFolder().toString() + "/island-data", + islandOwnerUUID.toString() + ".yml"); + + if (!fileManager.isFileExist(islandDataFile)) { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.SetSize.Island.Data.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + FileConfiguration islandDataConfigLoad = YamlConfiguration + .loadConfiguration(islandDataFile); + islandDataConfigLoad.set("Size", size); + + try { + islandDataConfigLoad.save(islandDataFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.SetSize.Set.Message") + .replace("%player", targetPlayerName) + .replace("%size", NumberUtil.formatNumberByDecimal(size))); + soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.SetSize.Numerical.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(sender, + configLoad.getString("Command.Island.Admin.SetSize.Invalid.Message")); + soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public String getName() { + return "setsize"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.SetSize.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetSpawnCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetSpawnCommand.java new file mode 100644 index 00000000..1c82e7d6 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SetSpawnCommand.java @@ -0,0 +1,56 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class SetSpawnCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + 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(); + + fileManager.setLocation(fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")), + "Location.Spawn", player.getLocation(), true); + messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.SetSpawn.Set.Message")); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "setspawn"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.SetSpawn.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SettingsCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SettingsCommand.java new file mode 100644 index 00000000..57b7fffb --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/SettingsCommand.java @@ -0,0 +1,44 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.menus.admin.Settings; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +public class SettingsCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + SoundManager soundManager = skyblock.getSoundManager(); + + Settings.getInstance().open(player, Settings.Type.Categories, null); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "settings"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Settings.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"permissions", "perms", "p"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/StructureCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/StructureCommand.java new file mode 100644 index 00000000..f0ae346f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/StructureCommand.java @@ -0,0 +1,211 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.ChatComponent; +import com.songoda.skyblock.utils.structure.StructureUtil; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.logging.Level; + +public class StructureCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 0 || args[0].equalsIgnoreCase("help")) { + for (String helpLines : configLoad.getStringList("Command.Island.Help.Lines")) { + if (helpLines.contains("%type")) { + helpLines = helpLines.replace("%type", "Structure"); + } + + if (helpLines.contains("%commands")) { + String[] sections = helpLines.split("%commands"); + String prefix = "", suffix = ""; + + if (sections.length >= 1) { + prefix = ChatColor.translateAlternateColorCodes('&', sections[0]); + } + + if (sections.length == 2) { + suffix = ChatColor.translateAlternateColorCodes('&', sections[1]); + } + + player.spigot() + .sendMessage( + new ChatComponent( + prefix.replace("%info", + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Command.Island.Admin.Structure.Tool.Info.Message"))) + + "/island admin structure tool" + + suffix.replace("%info", ChatColor.translateAlternateColorCodes( + '&', + configLoad.getString( + "Command.Island.Admin.Structure.Tool.Info.Message"))), + false, null, null, + new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Command.Island.Admin.Structure.Tool.Info.Message"))) + .create())).getTextComponent()); + player.spigot() + .sendMessage( + new ChatComponent( + prefix.replace("%info", + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Command.Island.Admin.Structure.Save.Info.Message"))) + + "/island admin structure save" + + suffix.replace("%info", ChatColor.translateAlternateColorCodes( + '&', + configLoad.getString( + "Command.Island.Admin.Structure.Save.Info.Message"))), + false, null, null, + new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Command.Island.Admin.Structure.Save.Info.Message"))) + .create())).getTextComponent()); + } else { + messageManager.sendMessage(player, helpLines); + } + } + + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + } else { + if (args[0].equalsIgnoreCase("tool")) { + try { + ItemStack is = StructureUtil.getTool(); + + for (ItemStack itemList : player.getInventory().getContents()) { + if (itemList != null) { + if ((itemList.getType() == is.getType()) && (itemList.hasItemMeta()) && (itemList + .getItemMeta().getDisplayName().equals(is.getItemMeta().getDisplayName()))) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Admin.Structure.Tool.Inventory.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + } + + player.getInventory().addItem(is); + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Admin.Structure.Tool.Equiped.Message")); + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + } catch (Exception e) { + messageManager.sendMessage(player, + configLoad.getString("Island.Structure.Tool.Material.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getLogger().log(Level.WARNING, + "SkyBlock | Error: The defined material in the configuration file for the Structure selection tool could not be found."); + } + + return; + } else if (args[0].equalsIgnoreCase("save")) { + if (args.length == 2) { + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + Location position1Location = playerData.getArea().getPosition(1); + Location position2Location = playerData.getArea().getPosition(2); + + if (position1Location == null && position2Location == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Admin.Structure.Save.Position.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if ((position1Location == null && position2Location != null) + || (position1Location != null && position2Location == null)) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Admin.Structure.Save.Complete.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (!position1Location.getWorld().getName() + .equals(position2Location.getWorld().getName())) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Admin.Structure.Save.Selection.World.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (!player.getWorld().getName().equals(position1Location.getWorld().getName())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Admin.Structure.Save.Player.World.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (!LocationUtil.isInsideArea(player.getLocation(), position1Location, + position2Location)) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Admin.Structure.Save.Player.Area.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + try { + File configFile = new File( + skyblock.getDataFolder().toString() + "/structures/" + args[1] + ".structure"); + StructureUtil.saveStructure(configFile, player.getLocation(), + StructureUtil.getFixedLocations(position1Location, position2Location)); + + messageManager.sendMessage(player, + configLoad + .getString( + "Command.Island.Admin.Structure.Save.Saved.Successful.Message") + .replace("%name", args[1])); + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } catch (Exception e) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Admin.Structure.Save.Saved.Failed.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + e.printStackTrace(); + } + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Admin.Structure.Save.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + + return; + } + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Argument.Unrecognised.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "structure"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Structure.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[]{"tool", "save"}; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/UpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/UpgradeCommand.java new file mode 100644 index 00000000..d920abd5 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/admin/UpgradeCommand.java @@ -0,0 +1,66 @@ +package com.songoda.skyblock.command.commands.admin; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.menus.admin.Upgrade; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class UpgradeCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + 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 (skyblock.getUpgradeManager() == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.Upgrade.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + if (playerDataManager.hasPlayerData(player)) { + playerDataManager.getPlayerData(player) + .setViewer(new Upgrade.Viewer(Upgrade.Viewer.Type.Upgrades, null)); + Upgrade.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "upgrade"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Admin.Upgrade.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/AcceptCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/AcceptCommand.java new file mode 100644 index 00000000..3263a7fa --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/AcceptCommand.java @@ -0,0 +1,246 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.api.event.player.PlayerIslandJoinEvent; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.invite.Invite; +import com.songoda.skyblock.invite.InviteManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.scoreboard.Scoreboard; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class AcceptCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = playerDataManager.getPlayerData(player); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + InviteManager inviteManager = skyblock.getInviteManager(); + + if (inviteManager.hasInvite(player.getUniqueId())) { + Invite invite = inviteManager.getInvite(player.getUniqueId()); + String playerName = args[0]; + + if (invite.getSenderName().equalsIgnoreCase(playerName)) { + inviteManager.removeInvite(player.getUniqueId()); + + if (islandManager.getIsland(player) == null) { + boolean unloadIsland = false; + Island island; + + if (islandManager.containsIsland(invite.getOwnerUUID())) { + island = islandManager + .getIsland(Bukkit.getServer().getOfflinePlayer(invite.getOwnerUUID())); + } else { + island = islandManager + .loadIsland(Bukkit.getServer().getOfflinePlayer(invite.getOwnerUUID())); + unloadIsland = true; + } + + PlayerIslandJoinEvent islandJoinEvent = new PlayerIslandJoinEvent(player, + island.getAPIWrapper()); + Bukkit.getServer().getPluginManager().callEvent(islandJoinEvent); + + if (islandJoinEvent.isCancelled()) { + if (unloadIsland) { + islandManager.unloadIsland(island, null); + } + } else { + Player targetPlayer = Bukkit.getServer().getPlayer(invite.getSenderUUID()); + + if (targetPlayer != null) { + messageManager.sendMessage(targetPlayer, + configLoad.getString("Command.Island.Accept.Accepted.Target.Message") + .replace("%player", player.getName())); + soundManager.playSound(targetPlayer, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Accept.Accepted.Sender.Message") + .replace("%player", invite.getSenderName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + playerData.setPlaytime(0); + playerData.setOwner(invite.getOwnerUUID()); + playerData.setMemberSince(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date())); + playerData.save(); + + island.setRole(IslandRole.Member, player.getUniqueId()); + island.save(); + + if ((island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size() + + 1) >= fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Member.Capacity")) { + Map invites = inviteManager.getInvites(); + + for (UUID inviteList : invites.keySet()) { + Invite targetInvite = invites.get(inviteList); + + if (targetInvite.getOwnerUUID().equals(invite.getOwnerUUID())) { + inviteManager.removeInvite(inviteList); + + Player targetInvitePlayer = Bukkit.getServer().getPlayer(inviteList); + + if (targetInvitePlayer != null) { + targetInvitePlayer + .sendMessage(ChatColor.translateAlternateColorCodes('&', + configLoad.getString( + "Command.Island.Accept.Capacity.Broadcast.Message") + .replace("%player", targetInvite.getSenderName()))); + soundManager.playSound(targetInvitePlayer, + Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } + } + } + } + + skyblock.getVisitManager().getIsland(invite.getOwnerUUID()) + .removeVoter(player.getUniqueId()); + + for (Player all : Bukkit.getOnlinePlayers()) { + if (!all.getUniqueId().equals(player.getUniqueId())) { + if (playerDataManager.hasPlayerData(all)) { + playerData = playerDataManager.getPlayerData(all); + + if (playerData.getOwner() != null + && playerData.getOwner().equals(island.getOwnerUUID())) { + all.sendMessage(ChatColor.translateAlternateColorCodes('&', + configLoad + .getString( + "Command.Island.Accept.Accepted.Broadcast.Message") + .replace("%player", player.getName()))); + soundManager.playSound(all, Sounds.FIREWORK_BLAST.bukkitSound(), 1.0F, + 1.0F); + + if (scoreboardManager != null) { + if (island.getRole(IslandRole.Member).size() == 1 + && island.getRole(IslandRole.Operator).size() == 0) { + Scoreboard scoreboard = scoreboardManager.getScoreboard(all); + scoreboard.setDisplayName( + ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Scoreboard.Island.Team.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(configLoad.getStringList( + "Scoreboard.Island.Team.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(configLoad.getStringList( + "Scoreboard.Island.Team.Occupied.Displaylines")); + } + + Map displayVariables = new HashMap<>(); + displayVariables.put("%owner", + configLoad.getString("Scoreboard.Island.Team.Word.Owner")); + displayVariables.put("%operator", configLoad + .getString("Scoreboard.Island.Team.Word.Operator")); + displayVariables.put("%member", + configLoad.getString("Scoreboard.Island.Team.Word.Member")); + + scoreboard.setDisplayVariables(displayVariables); + scoreboard.run(); + } + } + } + } + } + } + + if (scoreboardManager != null) { + Scoreboard scoreboard = scoreboardManager.getScoreboard(player); + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Scoreboard.Island.Team.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList( + configLoad.getStringList("Scoreboard.Island.Team.Empty.Displaylines")); + } else { + scoreboard.setDisplayList( + configLoad.getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); + } + + Map displayVariables = new HashMap<>(); + displayVariables.put("%owner", + configLoad.getString("Scoreboard.Island.Team.Word.Owner")); + displayVariables.put("%operator", + configLoad.getString("Scoreboard.Island.Team.Word.Operator")); + displayVariables.put("%member", + configLoad.getString("Scoreboard.Island.Team.Word.Member")); + + scoreboard.setDisplayVariables(displayVariables); + scoreboard.run(); + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Invited.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Invite.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "accept"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Accept.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BanCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BanCommand.java new file mode 100644 index 00000000..e2f3007b --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BanCommand.java @@ -0,0 +1,146 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.ban.Ban; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class BanCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Visitor.Banning")) { + if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Ban").getStatus())) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + if (targetPlayer != null && targetPlayer.hasPermission("fabledskyblock.bypass.ban")) + return; + + UUID targetPlayerUUID = null; + String targetPlayerName = null; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + targetPlayerUUID = targetPlayerOffline.getUniqueId(); + targetPlayerName = targetPlayerOffline.getName(); + + if (skyblock.getEconomyManager().hasPermission(skyblock.getWorldManager().getWorld(IslandWorld.Normal).getName(), Bukkit.getOfflinePlayer(targetPlayerUUID), "fabledskyblock.bypass.ban")) + return; + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + targetPlayerName = targetPlayer.getName(); + } + + if (targetPlayerUUID == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Found.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (targetPlayerUUID.equals(player.getUniqueId())) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Member, targetPlayerUUID) + || island.hasRole(IslandRole.Operator, targetPlayerUUID) + || island.hasRole(IslandRole.Owner, targetPlayerUUID)) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.getBan().isBanned(targetPlayerUUID)) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Already.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ban.Banned.Sender.Message").replace("%player", + targetPlayerName)); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + if (island.isCoopPlayer(targetPlayerUUID)) { + island.removeCoopPlayer(targetPlayerUUID); + } + + Ban ban = island.getBan(); + ban.addBan(player.getUniqueId(), targetPlayerUUID); + ban.save(); + + if (targetPlayer != null) { + if (islandManager.isPlayerAtIsland(island, targetPlayer)) { + messageManager.sendMessage(targetPlayer, + configLoad.getString("Command.Island.Ban.Banned.Target.Message") + .replace("%player", player.getName())); + soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + LocationUtil.teleportPlayerToSpawn(targetPlayer); + } + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + }); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "ban"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Ban.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BankCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BankCommand.java similarity index 92% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BankCommand.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BankCommand.java index 947d7062..1ef57c86 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BankCommand.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BankCommand.java @@ -1,16 +1,16 @@ -package me.goodandevil.skyblock.command.commands.island; +package com.songoda.skyblock.command.commands.island; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.economy.EconomyManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.version.Sounds; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.economy.EconomyManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.Sounds; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BansCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BansCommand.java new file mode 100644 index 00000000..aecc2838 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BansCommand.java @@ -0,0 +1,72 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Bans; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class BansCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = skyblock.getIslandManager().getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Bans.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Unban").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (island.getBan().getBans().size() == 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Bans.Bans.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Bans.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Bans.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "bans"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Bans.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"banned"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BiomeCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BiomeCommand.java new file mode 100644 index 00000000..67f57763 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BiomeCommand.java @@ -0,0 +1,69 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Biome; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class BiomeCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Biome.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Biome").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + Biome.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Biome.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "biome"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Biome.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BorderCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BorderCommand.java new file mode 100644 index 00000000..fd08a8d1 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/BorderCommand.java @@ -0,0 +1,77 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Border; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class BorderCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Border").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.WorldBorder.Enable")) { + Border.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "border"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Border.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"worldborder", "wb"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CancelCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CancelCommand.java new file mode 100644 index 00000000..a3564bca --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CancelCommand.java @@ -0,0 +1,104 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.invite.Invite; +import com.songoda.skyblock.invite.InviteManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class CancelCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + InviteManager inviteManager = skyblock.getInviteManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Owner.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || island.hasRole(IslandRole.Operator, player.getUniqueId())) { + String playerName = args[0]; + Player targetPlayer = Bukkit.getServer().getPlayer(playerName); + + if (targetPlayer == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Offline.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId()) + || island.hasRole(IslandRole.Operator, targetPlayer.getUniqueId()) + || island.hasRole(IslandRole.Owner, targetPlayer.getUniqueId())) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (inviteManager.hasInvite(targetPlayer.getUniqueId())) { + Invite invite = inviteManager.getInvite(targetPlayer.getUniqueId()); + + if (invite.getOwnerUUID().equals(island.getOwnerUUID())) { + inviteManager.removeInvite(targetPlayer.getUniqueId()); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Cancel.Cancelled.Message").replace("%player", + targetPlayer.getName())); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Cancel.Invited.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Invited.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "cancel"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Cancel.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ChatCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ChatCommand.java new file mode 100644 index 00000000..463fcb9b --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ChatCommand.java @@ -0,0 +1,89 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.api.event.player.PlayerIslandChatSwitchEvent; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class ChatCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + PlayerData playerData = playerDataManager.getPlayerData(player); + if (playerData.isChat() && island != null) { + Bukkit.getServer().getPluginManager() + .callEvent(new PlayerIslandChatSwitchEvent(player, island.getAPIWrapper(), false)); + playerData.setChat(false); + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Untoggled.Message")); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + return; + } + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if ((island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size()) == 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Team.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if ((islandManager.getMembersOnline(island).size() - 1) <= 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Offline.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Bukkit.getServer().getPluginManager() + .callEvent(new PlayerIslandChatSwitchEvent(player, island.getAPIWrapper(), true)); + playerData.setChat(true); + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Toggled.Message")); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "chat"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Chat.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CloseCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CloseCommand.java new file mode 100644 index 00000000..d1d1e5ea --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CloseCommand.java @@ -0,0 +1,75 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class CloseCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Visitor").getStatus())) { + if (island.isOpen()) { + islandManager.closeIsland(island); + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Closed.Message")); + soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Already.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "close"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Close.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"lock"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ConfirmCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ConfirmCommand.java new file mode 100644 index 00000000..a7dd627a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ConfirmCommand.java @@ -0,0 +1,219 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.confirmation.Confirmation; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.economy.EconomyManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.structure.Structure; +import com.songoda.skyblock.structure.StructureManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class ConfirmCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + StructureManager structureManager = skyblock.getStructureManager(); + MessageManager messageManager = skyblock.getMessageManager(); + EconomyManager economyManager = skyblock.getEconomyManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (playerData.getConfirmationTime() > 0) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Confirmation.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Confirmation confirmation = playerData.getConfirmation(); + + if (confirmation == Confirmation.Ownership || confirmation == Confirmation.Reset + || confirmation == Confirmation.Deletion) { + if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (confirmation == Confirmation.Ownership) { + UUID targetPlayerUUID = playerData.getOwnership(); + + if (island.hasRole(IslandRole.Member, targetPlayerUUID) + || island.hasRole(IslandRole.Operator, targetPlayerUUID)) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Confirmation.Confirmed.Message")); + + String targetPlayerName; + Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID); + + if (targetPlayer == null) { + targetPlayerName = new OfflinePlayer(targetPlayerUUID).getName(); + } else { + targetPlayerName = targetPlayer.getName(); + messageManager.sendMessage(targetPlayer, configLoad + .getString("Command.Island.Confirmation.Ownership.Assigned.Message")); + soundManager.playSound(targetPlayer, Sounds.ANVIL_USE.bukkitSound(), 1.0F, + 1.0F); + } + + for (Player all : Bukkit.getOnlinePlayers()) { + if ((island.hasRole(IslandRole.Member, all.getUniqueId()) + || island.hasRole(IslandRole.Operator, all.getUniqueId()) + || island.hasRole(IslandRole.Owner, all.getUniqueId()) + || island.hasRole(IslandRole.Owner, all.getUniqueId())) + && (!all.getUniqueId().equals(targetPlayerUUID))) { + all.sendMessage(ChatColor.translateAlternateColorCodes('&', + configLoad.getString( + "Command.Island.Ownership.Assigned.Broadcast.Message") + .replace("%player", targetPlayerName))); + soundManager.playSound(all, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + } + } + + playerData.setConfirmation(null); + playerData.setConfirmationTime(0); + + islandManager.giveOwnership(island, + Bukkit.getServer().getOfflinePlayer(targetPlayerUUID)); + + skyblock.getCooldownManager().createPlayer(CooldownType.Ownership, + Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); + } else { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Confirmation.Ownership.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else if (confirmation == Confirmation.Reset) { + playerData.setConfirmation(null); + playerData.setConfirmationTime(0); + } else if (confirmation == Confirmation.Deletion) { + if (island.isOpen()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Confirmation.Deletion.Open.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Location spawnLocation = LocationUtil.getSpawnLocation(); + + if (spawnLocation != null + && islandManager.isLocationAtIsland(island, spawnLocation)) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Confirmation.Deletion.Spawn.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (economyManager.isEconomy() && island.getStructure() != null + && !island.getStructure().isEmpty() + && structureManager.containsStructure(island.getStructure())) { + Structure structure = structureManager.getStructure(island.getStructure()); + double deletionCost = structure.getDeletionCost(); + + if (deletionCost != 0.0D) { + if (economyManager.hasBalance(player, deletionCost)) { + economyManager.withdraw(player, deletionCost); + } else { + messageManager.sendMessage(player, + configLoad.getString( + "Command.Island.Confirmation.Deletion.Money.Message") + .replace("%cost", "" + deletionCost)); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + return; + } + } + } + + playerData.setConfirmation(null); + playerData.setConfirmationTime(0); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Confirmation.Confirmed.Message")); + + for (Player all : Bukkit.getOnlinePlayers()) { + if (island.hasRole(IslandRole.Member, all.getUniqueId()) + || island.hasRole(IslandRole.Operator, all.getUniqueId())) { + all.sendMessage( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Command.Island.Confirmation.Deletion.Broadcast.Message"))); + soundManager.playSound(all, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); + } + } + + island.setDeleted(true); + islandManager.deleteIsland(island); + + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Confirmation.Deletion.Sender.Message")); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); + } + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Confirmation.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Confirmation.Specified.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Confirmation.Pending.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "confirm"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Confirmation.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"confirmation"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ControlPanelCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ControlPanelCommand.java new file mode 100644 index 00000000..3b9405bb --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ControlPanelCommand.java @@ -0,0 +1,57 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.menus.ControlPanel; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class ControlPanelCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (skyblock.getIslandManager().getIsland(player) == null) { + skyblock.getMessageManager().sendMessage(player, + configLoad.getString("Command.Island.ControlPanel.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + ControlPanel.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "controlpanel"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.ControlPanel.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"cp"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CoopCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CoopCommand.java new file mode 100644 index 00000000..6053f847 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CoopCommand.java @@ -0,0 +1,158 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Coop; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class CoopCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Coop.Enable")) { + if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "CoopPlayers").getStatus())) { + if (args.length == 1) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + UUID targetPlayerUUID = null; + String targetPlayerName = null; + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(args[0]); + targetPlayerUUID = offlinePlayer.getUniqueId(); + targetPlayerName = offlinePlayer.getName(); + + if (targetPlayerUUID != null && !Bukkit.getOfflinePlayer(targetPlayerUUID).hasPlayedBefore()) { + targetPlayerUUID = null; + targetPlayerName = null; + } + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + targetPlayerName = targetPlayer.getName(); + } + + if (targetPlayerUUID == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Found.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (targetPlayerUUID.equals(player.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Coop.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Member, targetPlayerUUID) + || island.hasRole(IslandRole.Operator, targetPlayerUUID) + || island.hasRole(IslandRole.Owner, targetPlayerUUID)) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.getBan().isBanned(targetPlayerUUID)) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Banned.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.isCoopPlayer(targetPlayerUUID)) { + if (targetPlayer != null) { + if (islandManager.getVisitorsAtIsland(island).contains(targetPlayerUUID)) { + if (!island.isOpen()) { + LocationUtil.teleportPlayerToSpawn(targetPlayer); + + messageManager.sendMessage(targetPlayer, + configLoad.getString("Command.Island.Coop.Removed.Target.Message")); + soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, + 1.0F); + } + } + } + + island.removeCoopPlayer(targetPlayerUUID); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Coop.Removed.Sender.Message").replace("%player", + targetPlayerName)); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } else { + island.addCoopPlayer(targetPlayerUUID); + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Added.Message") + .replace("%player", targetPlayerName)); + + if (targetPlayer != null) { + messageManager.sendMessage(targetPlayer, configLoad.getString("Command.Island.Coop.AddedTarget.Message") + .replace("%player", player.getName())); + } + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + + return; + } else if (args.length != 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + Coop.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "coop"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Coop.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CreateCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CreateCommand.java new file mode 100644 index 00000000..aa0ad421 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CreateCommand.java @@ -0,0 +1,129 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.cooldown.Cooldown; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownPlayer; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.menus.Creator; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.structure.Structure; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.List; + +public class CreateCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + CooldownManager cooldownManager = skyblock.getCooldownManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (islandManager.getIsland(player) == null) { + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + + if (mainConfig.getFileConfiguration().getBoolean("Island.Creation.Menu.Enable")) { + Creator.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else { + List structures = skyblock.getStructureManager().getStructures(); + + if (structures.size() == 0) { + messageManager.sendMessage(player, configLoad.getString("Island.Creator.Selector.None.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!fileManager + .isFileExist(new File(new File(skyblock.getDataFolder().toString() + "/structures"), + structures.get(0).getOverworldFile()))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Creator.Selector.File.Overworld.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!fileManager + .isFileExist(new File(new File(skyblock.getDataFolder().toString() + "/structures"), + structures.get(0).getNetherFile()))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Creator.Selector.File.Nether.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Creation.Cooldown.Creation.Enable") + && cooldownManager.hasPlayer(CooldownType.Creation, player)) { + CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Creation, player); + Cooldown cooldown = cooldownPlayer.getCooldown(); + + if (cooldown.getTime() < 60) { + messageManager.sendMessage(player, + config.getFileConfiguration().getString("Island.Creator.Selector.Cooldown.Message") + .replace("%time", cooldown.getTime() + " " + config.getFileConfiguration() + .getString("Island.Creator.Selector.Cooldown.Word.Second"))); + } else { + long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); + messageManager.sendMessage(player, + config.getFileConfiguration().getString("Island.Creator.Selector.Cooldown.Message") + .replace("%time", durationTime[2] + " " + + config.getFileConfiguration() + .getString("Island.Creator.Selector.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + config.getFileConfiguration() + .getString("Island.Creator.Selector.Cooldown.Word.Second"))); + } + + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (islandManager.createIsland(player, structures.get(0))) { + messageManager.sendMessage(player, configLoad.getString("Island.Creator.Selector.Created.Message")); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Create.Owner.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "create"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Create.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"new"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CurrentCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CurrentCommand.java new file mode 100644 index 00000000..1722709b --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/CurrentCommand.java @@ -0,0 +1,125 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class CurrentCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length > 0) { + if (!args[0].equalsIgnoreCase(player.getName())) { + if (args.length == 1) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + if (targetPlayer == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Current.Offline.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (!targetPlayer.getName().equals(player.getName())) { + PlayerData playerData = playerDataManager.getPlayerData(targetPlayer); + + if (playerData.getIsland() == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Current.Island.None.Other.Message")); + } else { + String targetPlayerName = targetPlayer.getName(), ownerPlayerName; + targetPlayer = Bukkit.getServer().getPlayer(playerData.getIsland()); + + if (targetPlayer == null) { + ownerPlayerName = new OfflinePlayer(playerData.getIsland()).getName(); + } else { + ownerPlayerName = targetPlayer.getName(); + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Current.Island.Owner.Other.Message") + .replace("%target", targetPlayerName) + .replace("%owner", ownerPlayerName)); + } + + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (args.length > 1) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Current.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + } + + PlayerData playerData = playerDataManager.getPlayerData(player); + + if (playerData.getIsland() == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Current.Island.None.Yourself.Message")); + } else { + Player targetPlayer = Bukkit.getServer().getPlayer(playerData.getIsland()); + String targetPlayerName; + + if (targetPlayer == null) { + targetPlayerName = new OfflinePlayer(playerData.getIsland()).getName(); + } else { + targetPlayerName = targetPlayer.getName(); + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Current.Island.Owner.Yourself.Message").replace("%player", + targetPlayerName)); + } + + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "current"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Current.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"cur"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DeleteCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DeleteCommand.java new file mode 100644 index 00000000..c262a2e2 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DeleteCommand.java @@ -0,0 +1,153 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.confirmation.Confirmation; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.ChatComponent; +import com.songoda.skyblock.utils.version.Sounds; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.chat.ComponentSerializer; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class DeleteCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Delete.Owner.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (playerData.getConfirmationTime() > 0) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Delete.Confirmation.Pending.Message")); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } else { + int confirmationTime = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Confirmation.Timeout"); + + playerData.setConfirmation(Confirmation.Deletion); + playerData.setConfirmationTime(confirmationTime); + + String confirmationMessage = configLoad.getString("Command.Island.Delete.Confirmation.Confirm.Message") + .replace("%time", "" + confirmationTime); + + if (confirmationMessage.contains("%confirm")) { + String[] confirmationMessages = confirmationMessage.split("%confirm"); + + if (confirmationMessages.length == 0) { + player.spigot().sendMessage(new ChatComponent( + configLoad.getString("Command.Island.Delete.Confirmation.Confirm.Word.Confirm") + .toUpperCase(), + true, ChatColor.RED, new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', + configLoad.getString( + "Command.Island.Delete.Confirmation.Confirm.Word.Tutorial"))) + .create())).getTextComponent()); + } else { + ChatComponent chatComponent = new ChatComponent("", false, null, null, null); + + for (int i = 0; i < confirmationMessages.length; i++) { + String message = confirmationMessages[i]; + + if (message.contains("\n") || message.contains("\\n")) { + message = message.replace("\\n", "\n"); + + for (String messageList : message.split("\n")) { + chatComponent + .addExtraChatComponent( + new ChatComponent( + messageManager.replaceMessage(player, + messageList.replace("%time", + "" + confirmationTime)), + false, null, null, null)); + + chatComponent + .addExtra(new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); + } + } else { + chatComponent.addExtraChatComponent(new ChatComponent( + messageManager.replaceMessage(player, + message.replace("%time", "" + confirmationTime)), + false, null, null, null)); + } + + if (confirmationMessages.length == 1 || i + 1 != confirmationMessages.length) { + chatComponent.addExtraChatComponent(new ChatComponent( + configLoad.getString("Command.Island.Delete.Confirmation.Confirm.Word.Confirm") + .toUpperCase(), + true, ChatColor.RED, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Command.Island.Delete.Confirmation.Confirm.Word.Tutorial"))) + .create()))); + } + } + + player.spigot().sendMessage(chatComponent.getTextComponent()); + } + } else { + messageManager.sendMessage(player, confirmationMessage.replace("%time", "" + confirmationTime)); + } + + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Delete.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "delete"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Delete.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"remove", "disband", "reset", "restart"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DemoteCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DemoteCommand.java new file mode 100644 index 00000000..e1e2e6bf --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DemoteCommand.java @@ -0,0 +1,127 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.Set; +import java.util.UUID; + +public class DemoteCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Demote.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(args[0]); + Set islandMembers = island.getRole(IslandRole.Member); + + if (offlinePlayer.getUniqueId() != null && (islandMembers.contains(offlinePlayer.getUniqueId()) + || island.getRole(IslandRole.Operator).contains(offlinePlayer.getUniqueId()))) { + if (islandMembers.contains(offlinePlayer.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Demote.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Demote.Demoted.Sender.Message") + .replace("%player", offlinePlayer.getName())); + + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + island.removeRole(IslandRole.Operator, offlinePlayer.getUniqueId()); + island.setRole(IslandRole.Member, offlinePlayer.getUniqueId()); + island.save(); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Demote.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId()) + || island.hasRole(IslandRole.Operator, targetPlayer.getUniqueId())) { + if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Demote.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Demote.Demoted.Sender.Message") + .replace("%player", targetPlayer.getName())); + messageManager.sendMessage(targetPlayer, + configLoad.getString("Command.Island.Demote.Demoted.Target.Message")); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + island.removeRole(IslandRole.Operator, targetPlayer.getUniqueId()); + island.setRole(IslandRole.Member, targetPlayer.getUniqueId()); + island.save(); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Promote.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Demote.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Demote.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "demote"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Demote.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DenyCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DenyCommand.java new file mode 100644 index 00000000..2fa3c3fc --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/DenyCommand.java @@ -0,0 +1,86 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.invite.Invite; +import com.songoda.skyblock.invite.InviteManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class DenyCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + InviteManager inviteManager = skyblock.getInviteManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + if (inviteManager.hasInvite(player.getUniqueId())) { + Invite invite = inviteManager.getInvite(player.getUniqueId()); + String playerName = args[0]; + + if (invite.getSenderName().equalsIgnoreCase(playerName)) { + Player targetPlayer = Bukkit.getServer().getPlayer(invite.getSenderUUID()); + + if (targetPlayer != null) { + messageManager.sendMessage(targetPlayer, + configLoad.getString("Command.Island.Deny.Denied.Target.Message").replace("%player", + player.getName())); + soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); + } + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Denied.Sender.Message") + .replace("%player", invite.getSenderName())); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); + + inviteManager.removeInvite(player.getUniqueId()); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Invited.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Invited.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "deny"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Deny.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/InformationCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/InformationCommand.java new file mode 100644 index 00000000..23bf285a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/InformationCommand.java @@ -0,0 +1,104 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.menus.Information; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class InformationCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + if (playerDataManager.hasPlayerData(player)) { + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + UUID islandOwnerUUID = null; + + if (args.length == 1) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + if (targetPlayer == null) { + OfflinePlayer targetOfflinePlayer = new OfflinePlayer(args[0]); + islandOwnerUUID = targetOfflinePlayer.getOwner(); + } else { + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + } + + if (islandOwnerUUID == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Information.Island.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (args.length != 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Information.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + if (islandOwnerUUID == null) { + if (islandManager.getIsland(player) == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Information.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else { + islandOwnerUUID = playerData.getOwner(); + } + } + + playerData.setViewer(new Information.Viewer(islandOwnerUUID, Information.Viewer.Type.Categories)); + Information.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "information"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Information.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"info"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/InviteCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/InviteCommand.java new file mode 100644 index 00000000..62d36ea7 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/InviteCommand.java @@ -0,0 +1,262 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.api.event.island.IslandInviteEvent; +import com.songoda.skyblock.api.invite.IslandInvitation; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.invite.Invite; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.ChatComponent; +import com.songoda.skyblock.utils.version.Sounds; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.chat.ComponentSerializer; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class InviteCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Owner.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Invite").getStatus())) { + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + + if ((island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size() + + 1) >= mainConfig.getFileConfiguration().getInt("Island.Member.Capacity")) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Capacity.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + String playerName = args[0]; + + if (playerName.equalsIgnoreCase(player.getName())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Invite.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Player targetPlayer = Bukkit.getServer().getPlayer(playerName); + + if (targetPlayer == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Invite.Offline.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (targetPlayer.getName().equalsIgnoreCase(player.getName())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Invite.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId()) + || island.hasRole(IslandRole.Operator, targetPlayer.getUniqueId()) + || island.hasRole(IslandRole.Owner, targetPlayer.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Invite.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (skyblock.getInviteManager().hasInvite(targetPlayer.getUniqueId())) { + Invite invite = skyblock.getInviteManager().getInvite(targetPlayer.getUniqueId()); + + if (invite.getOwnerUUID().equals(island.getOwnerUUID())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Invite.Already.Own.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Invite.Already.Other.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + int respondTime = mainConfig.getFileConfiguration().getInt("Island.Invite.Time"); + + String cancellationMessage = configLoad + .getString("Command.Island.Invite.Invited.Sender.Sent.Message"); + String timeMessage; + + if (respondTime < 60) { + timeMessage = respondTime + " " + + configLoad.getString("Command.Island.Invite.Invited.Word.Second"); + } else { + timeMessage = respondTime / 60 + " " + + configLoad.getString("Command.Island.Invite.Invited.Word.Minute"); + } + + // TODO: Use this same logic wherever a clickable placeholder has to be replaced at + String placeholderName = "%cancel"; + if (cancellationMessage.contains(placeholderName)) { + if (cancellationMessage.equals(placeholderName)) { + player.spigot().sendMessage(new ChatComponent(configLoad + .getString("Command.Island.Invite.Invited.Word.Cancel").toUpperCase(), true, + ChatColor.RED, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/island cancel " + targetPlayer.getName()), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( + ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Command.Island.Invite.Invited.Word.Tutorial") + .replace("%action", configLoad.getString( + "Command.Island.Invite.Invited.Word.Cancel")))) + .create())).getTextComponent()); + } else { + ChatComponent chatComponent = new ChatComponent("", false, null, null, null); + + String[] messagePieces = cancellationMessage.replace("\\n", "\n").split("\n"); + for (int i = 0; i < messagePieces.length; i++) { + String piece = messagePieces[i].replace("%player", targetPlayer.getName()).replace("%time", timeMessage); + + if (piece.contains(placeholderName)) { + String before = piece.substring(0, piece.indexOf(placeholderName)); + String after = piece.substring(piece.indexOf(placeholderName) + placeholderName.length()); + + chatComponent.addExtraChatComponent(new ChatComponent(before, false, null, null, null)); + + chatComponent.addExtraChatComponent(new ChatComponent( + configLoad.getString("Command.Island.Invite.Invited.Word.Cancel").toUpperCase(), + true, ChatColor.RED, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/island cancel " + targetPlayer.getName()), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( + ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Command.Island.Invite.Invited.Word.Tutorial") + .replace("%action", configLoad.getString( + "Command.Island.Invite.Invited.Word.Cancel")))) + .create()))); + + chatComponent.addExtraChatComponent(new ChatComponent(after, false, null, null, null)); + } else { + chatComponent.addExtraChatComponent(new ChatComponent(piece, false, null, null, null)); + } + + if (i != messagePieces.length - 1) + chatComponent.addExtra(new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); + } + + player.spigot().sendMessage(chatComponent.getTextComponent()); + } + } else { + messageManager.sendMessage(player, cancellationMessage + .replace("%player", targetPlayer.getName()).replace("%time", timeMessage)); + } + + String invitationMessage = configLoad + .getString("Command.Island.Invite.Invited.Target.Received.Message"); + ChatComponent chatComponent = new ChatComponent("", false, null, null, null); + + if (invitationMessage.contains("\n") || invitationMessage.contains("\\n")) { + invitationMessage = invitationMessage.replace("\\n", "\n"); + + for (String messageList : invitationMessage.split("\n")) { + chatComponent + .addExtra(new ChatComponent( + messageManager.replaceMessage(player, + messageList.replace("%player", player.getName()) + .replace("%time", timeMessage)), + false, null, null, null)); + + chatComponent + .addExtra(new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); + } + } else { + chatComponent + .addExtra(new ChatComponent( + messageManager.replaceMessage(player, + invitationMessage.replace("%player", player.getName()) + .replace("%time", timeMessage)), + false, null, null, null)); + } + + chatComponent.addExtra(new ChatComponent( + configLoad.getString("Command.Island.Invite.Invited.Word.Accept").toUpperCase(), + true, ChatColor.GREEN, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island accept " + player.getName()), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Command.Island.Invite.Invited.Word.Tutorial") + .replace("%action", configLoad.getString( + "Command.Island.Invite.Invited.Word.Accept")))) + .create()))); + + chatComponent.addExtra(new ChatComponent(" | ", false, ChatColor.DARK_GRAY, null, null)); + + chatComponent.addExtra(new ChatComponent( + configLoad.getString("Command.Island.Invite.Invited.Word.Deny").toUpperCase(), true, + ChatColor.RED, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island deny " + player.getName()), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Command.Island.Invite.Invited.Word.Tutorial") + .replace("%action", configLoad.getString( + "Command.Island.Invite.Invited.Word.Deny")))) + .create()))); + + targetPlayer.spigot().sendMessage(chatComponent.getTextComponent()); + + Invite invite = skyblock.getInviteManager().createInvite(targetPlayer, player, + island.getOwnerUUID(), respondTime); + + Bukkit.getServer().getPluginManager() + .callEvent(new IslandInviteEvent(island.getAPIWrapper(), + new IslandInvitation(targetPlayer, player, invite.getTime()))); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + soundManager.playSound(targetPlayer, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "invite"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Invite.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/KickAllCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/KickAllCommand.java new file mode 100644 index 00000000..cdff75a6 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/KickAllCommand.java @@ -0,0 +1,109 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.api.event.island.IslandKickEvent; +import com.songoda.skyblock.api.utils.APIUtil; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.Set; +import java.util.UUID; + +public class KickAllCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Kick").getStatus())) { + if (island.isOpen()) { + Set islandVisitors = islandManager.getVisitorsAtIsland(island); + + if (islandVisitors.size() == 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Visitors.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + for (UUID islandVisitorList : islandVisitors) { + Player targetPlayer = Bukkit.getServer().getPlayer(islandVisitorList); + + if (targetPlayer != null && targetPlayer.hasPermission("fabledskyblock.bypass.ban")) + continue; + + IslandKickEvent islandKickEvent = new IslandKickEvent(island.getAPIWrapper(), + APIUtil.fromImplementation(IslandRole.Visitor), + Bukkit.getServer().getOfflinePlayer(islandVisitorList), player); + Bukkit.getServer().getPluginManager().callEvent(islandKickEvent); + + if (!islandKickEvent.isCancelled()) { + LocationUtil.teleportPlayerToSpawn(targetPlayer); + + messageManager.sendMessage(targetPlayer, + configLoad.getString("Command.Island.KickAll.Kicked.Target.Message") + .replace("%player", player.getName())); + soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.KickAll.Kicked.Sender.Message").replace("%visitors", + "" + islandVisitors.size())); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Closed.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Role.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "expel"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.KickAll.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/KickCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/KickCommand.java new file mode 100644 index 00000000..dd70fd9f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/KickCommand.java @@ -0,0 +1,285 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.api.event.island.IslandKickEvent; +import com.songoda.skyblock.api.utils.APIUtil; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.scoreboard.Scoreboard; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.Set; +import java.util.UUID; + +public class KickCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = playerDataManager.getPlayerData(player); + + Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + + if (args.length == 1) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Kick.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Kick").getStatus())) { + UUID targetPlayerUUID = null; + String targetPlayerName = null; + + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + if (targetPlayer != null && targetPlayer.hasPermission("fabledskyblock.bypass.ban")) + return; + + Set islandMembers = island.getRole(IslandRole.Member), + islandOperators = island.getRole(IslandRole.Operator), + islandVisitors = islandManager.getVisitorsAtIsland(island); + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + targetPlayerUUID = targetPlayerOffline.getUniqueId(); + targetPlayerName = targetPlayerOffline.getName(); + + if (skyblock.getEconomyManager().hasPermission(skyblock.getWorldManager().getWorld(IslandWorld.Normal).getName(), Bukkit.getOfflinePlayer(targetPlayerUUID), "fabledskyblock.bypass.ban")) + return; + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + targetPlayerName = targetPlayer.getName(); + } + + if (targetPlayerUUID.equals(player.getUniqueId())) { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Kick.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (islandOperators.contains(player.getUniqueId()) + && islandOperators.contains(targetPlayerUUID)) { + messageManager.sendMessage(player, languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Role.Operator.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.getOwnerUUID().equals(targetPlayerUUID)) { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Kick.Role.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.isOpen() && islandVisitors.contains(targetPlayerUUID) && targetPlayer != null) { + if (island.isCoopPlayer(targetPlayerUUID)) { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Kick.Cooped.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + IslandKickEvent islandKickEvent = new IslandKickEvent(island.getAPIWrapper(), + APIUtil.fromImplementation(IslandRole.Visitor), + Bukkit.getServer().getOfflinePlayer(targetPlayerUUID), player); + + Bukkit.getScheduler().runTask(skyblock, () -> Bukkit.getServer().getPluginManager().callEvent(islandKickEvent)); + + if (!islandKickEvent.isCancelled()) { + LocationUtil.teleportPlayerToSpawn(targetPlayer); + + messageManager.sendMessage(player, + languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Kicked.Sender.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + messageManager.sendMessage(targetPlayer, + languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Kicked.Target.Message") + .replace("%player", player.getName())); + soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } + } + } else if (islandMembers.contains(targetPlayerUUID) || islandOperators.contains(targetPlayerUUID)) { + IslandRole islandRole = IslandRole.Member; + + if (islandOperators.contains(targetPlayerUUID)) { + islandRole = IslandRole.Operator; + } + + IslandKickEvent islandKickEvent = new IslandKickEvent(island.getAPIWrapper(), + APIUtil.fromImplementation(islandRole), + Bukkit.getServer().getOfflinePlayer(targetPlayerUUID), player); + + Bukkit.getScheduler().runTask(skyblock, () -> Bukkit.getServer().getPluginManager().callEvent(islandKickEvent)); + + if (!islandKickEvent.isCancelled()) { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Kicked.Sender.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + if (targetPlayer == null) { + Config config = fileManager + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + targetPlayerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + configLoad.set("Statistics.Island.Playtime", null); + configLoad.set("Statistics.Island.Join", null); + configLoad.set("Island.Owner", null); + + try { + configLoad.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + messageManager.sendMessage(targetPlayer, + languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Kicked.Target.Message") + .replace("%player", player.getName())); + soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + if (islandManager.isPlayerAtIsland(island, targetPlayer)) { + LocationUtil.teleportPlayerToSpawn(targetPlayer); + } + + if (scoreboardManager != null) { + Scoreboard scoreboard = scoreboardManager.getScoreboard(targetPlayer); + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', languageConfig + .getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); + scoreboard.setDisplayList(languageConfig.getFileConfiguration() + .getStringList("Scoreboard.Tutorial.Displaylines")); + scoreboard.run(); + } + + playerData = playerDataManager.getPlayerData(targetPlayer); + playerData.setPlaytime(0); + playerData.setMemberSince(null); + playerData.setOwner(null); + playerData.setChat(false); + playerData.save(); + } + + if (islandMembers.contains(targetPlayerUUID)) { + island.removeRole(IslandRole.Member, targetPlayerUUID); + } else if (islandOperators.contains(targetPlayerUUID)) { + island.removeRole(IslandRole.Operator, targetPlayerUUID); + } + + island.save(); + + Set islandMembersOnline = islandManager.getMembersOnline(island); + + if (islandMembersOnline.size() == 1) { + for (UUID islandMembersOnlineList : islandMembersOnline) { + if (!islandMembersOnlineList.equals(player.getUniqueId())) { + targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); + PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); + + if (targetPlayerData.isChat()) { + targetPlayerData.setChat(false); + messageManager.sendMessage(targetPlayer, fileManager + .getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Chat.Untoggled.Message")); + } + } + } + } + + if (scoreboardManager != null) { + if (island.getRole(IslandRole.Member).size() == 0 + && island.getRole(IslandRole.Operator).size() == 0) { + Scoreboard scoreboard = scoreboardManager.getScoreboard(player); + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', languageConfig + .getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(languageConfig.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(languageConfig.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); + } + + scoreboard.run(); + } + } + } + } else { + if (island.isOpen()) { + messageManager.sendMessage(player, languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Occupant.Visit.Open.Message")); + } else { + messageManager.sendMessage(player, languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Occupant.Visit.Closed.Message")); + } + + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + if (island.isOpen()) { + messageManager.sendMessage(player, languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Permission.Visit.Open.Message")); + } else { + messageManager.sendMessage(player, languageConfig.getFileConfiguration() + .getString("Command.Island.Kick.Permission.Visit.Closed.Message")); + } + + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Kick.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + }); + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "kick"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Kick.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LeaderboardCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LeaderboardCommand.java new file mode 100644 index 00000000..922e2216 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LeaderboardCommand.java @@ -0,0 +1,98 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.menus.Leaderboard; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class LeaderboardCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + 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 (playerDataManager.hasPlayerData(player)) { + if (args.length == 0) { + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Visitor.Vote")) { + playerDataManager.getPlayerData(player) + .setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Browse)); + } else { + playerDataManager.getPlayerData(player) + .setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Level)); + } + } else if (args.length == 1) { + String type = args[0].toLowerCase(); + switch (type) { + case "level": + playerDataManager.getPlayerData(player).setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Level)); + break; + case "bank": + playerDataManager.getPlayerData(player).setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Bank)); + break; + case "votes": + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Vote")) { + playerDataManager.getPlayerData(player).setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Votes)); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Leaderboard.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return; + } + break; + default: + messageManager.sendMessage(player, configLoad.getString("Command.Island.Leaderboard.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + return; + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Leaderboard.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + Leaderboard.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "leaderboard"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Leaderboard.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"lb", "top"}; + } + + @Override + public String[] getArguments() { + return new String[]{"level", "bank", "votes"}; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LeaveCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LeaveCommand.java new file mode 100644 index 00000000..a5c4cc7a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LeaveCommand.java @@ -0,0 +1,167 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.api.event.player.PlayerIslandLeaveEvent; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.scoreboard.Scoreboard; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.Set; +import java.util.UUID; + +public class LeaveCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = playerDataManager.getPlayerData(player); + + Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Leave.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Leave.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + PlayerIslandLeaveEvent islandLeaveEvent = new PlayerIslandLeaveEvent(player, island.getAPIWrapper()); + Bukkit.getServer().getPluginManager().callEvent(islandLeaveEvent); + + if (!islandLeaveEvent.isCancelled()) { + if (islandManager.isPlayerAtIsland(island, player)) { + LocationUtil.teleportPlayerToSpawn(player); + } + + if (island.hasRole(IslandRole.Member, player.getUniqueId())) { + island.removeRole(IslandRole.Member, player.getUniqueId()); + } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { + island.removeRole(IslandRole.Operator, player.getUniqueId()); + } + + island.save(); + + playerData.setPlaytime(0); + playerData.setOwner(null); + playerData.setMemberSince(null); + playerData.setChat(false); + playerData.save(); + + Set islandMembersOnline = islandManager.getMembersOnline(island); + + if (islandMembersOnline.size() == 1) { + for (UUID islandMembersOnlineList : islandMembersOnline) { + if (!islandMembersOnlineList.equals(player.getUniqueId())) { + Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); + PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); + + if (targetPlayerData.isChat()) { + targetPlayerData.setChat(false); + messageManager.sendMessage(targetPlayer, + fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Chat.Untoggled.Message")); + } + } + } + } + + // TODO Check if player has been teleported + islandManager.unloadIsland(island, null); + + for (Player all : Bukkit.getOnlinePlayers()) { + if (!all.getUniqueId().equals(player.getUniqueId())) { + if (island.hasRole(IslandRole.Member, all.getUniqueId()) + || island.hasRole(IslandRole.Operator, all.getUniqueId()) + || island.hasRole(IslandRole.Owner, all.getUniqueId())) { + all.sendMessage(ChatColor.translateAlternateColorCodes('&', + languageConfig.getFileConfiguration() + .getString("Command.Island.Leave.Left.Broadcast.Message") + .replace("%player", player.getName()))); + soundManager.playSound(all, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); + + if (island.getRole(IslandRole.Member).size() == 0 + && island.getRole(IslandRole.Operator).size() == 0) { + if (scoreboardManager != null) { + if (islandManager.getVisitorsAtIsland(island).size() != 0) { + Scoreboard scoreboard = scoreboardManager.getScoreboard(all); + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + languageConfig.getFileConfiguration() + .getString("Scoreboard.Island.Solo.Displayname"))); + scoreboard.setDisplayList(languageConfig.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); + scoreboard.run(); + } + } + + break; + } + } + } + } + + messageManager.sendMessage(player, + languageConfig.getFileConfiguration().getString("Command.Island.Leave.Left.Sender.Message")); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); + + if (scoreboardManager != null) { + Scoreboard scoreboard = scoreboardManager.getScoreboard(player); + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + languageConfig.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); + scoreboard.setDisplayList( + languageConfig.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); + scoreboard.run(); + } + } + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "leave"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Leave.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LevelCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LevelCommand.java new file mode 100644 index 00000000..a45ac8f8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/LevelCommand.java @@ -0,0 +1,174 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.cooldown.Cooldown; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownPlayer; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.menus.Levelling; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.Visit; +import com.songoda.skyblock.visit.VisitManager; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class LevelCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + LevellingManager levellingManager = skyblock.getLevellingManager(); + CooldownManager cooldownManager = skyblock.getCooldownManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + VisitManager visitManager = skyblock.getVisitManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID islandOwnerUUID = null; + String targetPlayerName; + + if (targetPlayer == null) { + OfflinePlayer targetOfflinePlayer = new OfflinePlayer(args[0]); + islandOwnerUUID = targetOfflinePlayer.getOwner(); + targetPlayerName = targetOfflinePlayer.getName(); + } else { + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + targetPlayerName = targetPlayer.getName(); + } + + if (islandOwnerUUID == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Owner.Other.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!islandOwnerUUID.equals(playerDataManager.getPlayerData(player).getOwner())) { + if (visitManager.hasIsland(islandOwnerUUID)) { + Visit visit = visitManager.getIsland(islandOwnerUUID); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Level.Message") + .replace("%player", targetPlayerName).replace("%level", + "" + NumberUtil.formatNumberByDecimal(visit.getLevel().getLevel()))); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + return; + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Owner.Other.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (args.length != 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Owner.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + player.closeInventory(); + + if (!island.getLevel().hasMaterials()) { + org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); + + if (cooldownManager.hasPlayer(CooldownType.Levelling, offlinePlayer)) { + CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Levelling, + offlinePlayer); + Cooldown cooldown = cooldownPlayer.getCooldown(); + + long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); + + if (cooldown.getTime() >= 3600) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Cooldown.Message").replace("%time", + durationTime[1] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") + + " " + durationTime[2] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Second"))); + } else if (cooldown.getTime() >= 60) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Cooldown.Message").replace("%time", + durationTime[2] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Second"))); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Cooldown.Message").replace("%time", + cooldown.getTime() + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Second"))); + } + + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Processing.Message")); + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + cooldownManager.createPlayer(CooldownType.Levelling, + Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); + levellingManager.calculatePoints(player, island); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Loading.Message")); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + Levelling.getInstance().open(player); + } + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "level"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Level.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"levelling", "points"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/MembersCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/MembersCommand.java new file mode 100644 index 00000000..fbd02ba8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/MembersCommand.java @@ -0,0 +1,59 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.menus.Members; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +import java.io.File; + +public class MembersCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + SoundManager soundManager = skyblock.getSoundManager(); + + if (skyblock.getIslandManager().getIsland(player) == null) { + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + playerData.setType(Members.Type.Default); + playerData.setSort(Members.Sort.Default); + + Members.getInstance().open(player, (Members.Type) playerData.getType(), + (Members.Sort) playerData.getSort()); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "members"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Members.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/OpenCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/OpenCommand.java new file mode 100644 index 00000000..4337e8b0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/OpenCommand.java @@ -0,0 +1,75 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class OpenCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Visitor").getStatus())) { + if (island.isOpen()) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Already.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + island.setOpen(true); + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Opened.Message")); + soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "open"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Open.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/OwnerCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/OwnerCommand.java new file mode 100644 index 00000000..1fb4ecb9 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/OwnerCommand.java @@ -0,0 +1,273 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.confirmation.Confirmation; +import com.songoda.skyblock.cooldown.Cooldown; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownPlayer; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Ownership; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.ChatComponent; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.chat.ComponentSerializer; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class OwnerCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + CooldownManager cooldownManager = skyblock.getCooldownManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ownership.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (args.length == 0) { + if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + playerData.setType(Ownership.Visibility.Hidden); + Ownership.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (args.length == 1) { + if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (playerData.getConfirmationTime() > 0) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Confirmation.Pending.Message")); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } else { + UUID targetPlayerUUID; + String targetPlayerName; + + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(args[0]); + targetPlayerUUID = offlinePlayer.getUniqueId(); + targetPlayerName = offlinePlayer.getName(); + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + targetPlayerName = targetPlayer.getName(); + } + + if (targetPlayerUUID == null || (!island.hasRole(IslandRole.Member, targetPlayerUUID) + && !island.hasRole(IslandRole.Operator, targetPlayerUUID) + && !island.hasRole(IslandRole.Owner, targetPlayerUUID))) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (targetPlayerUUID.equals(player.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (cooldownManager.hasPlayer(CooldownType.Ownership, + Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()))) { + CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Ownership, + Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); + Cooldown cooldown = cooldownPlayer.getCooldown(); + long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); + + if (cooldown.getTime() >= 3600) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Ownership.Cooldown.Message") + .replace("%time", durationTime[1] + " " + + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Minute") + + " " + durationTime[2] + " " + + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Second"))); + } else if (cooldown.getTime() >= 60) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Ownership.Cooldown.Message") + .replace("%time", durationTime[2] + " " + + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Second"))); + } else { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Ownership.Cooldown.Message") + .replace("%time", cooldown.getTime() + " " + + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Second"))); + } + + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } else { + int confirmationTime = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Confirmation.Timeout"); + + playerData.setOwnership(targetPlayerUUID); + playerData.setConfirmation(Confirmation.Ownership); + playerData.setConfirmationTime(confirmationTime); + + String confirmationMessage = configLoad + .getString("Command.Island.Ownership.Confirmation.Confirm.Message") + .replace("%time", "" + confirmationTime); + + if (confirmationMessage.contains("%confirm")) { + String[] confirmationMessages = confirmationMessage.split("%confirm"); + + if (confirmationMessages.length == 0) { + player.spigot() + .sendMessage(new ChatComponent(configLoad + .getString("Command.Island.Ownership.Confirmation.Confirm.Word.Confirm") + .toUpperCase(), true, ChatColor.RED, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', + configLoad.getString( + "Command.Island.Ownership.Confirmation.Confirm.Word.Tutorial"))) + .create())).getTextComponent()); + } else { + ChatComponent chatComponent = new ChatComponent("", false, null, null, null); + + for (int i = 0; i < confirmationMessages.length; i++) { + String message = confirmationMessages[i]; + + if (message.contains("\n") || message.contains("\\n")) { + message = message.replace("\\n", "\n"); + + for (String messageList : message.split("\n")) { + chatComponent.addExtraChatComponent(new ChatComponent( + messageManager.replaceMessage(player, + messageList.replace("%player", targetPlayerName) + .replace("%time", "" + confirmationTime)), + false, null, null, null)); + + chatComponent.addExtra( + new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); + } + } else { + chatComponent + .addExtraChatComponent(new ChatComponent( + messageManager.replaceMessage(player, + message.replace("%player", targetPlayerName) + .replace("%time", "" + confirmationTime)), + false, null, null, null)); + } + + if (confirmationMessages.length == 1 || i + 1 != confirmationMessages.length) { + chatComponent.addExtraChatComponent(new ChatComponent( + configLoad.getString( + "Command.Island.Ownership.Confirmation.Confirm.Word.Confirm") + .toUpperCase(), + true, ChatColor.RED, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', + configLoad.getString( + "Command.Island.Ownership.Confirmation.Confirm.Word.Tutorial"))) + .create()))); + } + } + + player.spigot().sendMessage(chatComponent.getTextComponent()); + } + } else { + messageManager.sendMessage(player, confirmationMessage.replace("%player", targetPlayerName) + .replace("%time", "" + confirmationTime)); + } + + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } + } + } else { + if (island.hasPassword()) { + if (args[0].equalsIgnoreCase(island.getPassword())) { + for (Player all : Bukkit.getOnlinePlayers()) { + if ((island.hasRole(IslandRole.Member, all.getUniqueId()) + || island.hasRole(IslandRole.Operator, all.getUniqueId()) + || island.hasRole(IslandRole.Owner, all.getUniqueId())) + && (!all.getUniqueId().equals(player.getUniqueId()))) { + all.sendMessage(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Command.Island.Ownership.Assigned.Broadcast.Message") + .replace("%player", player.getName()))); + soundManager.playSound(all, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + } + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Assigned.Sender.Message")); + soundManager.playSound(player, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + + islandManager.giveOwnership(island, player); + + cooldownManager.createPlayer(CooldownType.Ownership, + Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Password.Incorrect.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Password.Unset.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + return; + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Ownership.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "owner"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Ownership.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"ownership", "transfer", "makeleader", "makeowner"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/PromoteCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/PromoteCommand.java similarity index 93% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/PromoteCommand.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/PromoteCommand.java index b000c76a..8e027709 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/PromoteCommand.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/PromoteCommand.java @@ -1,14 +1,14 @@ -package me.goodandevil.skyblock.command.commands.island; +package com.songoda.skyblock.command.commands.island; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.ConsoleCommandSender; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/PublicCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/PublicCommand.java new file mode 100644 index 00000000..303d3e94 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/PublicCommand.java @@ -0,0 +1,77 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class PublicCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Visitor").getStatus())) { + if (island.isOpen()) { + islandManager.closeIsland(island); + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Private.Message")); + soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else { + island.setOpen(true); + + messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Public.Message")); + soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "public"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Public.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"pub", "private", "pri"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/SetSpawnCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/SetSpawnCommand.java new file mode 100644 index 00000000..cd62371b --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/SetSpawnCommand.java @@ -0,0 +1,163 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class SetSpawnCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + IslandEnvironment environment; + + if (args[0].equalsIgnoreCase("Main")) { + environment = IslandEnvironment.Main; + } else if (args[0].equalsIgnoreCase("Visitor")) { + environment = IslandEnvironment.Visitor; + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Spawn.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && (island.getSetting(IslandRole.Operator, environment.name() + "Spawn").getStatus())) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (islandManager.isPlayerAtIsland(island, player)) { + IslandWorld world = skyblock.getWorldManager().getIslandWorld(player.getWorld()); + Location location = player.getLocation(); + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Spawn.Protection")) { + if (location.clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.AIR + || location.clone().subtract(0.0D, 1.0D, 0.0D).getBlock() + .getType() == Materials.LEGACY_PISTON_MOVING_PIECE.getPostMaterial()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.SetSpawn.Protection.Block.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!player.getLocation().clone().subtract(0, 0.1, 0).getBlock().getType().isSolid()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.SetSpawn.Protection.Ground.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (location.getBlock().isLiquid() + || location.clone().add(0.0D, 1.0D, 0.0D).getBlock().isLiquid()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.SetSpawn.Protection.Liquid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (location.getBlock().getType() == Materials.NETHER_PORTAL.parseMaterial() + || location.clone().add(0.0D, 1.0D, 0.0D).getBlock() + .getType() == Materials.NETHER_PORTAL.parseMaterial()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.SetSpawn.Protection.Portal.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else { + Material type = location.getBlock().getType(); + if (type.isSolid() && type.isOccluding()) { + location.getBlock().breakNaturally(); + } + + Material typeBelow = location.clone().add(0.0D, 1.0D, 0.0D).getBlock().getType(); + if (typeBelow.isSolid() && type.isOccluding()) { + location.clone().add(0.0D, 1.0D, 0.0D).getBlock().breakNaturally(); + } + + islandManager.removeSpawnProtection(island.getLocation(world, environment)); + } + } + + Location newSpawnLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + island.setLocation(world, environment, newSpawnLocation); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.SetSpawn.Set.Message").replace("%spawn", + environment.name().toLowerCase())); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + return; + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.SetSpawn.Island.Message").replace("%spawn", + environment.name().toLowerCase())); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.SetSpawn.Permission.Message").replace("%spawn", + environment.name().toLowerCase())); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Role.Message") + .replace("%spawn", environment.name().toLowerCase())); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "setspawn"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.SetSpawn.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[]{"main", "visitor"}; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/SettingsCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/SettingsCommand.java new file mode 100644 index 00000000..24dd25d0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/SettingsCommand.java @@ -0,0 +1,78 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Settings; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class SettingsCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && (island.getSetting(IslandRole.Operator, "Visitor").getStatus() + || island.getSetting(IslandRole.Operator, "Member").getStatus())) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + Settings.getInstance().open(player, + Settings.Type.Categories, null, null); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Permission.Default.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Settings.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "settings"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Settings.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"permissions", "perms", "p"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/TeleportCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/TeleportCommand.java new file mode 100644 index 00000000..d45d40ba --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/TeleportCommand.java @@ -0,0 +1,148 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandEnvironment; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.Visit; +import com.songoda.skyblock.visit.VisitManager; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class TeleportCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + VisitManager visitManager = skyblock.getVisitManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID islandOwnerUUID = null; + String targetPlayerName; + + if (targetPlayer == null) { + OfflinePlayer targetOfflinePlayer = new OfflinePlayer(args[0]); + islandOwnerUUID = targetOfflinePlayer.getOwner(); + targetPlayerName = targetOfflinePlayer.getName(); + } else { + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + targetPlayerName = targetPlayer.getName(); + } + + if (islandOwnerUUID == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Teleport.Island.None.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!islandOwnerUUID.equals(playerDataManager.getPlayerData(player).getOwner())) { + if (visitManager.hasIsland(islandOwnerUUID)) { + Visit visit = visitManager.getIsland(islandOwnerUUID); + boolean isCoopPlayer = false; + + if (islandManager.containsIsland(islandOwnerUUID)) { + if (islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)) + .isCoopPlayer(player.getUniqueId())) { + isCoopPlayer = true; + } + } + + if (isCoopPlayer || player.hasPermission("fabledskyblock.bypass") + || player.hasPermission("fabledskyblock.bypass.*") || player.hasPermission("fabledskyblock.*") + || visit.isOpen()) { + if (!islandManager.containsIsland(islandOwnerUUID)) { + islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); + } + + islandManager.visitIsland(player, + islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID))); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Teleport.Teleported.Other.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); + + return; + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Teleport.Island.Closed.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + + return; + } + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Teleport.Island.None.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (args.length != 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Teleport.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Teleport.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Teleport.Teleported.Yourself.Message")); + soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> { + player.teleport(island.getLocation(IslandWorld.Normal, IslandEnvironment.Main)); + player.setFallDistance(0.0F); + }); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "teleport"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Teleport.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"tp", "spawn", "home", "go", "warp"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UnbanCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UnbanCommand.java new file mode 100644 index 00000000..254de648 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UnbanCommand.java @@ -0,0 +1,121 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.ban.Ban; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class UnbanCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Visitor.Banning")) { + if (island.hasRole(IslandRole.Owner, player.getUniqueId()) + || (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Unban").getStatus())) { + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + + UUID targetPlayerUUID = null; + String targetPlayerName = null; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + targetPlayerUUID = targetPlayerOffline.getUniqueId(); + targetPlayerName = targetPlayerOffline.getName(); + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + targetPlayerName = targetPlayer.getName(); + } + + if (targetPlayerUUID == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Found.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (targetPlayerUUID.equals(player.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Unban.Yourself.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Member, targetPlayerUUID) + || island.hasRole(IslandRole.Operator, targetPlayerUUID) + || island.hasRole(IslandRole.Owner, targetPlayerUUID)) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (!island.getBan().isBanned(targetPlayerUUID)) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Banned.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Unbanned.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + Ban ban = island.getBan(); + ban.removeBan(targetPlayerUUID); + ban.save(); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "unban"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Unban.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UnlockCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UnlockCommand.java similarity index 86% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UnlockCommand.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UnlockCommand.java index 48e0f799..14899945 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UnlockCommand.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UnlockCommand.java @@ -1,16 +1,16 @@ -package me.goodandevil.skyblock.command.commands.island; +package com.songoda.skyblock.command.commands.island; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.economy.EconomyManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.version.Sounds; +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.economy.EconomyManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.Sounds; import org.apache.commons.lang.WordUtils; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.configuration.file.FileConfiguration; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UpgradeCommand.java new file mode 100644 index 00000000..f3f55aa8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/UpgradeCommand.java @@ -0,0 +1,66 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.menus.Upgrade; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class UpgradeCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (skyblock.getIslandManager().getIsland(player) == null) { + skyblock.getMessageManager().sendMessage(player, + configLoad.getString("Command.Island.Upgrade.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + if (!skyblock.getEconomyManager().isEconomy()) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Upgrade.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + Upgrade.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "upgrade"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Upgrade.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"upgrades"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ValueCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ValueCommand.java new file mode 100644 index 00000000..5c9bee82 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/ValueCommand.java @@ -0,0 +1,91 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.levelling.LevellingMaterial; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.apache.commons.lang3.text.WordUtils; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class ValueCommand extends SubCommand { + + @SuppressWarnings("deprecation") + @Override + public void onCommandByPlayer(Player player, String[] args) { + LevellingManager levellingManager = skyblock.getLevellingManager(); + 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.getItemInHand() == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Value.Hand.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Materials materials = null; + + if (NMSUtil.getVersionNumber() < 13) { + materials = Materials.requestMaterials(player.getItemInHand().getType().name(), + (byte) player.getItemInHand().getDurability()); + } else { + materials = Materials.fromString(player.getItemInHand().getType().name()); + } + + if (materials != null && levellingManager.containsMaterial(materials)) { + LevellingMaterial material = levellingManager.getMaterial(materials); + double level = (double) material.getPoints() + / (double) fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Levelling.Division"); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Value.Value.Message") + .replace("%material", + WordUtils.capitalizeFully(materials.name().toLowerCase().replace("_", " "))) + .replace("%points", "" + material.getPoints()) + .replace("%level", "" + NumberUtil.formatNumberByDecimal(level))); + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Value.None.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "value"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Value.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VisitCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VisitCommand.java new file mode 100644 index 00000000..eb006ed7 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VisitCommand.java @@ -0,0 +1,66 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.menus.Visit; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +import java.io.File; + +public class VisitCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + if (args.length == 0) { + if (!skyblock.getPlayerDataManager().hasPlayerData(player)) + skyblock.getPlayerDataManager().createPlayerData(player); + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + playerData.setType(Visit.Type.Default); + playerData.setSort(Visit.Sort.Default); + + Visit.getInstance().open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else if (args.length == 1) { + Bukkit.getServer().getScheduler().runTask(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island teleport " + args[0])); + } else { + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Command.Island.Visit.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "visit"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Visit.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[]{"warps", "explore"}; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VisitorsCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VisitorsCommand.java new file mode 100644 index 00000000..127d7aa7 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VisitorsCommand.java @@ -0,0 +1,69 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.menus.Visitors; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class VisitorsCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (!island.isOpen()) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Closed.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (islandManager.getVisitorsAtIsland(island).size() == 0) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Visitors.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Visitors.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "visitors"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Visitors.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VoteCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VoteCommand.java new file mode 100644 index 00000000..17a2a6f9 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/VoteCommand.java @@ -0,0 +1,146 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.Visit; +import com.songoda.skyblock.visit.VisitManager; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.UUID; + +public class VoteCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + VisitManager visitManager = skyblock.getVisitManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (args.length == 1) { + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Visitor.Vote")) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); + UUID islandOwnerUUID; + String targetPlayerName; + + if (targetPlayer == null) { + OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); + islandOwnerUUID = targetPlayerOffline.getOwner(); + targetPlayerName = targetPlayerOffline.getName(); + } else { + islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); + targetPlayerName = targetPlayer.getName(); + } + + if (islandOwnerUUID == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Island.None.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (!visitManager.hasIsland(islandOwnerUUID)) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Island.Unloaded.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + Visit visit = visitManager.getIsland(islandOwnerUUID); + + if (visit.isOpen()) { + if (!islandManager.containsIsland(islandOwnerUUID)) { + islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); + } + + Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); + + if (island.hasRole(IslandRole.Member, player.getUniqueId()) + || island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Vote.Island.Member.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + + if (playerData.getIsland() != null && playerData.getIsland().equals(island.getOwnerUUID())) { + if (visit.getVoters().contains(player.getUniqueId())) { + visit.removeVoter(player.getUniqueId()); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Vote.Vote.Removed.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); + } else { + visit.addVoter(player.getUniqueId()); + + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Vote.Vote.Added.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Vote.Island.Location.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + + islandManager.unloadIsland(island, null); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Vote.Island.Closed.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Invalid.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "vote"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Vote.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/WeatherCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/WeatherCommand.java new file mode 100644 index 00000000..eab8468f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/WeatherCommand.java @@ -0,0 +1,68 @@ +package com.songoda.skyblock.command.commands.island; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Weather; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class WeatherCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Weather.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Weather").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + Weather.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Weather.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "weather"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Weather.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/disabled/ResetCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/disabled/ResetCommand.java new file mode 100644 index 00000000..ae5045e9 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/disabled/ResetCommand.java @@ -0,0 +1,100 @@ +package com.songoda.skyblock.command.commands.island.disabled; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.confirmation.Confirmation; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.ChatComponent; +import com.songoda.skyblock.utils.version.Sounds; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class ResetCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Reset.Owner.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (playerData.getConfirmationTime() > 0) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Reset.Confirmation.Pending.Message")); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } else { + int confirmationTime = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Confirmation.Timeout"); + + playerData.setConfirmation(Confirmation.Reset); + playerData.setConfirmationTime(confirmationTime); + + player.spigot().sendMessage(new ChatComponent( + configLoad.getString("Command.Island.Reset.Confirmation.Confirm.Message").replace("%time", + "" + confirmationTime) + " ", + false, null, null, null) + .addExtra(new ChatComponent(configLoad + .getString("Command.Island.Reset.Confirmation.Confirm.Word.Confirm") + .toUpperCase(), true, ChatColor.RED, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Command.Island.Reset.Confirmation.Confirm.Word.Tutorial"))) + .create())))); + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + } + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Reset.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "reset"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Reset.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/disabled/RollbackCommand.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/disabled/RollbackCommand.java new file mode 100644 index 00000000..433b1608 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/command/commands/island/disabled/RollbackCommand.java @@ -0,0 +1,67 @@ +package com.songoda.skyblock.command.commands.island.disabled; + +import com.songoda.skyblock.command.SubCommand; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.menus.Rollback; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class RollbackCommand extends SubCommand { + + @Override + public void onCommandByPlayer(Player player, String[] args) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Rollback.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + Rollback.getInstance().open(player); + soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Rollback.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + } + + @Override + public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { + sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); + } + + @Override + public String getName() { + return "rollback"; + } + + @Override + public String getInfoMessagePath() { + return "Command.Island.Rollback.Info.Message"; + } + + @Override + public String[] getAliases() { + return new String[0]; + } + + @Override + public String[] getArguments() { + return new String[0]; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/config/FileChecker.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/config/FileChecker.java new file mode 100644 index 00000000..aeba61f4 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/config/FileChecker.java @@ -0,0 +1,131 @@ +package com.songoda.skyblock.config; + +import com.songoda.skyblock.SkyBlock; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +public class FileChecker { + + private final FileManager fileManager; + + private Map loadedFiles; + + public FileChecker(SkyBlock skyblock, FileManager fileManager, String configurationFileName, + boolean applyComments) { + this.fileManager = fileManager; + + loadedFiles = new EnumMap<>(File.Type.class); + + java.io.File configFile = new java.io.File(skyblock.getDataFolder(), configurationFileName); + loadedFiles.put(File.Type.CREATED, + new File(fileManager, configFile, YamlConfiguration.loadConfiguration(configFile))); + + if (applyComments) { + loadedFiles.put(File.Type.RESOURCE, + new File(null, null, YamlConfiguration.loadConfiguration(new InputStreamReader(fileManager + .getConfigContent(new InputStreamReader(skyblock.getResource(configurationFileName))))))); + } else { + loadedFiles.put(File.Type.RESOURCE, new File(null, null, YamlConfiguration + .loadConfiguration(new InputStreamReader(skyblock.getResource(configurationFileName))))); + } + } + + public void loadSections() { + for (File.Type fileType : File.Type.values()) { + File file = loadedFiles.get(fileType); + FileConfiguration configLoad = file.getFileConfiguration(); + + Set configKeys = configLoad.getKeys(true); + + for (String configKeysList : configKeys) { + file.addKey(configKeysList, configLoad.get(configKeysList)); + } + } + } + + public void compareFiles() { + for (File.Type fileType : File.Type.values()) { + File file = loadedFiles.get(fileType); + FileConfiguration configLoad = file.getFileConfiguration(); + + if (fileType == File.Type.CREATED) { + File resourceFile = loadedFiles.get(File.Type.RESOURCE); + + for (String configKeyList : file.getKeys().keySet()) { + if (!resourceFile.getKeys().containsKey(configKeyList)) { + configLoad.set(configKeyList, null); + } + } + } else if (fileType == File.Type.RESOURCE) { + File createdFile = loadedFiles.get(File.Type.CREATED); + FileConfiguration createdConfigLoad = createdFile.getFileConfiguration(); + + for (String configKeyList : file.getKeys().keySet()) { + if (createdConfigLoad.getString(configKeyList) == null) { + createdConfigLoad.set(configKeyList, file.getKeys().get(configKeyList)); + } + } + } + } + } + + public void saveChanges() { + File file = loadedFiles.get(File.Type.CREATED); + + try { + if (file.getFile().getName().equals("config.yml")) { + fileManager.saveConfig(file.getFileConfiguration().saveToString(), file.getFile()); + } else { + file.getFileConfiguration().save(file.getFile()); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static class File { + + private java.io.File configFile; + private FileConfiguration configLoad; + + private HashMap configKeys; + + public File(FileManager fileManager, java.io.File configFile, FileConfiguration configLoad) { + this.configFile = configFile; + this.configLoad = configLoad; + configKeys = new HashMap<>(); + + if (configFile != null && configFile.getName().equals("config.yml")) { + this.configLoad = YamlConfiguration + .loadConfiguration(new InputStreamReader(fileManager.getConfigContent(configFile))); + } + } + + public java.io.File getFile() { + return configFile; + } + + public FileConfiguration getFileConfiguration() { + return configLoad; + } + + public HashMap getKeys() { + return configKeys; + } + + public void addKey(String key, Object object) { + configKeys.put(key, object); + } + + public enum Type { + CREATED, RESOURCE + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/config/FileManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/config/FileManager.java new file mode 100644 index 00000000..5729aac4 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/config/FileManager.java @@ -0,0 +1,305 @@ +package com.songoda.skyblock.config; + +import com.google.common.io.ByteStreams; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.IslandWorld; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.*; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.logging.Level; + +public class FileManager { + + private final SkyBlock skyblock; + private Map loadedConfigs = new HashMap<>(); + + public FileManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + loadConfigs(); + } + + public void loadConfigs() { + if (!skyblock.getDataFolder().exists()) { + skyblock.getDataFolder().mkdir(); + } + + if (!new File(skyblock.getDataFolder().toString() + "/structures").exists()) { + new File(skyblock.getDataFolder().toString() + "/structures").mkdir(); + } + + if (Bukkit.getPluginManager().isPluginEnabled("WorldEdit") && !new File(skyblock.getDataFolder().toString() + "/schematics").exists()) { + new File(skyblock.getDataFolder().toString() + "/schematics").mkdir(); + } + + Map configFiles = new LinkedHashMap<>(); + configFiles.put("limits.yml", new File(skyblock.getDataFolder(), "limits.yml")); + configFiles.put("worlds.yml", new File(skyblock.getDataFolder(), "worlds.yml")); + configFiles.put("levelling.yml", new File(skyblock.getDataFolder(), "levelling.yml")); + configFiles.put("config.yml", new File(skyblock.getDataFolder(), "config.yml")); + configFiles.put("language.yml", new File(skyblock.getDataFolder(), "language.yml")); + configFiles.put("settings.yml", new File(skyblock.getDataFolder(), "settings.yml")); + configFiles.put("upgrades.yml", new File(skyblock.getDataFolder(), "upgrades.yml")); + configFiles.put("generators.yml", new File(skyblock.getDataFolder(), "generators.yml")); + configFiles.put("stackables.yml", new File(skyblock.getDataFolder(), "stackables.yml")); + configFiles.put("structures.yml", new File(skyblock.getDataFolder(), "structures.yml")); + configFiles.put("structures/default.structure", + new File(skyblock.getDataFolder().toString() + "/structures", "default.structure")); + + for (String configFileList : configFiles.keySet()) { + File configFile = configFiles.get(configFileList); + + if (configFile.exists()) { + if (configFileList.equals("config.yml") || configFileList.equals("language.yml") + || configFileList.equals("settings.yml")) { + FileChecker fileChecker; + + if (configFileList.equals("config.yml")) { + fileChecker = new FileChecker(skyblock, this, configFileList, true); + } else { + fileChecker = new FileChecker(skyblock, this, configFileList, false); + } + + fileChecker.loadSections(); + fileChecker.compareFiles(); + fileChecker.saveChanges(); + } + } else { + try { + configFile.createNewFile(); + try (InputStream is = skyblock.getResource(configFileList); + OutputStream os = new FileOutputStream(configFile)) { + ByteStreams.copy(is, os); + } + + if (configFileList.equals("worlds.yml")) { + File mainConfigFile = new File(skyblock.getDataFolder(), "config.yml"); + + if (isFileExist(mainConfigFile)) { + Config config = new Config(this, configFile); + Config mainConfig = new Config(this, mainConfigFile); + + FileConfiguration configLoad = config.getFileConfiguration(); + FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); + + for (IslandWorld worldList : IslandWorld.values()) { + if (mainConfigLoad.getString("World." + worldList.name()) != null) { + configLoad.set("World." + worldList.name() + ".nextAvailableLocation.x", + mainConfigLoad.getDouble( + "World." + worldList.name() + ".nextAvailableLocation.x")); + configLoad.set("World." + worldList.name() + ".nextAvailableLocation.z", + mainConfigLoad.getDouble( + "World." + worldList.name() + ".nextAvailableLocation.z")); + } + } + + mainConfigLoad.set("World", null); + + configLoad.save(config.getFile()); + saveConfig(mainConfigLoad.saveToString(), mainConfig.getFile()); + } + } + } catch (IOException ex) { + Bukkit.getServer().getLogger().log(Level.WARNING, + "SkyBlock | Error: Unable to create configuration file."); + } + } + } + } + + public void setLocation(Config config, String path, Location location, boolean direction) { + File configFile = config.getFile(); + FileConfiguration configLoad = config.getFileConfiguration(); + + configLoad.set(path + ".world", location.getWorld().getName()); + configLoad.set(path + ".x", Double.valueOf(location.getX())); + configLoad.set(path + ".y", Double.valueOf(location.getY())); + configLoad.set(path + ".z", Double.valueOf(location.getZ())); + + if (direction) { + configLoad.set(path + ".yaw", Float.valueOf(location.getYaw())); + configLoad.set(path + ".pitch", Float.valueOf(location.getPitch())); + } + + try { + configLoad.save(configFile); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public Location getLocation(Config config, String path, boolean direction) { + Location location = null; + + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.contains(path)) { + String world = configLoad.getString(path + ".world"); + + double x = configLoad.getDouble(path + ".x"); + double y = configLoad.getDouble(path + ".y"); + double z = configLoad.getDouble(path + ".z"); + double yaw = 0.0D; + double pitch = 0.0D; + + if (configLoad.contains(path + ".yaw")) { + yaw = configLoad.getDouble(path + ".yaw"); + pitch = configLoad.getDouble(path + ".pitch"); + } + + location = new org.bukkit.Location(Bukkit.getWorld(world), x, y, z); + + if (direction) { + location.setYaw((float) yaw); + location.setPitch((float) pitch); + } + } + + return location; + } + + public boolean isFileExist(File configPath) { + return configPath.exists(); + } + + public void unloadConfig(File configPath) { + loadedConfigs.remove(configPath.getPath()); + } + + public void deleteConfig(File configPath) { + Config config = getConfig(configPath); + config.getFile().delete(); + loadedConfigs.remove(configPath.getPath()); + } + + public Config getConfig(File configPath) { + if (loadedConfigs.containsKey(configPath.getPath())) { + return loadedConfigs.get(configPath.getPath()); + } + + Config config = new Config(this, configPath); + loadedConfigs.put(configPath.getPath(), config); + + return config; + } + + public Map getConfigs() { + return loadedConfigs; + } + + public boolean isConfigLoaded(java.io.File configPath) { + return loadedConfigs.containsKey(configPath.getPath()); + } + + public InputStream getConfigContent(Reader reader) { + try { + String addLine, currentLine, pluginName = skyblock.getDescription().getName(); + int commentNum = 0; + + StringBuilder whole = new StringBuilder(); + BufferedReader bufferedReader = new BufferedReader(reader); + + while ((currentLine = bufferedReader.readLine()) != null) { + if (currentLine.contains("#")) { + addLine = currentLine.replace("[!]", "IMPORTANT").replace(":", "-").replaceFirst("#", + pluginName + "_COMMENT_" + commentNum + ":"); + whole.append(addLine + "\n"); + commentNum++; + } else { + whole.append(currentLine + "\n"); + } + } + + String config = whole.toString(); + InputStream configStream = new ByteArrayInputStream(config.getBytes(StandardCharsets.UTF_8)); + bufferedReader.close(); + + return configStream; + } catch (IOException e) { + e.printStackTrace(); + + return null; + } + } + + public InputStream getConfigContent(File configFile) { + if (!configFile.exists()) { + return null; + } + + try { + return getConfigContent(new FileReader(configFile)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + return null; + } + + private String prepareConfigString(String configString) { + String[] lines = configString.split("\n"); + StringBuilder config = new StringBuilder(); + + for (String line : lines) { + if (line.contains(skyblock.getDescription().getName() + "_COMMENT")) { + config.append(line.replace("IMPORTANT", "[!]").replace("\n", "") + .replace(skyblock.getDescription().getName() + "_COMMENT_", "#").replaceAll("[0-9]+:", "") + + "\n"); + } else if (line.contains(":")) { + config.append(line + "\n"); + } + } + + return config.toString(); + } + + public void saveConfig(String configString, File configFile) { + try { + BufferedWriter writer = new BufferedWriter(new FileWriter(configFile)); + writer.write(prepareConfigString(configString)); + writer.flush(); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static class Config { + + private File configFile; + private FileConfiguration configLoad; + + public Config(FileManager fileManager, java.io.File configPath) { + configFile = configPath; + + if (configPath.getName().equals("config.yml")) { + configLoad = YamlConfiguration + .loadConfiguration(new InputStreamReader(fileManager.getConfigContent(configFile))); + } else { + configLoad = YamlConfiguration.loadConfiguration(configPath); + } + } + + public File getFile() { + return configFile; + } + + public FileConfiguration getFileConfiguration() { + return configLoad; + } + + public FileConfiguration loadFile() { + configLoad = YamlConfiguration.loadConfiguration(configFile); + + return configLoad; + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/confirmation/Confirmation.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/confirmation/Confirmation.java new file mode 100644 index 00000000..281f4852 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/confirmation/Confirmation.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.confirmation; + +public enum Confirmation { + + Ownership, Reset, Deletion + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/confirmation/ConfirmationTask.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/confirmation/ConfirmationTask.java new file mode 100644 index 00000000..782e29e0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/confirmation/ConfirmationTask.java @@ -0,0 +1,29 @@ +package com.songoda.skyblock.confirmation; + +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class ConfirmationTask extends BukkitRunnable { + + private final PlayerDataManager playerDataManager; + + public ConfirmationTask(PlayerDataManager playerDataManager) { + this.playerDataManager = playerDataManager; + } + + @Override + public void run() { + for (Player all : Bukkit.getOnlinePlayers()) { + if (playerDataManager.hasPlayerData(all)) { + PlayerData playerData = playerDataManager.getPlayerData(all); + + if (playerData.getConfirmationTime() > 0) { + playerData.setConfirmationTime(playerData.getConfirmationTime() - 1); + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/Cooldown.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/Cooldown.java new file mode 100644 index 00000000..a152a38c --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/Cooldown.java @@ -0,0 +1,18 @@ +package com.songoda.skyblock.cooldown; + +public class Cooldown { + + private int time; + + public Cooldown(int time) { + this.time = time; + } + + public int getTime() { + return time; + } + + public void setTime(int time) { + this.time = time; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownManager.java new file mode 100644 index 00000000..63e5747d --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownManager.java @@ -0,0 +1,300 @@ +package com.songoda.skyblock.cooldown; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class CooldownManager { + + private final SkyBlock skyblock; + + private Map> cooldownStorage = new HashMap<>(); + + public CooldownManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + IslandManager islandManager = skyblock.getIslandManager(); + + for (CooldownType cooldownTypeList : CooldownType.values()) { + List cooldownPlayers = new ArrayList<>(); + + for (Player all : Bukkit.getOnlinePlayers()) { + CooldownPlayer cooldownPlayer = null; + + if (cooldownTypeList == CooldownType.Biome || cooldownTypeList == CooldownType.Creation) { + cooldownPlayer = loadCooldownPlayer(cooldownTypeList, all); + } else if (cooldownTypeList == CooldownType.Levelling || cooldownTypeList == CooldownType.Ownership) { + Island island = islandManager.getIsland(all); + + if (island != null) { + OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); + + if (!hasPlayer(cooldownTypeList, offlinePlayer)) { + cooldownPlayer = loadCooldownPlayer(cooldownTypeList, offlinePlayer); + } + } + } + + if (cooldownPlayer != null) { + cooldownPlayers.add(cooldownPlayer); + } + } + + cooldownStorage.put(cooldownTypeList, cooldownPlayers); + } + + new CooldownTask(this).runTaskTimerAsynchronously(skyblock, 0L, 20L); + } + + public void onDisable() { + for (CooldownType cooldownTypeList : CooldownType.values()) { + setCooldownPlayer(cooldownTypeList); + saveCooldownPlayer(cooldownTypeList); + } + } + + public CooldownPlayer loadCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { + if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { + Config config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + player.getUniqueId().toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString("Island." + cooldownType.name() + ".Cooldown") != null) { + return new CooldownPlayer(player.getUniqueId(), + new Cooldown(configLoad.getInt("Island." + cooldownType.name() + ".Cooldown"))); + } + } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { + Config config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + player.getUniqueId().toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString(cooldownType.name() + ".Cooldown") != null) { + return new CooldownPlayer(player.getUniqueId(), + new Cooldown(configLoad.getInt(cooldownType.name() + ".Cooldown"))); + } + } + + return null; + } + + public void createPlayer(CooldownType cooldownType, OfflinePlayer player) { + FileManager fileManager = skyblock.getFileManager(); + + if (cooldownStorage.containsKey(cooldownType)) { + int time = 0; + + if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { + time = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getInt("Island." + cooldownType.name() + ".Cooldown.Time"); + + Config config = fileManager + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + player.getUniqueId().toString() + ".yml")); + File configFile = config.getFile(); + FileConfiguration configLoad = config.getFileConfiguration(); + + configLoad.set("Island." + cooldownType.name() + ".Cooldown", time); + + try { + configLoad.save(configFile); + } catch (IOException e) { + e.printStackTrace(); + } + } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { + time = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getInt("Island." + cooldownType.name() + ".Cooldown.Time"); + + Config config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + player.getUniqueId().toString() + ".yml")); + File configFile = config.getFile(); + FileConfiguration configLoad = config.getFileConfiguration(); + + configLoad.set(cooldownType.name() + ".Cooldown", time); + + try { + configLoad.save(configFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + cooldownStorage.get(cooldownType).add(new CooldownPlayer(player.getUniqueId(), new Cooldown(time))); + } + } + + public void deletePlayer(CooldownType cooldownType, OfflinePlayer player) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { + if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + player.getUniqueId().toString() + ".yml")) + .getFileConfiguration().set("Island." + cooldownType.name() + ".Cooldown", null); + } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + player.getUniqueId().toString() + ".yml")) + .getFileConfiguration().set(cooldownType.name() + ".Cooldown", null); + } + + cooldownStorage.get(cooldownType).remove(cooldownPlayerList); + + break; + } + } + } + } + + public boolean hasPlayer(CooldownType cooldownType, OfflinePlayer player) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { + return true; + } + } + } + + return false; + } + + public void transferPlayer(CooldownType cooldownType, OfflinePlayer player1, OfflinePlayer player2) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + if (cooldownPlayerList.getUUID().equals(player1.getUniqueId())) { + cooldownPlayerList.setUUID(player2.getUniqueId()); + + break; + } + } + } + } + + public void removeCooldownPlayer(CooldownType cooldownType, CooldownPlayer cooldownPlayer) { + if (cooldownStorage.containsKey(cooldownType)) { + cooldownStorage.get(cooldownType).remove(cooldownPlayer); + } + } + + public void removeCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { + cooldownStorage.get(cooldownType).remove(cooldownPlayerList); + + break; + } + } + } + } + + public void setCooldownPlayer(CooldownType cooldownType) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + setCooldownPlayer(cooldownType, Bukkit.getServer().getOfflinePlayer(cooldownPlayerList.getUUID())); + } + } + } + + public void setCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { + if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + player.getUniqueId().toString() + ".yml")) + .getFileConfiguration().set("Island." + cooldownType + ".Cooldown", + cooldownPlayerList.getCooldown().getTime()); + } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + player.getUniqueId().toString() + ".yml")) + .getFileConfiguration() + .set(cooldownType.name() + ".Cooldown", cooldownPlayerList.getCooldown().getTime()); + } + + break; + } + } + } + } + + public void saveCooldownPlayer(CooldownType cooldownType) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + saveCooldownPlayer(cooldownType, Bukkit.getServer().getOfflinePlayer(cooldownPlayerList.getUUID())); + } + } + } + + public void saveCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { + Config config = null; + + if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { + config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + player.getUniqueId().toString() + ".yml")); + } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { + config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + player.getUniqueId().toString() + ".yml")); + } + + if (config != null) { + try { + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public void addCooldownPlayer(CooldownType cooldownType, CooldownPlayer cooldownPlayer) { + if (cooldownType != null && cooldownPlayer != null) { + if (cooldownStorage.containsKey(cooldownType)) { + cooldownStorage.get(cooldownType).add(cooldownPlayer); + } + } + } + + public CooldownPlayer getCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { + if (cooldownStorage.containsKey(cooldownType)) { + for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { + if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { + return cooldownPlayerList; + } + } + } + + return null; + } + + public List getCooldownPlayers(CooldownType cooldownType) { + if (cooldownStorage.containsKey(cooldownType)) { + return cooldownStorage.get(cooldownType); + } + + return null; + } + + public boolean hasCooldownType(CooldownType cooldownType) { + return cooldownStorage.containsKey(cooldownType); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownPlayer.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownPlayer.java new file mode 100644 index 00000000..950929ff --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownPlayer.java @@ -0,0 +1,30 @@ +package com.songoda.skyblock.cooldown; + +import java.util.UUID; + +public class CooldownPlayer { + + private UUID uuid; + private Cooldown cooldown; + + public CooldownPlayer(UUID uuid, Cooldown cooldown) { + this.uuid = uuid; + this.cooldown = cooldown; + } + + public UUID getUUID() { + return uuid; + } + + public void setUUID(UUID uuid) { + this.uuid = uuid; + } + + public Cooldown getCooldown() { + return cooldown; + } + + public void setCooldown(Cooldown cooldown) { + this.cooldown = cooldown; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownTask.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownTask.java new file mode 100644 index 00000000..757b0e29 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownTask.java @@ -0,0 +1,36 @@ +package com.songoda.skyblock.cooldown; + +import org.bukkit.Bukkit; +import org.bukkit.scheduler.BukkitRunnable; + +import java.util.List; + +public class CooldownTask extends BukkitRunnable { + + private final CooldownManager cooldownManager; + + public CooldownTask(CooldownManager cooldownManager) { + this.cooldownManager = cooldownManager; + } + + @Override + public void run() { + for (CooldownType cooldownTypeList : CooldownType.values()) { + if (cooldownManager.hasCooldownType(cooldownTypeList)) { + List cooldownPlayers = cooldownManager.getCooldownPlayers(cooldownTypeList); + + for (int i = 0; i < cooldownPlayers.size(); i++) { + CooldownPlayer cooldownPlayer = cooldownPlayers.get(i); + Cooldown cooldown = cooldownPlayer.getCooldown(); + + cooldown.setTime(cooldown.getTime() - 1); + + if (cooldown.getTime() <= 0) { + cooldownManager.deletePlayer(cooldownTypeList, + Bukkit.getServer().getOfflinePlayer(cooldownPlayer.getUUID())); + } + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownType.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownType.java new file mode 100644 index 00000000..65379d21 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/cooldown/CooldownType.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.cooldown; + +public enum CooldownType { + + Biome, Creation, Levelling, Ownership, Teleport + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/economy/EconomyManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/economy/EconomyManager.java new file mode 100644 index 00000000..eefc0136 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/economy/EconomyManager.java @@ -0,0 +1,98 @@ +package com.songoda.skyblock.economy; + +import com.songoda.skyblock.api.event.player.PlayerWithdrawMoneyEvent; +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.permission.Permission; +import net.tnemc.core.Reserve; +import net.tnemc.core.economy.EconomyAPI; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; +import org.bukkit.plugin.RegisteredServiceProvider; + +import java.math.BigDecimal; + +public class EconomyManager { + + // Vault + private Economy vaultEconomy = null; + private Permission vaultPermission = null; + + // Reserve + private EconomyAPI reserveEconomy = null; +// private PermissionsAPI reservePermission = null; + + public EconomyManager() { + setup(); + } + + public void setup() { + if (Bukkit.getServer().getPluginManager().getPlugin("Vault") != null) { + RegisteredServiceProvider economyRsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class); + + if (economyRsp != null) + this.vaultEconomy = economyRsp.getProvider(); + + RegisteredServiceProvider permissionRsp = Bukkit.getServer().getServicesManager().getRegistration(Permission.class); + if (permissionRsp != null) + this.vaultPermission = permissionRsp.getProvider(); + } else if (Bukkit.getServer().getPluginManager().getPlugin("Reserve") != null) { + if (Reserve.instance().economyProvided()) + this.reserveEconomy = Reserve.instance().economy(); + +// if (Reserve.instance().permissionsProvided()) +// this.reservePermission = Reserve.instance().permissions(); + } + } + + public double getBalance(Player player) { + if (this.vaultEconomy != null) + return this.vaultEconomy.getBalance(player); + + if (this.reserveEconomy != null) + return this.reserveEconomy.getHoldings(player.getUniqueId()).doubleValue(); + + return 0; + } + + public boolean hasBalance(Player player, double money) { + return this.getBalance(player) >= money; + } + + public void withdraw(Player player, double money) { + if (this.vaultEconomy != null) + this.vaultEconomy.withdrawPlayer(player, money); + else if (this.reserveEconomy != null) + this.reserveEconomy.removeHoldings(player.getUniqueId(), new BigDecimal(money)); + + Bukkit.getServer().getPluginManager().callEvent(new PlayerWithdrawMoneyEvent(player, money)); + } + + public void deposit(Player player, double money) { + if (this.vaultEconomy != null) + this.vaultEconomy.depositPlayer(player, money); + else if (this.reserveEconomy != null) + this.reserveEconomy.addHoldings(player.getUniqueId(), new BigDecimal(money)); + + Bukkit.getServer().getPluginManager().callEvent(new PlayerWithdrawMoneyEvent(player, money)); + } + + public boolean hasPermission(String world, OfflinePlayer offlinePlayer, String perm) { + if (this.vaultPermission != null) + return this.vaultPermission.playerHas(world, offlinePlayer, perm); + +// if (this.reservePermission != null) { +// // TODO +// } + + return false; + } + + public boolean isEconomy() { + return this.vaultEconomy != null || this.reserveEconomy != null; + } + + public boolean isPermission() { + return this.vaultPermission != null/* || this.reservePermission != null*/; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/Generator.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/Generator.java new file mode 100644 index 00000000..3d6ee150 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/Generator.java @@ -0,0 +1,44 @@ +package com.songoda.skyblock.generator; + +import com.songoda.skyblock.utils.version.Materials; + +import java.util.List; + +public class Generator { + + private String name; + private Materials materials; + private List generatorMaterials; + private boolean permission; + + public Generator(String name, Materials materials, List generatorMaterials, boolean permission) { + this.name = name; + this.materials = materials; + this.generatorMaterials = generatorMaterials; + this.permission = permission; + } + + public String getName() { + return name; + } + + public Materials getMaterials() { + return materials; + } + + public List getGeneratorMaterials() { + return generatorMaterials; + } + + public boolean isPermission() { + return permission; + } + + public String getPermission() { + return "fabledskyblock.generator." + name.toLowerCase().replace(" ", "_"); + } + + public void setPermission(boolean permission) { + this.permission = permission; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/GeneratorManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/GeneratorManager.java similarity index 93% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/GeneratorManager.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/GeneratorManager.java index a97a9ef5..d718d430 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/GeneratorManager.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/GeneratorManager.java @@ -1,12 +1,10 @@ -package me.goodandevil.skyblock.generator; +package com.songoda.skyblock.generator; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.Material; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; @@ -16,7 +14,9 @@ import org.bukkit.inventory.ItemStack; import java.io.File; import java.lang.reflect.InvocationTargetException; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; public class GeneratorManager { @@ -68,10 +68,7 @@ public class GeneratorManager { if (!from.isLiquid()) return false; - if (isWater(from) && isFlowingBlock(from)) - return true; - - return false; + return isWater(from) && isFlowingBlock(from); } private boolean isLava(Block block) { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/GeneratorMaterial.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/GeneratorMaterial.java new file mode 100644 index 00000000..7631a588 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/generator/GeneratorMaterial.java @@ -0,0 +1,26 @@ +package com.songoda.skyblock.generator; + +import com.songoda.skyblock.utils.version.Materials; + +public class GeneratorMaterial { + + private Materials materials; + private double chance; + + public GeneratorMaterial(Materials materials, double chance) { + this.materials = materials; + this.chance = chance; + } + + public Materials getMaterials() { + return materials; + } + + public double getChance() { + return chance; + } + + public void setChance(double chance) { + this.chance = chance; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/Hologram.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/Hologram.java new file mode 100644 index 00000000..2f4c1a76 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/Hologram.java @@ -0,0 +1,80 @@ +package com.songoda.skyblock.hologram; + +import com.songoda.skyblock.utils.version.NMSUtil; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.EntityType; + +import java.util.ArrayList; +import java.util.List; + +public class Hologram { + + private List holograms = new ArrayList<>(); + + private HologramType type; + private Location location; + + public Hologram(HologramType type, Location location, List 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); + int NMSVersion = NMSUtil.getVersionNumber(); + as.setVisible(false); + if (NMSVersion > 8) + as.setMarker(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 getHolograms() { + return holograms; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/HologramManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/HologramManager.java new file mode 100644 index 00000000..af625219 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/HologramManager.java @@ -0,0 +1,309 @@ +package com.songoda.skyblock.hologram; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.leaderboard.Leaderboard; +import com.songoda.skyblock.leaderboard.LeaderboardManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.visit.Visit; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +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 java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +public class HologramManager { + + private final SkyBlock skyblock; + private List hologramStorage = new ArrayList<>(); + + public HologramManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + FileManager fileManager = skyblock.getFileManager(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { + removeWorldHolograms(); + + for (HologramType hologramTypeList : HologramType.values()) { + 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 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 hologramLines = new ArrayList<>(); + Leaderboard.Type leaderboardType = null; + + switch (type) { + case Level: + leaderboardType = Leaderboard.Type.Level; + break; + case Bank: + leaderboardType = Leaderboard.Type.Bank; + break; + case Votes: + leaderboardType = Leaderboard.Type.Votes; + break; + } + + hologramLines.add(messageManager.replaceMessage(null, + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Header"))); + + for (int i = 0; i < 10; i++) { + Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); + + if (leaderboard == null) { + hologramLines.add(messageManager.replaceMessage(null, + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Unclaimed") + .replace("%position", "" + (i + 1)))); + } else { + 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) { + IslandLevel level = visit.getLevel(); + hologramLines.add(ChatColor.translateAlternateColorCodes('&', + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) + .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints())))); + } else if (type == HologramType.Bank) { + hologramLines.add(ChatColor.translateAlternateColorCodes('&', + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%balance", + "" + NumberUtil.formatNumberByDecimal(visit.getBankBalance())))); + } else if (type == HologramType.Votes) { + hologramLines.add(ChatColor.translateAlternateColorCodes('&', + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%votes", + "" + NumberUtil.formatNumberByDecimal(visit.getVoters().size())))); + } + } + } + + 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 holograms = hologram.getHolograms(); + + for (Iterator it = holograms.iterator(); it.hasNext(); ) { + it.next().remove(); + } + + hologramStorage.remove(hologram); + } + } + + public void removeHolograms() { + for (Hologram hologramList : hologramStorage) { + List holograms = hologramList.getHolograms(); + + for (Iterator it = holograms.iterator(); it.hasNext(); ) { + it.next().remove(); + } + } + } + + public void removeWorldHolograms() { + FileManager fileManager = skyblock.getFileManager(); + + List locations = new ArrayList<>(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + for (HologramType hologramTypeList : HologramType.values()) { + 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 entities = worldList.getEntities(); + + for (Iterator 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.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; + } + + Leaderboard.Type leaderboardType = null; + + switch (hologramTypeList) { + case Level: + leaderboardType = Leaderboard.Type.Level; + break; + case Bank: + leaderboardType = Leaderboard.Type.Bank; + break; + case Votes: + leaderboardType = Leaderboard.Type.Votes; + break; + } + + for (int i = 0; i < 10; i++) { + Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); + int hologramLine = 10 - i; + + if (leaderboard == null) { + hologram.setLine(hologramLine, messageManager.replaceMessage(null, + configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Unclaimed") + .replace("%position", "" + (i + 1)))); + } else { + 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) { + IslandLevel level = visit.getLevel(); + hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) + .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints())))); + } else if (hologramTypeList == HologramType.Bank) { + hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%balance", + "" + NumberUtil.formatNumberByDecimal(visit.getBankBalance())))); + } else if (hologramTypeList == HologramType.Votes) { + hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%votes", + "" + NumberUtil.formatNumberByDecimal(visit.getVoters().size())))); + } + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/HologramType.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/HologramType.java new file mode 100644 index 00000000..732132ae --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/hologram/HologramType.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.hologram; + +public enum HologramType { + + Level, Bank, Votes + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/Invite.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/Invite.java new file mode 100644 index 00000000..be7e66be --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/Invite.java @@ -0,0 +1,50 @@ +package com.songoda.skyblock.invite; + +import org.bukkit.entity.Player; + +import java.util.UUID; + +public class Invite { + + private UUID playerUUID; + private UUID senderUUID; + private UUID islandOwnerUUID; + private String senderName; + private int time; + + public Invite(Player player, Player sender, UUID islandOwnerUUID, int time) { + this.playerUUID = player.getUniqueId(); + this.senderUUID = sender.getUniqueId(); + this.senderName = sender.getName(); + this.islandOwnerUUID = islandOwnerUUID; + this.time = time; + } + + public UUID getPlayerUUID() { + return playerUUID; + } + + public UUID getSenderUUID() { + return senderUUID; + } + + public UUID getOwnerUUID() { + return islandOwnerUUID; + } + + public void setOwnerUUID(UUID islandOwnerUUID) { + this.islandOwnerUUID = islandOwnerUUID; + } + + public String getSenderName() { + return senderName; + } + + public int getTime() { + return time; + } + + public void setTime(int time) { + this.time = time; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/InviteManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/InviteManager.java new file mode 100644 index 00000000..5e2cb94c --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/InviteManager.java @@ -0,0 +1,58 @@ +package com.songoda.skyblock.invite; + +import com.songoda.skyblock.SkyBlock; +import org.bukkit.entity.Player; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class InviteManager { + + private Map inviteStorage = new HashMap<>(); + + public InviteManager(SkyBlock skyblock) { + new InviteTask(this, skyblock).runTaskTimerAsynchronously(skyblock, 0L, 20L); + } + + public Invite createInvite(Player player, Player sender, UUID owner, int time) { + Invite invite = new Invite(player, sender, owner, time); + inviteStorage.put(player.getUniqueId(), invite); + + return invite; + } + + public void removeInvite(UUID uuid) { + if (hasInvite(uuid)) { + inviteStorage.remove(uuid); + } + } + + public void tranfer(UUID uuid1, UUID uuid2) { + Map islandInvites = getInvites(); + + for (UUID islandInviteList : islandInvites.keySet()) { + Invite invite = islandInvites.get(islandInviteList); + + if (invite.getOwnerUUID().equals(uuid1)) { + invite.setOwnerUUID(uuid2); + } + } + } + + public Map getInvites() { + return inviteStorage; + } + + public Invite getInvite(UUID uuid) { + if (hasInvite(uuid)) { + return inviteStorage.get(uuid); + } + + return null; + } + + public boolean hasInvite(UUID uuid) { + return inviteStorage.containsKey(uuid); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/InviteTask.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/InviteTask.java new file mode 100644 index 00000000..4c13e6e2 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/invite/InviteTask.java @@ -0,0 +1,84 @@ +package com.songoda.skyblock.invite; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.ChatComponent; +import com.songoda.skyblock.utils.version.Sounds; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +import java.io.File; + +public class InviteTask extends BukkitRunnable { + + private final SkyBlock skyblock; + private final InviteManager inviteManager; + + protected InviteTask(InviteManager inviteManager, SkyBlock skyblock) { + this.inviteManager = inviteManager; + this.skyblock = skyblock; + } + + @Override + public void run() { + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + for (Player all : Bukkit.getOnlinePlayers()) { + if (inviteManager.hasInvite(all.getUniqueId())) { + Invite invite = inviteManager.getInvite(all.getUniqueId()); + invite.setTime(invite.getTime() - 1); + + if (invite.getTime() == 0) { + Player targetPlayer = Bukkit.getServer().getPlayer(invite.getOwnerUUID()); + + if (targetPlayer != null) { + targetPlayer.spigot() + .sendMessage(new ChatComponent( + messageManager.replaceMessage(targetPlayer, + configLoad + .getString( + "Command.Island.Invite.Invited.Sender.Expired.Message") + .replace("%player", all.getName()) + " "), + false, null, null, null) + .addExtra(new ChatComponent( + configLoad + .getString("Command.Island.Invite.Invited.Word.Resend") + .toUpperCase(), + true, ChatColor.AQUA, + new ClickEvent(ClickEvent.Action.RUN_COMMAND, + "/island invite " + all.getName()), + new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(ChatColor + .translateAlternateColorCodes('&', configLoad + .getString( + "Command.Island.Invite.Invited.Word.Tutorial") + .replace("%action", + configLoad.getString( + "Command.Island.Invite.Invited.Word.Resend")))) + .create())))); + soundManager.playSound(targetPlayer, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + + messageManager.sendMessage(all, + configLoad.getString("Command.Island.Invite.Invited.Target.Expired.Message") + .replace("%player", invite.getSenderName())); + soundManager.playSound(all, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + inviteManager.removeInvite(all.getUniqueId()); + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/Island.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/Island.java new file mode 100644 index 00000000..8e870ac7 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/Island.java @@ -0,0 +1,828 @@ +package com.songoda.skyblock.island; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.event.island.*; +import com.songoda.skyblock.api.utils.APIUtil; +import com.songoda.skyblock.ban.Ban; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.WorldBorder; +import com.songoda.skyblock.visit.Visit; +import org.apache.commons.lang.WordUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.OfflinePlayer; +import org.bukkit.WeatherType; +import org.bukkit.block.Biome; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; + +public class Island { + + private final SkyBlock skyblock; + private final com.songoda.skyblock.api.island.Island apiWrapper; + + private Map> islandSettings = new HashMap<>(); + private List islandLocations = new ArrayList<>(); + private Set coopPlayers = new HashSet<>(); + + private UUID islandUUID; + private UUID ownerUUID; + private IslandLevel level; + private int size; + private boolean deleted = false; + + public Island(OfflinePlayer player) { + this.skyblock = SkyBlock.getInstance(); + + FileManager fileManager = skyblock.getFileManager(); + + this.islandUUID = UUID.randomUUID(); + this.ownerUUID = player.getUniqueId(); + this.size = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getInt("Island.Size.Minimum"); + + if (this.size > 1000) { + this.size = 50; + } + + level = new IslandLevel(getOwnerUUID(), skyblock); + + File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); + + Config config = fileManager.getConfig(new File(configFile, ownerUUID + ".yml")); + Config defaultSettingsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "settings.yml")); + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + + FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); + + if (fileManager.isFileExist(new File(configFile, ownerUUID + ".yml"))) { + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString("UUID") != null) { + islandUUID = UUID.fromString(configLoad.getString("UUID")); + } else { + configLoad.set("UUID", islandUUID.toString()); + } + + if (configLoad.getString("Size") != null) { + size = configLoad.getInt("Size"); + } + + if (configLoad.getString("Settings") != null) { + configLoad.set("Settings", null); + } + + if (configLoad.getString("Levelling.Materials") != null) { + configLoad.set("Levelling.Materials", null); + } + + if (configLoad.getString("Border") == null) { + configLoad.set("Border.Enable", true); + configLoad.set("Border.Color", WorldBorder.Color.Blue.name()); + } + + if (configLoad.getString("Members") != null) { + List members = configLoad.getStringList("Members"); + + for (int i = 0; i < members.size(); i++) { + String member = members.get(i); + Config playerDataConfig = new FileManager.Config(fileManager, + new File(skyblock.getDataFolder().toString() + "/player-data", member + ".yml")); + FileConfiguration playerDataConfigLoad = playerDataConfig.getFileConfiguration(); + + if (playerDataConfigLoad.getString("Island.Owner") == null + || !playerDataConfigLoad.getString("Island.Owner").equals(ownerUUID.toString())) { + members.remove(member); + } + } + + configLoad.set("Members", members); + } + + if (configLoad.getString("Operators") != null) { + List operators = configLoad.getStringList("Operators"); + + for (int i = 0; i < operators.size(); i++) { + String operator = operators.get(i); + Config playerDataConfig = new FileManager.Config(fileManager, + new File(skyblock.getDataFolder().toString() + "/player-data", operator + ".yml")); + FileConfiguration playerDataConfigLoad = playerDataConfig.getFileConfiguration(); + + if (playerDataConfigLoad.getString("Island.Owner") == null + || !playerDataConfigLoad.getString("Island.Owner").equals(ownerUUID.toString())) { + operators.remove(operator); + } + } + + configLoad.set("Operators", operators); + } + + Config settingsDataConfig = null; + + if (fileManager.isFileExist(new File(skyblock.getDataFolder().toString() + "/setting-data", + getOwnerUUID().toString() + ".yml"))) { + settingsDataConfig = fileManager.getConfig(new File( + skyblock.getDataFolder().toString() + "/setting-data", getOwnerUUID().toString() + ".yml")); + } + + for (IslandRole roleList : IslandRole.values()) { + List settings = new ArrayList<>(); + + for (String settingList : defaultSettingsConfig.getFileConfiguration() + .getConfigurationSection("Settings." + roleList.name()).getKeys(false)) { + if (settingsDataConfig == null || settingsDataConfig.getFileConfiguration() + .getString("Settings." + roleList.name() + "." + settingList) == null) { + settings.add(new IslandSetting(settingList, defaultSettingsConfig.getFileConfiguration() + .getBoolean("Settings." + roleList.name() + "." + settingList))); + } else { + settings.add(new IslandSetting(settingList, settingsDataConfig.getFileConfiguration() + .getBoolean("Settings." + roleList.name() + "." + settingList))); + } + } + + islandSettings.put(roleList, settings); + } + } else { + FileConfiguration configLoad = config.getFileConfiguration(); + + configLoad.set("UUID", islandUUID.toString()); + configLoad.set("Visitor.Open", mainConfigLoad.getBoolean("Island.Visitor.Open")); + configLoad.set("Border.Enable", true); + configLoad.set("Border.Color", WorldBorder.Color.Blue.name()); + configLoad.set("Biome.Type", mainConfigLoad.getString("Island.Biome.Default.Type").toUpperCase()); + configLoad.set("Weather.Synchronised", mainConfigLoad.getBoolean("Island.Weather.Default.Synchronised")); + configLoad.set("Weather.Time", mainConfigLoad.getInt("Island.Weather.Default.Time")); + configLoad.set("Weather.Weather", mainConfigLoad.getString("Island.Weather.Default.Weather").toUpperCase()); + configLoad.set("Ownership.Original", ownerUUID.toString()); + + for (IslandRole roleList : IslandRole.values()) { + List settings = new ArrayList<>(); + + for (String settingList : defaultSettingsConfig.getFileConfiguration() + .getConfigurationSection("Settings." + roleList.name()).getKeys(false)) { + settings.add(new IslandSetting(settingList, defaultSettingsConfig.getFileConfiguration() + .getBoolean("Settings." + roleList.name() + "." + settingList))); + } + + islandSettings.put(roleList, settings); + } + + save(); + + Player onlinePlayer = Bukkit.getServer().getPlayer(ownerUUID); + + if (!skyblock.getPlayerDataManager().hasPlayerData(onlinePlayer)) { + skyblock.getPlayerDataManager().createPlayerData(onlinePlayer); + } + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(onlinePlayer); + playerData.setPlaytime(0); + playerData.setOwner(ownerUUID); + playerData.setMemberSince(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date())); + playerData.save(); + } + + if (!mainConfigLoad.getBoolean("Island.Coop.Unload")) { + File coopDataFile = new File(skyblock.getDataFolder().toString() + "/coop-data", + getOwnerUUID().toString() + ".yml"); + + if (fileManager.isFileExist(coopDataFile)) { + Config coopDataConfig = fileManager.getConfig(coopDataFile); + FileConfiguration coopDataConfigLoad = coopDataConfig.getFileConfiguration(); + + if (coopDataConfigLoad.getString("CoopPlayers") != null) { + for (String coopPlayerList : coopDataConfigLoad.getStringList("CoopPlayers")) { + coopPlayers.add(UUID.fromString(coopPlayerList)); + } + } + } + } + + this.apiWrapper = new com.songoda.skyblock.api.island.Island(this, player); + } + + public UUID getIslandUUID() { + return islandUUID; + } + + public UUID getOwnerUUID() { + return ownerUUID; + } + + public void setOwnerUUID(UUID uuid) { + getVisit().setOwnerUUID(uuid); + this.ownerUUID = uuid; + } + + public UUID getOriginalOwnerUUID() { + return UUID + .fromString( + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Ownership.Original")); + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + if (size > 1000 || size < 0) { + size = 50; + } + + this.size = size; + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Size", size); + } + + public double getRadius() { + return (size / 2) + 0.5; + } + + public boolean hasPassword() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Ownership.Password") != null; + } + + public String getPassword() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Ownership.Password"); + } + + public void setPassword(String password) { + IslandPasswordChangeEvent islandPasswordChangeEvent = new IslandPasswordChangeEvent(getAPIWrapper(), password); + Bukkit.getServer().getPluginManager().callEvent(islandPasswordChangeEvent); + + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Ownership.Password", islandPasswordChangeEvent.getPassword()); + } + + public Location getLocation(IslandWorld world, IslandEnvironment environment) { + for (IslandLocation islandLocationList : islandLocations) { + if (islandLocationList.getWorld() == world && islandLocationList.getEnvironment() == environment) { + return islandLocationList.getLocation(); + } + } + + return null; + } + + public IslandLocation getIslandLocation(IslandWorld world, IslandEnvironment environment) { + for (IslandLocation islandLocationList : islandLocations) { + if (islandLocationList.getWorld() == world && islandLocationList.getEnvironment() == environment) { + return islandLocationList; + } + } + + return null; + } + + public void addLocation(IslandWorld world, IslandEnvironment environment, Location location) { + islandLocations.add(new IslandLocation(world, environment, location)); + } + + public void setLocation(IslandWorld world, IslandEnvironment environment, Location location) { + for (IslandLocation islandLocationList : islandLocations) { + if (islandLocationList.getWorld() == world && islandLocationList.getEnvironment() == environment) { + Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> + Bukkit.getServer().getPluginManager().callEvent(new IslandLocationChangeEvent(getAPIWrapper(), + new com.songoda.skyblock.api.island.IslandLocation( + APIUtil.fromImplementation(environment), APIUtil.fromImplementation(world), + location)))); + + FileManager fileManager = skyblock.getFileManager(); + + if (environment == IslandEnvironment.Island) { + fileManager.setLocation( + fileManager + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + getOwnerUUID().toString() + ".yml")), + "Location." + world.name() + "." + environment.name(), location, true); + } else { + fileManager.setLocation( + fileManager + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + getOwnerUUID().toString() + ".yml")), + "Location." + world.name() + ".Spawn." + environment.name(), location, true); + } + + islandLocationList.setLocation(location); + + break; + } + } + } + + public boolean isBorder() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getBoolean("Border.Enable"); + } + + public void setBorder(boolean border) { + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Border.Enable", border); + } + + public WorldBorder.Color getBorderColor() { + return WorldBorder.Color.valueOf(skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Border.Color")); + } + + public void setBorderColor(WorldBorder.Color color) { + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Border.Color", color.name()); + } + + public Biome getBiome() { + return Biome.valueOf(skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Biome.Type")); + } + + public void setBiome(Biome biome) { + IslandBiomeChangeEvent islandBiomeChangeEvent = new IslandBiomeChangeEvent(getAPIWrapper(), biome); + Bukkit.getServer().getPluginManager().callEvent(islandBiomeChangeEvent); + + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Biome.Type", islandBiomeChangeEvent.getBiome().name()); + } + + public String getBiomeName() { + return WordUtils.capitalizeFully(getBiome().name().replace("_", " ")); + } + + public boolean isWeatherSynchronized() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getBoolean("Weather.Synchronised"); + } + + public void setWeatherSynchronized(boolean sync) { + IslandWeatherChangeEvent islandWeatherChangeEvent = new IslandWeatherChangeEvent(getAPIWrapper(), getWeather(), + getTime(), sync); + Bukkit.getServer().getPluginManager().callEvent(islandWeatherChangeEvent); + + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Weather.Synchronised", sync); + } + + public WeatherType getWeather() { + String weatherTypeName = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Weather.Weather"); + + WeatherType weatherType; + + if (weatherTypeName == null || weatherTypeName.isEmpty() || WeatherType.valueOf(weatherTypeName) == null) { + weatherType = WeatherType.CLEAR; + } else { + weatherType = WeatherType.valueOf(weatherTypeName); + } + + return weatherType; + } + + public void setWeather(WeatherType weatherType) { + IslandWeatherChangeEvent islandWeatherChangeEvent = new IslandWeatherChangeEvent(getAPIWrapper(), weatherType, + getTime(), isWeatherSynchronized()); + Bukkit.getServer().getPluginManager().callEvent(islandWeatherChangeEvent); + + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Weather.Weather", weatherType.name()); + } + + public String getWeatherName() { + return WordUtils.capitalize(getWeather().name().toLowerCase()); + } + + public int getTime() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getInt("Weather.Time"); + } + + public void setTime(int time) { + IslandWeatherChangeEvent islandWeatherChangeEvent = new IslandWeatherChangeEvent(getAPIWrapper(), getWeather(), + time, isWeatherSynchronized()); + Bukkit.getServer().getPluginManager().callEvent(islandWeatherChangeEvent); + + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Weather.Time", time); + } + + public Set getCoopPlayers() { + return coopPlayers; + } + + public void addCoopPlayer(UUID uuid) { + coopPlayers.add(uuid); + Bukkit.getScheduler().runTaskAsynchronously(skyblock, this::save); + } + + public void removeCoopPlayer(UUID uuid) { + coopPlayers.remove(uuid); + Bukkit.getScheduler().runTaskAsynchronously(skyblock, this::save); + } + + public boolean isCoopPlayer(UUID uuid) { + return coopPlayers.contains(uuid); + } + + public Set getRole(IslandRole role) { + Set islandRoles = new HashSet<>(); + + if (role == IslandRole.Owner) { + islandRoles.add(getOwnerUUID()); + } else { + Config config = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString(role.name() + "s") != null) { + for (String playerList : configLoad.getStringList(role.name() + "s")) { + islandRoles.add(UUID.fromString(playerList)); + } + } + } + + return islandRoles; + } + + public IslandRole getRole(OfflinePlayer player) { + for (IslandRole role : IslandRole.values()) + if (getRole(role).contains(player.getUniqueId())) + return role; + + return IslandRole.Visitor; + } + + public boolean setRole(IslandRole role, UUID uuid) { + if (!(role == IslandRole.Visitor || role == IslandRole.Coop || role == IslandRole.Owner)) { + if (!hasRole(role, uuid)) { + if (role == IslandRole.Member) { + if (hasRole(IslandRole.Operator, uuid)) { + Bukkit.getServer().getPluginManager().callEvent(new IslandRoleChangeEvent(getAPIWrapper(), + Bukkit.getServer().getOfflinePlayer(uuid), APIUtil.fromImplementation(role))); + removeRole(IslandRole.Operator, uuid); + } + } else if (role == IslandRole.Operator) { + if (hasRole(IslandRole.Member, uuid)) { + Bukkit.getServer().getPluginManager().callEvent(new IslandRoleChangeEvent(getAPIWrapper(), + Bukkit.getServer().getOfflinePlayer(uuid), APIUtil.fromImplementation(role))); + removeRole(IslandRole.Member, uuid); + } + } + + Config config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + getOwnerUUID().toString() + ".yml")); + File configFile = config.getFile(); + FileConfiguration configLoad = config.getFileConfiguration(); + + List islandMembers; + + if (configLoad.getString(role.name() + "s") == null) { + islandMembers = new ArrayList<>(); + } else { + islandMembers = configLoad.getStringList(role.name() + "s"); + } + + islandMembers.add(uuid.toString()); + configLoad.set(role.name() + "s", islandMembers); + + try { + configLoad.save(configFile); + } catch (IOException e) { + e.printStackTrace(); + } + + getVisit().setMembers(getRole(IslandRole.Member).size() + getRole(IslandRole.Operator).size() + 1); + + return true; + } + } + + return false; + } + + public boolean removeRole(IslandRole role, UUID uuid) { + if (!(role == IslandRole.Visitor || role == IslandRole.Coop || role == IslandRole.Owner)) { + if (hasRole(role, uuid)) { + Config config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + getOwnerUUID().toString() + ".yml")); + File configFile = config.getFile(); + FileConfiguration configLoad = config.getFileConfiguration(); + List islandMembers = configLoad.getStringList(role.name() + "s"); + + islandMembers.remove(uuid.toString()); + configLoad.set(role.name() + "s", islandMembers); + + try { + configLoad.save(configFile); + } catch (IOException e) { + e.printStackTrace(); + } + + getVisit().setMembers(getRole(IslandRole.Member).size() + getRole(IslandRole.Operator).size() + 1); + + return true; + } + } + + return false; + } + + public boolean hasRole(IslandRole role, UUID uuid) { + if (role == IslandRole.Owner) { + return getOwnerUUID().equals(uuid); + } + + return getRole(role).contains(uuid); + } + + public void setUpgrade(Player player, Upgrade.Type type, boolean status) { + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Upgrade." + type.name(), status); + + Bukkit.getServer().getPluginManager() + .callEvent(new IslandUpgradeEvent(getAPIWrapper(), player, APIUtil.fromImplementation(type))); + } + + public void removeUpgrade(Upgrade.Type type) { + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Upgrade." + type.name(), null); + } + + public boolean hasUpgrade(Upgrade.Type type) { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Upgrade." + type.name()) != null; + } + + public boolean isUpgrade(Upgrade.Type type) { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getBoolean("Upgrade." + type.name()); + } + + public IslandSetting getSetting(IslandRole role, String setting) { + if (islandSettings.containsKey(role)) { + for (IslandSetting settingList : islandSettings.get(role)) { + if (settingList.getName().equalsIgnoreCase(setting)) { + return settingList; + } + } + } + + return new IslandSetting(setting, true); //TODO: Default setting value + } + + public List getSettings(IslandRole role) { + if (islandSettings.containsKey(role)) { + return islandSettings.get(role); + } + + return null; + } + + public double getBankBalance() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getDouble("Bank.Balance"); + } + + public void addToBank(double value) { + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager + .getConfig(new File(skyblock.getDataFolder().toString() + "/island-data", ownerUUID.toString() + ".yml")); + + value = getBankBalance() + value; + config.getFileConfiguration().set("Bank.Balance", value); + + try { + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void removeFromBank(double value) { + addToBank(-value); + } + + public boolean isOpen() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getBoolean("Visitor.Open"); + } + + public void setOpen(boolean open) { + IslandOpenEvent islandOpenEvent = new IslandOpenEvent(getAPIWrapper(), open); + Bukkit.getServer().getPluginManager().callEvent(islandOpenEvent); + + if (!islandOpenEvent.isCancelled()) { + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Visitor.Open", open); + getVisit().setOpen(open); + } + } + + public List getMessage(IslandMessage message) { + List islandMessage = new ArrayList<>(); + + Config config = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString("Visitor." + message.name() + ".Message") != null) { + islandMessage = configLoad.getStringList("Visitor." + message.name() + ".Message"); + } + + return islandMessage; + } + + public String getMessageAuthor(IslandMessage message) { + Config config = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString("Visitor." + message.name() + ".Author") != null) { + return configLoad.getString("Visitor." + message.name() + ".Author"); + } + + return ""; + } + + public void setMessage(IslandMessage message, String author, List lines) { + IslandMessageChangeEvent islandMessageChangeEvent = new IslandMessageChangeEvent(getAPIWrapper(), + APIUtil.fromImplementation(message), lines, author); + Bukkit.getServer().getPluginManager().callEvent(islandMessageChangeEvent); + + if (!islandMessageChangeEvent.isCancelled()) { + Config config = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + configLoad.set("Visitor." + message.name() + ".Message", islandMessageChangeEvent.getLines()); + configLoad.set("Visitor." + message.name() + ".Author", islandMessageChangeEvent.getAuthor()); + + if (message == IslandMessage.Signature) { + getVisit().setSignature(lines); + } + } + } + + public boolean hasStructure() { + return getStructure() != null; + } + + public String getStructure() { + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().getString("Structure"); + } + + public void setStructure(String structure) { + skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Structure", structure); + } + + public Visit getVisit() { + return skyblock.getVisitManager().getIsland(getOwnerUUID()); + } + + public Ban getBan() { + return skyblock.getBanManager().getIsland(getOwnerUUID()); + } + + public IslandLevel getLevel() { + return level; + } + + public boolean isDeleted() { + return deleted; + } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + + public void save() { + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager + .getConfig(new File(skyblock.getDataFolder().toString() + "/island-data", ownerUUID.toString() + ".yml")); + + try { + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + + config = fileManager + .getConfig(new File(skyblock.getDataFolder().toString() + "/setting-data", ownerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + for (IslandRole roleList : islandSettings.keySet()) { + for (IslandSetting settingList : islandSettings.get(roleList)) { + configLoad.set("Settings." + roleList + "." + settingList.getName(), settingList.getStatus()); + } + } + + try { + configLoad.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Coop.Unload")) { + config = fileManager + .getConfig(new File(skyblock.getDataFolder().toString() + "/coop-data", ownerUUID.toString() + ".yml")); + configLoad = config.getFileConfiguration(); + + List coopPlayersAsString = new ArrayList<>(); + + for (UUID coopPlayerList : coopPlayers) { + coopPlayersAsString.add(coopPlayerList.toString()); + } + + configLoad.set("CoopPlayers", coopPlayersAsString); + + try { + configLoad.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + getLevel().save(); + } + + public boolean isRegionUnlocked(Player player, String type) { + FileManager fileManager = skyblock.getFileManager(); + SoundManager soundManager = skyblock.getSoundManager(); + MessageManager messageManager = skyblock.getMessageManager(); + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + Config islandData = fileManager + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), + ownerUUID.toString() + ".yml")); + FileConfiguration configLoadIslandData = islandData.getFileConfiguration(); + double price = configLoad.getDouble("Island.World." + type + ".UnlockPrice"); + + boolean unlocked = configLoadIslandData.getBoolean("Unlocked." + type); + if (price == -1) { + configLoadIslandData.set("Unlocked." + type, true); + unlocked = true; + } + + if (!unlocked) { + messageManager.sendMessage(player, + fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration() + .getString("Island.Unlock." + type + ".Message").replace( + "%cost%", NumberUtil.formatNumberByDecimal(price))); + + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + player.setVelocity(player.getLocation().getDirection().multiply(-.50)); + } + return unlocked; + } + + public com.songoda.skyblock.api.island.Island getAPIWrapper() { + return apiWrapper; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandEnvironment.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandEnvironment.java new file mode 100644 index 00000000..5e441547 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandEnvironment.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.island; + +public enum IslandEnvironment { + + Island, Visitor, Main + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandLevel.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandLevel.java new file mode 100644 index 00000000..80f175ae --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandLevel.java @@ -0,0 +1,182 @@ +package com.songoda.skyblock.island; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class IslandLevel { + + private final SkyBlock skyblock; + + private UUID ownerUUID; + + private long lastCalculatedLevel = 0; + private long lastCalculatedPoints = 0; + + private Map materials; + + public IslandLevel(UUID ownerUUID, SkyBlock skyblock) { + this.skyblock = skyblock; + this.ownerUUID = ownerUUID; + + Config config = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/level-data"), ownerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Map materials = new HashMap<>(); + + if (configLoad.getString("Levelling.Materials") != null) { + for (String materialList : configLoad.getConfigurationSection("Levelling.Materials").getKeys(false)) { + if (configLoad.getString("Levelling.Materials." + materialList + ".Amount") != null) { + materials.put(materialList, configLoad.getLong("Levelling.Materials." + materialList + ".Amount")); + } + } + } + + this.materials = materials; + } + + public void setOwnerUUID(UUID ownerUUID) { + this.ownerUUID = ownerUUID; + } + + public long getPoints() { + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + long pointsEarned = 0; + + for (String materialList : this.materials.keySet()) { + long materialAmount = this.materials.get(materialList); + + if (configLoad.getString("Materials." + materialList + ".Points") != null) { + long pointsRequired = config.getFileConfiguration().getLong("Materials." + materialList + ".Points"); + + if (pointsRequired != 0) { + pointsEarned = pointsEarned + (materialAmount * pointsRequired); + } + } + } + + return pointsEarned; + } + + public long getMaterialPoints(String material) { + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + long pointsEarned = 0; + + if (this.materials.containsKey(material)) { + long materialAmount = this.materials.get(material); + + if (configLoad.getString("Materials." + material + ".Points") != null) { + long pointsRequired = configLoad.getLong("Materials." + material + ".Points"); + + if (pointsRequired != 0) { + pointsEarned = materialAmount * pointsRequired; + } + } + } + + return pointsEarned; + } + + public long getLevel() { + long division = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getLong("Island.Levelling.Division"); + + if (division == 0) { + division = 1; + } + + return getPoints() / division; + } + + public void setMaterialAmount(String material, long amount) { + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/level-data"), + ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Levelling.Materials." + material + ".Amount", amount); + + this.materials.put(material, amount); + } + + public long getMaterialAmount(String material) { + if (this.materials.containsKey(material)) { + return this.materials.get(material); + } + + return 0; + } + + public void removeMaterial(String material) { + skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/level-data"), + ownerUUID.toString() + ".yml")) + .getFileConfiguration().set("Levelling.Materials." + material, null); + + this.materials.remove(material); + } + + public boolean hasMaterial(String material) { + return this.materials.containsKey(material); + } + + public boolean hasMaterials() { + return this.materials.size() != 0; + } + + public Map getMaterials() { + return this.materials; + } + + public void setMaterials(Map materials) { + Config config = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/level-data"), ownerUUID.toString() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + configLoad.set("Levelling.Materials", null); + + for (String materialList : materials.keySet()) { + configLoad.set("Levelling.Materials." + materialList + ".Amount", materials.get(materialList)); + } + + this.materials = materials; + } + + public long getLastCalculatedPoints() { + return this.lastCalculatedPoints; + } + + public void setLastCalculatedPoints(long lastCalculatedPoints) { + this.lastCalculatedPoints = lastCalculatedPoints; + } + + public long getLastCalculatedLevel() { + return this.lastCalculatedLevel; + } + + public void setLastCalculatedLevel(long lastCalculatedLevel) { + this.lastCalculatedLevel = lastCalculatedLevel; + } + + public void save() { + Config config = skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/level-data"), ownerUUID.toString() + ".yml")); + File configFile = config.getFile(); + FileConfiguration configLoad = config.getFileConfiguration(); + + try { + configLoad.save(configFile); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandLocation.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandLocation.java new file mode 100644 index 00000000..510ba4e3 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandLocation.java @@ -0,0 +1,73 @@ +package com.songoda.skyblock.island; + +import com.songoda.skyblock.SkyBlock; +import org.bukkit.Location; + +public class IslandLocation { + + private IslandWorld world; + private IslandEnvironment environment; + + private double x; + private double y; + private double z; + + private float yaw; + private float pitch; + + public IslandLocation(IslandWorld world, IslandEnvironment environment, org.bukkit.Location location) { + this.world = world; + this.environment = environment; + + if (location == null) + return; + + this.x = location.getX(); + this.y = location.getY(); + this.z = location.getZ(); + + this.yaw = location.getYaw(); + this.pitch = location.getPitch(); + } + + public IslandWorld getWorld() { + return this.world; + } + + public IslandEnvironment getEnvironment() { + return this.environment; + } + + public double getX() { + return this.x; + } + + public double getY() { + return this.y; + } + + public double getZ() { + return this.z; + } + + public float getYaw() { + return this.yaw; + } + + public float getPitch() { + return this.pitch; + } + + public Location getLocation() { + return new Location(SkyBlock.getInstance().getWorldManager().getWorld(world), x, y, z, yaw, pitch); + } + + public void setLocation(Location location) { + this.x = location.getX(); + this.y = location.getY(); + this.z = location.getZ(); + + this.yaw = location.getYaw(); + this.pitch = location.getPitch(); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandManager.java similarity index 94% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandManager.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandManager.java index a4d29f7f..4f2fd2c0 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandManager.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandManager.java @@ -1,42 +1,38 @@ -package me.goodandevil.skyblock.island; +package com.songoda.skyblock.island; import com.google.common.base.Preconditions; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.island.*; -import me.goodandevil.skyblock.ban.BanManager; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.invite.Invite; -import me.goodandevil.skyblock.invite.InviteManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.scoreboard.Scoreboard; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.structure.Structure; -import me.goodandevil.skyblock.structure.StructureManager; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.upgrade.UpgradeManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.structure.SchematicUtil; -import me.goodandevil.skyblock.utils.structure.StructureUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.SBiome; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.utils.world.WorldBorder; -import me.goodandevil.skyblock.utils.world.block.BlockDegreesType; -import me.goodandevil.skyblock.visit.VisitManager; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.event.island.*; +import com.songoda.skyblock.ban.BanManager; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.invite.Invite; +import com.songoda.skyblock.invite.InviteManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.scoreboard.Scoreboard; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.structure.Structure; +import com.songoda.skyblock.structure.StructureManager; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.upgrade.UpgradeManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.structure.SchematicUtil; +import com.songoda.skyblock.utils.structure.StructureUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.SBiome; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.utils.world.WorldBorder; +import com.songoda.skyblock.utils.world.block.BlockDegreesType; +import com.songoda.skyblock.visit.VisitManager; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.*; import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.configuration.ConfigurationSection; @@ -160,9 +156,8 @@ public class IslandManager { island.setStructure(structure.getName()); islandStorage.put(player.getUniqueId(), island); - for (IslandWorld worldList : IslandWorld.getIslandWorlds()) { + for (IslandWorld worldList : IslandWorld.getIslandWorlds()) prepareIsland(island, worldList); - } if (!visitManager.hasIsland(island.getOwnerUUID())) { visitManager.createIsland(island.getOwnerUUID(), @@ -176,9 +171,8 @@ public class IslandManager { island.getMessage(IslandMessage.Signature), island.isOpen()); } - if (!banManager.hasIsland(island.getOwnerUUID())) { + if (!banManager.hasIsland(island.getOwnerUUID())) banManager.createIsland(island.getOwnerUUID()); - } Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); @@ -207,12 +201,11 @@ public class IslandManager { Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); FileConfiguration configLoad = config.getFileConfiguration(); - if (configLoad.getBoolean("Island.Creation.Cooldown.Creation.Enable")) { - if (!player.hasPermission("fabledskyblock.bypass.cooldown") && !player.hasPermission("fabledskyblock.bypass.*") - && !player.hasPermission("fabledskyblock.*")) { - skyblock.getCooldownManager().createPlayer(CooldownType.Creation, player); - } - } + if (configLoad.getBoolean("Island.Creation.Cooldown.Creation.Enable") + && !player.hasPermission("fabledskyblock.bypass.cooldown") + && !player.hasPermission("fabledskyblock.bypass.*") + && !player.hasPermission("fabledskyblock.*")) + skyblock.getCooldownManager().createPlayer(CooldownType.Creation, player); Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> Bukkit.getServer().getPluginManager().callEvent(new IslandCreateEvent(island.getAPIWrapper(), player))); @@ -220,11 +213,12 @@ public class IslandManager { skyblock.getPlayerDataManager().getPlayerData(player).setIsland(player.getUniqueId()); if (scoreboardManager != null) { + Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + Scoreboard scoreboard = scoreboardManager.getScoreboard(player); - scoreboard.cancel(); scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); - scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); + languageConfig.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); + scoreboard.setDisplayList(languageConfig.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); scoreboard.run(); } @@ -255,9 +249,8 @@ public class IslandManager { .setBiome(island, biome), 20L); // Recalculate island level after 5 seconds - if (fileManager.getConfig(new File(this.skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Levelling.ScanAutomatically")) { + if (configLoad.getBoolean("Island.Levelling.ScanAutomatically")) Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> skyblock.getLevellingManager().calculatePoints(null, island), 100L); - } return true; } @@ -419,7 +412,6 @@ public class IslandManager { if (scoreboardManager != null) { Scoreboard scoreboard = scoreboardManager.getScoreboard(all); - scoreboard.cancel(); scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Tutorial.Displayname"))); scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Tutorial.Displaylines")); @@ -614,7 +606,6 @@ public class IslandManager { try { if (islandMembers == 1 && islandVisitors == 0) { Scoreboard scoreboard = scoreboardManager.getScoreboard(all); - scoreboard.cancel(); scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Solo.Displayname"))); scoreboard.setDisplayList( @@ -622,7 +613,6 @@ public class IslandManager { scoreboard.run(); } else if (islandVisitors == 0) { Scoreboard scoreboard = scoreboardManager.getScoreboard(all); - scoreboard.cancel(); scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Team.Displayname"))); scoreboard.setDisplayList( @@ -797,7 +787,7 @@ public class IslandManager { /** * Unlocks an island world and pastes the island structure there * - * @param island The island to unlock for + * @param island The island to unlock for * @param islandWorld The island world type to unlock */ public void unlockIslandWorld(Island island, IslandWorld islandWorld) { @@ -820,7 +810,7 @@ public class IslandManager { /** * Checks if an island world is unlocked * - * @param island The island to check + * @param island The island to check * @param islandWorld The island world to check * @return true if the island world is unlocked, otherwise false */ @@ -891,7 +881,6 @@ public class IslandManager { if (targetPlayerData.getOwner() != null && targetPlayerData.getOwner().equals(island.getOwnerUUID())) { Scoreboard scoreboard = scoreboardManager.getScoreboard(all); - scoreboard.cancel(); if (islandMembers == 1) { scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', @@ -1063,10 +1052,7 @@ public class IslandManager { if (island.isCoopPlayer(player.getUniqueId()) && island.getSetting(IslandRole.Coop, setting).getStatus()) return true; - if (island.getSetting(IslandRole.Visitor, setting).getStatus()) - return true; - - return false; + return island.getSetting(IslandRole.Visitor, setting).getStatus(); } public boolean hasSetting(org.bukkit.Location location, IslandRole role, String setting) { @@ -1143,9 +1129,7 @@ public class IslandManager { org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(playerData.getIsland()); Island island = getIsland(offlinePlayer); - if (island != null) { - return island; - } + return island; } } @@ -1158,9 +1142,7 @@ public class IslandManager { if (playerDataManager.hasPlayerData(player)) { PlayerData playerData = playerDataManager.getPlayerData(player); - if (playerData.getIsland() != null) { - return true; - } + return playerData.getIsland() != null; } return false; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandMessage.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandMessage.java new file mode 100644 index 00000000..ea923ef5 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandMessage.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.island; + +public enum IslandMessage { + + Welcome, Signature, Sign + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandPosition.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandPosition.java new file mode 100644 index 00000000..ce67ed2c --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandPosition.java @@ -0,0 +1,35 @@ +package com.songoda.skyblock.island; + +public class IslandPosition { + + private IslandWorld world; + + private double x; + private double z; + + public IslandPosition(IslandWorld world, double x, double z) { + this.world = world; + this.x = x; + this.z = z; + } + + public IslandWorld getWorld() { + return this.world; + } + + public double getX() { + return this.x; + } + + public void setX(double x) { + this.x = x; + } + + public double getZ() { + return this.z; + } + + public void setZ(double z) { + this.z = z; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandRole.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandRole.java new file mode 100644 index 00000000..d33c4bc9 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandRole.java @@ -0,0 +1,7 @@ +package com.songoda.skyblock.island; + +public enum IslandRole { + + Coop, Visitor, Member, Operator, Owner + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandSetting.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandSetting.java new file mode 100644 index 00000000..38b63337 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandSetting.java @@ -0,0 +1,24 @@ +package com.songoda.skyblock.island; + +public class IslandSetting { + + private String name; + private boolean status; + + public IslandSetting(String name, boolean status) { + this.name = name; + this.status = status; + } + + public String getName() { + return this.name; + } + + public boolean getStatus() { + return this.status; + } + + public void setStatus(boolean status) { + this.status = status; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandWorld.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandWorld.java new file mode 100644 index 00000000..4471f1e0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/island/IslandWorld.java @@ -0,0 +1,56 @@ +package com.songoda.skyblock.island; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.World.Environment; + +import java.util.ArrayList; +import java.util.List; + +public enum IslandWorld { + + Normal, Nether, End; + + public static List getIslandWorlds() { + List islandWorlds = new ArrayList<>(); + + WorldManager worldManager = SkyBlock.getInstance().getWorldManager(); + if (worldManager.getWorld(Normal) != null) + islandWorlds.add(Normal); + + if (worldManager.getWorld(Nether) != null) + islandWorlds.add(Nether); + + if (worldManager.getWorld(End) != null) + islandWorlds.add(End); + + return islandWorlds; + } + + public Environment getUncheckedEnvironment() { + switch (this) { + case Normal: + return Environment.NORMAL; + case Nether: + return Environment.NETHER; + case End: + return Environment.THE_END; + } + + return null; + } + + public Environment getEnvironment() { + WorldManager worldManager = SkyBlock.getInstance().getWorldManager(); + if (worldManager.getWorld(Normal) != null) + return Environment.NORMAL; + + if (worldManager.getWorld(Nether) != null) + return Environment.NETHER; + + if (worldManager.getWorld(End) != null) + return Environment.THE_END; + + return null; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/Leaderboard.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/Leaderboard.java new file mode 100644 index 00000000..c51f3480 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/Leaderboard.java @@ -0,0 +1,34 @@ +package com.songoda.skyblock.leaderboard; + +import com.songoda.skyblock.visit.Visit; + +public class Leaderboard { + + private final Visit visit; + private Type type; + private int position; + + public Leaderboard(Type type, Visit visit, int position) { + this.type = type; + this.visit = visit; + this.position = position; + } + + public Type getType() { + return type; + } + + public Visit getVisit() { + return visit; + } + + public int getPosition() { + return position; + } + + public enum Type { + + Level, Bank, Votes + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardManager.java new file mode 100644 index 00000000..2498d027 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardManager.java @@ -0,0 +1,157 @@ +package com.songoda.skyblock.leaderboard; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.economy.EconomyManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.leaderboard.leaderheads.TopBank; +import com.songoda.skyblock.leaderboard.leaderheads.TopLevel; +import com.songoda.skyblock.leaderboard.leaderheads.TopVotes; +import com.songoda.skyblock.visit.Visit; +import com.songoda.skyblock.visit.VisitManager; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.UUID; + +public class LeaderboardManager { + + private final SkyBlock skyblock; + + private List leaderboardStorage = new ArrayList<>(); + + public LeaderboardManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + new LeaderboardTask(skyblock).runTaskTimerAsynchronously(skyblock, 0L, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Leaderboard.Reset.Time") * 20); + + resetLeaderboard(); + setupLeaderHeads(); + } + + public void resetLeaderboard() { + EconomyManager economyManager = skyblock.getEconomyManager(); + VisitManager visitManager = skyblock.getVisitManager(); + WorldManager worldManager = skyblock.getWorldManager(); + + visitManager.loadIslands(); + + List islandLevels = new ArrayList<>(); + List islandBanks = new ArrayList<>(); + List islandVotes = new ArrayList<>(); + + boolean enableExemptions = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Leaderboard.Exemptions.Enable"); + + for (UUID ownerUUID : visitManager.getIslands().keySet()) { + if (enableExemptions && economyManager.hasPermission(worldManager.getWorld(IslandWorld.Normal).getName(), + Bukkit.getOfflinePlayer(ownerUUID), + "fabledskyblock.top.exempt")) + continue; + + Visit visit = visitManager.getIslands().get(ownerUUID); + islandLevels.add(new LeaderboardPlayer(ownerUUID, visit.getLevel().getLevel())); + islandBanks.add(new LeaderboardPlayer(ownerUUID, (long) visit.getBankBalance())); + islandVotes.add(new LeaderboardPlayer(ownerUUID, visit.getVoters().size())); + } + + islandLevels.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); + islandBanks.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); + islandVotes.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); + + for (int i = 0; i < 10; i++) { + if (!islandVotes.isEmpty() && i < islandVotes.size()) { + Leaderboard leaderboard = new Leaderboard(Leaderboard.Type.Votes, visitManager.getIsland(islandVotes.get(i).getUUID()), i); + leaderboardStorage.add(leaderboard); + } + + if (!islandBanks.isEmpty() && i < islandBanks.size()) { + Leaderboard leaderboard = new Leaderboard(Leaderboard.Type.Bank, visitManager.getIsland(islandBanks.get(i).getUUID()), i); + leaderboardStorage.add(leaderboard); + } + + if (!islandLevels.isEmpty() && i < islandLevels.size()) { + Leaderboard leaderboard = new Leaderboard(Leaderboard.Type.Level, visitManager.getIsland(islandLevels.get(i).getUUID()), i); + leaderboardStorage.add(leaderboard); + } + } + } + + public int getPlayerIslandLeaderboardPosition(Player player, Leaderboard.Type type) { + VisitManager visitManager = skyblock.getVisitManager(); + visitManager.loadIslands(); + + List leaderboardPlayers = new ArrayList<>(); + + switch (type) { + case Level: + for (UUID ownerUUID : visitManager.getIslands().keySet()) { + Visit visit = visitManager.getIslands().get(ownerUUID); + leaderboardPlayers.add(new LeaderboardPlayer(ownerUUID, visit.getLevel().getLevel())); + } + break; + case Bank: + for (UUID ownerUUID : visitManager.getIslands().keySet()) { + Visit visit = visitManager.getIslands().get(ownerUUID); + leaderboardPlayers.add(new LeaderboardPlayer(ownerUUID, (long) visit.getBankBalance())); + } + case Votes: + for (UUID ownerUUID : visitManager.getIslands().keySet()) { + Visit visit = visitManager.getIslands().get(ownerUUID); + leaderboardPlayers.add(new LeaderboardPlayer(ownerUUID, visit.getVoters().size())); + } + break; + } + + leaderboardPlayers.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); + + for (int i = 0; i < leaderboardPlayers.size(); i++) { + if (leaderboardPlayers.get(i).getUUID().equals(player.getUniqueId())) { + return i + 1; + } + } + + return -1; + } + + public void setupLeaderHeads() { + if (Bukkit.getServer().getPluginManager().getPlugin("LeaderHeads") != null) { + new TopLevel(skyblock); + new TopBank(skyblock); + new TopVotes(skyblock); + } + } + + public void clearLeaderboard() { + leaderboardStorage.clear(); + } + + public List getLeaderboard(Leaderboard.Type type) { + List leaderboardIslands = new ArrayList<>(); + + for (Leaderboard leaderboardList : leaderboardStorage) { + if (leaderboardList.getType() == type) { + leaderboardIslands.add(leaderboardList); + } + } + + return leaderboardIslands; + } + + public Leaderboard getLeaderboardFromPosition(Leaderboard.Type type, int position) { + for (Leaderboard leaderboardPlayerList : leaderboardStorage) + if (leaderboardPlayerList.getType() == type && leaderboardPlayerList.getPosition() == position) + return leaderboardPlayerList; + return null; + } + + public List getLeaderboards() { + return leaderboardStorage; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardPlayer.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardPlayer.java new file mode 100644 index 00000000..72167f25 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardPlayer.java @@ -0,0 +1,22 @@ +package com.songoda.skyblock.leaderboard; + +import java.util.UUID; + +public class LeaderboardPlayer { + + private UUID uuid; + private long value; + + public LeaderboardPlayer(UUID uuid, long value) { + this.uuid = uuid; + this.value = value; + } + + public UUID getUUID() { + return uuid; + } + + public long getValue() { + return value; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardTask.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardTask.java new file mode 100644 index 00000000..0fdc117f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardTask.java @@ -0,0 +1,23 @@ +package com.songoda.skyblock.leaderboard; + +import com.songoda.skyblock.SkyBlock; +import org.bukkit.scheduler.BukkitRunnable; + +public class LeaderboardTask extends BukkitRunnable { + + private final SkyBlock skyblock; + + public LeaderboardTask(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @Override + public void run() { + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + leaderboardManager.clearLeaderboard(); + leaderboardManager.resetLeaderboard(); + leaderboardManager.setupLeaderHeads(); + + skyblock.getHologramManager().resetHologram(); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopBank.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopBank.java similarity index 75% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopBank.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopBank.java index 123e28c4..1c190bc8 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopBank.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopBank.java @@ -1,22 +1,16 @@ -package me.goodandevil.skyblock.leaderboard.leaderheads; +package com.songoda.skyblock.leaderboard.leaderheads; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.bukkit.ChatColor; - -import java.util.UUID; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.leaderboard.Leaderboard; -import me.goodandevil.skyblock.leaderboard.Leaderboard.Type; -import me.goodandevil.skyblock.visit.Visit; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.leaderboard.Leaderboard; +import com.songoda.skyblock.leaderboard.Leaderboard.Type; +import com.songoda.skyblock.visit.Visit; import me.robin.leaderheads.api.LeaderHeadsAPI; import me.robin.leaderheads.datacollectors.DataCollector; import me.robin.leaderheads.objects.BoardType; +import org.bukkit.ChatColor; + +import java.util.*; +import java.util.Map.Entry; public class TopBank extends DataCollector { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopLevel.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopLevel.java new file mode 100644 index 00000000..93325596 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopLevel.java @@ -0,0 +1,41 @@ +package com.songoda.skyblock.leaderboard.leaderheads; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.leaderboard.Leaderboard; +import com.songoda.skyblock.visit.Visit; +import me.robin.leaderheads.api.LeaderHeadsAPI; +import me.robin.leaderheads.datacollectors.DataCollector; +import me.robin.leaderheads.objects.BoardType; +import org.bukkit.ChatColor; + +import java.util.*; +import java.util.Map.Entry; + +public class TopLevel extends DataCollector { + + private final SkyBlock skyblock; + + public TopLevel(SkyBlock skyblock) { + super("toplevels", skyblock.getDescription().getName(), BoardType.DEFAULT, "&bTop Level", "toplevel", + Arrays.asList(ChatColor.DARK_GRAY + "-=+=-", ChatColor.AQUA + "{name}", + ChatColor.WHITE + "{amount} Level", ChatColor.DARK_GRAY + "-=+=-"), + true, UUID.class); + + this.skyblock = skyblock; + } + + @Override + public List> requestAll() { + Map topLevels = new HashMap<>(); + + List leaderboards = skyblock.getLeaderboardManager().getLeaderboard(Leaderboard.Type.Level); + + for (int i = 0; i < leaderboards.size(); i++) { + Leaderboard leaderboard = leaderboards.get(i); + Visit visit = leaderboard.getVisit(); + topLevels.put(visit.getOwnerUUID(), (double) visit.getLevel().getLevel()); + } + + return LeaderHeadsAPI.sortMap(topLevels); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopVotes.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopVotes.java new file mode 100644 index 00000000..0b152305 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/leaderboard/leaderheads/TopVotes.java @@ -0,0 +1,42 @@ +package com.songoda.skyblock.leaderboard.leaderheads; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.leaderboard.Leaderboard; +import com.songoda.skyblock.leaderboard.Leaderboard.Type; +import com.songoda.skyblock.visit.Visit; +import me.robin.leaderheads.api.LeaderHeadsAPI; +import me.robin.leaderheads.datacollectors.DataCollector; +import me.robin.leaderheads.objects.BoardType; +import org.bukkit.ChatColor; + +import java.util.*; +import java.util.Map.Entry; + +public class TopVotes extends DataCollector { + + private final SkyBlock skyblock; + + public TopVotes(SkyBlock skyblock) { + super("topvotes", skyblock.getDescription().getName(), BoardType.DEFAULT, "&bTop Votes", "topvotes", + Arrays.asList(ChatColor.DARK_GRAY + "-=+=-", ChatColor.AQUA + "{name}", + ChatColor.WHITE + "{amount} Votes", ChatColor.DARK_GRAY + "-=+=-"), + true, UUID.class); + + this.skyblock = skyblock; + } + + @Override + public List> requestAll() { + Map topLevels = new HashMap<>(); + + List leaderboards = skyblock.getLeaderboardManager().getLeaderboard(Type.Votes); + + for (int i = 0; i < leaderboards.size(); i++) { + Leaderboard leaderboard = leaderboards.get(i); + Visit visit = leaderboard.getVisit(); + topLevels.put(visit.getOwnerUUID(), (double) visit.getVoters().size()); + } + + return LeaderHeadsAPI.sortMap(topLevels); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/Chunk.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/Chunk.java new file mode 100644 index 00000000..f6d659e1 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/Chunk.java @@ -0,0 +1,152 @@ +package com.songoda.skyblock.levelling; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandEnvironment; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.utils.version.NMSUtil; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.TextComponent; +import org.bukkit.*; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +public class Chunk { + + private static final int MAX_CHUNKS = 150; + private final SkyBlock skyblock; + private Island island; + + private int initialNumberOfChunks = -1; + private Set chunkPositions = new HashSet<>(); + private Set chunkSnapshots = new HashSet<>(); + private boolean isReady = false; + private boolean isFinished = false; + + public Chunk(SkyBlock skyblock, Island island) { + this.skyblock = skyblock; + this.island = island; + } + + public void prepareInitial() { + Bukkit.getScheduler().runTask(this.skyblock, () -> { + FileConfiguration config = this.skyblock.getFileManager().getConfig(new File(this.skyblock.getDataFolder(), "config.yml")).getFileConfiguration(); + FileConfiguration islandData = this.skyblock.getFileManager().getConfig(new File(new File(this.skyblock.getDataFolder().toString() + "/island-data"), this.island.getOwnerUUID().toString() + ".yml")).getFileConfiguration(); + + boolean hasNether = config.getBoolean("Island.World.Nether.Enable") && islandData.getBoolean("Unlocked.Nether", false); + boolean hasEnd = config.getBoolean("Island.World.End.Enable") && islandData.getBoolean("Unlocked.End", false); + + for (IslandWorld islandWorld : IslandWorld.getIslandWorlds()) { + if (islandWorld == IslandWorld.Normal || (islandWorld == IslandWorld.Nether && hasNether) || (islandWorld == IslandWorld.End && hasEnd)) { + this.getChunksToScan(islandWorld); + } + } + + this.initialNumberOfChunks = this.chunkPositions.size(); + + this.prepareNextChunkSnapshots(); + }); + } + + public boolean isReadyToScan() { + return this.isReady; + } + + public Set getAvailableChunkSnapshots() { + this.isReady = false; + return this.chunkSnapshots; + } + + public boolean isFinished() { + return this.isFinished; + } + + public void prepareNextChunkSnapshots() { + boolean isWildStackerEnabled = Bukkit.getPluginManager().isPluginEnabled("WildStacker"); + + Bukkit.getScheduler().runTask(this.skyblock, () -> { + this.chunkSnapshots.clear(); + + Iterator it = this.chunkPositions.iterator(); + if (!it.hasNext()) { + this.isReady = true; + this.isFinished = true; + this.sendFinishedMessage(); + return; + } + + int percentComplete = (int) ((1 - ((double) this.chunkPositions.size() / this.initialNumberOfChunks)) * 100); + this.sendPercentMessage(percentComplete); + + while (it.hasNext() && this.chunkSnapshots.size() < MAX_CHUNKS) { + ChunkPosition chunkPosition = it.next(); + World world = chunkPosition.getWorld(); + int x = chunkPosition.getX(); + int z = chunkPosition.getZ(); + + // Try to load the chunk, but don't generate anything and ignore if we couldn't get it + if (world.isChunkLoaded(x, z) || world.loadChunk(x, z, false)) { + org.bukkit.Chunk chunk = world.getChunkAt(x, z); + ChunkSnapshot chunkSnapshot = chunk.getChunkSnapshot(); + if (isWildStackerEnabled) { + this.chunkSnapshots.add(new WildStackerChunkSnapshotWrapper(chunkSnapshot, com.bgsoftware.wildstacker.api.WildStackerAPI.getWildStacker().getSystemManager().getStackedSnapshot(chunk, true))); + } else { + this.chunkSnapshots.add(new ChunkSnapshotWrapper(chunkSnapshot)); + } + } + it.remove(); + } + + this.isReady = true; + }); + } + + private void sendPercentMessage(int percent) { + if (NMSUtil.getVersionNumber() > 8) { + String message = ChatColor.translateAlternateColorCodes('&', + this.skyblock.getFileManager() + .getConfig(new File(this.skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Command.Island.Level.Scanning.Progress.Message") + .replace("%percent", String.valueOf(percent))); + for (Player player : this.skyblock.getIslandManager().getPlayersAtIsland(this.island)) { + player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); + } + } + } + + private void sendFinishedMessage() { + if (NMSUtil.getVersionNumber() > 8) { + String message = ChatColor.translateAlternateColorCodes('&', this.skyblock.getFileManager() + .getConfig(new File(this.skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Command.Island.Level.Scanning.Finished.Message")); + for (Player player : this.skyblock.getIslandManager().getPlayersAtIsland(this.island)) { + player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); + } + } + } + + private void getChunksToScan(IslandWorld islandWorld) { + Location islandLocation = this.island.getLocation(islandWorld, IslandEnvironment.Island); + World world = islandLocation.getWorld(); + + Location minLocation = new Location(world, islandLocation.getBlockX() - this.island.getRadius(), 0, islandLocation.getBlockZ() - this.island.getRadius()); + Location maxLocation = new Location(world, islandLocation.getBlockX() + this.island.getRadius(), world.getMaxHeight(), islandLocation.getBlockZ() + this.island.getRadius()); + + int minX = Math.min(maxLocation.getBlockX(), minLocation.getBlockX()); + int minZ = Math.min(maxLocation.getBlockZ(), minLocation.getBlockZ()); + + int maxX = Math.max(maxLocation.getBlockX(), minLocation.getBlockX()); + int maxZ = Math.max(maxLocation.getBlockZ(), minLocation.getBlockZ()); + + for (int x = minX; x < maxX + 16; x += 16) { + for (int z = minZ; z < maxZ + 16; z += 16) { + this.chunkPositions.add(new ChunkPosition(world, x >> 4, z >> 4)); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/ChunkPosition.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/ChunkPosition.java similarity index 90% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/ChunkPosition.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/ChunkPosition.java index b8b9fe84..0e0c3d66 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/ChunkPosition.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/ChunkPosition.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.levelling; +package com.songoda.skyblock.levelling; import org.bukkit.World; diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/ChunkSnapshotWrapper.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/ChunkSnapshotWrapper.java similarity index 87% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/ChunkSnapshotWrapper.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/ChunkSnapshotWrapper.java index 1f917bbc..4634addc 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/ChunkSnapshotWrapper.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/ChunkSnapshotWrapper.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.levelling; +package com.songoda.skyblock.levelling; import org.bukkit.ChunkSnapshot; diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevelChunkSnapshotWrapper.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevelChunkSnapshotWrapper.java similarity index 89% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevelChunkSnapshotWrapper.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevelChunkSnapshotWrapper.java index ea0dd9a3..81aa5335 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevelChunkSnapshotWrapper.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevelChunkSnapshotWrapper.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.levelling; +package com.songoda.skyblock.levelling; import org.bukkit.ChunkSnapshot; diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevellingManager.java similarity index 94% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevellingManager.java index 135559ed..22de9fcc 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevellingManager.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevellingManager.java @@ -1,25 +1,21 @@ -package me.goodandevil.skyblock.levelling; +package com.songoda.skyblock.levelling; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.island.IslandLevelChangeEvent; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.stackable.Stackable; -import me.goodandevil.skyblock.stackable.StackableManager; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.ChunkSnapshot; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.World; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.event.island.IslandLevelChangeEvent; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.menus.Levelling; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.stackable.Stackable; +import com.songoda.skyblock.stackable.StackableManager; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.*; import org.bukkit.block.CreatureSpawner; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.EntityType; @@ -27,17 +23,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Queue; -import java.util.Set; +import java.util.*; import java.util.logging.Level; public class LevellingManager { @@ -299,7 +285,7 @@ public class LevellingManager { Bukkit.getServer().getPluginManager().callEvent(new IslandLevelChangeEvent(island.getAPIWrapper(), island.getAPIWrapper().getLevel())); if (player != null) { - me.goodandevil.skyblock.menus.Levelling.getInstance().open(player); + Levelling.getInstance().open(player); } } diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevellingMaterial.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevellingMaterial.java new file mode 100644 index 00000000..3e906c57 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/LevellingMaterial.java @@ -0,0 +1,31 @@ +package com.songoda.skyblock.levelling; + +import com.songoda.skyblock.utils.version.Materials; +import org.bukkit.inventory.ItemStack; + +public class LevellingMaterial { + + private Materials materials; + private long points; + + public LevellingMaterial(Materials materials, long points) { + this.materials = materials; + this.points = points; + } + + public Materials getMaterials() { + return materials; + } + + public long getPoints() { + return points; + } + + public void setPoints(long points) { + this.points = points; + } + + public ItemStack getItemStack() { + return materials.parseItem(); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/WildStackerChunkSnapshotWrapper.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/WildStackerChunkSnapshotWrapper.java similarity index 93% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/WildStackerChunkSnapshotWrapper.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/WildStackerChunkSnapshotWrapper.java index 82b7ad44..d8da7559 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/WildStackerChunkSnapshotWrapper.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/levelling/WildStackerChunkSnapshotWrapper.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.levelling; +package com.songoda.skyblock.levelling; import com.bgsoftware.wildstacker.api.objects.StackedSnapshot; import org.bukkit.ChunkSnapshot; diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/limit/LimitManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/limit/LimitManager.java similarity index 89% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/limit/LimitManager.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/limit/LimitManager.java index dbd69680..e99fe007 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/limit/LimitManager.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/limit/LimitManager.java @@ -1,12 +1,10 @@ -package me.goodandevil.skyblock.limit; +package com.songoda.skyblock.limit; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.utils.version.Materials; -import org.bukkit.Bukkit; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.utils.version.Materials; import org.bukkit.block.Block; -import org.bukkit.block.CreatureSpawner; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; @@ -49,8 +47,9 @@ public class LimitManager { /** * Gets the max number of a type of block a player can place + * * @param player The player to check - * @param block The block to check + * @param block The block to check * @return The max number of the type of block the player can place */ public long getBlockLimit(Player player, Block block) { @@ -81,7 +80,8 @@ public class LimitManager { return -1; limit = Math.max(limit, Integer.parseInt(numberString)); - } catch (Exception ignored) { } + } catch (Exception ignored) { + } } return limit; @@ -89,8 +89,9 @@ public class LimitManager { /** * Checks if a player has exceeded the number of blocks they can place + * * @param player The player to check - * @param block The block to check + * @param block The block to check * @return true if the player has exceeded the block limit, otherwise false */ public boolean isBlockLimitExceeded(Player player, Block block) { diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Block.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Block.java similarity index 91% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Block.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Block.java index 3306fbd2..be37fedc 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Block.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Block.java @@ -1,26 +1,21 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.generator.Generator; -import me.goodandevil.skyblock.generator.GeneratorManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.limit.LimitManager; -import me.goodandevil.skyblock.stackable.Stackable; -import me.goodandevil.skyblock.stackable.StackableManager; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.world.WorldManager; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.generator.Generator; +import com.songoda.skyblock.generator.GeneratorManager; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.limit.LimitManager; +import com.songoda.skyblock.stackable.Stackable; +import com.songoda.skyblock.stackable.StackableManager; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.world.WorldManager; import org.apache.commons.lang3.text.WordUtils; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -34,17 +29,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockBurnEvent; -import org.bukkit.event.block.BlockDispenseEvent; -import org.bukkit.event.block.BlockFormEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockGrowEvent; -import org.bukkit.event.block.BlockPistonExtendEvent; -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.*; import org.bukkit.event.world.PortalCreateEvent; import org.bukkit.event.world.StructureGrowEvent; import org.bukkit.inventory.ItemStack; @@ -52,11 +37,7 @@ import org.bukkit.material.Crops; import java.io.File; import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public class Block implements Listener { @@ -101,7 +82,7 @@ public class Block implements Listener { if (stackable != null) { Material material = block.getType(); byte data = block.getData(); - + int droppedAmount = 0; if (event.getPlayer().isSneaking()) { Location dropLoc = event.getBlock().getLocation().clone().add(0.5, 0.5, 0.5); @@ -119,7 +100,7 @@ public class Block implements Listener { stackable.takeOne(); droppedAmount = 1; } - + if (stackable.getSize() <= 1) { stackableManager.removeStack(stackable); } @@ -147,12 +128,12 @@ public class Block implements Listener { event.setCancelled(true); } } - + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); FileConfiguration configLoad = config.getFileConfiguration(); if (LocationUtil.isLocationLocation(block.getLocation(), island.getLocation(world, IslandEnvironment.Main).clone().subtract(0.0D, 1.0D, 0.0D)) - || LocationUtil.isLocationLocation(block.getLocation(), island.getLocation(world, IslandEnvironment.Main).clone())) { + || LocationUtil.isLocationLocation(block.getLocation(), island.getLocation(world, IslandEnvironment.Main).clone())) { if (configLoad.getBoolean("Island.Spawn.Protection")) { event.setCancelled(true); skyblock.getMessageManager().sendMessage(player, @@ -317,7 +298,7 @@ public class Block implements Listener { FileConfiguration configLoad = config.getFileConfiguration(); if (island == null) return; - + org.bukkit.block.Block block = event.getToBlock(); // Protect outside of border @@ -331,24 +312,24 @@ public class Block implements Listener { event.setCancelled(true); return; } - + if (NMSUtil.getVersionNumber() < 12) { if (generatorManager != null && generatorManager.getGenerators().size() > 0 && generatorManager.isGenerator(block)) { List generators = new ArrayList<>(generatorManager.getGenerators()); Collections.reverse(generators); // Use the highest generator available - + // Filter valid players on the island Set possiblePlayers = new HashSet<>(); for (Player p : Bukkit.getOnlinePlayers()) { - boolean isMember = island.hasRole(IslandRole.Owner, p.getUniqueId()) || - island.hasRole(IslandRole.Member, p.getUniqueId()) || - island.hasRole(IslandRole.Coop, p.getUniqueId()) || - island.hasRole(IslandRole.Operator, p.getUniqueId()); + boolean isMember = island.hasRole(IslandRole.Owner, p.getUniqueId()) || + island.hasRole(IslandRole.Member, p.getUniqueId()) || + island.hasRole(IslandRole.Coop, p.getUniqueId()) || + island.hasRole(IslandRole.Operator, p.getUniqueId()); if (isMember && islandManager.isLocationAtIsland(island, p.getLocation(), world)) { possiblePlayers.add(p); } } - + // Find highest generator available for (Generator generator : generators) { for (Player p : possiblePlayers) { @@ -436,7 +417,7 @@ public class Block implements Listener { Island island = islandManager.getIslandAtLocation(event.getBlock().getLocation()); if (island == null) return; - + IslandWorld world = worldManager.getIslandWorld(event.getBlock().getWorld()); Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); @@ -498,32 +479,32 @@ public class Block implements Listener { } Material material = event.getBlock().getType(); - if (material != Materials.WATER.parseMaterial() && - material != Materials.LEGACY_STATIONARY_WATER.parseMaterial() && - material != Materials.LAVA.parseMaterial() && - material != Materials.LEGACY_STATIONARY_LAVA.parseMaterial()) - return; + if (material != Materials.WATER.parseMaterial() && + material != Materials.LEGACY_STATIONARY_WATER.parseMaterial() && + material != Materials.LAVA.parseMaterial() && + material != Materials.LEGACY_STATIONARY_LAVA.parseMaterial()) + return; Material type = event.getNewState().getType(); if (type != Material.COBBLESTONE && type != Material.STONE) - return; + return; if (generatorManager != null && generatorManager.getGenerators().size() > 0) { List generators = new ArrayList<>(generatorManager.getGenerators()); Collections.reverse(generators); // Use the highest generator available - + // Filter valid players on the island Set possiblePlayers = new HashSet<>(); for (Player player : Bukkit.getOnlinePlayers()) { - boolean isMember = island.hasRole(IslandRole.Owner, player.getUniqueId()) || - island.hasRole(IslandRole.Member, player.getUniqueId()) || - island.hasRole(IslandRole.Coop, player.getUniqueId()) || - island.hasRole(IslandRole.Operator, player.getUniqueId()); + boolean isMember = island.hasRole(IslandRole.Owner, player.getUniqueId()) || + island.hasRole(IslandRole.Member, player.getUniqueId()) || + island.hasRole(IslandRole.Coop, player.getUniqueId()) || + island.hasRole(IslandRole.Operator, player.getUniqueId()); if (isMember && islandManager.isLocationAtIsland(island, player.getLocation(), world)) { possiblePlayers.add(player); } } - + // Find highest generator available for (Generator generator : generators) { for (Player player : possiblePlayers) { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Bucket.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Bucket.java new file mode 100644 index 00000000..86b91211 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Bucket.java @@ -0,0 +1,86 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerBucketEmptyEvent; +import org.bukkit.event.player.PlayerBucketFillEvent; + +import java.io.File; + +public class Bucket implements Listener { + + private final SkyBlock skyblock; + + public Bucket(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onPlayerBucketFill(PlayerBucketFillEvent event) { + Player player = event.getPlayer(); + org.bukkit.block.Block block = event.getBlockClicked(); + + if (event.getBlockClicked().getType() == Material.WATER + || event.getBlockClicked().getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() + || event.getBlockClicked().getType() == Material.LAVA + || event.getBlockClicked().getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial()) { + if (skyblock.getWorldManager().isIslandWorld(block.getWorld())) { + if (!skyblock.getIslandManager().hasPermission(player, block.getLocation(), "Bucket")) { + event.setCancelled(true); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } + } + + @EventHandler + public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { + Player player = event.getPlayer(); + org.bukkit.block.Block block = event.getBlockClicked().getRelative(event.getBlockFace()); + + if (skyblock.getWorldManager().isIslandWorld(block.getWorld())) { + if (!skyblock.getIslandManager().hasPermission(player, block.getLocation(), "Bucket")) { + event.setCancelled(true); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + WorldManager worldManager = skyblock.getWorldManager(); + IslandManager islandManager = skyblock.getIslandManager(); + + if (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Spawn.Protection")) + return; + + Island island = islandManager.getIslandAtLocation(block.getLocation()); + if (island == null) + return; + + // Check spawn block protection + IslandWorld world = worldManager.getIslandWorld(block.getWorld()); + if (LocationUtil.isLocationAffectingIslandSpawn(block.getLocation(), island, world)) { + event.setCancelled(true); + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.SpawnProtection.Place.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Chat.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Chat.java new file mode 100644 index 00000000..9ea6a431 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Chat.java @@ -0,0 +1,102 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.event.player.PlayerIslandChatEvent; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.PlaceholderManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; + +import java.io.File; +import java.util.UUID; + +public class Chat implements Listener { + + private final SkyBlock skyblock; + + public Chat(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onAsyncPlayerChat(AsyncPlayerChatEvent event) { + Player player = event.getPlayer(); + + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + Island island = null; + + if (playerData.getOwner() != null) { + island = skyblock.getIslandManager().getIsland(player); + } + + String messageFormat = event.getFormat(); + + for (String placeholderList : placeholderManager.getPlaceholders()) { + String placeholder = "{" + placeholderList + "}"; + + if (messageFormat.contains(placeholder)) { + messageFormat = messageFormat.replace(placeholder, + placeholderManager.getPlaceholder(player, placeholderList)); + } + } + + event.setFormat(messageFormat); + + if (playerData.isChat()) { + event.setCancelled(true); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + String islandRole = ""; + + if (island.hasRole(IslandRole.Member, player.getUniqueId())) { + islandRole = configLoad.getString("Island.Chat.Format.Role.Member"); + } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { + islandRole = configLoad.getString("Island.Chat.Format.Role.Operator"); + } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + islandRole = configLoad.getString("Island.Chat.Format.Role.Owner"); + } + + PlayerIslandChatEvent islandChatEvent = new PlayerIslandChatEvent(player, island.getAPIWrapper(), + event.getMessage(), configLoad.getString("Island.Chat.Format.Message")); + Bukkit.getServer().getPluginManager().callEvent(islandChatEvent); + + if (!islandChatEvent.isCancelled()) { + for (UUID islandMembersOnlineList : islandManager.getMembersOnline(island)) { + Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); + String message = ChatColor.translateAlternateColorCodes('&', messageManager.replaceMessage(targetPlayer, + islandChatEvent.getFormat().replace("%role", islandRole).replace("%player", player.getName()))) + .replace("%message", islandChatEvent.getMessage()); + targetPlayer.sendMessage(message); + } + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Chat.OutputToConsole")) { + messageManager.sendMessage(Bukkit.getConsoleSender(), islandChatEvent.getFormat().replace("%role", islandRole).replace("%player", player.getName()) + .replace("%message", islandChatEvent.getMessage())); + } + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Death.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Death.java new file mode 100644 index 00000000..be72e160 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Death.java @@ -0,0 +1,56 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandRole; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; + +import java.io.File; + +public class Death implements Listener { + + private final SkyBlock skyblock; + + public Death(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent event) { + Player player = event.getEntity(); + + if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + boolean keepInventory = false; + + if (configLoad.getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { + if (skyblock.getIslandManager().hasSetting(player.getLocation(), IslandRole.Owner, + "KeepItemsOnDeath")) { + keepInventory = true; + } + } else keepInventory = configLoad.getBoolean("Island.KeepItemsOnDeath.Enable"); + + if (keepInventory) { + event.setKeepInventory(true); + event.getDrops().clear(); + event.setKeepLevel(true); + event.setDroppedExp(0); + } + + if (configLoad.getBoolean("Island.Death.AutoRespawn")) { + Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> { + player.spigot().respawn(); + player.setFallDistance(0.0F); + player.setFireTicks(0); + }, 1L); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Entity.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Entity.java similarity index 96% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Entity.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Entity.java index f76e4767..be11546e 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Entity.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Entity.java @@ -1,18 +1,18 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.*; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.stackable.StackableManager; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.world.WorldManager; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.stackable.StackableManager; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.world.WorldManager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -47,7 +47,7 @@ import java.util.UUID; public class Entity implements Listener { private final SkyBlock skyblock; - + private Set preventFireTicks = new HashSet<>(); public Entity(SkyBlock skyblock) { @@ -217,9 +217,9 @@ public class Entity implements Listener { } } } - + // Fix a bug in minecraft where arrows with flame still apply fire ticks even if the shot entity isn't damaged - if (event.isCancelled() && event.getEntity() != null && event.getDamager() instanceof Arrow && ((Arrow)event.getDamager()).getShooter() instanceof Player) { + if (event.isCancelled() && event.getEntity() != null && event.getDamager() instanceof Arrow && ((Arrow) event.getDamager()).getShooter() instanceof Player) { Arrow arrow = (Arrow) event.getDamager(); if (arrow.getFireTicks() != 0) { preventFireTicks.add(event.getEntity().getUniqueId()); @@ -247,7 +247,7 @@ public class Entity implements Listener { } } } - + @EventHandler public void onStackableInteract(PlayerArmorStandManipulateEvent event) { Player player = event.getPlayer(); @@ -262,11 +262,11 @@ public class Entity implements Listener { if (NMSUtil.getVersionNumber() != 8) return; - + StackableManager stackableManager = SkyBlock.getInstance().getStackableManager(); if (stackableManager == null) return; - + ArmorStand armorStand = event.getRightClicked(); for (Location stackLocation : stackableManager.getStacks().keySet()) { if (stackLocation.getWorld().equals(armorStand.getWorld()) && armorStand.getLocation().distanceSquared(stackLocation) <= 1.5) { @@ -329,16 +329,16 @@ public class Entity implements Listener { } } } - + @EventHandler public void onHangingInteract(PlayerInteractEntityEvent event) { if (!(event.getRightClicked() instanceof Hanging)) { return; } - + Player player = event.getPlayer(); Hanging hanging = (Hanging) event.getRightClicked(); - + if (skyblock.getWorldManager().isIslandWorld(hanging.getWorld())) { if (!skyblock.getIslandManager().hasPermission(player, hanging.getLocation(), "HangingDestroy")) { event.setCancelled(true); @@ -350,16 +350,16 @@ public class Entity implements Listener { } } } - + @EventHandler public void onHangingRemoveItem(EntityDamageByEntityEvent event) { if (!(event.getDamager() instanceof Player && event.getEntity() instanceof Hanging)) { return; } - + Player player = (Player) event.getDamager(); Hanging hanging = (Hanging) event.getEntity(); - + if (skyblock.getWorldManager().isIslandWorld(hanging.getWorld())) { if (!skyblock.getIslandManager().hasPermission(player, hanging.getLocation(), "HangingDestroy")) { event.setCancelled(true); @@ -371,7 +371,7 @@ public class Entity implements Listener { } } } - + @EventHandler public void onEntityTaming(EntityTameEvent event) { if (!(event.getOwner() instanceof Player)) { @@ -426,8 +426,8 @@ public class Entity implements Listener { } if ((event.getEntityType() == EntityType.FALLING_BLOCK) && LocationUtil.isLocationLocation(event.getBlock().getLocation(), - island.getLocation(world, IslandEnvironment.Main) - .clone()) + island.getLocation(world, IslandEnvironment.Main) + .clone()) && configLoad.getBoolean("Island.Spawn.Protection")) { FallingBlock fallingBlock = (FallingBlock) event.getEntity(); if (fallingBlock.getDropItem()) { @@ -440,8 +440,9 @@ public class Entity implements Listener { if (fallingBlock.getMaterial().name().endsWith("ANVIL")) { data = (byte) Math.ceil(data / 4.0); } - fallingBlock.getWorld().dropItemNaturally(fallingBlock.getLocation(), new ItemStack(fallingBlock.getMaterial(), 1, (byte) data)); - } catch (Exception ignored) { } + fallingBlock.getWorld().dropItemNaturally(fallingBlock.getLocation(), new ItemStack(fallingBlock.getMaterial(), 1, data)); + } catch (Exception ignored) { + } } } event.setCancelled(true); @@ -546,7 +547,7 @@ public class Entity implements Listener { } } } - + if (SkyBlock.getInstance().getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Spawn.Protection")) { IslandWorld world = worldManager.getIslandWorld(event.getEntity().getWorld()); for (org.bukkit.block.Block block : event.blockList()) { @@ -589,7 +590,7 @@ public class Entity implements Listener { if (livingEntity instanceof Ravager || livingEntity instanceof Illager) return; } - + if (livingEntity.hasMetadata("SkyBlock")) return; diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/EpicSpawners.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/EpicSpawners.java similarity index 93% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/EpicSpawners.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/EpicSpawners.java index bf7774e1..2709c9db 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/EpicSpawners.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/EpicSpawners.java @@ -1,15 +1,15 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; import com.songoda.epicspawners.api.events.SpawnerBreakEvent; import com.songoda.epicspawners.api.events.SpawnerChangeEvent; import com.songoda.epicspawners.api.events.SpawnerPlaceEvent; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.world.WorldManager; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.world.WorldManager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.configuration.file.FileConfiguration; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Food.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Food.java new file mode 100644 index 00000000..4ac1d836 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Food.java @@ -0,0 +1,32 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.IslandRole; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.FoodLevelChangeEvent; + +import java.io.File; + +public class Food implements Listener { + + private final SkyBlock skyblock; + + public Food(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onFoodLevelChange(FoodLevelChangeEvent event) { + Player player = (Player) event.getEntity(); + + if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { + if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable") + && !skyblock.getIslandManager().hasSetting(player.getLocation(), IslandRole.Owner, "Hunger")) { + event.setCancelled(true); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Interact.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Interact.java new file mode 100644 index 00000000..3bf65e92 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Interact.java @@ -0,0 +1,1011 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.limit.LimitManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.stackable.Stackable; +import com.songoda.skyblock.stackable.StackableManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.InventoryUtil; +import com.songoda.skyblock.utils.structure.StructureUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.apache.commons.lang3.text.WordUtils; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Beacon; +import org.bukkit.block.CreatureSpawner; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Horse; +import org.bukkit.entity.Player; +import org.bukkit.entity.minecart.StorageMinecart; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerArmorStandManipulateEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.vehicle.VehicleDamageEvent; +import org.bukkit.event.vehicle.VehicleDestroyEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.Set; + +public class Interact implements Listener { + + private final SkyBlock skyblock; + + public Interact(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @SuppressWarnings("deprecation") + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerInteract(PlayerInteractEvent event) { + Player player = event.getPlayer(); + org.bukkit.block.Block block = event.getClickedBlock(); + + if (block != null && !skyblock.getWorldManager().isIslandWorld(block.getWorld())) { + return; + } + + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + StackableManager stackableManager = skyblock.getStackableManager(); + LevellingManager levellingManager = skyblock.getLevellingManager(); + + Island island = islandManager.getIslandAtLocation(player.getLocation()); + if (island == null) { + event.setCancelled(true); + return; + } + + if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_BLOCK) { + if (block.getType() == Material.DRAGON_EGG) { + if (!islandManager.hasPermission(player, block.getLocation(), "DragonEggUse")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getState() instanceof Beacon) { // ChunkCollectors support + if (!islandManager.hasPermission(player, block.getLocation(), "Beacon")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getState() instanceof InventoryHolder || block.getState() instanceof CreatureSpawner) { // EpicHoppers/EpicSpawners support + if (!islandManager.hasPermission(player, block.getLocation(), "Storage")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.CAULDRON) { // WildStacker stackables + if (!islandManager.hasPermission(player, block.getLocation(), "Place") || !islandManager.hasPermission(player, block.getLocation(), "Destroy")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + } + + if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_AIR) { + if (event.getItem() != null && event.getItem().getType() == Material.EGG) { + if (!skyblock.getIslandManager().hasPermission(player, "Projectile")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } + + if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (stackableManager != null + && stackableManager.getStackableMaterials().contains(event.getMaterial()) + && event.getClickedBlock().getType() == event.getMaterial() + && !player.isSneaking() && islandManager.hasPermission(player, block.getLocation(), "Place") + && (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Stackable.RequirePermission") || player.hasPermission("fabledskyblock.stackable"))) { + if (NMSUtil.getVersionNumber() > 8) { + if (event.getHand() == EquipmentSlot.OFF_HAND) return; + } + + if (levellingManager.isIslandLevelBeingScanned(island)) { + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Command.Island.Level.Scanning.BlockPlacing.Message")); + event.setCancelled(true); + return; + } + + LimitManager limitManager = skyblock.getLimitManager(); + if (limitManager.isBlockLimitExceeded(player, block)) { + Materials material = Materials.getMaterials(block.getType(), block.getData()); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Limit.Block.Exceeded.Message") + .replace("%type", WordUtils.capitalizeFully(material.name().replace("_", " "))) + .replace("%limit", NumberUtil.formatNumber(limitManager.getBlockLimit(player, block)))); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setCancelled(true); + return; + } + + Location location = event.getClickedBlock().getLocation(); + if (stackableManager.isStacked(location)) { + Stackable stackable = stackableManager.getStack(location, event.getMaterial()); + if (stackable != null) + stackable.addOne(); + } else { + stackableManager.addStack(new Stackable(location, event.getMaterial())); + } + event.setCancelled(true); + InventoryUtil.takeItem(player, 1); + + FileManager.Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + if (!configLoad.getBoolean("Island.Block.Level.Enable")) return; + + Materials materials = Materials.getMaterials(block.getType(), block.getData()); + + if (materials == null) return; + long materialAmount = 0; + IslandLevel level = island.getLevel(); + + if (level.hasMaterial(materials.name())) { + materialAmount = level.getMaterialAmount(materials.name()); + } + + level.setMaterialAmount(materials.name(), materialAmount + 1); + return; + } + + if (event.getItem() != null && event.getItem().getType() == Materials.BONE_MEAL.parseMaterial() && !islandManager.hasPermission(player, block.getLocation(), "Place")) { + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + event.setCancelled(true); + return; + } + + if (block.getType() == Materials.SWEET_BERRY_BUSH.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Destroy")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.ANVIL) { + if (!islandManager.hasPermission(player, block.getLocation(), "Anvil")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Materials.LEGACY_BED_BLOCK.parseMaterial() + || block.getType() == Materials.WHITE_BED.parseMaterial() + || block.getType() == Materials.ORANGE_BED.parseMaterial() + || block.getType() == Materials.MAGENTA_BED.parseMaterial() + || block.getType() == Materials.LIGHT_BLUE_BED.parseMaterial() + || block.getType() == Materials.YELLOW_BED.parseMaterial() + || block.getType() == Materials.LIME_BED.parseMaterial() + || block.getType() == Materials.PINK_BED.parseMaterial() + || block.getType() == Materials.GRAY_BED.parseMaterial() + || block.getType() == Materials.LIGHT_GRAY_BED.parseMaterial() + || block.getType() == Materials.CYAN_BED.parseMaterial() + || block.getType() == Materials.CYAN_BED.parseMaterial() + || block.getType() == Materials.PURPLE_BED.parseMaterial() + || block.getType() == Materials.BLUE_BED.parseMaterial() + || block.getType() == Materials.BROWN_BED.parseMaterial() + || block.getType() == Materials.GREEN_BED.parseMaterial() + || block.getType() == Materials.RED_BED.parseMaterial() + || block.getType() == Materials.BLACK_BED.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Bed")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.BREWING_STAND) { + if (!islandManager.hasPermission(player, block.getLocation(), "Brewing")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.CHEST || block.getType() == Material.TRAPPED_CHEST + || (NMSUtil.getVersionNumber() > 9 + && (block.getType() == Materials.SHULKER_BOX.parseMaterial() + || block.getType() == Materials.BLACK_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.BLUE_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.BROWN_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.CYAN_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.GRAY_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.GREEN_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.LIGHT_BLUE_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.LIGHT_GRAY_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.LIME_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.MAGENTA_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.ORANGE_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.PINK_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.PURPLE_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.RED_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.WHITE_SHULKER_BOX.parseMaterial() + || block.getType() == Materials.YELLOW_SHULKER_BOX.parseMaterial()))) { + if (!islandManager.hasPermission(player, block.getLocation(), "Storage")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Materials.CRAFTING_TABLE.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Workbench")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.BIRCH_DOOR || block.getType() == Material.ACACIA_DOOR + || block.getType() == Material.DARK_OAK_DOOR || block.getType() == Material.JUNGLE_DOOR + || block.getType() == Material.SPRUCE_DOOR + || block.getType() == Materials.LEGACY_WOODEN_DOOR.parseMaterial() + || block.getType() == Materials.OAK_DOOR.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Door")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Materials.ENCHANTING_TABLE.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Enchant")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.FURNACE + || block.getType() == Materials.LEGACY_BURNING_FURNACE.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Furnace")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.STONE_BUTTON + || block.getType() == Materials.OAK_BUTTON.parseMaterial() + || block.getType() == Materials.SPRUCE_BUTTON.parseMaterial() + || block.getType() == Materials.BIRCH_BUTTON.parseMaterial() + || block.getType() == Materials.JUNGLE_BUTTON.parseMaterial() + || block.getType() == Materials.ACACIA_BUTTON.parseMaterial() + || block.getType() == Materials.DARK_OAK_BUTTON.parseMaterial() + || block.getType() == Materials.LEVER.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "LeverButton")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.JUKEBOX) { + if (!islandManager.hasPermission(player, block.getLocation(), "Jukebox")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Materials.OAK_TRAPDOOR.parseMaterial() + || block.getType() == Materials.SPRUCE_TRAPDOOR.parseMaterial() + || block.getType() == Materials.BIRCH_TRAPDOOR.parseMaterial() + || block.getType() == Materials.JUNGLE_TRAPDOOR.parseMaterial() + || block.getType() == Materials.ACACIA_TRAPDOOR.parseMaterial() + || block.getType() == Materials.DARK_OAK_TRAPDOOR.parseMaterial() + || block.getType() == Material.NOTE_BLOCK + || block.getType() == Material.HOPPER + || block.getType() == Materials.COMPARATOR.parseMaterial() + || block.getType() == Materials.LEGACY_REDSTONE_COMPARATOR_OFF.parseMaterial() + || block.getType() == Materials.LEGACY_REDSTONE_COMPARATOR_ON.parseMaterial() + || block.getType() == Materials.REPEATER.parseMaterial() + || block.getType() == Materials.LEGACY_DIODE_BLOCK_OFF.parseMaterial() + || block.getType() == Materials.LEGACY_DIODE_BLOCK_ON.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Redstone")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Materials.OAK_FENCE_GATE.parseMaterial() + || block.getType() == Material.ACACIA_FENCE_GATE || block.getType() == Material.BIRCH_FENCE_GATE + || block.getType() == Material.DARK_OAK_FENCE_GATE || block.getType() == Material.JUNGLE_FENCE_GATE + || block.getType() == Material.SPRUCE_FENCE_GATE) { + if (!islandManager.hasPermission(player, block.getLocation(), "Gate")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.DROPPER || block.getType() == Material.DISPENSER) { + if (!islandManager.hasPermission(player, block.getLocation(), "DropperDispenser")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.TNT) { + if (!islandManager.hasPermission(player, block.getLocation(), "Destroy")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Materials.LEGACY_CAKE_BLOCK.getPostMaterial()) { + if (player.getFoodLevel() < 20 && !islandManager.hasPermission(player, block.getLocation(), "Cake")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (block.getType() == Material.HOPPER) { + if (!islandManager.hasPermission(player, block.getLocation(), "Hopper")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if ((player.getGameMode() == GameMode.SURVIVAL) && (block.getType() == Material.OBSIDIAN) + && (event.getItem() != null) && (event.getItem().getType() != Material.AIR) + && (event.getItem().getType() == Material.BUCKET)) { + if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Block.Obsidian.Enable") + && islandManager.hasPermission(player, block.getLocation(), "Bucket")) { + int NMSVersion = NMSUtil.getVersionNumber(); + boolean isInventoryFull = false; + + if (NMSVersion > 8) { + isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 5, 1, Material.BUCKET); + } else { + isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 0, 1, Material.BUCKET); + } + + soundManager.playSound(block.getLocation(), Sounds.FIZZ.bukkitSound(), 1.0F, 1.0F); + + InventoryUtil.removeItem(player.getInventory(), 1, false, Material.BUCKET); + block.setType(Material.AIR); + + if (isInventoryFull) { + player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.LAVA_BUCKET)); + } else { + if (NMSVersion > 8) { + isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 5, 1, + Material.LAVA_BUCKET); + } else { + isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 0, 1, + Material.LAVA_BUCKET); + } + + if (isInventoryFull) { + player.getWorld().dropItemNaturally(player.getLocation(), + new ItemStack(Material.LAVA_BUCKET)); + } else { + player.getInventory().addItem(new ItemStack(Material.LAVA_BUCKET)); + } + } + + event.setCancelled(true); + + return; + } + } else if (block.getType() == Materials.END_PORTAL_FRAME.parseMaterial()) { + if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Block.EndFrame.Enable") + && islandManager.hasPermission(player, block.getLocation(), "Destroy")) { + + if (NMSUtil.getVersionNumber() > 8 && event.getHand() == EquipmentSlot.OFF_HAND) + return; + + if (Bukkit.getPluginManager().isPluginEnabled("EpicAnchors")) { + if (com.songoda.epicanchors.EpicAnchorsPlugin.getInstance().getAnchorManager().getAnchor(block.getLocation()) != null) { + event.setCancelled(true); + return; + } + } + + ItemStack is = event.getPlayer().getItemInHand(); + + if (is == null || is.getType() == Material.AIR) { + if (stackableManager != null && stackableManager.isStacked(block.getLocation())) { + Stackable stackable = stackableManager.getStack(block.getLocation(), Materials.END_PORTAL_FRAME.parseMaterial()); + stackable.takeOne(); + + if (stackable.getSize() <= 1) { + stackableManager.removeStack(stackable); + } + } else { + block.setType(Material.AIR); + } + + player.getInventory().addItem(new ItemStack(Materials.END_PORTAL_FRAME.parseMaterial(), 1)); + player.updateInventory(); + + FileManager.Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getBoolean("Island.Block.Level.Enable")) { + Materials materials = Materials.END_PORTAL_FRAME; + IslandLevel level = island.getLevel(); + + if (level.hasMaterial(materials.name())) { + long materialAmount = level.getMaterialAmount(materials.name()); + + if (materialAmount - 1 <= 0) { + level.removeMaterial(materials.name()); + } else { + level.setMaterialAmount(materials.name(), materialAmount - 1); + } + } + } + + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 10.0F, 10.0F); + + event.setCancelled(true); + return; + } + } + } + + if ((event.getItem() != null) && (event.getItem().getType() != Material.AIR) && !event.isCancelled()) { + if (event.getItem().getType() == Material.BUCKET || event.getItem().getType() == Material.WATER_BUCKET + || event.getItem().getType() == Material.LAVA_BUCKET) { + if (!islandManager.hasPermission(player, block.getLocation(), "Bucket")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + player.updateInventory(); + } + } else if (event.getItem().getType() == Material.GLASS_BOTTLE) { + if (block.getType() == Material.WATER + || block.getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() + || block.getType() == Material.CAULDRON) { + if (!islandManager.hasPermission(player, block.getLocation(), "WaterCollection")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + player.updateInventory(); + } + } + } else if (event.getItem().getType().name().contains("SPAWN_EGG") || event.getItem().getType().name().equals("MONSTER_EGG")) { + if (!islandManager.hasPermission(player, block.getLocation(), "SpawnEgg")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + player.updateInventory(); + } + } else if (event.getItem().getType() == Material.ARMOR_STAND) { + if (!islandManager.hasPermission(player, block.getLocation(), "EntityPlacement")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + player.updateInventory(); + } + } + } + } else if (event.getAction() == Action.LEFT_CLICK_BLOCK) { + // Note: Cast is necessary as it is ambiguous without it in 1.8 + if (player.getTargetBlock(null, 5).getType() == Material.FIRE) { + if (!islandManager.hasPermission(player, block.getLocation(), "Fire")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } else if (event.getAction() == Action.PHYSICAL) { + if (block.getType() == Materials.TURTLE_EGG.parseMaterial()) { + event.setCancelled(true); + } else if (block.getType() == Materials.FARMLAND.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "Crop")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else if (block.getType() == Materials.STONE_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.OAK_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.SPRUCE_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.BIRCH_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.JUNGLE_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.ACACIA_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.DARK_OAK_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.LIGHT_WEIGHTED_PRESSURE_PLATE.parseMaterial() + || block.getType() == Materials.HEAVY_WEIGHTED_PRESSURE_PLATE.parseMaterial()) { + if (!islandManager.hasPermission(player, block.getLocation(), "PressurePlate")) { + event.setCancelled(true); + } + } else if (block.getType() == Material.TRIPWIRE) { + if (!islandManager.hasPermission(player, block.getLocation(), "Redstone")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } + } + + @EventHandler + public void onPlayerInteractStructure(PlayerInteractEvent event) { + Player player = event.getPlayer(); + + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + if (event.getItem() != null) { + try { + if (event.getAction() == Action.LEFT_CLICK_BLOCK) { + ItemStack structureTool = StructureUtil.getTool(); + + if ((event.getItem().getType() == structureTool.getType()) && (event.getItem().hasItemMeta()) + && (event.getItem().getItemMeta().getDisplayName() + .equals(structureTool.getItemMeta().getDisplayName()))) { + if (player.hasPermission("fabledskyblock.admin.structure.selection") + || player.hasPermission("fabledskyblock.admin.structure.*") + || player.hasPermission("fabledskyblock.admin.*") || player.hasPermission("fabledskyblock.*")) { + event.setCancelled(true); + + skyblock.getPlayerDataManager().getPlayerData(player).getArea().setPosition(1, + event.getClickedBlock().getLocation()); + + messageManager.sendMessage(player, + skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Structure.Tool.Position.Message") + .replace("%position", "1")); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + } + } + } else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { + ItemStack structureTool = StructureUtil.getTool(); + + if ((event.getItem().getType() == structureTool.getType()) && (event.getItem().hasItemMeta()) + && (event.getItem().getItemMeta().getDisplayName() + .equals(structureTool.getItemMeta().getDisplayName()))) { + if (player.hasPermission("fabledskyblock.admin.structure.selection") + || player.hasPermission("fabledskyblock.admin.structure.*") + || player.hasPermission("fabledskyblock.admin.*") || player.hasPermission("fabledskyblock.*")) { + event.setCancelled(true); + + skyblock.getPlayerDataManager().getPlayerData(player).getArea().setPosition(2, + event.getClickedBlock().getLocation()); + + messageManager.sendMessage(player, + skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Structure.Tool.Position.Message") + .replace("%position", "2")); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + } + } + } + } catch (Exception e) { + } + } + } + + @SuppressWarnings("deprecation") + @EventHandler + public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { + Player player = event.getPlayer(); + org.bukkit.entity.Entity entity = event.getRightClicked(); + + ItemStack is = player.getItemInHand(); + + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + if (skyblock.getWorldManager().isIslandWorld(entity.getWorld())) { + if ((is != null) && (is.getType() != Material.AIR)) { + if (is.getType() == Materials.LEAD.parseMaterial()) { + if (!islandManager.hasPermission(player, entity.getLocation(), "Leash")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + } + + if (entity.getType() == EntityType.HORSE || entity.getType() == EntityType.PIG) { + if (entity.getType() == EntityType.HORSE) { + Horse horse = (Horse) event.getRightClicked(); + + if (horse.getInventory().getSaddle() != null && player.isSneaking()) { + if (!islandManager.hasPermission(player, horse.getLocation(), "HorseInventory")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else { + if (!islandManager.hasPermission(player, horse.getLocation(), "MobRiding")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + } else if (entity.getType() == EntityType.PIG) { + if (!islandManager.hasPermission(player, entity.getLocation(), "MobRiding")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + } else if (entity.getType().equals(EntityType.SHEEP)) { + if (!islandManager.hasPermission(player, entity.getLocation(), "EntityPlacement")) { + event.setCancelled(true); + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else if (entity.getType().equals(EntityType.ITEM_FRAME)) { + if (!skyblock.getIslandManager().hasPermission(player, entity.getLocation(), "Storage")) { + event.setCancelled(true); + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } else if (entity.getType() == EntityType.COW || entity.getType() == EntityType.MUSHROOM_COW) { + if (is.getType() == Material.BUCKET) { + if (!islandManager.hasPermission(player, entity.getLocation(), "Milking")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + } else if (entity.getType() == EntityType.VILLAGER) { + if (!islandManager.hasPermission(player, entity.getLocation(), "Trading")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (entity instanceof StorageMinecart) { + if (!islandManager.hasPermission(player, entity.getLocation(), "Storage")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (entity.getType() == EntityType.MINECART || entity.getType() == EntityType.BOAT) { + if (!islandManager.hasPermission(player, entity.getLocation(), "MinecartBoat")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } else if (entity.getType() == EntityType.MINECART_HOPPER) { + if (!islandManager.hasPermission(player, entity.getLocation(), "Hopper")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + + if (entity.getType() == EntityType.HORSE) { + if (!(is.getType() == Material.GOLDEN_APPLE || is.getType() == Material.GOLDEN_CARROT + || is.getType() == Material.SUGAR || is.getType() == Material.WHEAT + || is.getType() == Material.APPLE || is.getType() == Material.HAY_BLOCK)) { + return; + } + } else if (entity.getType() == EntityType.SHEEP || entity.getType() == EntityType.COW + || entity.getType() == EntityType.MUSHROOM_COW) { + if (!(is.getType() == Material.WHEAT)) { + return; + } + } else if (entity.getType() == EntityType.PIG) { + if (!(is.getType() == Materials.CARROT.parseMaterial() + || is.getType() == Materials.POTATO.parseMaterial())) { + return; + } + } else if (entity.getType() == EntityType.CHICKEN) { + if (!(is.getType() == Materials.WHEAT_SEEDS.parseMaterial() || is.getType() == Material.PUMPKIN_SEEDS + || is.getType() == Material.MELON_SEEDS)) { + if (NMSUtil.getVersionNumber() > 8) { + if (!(is.getType() == Materials.BEETROOT_SEEDS.parseMaterial())) { + return; + } + } else { + return; + } + } + } else if (entity.getType() == EntityType.WOLF) { + if (!(is.getType() == Material.BONE || is.getType() == Materials.PORKCHOP.parseMaterial() + || is.getType() == Materials.BEEF.parseMaterial() + || is.getType() == Materials.CHICKEN.parseMaterial() || is.getType() == Material.RABBIT + || is.getType() == Material.MUTTON || is.getType() == Material.ROTTEN_FLESH + || is.getType() == Materials.COOKED_PORKCHOP.parseMaterial() + || is.getType() == Material.COOKED_BEEF || is.getType() == Material.COOKED_CHICKEN + || is.getType() == Material.COOKED_RABBIT || is.getType() == Material.COOKED_MUTTON)) { + return; + } + } else if (entity.getType() == EntityType.OCELOT) { + if (!(is.getType() == Materials.COD.parseMaterial() || is.getType() == Materials.SALMON.parseMaterial() + || is.getType() == Materials.TROPICAL_FISH.parseMaterial() + || is.getType() == Materials.PUFFERFISH.parseMaterial())) { + return; + } + } else if (entity.getType() == EntityType.RABBIT) { + if (!(is.getType() == Materials.DANDELION.parseMaterial() + || is.getType() == Materials.CARROTS.parseMaterial() + || is.getType() == Material.GOLDEN_CARROT)) { + return; + } + } else { + int NMSVersion = NMSUtil.getVersionNumber(); + + if (NMSVersion > 10) { + if (entity.getType() == EntityType.LLAMA) { + if (!(is.getType() == Materials.HAY_BLOCK.parseMaterial())) { + return; + } + } else if (NMSVersion > 12) { + if (entity.getType() == EntityType.TURTLE) { + if (!(is.getType() == Materials.SEAGRASS.parseMaterial())) { + return; + } + } else { + return; + } + } else { + return; + } + } else { + return; + } + } + + if (!islandManager.hasPermission(player, entity.getLocation(), "AnimalBreeding")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } + + @EventHandler + public void onPlayerDamageVehicle(VehicleDamageEvent event) { + if (!(event.getAttacker() instanceof Player)) + return; + + Player player = (Player) event.getAttacker(); + + if (!skyblock.getIslandManager().hasPermission(player, event.getVehicle().getLocation(), "MobHurting")) { + event.setCancelled(true); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + @EventHandler + public void onPlayerDestroyVehicle(VehicleDestroyEvent event) { + if (!(event.getAttacker() instanceof Player)) + return; + + Player player = (Player) event.getAttacker(); + + if (!skyblock.getIslandManager().hasPermission(player, event.getVehicle().getLocation(), "MobHurting")) { + event.setCancelled(true); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + + @EventHandler(ignoreCancelled = true) + public void onPlayerArmorStandManipulate(PlayerArmorStandManipulateEvent event) { + if (skyblock.getStackableManager() != null && skyblock.getStackableManager().isStacked(event.getRightClicked().getLocation().getBlock().getLocation())) { + event.setCancelled(true); + } + } + + + @EventHandler + public void onPlayerInteractAtEntity(PlayerInteractEntityEvent event) { + Player player = event.getPlayer(); + org.bukkit.entity.Entity entity = event.getRightClicked(); + + if (!skyblock.getWorldManager().isIslandWorld(entity.getWorld())) + return; + + if (entity instanceof ArmorStand) { + if (!skyblock.getIslandManager().hasPermission(player, entity.getLocation(), "ArmorStandUse")) { + event.setCancelled(true); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Inventory.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Inventory.java new file mode 100644 index 00000000..380038fe --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Inventory.java @@ -0,0 +1,40 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryOpenEvent; +import org.bukkit.inventory.HorseInventory; + +import java.io.File; + +public class Inventory implements Listener { + + private final SkyBlock skyblock; + + public Inventory(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onInventoryOpen(InventoryOpenEvent event) { + Player player = (Player) event.getPlayer(); + + if (!(event.getInventory() instanceof HorseInventory)) { + return; + } + + if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { + if (!skyblock.getIslandManager().hasPermission(player, "HorseInventory")) { + event.setCancelled(true); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Item.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Item.java new file mode 100644 index 00000000..3e115d59 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Item.java @@ -0,0 +1,40 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; + +@SuppressWarnings("deprecation") +public class Item implements Listener { + + private final SkyBlock skyblock; + + public Item(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onPlayerDropItem(PlayerDropItemEvent event) { + Player player = event.getPlayer(); + + if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { + if (!skyblock.getIslandManager().hasPermission(player, "ItemDrop")) { + event.setCancelled(true); + } + } + } + + @EventHandler + public void onPlayerPickupItem(PlayerPickupItemEvent event) { + Player player = event.getPlayer(); + + if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { + if (!skyblock.getIslandManager().hasPermission(player, "ItemPickup")) { + event.setCancelled(true); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Join.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Join.java new file mode 100644 index 00000000..f20ea3b4 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Join.java @@ -0,0 +1,170 @@ +package com.songoda.skyblock.listeners; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.scoreboard.Scoreboard; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.usercache.UserCacheManager; +import com.songoda.skyblock.utils.world.LocationUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +import java.io.File; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +public class Join implements Listener { + + private final SkyBlock skyblock; + + public Join(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + + ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + UserCacheManager userCacheManager = skyblock.getUserCacheManager(); + CooldownManager cooldownManager = skyblock.getCooldownManager(); + IslandManager islandManager = skyblock.getIslandManager(); + FileManager fileManager = skyblock.getFileManager(); + + userCacheManager.addUser(player.getUniqueId(), player.getName()); + userCacheManager.saveAsync(); + + try { + Island island = islandManager.loadIsland(player); + boolean teleportedToIsland = false; + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getBoolean("Island.Join.Spawn")) { + LocationUtil.teleportPlayerToSpawn(player); + } else if (configLoad.getBoolean("Island.Join.Island") && island != null) { + player.teleport(island.getLocation(IslandWorld.Normal, IslandEnvironment.Main)); + player.setFallDistance(0.0F); + teleportedToIsland = true; + } + + if (!teleportedToIsland) { + islandManager.loadPlayer(player); + } + } catch (Exception e) { + e.printStackTrace(); + } + + playerDataManager.loadPlayerData(player); + + if (playerDataManager.hasPlayerData(player)) { + String[] playerTexture; + + try { + Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player); + Method getProfileMethod = entityPlayer.getClass().getMethod("getProfile"); + GameProfile gameProfile = (GameProfile) getProfileMethod.invoke(entityPlayer); + Property property = gameProfile.getProperties().get("textures").iterator().next(); + playerTexture = new String[]{property.getSignature(), property.getValue()}; + } catch (Exception e) { + playerTexture = new String[]{ + "K9P4tCIENYbNpDuEuuY0shs1x7iIvwXi4jUUVsATJfwsAIZGS+9OZ5T2HB0tWBoxRvZNi73Vr+syRdvTLUWPusVXIg+2fhXmQoaNEtnQvQVGQpjdQP0TkZtYG8PbvRxE6Z75ddq+DVx/65OSNHLWIB/D+Rg4vINh4ukXNYttn9QvauDHh1aW7/IkIb1Bc0tLcQyqxZQ3mdglxJfgIerqnlA++Lt7TxaLdag4y1NhdZyd3OhklF5B0+B9zw/qP8QCzsZU7VzJIcds1+wDWKiMUO7+60OSrIwgE9FPamxOQDFoDvz5BOULQEeNx7iFMB+eBYsapCXpZx0zf1bduppBUbbVC9wVhto/J4tc0iNyUq06/esHUUB5MHzdJ0Y6IZJAD/xIw15OLCUH2ntvs8V9/cy5/n8u3JqPUM2zhUGeQ2p9FubUGk4Q928L56l3omRpKV+5QYTrvF+AxFkuj2hcfGQG3VE2iYZO6omXe7nRPpbJlHkMKhE8Xvd1HP4PKpgivSkHBoZ92QEUAmRzZydJkp8CNomQrZJf+MtPiNsl/Q5RQM+8CQThg3+4uWptUfP5dDFWOgTnMdA0nIODyrjpp+bvIJnsohraIKJ7ZDnj4tIp4ObTNKDFC/8j8JHz4VCrtr45mbnzvB2DcK8EIB3JYT7ElJTHnc5BKMyLy5SKzuw=", + "eyJ0aW1lc3RhbXAiOjE1MjkyNTg0MTE4NDksInByb2ZpbGVJZCI6Ijg2NjdiYTcxYjg1YTQwMDRhZjU0NDU3YTk3MzRlZWQ3IiwicHJvZmlsZU5hbWUiOiJTdGV2ZSIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGMxYzc3Y2U4ZTU0OTI1YWI1ODEyNTQ0NmVjNTNiMGNkZDNkMGNhM2RiMjczZWI5MDhkNTQ4Mjc4N2VmNDAxNiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjc2N2Q0ODMyNWVhNTMyNDU2MTQwNmI4YzgyYWJiZDRlMjc1NWYxMTE1M2NkODVhYjA1NDVjYzIifX19"}; + } + + PlayerData playerData = playerDataManager.getPlayerData(player); + playerData.setTexture(playerTexture[0], playerTexture[1]); + playerData.save(); + } else { + playerDataManager.createPlayerData(player); + playerDataManager.loadPlayerData(player); + } + + playerDataManager.storeIsland(player); + + cooldownManager.addCooldownPlayer(CooldownType.Biome, + cooldownManager.loadCooldownPlayer(CooldownType.Biome, player)); + cooldownManager.addCooldownPlayer(CooldownType.Creation, + cooldownManager.loadCooldownPlayer(CooldownType.Creation, player)); + + if (scoreboardManager != null) { + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + Scoreboard scoreboard = new Scoreboard(skyblock, player); + Island island = islandManager.getIsland(player); + + if (island != null) { + OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); + + cooldownManager.addCooldownPlayer(CooldownType.Levelling, + cooldownManager.loadCooldownPlayer(CooldownType.Levelling, offlinePlayer)); + cooldownManager.addCooldownPlayer(CooldownType.Ownership, + cooldownManager.loadCooldownPlayer(CooldownType.Ownership, offlinePlayer)); + + if (island.getRole(IslandRole.Member).size() == 0 && island.getRole(IslandRole.Operator).size() == 0) { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); + } + } else { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Team.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); + } + + Map displayVariables = new HashMap<>(); + displayVariables.put("%owner", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Owner")); + displayVariables.put("%operator", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Operator")); + displayVariables.put("%member", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Member")); + + scoreboard.setDisplayVariables(displayVariables); + } + } else { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); + scoreboard.setDisplayList( + config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); + } + + scoreboard.run(); + scoreboardManager.storeScoreboard(player, scoreboard); + } + + Island island = islandManager.getIslandPlayerAt(player); + if (island != null) { + islandManager.updateBorder(island); + islandManager.updateFlight(player); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Move.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Move.java similarity index 94% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Move.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Move.java index 1b83af85..6df0516e 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Move.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Move.java @@ -1,17 +1,17 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.*; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.world.WorldManager; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.world.WorldManager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.attribute.Attribute; diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Portal.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Portal.java similarity index 91% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Portal.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Portal.java index bd66af3a..ce76b623 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Portal.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Portal.java @@ -1,18 +1,18 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.world.WorldManager; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandEnvironment; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.world.WorldManager; import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Projectile.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Projectile.java new file mode 100644 index 00000000..2dcb24ab --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Projectile.java @@ -0,0 +1,58 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.entity.FishHook; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.ProjectileLaunchEvent; + +import java.io.File; + +public class Projectile implements Listener { + + private final SkyBlock skyblock; + + public Projectile(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onProjectileLaunch(ProjectileLaunchEvent event) { + if (!(event.getEntity().getShooter() instanceof Player)) { + return; + } + + Player player = (Player) event.getEntity().getShooter(); + + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { + if (event.getEntity() instanceof FishHook) { + if (!skyblock.getIslandManager().hasPermission(player, "Fishing")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + + return; + } + + if (!skyblock.getIslandManager().hasPermission(player, "Projectile")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Quit.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Quit.java new file mode 100644 index 00000000..664f97ef --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Quit.java @@ -0,0 +1,131 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.invite.Invite; +import com.songoda.skyblock.invite.InviteManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Set; +import java.util.UUID; + +public class Quit implements Listener { + + private final SkyBlock skyblock; + + public Quit(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) { + Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { + Player player = event.getPlayer(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + CooldownManager cooldownManager = skyblock.getCooldownManager(); + MessageManager messageManager = skyblock.getMessageManager(); + InviteManager inviteManager = skyblock.getInviteManager(); + IslandManager islandManager = skyblock.getIslandManager(); + + PlayerData playerData = playerDataManager.getPlayerData(player); + + try { + playerData.setLastOnline(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date())); + } catch (Exception ignored) { + } + + Island island = islandManager.getIsland(player); + + if (island != null) { + Set islandMembersOnline = islandManager.getMembersOnline(island); + + if (islandMembersOnline.size() == 1) { + OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); + cooldownManager.setCooldownPlayer(CooldownType.Levelling, offlinePlayer); + cooldownManager.removeCooldownPlayer(CooldownType.Levelling, offlinePlayer); + + cooldownManager.setCooldownPlayer(CooldownType.Ownership, offlinePlayer); + cooldownManager.removeCooldownPlayer(CooldownType.Ownership, offlinePlayer); + } else if (islandMembersOnline.size() == 2) { + for (UUID islandMembersOnlineList : islandMembersOnline) { + if (!islandMembersOnlineList.equals(player.getUniqueId())) { + Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); + PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); + + if (targetPlayerData.isChat()) { + targetPlayerData.setChat(false); + messageManager.sendMessage(targetPlayer, + skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Chat.Untoggled.Message")); + } + } + } + } + + final Island is = island; + Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> islandManager.unloadIsland(is, player)); + } + + cooldownManager.setCooldownPlayer(CooldownType.Biome, player); + cooldownManager.removeCooldownPlayer(CooldownType.Biome, player); + + cooldownManager.setCooldownPlayer(CooldownType.Creation, player); + cooldownManager.removeCooldownPlayer(CooldownType.Creation, player); + + playerDataManager.savePlayerData(player); + playerDataManager.unloadPlayerData(player); + + if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Coop.Unload")) { + for (Island islandList : islandManager.getCoopIslands(player)) { + islandList.removeCoopPlayer(player.getUniqueId()); + } + } + + if (playerData != null && playerData.getIsland() != null && islandManager.containsIsland(playerData.getIsland())) { + island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(playerData.getIsland())); + + if (!island.hasRole(IslandRole.Member, player.getUniqueId()) + && !island.hasRole(IslandRole.Operator, player.getUniqueId()) + && !island.hasRole(IslandRole.Owner, player.getUniqueId())) { + final Island is = island; + Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> islandManager.unloadIsland(is, null)); + } + } + + if (inviteManager.hasInvite(player.getUniqueId())) { + Invite invite = inviteManager.getInvite(player.getUniqueId()); + Player targetPlayer = Bukkit.getServer().getPlayer(invite.getOwnerUUID()); + + if (targetPlayer != null) { + messageManager.sendMessage(targetPlayer, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration() + .getString("Command.Island.Invite.Invited.Sender.Disconnected.Message") + .replace("%player", player.getName())); + skyblock.getSoundManager().playSound(targetPlayer, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + + inviteManager.removeInvite(player.getUniqueId()); + } + }); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Respawn.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Respawn.java new file mode 100644 index 00000000..93b5b723 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Respawn.java @@ -0,0 +1,78 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.event.player.PlayerTeleportEvent; + +import java.io.File; +import java.util.logging.Level; + +public class Respawn implements Listener { + + private final SkyBlock skyblock; + + public Respawn(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onPlayerRespawn(PlayerRespawnEvent event) { + Player player = event.getPlayer(); + + IslandManager islandManager = skyblock.getIslandManager(); + WorldManager worldManager = skyblock.getWorldManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (worldManager.isIslandWorld(player.getWorld())) { + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getBoolean("Island.Death.Respawn.Island")) { + Island island = islandManager.getIslandAtLocation(player.getLocation()); + + if (island != null) { + Location playerLocation = player.getLocation().clone(), islandLocation; + IslandWorld world = worldManager.getIslandWorld(player.getWorld()); + + if (island.hasRole(IslandRole.Member, player.getUniqueId()) + || island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + islandLocation = island.getLocation(world, IslandEnvironment.Main); + } else { + islandLocation = island.getLocation(world, IslandEnvironment.Visitor); + } + + Bukkit.getServer().getPluginManager() + .callEvent(new PlayerTeleportEvent(player, playerLocation, islandLocation)); + event.setRespawnLocation(islandLocation); + + islandManager.updateFlight(player); + + return; + } + } + + config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); + + if (config.getFileConfiguration().getString("Location.Spawn") == null) { + Bukkit.getServer().getLogger().log(Level.WARNING, "SkyBlock | Error: A spawn point hasn't been set."); + } else { + Location playerLocation = player.getLocation().clone(), + spawnLocation = fileManager.getLocation(config, "Location.Spawn", true); + Bukkit.getServer().getPluginManager() + .callEvent(new PlayerTeleportEvent(player, playerLocation, spawnLocation)); + event.setRespawnLocation(spawnLocation); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Spawner.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Spawner.java new file mode 100644 index 00000000..6419c9f7 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Spawner.java @@ -0,0 +1,101 @@ +package com.songoda.skyblock.listeners; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.upgrade.Upgrade; +import com.songoda.skyblock.utils.version.NMSUtil; +import org.bukkit.block.CreatureSpawner; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.SpawnerSpawnEvent; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.List; + +public class Spawner implements Listener { + + private final SkyBlock skyblock; + + public Spawner(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + @EventHandler + public void onSpawnSpawn(SpawnerSpawnEvent event) { + IslandManager islandManager = skyblock.getIslandManager(); + + CreatureSpawner spawner = event.getSpawner(); + org.bukkit.Location location = spawner.getBlock().getLocation(); + + if (skyblock.getWorldManager().isIslandWorld(location.getWorld())) { + Island island = islandManager.getIslandAtLocation(location); + + if (island != null) { + List upgrades = skyblock.getUpgradeManager().getUpgrades(Upgrade.Type.Spawner); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled() + && island.isUpgrade(Upgrade.Type.Spawner)) { + if (NMSUtil.getVersionNumber() > 12) { + if (spawner.getDelay() == 20) { + spawner.setDelay(10); + } + + spawner.setMinSpawnDelay(100); + spawner.setMaxSpawnDelay(400); + } else { + try { + Object MobSpawner = null; + + try { + Field TileEntityMobSpawnerField = spawner.getClass().getDeclaredField("spawner"); + TileEntityMobSpawnerField.setAccessible(true); + Object TileEntityMobSpawner = TileEntityMobSpawnerField.get(spawner); + MobSpawner = TileEntityMobSpawner.getClass().getMethod("getSpawner") + .invoke(TileEntityMobSpawner); + } catch (NoSuchFieldException e) { + Field snapshotField = spawner.getClass().getSuperclass().getDeclaredField("snapshot"); + snapshotField.setAccessible(true); + Object snapshot = snapshotField.get(spawner); + MobSpawner = snapshot.getClass().getMethod("getSpawner").invoke(snapshot); + } + + int spawnDelay = (int) MobSpawner.getClass().getSuperclass().getField("spawnDelay") + .get(MobSpawner); + + if (spawnDelay == 20) { + Field spawnDelayField = MobSpawner.getClass().getSuperclass().getField("spawnDelay"); + spawnDelayField.setAccessible(true); + spawnDelayField.set(MobSpawner, 10); + } + + Field minSpawnDelayField = MobSpawner.getClass().getSuperclass() + .getDeclaredField("minSpawnDelay"); + minSpawnDelayField.setAccessible(true); + int minSpawnDelay = (int) minSpawnDelayField.get(MobSpawner); + + if (minSpawnDelay != 100) { + minSpawnDelayField.set(MobSpawner, 100); + } + + Field maxSpawnDelayField = MobSpawner.getClass().getSuperclass() + .getDeclaredField("maxSpawnDelay"); + maxSpawnDelayField.setAccessible(true); + int maxSpawnDelay = (int) maxSpawnDelayField.get(MobSpawner); + + if (maxSpawnDelay != 400) { + maxSpawnDelayField.set(MobSpawner, 400); + } + } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException + | SecurityException | InvocationTargetException | NoSuchMethodException e) { + e.printStackTrace(); + } + } + } + + return; + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Teleport.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Teleport.java similarity index 85% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Teleport.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Teleport.java index 7d4a8a21..5eee7653 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Teleport.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/Teleport.java @@ -1,22 +1,22 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.player.PlayerIslandEnterEvent; -import me.goodandevil.skyblock.api.event.player.PlayerIslandExitEvent; -import me.goodandevil.skyblock.api.event.player.PlayerIslandSwitchEvent; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.visit.Visit; -import me.goodandevil.skyblock.world.WorldManager; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.event.player.PlayerIslandEnterEvent; +import com.songoda.skyblock.api.event.player.PlayerIslandExitEvent; +import com.songoda.skyblock.api.event.player.PlayerIslandSwitchEvent; +import com.songoda.skyblock.api.island.Island; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.Visit; +import com.songoda.skyblock.world.WorldManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.file.FileConfiguration; @@ -86,8 +86,8 @@ public class Teleport implements Listener { if (playerDataManager.hasPlayerData(player)) { PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = islandManager.getIslandAtLocation(event.getTo()); - + com.songoda.skyblock.island.Island island = islandManager.getIslandAtLocation(event.getTo()); + if (island != null) { if (!island.getOwnerUUID().equals(playerData.getOwner())) { if (!player.hasPermission("fabledskyblock.bypass") && !player.hasPermission("fabledskyblock.bypass.*") @@ -108,14 +108,14 @@ public class Teleport implements Listener { messageManager.sendMessage(player, configLoad.getString("Island.Visit.Banned.Teleport.Message")); soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - + return; } } } if (playerData.getIsland() != null && !playerData.getIsland().equals(island.getOwnerUUID())) { - me.goodandevil.skyblock.api.island.Island exitIsland = null; + Island exitIsland = null; OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(playerData.getIsland()); @@ -165,7 +165,7 @@ public class Teleport implements Listener { player.resetPlayerWeather(); if (playerData.getIsland() != null) { - me.goodandevil.skyblock.api.island.Island islandWrapper = null; + Island islandWrapper = null; island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(playerData.getIsland())); if (island != null) { diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/UltimateStacker.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/UltimateStacker.java similarity index 89% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/UltimateStacker.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/UltimateStacker.java index 523612f9..fd9b3a47 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/UltimateStacker.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/UltimateStacker.java @@ -1,14 +1,14 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.world.WorldManager; import com.songoda.ultimatestacker.events.SpawnerBreakEvent; import com.songoda.ultimatestacker.events.SpawnerPlaceEvent; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.world.WorldManager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.configuration.file.FileConfiguration; diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/WildStacker.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/WildStacker.java similarity index 91% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/WildStacker.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/WildStacker.java index 72e178f7..0293699f 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/WildStacker.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/listeners/WildStacker.java @@ -1,20 +1,14 @@ -package me.goodandevil.skyblock.listeners; +package com.songoda.skyblock.listeners; -import com.bgsoftware.wildstacker.api.events.BarrelPlaceEvent; -import com.bgsoftware.wildstacker.api.events.BarrelStackEvent; -import com.bgsoftware.wildstacker.api.events.BarrelUnstackEvent; -import com.bgsoftware.wildstacker.api.events.SpawnerPlaceEvent; -import com.bgsoftware.wildstacker.api.events.SpawnerStackEvent; -import com.bgsoftware.wildstacker.api.events.SpawnerUnstackEvent; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.Bukkit; +import com.bgsoftware.wildstacker.api.events.*; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.world.WorldManager; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.configuration.file.FileConfiguration; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Bans.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Bans.java new file mode 100644 index 00000000..5bebbb70 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Bans.java @@ -0,0 +1,241 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.util.Set; +import java.util.UUID; + +public class Bans { + + private static Bans instance; + + public static Bans getInstance() { + if (instance == null) { + instance = new Bans(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + Island island = skyblock.getIslandManager().getIsland(player); + + Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = languageConfig.getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData1 = playerDataManager.getPlayerData(player); + Island island1 = islandManager.getIsland(player); + + if (island1 == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Bans.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Banning")) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Bans.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Bans.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Bans.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Bans.Item.Information.Displayname"))))) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + Bukkit.getServer().dispatchCommand(player, + "island ban " + event1.getName()); + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is1 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is1.getItemMeta(); + im.setDisplayName(configLoad.getString("Menu.Bans.Item.Word.Enter")); + is1.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); + gui.open(); + }, 1L); + } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Bans.Item.Nothing.Displayname"))))) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Bans.Item.Previous.Displayname")))) { + playerData1.setPage(playerData1.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Bans.Item.Next.Displayname")))) { + playerData1.setPage(playerData1.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + if ((island1.hasRole(IslandRole.Operator, player.getUniqueId()) + && island1.getSetting(IslandRole.Operator, "Unban").getStatus()) + || island1.hasRole(IslandRole.Owner, player.getUniqueId())) { + String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); + Bukkit.getServer().dispatchCommand(player, "island unban " + playerName); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 3L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Bans.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } + } + }); + + Set islandBans = island.getBan().getBans(); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Bans.Item.Exit.Displayname"), null, null, null, null), 0, 8); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Bans.Item.Information.Displayname"), + configLoad.getStringList("Menu.Bans.Item.Information.Lore"), + new Placeholder[]{new Placeholder("%bans", "" + islandBans.size())}, null, null), 4); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Bans.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + int playerMenuPage = playerData.getPage(), nextEndIndex = islandBans.size() - playerMenuPage * 36; + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Bans.Item.Previous.Displayname"), null, null, null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Bans.Item.Next.Displayname"), null, null, null, null), 7); + } + + if (islandBans.size() == 0) { + nInv.addItem( + nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Bans.Item.Nothing.Displayname"), null, null, null, null), + 31); + } else { + int index = playerMenuPage * 36 - 36, + endIndex = index >= islandBans.size() ? islandBans.size() - 1 : index + 36, inventorySlot = 17; + + for (; index < endIndex; index++) { + if (islandBans.size() > index) { + inventorySlot++; + + UUID targetPlayerUUID = (UUID) islandBans.toArray()[index]; + String targetPlayerName; + String[] targetPlayerTexture; + + Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(targetPlayerUUID); + targetPlayerName = offlinePlayer.getName(); + targetPlayerTexture = offlinePlayer.getTexture(); + } else { + targetPlayerName = targetPlayer.getName(); + + if (playerDataManager.hasPlayerData(targetPlayer)) { + targetPlayerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); + } else { + targetPlayerTexture = new String[]{null, null}; + } + } + + nInv.addItem( + nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Bans.Item.Ban.Displayname") + .replace("%player", targetPlayerName == null ? "" : targetPlayerName)), + configLoad.getStringList("Menu.Bans.Item.Ban.Lore"), null, null, null), + inventorySlot); + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Bans.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Biome.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Biome.java new file mode 100644 index 00000000..8b775f12 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Biome.java @@ -0,0 +1,217 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.biome.BiomeManager; +import com.songoda.skyblock.cooldown.Cooldown; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownPlayer; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.SBiome; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; + +import java.io.File; + +public class Biome { + + private static Biome instance; + + public static Biome getInstance() { + if (instance == null) { + instance = new Biome(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + CooldownManager cooldownManager = skyblock.getCooldownManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + BiomeManager biomeManager = skyblock.getBiomeManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + if (playerDataManager.hasPlayerData(player)) { + FileConfiguration langConfig = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + langConfig.getString("Command.Island.Biome.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } else if (!((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Biome").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { + messageManager.sendMessage(player, + langConfig.getString("Command.Island.Biome.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + langConfig.getString("Menu.Biome.Item.Info.Displayname"))))) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + langConfig.getString("Menu.Biome.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + langConfig.getString("Menu.Biome.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else { + if (is.getItemMeta().hasEnchant(Enchantment.THORNS)) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + if (cooldownManager.hasPlayer(CooldownType.Biome, player) && !player.hasPermission("fabledskyblock.bypass.cooldown")) { + CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Biome, player); + Cooldown cooldown = cooldownPlayer.getCooldown(); + + if (cooldown.getTime() < 60) { + messageManager.sendMessage(player, + langConfig.getString("Island.Biome.Cooldown.Message") + .replace("%time", + cooldown.getTime() + " " + langConfig + .getString("Island.Biome.Cooldown.Word.Second"))); + } else { + long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); + messageManager.sendMessage(player, + langConfig.getString("Island.Biome.Cooldown.Message") + .replace("%time", durationTime[2] + " " + + langConfig.getString("Island.Biome.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + + langConfig.getString("Island.Biome.Cooldown.Word.Second"))); + } + + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + @SuppressWarnings("deprecation") + SBiome selectedBiomeType = SBiome.getFromGuiIcon(is.getType(), is.getData().getData()); + + cooldownManager.createPlayer(CooldownType.Biome, player); + biomeManager.setBiome(island, selectedBiomeType.getBiome()); + island.setBiome(selectedBiomeType.getBiome()); + island.save(); + + soundManager.playSound(island.getLocation(IslandWorld.Normal, IslandEnvironment.Island), + Sounds.SPLASH.bukkitSound(), 1.0F, 1.0F); + + if (!islandManager.isPlayerAtIsland(island, player, IslandWorld.Normal)) { + soundManager.playSound(player, Sounds.SPLASH.bukkitSound(), 1.0F, 1.0F); + } + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + }); + + Island island = islandManager.getIsland(player); + org.bukkit.block.Biome islandBiome = island.getBiome(); + String islandBiomeName = island.getBiomeName(); + + nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), + ChatColor.translateAlternateColorCodes('&', + langConfig.getString("Menu.Biome.Item.Info.Displayname")), + langConfig.getStringList("Menu.Biome.Item.Info.Lore"), + new Placeholder[]{new Placeholder("%biome_type", islandBiomeName)}, null, null), 4); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + langConfig.getString("Menu.Biome.Item.Exit.Displayname"), null, null, null, null), + 0, 8); + + nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + ChatColor.translateAlternateColorCodes('&', + langConfig.getString("Menu.Biome.Item.Barrier.Displayname")), + null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + FileConfiguration settings = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration(); + + boolean allowNetherBiome = settings.getBoolean("Island.Biome.AllowOtherWorldlyBiomes.Nether"); + boolean allowEndBiome = settings.getBoolean("Island.Biome.AllowOtherWorldlyBiomes.End"); + + int slotIndex = 18; + for (SBiome biome : SBiome.values()) { + if (!biome.isAvailable()) + continue; + + if (!allowNetherBiome && biome.equals(SBiome.NETHER)) + continue; + + if (!allowEndBiome && (biome.equals(SBiome.THE_END) || biome.equals(SBiome.THE_VOID))) + continue; + + if (!player.hasPermission("fabledskyblock.biome.*") && !player.hasPermission("fabledskyblock.biome." + biome.name().toLowerCase())) + continue; + + if (islandBiome.equals(biome.getBiome())) { + nInv.addItem(nInv.createItem(biome.getGuiIcon(), + ChatColor.translateAlternateColorCodes('&', + langConfig.getString("Menu.Biome.Item.Biome.Current.Displayname") + .replace("%biome_type", biome.getFormattedBiomeName())), + langConfig.getStringList("Menu.Biome.Item.Biome.Current.Lore"), null, + new Enchantment[]{Enchantment.THORNS}, new ItemFlag[]{ItemFlag.HIDE_ENCHANTS}), + slotIndex); + } else { + nInv.addItem(nInv.createItem(biome.getGuiIcon(), + ChatColor.translateAlternateColorCodes('&', + langConfig.getString("Menu.Biome.Item.Biome.Select.Displayname") + .replace("%biome_type", biome.getFormattedBiomeName())), + langConfig.getStringList("Menu.Biome.Item.Biome.Select.Lore"), null, null, null), + slotIndex); + } + + slotIndex++; + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', langConfig.getString("Menu.Biome.Title"))); + nInv.setRows(4); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Border.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Border.java new file mode 100644 index 00000000..9709ec86 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Border.java @@ -0,0 +1,222 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.WorldBorder; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; + +import java.io.File; + +public class Border { + + private static Border instance; + + public static Border getInstance() { + if (instance == null) { + instance = new Border(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Border").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Border.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Border.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Material.TRIPWIRE_HOOK) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Border.Item.Toggle.Displayname"))))) { + if (island.isBorder()) { + island.setBorder(false); + } else { + island.setBorder(true); + } + + islandManager.updateBorder(island); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if ((is.getType() == Materials.LIGHT_BLUE_DYE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Blue")))))) { + if (island.getBorderColor() == WorldBorder.Color.Blue) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + island.setBorderColor(WorldBorder.Color.Blue); + islandManager.updateBorder(island); + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } else if ((is.getType() == Materials.LIME_DYE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Green")))))) { + if (island.getBorderColor() == WorldBorder.Color.Green) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + island.setBorderColor(WorldBorder.Color.Green); + islandManager.updateBorder(island); + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } else if ((is.getType() == Materials.RED_DYE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Red")))))) { + if (island.getBorderColor() == WorldBorder.Color.Red) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + island.setBorderColor(WorldBorder.Color.Red); + islandManager.updateBorder(island); + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + }); + + Island island = islandManager.getIsland(player); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Border.Item.Exit.Displayname"), null, null, null, null), 0); + + WorldBorder.Color borderColor = island.getBorderColor(); + String borderToggle; + + if (island.isBorder()) { + borderToggle = configLoad.getString("Menu.Border.Item.Word.Disable"); + } else { + borderToggle = configLoad.getString("Menu.Border.Item.Word.Enable"); + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.TRIPWIRE_HOOK), + configLoad.getString("Menu.Border.Item.Toggle.Displayname"), + configLoad.getStringList("Menu.Border.Item.Toggle.Lore"), + new Placeholder[]{new Placeholder("%toggle", borderToggle)}, null, null), 1); + + if (borderColor == WorldBorder.Color.Blue) { + nInv.addItem(nInv.createItem(Materials.LIGHT_BLUE_DYE.parseItem(), + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Blue")), + configLoad.getStringList("Menu.Border.Item.Color.Selected.Lore"), + new Placeholder[]{new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Blue"))}, + null, null), 2); + } else { + nInv.addItem(nInv.createItem(Materials.LIGHT_BLUE_DYE.parseItem(), + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Blue")), + configLoad.getStringList("Menu.Border.Item.Color.Unselected.Lore"), + new Placeholder[]{new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Blue"))}, + null, null), 2); + } + + if (borderColor == WorldBorder.Color.Green) { + nInv.addItem(nInv.createItem(Materials.LIME_DYE.parseItem(), + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Green")), + configLoad.getStringList("Menu.Border.Item.Color.Selected.Lore"), + new Placeholder[]{ + new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Green"))}, + null, null), 3); + } else { + nInv.addItem(nInv.createItem(Materials.LIME_DYE.parseItem(), + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Green")), + configLoad.getStringList("Menu.Border.Item.Color.Unselected.Lore"), + new Placeholder[]{ + new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Green"))}, + null, null), 3); + } + + if (borderColor == WorldBorder.Color.Red) { + nInv.addItem(nInv.createItem(Materials.RED_DYE.parseItem(), + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Red")), + configLoad.getStringList("Menu.Border.Item.Color.Selected.Lore"), + new Placeholder[]{new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Red"))}, + null, null), 4); + } else { + nInv.addItem(nInv.createItem(Materials.RED_DYE.parseItem(), + configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", + configLoad.getString("Menu.Border.Item.Word.Red")), + configLoad.getStringList("Menu.Border.Item.Color.Unselected.Lore"), + new Placeholder[]{new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Red"))}, + null, null), 4); + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Border.Title"))); + nInv.setType(InventoryType.HOPPER); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/ControlPanel.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/ControlPanel.java new file mode 100644 index 00000000..3ae34b5a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/ControlPanel.java @@ -0,0 +1,141 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; + +import java.io.File; + +public class ControlPanel { + + private static ControlPanel instance; + + public static ControlPanel getInstance() { + if (instance == null) { + instance = new ControlPanel(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + Island island = skyblock.getIslandManager().getIsland(player); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_DOOR.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Teleport.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island teleport"), 1L); + } else if ((is.getType() == Materials.IRON_DOOR.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Lock.Displayname"))))) { + if (island.isOpen()) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island close"), 1L); + } else { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island open"), 1L); + } + } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Barrier.Displayname"))))) { + skyblock.getSoundManager().playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.EXPERIENCE_BOTTLE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Level.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island level"), 1L); + } else if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Settings.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island settings"), 1L); + } else if ((is.getType() == Material.ITEM_FRAME) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Members.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island members"), 1L); + } else if ((is.getType() == Materials.OAK_SAPLING.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Biome.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island biome"), 1L); + } else if ((is.getType() == Materials.CLOCK.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Weather.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island weather"), 1L); + } else if ((is.getType() == Material.IRON_AXE) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Bans.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island bans"), 1L); + } else if ((is.getType() == Materials.OAK_SIGN.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Visitors.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island visitors"), 1L); + } else if ((is.getType() == Materials.ANVIL.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.ControlPanel.Item.Upgrades.Displayname"))))) { + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island upgrades"), 1L); + } + }); + + // Teleport to island and open/close island + nInv.addItem(nInv.createItem(Materials.OAK_DOOR.parseItem(), + configLoad.getString("Menu.ControlPanel.Item.Teleport.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Teleport.Lore"), null, null, null), 1); + nInv.addItem(nInv.createItem(Materials.IRON_DOOR.parseItem(), + configLoad.getString("Menu.ControlPanel.Item.Lock.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Lock.Lore"), null, null, null), 10); + + // Glass panes barriers + nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.ControlPanel.Item.Barrier.Displayname"), null, null, null, null), 0, 2, 5, 8, 9, 11, 14, 17); + + // 4 Items at the left + nInv.addItem(nInv.createItem(new ItemStack(Materials.EXPERIENCE_BOTTLE.parseMaterial()), + configLoad.getString("Menu.ControlPanel.Item.Level.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Level.Lore"), null, null, null), 3); + nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), + configLoad.getString("Menu.ControlPanel.Item.Settings.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Settings.Lore"), null, null, null), 4); + nInv.addItem(nInv.createItem(Materials.CLOCK.parseItem(), + configLoad.getString("Menu.ControlPanel.Item.Weather.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Weather.Lore"), null, null, null), 12); + nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), + configLoad.getString("Menu.ControlPanel.Item.Biome.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Biome.Lore"), null, null, null), 13); + + // 4 Items at the right + nInv.addItem(nInv.createItem(new ItemStack(Material.ITEM_FRAME), + configLoad.getString("Menu.ControlPanel.Item.Members.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Members.Lore"), null, null, null), 16); + nInv.addItem(nInv.createItem(new ItemStack(Material.IRON_AXE), + configLoad.getString("Menu.ControlPanel.Item.Bans.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Bans.Lore"), null, null, + new ItemFlag[]{ItemFlag.HIDE_ATTRIBUTES}), 6); + nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), + configLoad.getString("Menu.ControlPanel.Item.Visitors.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Visitors.Lore"), null, null, null), 7); + nInv.addItem(nInv.createItem(new ItemStack(Materials.ANVIL.parseMaterial()), + configLoad.getString("Menu.ControlPanel.Item.Upgrades.Displayname"), + configLoad.getStringList("Menu.ControlPanel.Item.Upgrades.Lore"), null, null, null), 15); + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.ControlPanel.Title"))); + nInv.setRows(2); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Coop.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Coop.java new file mode 100644 index 00000000..57c60a2f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Coop.java @@ -0,0 +1,244 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.util.Set; +import java.util.UUID; + +public class Coop { + + private static Coop instance; + + public static Coop getInstance() { + if (instance == null) { + instance = new Coop(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Coop.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Coop.Enable")) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Coop.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Coop.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Coop.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Coop.Item.Information.Displayname"))))) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + Bukkit.getServer().dispatchCommand(player, + "island coop " + event1.getName()); + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is1 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is1.getItemMeta(); + im.setDisplayName(configLoad.getString("Menu.Coop.Item.Word.Enter")); + is1.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); + gui.open(); + }, 1L); + } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Coop.Item.Nothing.Displayname"))))) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Coop.Item.Previous.Displayname")))) { + playerData.setPage(playerData.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Coop.Item.Next.Displayname")))) { + playerData.setPage(playerData.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "CoopPlayers").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); + Bukkit.getServer().dispatchCommand(player, "island coop " + playerName); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 3L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Coop.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } + } + }); + + PlayerData playerData = playerDataManager.getPlayerData(player); + Island island = islandManager.getIsland(player); + + Set coopPlayers = island.getCoopPlayers(); + coopPlayers.removeIf(x -> !Bukkit.getOfflinePlayer(x).hasPlayedBefore()); + + int playerMenuPage = playerData.getPage(), nextEndIndex = coopPlayers.size() - playerMenuPage * 36; + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Coop.Item.Exit.Displayname"), null, null, null, null), 0, 8); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Coop.Item.Information.Displayname"), + configLoad.getStringList("Menu.Coop.Item.Information.Lore"), + new Placeholder[]{new Placeholder("%coops", "" + coopPlayers.size())}, null, null), 4); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Coop.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Coop.Item.Previous.Displayname"), null, null, null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Coop.Item.Next.Displayname"), null, null, null, null), 7); + } + + if (coopPlayers.size() == 0) { + nInv.addItem( + nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Coop.Item.Nothing.Displayname"), null, null, null, null), + 31); + } else { + int index = playerMenuPage * 36 - 36, + endIndex = index >= coopPlayers.size() ? coopPlayers.size() - 1 : index + 36, + inventorySlot = 17; + + for (; index < endIndex; index++) { + if (coopPlayers.size() > index) { + inventorySlot++; + + UUID targetPlayerUUID = (UUID) coopPlayers.toArray()[index]; + String targetPlayerName; + String[] targetPlayerTexture; + + Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(targetPlayerUUID); + targetPlayerName = offlinePlayer.getName(); + targetPlayerTexture = offlinePlayer.getTexture(); + } else { + targetPlayerName = targetPlayer.getName(); + + if (playerDataManager.hasPlayerData(targetPlayer)) { + targetPlayerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); + } else { + targetPlayerTexture = new String[]{null, null}; + } + } + + nInv.addItem( + nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Coop.Item.Coop.Displayname") + .replace("%player", targetPlayerName)), + configLoad.getStringList("Menu.Coop.Item.Coop.Lore"), null, null, null), + inventorySlot); + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Creator.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Creator.java new file mode 100644 index 00000000..84ee059d --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Creator.java @@ -0,0 +1,236 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.cooldown.Cooldown; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownPlayer; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.structure.Structure; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class Creator { + + private static Creator instance; + + public static Creator getInstance() { + if (instance == null) { + instance = new Creator(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + CooldownManager cooldownManager = skyblock.getCooldownManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + List availableStructures = new ArrayList<>(); + + for (Structure structureList : skyblock.getStructureManager().getStructures()) { + if (structureList.getDisplayname() == null || structureList.getDisplayname().isEmpty() + || structureList.getOverworldFile() == null || structureList.getOverworldFile().isEmpty() + || structureList.getNetherFile() == null || structureList.getNetherFile().isEmpty()) { + continue; + } + + if (structureList.isPermission()) { + if (!player.hasPermission(structureList.getPermission()) && !player.hasPermission("fabledskyblock.island.*") + && !player.hasPermission("fabledskyblock.*")) { + continue; + } + } + + availableStructures.add(structureList); + } + + int inventoryRows = 0; + + if (availableStructures.size() == 0) { + skyblock.getMessageManager().sendMessage(player, + configLoad.getString("Island.Creator.Selector.None.Message")); + skyblock.getSoundManager().playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (availableStructures.size() <= 9) { + inventoryRows = 1; + } else if (availableStructures.size() <= 18) { + inventoryRows = 2; + } else if (availableStructures.size() <= 27) { + inventoryRows = 3; + } else if (availableStructures.size() <= 36) { + inventoryRows = 4; + } else if (availableStructures.size() <= 45) { + inventoryRows = 5; + } else if (availableStructures.size() <= 54) { + inventoryRows = 6; + } + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (islandManager.getIsland(player) != null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Create.Owner.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + ItemStack is = event.getItem(); + + for (Structure structureList : skyblock.getStructureManager().getStructures()) { + if ((is.getType() == structureList.getMaterials().parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Creator.Selector.Item.Island.Displayname") + .replace("%displayname", structureList.getDisplayname()))))) { + if (structureList.isPermission() && structureList.getPermission() != null + && !structureList.getPermission().isEmpty()) { + if (!player.hasPermission(structureList.getPermission()) + && !player.hasPermission("fabledskyblock.island.*") + && !player.hasPermission("fabledskyblock.*")) { + messageManager.sendMessage(player, + configLoad.getString("Island.Creator.Selector.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } + } + + if (!fileManager.isFileExist( + new File(new File(skyblock.getDataFolder().toString() + "/" + + (structureList.getOverworldFile().endsWith(".structure") ? "structures" : "schematics")), + structureList.getOverworldFile()))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Creator.Selector.File.Overworld.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } else if (!fileManager.isFileExist( + new File(new File(skyblock.getDataFolder().toString() + "/" + + (structureList.getNetherFile().endsWith(".structure") ? "structures" : "schematics")), + structureList.getNetherFile()))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Creator.Selector.File.Nether.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } else if (!fileManager.isFileExist( + new File(new File(skyblock.getDataFolder().toString() + "/" + + (structureList.getEndFile().endsWith(".structure") ? "structures" : "schematics")), + structureList.getEndFile()))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Creator.Selector.File.End.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Creation.Cooldown.Creation.Enable") + && cooldownManager.hasPlayer(CooldownType.Creation, player)) { + CooldownPlayer cooldownPlayer = cooldownManager + .getCooldownPlayer(CooldownType.Creation, player); + Cooldown cooldown = cooldownPlayer.getCooldown(); + + if (cooldown.getTime() < 60) { + messageManager.sendMessage(player, config.getFileConfiguration() + .getString("Island.Creator.Selector.Cooldown.Message") + .replace("%time", cooldown.getTime() + " " + + config.getFileConfiguration().getString( + "Island.Creator.Selector.Cooldown.Word.Second"))); + } else { + long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); + messageManager.sendMessage(player, config.getFileConfiguration() + .getString("Island.Creator.Selector.Cooldown.Message") + .replace("%time", durationTime[2] + " " + + config.getFileConfiguration().getString( + "Island.Creator.Selector.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + + config.getFileConfiguration().getString( + "Island.Creator.Selector.Cooldown.Word.Second"))); + } + + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + if (islandManager.createIsland(player, structureList)) { + messageManager.sendMessage(player, + configLoad.getString("Island.Creator.Selector.Created.Message")); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + } + + return; + } + } + }); + }); + + for (int i = 0; i < availableStructures.size(); i++) { + Structure structure = availableStructures.get(i); + List itemLore = new ArrayList<>(); + + for (String itemLoreList : configLoad.getStringList("Menu.Creator.Selector.Item.Island.Lore")) { + if (itemLoreList.contains("%description")) { + if (structure.getDescription() == null || structure.getDescription().isEmpty()) { + itemLore.add(configLoad.getString("Menu.Creator.Selector.Item.Island.Word.Empty")); + } else { + for (String descriptionList : structure.getDescription()) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', descriptionList)); + } + } + } else { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + } + + nInv.addItem(nInv.createItem(structure.getMaterials().parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Creator.Selector.Item.Island.Displayname") + .replace("%displayname", structure.getDisplayname())), + itemLore, null, null, null), i); + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Creator.Selector.Title"))); + nInv.setRows(inventoryRows); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Information.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Information.java new file mode 100644 index 00000000..76f54b96 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Information.java @@ -0,0 +1,594 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.Visit; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +public class Information { + + private static Information instance; + + public static Information getInstance() { + if (instance == null) { + instance = new Information(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + + if (playerData.getViewer() != null) { + Information.Viewer viewer = (Information.Viewer) playerData.getViewer(); + org.bukkit.OfflinePlayer targetOfflinePlayer = Bukkit.getServer().getOfflinePlayer(viewer.getOwner()); + + if (islandManager.getIsland(targetOfflinePlayer) == null) { + islandManager.loadIsland(targetOfflinePlayer); + } + + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(viewer.getOwner())); + + if (island == null) { + messageManager.sendMessage(player, configLoad.getString("Island.Information.Island.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (viewer.getType() == Information.Viewer.Type.Visitors) { + if (island.isOpen()) { + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + messageManager.sendMessage(player, + configLoad.getString("Island.Information.Visitors.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + playerData.setViewer( + new Information.Viewer(viewer.getOwner(), Information.Viewer.Type.Categories)); + open(player); + + return; + } + } else { + messageManager.sendMessage(player, configLoad.getString("Island.Information.Closed.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + playerData.setViewer( + new Information.Viewer(viewer.getOwner(), Information.Viewer.Type.Categories)); + open(player); + + return; + } + } + + Visit visit = island.getVisit(); + + String islandOwnerName = ""; + Player targetPlayer = Bukkit.getServer().getPlayer(viewer.getOwner()); + + if (targetPlayer == null) { + islandOwnerName = new OfflinePlayer(viewer.getOwner()).getName(); + } else { + islandOwnerName = targetPlayer.getName(); + } + + if (viewer.getType() == Information.Viewer.Type.Categories) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData13 = playerDataManager.getPlayerData(player); + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Categories.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Materials.ITEM_FRAME.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Categories.Item.Members.Displayname"))))) { + playerData13.setViewer(new Viewer( + ((Viewer) playerData13.getViewer()).getOwner(), + Viewer.Type.Members)); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if ((is.getType() == Materials.LEGACY_EMPTY_MAP.getPostMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Categories.Item.Information.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.PAINTING.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Categories.Item.Visitors.Displayname"))))) { + playerData13.setViewer(new Viewer( + ((Viewer) playerData13.getViewer()).getOwner(), + Viewer.Type.Visitors)); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } + } + }); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Information.Categories.Item.Exit.Displayname"), null, null, null, + null), 0, 4); + nInv.addItem(nInv.createItem(Materials.ITEM_FRAME.parseItem(), + configLoad.getString("Menu.Information.Categories.Item.Members.Displayname"), + configLoad.getStringList("Menu.Information.Categories.Item.Members.Lore"), null, null, + null), 1); + nInv.addItem(nInv.createItem(Materials.PAINTING.parseItem(), + configLoad.getString("Menu.Information.Categories.Item.Visitors.Displayname"), + configLoad.getStringList("Menu.Information.Categories.Item.Visitors.Lore"), null, null, + null), 3); + + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + List itemLore = new ArrayList<>(); + + String safety = ""; + + if (visit.getSafeLevel() > 0) { + safety = configLoad.getString("Menu.Information.Categories.Item.Information.Vote.Word.Unsafe"); + } else { + safety = configLoad.getString("Menu.Information.Categories.Item.Information.Vote.Word.Safe"); + } + + if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Vote")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { + for (String itemLoreList : configLoad.getStringList( + "Menu.Information.Categories.Item.Information.Vote.Enabled.Signature.Enabled.Lore")) { + if (itemLoreList.contains("%signature")) { + List islandSignature = visit.getSiganture(); + + if (islandSignature.size() == 0) { + itemLore.add(configLoad.getString( + "Menu.Information.Categories.Item.Information.Vote.Word.Empty")); + } else { + for (String signatureList : islandSignature) { + itemLore.add(signatureList); + } + } + } else { + itemLore.add(itemLoreList); + } + } + } else { + itemLore.addAll(configLoad.getStringList( + "Menu.Information.Categories.Item.Information.Vote.Enabled.Signature.Disabled.Lore")); + } + + nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), + configLoad.getString("Menu.Information.Categories.Item.Information.Displayname"), + itemLore, + new Placeholder[]{new Placeholder("%level", "" + visit.getLevel().getLevel()), + new Placeholder("%members", "" + visit.getMembers()), + new Placeholder("%votes", "" + visit.getVoters().size()), + new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%players", + "" + islandManager.getPlayersAtIsland(island).size()), + new Placeholder("%player_capacity", + "" + mainConfig.getFileConfiguration() + .getInt("Island.Visitor.Capacity")), + new Placeholder("%owner", islandOwnerName), + new Placeholder("%safety", safety)}, + null, null), 2); + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { + for (String itemLoreList : configLoad.getStringList( + "Menu.Information.Categories.Item.Information.Vote.Disabled.Signature.Enabled.Lore")) { + if (itemLoreList.contains("%signature")) { + List islandSignature = visit.getSiganture(); + + if (islandSignature.size() == 0) { + itemLore.add(configLoad.getString( + "Menu.Information.Categories.Item.Information.Vote.Word.Empty")); + } else { + for (String signatureList : islandSignature) { + itemLore.add(signatureList); + } + } + } else { + itemLore.add(itemLoreList); + } + } + } else { + itemLore.addAll(configLoad.getStringList( + "Menu.Information.Categories.Item.Information.Vote.Disabled.Signature.Disabled.Lore")); + } + + nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), + configLoad.getString("Menu.Information.Categories.Item.Information.Displayname"), + itemLore, + new Placeholder[]{new Placeholder("%level", "" + visit.getLevel().getLevel()), + new Placeholder("%members", "" + visit.getMembers()), + new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%players", + "" + islandManager.getPlayersAtIsland(island).size()), + new Placeholder("%player_capacity", + "" + mainConfig.getFileConfiguration() + .getInt("Island.Visitor.Capacity")), + new Placeholder("%owner", islandOwnerName), + new Placeholder("%safety", safety)}, + null, null), 2); + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Information.Categories.Title"))); + nInv.setType(InventoryType.HOPPER); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else if (viewer.getType() == Information.Viewer.Type.Members) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData1 = playerDataManager.getPlayerData(player); + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Members.Item.Return.Displayname"))))) { + playerData1.setViewer(new Viewer( + ((Viewer) playerData1.getViewer()).getOwner(), + Viewer.Type.Categories)); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if ((is.getType() == Materials.PAINTING.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Members.Item.Statistics.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Members.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) + && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Members.Item.Previous.Displayname")))) { + playerData1.setPage(playerData1.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Information.Members.Item.Next.Displayname")))) { + playerData1.setPage(playerData1.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } + }); + + List displayedMembers = new ArrayList<>(); + + Set islandMembers = island.getRole(IslandRole.Member); + Set islandOperators = island.getRole(IslandRole.Operator); + + displayedMembers.add(island.getOwnerUUID()); + displayedMembers.addAll(islandOperators); + displayedMembers.addAll(islandMembers); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Information.Members.Item.Return.Displayname"), null, null, null, + null), 0, 8); + nInv.addItem( + nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Information.Members.Item.Statistics.Displayname"), + configLoad.getStringList("Menu.Information.Members.Item.Statistics.Lore"), + new Placeholder[]{ + new Placeholder("%island_members", + "" + (islandMembers.size() + islandOperators.size() + 1)), + new Placeholder("%island_capacity", + "" + skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Member.Capacity")), + new Placeholder("%members", "" + islandMembers.size()), + new Placeholder("%operators", "" + islandOperators.size())}, + null, null), + 4); + nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Information.Members.Item.Barrier.Displayname"), null, null, null, + null), 9, 10, 11, 12, 13, 14, 15, 16, 17); + + int playerMenuPage = playerData.getPage(), + nextEndIndex = displayedMembers.size() - playerMenuPage * 36; + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Information.Members.Item.Previous.Displayname"), null, null, + null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Information.Members.Item.Next.Displayname"), null, null, + null, null), 7); + } + + int index = playerMenuPage * 36 - 36, + endIndex = index >= displayedMembers.size() ? displayedMembers.size() - 1 : index + 36, + inventorySlot = 17; + + for (; index < endIndex; index++) { + if (displayedMembers.size() > index) { + inventorySlot++; + + UUID playerUUID = displayedMembers.get(index); + + String[] playerTexture; + String playerName, islandRole; + + targetPlayer = Bukkit.getServer().getPlayer(playerUUID); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(playerUUID); + playerName = offlinePlayer.getName(); + playerTexture = offlinePlayer.getTexture(); + } else { + playerName = targetPlayer.getName(); + playerData = skyblock.getPlayerDataManager().getPlayerData(targetPlayer); + playerTexture = playerData.getTexture(); + } + + if (islandMembers.contains(playerUUID)) { + islandRole = configLoad.getString("Menu.Information.Members.Item.Member.Word.Member"); + } else if (islandOperators.contains(playerUUID)) { + islandRole = configLoad.getString("Menu.Information.Members.Item.Member.Word.Operator"); + } else { + islandRole = configLoad.getString("Menu.Information.Members.Item.Member.Word.Owner"); + } + + nInv.addItem( + nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), + configLoad.getString("Menu.Information.Members.Item.Member.Displayname") + .replace("%player", playerName), + configLoad.getStringList("Menu.Information.Members.Item.Member.Lore"), + new Placeholder[]{new Placeholder("%role", islandRole)}, null, null), + inventorySlot); + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Information.Members.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else if (viewer.getType() == Information.Viewer.Type.Visitors) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData12 = playerDataManager.getPlayerData(player); + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Visitors.Item.Return.Displayname"))))) { + playerData12.setViewer(new Viewer( + ((Viewer) playerData12.getViewer()).getOwner(), + Viewer.Type.Categories)); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if ((is.getType() == Materials.PAINTING.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Visitors.Item.Statistics.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Visitors.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) + && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Information.Visitors.Item.Previous.Displayname")))) { + playerData12.setPage(playerData12.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Information.Visitors.Item.Next.Displayname")))) { + playerData12.setPage(playerData12.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } + }); + + List displayedVisitors = new ArrayList<>(); + displayedVisitors.addAll(islandManager.getVisitorsAtIsland(island)); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Information.Visitors.Item.Return.Displayname"), null, null, null, + null), 0, 8); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Information.Visitors.Item.Statistics.Displayname"), + configLoad.getStringList("Menu.Information.Visitors.Item.Statistics.Lore"), + new Placeholder[]{new Placeholder("%island_visitors", "" + displayedVisitors.size())}, + null, null), 4); + nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Information.Visitors.Item.Barrier.Displayname"), null, null, + null, null), 9, 10, 11, 12, 13, 14, 15, 16, 17); + + int playerMenuPage = playerData.getPage(), + nextEndIndex = displayedVisitors.size() - playerMenuPage * 36; + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Information.Visitors.Item.Previous.Displayname"), null, null, + null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Information.Visitors.Item.Next.Displayname"), null, null, + null, null), 7); + } + + int index = playerMenuPage * 36 - 36, + endIndex = index >= displayedVisitors.size() ? displayedVisitors.size() - 1 : index + 36, + inventorySlot = 17; + + for (; index < endIndex; index++) { + if (displayedVisitors.size() > index) { + inventorySlot++; + + UUID playerUUID = displayedVisitors.get(index); + + String[] playerTexture; + String playerName; + + targetPlayer = Bukkit.getServer().getPlayer(playerUUID); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(playerUUID); + playerName = offlinePlayer.getName(); + playerTexture = offlinePlayer.getTexture(); + } else { + playerName = targetPlayer.getName(); + playerData = skyblock.getPlayerDataManager().getPlayerData(targetPlayer); + playerTexture = playerData.getTexture(); + } + + nInv.addItem( + nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), + configLoad.getString("Menu.Information.Visitors.Item.Visitor.Displayname") + .replace("%player", playerName), + null, null, null, null), + inventorySlot); + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Information.Visitors.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + + islandManager.unloadIsland(island, null); + } + } + } + + public static class Viewer { + + private UUID islandOwnerUUID; + private Type type; + + public Viewer(UUID islandOwnerUUID, Type type) { + this.islandOwnerUUID = islandOwnerUUID; + this.type = type; + } + + public UUID getOwner() { + return islandOwnerUUID; + } + + public Type getType() { + return type; + } + + public enum Type { + + Categories, Members, Visitors + + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Leaderboard.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Leaderboard.java new file mode 100644 index 00000000..17ee3163 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Leaderboard.java @@ -0,0 +1,357 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.Visit; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class Leaderboard { + + private static Leaderboard instance; + + public static Leaderboard getInstance() { + if (instance == null) { + instance = new Leaderboard(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + Viewer viewer = (Viewer) playerDataManager.getPlayerData(player).getViewer(); + + if (viewer.getType() == Viewer.Type.Browse) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Leaderboard." + Viewer.Type.Browse.name() + + ".Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + + return; + } else if ((is.getType() == Material.DIAMOND) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad + .getString("Menu.Leaderboard." + Viewer.Type.Browse.name() + + ".Item.Leaderboard.Displayname") + .replace("%leaderboard", Viewer.Type.Level.name()))))) { + playerDataManager.getPlayerData(player).setViewer(new Viewer(Viewer.Type.Level)); + } else if ((is.getType() == Material.GOLD_INGOT) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad + .getString("Menu.Leaderboard." + Viewer.Type.Browse.name() + + ".Item.Leaderboard.Displayname") + .replace("%leaderboard", Viewer.Type.Bank.name()))))) { + playerDataManager.getPlayerData(player).setViewer(new Viewer(Viewer.Type.Bank)); + } else if ((is.getType() == Material.EMERALD) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad + .getString("Menu.Leaderboard." + Viewer.Type.Browse.name() + + ".Item.Leaderboard.Displayname") + .replace("%leaderboard", Viewer.Type.Votes.name()))))) { + playerDataManager.getPlayerData(player).setViewer(new Viewer(Viewer.Type.Votes)); + } + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + }); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Leaderboard." + viewer.getType().name() + ".Item.Exit.Displayname"), + null, null, null, null), 0, 4); + nInv.addItem( + nInv.createItem(new ItemStack(Material.DIAMOND), configLoad + .getString( + "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Displayname") + .replace("%leaderboard", Viewer.Type.Level.name()), + configLoad.getStringList( + "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Lore"), + new Placeholder[]{new Placeholder("%leaderboard", Viewer.Type.Level.name())}, null, + null), + 1); + nInv.addItem( + nInv.createItem(new ItemStack(Material.GOLD_INGOT), configLoad + .getString( + "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Displayname") + .replace("%leaderboard", Viewer.Type.Bank.name()), + configLoad.getStringList( + "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Lore"), + new Placeholder[]{new Placeholder("%leaderboard", Viewer.Type.Bank.name())}, null, + null), + 2); + nInv.addItem( + nInv.createItem(new ItemStack(Material.EMERALD), configLoad + .getString( + "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Displayname") + .replace("%leaderboard", Viewer.Type.Votes.name()), + configLoad.getStringList( + "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Lore"), + new Placeholder[]{new Placeholder("%leaderboard", Viewer.Type.Votes.name())}, null, + null), + 3); + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Leaderboard." + viewer.getType().name() + ".Title"))); + nInv.setType(InventoryType.HOPPER); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Exit.Displayname")))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Leaderboard.Leaderboard.Item.Return.Displayname")))) { + if (skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Vote")) { + playerDataManager.getPlayerData(player) + .setViewer(new Viewer(Viewer.Type.Browse)); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } + + return; + } + } + + int clickedSlot = event.getSlot(); + int leaderboardPosition = -1; + + if (clickedSlot == 13) { + leaderboardPosition = 0; + } else if (clickedSlot == 21) { + leaderboardPosition = 1; + } else if (clickedSlot == 22) { + leaderboardPosition = 2; + } else if (clickedSlot == 23) { + leaderboardPosition = 3; + } else if (clickedSlot == 29) { + leaderboardPosition = 4; + } else if (clickedSlot == 31) { + leaderboardPosition = 5; + } else if (clickedSlot == 33) { + leaderboardPosition = 6; + } else if (clickedSlot == 37) { + leaderboardPosition = 7; + } else if (clickedSlot == 40) { + leaderboardPosition = 8; + } else if (clickedSlot == 43) { + leaderboardPosition = 9; + } + + if (leaderboardPosition != -1) { + List leaderboardIslands = skyblock + .getLeaderboardManager().getLeaderboard( + com.songoda.skyblock.leaderboard.Leaderboard.Type.valueOf(viewer.getType().name())); + + if (leaderboardIslands.size() > leaderboardPosition) { + com.songoda.skyblock.leaderboard.Leaderboard leaderboard = leaderboardIslands.get(leaderboardPosition); + Visit visit = leaderboard.getVisit(); + + OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); + Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> Bukkit.dispatchCommand(player, "island teleport " + offlinePlayer.getName())); + } + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + }); + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Visitor.Vote")) { + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Return.Displayname"), null, null, + null, null), 0, 8); + } else { + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Exit.Displayname"), null, null, + null, null), 0, 8); + } + + List leaderboardIslands = skyblock + .getLeaderboardManager().getLeaderboard( + com.songoda.skyblock.leaderboard.Leaderboard.Type.valueOf(viewer.getType().name())); + + for (int i = 0; i < leaderboardIslands.size(); i++) { + com.songoda.skyblock.leaderboard.Leaderboard leaderboard = leaderboardIslands.get(i); + Visit visit = leaderboard.getVisit(); + + int itemSlot = 0; + + String playerName; + String[] playerTexture; + + Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); + playerName = offlinePlayer.getName(); + playerTexture = offlinePlayer.getTexture(); + } else { + playerName = targetPlayer.getName(); + + if (playerDataManager.hasPlayerData(targetPlayer)) { + playerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); + } else { + playerTexture = new String[]{null, null}; + } + } + + if (leaderboard.getPosition() == 0) { + itemSlot = 13; + } else if (leaderboard.getPosition() == 1) { + itemSlot = 21; + } else if (leaderboard.getPosition() == 2) { + itemSlot = 22; + } else if (leaderboard.getPosition() == 3) { + itemSlot = 23; + } else if (leaderboard.getPosition() == 4) { + itemSlot = 29; + } else if (leaderboard.getPosition() == 5) { + itemSlot = 31; + } else if (leaderboard.getPosition() == 6) { + itemSlot = 33; + } else if (leaderboard.getPosition() == 7) { + itemSlot = 37; + } else if (leaderboard.getPosition() == 8) { + itemSlot = 40; + } else if (leaderboard.getPosition() == 9) { + itemSlot = 43; + } + + List itemLore = new ArrayList<>(); + + for (String itemLoreList : configLoad.getStringList( + "Menu.Leaderboard.Leaderboard.Item.Island." + viewer.getType().name() + ".Lore")) { + if (itemLoreList.contains("%signature")) { + if (visit.getSiganture() == null || visit.getSiganture().size() == 0) { + itemLore.add( + configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Island.Word.Empty")); + } else { + for (String signatureList : visit.getSiganture()) { + itemLore.add(signatureList); + } + } + } else { + itemLore.add(itemLoreList); + } + } + + nInv.addItem( + nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), + configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Island.Displayname") + .replace( + "%owner", playerName) + .replace("%position", "" + (leaderboard.getPosition() + 1)), + itemLore, + new Placeholder[]{ + new Placeholder("%position", "" + (leaderboard.getPosition() + 1)), + new Placeholder("%owner", playerName), + new Placeholder("%level", "" + visit.getLevel().getLevel()), + new Placeholder("%balance", NumberUtil.formatNumberByDecimal(visit.getBankBalance())), + new Placeholder("%votes", "" + visit.getVoters().size()), + new Placeholder("%members", "" + visit.getMembers())}, + null, null), + itemSlot); + } + + int[] itemSlots = new int[]{13, 21, 22, 23, 29, 31, 33, 37, 40, 43}; + + for (int i = 0; i < itemSlots.length; i++) { + if (!nInv.getItems().containsKey(itemSlots[i])) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "gi+wnQt/y4Z6E9rn65iDWmt8vUOM2WXY66XvtydqDJZTzwgFrjVcx2c5YwdzvtOIRtiX2nZt4n2uWesUFKb59xS24YWbxCDXnalHhCpPFcIP58SQbCm9AYp3UPzkcRNWzuV4BddrS608QQZGyIFOUaLPOPasGITZu51VLcOKcTyFOCKu1QE2yRo1orTH8bWfdpE769BB/VYGdny0qJtm1amc12wGiVifMJRutZmYo2ZdA0APhIJVaNsPppNESVcbeBCvk60l4QK43C/p98/QEe5U6UJ6Z6N01pBQcswubMu8lCuPLasep+vX3v2K+Ui9jnTQNreGNIZPWVjf6V1GH4xMbbUVQJsoPdcaXG855VdzyoW+kyHdWYEojSn0qAY/moH6JCLnx6PLCv9mITSvOIUHq8ITet0M7Z9KALY5s6eg6VdA8TvClRy2TTm9tIRt//TJo5JxBoTYujawGNSR7ryODj2UEDQ2xOyWSagxAXZpispdrO5jHxRmBZUwX9vxnAp+CNWxifpu9sINJTlqYsT/KlGOJQC483gv5B6Nm5VBB1DRFmQkohzO6Wc2eDixgEbaU795GlLxrNaFfNjVH6Bwr1e7df2H3nE0P0bexs4wYdWplijn4gPyHwjT2LDBPGFQK3Vo2SlaXfPYbkIHX21c9qaz3eWHpLEXUBQfnWc=", + "eyJ0aW1lc3RhbXAiOjE1MzE3MTcxNjY3MDAsInByb2ZpbGVJZCI6IjYwNmUyZmYwZWQ3NzQ4NDI5ZDZjZTFkMzMyMWM3ODM4IiwicHJvZmlsZU5hbWUiOiJNSEZfUXVlc3Rpb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2QzNGUwNjNjYWZiNDY3YTVjOGRlNDNlYzc4NjE5Mzk5ZjM2OWY0YTUyNDM0ZGE4MDE3YTk4M2NkZDkyNTE2YTAifX19"), + configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Empty.Displayname") + .replace("%position", "" + (i + 1)), + configLoad.getStringList("Menu.Leaderboard.Leaderboard.Item.Empty.Lore"), + new Placeholder[]{new Placeholder("%position", "" + (i + 1))}, null, null), + itemSlots[i]); + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Leaderboard.Leaderboard.Title").replace("%leaderboard", + viewer.getType().name()))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } + } + + public static class Viewer { + + private Type type; + + public Viewer(Type type) { + this.type = type; + } + + public Type getType() { + return type; + } + + public enum Type { + + Browse, Level, Bank, Votes + + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Levelling.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Levelling.java new file mode 100644 index 00000000..d227646f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Levelling.java @@ -0,0 +1,320 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.cooldown.Cooldown; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownPlayer; +import com.songoda.skyblock.cooldown.CooldownType; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.MaterialUtil; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.apache.commons.lang3.text.WordUtils; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.OfflinePlayer; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class Levelling { + + private static Levelling instance; + + public static Levelling getInstance() { + if (instance == null) { + instance = new Levelling(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + LevellingManager levellingManager = skyblock.getLevellingManager(); + CooldownManager cooldownManager = skyblock.getCooldownManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (islandManager.getIsland(player) == null) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } + + if (playerDataManager.hasPlayerData(player)) { + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Levelling.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Levelling.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Levelling.Item.Statistics.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Levelling.Item.Nothing.Displayname"))))) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.FIREWORK_STAR.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Levelling.Item.Rescan.Displayname"))))) { + Island island = islandManager.getIsland(player); + OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); + + if (cooldownManager.hasPlayer(CooldownType.Levelling, offlinePlayer) && !player.hasPermission("fabledskyblock.bypass.cooldown")) { + CooldownPlayer cooldownPlayer = cooldownManager + .getCooldownPlayer(CooldownType.Levelling, offlinePlayer); + Cooldown cooldown = cooldownPlayer.getCooldown(); + + long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); + + if (cooldown.getTime() >= 3600) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Level.Cooldown.Message") + .replace("%time", durationTime[1] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") + + " " + durationTime[2] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + configLoad + .getString("Command.Island.Level.Cooldown.Word.Second"))); + } else if (cooldown.getTime() >= 60) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Level.Cooldown.Message") + .replace("%time", durationTime[2] + " " + + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + configLoad + .getString("Command.Island.Level.Cooldown.Word.Second"))); + } else { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Cooldown.Message") + .replace("%time", cooldown.getTime() + " " + configLoad + .getString("Command.Island.Level.Cooldown.Word.Second"))); + } + + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Level.Processing.Message")); + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + cooldownManager.createPlayer(CooldownType.Levelling, + Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); + levellingManager.calculatePoints(player, island); + }); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { + PlayerData playerData1 = skyblock.getPlayerDataManager().getPlayerData(player); + + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Levelling.Item.Previous.Displayname")))) { + playerData1.setPage(playerData1.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Levelling.Item.Next.Displayname")))) { + playerData1.setPage(playerData1.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + }); + + Island island = islandManager.getIsland(player); + IslandLevel level = island.getLevel(); + + Map testIslandMaterials = level.getMaterials(); + List testIslandMaterialKeysOrdered = testIslandMaterials.keySet().stream().sorted().collect(Collectors.toList()); + LinkedHashMap islandMaterials = new LinkedHashMap<>(); + + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); + Config settingsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + + // Filter out ItemStacks that can't be displayed in the inventory + Inventory testInventory = Bukkit.createInventory(null, 9); + for (String materialName : testIslandMaterialKeysOrdered) { + if (mainConfig.getFileConfiguration().getString("Materials." + materialName + ".Points") == null) + continue; + if (!settingsConfig.getFileConfiguration().getBoolean("Island.Levelling.IncludeEmptyPointsInList") && + mainConfig.getFileConfiguration().getInt("Materials." + materialName + ".Points") <= 0) + continue; + + long value = testIslandMaterials.get(materialName); + Materials materials = Materials.fromString(materialName); + ItemStack is = materials.parseItem(); + + if (is == null || is.getItemMeta() == null) continue; + + is.setAmount(Math.min(Math.toIntExact(value), 64)); + is.setType(MaterialUtil.correctMaterial(is.getType())); + + testInventory.clear(); + testInventory.setItem(0, is); + if (testInventory.getItem(0) != null) { + islandMaterials.put(materialName, value); + } + } + + int playerMenuPage = playerData.getPage(), nextEndIndex = islandMaterials.size() - playerMenuPage * 36; + + nInv.addItem( + nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Levelling.Item.Exit.Displayname"), null, null, null, null), + 0, 8); + nInv.addItem(nInv.createItem(Materials.FIREWORK_STAR.parseItem(), + configLoad.getString("Menu.Levelling.Item.Rescan.Displayname"), + configLoad.getStringList("Menu.Levelling.Item.Rescan.Lore"), null, null, + new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 3, 5); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Levelling.Item.Statistics.Displayname"), + configLoad.getStringList("Menu.Levelling.Item.Statistics.Lore"), + new Placeholder[]{ + new Placeholder("%level_points", NumberUtil.formatNumberByDecimal(level.getPoints())), + new Placeholder("%level", NumberUtil.formatNumberByDecimal(level.getLevel()))}, + null, null), 4); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Levelling.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Levelling.Item.Previous.Displayname"), null, null, null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Levelling.Item.Next.Displayname"), null, null, null, null), 7); + } + + if (islandMaterials.size() == 0) { + nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Levelling.Item.Nothing.Displayname"), null, null, null, null), 31); + } else { + int index = playerMenuPage * 36 - 36, + endIndex = index >= islandMaterials.size() ? islandMaterials.size() - 1 : index + 36, + inventorySlot = 17; + + for (; index < endIndex; index++) { + if (islandMaterials.size() > index) { + String material = (String) islandMaterials.keySet().toArray()[index]; + Materials materials = Materials.fromString(material); + + if (materials != null) { + long materialAmount = islandMaterials.get(material); + + if (mainConfig.getFileConfiguration().getString("Materials." + material + ".Points") != null) { + int pointsMultiplier = mainConfig.getFileConfiguration().getInt("Materials." + material + ".Points"); + + if (settingsConfig.getFileConfiguration().getBoolean("Island.Levelling.IncludeEmptyPointsInList") || pointsMultiplier != 0) { + inventorySlot++; + + long pointsEarned = materialAmount * pointsMultiplier; + + ItemStack is = materials.parseItem(); + is.setAmount(Math.min(Math.toIntExact(materialAmount), 64)); + is.setType(MaterialUtil.correctMaterial(is.getType())); + + String name; + if (materials.isSpawner() && materials != Materials.SPAWNER) { + name = "Spawner: " + WordUtils.capitalize(material.replace("SPAWNER_", "").toLowerCase().replace("_", " ")).trim(); + } else { + name = WordUtils.capitalize(material.toLowerCase().replace("_", " ")).trim(); + } + + List lore = configLoad.getStringList("Menu.Levelling.Item.Material.Lore"); + lore.replaceAll(x -> x.replace("%points", NumberUtil.formatNumberByDecimal(pointsEarned)) + .replace("%blocks", NumberUtil.formatNumberByDecimal(materialAmount)) + .replace("%material", name)); + + nInv.addItem(nInv.createItem(is, configLoad + .getString("Menu.Levelling.Item.Material.Displayname") + .replace("%points", NumberUtil.formatNumberByDecimal(pointsEarned)) + .replace("%blocks", NumberUtil.formatNumberByDecimal(materialAmount)) + .replace("%material", name), + lore, null, null, null), inventorySlot); + } + } + } + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Levelling.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Members.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Members.java new file mode 100644 index 00000000..066035de --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Members.java @@ -0,0 +1,594 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.StringUtil; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +public class Members { + + private static Members instance; + + public static Members getInstance() { + if (instance == null) { + instance = new Members(); + } + + return instance; + } + + public void open(Player player, Members.Type type, Members.Sort sort) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + + if (playerData.getType() == null || playerData.getSort() == null) { + playerData.setType(Type.Default); + playerData.setSort(Sort.Default); + } + + ItemStack is = event.getItem(); + Island island = islandManager.getIsland(player); + + if (island == null) { + skyblock.getMessageManager().sendMessage(player, + configLoad.getString("Command.Island.Members.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Members.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Members.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Material.HOPPER) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Members.Item.Type.Displayname")))) { + Type type1 = (Type) playerData.getType(); + + if (type1.ordinal() + 1 == Type.values().length) { + playerData.setType(Type.Default); + } else { + playerData.setType(Type.values()[type1.ordinal() + 1]); + } + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Members.Item.Sort.Displayname")))) { + Sort sort1 = (Sort) playerData.getSort(); + + if (sort1.ordinal() + 1 == Sort.values().length) { + playerData.setSort(Sort.Default); + } else { + playerData.setSort(Sort.values()[sort1.ordinal() + 1]); + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 1L); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Members.Item.Statistics.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Members.Item.Nothing.Displayname"))))) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Members.Item.Previous.Displayname")))) { + playerData.setPage(playerData.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 1L); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Members.Item.Next.Displayname")))) { + playerData.setPage(playerData.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 1L); + } else { + String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); + UUID playerUUID; + + Player targetPlayer = Bukkit.getServer().getPlayer(playerName); + + if (targetPlayer == null) { + playerUUID = new OfflinePlayer(playerName).getUUID(); + } else { + playerUUID = targetPlayer.getUniqueId(); + } + + if (!(playerUUID.equals(player.getUniqueId()) + || island.hasRole(IslandRole.Owner, playerUUID))) { + if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + if (event.getClick() == ClickType.LEFT) { + if (island.hasRole(IslandRole.Member, playerUUID)) { + Bukkit.getServer().dispatchCommand(player, + "island promote " + playerName); + } else { + Bukkit.getServer().dispatchCommand(player, + "island demote " + playerName); + } + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 3L); + + return; + } else if (event.getClick() == ClickType.RIGHT) { + Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 3L); + + return; + } + } else if (island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Kick").getStatus()) { + Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 3L); + + return; + } + } + + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } + }); + + PlayerData playerData = playerDataManager.getPlayerData(player); + Island island = islandManager.getIsland(player); + + List displayedMembers = new ArrayList<>(); + Set islandMembers = island.getRole(IslandRole.Member); + Set islandOperators = island.getRole(IslandRole.Operator); + + if (type == Members.Type.Default) { + displayedMembers.add(island.getOwnerUUID()); + displayedMembers.addAll(islandOperators); + displayedMembers.addAll(islandMembers); + } else if (type == Members.Type.Members) { + displayedMembers.addAll(islandMembers); + } else if (type == Members.Type.Operators) { + displayedMembers.addAll(islandOperators); + } else if (type == Members.Type.Owner) { + displayedMembers.add(island.getOwnerUUID()); + } + + if (sort == Members.Sort.Playtime) { + Map sortedPlaytimes = new TreeMap<>(); + + for (UUID displayedMemberList : displayedMembers) { + Player targetPlayer = Bukkit.getServer().getPlayer(displayedMemberList); + + if (targetPlayer == null) { + sortedPlaytimes.put(YamlConfiguration + .loadConfiguration( + new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + displayedMemberList.toString() + ".yml")) + .getInt("Statistics.Island.Playtime"), displayedMemberList); + } else { + sortedPlaytimes.put(skyblock.getPlayerDataManager().getPlayerData(targetPlayer).getPlaytime(), + displayedMemberList); + } + } + + displayedMembers.clear(); + + for (Integer sortedPlaytimeList : sortedPlaytimes.keySet()) { + displayedMembers.add(sortedPlaytimes.get(sortedPlaytimeList)); + } + } else if (sort == Members.Sort.MemberSince) { + Map sortedDates = new TreeMap<>(); + + for (UUID displayedMemberList : displayedMembers) { + Player targetPlayer = Bukkit.getServer().getPlayer(displayedMemberList); + + try { + if (targetPlayer == null) { + sortedDates + .put(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss") + .parse(YamlConfiguration + .loadConfiguration(new File( + new File(skyblock.getDataFolder().toString() + + "/player-data"), + displayedMemberList.toString() + ".yml")) + .getString("Statistics.Island.Join")), + displayedMemberList); + } else { + sortedDates.put(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse( + skyblock.getPlayerDataManager().getPlayerData(targetPlayer).getMemberSince()), + displayedMemberList); + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + + displayedMembers.clear(); + + for (Date sortedDateList : sortedDates.keySet()) { + displayedMembers.add(sortedDates.get(sortedDateList)); + } + } else if (sort == Members.Sort.LastOnline) { + List onlineMembers = new ArrayList<>(displayedMembers); + Map sortedDates = new TreeMap<>(); + + for (UUID displayedMemberList : displayedMembers) { + Player targetPlayer = Bukkit.getServer().getPlayer(displayedMemberList); + + if (targetPlayer == null) { + onlineMembers.remove(displayedMemberList); + + try { + sortedDates + .put(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss") + .parse(YamlConfiguration + .loadConfiguration(new File( + new File(skyblock.getDataFolder().toString() + + "/player-data"), + displayedMemberList.toString() + ".yml")) + .getString("Statistics.Island.LastOnline")), + displayedMemberList); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + + displayedMembers.clear(); + displayedMembers.addAll(onlineMembers); + + for (Date sortedDateList : sortedDates.keySet()) { + displayedMembers.add(sortedDates.get(sortedDateList)); + } + } + + boolean[] operatorActions = new boolean[]{false, false}; + + if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + operatorActions = new boolean[]{true, true}; + } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { + if (island.getSetting(IslandRole.Operator, "Kick").getStatus()) { + operatorActions = new boolean[]{false, true}; + } + } + + int playerMenuPage = playerData.getPage(), nextEndIndex = displayedMembers.size() - playerMenuPage * 36; + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Members.Item.Exit.Displayname"), null, null, null, null), 0, 8); + nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), + configLoad.getString("Menu.Members.Item.Type.Displayname"), + configLoad.getStringList("Menu.Members.Item.Type.Lore"), + new Placeholder[]{new Placeholder("%type", type.name())}, null, null), 3); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Members.Item.Statistics.Displayname"), + configLoad.getStringList("Menu.Members.Item.Statistics.Lore"), + new Placeholder[]{ + new Placeholder("%island_members", + "" + (islandMembers.size() + islandOperators.size() + 1)), + new Placeholder("%island_capacity", + "" + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Member.Capacity")), + new Placeholder("%members", "" + islandMembers.size()), + new Placeholder("%operators", "" + islandOperators.size())}, + null, null), 4); + nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), + configLoad.getString("Menu.Members.Item.Sort.Displayname"), + configLoad.getStringList("Menu.Members.Item.Sort.Lore"), + new Placeholder[]{new Placeholder("%sort", StringUtil.capatilizeUppercaseLetters(sort.name()))}, + null, null), 5); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Members.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Members.Item.Previous.Displayname"), null, null, null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Members.Item.Next.Displayname"), null, null, null, null), 7); + } + + if (displayedMembers.size() == 0) { + nInv.addItem( + nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Members.Item.Nothing.Displayname"), null, null, null, null), + 31); + } else { + int index = playerMenuPage * 36 - 36, + endIndex = index >= displayedMembers.size() ? displayedMembers.size() - 1 : index + 36, + inventorySlot = 17; + + for (; index < endIndex; index++) { + if (displayedMembers.size() > index) { + inventorySlot++; + + UUID playerUUID = displayedMembers.get(index); + + String[] playerTexture; + String playerName, islandRole, islandPlaytimeFormatted, memberSinceFormatted, + lastOnlineFormatted = ""; + + long[] playTimeDurationTime, memberSinceDurationTime = null, lastOnlineDurationTime = null; + + int islandPlaytime; + + Player targetPlayer = Bukkit.getServer().getPlayer(playerUUID); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(playerUUID); + playerName = offlinePlayer.getName(); + playerTexture = offlinePlayer.getTexture(); + islandPlaytime = offlinePlayer.getPlaytime(); + playTimeDurationTime = NumberUtil.getDuration(Integer.valueOf(islandPlaytime)); + + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + memberSinceDurationTime = NumberUtil.getDuration( + simpleDateFormat.parse(offlinePlayer.getMemberSince()), new Date()); + lastOnlineDurationTime = NumberUtil + .getDuration(simpleDateFormat.parse(offlinePlayer.getLastOnline()), new Date()); + } catch (ParseException e) { + e.printStackTrace(); + } + } else { + playerName = targetPlayer.getName(); + + playerData = skyblock.getPlayerDataManager().getPlayerData(targetPlayer); + playerTexture = playerData.getTexture(); + islandPlaytime = playerData.getPlaytime(); + playTimeDurationTime = NumberUtil.getDuration(Integer.valueOf(islandPlaytime)); + + try { + memberSinceDurationTime = NumberUtil.getDuration( + new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(playerData.getMemberSince()), + new Date()); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + if (islandMembers.contains(playerUUID)) { + islandRole = configLoad.getString("Menu.Members.Item.Member.Role.Word.Member"); + } else if (islandOperators.contains(playerUUID)) { + islandRole = configLoad.getString("Menu.Members.Item.Member.Role.Word.Operator"); + } else { + islandRole = configLoad.getString("Menu.Members.Item.Member.Role.Word.Owner"); + } + + if (islandPlaytime >= 86400) { + islandPlaytimeFormatted = playTimeDurationTime[0] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Days") + ", " + + playTimeDurationTime[1] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " + + playTimeDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + playTimeDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else if (islandPlaytime >= 3600) { + islandPlaytimeFormatted = playTimeDurationTime[1] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " + + playTimeDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + playTimeDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else if (islandPlaytime >= 60) { + islandPlaytimeFormatted = playTimeDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + playTimeDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else { + islandPlaytimeFormatted = playTimeDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } + + if (memberSinceDurationTime[0] != 0L) { + memberSinceFormatted = memberSinceDurationTime[0] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Days") + ", " + + memberSinceDurationTime[1] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " + + memberSinceDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + memberSinceDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else if (memberSinceDurationTime[1] != 0L) { + memberSinceFormatted = memberSinceDurationTime[1] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " + + memberSinceDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + memberSinceDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else if (memberSinceDurationTime[2] != 0L) { + memberSinceFormatted = memberSinceDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + memberSinceDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else { + memberSinceFormatted = memberSinceDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } + + if (lastOnlineDurationTime != null) { + if (lastOnlineDurationTime[0] != 0L) { + lastOnlineFormatted = lastOnlineDurationTime[0] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Days") + ", " + + lastOnlineDurationTime[1] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " + + lastOnlineDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + lastOnlineDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else if (lastOnlineDurationTime[1] != 0L) { + lastOnlineFormatted = lastOnlineDurationTime[1] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " + + lastOnlineDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + lastOnlineDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else if (lastOnlineDurationTime[2] != 0L) { + lastOnlineFormatted = lastOnlineDurationTime[2] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " + + lastOnlineDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } else { + lastOnlineFormatted = lastOnlineDurationTime[3] + " " + + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); + } + } + + List itemLore = new ArrayList<>(); + itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.Role.Lore")); + itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.Playtime.Lore")); + itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.Since.Lore")); + + if (lastOnlineDurationTime != null) { + itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.LastOnline.Lore")); + } + + if (!(playerUUID.equals(player.getUniqueId()) + || island.hasRole(IslandRole.Owner, playerUUID))) { + if (operatorActions[0] && operatorActions[1]) { + if (!island.hasRole(IslandRole.Owner, playerUUID)) { + itemLore.add(""); + + if (island.hasRole(IslandRole.Member, playerUUID)) { + itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") + .replace("%click", + configLoad + .getString("Menu.Members.Item.Member.Word.Left-Click")) + .replace("%action", configLoad + .getString("Menu.Members.Item.Member.Action.Word.Promote"))); + } else { + itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") + .replace("%click", + configLoad + .getString("Menu.Members.Item.Member.Word.Left-Click")) + .replace("%action", configLoad + .getString("Menu.Members.Item.Member.Action.Word.Demote"))); + } + + itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") + .replace("%click", + configLoad.getString("Menu.Members.Item.Member.Word.Right-Click")) + .replace("%action", + configLoad.getString("Menu.Members.Item.Member.Action.Word.Kick"))); + } + } else if (!operatorActions[0] && operatorActions[1]) { + if (!(playerUUID.equals(player.getUniqueId()) + && island.getRole(IslandRole.Operator).contains(playerUUID) + && island.hasRole(IslandRole.Owner, playerUUID))) { + itemLore.add(""); + itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") + .replace("%click", + configLoad.getString("Menu.Members.Item.Member.Word.Click")) + .replace("%action", + configLoad.getString("Menu.Members.Item.Member.Action.Word.Kick"))); + } + } + } + + nInv.addItem( + nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), + configLoad.getString("Menu.Members.Item.Member.Displayname").replace("%player", + playerName), + itemLore, + new Placeholder[]{new Placeholder("%role", islandRole), + new Placeholder("%playtime", islandPlaytimeFormatted), + new Placeholder("%since", memberSinceFormatted), + new Placeholder("%last_online", lastOnlineFormatted)}, + null, null), + inventorySlot); + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Members.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } + + public enum Type { + + Default, Members, Operators, Owner + + } + + public enum Sort { + + Default, Playtime, MemberSince, LastOnline + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Ownership.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Ownership.java new file mode 100644 index 00000000..51d58f92 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Ownership.java @@ -0,0 +1,298 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.util.UUID; + +public class Ownership { + + private static Ownership instance; + + public static Ownership getInstance() { + if (instance == null) { + instance = new Ownership(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!island.hasRole(IslandRole.Owner, player.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Ownership.Role.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (playerData.getType() == null) { + playerData.setType(Visibility.Hidden); + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Ownership.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Ownership.Item.Original.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Ownership.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.WRITABLE_BOOK.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Ownership.Item.Assign.Displayname"))))) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (playerDataManager.hasPlayerData(player)) { + Island island1 = islandManager.getIsland(player); + + if (island1 == null) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Ownership.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), + 1.0F, 1.0F); + + return; + } else if (!island1.hasRole(IslandRole.Owner, + player.getUniqueId())) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Ownership.Role.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), + 1.0F, 1.0F); + + return; + } + + Bukkit.getScheduler().runTask(skyblock, () -> Bukkit.getServer().dispatchCommand(player, + "island ownership " + event1.getName())); + } + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is1 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is1.getItemMeta(); + im.setDisplayName(configLoad.getString("Menu.Ownership.Item.Assign.Word.Enter")); + is1.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); + gui.open(); + }, 1L); + } else if ((is.getType() == Materials.LEGACY_EMPTY_MAP.getPostMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Ownership.Item.Password.Displayname"))))) { + if (island.hasPassword()) { + if (event.getClick() == ClickType.MIDDLE) { + Visibility visibility = (Visibility) playerData.getType(); + + if (visibility == Visibility.Hidden) { + playerData.setType(Visibility.Visible); + } else { + playerData.setType(Visibility.Hidden); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } else if (event.getClick() == ClickType.RIGHT) { + island.setPassword(null); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } else if (event.getClick() != ClickType.LEFT) { + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event12 -> { + if (event12.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (playerDataManager.hasPlayerData(player)) { + Island island12 = islandManager.getIsland(player); + + if (island12 == null) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Ownership.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), + 1.0F, 1.0F); + + return; + } else if (!island12.hasRole(IslandRole.Owner, + player.getUniqueId())) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Ownership.Role.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), + 1.0F, 1.0F); + + return; + } + + island12.setPassword( + event12.getName().replace("&", "").replace(" ", "")); + soundManager.playSound(player, Sounds.ANVIL_USE.bukkitSound(), 1.0F, + 1.0F); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, () -> open(player), 1L); + } + } else { + event12.setWillClose(false); + event12.setWillDestroy(false); + } + }); + + ItemStack is12 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is12.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Ownership.Item.Password.Hidden.Word.Enter")); + is12.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is12); + gui.open(); + }, 1L); + } + } + }); + + Island island = skyblock.getIslandManager().getIsland(player); + + UUID originalOwnerUUID = island.getOriginalOwnerUUID(); + + String originalOwnerName, ownershipPassword = island.getPassword(); + String[] playerTexture; + + Player targetPlayer = Bukkit.getServer().getPlayer(island.getOriginalOwnerUUID()); + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(originalOwnerUUID); + originalOwnerName = offlinePlayer.getName(); + playerTexture = offlinePlayer.getTexture(); + } else { + originalOwnerName = targetPlayer.getName(); + playerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); + } + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Ownership.Item.Exit.Displayname"), null, null, null, null), 0); + nInv.addItem(nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), + configLoad.getString("Menu.Ownership.Item.Original.Displayname"), + configLoad.getStringList("Menu.Ownership.Item.Original.Lore"), + new Placeholder[]{new Placeholder("%player", originalOwnerName)}, null, null), 1); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Ownership.Item.Barrier.Displayname"), null, null, null, null), + 2); + nInv.addItem(nInv.createItem(Materials.WRITABLE_BOOK.parseItem(), + configLoad.getString("Menu.Ownership.Item.Assign.Displayname"), + configLoad.getStringList("Menu.Ownership.Item.Assign.Lore"), null, null, null), 3); + + if (island.hasPassword()) { + if (playerDataManager.getPlayerData(player).getType() == Ownership.Visibility.Hidden) { + nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), + configLoad.getString("Menu.Ownership.Item.Password.Displayname"), + configLoad.getStringList("Menu.Ownership.Item.Password.Hidden.Lore"), null, null, null), 4); + } else { + nInv.addItem( + nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), + configLoad.getString("Menu.Ownership.Item.Password.Displayname"), + configLoad.getStringList("Menu.Ownership.Item.Password.Visible.Lore"), + new Placeholder[]{new Placeholder("%password", ownershipPassword)}, null, null), + 4); + } + } else { + nInv.addItem( + nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), + configLoad.getString("Menu.Ownership.Item.Password.Displayname"), + configLoad.getStringList("Menu.Ownership.Item.Password.Unset.Lore"), null, null, null), + 4); + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Ownership.Title"))); + nInv.setType(InventoryType.HOPPER); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } + + public enum Visibility { + + Visible, Hidden + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Rollback.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Rollback.java new file mode 100644 index 00000000..6d04a3b8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Rollback.java @@ -0,0 +1,205 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class Rollback implements Listener { + + private static Rollback instance; + + public static Rollback getInstance() { + if (instance == null) { + instance = new Rollback(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + Config languageConfig = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = languageConfig.getFileConfiguration(); + + Inventory inv = Bukkit.createInventory(null, InventoryType.HOPPER, + ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Rollback.Title"))); + + ItemStack is; + ItemMeta im; + + List itemLore = new ArrayList<>(); + + is = Materials.BLACK_STAINED_GLASS_PANE.parseItem(); + im = is.getItemMeta(); + im.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Barrier.Displayname"))); + is.setItemMeta(im); + inv.setItem(1, is); + + is = new ItemStack(Materials.WRITABLE_BOOK.parseMaterial()); + im = is.getItemMeta(); + im.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Save.Displayname"))); + + for (String itemLoreList : configLoad.getStringList("Menu.Rollback.Item.Save.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + + im.setLore(itemLore); + is.setItemMeta(im); + inv.setItem(2, is); + itemLore.clear(); + + is = new ItemStack(Material.ENCHANTED_BOOK); + im = is.getItemMeta(); + im.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Load.Displayname"))); + + for (String itemLoreList : configLoad.getStringList("Menu.Rollback.Item.Load.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + + im.setLore(itemLore); + is.setItemMeta(im); + inv.setItem(3, is); + itemLore.clear(); + + is = new ItemStack(Material.HOPPER); + im = is.getItemMeta(); + im.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Reset.Displayname"))); + + for (String itemLoreList : configLoad.getStringList("Menu.Rollback.Item.Reset.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + + im.setLore(itemLore); + is.setItemMeta(im); + inv.setItem(4, is); + itemLore.clear(); + + player.openInventory(inv); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent event) { + Player player = (Player) event.getWhoClicked(); + ItemStack is = event.getCurrentItem(); + + if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) { + SkyBlock skyblock = SkyBlock.getInstance(); + + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + String inventoryName = ""; + if (NMSUtil.getVersionNumber() > 13) { + inventoryName = event.getView().getTitle(); + } else { + try { + inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Rollback.Title")))) { + event.setCancelled(true); + + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + config.getFileConfiguration().getString("Command.Island.Rollback.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } else if (!island.hasRole(IslandRole.Owner, player.getUniqueId())) { + messageManager.sendMessage(player, + config.getFileConfiguration().getString("Command.Island.Rollback.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } + + if ((event.getCurrentItem().getType() == Material.NAME_TAG) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Info.Displayname"))))) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + } else if ((event.getCurrentItem().getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + } else if ((event.getCurrentItem().getType() == Materials.WRITABLE_BOOK.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Save.Displayname"))))) { + /* + * new BukkitRunnable() { public void run() { for (Location.World worldList : + * Location.World.values()) { Location islandLocation = + * island.getLocation(worldList, Location.Environment.Island); + * + * try { Schematic.getInstance().save(new File(new + * File(skyblock.getDataFolder().toString() + "/rollback-data/" + + * island.getOwnerUUID().toString()), worldList.name() + ".schematic"), new + * Location(islandLocation.getWorld(), islandLocation.getBlockX() + 85, + * islandLocation.getBlockY(), islandLocation.getBlockZ() + 85), new + * Location(islandLocation.getWorld(), islandLocation.getBlockX() - 85, + * islandLocation.getBlockY(), islandLocation.getBlockZ() - 85)); } catch + * (Exception e) { e.printStackTrace(); } } } }.runTaskAsynchronously(skyblock); + */ + + soundManager.playSound(player, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + } else if ((event.getCurrentItem().getType() == Material.ENCHANTED_BOOK) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Rollback.Item.Load.Displayname"))))) { + /* + * new BukkitRunnable() { public void run() { for (Location.World worldList : + * Location.World.values()) { Location islandLocation = + * island.getLocation(worldList, Location.Environment.Island); + * + * try { Schematic.getInstance().paste(new File(new + * File(skyblock.getDataFolder().toString() + "/rollback-data/" + + * island.getOwnerUUID().toString()), "Normal.schematic"), new + * Location(islandLocation.getWorld(), islandLocation.getBlockX() - 85, 0, + * islandLocation.getBlockZ() - 85), true); } catch (Exception e) { + * e.printStackTrace(); } } } }.runTaskAsynchronously(skyblock); + */ + + soundManager.playSound(player, Sounds.PISTON_EXTEND.bukkitSound(), 1.0F, 1.0F); + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Settings.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Settings.java new file mode 100644 index 00000000..6c8285f1 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Settings.java @@ -0,0 +1,1589 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.Visit; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class Settings { + + private static Settings instance; + + public static Settings getInstance() { + if (instance == null) { + instance = new Settings(); + } + + return instance; + } + + public void open(Player player, Settings.Type menuType, IslandRole role, Settings.Panel panel) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + Island island = islandManager.getIsland(player); + + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); + + if (menuType == Settings.Type.Categories) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + Island island13 = islandManager.getIsland(player); + + if (island13 == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!(island13.hasRole(IslandRole.Operator, player.getUniqueId()) + || island13.hasRole(IslandRole.Owner, player.getUniqueId()))) { + messageManager.sendMessage(player, configLoad.getString("Command.Island.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', + configLoad.getString("Menu.Settings.Categories.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', + configLoad.getString("Menu.Settings.Categories.Item.Coop.Displayname"))))) { + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Coop.Enable")) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Coop.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) + && !island13.getSetting(IslandRole.Operator, "Coop").getStatus()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Permission.Access.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Coop, null), 1L); + } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Settings.Categories.Item.Visitor.Displayname"))))) { + if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) + && !island13.getSetting(IslandRole.Operator, "Visitor").getStatus()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Permission.Access.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Settings.Categories.Item.Member.Displayname"))))) { + if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) + && !island13.getSetting(IslandRole.Operator, "Member").getStatus()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Permission.Access.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Member, null), 1L); + } else if ((is.getType() == Material.ITEM_FRAME) && (is.hasItemMeta()) && (is.getItemMeta() + .getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Settings.Categories.Item.Operator.Displayname"))))) { + if (island13.hasRole(IslandRole.Operator, player.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Permission.Access.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Operator, null), 1L); + } else if ((is.getType() == Materials.OAK_SAPLING.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Settings.Categories.Item.Owner.Displayname"))))) { + if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) + && !island13.getSetting(IslandRole.Operator, "Island").getStatus()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Permission.Access.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Owner, null), 1L); + } + } + }); + + nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), + configLoad.getString("Menu.Settings.Categories.Item.Visitor.Displayname"), + configLoad.getStringList("Menu.Settings.Categories.Item.Visitor.Lore"), null, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Settings.Categories.Item.Member.Displayname"), + configLoad.getStringList("Menu.Settings.Categories.Item.Member.Lore"), null, null, null), 3); + nInv.addItem(nInv.createItem(new ItemStack(Material.ITEM_FRAME), + configLoad.getString("Menu.Settings.Categories.Item.Operator.Displayname"), + configLoad.getStringList("Menu.Settings.Categories.Item.Operator.Lore"), null, null, null), 4); + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Coop.Enable")) { + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Settings.Categories.Item.Exit.Displayname"), null, null, null, + null), 0); + nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), + configLoad.getString("Menu.Settings.Categories.Item.Coop.Displayname"), + configLoad.getStringList("Menu.Settings.Categories.Item.Coop.Lore"), null, null, null), 6); + nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), + configLoad.getString("Menu.Settings.Categories.Item.Owner.Displayname"), + configLoad.getStringList("Menu.Settings.Categories.Item.Owner.Lore"), null, null, null), 7); + } else { + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Settings.Categories.Item.Exit.Displayname"), null, null, null, + null), 0, 8); + nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), + configLoad.getString("Menu.Settings.Categories.Item.Owner.Displayname"), + configLoad.getStringList("Menu.Settings.Categories.Item.Owner.Lore"), null, null, null), 6); + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings.Categories.Title"))); + nInv.setRows(1); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else if (menuType == Settings.Type.Role && role != null) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + Island island14 = islandManager.getIsland(player); + + if (island14 == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!(island14.hasRole(IslandRole.Operator, player.getUniqueId()) + || island14.hasRole(IslandRole.Owner, player.getUniqueId()))) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (island14.hasRole(IslandRole.Operator, player.getUniqueId()) + && !island14.getSetting(IslandRole.Operator, role.name()).getStatus()) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Permission.Access.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (role == IslandRole.Coop) { + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Coop.Enable")) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Coop.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings." + role.name() + ".Item.Return.Displayname"))))) { + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Categories, null, null), 1L); + } else if ((is.getType() == Material.PAPER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Settings.Visitor.Item.Signature.Displayname"))))) { + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Panel, null, Panel.Signature), 1L); + } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings.Visitor.Item.Welcome.Displayname"))))) { + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Panel, null, Panel.Welcome), 1L); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta() + .getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Settings.Visitor.Item.Statistics.Displayname"))))) { + if (island14.isOpen()) { + islandManager.closeIsland(island14); + soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else { + island14.setOpen(true); + soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); + } + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); + } else if (is.hasItemMeta()) { + String roleName = getRoleName(role); + + for (IslandSetting settingList : island14.getSettings(role)) { + if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings." + roleName + ".Item.Setting." + + settingList.getName() + ".Displayname")))) { + if (!hasPermission(island14, player, role)) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Settings.Permission.Change.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (settingList != null) { + if (settingList.getStatus()) { + settingList.setStatus(false); + } else { + settingList.setStatus(true); + } + + if (settingList.getName().equals("KeepItemsOnDeath") + || settingList.getName().equals("PvP") + || settingList.getName().equals("Damage")) { + island14.getVisit() + .setSafeLevel(islandManager.getIslandSafeLevel(island14)); + } + } + + break; + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, role, null), 1L); + } + } + }); + + if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop) { + if (role == IslandRole.Visitor) { + Config config = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "config.yml")); + Visit visit = island.getVisit(); + + if (config.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { + nInv.addItem(nInv.createItem(new ItemStack(Material.PAPER), + configLoad.getString("Menu.Settings.Visitor.Item.Signature.Displayname"), + configLoad.getStringList("Menu.Settings.Visitor.Item.Signature.Lore"), null, null, + null), 3); + } + + if (config.getFileConfiguration().getBoolean("Island.Visitor.Vote")) { + if (visit.isOpen()) { + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Open.Lore"), + new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%votes", "" + visit.getVoters().size()), + new Placeholder("%visitors", + "" + islandManager.getVisitorsAtIsland(island).size())}, + null, null), 4); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Closed.Lore"), + new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%votes", "" + visit.getVoters().size()), + new Placeholder("%visitors", + "" + islandManager.getVisitorsAtIsland(island).size())}, + null, null), 4); + } + } else { + if (visit.isOpen()) { + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Open.Lore"), + new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%visitors", + "" + islandManager.getVisitorsAtIsland(island).size())}, + null, null), 4); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Closed.Lore"), + new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%visitors", + "" + islandManager.getVisitorsAtIsland(island).size())}, + null, null), 4); + } + } + + if (config.getFileConfiguration().getBoolean("Island.Visitor.Welcome.Enable")) { + nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), + configLoad.getString("Menu.Settings.Visitor.Item.Welcome.Displayname"), + configLoad.getStringList("Menu.Settings.Visitor.Item.Welcome.Lore"), null, null, + null), 5); + } + } + + nInv.addItemStack(createItem(island, role, "Destroy", new ItemStack(Material.DIAMOND_PICKAXE)), 9); + nInv.addItemStack(createItem(island, role, "Place", new ItemStack(Material.GRASS)), 10); + nInv.addItemStack(createItem(island, role, "Anvil", new ItemStack(Material.ANVIL)), 11); + nInv.addItemStack(createItem(island, role, "ArmorStandUse", new ItemStack(Material.ARMOR_STAND)), + 12); + nInv.addItemStack(createItem(island, role, "Beacon", new ItemStack(Material.BEACON)), 13); + nInv.addItemStack(createItem(island, role, "Bed", Materials.WHITE_BED.parseItem()), 14); + nInv.addItemStack(createItem(island, role, "AnimalBreeding", new ItemStack(Material.WHEAT)), 15); + nInv.addItemStack(createItem(island, role, "Brewing", + new ItemStack(Materials.LEGACY_BREWING_STAND.getPostMaterial())), 16); + nInv.addItemStack(createItem(island, role, "Bucket", new ItemStack(Material.BUCKET)), 17); + nInv.addItemStack(createItem(island, role, "WaterCollection", new ItemStack(Material.POTION)), 18); + nInv.addItemStack(createItem(island, role, "Storage", new ItemStack(Material.CHEST)), 19); + nInv.addItemStack(createItem(island, role, "Workbench", Materials.CRAFTING_TABLE.parseItem()), 20); + nInv.addItemStack(createItem(island, role, "Crop", Materials.WHEAT_SEEDS.parseItem()), 21); + nInv.addItemStack(createItem(island, role, "Door", Materials.OAK_DOOR.parseItem()), 22); + nInv.addItemStack(createItem(island, role, "Gate", Materials.OAK_FENCE_GATE.parseItem()), 23); + nInv.addItemStack(createItem(island, role, "Projectile", new ItemStack(Material.ARROW)), 24); + nInv.addItemStack(createItem(island, role, "Enchant", Materials.ENCHANTING_TABLE.parseItem()), 25); + nInv.addItemStack(createItem(island, role, "Fire", new ItemStack(Material.FLINT_AND_STEEL)), 26); + nInv.addItemStack(createItem(island, role, "Furnace", new ItemStack(Material.FURNACE)), 27); + nInv.addItemStack(createItem(island, role, "HorseInventory", Materials.CHEST_MINECART.parseItem()), + 28); + nInv.addItemStack(createItem(island, role, "MobRiding", new ItemStack(Material.SADDLE)), 29); + nInv.addItemStack(createItem(island, role, "MobHurting", Materials.WOODEN_SWORD.parseItem()), 30); + nInv.addItemStack(createItem(island, role, "MobTaming", Materials.POPPY.parseItem()), 31); + nInv.addItemStack(createItem(island, role, "Leash", Materials.LEAD.parseItem()), 32); + nInv.addItemStack(createItem(island, role, "LeverButton", new ItemStack(Material.LEVER)), 33); + nInv.addItemStack(createItem(island, role, "Milking", new ItemStack(Material.MILK_BUCKET)), 34); + nInv.addItemStack(createItem(island, role, "Jukebox", new ItemStack(Material.JUKEBOX)), 35); + nInv.addItemStack( + createItem(island, role, "PressurePlate", Materials.OAK_PRESSURE_PLATE.parseItem()), 36); + nInv.addItemStack(createItem(island, role, "Redstone", new ItemStack(Material.REDSTONE)), 37); + nInv.addItemStack(createItem(island, role, "Shearing", new ItemStack(Material.SHEARS)), 38); + nInv.addItemStack(createItem(island, role, "Trading", new ItemStack(Material.EMERALD)), 39); + nInv.addItemStack(createItem(island, role, "ItemDrop", new ItemStack(Material.PUMPKIN_SEEDS)), 40); + nInv.addItemStack(createItem(island, role, "ItemPickup", new ItemStack(Material.MELON_SEEDS)), 41); + nInv.addItemStack(createItem(island, role, "Fishing", new ItemStack(Material.FISHING_ROD)), 42); + nInv.addItemStack(createItem(island, role, "DropperDispenser", new ItemStack(Material.DISPENSER)), + 43); + nInv.addItemStack(createItem(island, role, "SpawnEgg", new ItemStack(Material.EGG)), 44); + nInv.addItemStack(createItem(island, role, "HangingDestroy", new ItemStack(Material.ITEM_FRAME)), + 45); + nInv.addItemStack(createItem(island, role, "Cake", new ItemStack(Material.CAKE)), 46); + nInv.addItemStack(createItem(island, role, "DragonEggUse", new ItemStack(Material.DRAGON_EGG)), 47); + nInv.addItemStack(createItem(island, role, "MinecartBoat", new ItemStack(Material.MINECART)), 48); + nInv.addItemStack(createItem(island, role, "Portal", new ItemStack(Material.ENDER_PEARL)), 50); + nInv.addItemStack(createItem(island, role, "Hopper", new ItemStack(Material.HOPPER)), 51); + nInv.addItemStack(createItem(island, role, "EntityPlacement", new ItemStack(Material.ARMOR_STAND)), + 52); + nInv.addItemStack( + createItem(island, role, "ExperienceOrbPickup", Materials.EXPERIENCE_BOTTLE.parseItem()), + 53); + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings." + role.name() + ".Title"))); + nInv.setRows(6); + } else if (role == IslandRole.Operator) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Banning")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 10); + nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), + 11); + nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 13); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 14); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), + 16); + nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), + 17); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), + 22); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); + } else { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 10); + nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), + 11); + nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 13); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 14); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), + 16); + nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), + 17); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 11); + nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), + 12); + nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 14); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 15); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 16); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), + 22); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); + } else { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 11); + nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), + 12); + nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 14); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 15); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 16); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); + } + } + + nInv.setRows(3); + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 11); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 12); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 13); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), + 15); + nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), + 16); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), + 22); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); + } else { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 11); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 12); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 13); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), + 15); + nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), + 16); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); + } + + nInv.setRows(3); + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 11); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 12); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 13); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 14); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 15); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 16); + nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), + 21); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 22); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 23); + + nInv.setRows(3); + } else { + nInv.addItemStack( + createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); + nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), + 10); + nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), + 11); + nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), + 12); + nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), + 13); + nInv.addItemStack( + createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 14); + nInv.addItemStack( + createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 15); + nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 16); + nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 17); + + nInv.setRows(2); + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings." + role.name() + ".Title"))); + } else if (role == IslandRole.Owner) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 17); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + } + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 15); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 16); + } + } + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 11); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 12); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 17); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", + new ItemStack(Material.ITEM_FRAME)), 16); + } + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 14); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 10); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 12); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + nInv.addItemStack( + createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), + 16); + } else { + nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", + Materials.PIG_SPAWN_EGG.parseItem()), 11); + nInv.addItemStack( + createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 12); + nInv.addItemStack( + createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), + 13); + nInv.addItemStack(createItem(island, role, "FireSpread", + new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack( + createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), + 15); + } + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings." + role.name() + ".Title"))); + nInv.setRows(2); + } + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Settings." + role.name() + ".Item.Return.Displayname"), null, null, + null, null), 0, 8); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else if (menuType == Settings.Type.Panel) { + if (panel == Settings.Panel.Welcome) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + Island island15 = islandManager.getIsland(player); + + if (island15 == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!(island15.hasRole(IslandRole.Operator, player.getUniqueId()) + || island15.hasRole(IslandRole.Owner, player.getUniqueId()))) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (!skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Welcome.Enable")) { + messageManager.sendMessage(player, + configLoad.getString("Island.Settings.Visitor.Welcome.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Welcome.Item.Return.Displayname"))))) { + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Item.Statistics.Displayname"))))) { + if (island15.isOpen()) { + islandManager.closeIsland(island15); + soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else { + island15.setOpen(true); + soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); + } + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); + } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Welcome.Item.Message.Displayname"))))) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() + .getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Displayname"))))) { + if (island15.getMessage(IslandMessage.Welcome).size() >= skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Visitor.Welcome.Lines")) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + Island island1 = islandManager.getIsland(player); + + if (island1 == null) { + messageManager.sendMessage(player, + configLoad.getString( + "Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + player.closeInventory(); + + event1.setWillClose(true); + event1.setWillDestroy(true); + + return; + } else if (!(island1.hasRole(IslandRole.Operator, + player.getUniqueId()) + || island1.hasRole(IslandRole.Owner, + player.getUniqueId()))) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Role.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + player.closeInventory(); + + event1.setWillClose(true); + event1.setWillDestroy(true); + + return; + } else if (!skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), + "config.yml")) + .getFileConfiguration() + .getBoolean("Island.Visitor.Welcome.Enable")) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Settings.Visitor.Welcome.Disabled.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event1.setWillClose(true); + event1.setWillDestroy(true); + + return; + } + + Config config1 = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), + "config.yml")); + FileConfiguration configLoad1 = config1 + .getFileConfiguration(); + + if (island1.getMessage(IslandMessage.Welcome) + .size() > configLoad1 + .getInt("Island.Visitor.Welcome.Lines") + || event1.getName().length() > configLoad1 + .getInt("Island.Visitor.Welcome.Length")) { + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + } else { + List welcomeMessage = island1 + .getMessage(IslandMessage.Welcome); + welcomeMessage.add(event1.getName()); + island1.setMessage(IslandMessage.Welcome, + player.getName(), welcomeMessage); + soundManager.playSound(player, + Sounds.NOTE_PLING.bukkitSound(), 1.0F, + 1.0F); + } + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player, + Type.Panel, + null, + Panel.Welcome), 1L); + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is1 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is1.getItemMeta(); + im.setDisplayName(configLoad.getString( + "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Word.Enter")); + is1.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); + gui.open(); + }, 1L); + } + } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() + .getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Displayname"))))) { + List welcomeMessage = island15.getMessage(IslandMessage.Welcome); + + if (welcomeMessage.size() == 0) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + welcomeMessage.remove(welcomeMessage.size() - 1); + island15.setMessage(IslandMessage.Welcome, + island15.getMessageAuthor(IslandMessage.Welcome), welcomeMessage); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, Type.Panel, null, Panel.Welcome), 1L); + } + } + } + }); + + List welcomeMessage = island.getMessage(IslandMessage.Welcome); + + if (welcomeMessage.size() == mainConfig.getFileConfiguration() + .getInt("Island.Visitor.Welcome.Lines")) { + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Displayname"), + configLoad + .getStringList("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Limit.Lore"), + null, null, null), 1); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Displayname"), + configLoad.getStringList("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.More.Lore"), + null, null, null), 1); + } + + if (welcomeMessage.size() == 0) { + List itemLore = new ArrayList<>(); + itemLore.add( + configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Message.Word.Empty")); + nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), + configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Message.Displayname"), + itemLore, null, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad + .getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.None.Lore"), + null, null, null), 3); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial(), welcomeMessage.size()), + configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Message.Displayname"), + welcomeMessage, null, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad + .getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Lines.Lore"), + null, null, null), 3); + } + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Return.Displayname"), null, + null, null, null), 0, 4); + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Title"))); + nInv.setType(InventoryType.HOPPER); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else if (panel == Settings.Panel.Signature) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + Island island12 = islandManager.getIsland(player); + + if (island12 == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (!(island12.hasRole(IslandRole.Operator, player.getUniqueId()) + || island12.hasRole(IslandRole.Owner, player.getUniqueId()))) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Role.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (!skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { + messageManager.sendMessage(player, + configLoad.getString("Island.Settings.Visitor.Signature.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Signature.Item.Return.Displayname"))))) { + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals( + ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Item.Statistics.Displayname"))))) { + if (island12.isOpen()) { + islandManager.closeIsland(island12); + soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else { + island12.setOpen(true); + soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); + } + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); + } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Signature.Item.Message.Displayname"))))) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() + .getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Displayname"))))) { + if (island12.getMessage(IslandMessage.Signature).size() >= skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Visitor.Signature.Lines")) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + Island island1 = islandManager.getIsland(player); + + if (island1 == null) { + messageManager.sendMessage(player, + configLoad.getString( + "Command.Island.Settings.Owner.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + player.closeInventory(); + + event1.setWillClose(true); + event1.setWillDestroy(true); + + return; + } else if (!(island1.hasRole(IslandRole.Operator, + player.getUniqueId()) + || island1.hasRole(IslandRole.Owner, + player.getUniqueId()))) { + messageManager.sendMessage(player, configLoad + .getString("Command.Island.Role.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + player.closeInventory(); + + event1.setWillClose(true); + event1.setWillDestroy(true); + + return; + } else if (!skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), + "config.yml")) + .getFileConfiguration().getBoolean( + "Island.Visitor.Signature.Enable")) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Settings.Visitor.Signature.Disabled.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event1.setWillClose(true); + event1.setWillDestroy(true); + + return; + } + + Config config1 = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), + "config.yml")); + FileConfiguration configLoad1 = config1 + .getFileConfiguration(); + + if (island1.getMessage(IslandMessage.Signature) + .size() > configLoad1.getInt( + "Island.Visitor.Signature.Lines") + || event1.getName().length() > configLoad1 + .getInt("Island.Visitor.Signature.Length")) { + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + } else { + List signatureMessage = island1 + .getMessage(IslandMessage.Signature); + signatureMessage.add(event1.getName()); + island1.setMessage(IslandMessage.Signature, + player.getName(), signatureMessage); + soundManager.playSound(player, + Sounds.NOTE_PLING.bukkitSound(), 1.0F, + 1.0F); + } + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player, + Type.Panel, + null, + Panel.Signature), 1L); + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is12 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is12.getItemMeta(); + im.setDisplayName(configLoad.getString( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Word.Enter")); + is12.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is12); + gui.open(); + }, 1L); + } + } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() + .getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Displayname"))))) { + List signatureMessage = island12.getMessage(IslandMessage.Signature); + + if (signatureMessage.size() == 0) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + signatureMessage.remove(signatureMessage.size() - 1); + island12.setMessage(IslandMessage.Signature, + island12.getMessageAuthor(IslandMessage.Signature), signatureMessage); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, Type.Panel, null, + Panel.Signature), 1L); + } + } + } + }); + + List signatureMessage = island.getMessage(IslandMessage.Signature); + + if (signatureMessage.size() == mainConfig.getFileConfiguration() + .getInt("Island.Visitor.Signature.Lines")) { + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Limit.Lore"), + null, null, null), 1); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Displayname"), + configLoad + .getStringList("Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.More.Lore"), + null, null, null), 1); + } + + if (signatureMessage.size() == 0) { + List itemLore = new ArrayList<>(); + itemLore.add( + configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Message.Word.Empty")); + nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), + configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Message.Displayname"), + itemLore, null, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad.getString( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.None.Lore"), + null, null, null), 3); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial(), signatureMessage.size()), + configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Message.Displayname"), + signatureMessage, null, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), + configLoad.getString( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Displayname"), + configLoad.getStringList( + "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Lines.Lore"), + null, null, null), 3); + } + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Return.Displayname"), null, + null, null, null), 0, 4); + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Title"))); + nInv.setType(InventoryType.HOPPER); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } + } + } + + private ItemStack createItem(Island island, IslandRole role, String setting, ItemStack is) { + SkyBlock skyblock = SkyBlock.getInstance(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + List itemLore = new ArrayList<>(); + + ItemMeta im = is.getItemMeta(); + + String roleName = role.name(); + + if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop) { + roleName = "Default"; + } + + im.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Settings." + roleName + ".Item.Setting." + setting + ".Displayname"))); + + if (island.getSetting(role, setting).getStatus()) { + for (String itemLoreList : configLoad + .getStringList("Menu.Settings." + roleName + ".Item.Setting.Status.Enabled.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + } else { + for (String itemLoreList : configLoad + .getStringList("Menu.Settings." + roleName + ".Item.Setting.Status.Disabled.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + } + + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + im.setLore(itemLore); + is.setItemMeta(im); + + return is; + } + + private String getRoleName(IslandRole role) { + if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop) { + return "Default"; + } + + return role.name(); + } + + private boolean hasPermission(Island island, Player player, IslandRole role) { + if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop + || role == IslandRole.Owner) { + String roleName = role.name(); + + if (role == IslandRole.Owner) { + roleName = "Island"; + } + + return !island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.getSetting(IslandRole.Operator, roleName).getStatus(); + } else if (role == IslandRole.Operator) { + return island.hasRole(IslandRole.Owner, player.getUniqueId()); + } + + return true; + } + + public enum Panel { + + Welcome, Signature + + } + + public enum Type { + + Categories, Panel, Role + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Upgrade.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Upgrade.java new file mode 100644 index 00000000..a12c01f9 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Upgrade.java @@ -0,0 +1,796 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.api.event.island.IslandUpgradeEvent; +import com.songoda.skyblock.api.utils.APIUtil; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.economy.EconomyManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.upgrade.UpgradeManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionData; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.potion.PotionType; + +import java.io.File; +import java.util.List; + +public class Upgrade { + + private static Upgrade instance; + + public static Upgrade getInstance() { + if (instance == null) { + instance = new Upgrade(); + } + + return instance; + } + + @SuppressWarnings("deprecation") + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + EconomyManager economyManager = skyblock.getEconomyManager(); + MessageManager messageManager = skyblock.getMessageManager(); + UpgradeManager upgradeManager = skyblock.getUpgradeManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + if (!economyManager.isEconomy()) { + messageManager.sendMessage(player, configLoad.getString("Island.Upgrade.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (playerDataManager.hasPlayerData(player) && playerDataManager.getPlayerData(player).getOwner() != null) { + Island island = islandManager.getIsland(player); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (!economyManager.isEconomy()) { + messageManager.sendMessage(player, configLoad.getString("Island.Upgrade.Disabled.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + + if (playerData.getOwner() == null) { + messageManager.sendMessage(player, configLoad.getString("Island.Upgrade.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Material.POTION) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")))) { + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Speed)) { + if (island.isUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Speed)) { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Speed, + false); + + for (Player all : islandManager.getPlayersAtIsland(island)) { + all.removePotionEffect(PotionEffectType.SPEED); + } + } else { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Speed, + true); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Speed); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (economyManager.hasBalance(player, upgrade.getCost())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Bought.Message") + .replace("%upgrade", is.getItemMeta().getDisplayName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + economyManager.withdraw(player, upgrade.getCost()); + island.setUpgrade(player, + com.songoda.skyblock.upgrade.Upgrade.Type.Speed, true); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Money.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")))) { + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Jump)) { + if (island.isUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Jump)) { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Jump, + false); + + for (Player all : islandManager.getPlayersAtIsland(island)) { + all.removePotionEffect(PotionEffectType.JUMP); + } + } else { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Jump, + true); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Jump); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (economyManager.hasBalance(player, upgrade.getCost())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Bought.Message") + .replace("%upgrade", is.getItemMeta().getDisplayName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + economyManager.withdraw(player, upgrade.getCost()); + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Jump, + true); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Money.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } + } else if ((is.getType() == Materials.WHEAT_SEEDS.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Crop.Displayname"))))) { + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Crop)) { + if (island.isUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Crop)) { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Crop, false); + } else { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Crop, true); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Crop); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (economyManager.hasBalance(player, upgrade.getCost())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Bought.Message") + .replace("%upgrade", is.getItemMeta().getDisplayName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + economyManager.withdraw(player, upgrade.getCost()); + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Crop, + true); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Money.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } else if ((is.getType() == Material.FEATHER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Fly.Displayname"))))) { + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Fly)) { + if (island.isUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Fly)) { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Fly, false); + islandManager.updateFlightAtIsland(island); + } else { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Fly, true); + islandManager.updateFlightAtIsland(island); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Fly); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (economyManager.hasBalance(player, upgrade.getCost())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Bought.Message") + .replace("%upgrade", is.getItemMeta().getDisplayName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + economyManager.withdraw(player, upgrade.getCost()); + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Fly, + true); + + islandManager.updateFlightAtIsland(island); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Money.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } else if ((is.getType() == Material.SPIDER_EYE) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Drops.Displayname"))))) { + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Drops)) { + if (island.isUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Drops)) { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Drops, + false); + } else { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Drops, true); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Drops); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (economyManager.hasBalance(player, upgrade.getCost())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Bought.Message") + .replace("%upgrade", is.getItemMeta().getDisplayName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + economyManager.withdraw(player, upgrade.getCost()); + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Drops, + true); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Money.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } else if ((is.getType() == Material.BEACON) && (is.hasItemMeta())) { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size); + + if (upgrades != null && upgrades.size() > 0) { + for (int i = 0; i < upgrades.size(); i++) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(i); + int tier = i + 1; + + if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Size.Displayname") + .replace("%tier", "" + tier)))) { + if (upgrade.getValue() > island.getSize() + && upgrade.getValue() != island.getSize()) { + if (economyManager.hasBalance(player, upgrade.getCost())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Bought.Message").replace( + "%upgrade", is.getItemMeta().getDisplayName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, + 1.0F); + + economyManager.withdraw(player, upgrade.getCost()); + island.setSize(upgrade.getValue()); + + Bukkit.getServer().getPluginManager().callEvent(new IslandUpgradeEvent( + island.getAPIWrapper(), player, APIUtil.fromImplementation( + com.songoda.skyblock.upgrade.Upgrade.Type.Size))); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Money.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + + return; + } + } + } + + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Claimed.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else if ((is.getType() == Materials.SPAWNER.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname"))))) { + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner)) { + if (island.isUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner)) { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Spawner, + false); + } else { + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Spawner, + true); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (economyManager.hasBalance(player, upgrade.getCost())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Bought.Message") + .replace("%upgrade", is.getItemMeta().getDisplayName())); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + economyManager.withdraw(player, upgrade.getCost()); + island.setUpgrade(player, com.songoda.skyblock.upgrade.Upgrade.Type.Spawner, + true); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Money.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Upgrade.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + } + } + } + }); + + List upgrades; + + ItemStack potion = new ItemStack(Material.POTION); + int NMSVersion = NMSUtil.getVersionNumber(); + + upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Speed); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (NMSVersion > 8) { + PotionMeta pm = (PotionMeta) potion.getItemMeta(); + + if (NMSVersion > 9) { + pm.setBasePotionData(new PotionData(PotionType.SPEED)); + } else { + pm.addCustomEffect(new PotionEffect(PotionEffectType.SPEED, 1, 0), true); + } + + potion.setItemMeta(pm); + } else { + potion = new ItemStack(Material.POTION, 1, (short) 8194); + } + + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Speed)) { + nInv.addItem(nInv.createItem(potion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Speed.Claimed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", + getStatus(island, com.songoda.skyblock.upgrade.Upgrade.Type.Speed))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 0); + } else { + if (economyManager.hasBalance(player, upgrade.getCost())) { + nInv.addItem(nInv.createItem(potion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Speed.Claimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 0); + } else { + nInv.addItem(nInv.createItem(potion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Speed.Unclaimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 0); + } + } + } + + upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Jump); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (NMSVersion > 8) { + potion = new ItemStack(Material.POTION); + PotionMeta pm = (PotionMeta) potion.getItemMeta(); + + if (NMSVersion > 9) { + pm.setBasePotionData(new PotionData(PotionType.JUMP)); + } else { + pm.addCustomEffect(new PotionEffect(PotionEffectType.JUMP, 1, 0), true); + } + + potion.setItemMeta(pm); + } else { + potion = new ItemStack(Material.POTION, 1, (short) 8203); + } + + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Jump)) { + nInv.addItem(nInv.createItem(potion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Jump.Claimed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", + getStatus(island, com.songoda.skyblock.upgrade.Upgrade.Type.Jump))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 1); + } else { + if (economyManager.hasBalance(player, upgrade.getCost())) { + nInv.addItem(nInv.createItem(potion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Jump.Claimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 1); + } else { + nInv.addItem(nInv.createItem(potion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Jump.Unclaimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 1); + } + } + } + + upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Crop); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Crop)) { + nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Crop.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Crop.Claimed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", + getStatus(island, com.songoda.skyblock.upgrade.Upgrade.Type.Crop))}, + null, null), 3); + } else { + if (economyManager.hasBalance(player, upgrade.getCost())) { + nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Crop.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Crop.Claimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 3); + } else { + nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Crop.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Crop.Unclaimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 3); + } + } + } + + upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Fly); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Fly)) { + nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Fly.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Fly.Claimed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", + getStatus(island, com.songoda.skyblock.upgrade.Upgrade.Type.Fly))}, + null, null), 4); + } else { + if (economyManager.hasBalance(player, upgrade.getCost())) { + nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Fly.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Fly.Claimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 4); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Fly.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Fly.Unclaimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 4); + } + } + } + + upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Drops); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Drops)) { + nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Drops.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Drops.Claimed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", + getStatus(island, com.songoda.skyblock.upgrade.Upgrade.Type.Drops))}, + null, null), 5); + } else { + if (economyManager.hasBalance(player, upgrade.getCost())) { + nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Drops.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Drops.Claimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 5); + } else { + nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Drops.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Drops.Unclaimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 5); + } + } + } + + upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size); + + if (upgrades != null && upgrades.size() > 0) { + for (int i = 0; i < upgrades.size(); i++) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(i); + int tier = i + 1; + + if (tier != upgrades.size()) { + if (upgrade.getValue() <= island.getSize()) { + continue; + } + } + + if (island.getSize() >= upgrade.getValue()) { + nInv.addItem(nInv.createItem(new ItemStack(Material.BEACON), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Size.Displayname").replace("%tier", + "" + tier)), + configLoad.getStringList("Menu.Upgrade.Item.Size.Claimed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%tier", "" + tier), + new Placeholder("%size", "" + upgrade.getValue())}, + null, null), 7); + } else { + if (economyManager.hasBalance(player, upgrade.getCost())) { + nInv.addItem( + nInv.createItem(new ItemStack(Material.BEACON), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Size.Displayname") + .replace("%tier", "" + tier)), + configLoad.getStringList("Menu.Upgrade.Item.Size.Claimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", + NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%tier", "" + tier), + new Placeholder("%size", "" + upgrade.getValue())}, + null, null), + 7); + } else { + nInv.addItem( + nInv.createItem(new ItemStack(Material.BEACON), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Size.Displayname") + .replace("%tier", "" + tier)), + configLoad.getStringList("Menu.Upgrade.Item.Size.Unclaimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", + NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%tier", "" + tier), + new Placeholder("%size", "" + upgrade.getValue())}, + null, null), + 7); + } + } + + break; + } + } + + upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner); + + if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); + + if (island.hasUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner)) { + nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Spawner.Claimed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", + getStatus(island, com.songoda.skyblock.upgrade.Upgrade.Type.Spawner))}, + null, null), 8); + } else { + if (economyManager.hasBalance(player, upgrade.getCost())) { + nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Spawner.Claimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 8); + } else { + nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname")), + configLoad.getStringList("Menu.Upgrade.Item.Spawner.Unclaimable.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), 8); + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Upgrade.Title"))); + nInv.setRows(1); + nInv.open(); + } + } + + private String getStatus(Island island, com.songoda.skyblock.upgrade.Upgrade.Type type) { + SkyBlock skyblock = SkyBlock.getInstance(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); + String upgradeStatus; + + if (island.isUpgrade(type)) { + upgradeStatus = configLoad.getString("Menu.Upgrade.Item.Word.Disable"); + } else { + upgradeStatus = configLoad.getString("Menu.Upgrade.Item.Word.Enable"); + } + + return upgradeStatus; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Visit.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Visit.java new file mode 100644 index 00000000..38857b80 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Visit.java @@ -0,0 +1,543 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.StringUtil; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.visit.VisitManager; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.*; + +public class Visit { + + private static Visit instance; + + public static Visit getInstance() { + if (instance == null) { + instance = new Visit(); + } + + return instance; + } + + public void open(Player player, Visit.Type type, Visit.Sort sort) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + VisitManager visitManager = skyblock.getVisitManager(); + FileManager fileManager = skyblock.getFileManager(); + + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + + if (playerData.getType() == null || playerData.getSort() == null) { + playerData.setType(Type.Default); + playerData.setSort(Sort.Default); + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Statistics.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Material.HOPPER) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Type.Displayname")))) { + Type type1 = (Type) playerData.getType(); + + if (type1.ordinal() + 1 == Type.values().length) { + playerData.setType(Type.Default); + } else { + playerData.setType(Type.values()[type1.ordinal() + 1]); + } + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Sort.Displayname")))) { + Sort sort1 = (Sort) playerData.getSort(); + + if (sort1.ordinal() + 1 == Sort.values().length) { + playerData.setSort(Sort.Default); + } else { + playerData.setSort(Sort.values()[sort1.ordinal() + 1]); + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); + } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Nothing.Displayname"))))) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Previous.Displayname")))) { + playerData.setPage(playerData.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visit.Item.Next.Displayname")))) { + playerData.setPage(playerData.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); + } else { + String targetPlayerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); + UUID targetPlayerUUID; + + Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerName); + + if (targetPlayer == null) { + targetPlayerUUID = new OfflinePlayer(targetPlayerName).getUniqueId(); + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + } + + if (visitManager.hasIsland(targetPlayerUUID)) { + com.songoda.skyblock.visit.Visit visit = visitManager.getIsland(targetPlayerUUID); + boolean isCoopPlayer = false; + org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer() + .getOfflinePlayer(targetPlayerUUID); + + if (islandManager.containsIsland(targetPlayerUUID)) { + if (islandManager.getIsland(offlinePlayer).isCoopPlayer(player.getUniqueId())) { + isCoopPlayer = true; + } + } + + if (isCoopPlayer || player.hasPermission("fabledskyblock.bypass") + || player.hasPermission("fabledskyblock.bypass.*") + || player.hasPermission("fabledskyblock.*") || visit.isOpen()) { + if (!islandManager.containsIsland(targetPlayerUUID)) { + islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(targetPlayerUUID)); + } + + Island island = islandManager.getIsland(offlinePlayer); + + if ((!island.hasRole(IslandRole.Member, player.getUniqueId()) + && !island.hasRole(IslandRole.Operator, player.getUniqueId()) + && !island.hasRole(IslandRole.Owner, player.getUniqueId())) + && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Vote")) { + if (event.getClick() == ClickType.RIGHT) { + if (playerData.getIsland() != null + && playerData.getIsland().equals(island.getOwnerUUID())) { + if (visit.getVoters().contains(player.getUniqueId())) { + visit.removeVoter(player.getUniqueId()); + + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Vote.Removed.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, + 1.0F); + } else { + visit.addVoter(player.getUniqueId()); + + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Vote.Added.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, + 1.0F); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, + 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Vote.Island.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + + islandManager.unloadIsland(island, null); + + return; + } else if (event.getClick() != ClickType.LEFT) { + return; + } + } + + if (islandManager.isPlayerAtIsland(island, player)) { + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Already.Message").replace("%player", + targetPlayerName)); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + islandManager.visitIsland(player, island); + + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Teleported.Message").replace("%player", + targetPlayerName)); + soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Closed.Menu.Message").replace("%player", + targetPlayerName)); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player, (Type) playerData.getType(), + (Sort) playerData.getSort()), 1L); + } + + return; + } + + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Exist.Message") + .replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); + } + } + } + }); + + Map openIslands = visitManager.getOpenIslands(); + List visitIslands = new ArrayList<>(); + + boolean keepBannedIslands = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visit.Menu.Bans"); + + for (int i = 0; i < openIslands.size(); i++) { + UUID islandOwnerUUID = (UUID) openIslands.keySet().toArray()[i]; + com.songoda.skyblock.visit.Visit visit = openIslands.get(islandOwnerUUID); + + if (type == Visit.Type.Solo) { + if (visit.getMembers() != 1) { + continue; + } + } else if (type == Visit.Type.Team) { + if (visit.getMembers() == 1) { + continue; + } + } + + if (!keepBannedIslands && visit.getBan().isBanned(player.getUniqueId())) { + continue; + } + + visitIslands.add(visit); + } + + openIslands.clear(); + + if (sort == Visit.Sort.Players || sort == Visit.Sort.Level || sort == Visit.Sort.Members + || sort == Visit.Sort.Visits || sort == Visit.Sort.Votes) { + visitIslands.sort(new Comparator() { + @Override + public int compare(com.songoda.skyblock.visit.Visit visit1, + com.songoda.skyblock.visit.Visit visit2) { + if (sort == Visit.Sort.Players) { + int playersAtIsland1 = 0; + + if (islandManager.containsIsland(visit1.getOwnerUUID())) { + playersAtIsland1 = islandManager + .getPlayersAtIsland(islandManager + .getIsland(Bukkit.getServer().getOfflinePlayer(visit1.getOwnerUUID()))) + .size(); + } + + int playersAtIsland2 = 0; + + if (islandManager.containsIsland(visit2.getOwnerUUID())) { + playersAtIsland2 = islandManager + .getPlayersAtIsland(islandManager + .getIsland(Bukkit.getServer().getOfflinePlayer(visit2.getOwnerUUID()))) + .size(); + } + + return Integer.valueOf(playersAtIsland2).compareTo(playersAtIsland1); + } else if (sort == Visit.Sort.Level) { + return Long.valueOf(visit2.getLevel().getLevel()).compareTo(visit1.getLevel().getLevel()); + } else if (sort == Visit.Sort.Members) { + return Integer.valueOf(visit2.getMembers()).compareTo(visit1.getMembers()); + } else if (sort == Visit.Sort.Visits) { + return Integer.valueOf(visit2.getVisitors().size()).compareTo(visit1.getVisitors().size()); + } else if (sort == Visit.Sort.Votes) { + return Integer.valueOf(visit2.getVoters().size()).compareTo(visit1.getVoters().size()); + } + + return 0; + } + }); + } + + int playerMenuPage = playerDataManager.getPlayerData(player).getPage(), + nextEndIndex = visitIslands.size() - playerMenuPage * 36, + totalIslands = visitManager.getIslands().size(); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Visit.Item.Exit.Displayname"), null, null, null, null), 0, 8); + nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), + configLoad.getString("Menu.Visit.Item.Type.Displayname"), + configLoad.getStringList("Menu.Visit.Item.Type.Lore"), + new Placeholder[]{new Placeholder("%type", StringUtil.capatilizeUppercaseLetters(type.name()))}, + null, null), 3); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Visit.Item.Statistics.Displayname"), + configLoad.getStringList("Menu.Visit.Item.Statistics.Lore"), + new Placeholder[]{ + new Placeholder("%islands_open", NumberUtil.formatNumberByDecimal(visitIslands.size())), + new Placeholder("%islands_closed", + NumberUtil.formatNumberByDecimal(totalIslands - visitIslands.size())), + new Placeholder("%islands", NumberUtil.formatNumberByDecimal(totalIslands))}, + null, null), 4); + nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), + configLoad.getString("Menu.Visit.Item.Sort.Displayname"), + configLoad.getStringList("Menu.Visit.Item.Sort.Lore"), + new Placeholder[]{new Placeholder("%sort", StringUtil.capatilizeUppercaseLetters(sort.name()))}, + null, null), 5); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Visit.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Visit.Item.Previous.Displayname"), null, null, null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Visit.Item.Next.Displayname"), null, null, null, null), 7); + } + + if (visitIslands.size() == 0) { + nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Visit.Item.Nothing.Displayname"), null, null, null, null), 31); + } else { + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + + int index = playerMenuPage * 36 - 36, + endIndex = index >= visitIslands.size() ? visitIslands.size() - 1 : index + 36, inventorySlot = 17, + playerCapacity = config.getFileConfiguration().getInt("Island.Visitor.Capacity"); + + boolean voteEnabled = config.getFileConfiguration().getBoolean("Island.Visitor.Vote"); + boolean signatureEnabled = config.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable"); + + for (; index < endIndex; index++) { + if (visitIslands.size() > index) { + inventorySlot++; + + com.songoda.skyblock.visit.Visit visit = visitIslands.get(index); + Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); + + String targetPlayerName; + String[] targetPlayerTexture; + + if (targetPlayer == null) { + OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); + targetPlayerName = offlinePlayer.getName(); + targetPlayerTexture = offlinePlayer.getTexture(); + } else { + targetPlayerName = targetPlayer.getName(); + + if (playerDataManager.hasPlayerData(targetPlayer)) { + targetPlayerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); + } else { + targetPlayerTexture = new String[]{null, null}; + } + } + + Island island = null; + + if (islandManager.containsIsland(visit.getOwnerUUID())) { + island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(visit.getOwnerUUID())); + } + + List itemLore = new ArrayList<>(); + + String safety = ""; + + if (visit.getSafeLevel() > 0) { + safety = configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Unsafe"); + } else { + safety = configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Safe"); + } + + if (voteEnabled) { + String voteAction = ""; + + if (visit.getVoters().contains(player.getUniqueId())) { + voteAction = configLoad + .getString("Menu.Visit.Item.Island.Vote.Enabled.Signature.Word.Remove"); + } else { + voteAction = configLoad.getString("Menu.Visit.Item.Island.Vote.Enabled.Signature.Word.Add"); + } + + if (signatureEnabled) { + List correctItemLore; + + if (island != null && (island.hasRole(IslandRole.Member, player.getUniqueId()) + || island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { + correctItemLore = configLoad.getStringList( + "Menu.Visit.Item.Island.Vote.Enabled.Signature.Enabled.Member.Lore"); + } else { + correctItemLore = configLoad.getStringList( + "Menu.Visit.Item.Island.Vote.Enabled.Signature.Enabled.Visitor.Lore"); + } + + for (String itemLoreList : correctItemLore) { + if (itemLoreList.contains("%signature")) { + List islandSignature = visit.getSiganture(); + + if (islandSignature.size() == 0) { + itemLore.add(configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Empty")); + } else { + for (String signatureList : islandSignature) { + itemLore.add(signatureList); + } + } + } else { + itemLore.add(itemLoreList); + } + } + } else { + if (island != null && (island.hasRole(IslandRole.Member, player.getUniqueId()) + || island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { + itemLore.addAll(configLoad.getStringList( + "Menu.Visit.Item.Island.Vote.Enabled.Signature.Disabled.Member.Lore")); + } else { + itemLore.addAll(configLoad.getStringList( + "Menu.Visit.Item.Island.Vote.Enabled.Signature.Disabled.Visitor.Lore")); + } + } + + nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), + configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player", + targetPlayerName), + itemLore, + new Placeholder[]{new Placeholder("%level", "" + visit.getLevel().getLevel()), + new Placeholder("%members", "" + visit.getMembers()), + new Placeholder("%votes", "" + visit.getVoters().size()), + new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%players", + "" + islandManager.getPlayersAtIsland(island).size()), + new Placeholder("%player_capacity", "" + playerCapacity), + new Placeholder("%action", voteAction), new Placeholder("%safety", safety)}, + null, null), inventorySlot); + } else { + if (signatureEnabled) { + for (String itemLoreList : configLoad + .getStringList("Menu.Visit.Item.Island.Vote.Disabled.Signature.Enabled.Lore")) { + if (itemLoreList.contains("%signature")) { + List islandSignature = visit.getSiganture(); + + if (islandSignature.size() == 0) { + itemLore.add(configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Empty")); + } else { + for (String signatureList : islandSignature) { + itemLore.add(signatureList); + } + } + } else { + itemLore.add(itemLoreList); + } + } + } else { + itemLore.addAll(configLoad + .getStringList("Menu.Visit.Item.Island.Vote.Disabled.Signature.Disabled.Lore")); + } + + nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), + configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player", + targetPlayerName), + itemLore, + new Placeholder[]{new Placeholder("%level", "" + visit.getLevel().getLevel()), + new Placeholder("%members", "" + visit.getMembers()), + new Placeholder("%visits", "" + visit.getVisitors().size()), + new Placeholder("%players", + "" + islandManager.getPlayersAtIsland(island).size()), + new Placeholder("%player_capacity", "" + playerCapacity), + new Placeholder("%safety", safety)}, + null, null), inventorySlot); + } + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Visit.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + + public enum Type { + + Default, Solo, Team + + } + + public enum Sort { + + Default, Players, Level, Members, Visits, Votes + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Visitors.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Visitors.java new file mode 100644 index 00000000..7a5361a0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Visitors.java @@ -0,0 +1,293 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.*; + +public class Visitors { + + private static Visitors instance; + + public static Visitors getInstance() { + if (instance == null) { + instance = new Visitors(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + Island island = islandManager.getIsland(player); + + if (island == null) { + skyblock.getMessageManager().sendMessage(player, + configLoad.getString("Command.Island.Visitors.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visitors.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visitors.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visitors.Item.Statistics.Displayname"))))) { + soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visitors.Item.Nothing.Displayname"))))) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visitors.Item.Previous.Displayname")))) { + playerData.setPage(playerData.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Visitors.Item.Next.Displayname")))) { + playerData.setPage(playerData.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + boolean isOperator = island.hasRole(IslandRole.Operator, player.getUniqueId()), + isOwner = island.hasRole(IslandRole.Owner, player.getUniqueId()), + canKick = island.getSetting(IslandRole.Operator, "Kick").getStatus(), + canBan = island.getSetting(IslandRole.Operator, "Ban").getStatus(), + banningEnabled = fileManager + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Banning"); + String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); + + if ((isOperator && canKick) || isOwner) { + if (banningEnabled && ((isOperator && canBan) || isOwner)) { + if (event.getClick() == ClickType.LEFT) { + Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); + } else if (event.getClick() == ClickType.RIGHT) { + Bukkit.getServer().dispatchCommand(player, "island ban " + playerName); + } else { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + } else { + Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); + } + } else { + if (banningEnabled && ((isOperator && canBan) || isOwner)) { + Bukkit.getServer().dispatchCommand(player, "island ban " + playerName); + } else { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + } + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + } + }); + + PlayerData playerData = playerDataManager.getPlayerData(player); + Island island = skyblock.getIslandManager().getIsland(player); + + Set islandVisitors = islandManager.getVisitorsAtIsland(island); + Map sortedIslandVisitors = new TreeMap<>(); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Visitors.Item.Exit.Displayname"), null, null, null, null), 0, 8); + nInv.addItem( + nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Visitors.Item.Statistics.Displayname"), + configLoad.getStringList("Menu.Visitors.Item.Statistics.Lore"), + new Placeholder[]{new Placeholder("%visitors", "" + islandVisitors.size())}, null, null), + 4); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Visitors.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + for (UUID islandVisitorList : islandVisitors) { + sortedIslandVisitors.put( + playerDataManager.getPlayerData(Bukkit.getServer().getPlayer(islandVisitorList)).getVisitTime(), + islandVisitorList); + } + + islandVisitors.clear(); + + for (int sortedIslandVisitorList : sortedIslandVisitors.keySet()) { + islandVisitors.add(sortedIslandVisitors.get(sortedIslandVisitorList)); + } + + int playerMenuPage = playerData.getPage(), nextEndIndex = sortedIslandVisitors.size() - playerMenuPage * 36; + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Visitors.Item.Previous.Displayname"), null, null, null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Visitors.Item.Next.Displayname"), null, null, null, null), 7); + } + + if (islandVisitors.size() == 0) { + nInv.addItem( + nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Visitors.Item.Nothing.Displayname"), null, null, null, null), + 31); + } else { + boolean isOperator = island.hasRole(IslandRole.Operator, player.getUniqueId()), + isOwner = island.hasRole(IslandRole.Owner, player.getUniqueId()), + canKick = island.getSetting(IslandRole.Operator, "Kick").getStatus(), + canBan = island.getSetting(IslandRole.Operator, "Ban").getStatus(), + banningEnabled = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Banning"); + int index = playerMenuPage * 36 - 36, + endIndex = index >= islandVisitors.size() ? islandVisitors.size() - 1 : index + 36, + inventorySlot = 17; + + for (; index < endIndex; index++) { + if (islandVisitors.size() > index) { + inventorySlot++; + + Player targetPlayer = Bukkit.getServer().getPlayer((UUID) islandVisitors.toArray()[index]); + PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); + + String[] targetPlayerTexture = targetPlayerData.getTexture(); + String islandVisitTimeFormatted; + + long[] islandVisitTime = NumberUtil.getDuration(targetPlayerData.getVisitTime()); + + if (islandVisitTime[0] != 0) { + islandVisitTimeFormatted = islandVisitTime[0] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Days") + ", " + + islandVisitTime[1] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Hours") + ", " + + islandVisitTime[2] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Minutes") + ", " + + islandVisitTime[3] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); + } else if (islandVisitTime[1] != 0) { + islandVisitTimeFormatted = islandVisitTime[1] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Hours") + ", " + + islandVisitTime[2] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Minutes") + ", " + + islandVisitTime[3] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); + } else if (islandVisitTime[2] != 0) { + islandVisitTimeFormatted = islandVisitTime[2] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Minutes") + ", " + + islandVisitTime[3] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); + } else { + islandVisitTimeFormatted = islandVisitTime[3] + " " + + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); + } + + List itemLore = new ArrayList<>(); + + if ((isOperator && canKick) || isOwner) { + if (banningEnabled && ((isOperator && canBan) || isOwner)) { + itemLore.addAll(configLoad.getStringList( + "Menu.Visitors.Item.Visitor.Kick.Permission.Ban.Permission.Lore")); + } else { + itemLore.addAll(configLoad.getStringList( + "Menu.Visitors.Item.Visitor.Kick.Permission.Ban.NoPermission.Lore")); + } + } else { + if (banningEnabled && ((isOperator && canBan) || isOwner)) { + itemLore.addAll(configLoad.getStringList( + "Menu.Visitors.Item.Visitor.Kick.NoPermission.Ban.Permission.Lore")); + } else { + itemLore.addAll(configLoad.getStringList( + "Menu.Visitors.Item.Visitor.Kick.NoPermission.Ban.NoPermission.Lore")); + } + } + + nInv.addItem( + nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Visitors.Item.Visitor.Displayname") + .replace("%player", targetPlayer.getName())), + itemLore, + new Placeholder[]{new Placeholder("%time", islandVisitTimeFormatted)}, null, + null), + inventorySlot); + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Visitors.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Weather.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Weather.java new file mode 100644 index 00000000..24999e9c --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/Weather.java @@ -0,0 +1,266 @@ +package com.songoda.skyblock.menus; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.WeatherType; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; + +import java.io.File; + +public class Weather { + + private static Weather instance; + + public static Weather getInstance() { + if (instance == null) { + instance = new Weather(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player)) { + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (playerDataManager.hasPlayerData(player)) { + Island island = islandManager.getIsland(player); + + if (island == null) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Weather.Owner.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } else if (!((island.hasRole(IslandRole.Operator, player.getUniqueId()) + && island.getSetting(IslandRole.Operator, "Biome").getStatus()) + || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { + messageManager.sendMessage(player, + configLoad.getString("Command.Island.Weather.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Weather.Item.Info.Displayname"))))) { + soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Weather.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if (is.getType() == Materials.BARRIER.parseMaterial()) { + event.setWillClose(false); + event.setWillDestroy(false); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } else if ((is.getType() == Materials.SUNFLOWER.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Weather.Item.Time.Displayname"))))) { + int islandTime = island.getTime(); + + if (islandTime == 0) { + island.setTime(1000); + } else if (islandTime == 1000) { + island.setTime(6000); + } else if (islandTime == 6000) { + island.setTime(12000); + } else if (islandTime == 12000) { + island.setTime(13000); + } else if (islandTime == 13000) { + island.setTime(18000); + } else if (islandTime == 18000) { + island.setTime(0); + } + + if (!island.isWeatherSynchronized()) { + for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { + all.resetPlayerTime(); + all.resetPlayerWeather(); + all.setPlayerTime(island.getTime(), + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); + all.setPlayerWeather(island.getWeather()); + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if ((is.getType() == Material.GHAST_TEAR) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Weather.Item.Weather.Displayname"))))) { + if (island.getWeather() == WeatherType.DOWNFALL) { + island.setWeather(WeatherType.CLEAR); + } else { + island.setWeather(WeatherType.DOWNFALL); + } + + if (!island.isWeatherSynchronized()) { + for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { + all.resetPlayerTime(); + all.resetPlayerWeather(); + all.setPlayerTime(island.getTime(), + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); + all.setPlayerWeather(island.getWeather()); + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if ((is.getType() == Material.TRIPWIRE_HOOK) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Weather.Item.Synchronised.Displayname"))))) { + if (island.isWeatherSynchronized()) { + island.setWeatherSynchronized(false); + + int islandTime = island.getTime(); + WeatherType islandWeather = island.getWeather(); + + for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { + all.setPlayerTime(islandTime, + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); + all.setPlayerWeather(islandWeather); + } + } else { + island.setWeatherSynchronized(true); + + for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { + all.resetPlayerTime(); + all.resetPlayerWeather(); + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + }); + + Island island = islandManager.getIsland(player); + + String timeName = "", timeChoice = "", weatherSynchronised, weatherChoice, synchronisedChoice; + int islandTime = island.getTime(); + + if (island.isWeatherSynchronized()) { + weatherSynchronised = configLoad.getString("Menu.Weather.Item.Info.Synchronised.Enabled"); + } else { + weatherSynchronised = configLoad.getString("Menu.Weather.Item.Info.Synchronised.Disabled"); + } + + if (islandTime == 0) { + timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Dawn"); + timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Dawn"); + } else if (islandTime == 1000) { + timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Day"); + timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Day"); + } else if (islandTime == 6000) { + timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Noon"); + timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Noon"); + } else if (islandTime == 12000) { + timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Dusk"); + timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Dusk"); + } else if (islandTime == 13000) { + timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Night"); + timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Night"); + } else if (islandTime == 18000) { + timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Midnight"); + timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Midnight"); + } + + if (island.getWeather() != WeatherType.CLEAR) { + weatherChoice = configLoad.getString("Menu.Weather.Item.Weather.Choice.Downfall"); + } else { + weatherChoice = configLoad.getString("Menu.Weather.Item.Weather.Choice.Clear"); + } + + if (island.isWeatherSynchronized()) { + synchronisedChoice = configLoad.getString("Menu.Weather.Item.Synchronised.Choice.Disable"); + } else { + synchronisedChoice = configLoad.getString("Menu.Weather.Item.Synchronised.Choice.Enable"); + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), + configLoad.getString("Menu.Weather.Item.Info.Displayname"), + configLoad.getStringList("Menu.Weather.Item.Info.Lore." + (island.isWeatherSynchronized() ? "Synchronised" : "Unsynchronised")), + new Placeholder[]{new Placeholder("%synchronised", weatherSynchronised), + new Placeholder("%time_name", timeName), new Placeholder("%time", "" + island.getTime()), + new Placeholder("%weather", island.getWeatherName())}, + null, null), 0); + nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Weather.Item.Barrier.Displayname"), null, null, null, null), 1); + + if (!island.isWeatherSynchronized()) { + nInv.addItem(nInv.createItem(Materials.SUNFLOWER.parseItem(), + configLoad.getString("Menu.Weather.Item.Time.Displayname"), + configLoad.getStringList("Menu.Weather.Item.Time.Lore"), + new Placeholder[]{new Placeholder("%choice", timeChoice)}, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.GHAST_TEAR), + configLoad.getString("Menu.Weather.Item.Weather.Displayname"), + configLoad.getStringList("Menu.Weather.Item.Weather.Lore"), + new Placeholder[]{new Placeholder("%choice", weatherChoice)}, null, null), 3); + } else { + nInv.addItem(nInv.createItem(Materials.BARRIER.parseItem(), + configLoad.getString("Menu.Weather.Item.Disabled.Time.Displayname"), + configLoad.getStringList("Menu.Weather.Item.Disabled.Time.Lore"), + new Placeholder[]{new Placeholder("%choice", timeChoice)}, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Weather.Item.Disabled.Weather.Displayname"), + configLoad.getStringList("Menu.Weather.Item.Disabled.Weather.Lore"), + new Placeholder[]{new Placeholder("%choice", weatherChoice)}, null, null), 3); + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.TRIPWIRE_HOOK), + configLoad.getString("Menu.Weather.Item.Synchronised.Displayname"), + configLoad.getStringList("Menu.Weather.Item.Synchronised.Lore"), + new Placeholder[]{new Placeholder("%choice", synchronisedChoice)}, null, null), 4); + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Weather.Title"))); + nInv.setType(InventoryType.HOPPER); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Creator.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Creator.java new file mode 100644 index 00000000..a1c734e3 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Creator.java @@ -0,0 +1,1314 @@ +package com.songoda.skyblock.menus.admin; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.structure.Structure; +import com.songoda.skyblock.structure.StructureManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class Creator implements Listener { + + private static Creator instance; + + public static Creator getInstance() { + if (instance == null) { + instance = new Creator(); + } + + return instance; + } + + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + StructureManager structureManager = skyblock.getStructureManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, null); + + if (playerData.getViewer() == null) { + List structures = structureManager.getStructures(); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Admin.Creator.Browse.Item.Exit.Displayname"), null, null, null, null), 0, + 8); + nInv.addItem( + nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), + configLoad.getString("Menu.Admin.Creator.Browse.Item.Information.Displayname"), + configLoad.getStringList("Menu.Admin.Creator.Browse.Item.Information.Lore"), + new Placeholder[]{new Placeholder("%structures", "" + structures.size())}, null, null), + 4); + nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Admin.Creator.Browse.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + int playerMenuPage = playerData.getPage(), nextEndIndex = structures.size() - playerMenuPage * 36; + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Admin.Creator.Browse.Item.Previous.Displayname"), null, null, null, + null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Admin.Creator.Browse.Item.Next.Displayname"), null, null, null, + null), 7); + } + + if (structures.size() == 0) { + nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Admin.Creator.Browse.Item.Nothing.Displayname"), null, null, null, + null), 31); + } else { + int index = playerMenuPage * 36 - 36, + endIndex = index >= structures.size() ? structures.size() - 1 : index + 36, inventorySlot = 17; + + for (; index < endIndex; index++) { + if (structures.size() > index) { + inventorySlot++; + + Structure structure = structures.get(index); + nInv.addItem(nInv.createItem(structure.getMaterials().parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Browse.Item.Structure.Displayname") + .replace("%structure", structure.getName())), + configLoad.getStringList("Menu.Admin.Creator.Browse.Item.Structure.Lore"), null, null, + null), inventorySlot); + } + } + } + + nInv.setRows(6); + } else { + Structure structure = structureManager.getStructure(((Creator.Viewer) playerData.getViewer()).getName()); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Admin.Creator.Options.Item.Return.Displayname"), null, null, null, null), + 0, 8); + + String displayName = ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")); + + if (structure.getDisplayname() != null && !structure.getDisplayname().isEmpty()) { + displayName = ChatColor.translateAlternateColorCodes('&', structure.getDisplayname()); + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), + configLoad.getString("Menu.Admin.Creator.Options.Item.Displayname.Displayname"), + configLoad.getStringList("Menu.Admin.Creator.Options.Item.Displayname.Lore"), + new Placeholder[]{new Placeholder("%displayname", displayName)}, null, null), 1); + + List descriptionLore = new ArrayList<>(); + + if (structure.getDescription() == null || structure.getDescription().size() == 0) { + for (String itemLore : configLoad + .getStringList("Menu.Admin.Creator.Options.Item.Description.Unset.Lore")) { + if (itemLore.contains("%description")) { + descriptionLore.add(configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")); + } else { + descriptionLore.add(itemLore); + } + } + } else { + for (String itemLore : configLoad + .getStringList("Menu.Admin.Creator.Options.Item.Description.Set.Lore")) { + if (itemLore.contains("%description")) { + for (String descriptionList : structure.getDescription()) { + descriptionLore.add(descriptionList); + } + } else { + descriptionLore.add(itemLore); + } + } + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.ENCHANTED_BOOK), + configLoad.getString("Menu.Admin.Creator.Options.Item.Description.Displayname"), descriptionLore, + null, null, null), 2); + + List commandsLore = new ArrayList<>(); + + if (structure.getCommands() == null || structure.getCommands().size() == 0) { + for (String itemLore : configLoad + .getStringList("Menu.Admin.Creator.Options.Item.Commands.Unset.Lore")) { + if (itemLore.contains("%commands")) { + commandsLore.add(configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")); + } else { + commandsLore.add(itemLore); + } + } + } else { + for (String itemLore : configLoad.getStringList("Menu.Admin.Creator.Options.Item.Commands.Set.Lore")) { + if (itemLore.contains("%commands")) { + for (String commandList : structure.getCommands()) { + commandsLore.add(commandList); + } + } else { + commandsLore.add(itemLore); + } + } + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.BOOK), + configLoad.getString("Menu.Admin.Creator.Options.Item.Commands.Displayname"), commandsLore, null, + null, null), 3); + + List permissionLore = new ArrayList<>(); + + if (structure.isPermission()) { + permissionLore = configLoad.getStringList("Menu.Admin.Creator.Options.Item.Permission.Disable.Lore"); + } else { + permissionLore = configLoad.getStringList("Menu.Admin.Creator.Options.Item.Permission.Enable.Lore"); + } + + nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), + configLoad.getString("Menu.Admin.Creator.Options.Item.Permission.Displayname"), permissionLore, + new Placeholder[]{new Placeholder("%permission", structure.getPermission())}, null, null), 4); + + String fileName = ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")), overworldFileName, + netherFileName, endFileName; + + if (structure.getOverworldFile() != null && !structure.getOverworldFile().isEmpty()) { + overworldFileName = structure.getOverworldFile(); + } else { + overworldFileName = fileName; + } + + if (structure.getNetherFile() != null && !structure.getNetherFile().isEmpty()) { + netherFileName = structure.getNetherFile(); + } else { + netherFileName = fileName; + } + + if (structure.getEndFile() != null && !structure.getEndFile().isEmpty()) { + endFileName = structure.getEndFile(); + } else { + endFileName = fileName; + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.PAPER), + configLoad.getString("Menu.Admin.Creator.Options.Item.File.Displayname"), + configLoad.getStringList("Menu.Admin.Creator.Options.Item.File.Lore"), + new Placeholder[]{new Placeholder("%overworld_file", overworldFileName), + new Placeholder("%nether_file", netherFileName), + new Placeholder("%end_file", endFileName)}, + null, null), 5); + nInv.addItem(nInv.createItem(new ItemStack(Material.DIAMOND), + configLoad.getString("Menu.Admin.Creator.Options.Item.Item.Displayname"), + configLoad.getStringList("Menu.Admin.Creator.Options.Item.Item.Lore"), + new Placeholder[]{new Placeholder("%material", structure.getMaterials().name())}, null, null), + 6); + nInv.addItem(nInv.createItem(new ItemStack(Material.GOLD_NUGGET), + configLoad.getString("Menu.Admin.Creator.Options.Item.DeletionCost.Displayname"), + configLoad.getStringList("Menu.Admin.Creator.Options.Item.DeletionCost.Lore"), + new Placeholder[]{new Placeholder("%cost", "" + structure.getDeletionCost())}, null, null), 7); + + nInv.setRows(1); + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Creator.Title"))); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + + @SuppressWarnings("deprecation") + @EventHandler + public void onInventoryClick(InventoryClickEvent event) { + Player player = (Player) event.getWhoClicked(); + ItemStack is = event.getCurrentItem(); + + if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) { + SkyBlock skyblock = SkyBlock.getInstance(); + + StructureManager structureManager = skyblock.getStructureManager(); + 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(); + + String inventoryName = ""; + if (NMSUtil.getVersionNumber() > 13) { + inventoryName = event.getView().getTitle(); + } else { + try { + inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Creator.Title")))) { + event.setCancelled(true); + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + if (!(player.hasPermission("fabledskyblock.admin.create") || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, configLoad.getString("Island.Admin.Creator.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if ((event.getCurrentItem().getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Browse.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + return; + } else if ((event.getCurrentItem().getType() == Materials.OAK_FENCE_GATE.parseMaterial()) + && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Browse.Item.Exit.Displayname")))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Return.Displayname")))) { + playerData.setViewer(null); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + + return; + } + } else if ((event.getCurrentItem().getType() == Materials.OAK_SIGN.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Browse.Item.Information.Displayname"))))) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.creator") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (structureManager.containsStructure(event1.getName())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Already.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (!event1.getName().replace(" ", "").matches("^[a-zA-Z0-9]+$")) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Characters.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else { + structureManager.addStructure(event1.getName(), Materials.GRASS_BLOCK, null, null, null, + null, false, new ArrayList<>(), new ArrayList<>(), 0.0D); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Created.Message") + .replace("%structure", event1.getName())); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config111 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad111 = config111.getFileConfiguration(); + + configLoad111.set("Structures." + event1.getName() + ".Name", event1.getName()); + + try { + configLoad111.save(config111.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName(configLoad.getString("Menu.Admin.Creator.Browse.Item.Information.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + + return; + } else if ((event.getCurrentItem().getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Browse.Item.Nothing.Displayname"))))) { + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if ((event.getCurrentItem().getType() == Material.NAME_TAG) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Displayname.Displayname"))))) { + if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + String name = ((Creator.Viewer) playerData.getViewer()).getName(); + + if (structureManager.containsStructure(name)) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.creator") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if (!structureManager.containsStructure(name)) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + Structure structure = structureManager.getStructure(name); + structure.setDisplayname(event1.getName()); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config1 = fileManager.getConfig( + new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad1 = config1.getFileConfiguration(); + + configLoad1.set( + "Structures." + structure.getName() + ".Displayname", + event1.getName()); + + try { + configLoad1.save(config1.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Admin.Creator.Options.Item.Displayname.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + + return; + } else if ((event.getCurrentItem().getType() == Material.ENCHANTED_BOOK) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Description.Displayname"))))) { + if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + String name = ((Creator.Viewer) playerData.getViewer()).getName(); + + if (structureManager.containsStructure(name)) { + Structure structure = structureManager.getStructure(name); + + if (structure.getDescription() != null && !structure.getDescription().isEmpty()) { + if (event.getClick() == ClickType.RIGHT) { + structure.removeLine(structure.getDescription().size() - 1); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config12 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad12 = config12.getFileConfiguration(); + + configLoad12.set("Structures." + structure.getName() + ".Description", + structure.getDescription()); + + try { + configLoad12.save(config12.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } else if (event.getClick() != ClickType.LEFT) { + return; + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.creator") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if (!structureManager.containsStructure(name)) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + structure.addLine(event1.getName()); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config13 = fileManager.getConfig( + new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad13 = config13.getFileConfiguration(); + + configLoad13.set( + "Structures." + structure.getName() + ".Description", + structure.getDescription()); + + try { + configLoad13.save(config13.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Admin.Creator.Options.Item.Description.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + + return; + } else if ((event.getCurrentItem().getType() == Material.BOOK) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Commands.Displayname"))))) { + if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + String name = ((Creator.Viewer) playerData.getViewer()).getName(); + + if (structureManager.containsStructure(name)) { + Structure structure = structureManager.getStructure(name); + + if (structure.getCommands() != null && !structure.getCommands().isEmpty()) { + if (event.getClick() == ClickType.RIGHT) { + structure.removeCommand(structure.getCommands().size() - 1); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config14 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad14 = config14.getFileConfiguration(); + + configLoad14.set("Structures." + structure.getName() + ".Commands", + structure.getCommands()); + + try { + configLoad14.save(config14.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } else if (event.getClick() != ClickType.LEFT) { + return; + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.creator") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if (!structureManager.containsStructure(name)) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + structure.addCommand(event1.getName()); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config15 = fileManager.getConfig( + new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad15 = config15.getFileConfiguration(); + + configLoad15.set( + "Structures." + structure.getName() + ".Commands", + structure.getCommands()); + + try { + configLoad15.save(config15.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Admin.Creator.Options.Item.Commands.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + + return; + } else if ((event.getCurrentItem().getType() == Materials.LEGACY_EMPTY_MAP.getPostMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Permission.Displayname"))))) { + if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + String name = ((Creator.Viewer) playerData.getViewer()).getName(); + + if (structureManager.containsStructure(name)) { + Structure structure = structureManager.getStructure(name); + + if (structure.isPermission()) { + structure.setPermission(false); + } else { + structure.setPermission(true); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config16 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad16 = config16.getFileConfiguration(); + + configLoad16.set("Structures." + structure.getName() + ".Permission", + structure.isPermission()); + + try { + configLoad16.save(config16.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + + return; + } else if ((event.getCurrentItem().getType() == Material.PAPER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.File.Displayname"))))) { + if (event.getClick() == ClickType.LEFT || event.getClick() == ClickType.MIDDLE + || event.getClick() == ClickType.RIGHT) { + if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + String name = ((Creator.Viewer) playerData.getViewer()).getName(); + + if (structureManager.containsStructure(name)) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.creator") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else if (!structureManager.containsStructure(name)) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + String fileName = event1.getName(); + if (fileManager.isFileExist(new File(skyblock.getDataFolder().toString() + "/structures", fileName)) || + fileManager.isFileExist(new File(skyblock.getDataFolder().toString() + "/schematics", fileName))) { + if (event.getClick() == ClickType.LEFT) { + Structure structure = structureManager.getStructure(name); + structure.setOverworldFile(fileName); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), + 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config17 = fileManager.getConfig( + new File(skyblock.getDataFolder(), + "structures.yml")); + FileConfiguration configLoad17 = config17 + .getFileConfiguration(); + + configLoad17.set("Structures." + structure.getName() + ".File.Overworld", fileName); + + try { + configLoad17.save(config17.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } else if (event.getClick() == ClickType.MIDDLE) { + Structure structure = structureManager.getStructure(name); + structure.setNetherFile(fileName); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), + 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config18 = fileManager.getConfig( + new File(skyblock.getDataFolder(), + "structures.yml")); + FileConfiguration configLoad18 = config18 + .getFileConfiguration(); + + configLoad18.set("Structures." + structure.getName() + + ".File.Nether", fileName); + + try { + configLoad18.save(config18.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } else { + Structure structure = structureManager.getStructure(name); + structure.setEndFile(fileName); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), + 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config19 = fileManager.getConfig( + new File(skyblock.getDataFolder(), + "structures.yml")); + FileConfiguration configLoad19 = config19 + .getFileConfiguration(); + + configLoad19.set("Structures." + structure.getName() + + ".File.End", fileName); + + try { + configLoad19.save(config19.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.File.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + } + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Admin.Creator.Options.Item.File.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + } + + return; + } else if ((event.getCurrentItem().getType() == Material.DIAMOND) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.Item.Displayname"))))) { + if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + Creator.Viewer viewer = (Viewer) playerData.getViewer(); + String name = viewer.getName(); + + if (viewer.isItem()) { + viewer.setItem(false); + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Item.Cancelled.Message")); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } else { + if (structureManager.containsStructure(name)) { + viewer.setItem(true); + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Item.Added.Message")); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + } + + return; + } else if ((event.getCurrentItem().getType() == Material.GOLD_NUGGET) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Creator.Options.Item.DeletionCost.Displayname"))))) { + if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + String name = ((Creator.Viewer) playerData.getViewer()).getName(); + + if (structureManager.containsStructure(name)) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.creator") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if (playerData.getViewer() == null) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Selected.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } else if (!structureManager.containsStructure(name)) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } else if (!(event1.getName().matches("[0-9]+") + || event1.getName().matches("([0-9]*)\\.([0-9]{1,2}$)"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Numerical.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event1.setWillClose(false); + event1.setWillDestroy(false); + + return; + } + + double deletionCost = Double.valueOf(event1.getName()); + + Structure structure = structureManager.getStructure(name); + structure.setDeletionCost(deletionCost); + + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config112 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad112 = config112.getFileConfiguration(); + + configLoad112.set("Structures." + structure.getName() + ".Deletion.Cost", + deletionCost); + + try { + configLoad112.save(config112.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Admin.Creator.Options.Item.DeletionCost.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + + return; + } + + if (playerData.getViewer() != null) { + Creator.Viewer viewer = (Viewer) playerData.getViewer(); + + if (viewer.isItem()) { + if (structureManager.containsStructure(viewer.getName())) { + Structure structure = structureManager.getStructure(viewer.getName()); + Materials materials = null; + + if (NMSUtil.getVersionNumber() < 13) { + materials = Materials.requestMaterials(event.getCurrentItem().getType().name(), + (byte) event.getCurrentItem().getDurability()); + } else { + materials = Materials.fromString(event.getCurrentItem().getType().name()); + } + + if (materials != null) { + structure.setMaterials(materials); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config113 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad113 = config113.getFileConfiguration(); + + configLoad113.set("Structures." + structure.getName() + ".Item.Material", + structure.getMaterials().name()); + + try { + configLoad113.save(config113.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + + viewer.setItem(false); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Item.Removed.Message")); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + playerData.setViewer(null); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + + return; + } + } + + if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) { + for (Structure structureList : structureManager.getStructures()) { + if (event.getCurrentItem().getType() == structureList.getMaterials().parseMaterial() + && ChatColor.stripColor(is.getItemMeta().getDisplayName()) + .equals(structureList.getName())) { + if (event.getClick() == ClickType.LEFT) { + playerData.setViewer(new Viewer(structureList.getName())); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if (event.getClick() == ClickType.RIGHT) { + structureManager.removeStructure(structureList); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Creator.Removed.Message") + .replace("%structure", structureList.getName())); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config110 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad110 = config110.getFileConfiguration(); + + configLoad110.set("Structures." + structureList.getName(), null); + + try { + configLoad110.save(config110.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + + return; + } + } + + messageManager.sendMessage(player, configLoad.getString("Island.Admin.Creator.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + } + } + + @EventHandler + public void onInventoryClose(InventoryCloseEvent event) { + Player player = (Player) event.getPlayer(); + + SkyBlock skyblock = SkyBlock.getInstance(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + String inventoryName = ""; + if (NMSUtil.getVersionNumber() > 13) { + inventoryName = event.getView().getTitle(); + } else { + try { + inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Creator.Title")))) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + + if (playerDataManager.hasPlayerData(player)) { + Creator.Viewer viewer = (Viewer) playerDataManager.getPlayerData(player).getViewer(); + + if (viewer != null) { + if (viewer.isItem()) { + viewer.setItem(false); + skyblock.getMessageManager().sendMessage(player, + configLoad.getString("Island.Admin.Creator.Item.Removed.Message")); + skyblock.getSoundManager().playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + } + } + } + } + } + + public class Viewer { + + private String name; + private boolean item = false; + + public Viewer(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public boolean isItem() { + return item; + } + + public void setItem(boolean item) { + this.item = item; + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Generator.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Generator.java similarity index 96% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Generator.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Generator.java index 0ca76c44..930f931f 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Generator.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Generator.java @@ -1,20 +1,20 @@ -package me.goodandevil.skyblock.menus.admin; +package com.songoda.skyblock.menus.admin; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.generator.GeneratorManager; -import me.goodandevil.skyblock.generator.GeneratorMaterial; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.generator.GeneratorManager; +import com.songoda.skyblock.generator.GeneratorMaterial; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -59,7 +59,7 @@ public class Generator implements Listener { nInventoryUtil nInv = new nInventoryUtil(player, null); if (playerData.getViewer() == null) { - List generators = generatorManager.getGenerators(); + List generators = generatorManager.getGenerators(); nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Admin.Generator.Browse.Item.Exit.Displayname"), null, null, null, null), @@ -104,7 +104,7 @@ public class Generator implements Listener { if (generators.size() > index) { inventorySlot++; - me.goodandevil.skyblock.generator.Generator generator = generators.get(index); + com.songoda.skyblock.generator.Generator generator = generators.get(index); nInv.addItem(nInv.createItem(generator.getMaterials().parseItem(), ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Generator.Browse.Item.Generator.Displayname") @@ -115,7 +115,7 @@ public class Generator implements Listener { } } } else { - me.goodandevil.skyblock.generator.Generator generator = generatorManager + com.songoda.skyblock.generator.Generator generator = generatorManager .getGenerator(((Generator.Viewer) playerData.getViewer()).getName()); List permissionLore = new ArrayList<>(); @@ -337,7 +337,7 @@ public class Generator implements Listener { String name = ((Generator.Viewer) playerData.getViewer()).getName(); if (generatorManager.containsGenerator(name)) { - me.goodandevil.skyblock.generator.Generator generator = generatorManager.getGenerator(name); + com.songoda.skyblock.generator.Generator generator = generatorManager.getGenerator(name); if (generator.isPermission()) { generator.setPermission(false); @@ -418,7 +418,7 @@ public class Generator implements Listener { Generator.Viewer viewer = (Viewer) playerData.getViewer(); if (generatorManager.containsGenerator(viewer.getName())) { - me.goodandevil.skyblock.generator.Generator generator = generatorManager + com.songoda.skyblock.generator.Generator generator = generatorManager .getGenerator(viewer.getName()); if (generator.getGeneratorMaterials() != null) { @@ -635,7 +635,7 @@ public class Generator implements Listener { } if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) { - for (me.goodandevil.skyblock.generator.Generator generatorList : generatorManager.getGenerators()) { + for (com.songoda.skyblock.generator.Generator generatorList : generatorManager.getGenerators()) { if (event.getCurrentItem().getType() == generatorList.getMaterials().parseMaterial() && ChatColor.stripColor(is.getItemMeta().getDisplayName()) .equals(generatorList.getName())) { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Levelling.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Levelling.java new file mode 100644 index 00000000..39d5da8f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Levelling.java @@ -0,0 +1,449 @@ +package com.songoda.skyblock.menus.admin; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.levelling.LevellingMaterial; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.MaterialUtil; +import com.songoda.skyblock.utils.item.SkullUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; + +public class Levelling implements Listener { + + private static Levelling instance; + + public static Levelling getInstance() { + if (instance == null) { + instance = new Levelling(); + } + + return instance; + } + + @SuppressWarnings("deprecation") + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + LevellingManager levellingManager = skyblock.getLevellingManager(); + FileManager fileManager = skyblock.getFileManager(); + + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + List levellingMaterials = levellingManager.getMaterials(); + + // Filter out materials that won't be displayed in the GUI properly + Inventory testInventory = Bukkit.createInventory(null, 9); + levellingMaterials = levellingMaterials.stream().filter(x -> { + if (!x.getMaterials().isAvailable()) return false; + if (x.getItemStack() == null) return false; + ItemStack itemStack = new ItemStack(MaterialUtil.correctMaterial(x.getItemStack().getType()), 1, x.getItemStack().getDurability()); + if (itemStack == null || itemStack.getItemMeta() == null) return false; + testInventory.clear(); + testInventory.setItem(0, itemStack); + return testInventory.getItem(0) != null; + }).collect(Collectors.toList()); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + nInventoryUtil nInv = new nInventoryUtil(player, null); + nInv.addItem( + nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Admin.Levelling.Item.Exit.Displayname"), null, null, null, null), + 0, 8); + nInv.addItem( + nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), + configLoad.getString("Menu.Admin.Levelling.Item.Information.Displayname"), + configLoad.getStringList("Menu.Admin.Levelling.Item.Information.Lore"), + new Placeholder[]{new Placeholder("%materials", "" + levellingMaterials.size()), + new Placeholder("%division", + "" + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getInt("Island.Levelling.Division"))}, + null, null), + 4); + nInv.addItem( + nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + configLoad.getString("Menu.Admin.Levelling.Item.Barrier.Displayname"), null, null, null, null), + 9, 10, 11, 12, 13, 14, 15, 16, 17); + + int playerMenuPage = playerData.getPage(), nextEndIndex = levellingMaterials.size() - playerMenuPage * 36; + + if (playerMenuPage != 1) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", + "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), + configLoad.getString("Menu.Admin.Levelling.Item.Previous.Displayname"), null, null, null, null), 1); + } + + if (!(nextEndIndex == 0 || nextEndIndex < 0)) { + nInv.addItem(nInv.createItem(SkullUtil.create( + "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", + "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), + configLoad.getString("Menu.Admin.Levelling.Item.Next.Displayname"), null, null, null, null), 7); + } + + if (levellingMaterials.size() == 0) { + nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), + configLoad.getString("Menu.Admin.Levelling.Item.Nothing.Displayname"), null, null, null, null), 31); + } else { + int index = playerMenuPage * 36 - 36, + endIndex = index >= levellingMaterials.size() ? levellingMaterials.size() - 1 : index + 36, + inventorySlot = 17; + + for (; index < endIndex; index++) { + if (levellingMaterials.size() > index) { + inventorySlot++; + + LevellingMaterial material = levellingMaterials.get(index); + nInv.addItem( + nInv.createItem( + new ItemStack(MaterialUtil.correctMaterial(material.getItemStack().getType()), 1, + material.getItemStack().getDurability()), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Levelling.Item.Material.Displayname") + .replace("%material", material.getMaterials().name())), + configLoad.getStringList("Menu.Admin.Levelling.Item.Material.Lore"), + new Placeholder[]{new Placeholder("%points", + NumberUtil.formatNumberByDecimal(material.getPoints()))}, + null, null), + inventorySlot); + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Levelling.Title"))); + nInv.setRows(6); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + + @SuppressWarnings("deprecation") + @EventHandler + public void onInventoryClick(InventoryClickEvent event) { + Player player = (Player) event.getWhoClicked(); + ItemStack is = event.getCurrentItem(); + + if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) { + SkyBlock skyblock = SkyBlock.getInstance(); + + LevellingManager levellingManager = skyblock.getLevellingManager(); + 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(); + + String inventoryName = ""; + if (NMSUtil.getVersionNumber() > 13) { + inventoryName = event.getView().getTitle(); + } else { + try { + inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Levelling.Title")))) { + PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); + + if (!(player.hasPermission("fabledskyblock.admin.level") || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Levelling.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if ((event.getCurrentItem().getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Levelling.Item.Barrier.Displayname"))))) { + event.setCancelled(true); + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + return; + } else if ((event.getCurrentItem().getType() == Materials.OAK_FENCE_GATE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Levelling.Item.Exit.Displayname"))))) { + event.setCancelled(true); + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + player.closeInventory(); + + return; + } else if ((event.getCurrentItem().getType() == Materials.OAK_SIGN.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Levelling.Item.Information.Displayname"))))) { + event.setCancelled(true); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.level") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Levelling.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (event1.getName().matches("[0-9]+")) { + int pointDivision = Integer.valueOf(event1.getName()); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Levelling.Division.Message") + .replace("%division", NumberUtil.formatNumberByDecimal(pointDivision))); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config12 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad12 = config12.getFileConfiguration(); + + configLoad12.set("Island.Levelling.Division", pointDivision); + + try { + configLoad12.save(config12.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Levelling.Numerical.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName(configLoad.getString("Menu.Admin.Levelling.Item.Information.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + + return; + } else if ((event.getCurrentItem().getType() == Material.BARRIER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Levelling.Item.Nothing.Displayname"))))) { + event.setCancelled(true); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } else if ((event.getCurrentItem().getType() == SkullUtil.createItemStack().getType()) + && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Levelling.Item.Previous.Displayname")))) { + event.setCancelled(true); + player.closeInventory(); + + playerData.setPage(playerData.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + + return; + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Levelling.Item.Next.Displayname")))) { + event.setCancelled(true); + player.closeInventory(); + + playerData.setPage(playerData.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + + return; + } + } + + if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) { + for (LevellingMaterial materialList : levellingManager.getMaterials()) { + Materials materials = materialList.getMaterials(); + + if (event.getCurrentItem().getType() == MaterialUtil.correctMaterial(materials.parseMaterial()) + && ChatColor.stripColor(is.getItemMeta().getDisplayName()).equals(materials.name())) { + event.setCancelled(true); + + if (event.getClick() == ClickType.LEFT) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.level") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Levelling.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } else if (levellingManager.containsMaterial(materials)) { + if (event1.getName().matches("[0-9]+")) { + int materialPoints = Integer.valueOf(event1.getName()); + materialList.setPoints(materialPoints); + + messageManager.sendMessage(player, configLoad + .getString("Island.Admin.Levelling.Points.Message") + .replace("%material", materials.name()).replace("%points", + NumberUtil.formatNumberByDecimal(materialPoints))); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, + 1.0F); + player.closeInventory(); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> open(player), 1L); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config1 = fileManager.getConfig(new File( + skyblock.getDataFolder(), "levelling.yml")); + FileConfiguration configLoad1 = config1 + .getFileConfiguration(); + + configLoad1.set( + "Materials." + materials.name() + ".Points", + materialPoints); + + try { + configLoad1.save(config1.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } else { + messageManager.sendMessage(player, configLoad + .getString("Island.Admin.Levelling.Numerical.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + } + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Levelling.Exist.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + is = new ItemStack(Material.NAME_TAG); + ItemMeta im = is.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Admin.Levelling.Item.Material.Word.Enter")); + is.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); + gui.open(); + } else if (event.getClick() == ClickType.RIGHT) { + levellingManager.removeMaterial(materialList); + open(player); + + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Levelling.Removed.Message") + .replace("%material", materials.name())); + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config13 = fileManager + .getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); + FileConfiguration configLoad13 = config13.getFileConfiguration(); + + configLoad13.set("Materials." + materials.name(), null); + + try { + configLoad13.save(config13.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + + return; + } + } + } + + event.setCancelled(true); + + Materials materials; + + if (NMSUtil.getVersionNumber() < 13) { + materials = Materials.requestMaterials(event.getCurrentItem().getType().name(), + (byte) event.getCurrentItem().getDurability()); + } else { + materials = Materials.fromString(event.getCurrentItem().getType().name()); + } + + if (levellingManager.containsMaterial(materials)) { + messageManager.sendMessage(player, configLoad.getString("Island.Admin.Levelling.Already.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + levellingManager.addMaterial(materials, 0); + open(player); + + messageManager.sendMessage(player, configLoad.getString("Island.Admin.Levelling.Added.Message") + .replace("%material", materials.name())); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + Config config14 = fileManager.getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); + FileConfiguration configLoad14 = config14.getFileConfiguration(); + + configLoad14.set("Materials." + materials.name() + ".Points", 0); + + try { + configLoad14.save(config14.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Settings.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Settings.java new file mode 100644 index 00000000..98065d12 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Settings.java @@ -0,0 +1,684 @@ +package com.songoda.skyblock.menus.admin; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class Settings { + + private static Settings instance; + + public static Settings getInstance() { + if (instance == null) { + instance = new Settings(); + } + + return instance; + } + + public void open(Player player, Settings.Type menuType, IslandRole role) { + SkyBlock skyblock = SkyBlock.getInstance(); + + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = languageConfig.getFileConfiguration(); + + if (menuType == Settings.Type.Categories) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (!(player.hasPermission("fabledskyblock.admin.settings") || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Categories.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Admin.Settings.Categories.Item.Visitor.Displayname"))))) { + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Visitor), 1L); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Categories.Item.Member.Displayname"))))) { + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Member), 1L); + } else if ((is.getType() == Material.ITEM_FRAME) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Admin.Settings.Categories.Item.Operator.Displayname"))))) { + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Operator), 1L); + } else if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Categories.Item.Coop.Displayname"))))) { + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Coop), 1L); + } else if ((is.getType() == Materials.OAK_SAPLING.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Categories.Item.Owner.Displayname"))))) { + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Owner), 1L); + } + }); + + nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Visitor.Displayname"), + configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Visitor.Lore"), null, null, null), 2); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Member.Displayname"), + configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Member.Lore"), null, null, null), 3); + nInv.addItem(nInv.createItem(new ItemStack(Material.ITEM_FRAME), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Operator.Displayname"), + configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Operator.Lore"), null, null, null), + 4); + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Coop.Enable")) { + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Exit.Displayname"), null, null, null, + null), 0); + nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Coop.Displayname"), + configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Coop.Lore"), null, null, null), + 6); + nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Owner.Displayname"), + configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Owner.Lore"), null, null, null), + 7); + } else { + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Exit.Displayname"), null, null, null, + null), 0, 8); + nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), + configLoad.getString("Menu.Admin.Settings.Categories.Item.Owner.Displayname"), + configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Owner.Lore"), null, null, null), + 6); + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Categories.Title"))); + nInv.setRows(1); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else if (menuType == Settings.Type.Role) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (!(player.hasPermission("fabledskyblock.admin.settings") || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) && (is + .getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Visitor.Item.Return.Displayname"))) + || is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Member.Item.Return.Displayname"))) + || is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad + .getString("Menu.Admin.Settings.Operator.Item.Return.Displayname"))) + || is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings.Owner.Item.Return.Displayname"))))) { + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Categories, null), 1L); + } else if (is.hasItemMeta()) { + String roleName = getRoleName(role); + + FileConfiguration settingsConfigLoad = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "settings.yml")).getFileConfiguration(); + + for (String settingList : settingsConfigLoad.getConfigurationSection("Settings." + role.name()) + .getKeys(false)) { + if (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings." + roleName + ".Item.Setting." + + settingList + ".Displayname")))) { + if (settingsConfigLoad.getBoolean("Settings." + role.name() + "." + settingList)) { + settingsConfigLoad.set("Settings." + role.name() + "." + settingList, false); + } else { + settingsConfigLoad.set("Settings." + role.name() + "." + settingList, true); + } + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + try { + Config config = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "settings.yml")); + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + break; + } + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, role), 1L); + } + }); + + if (role == IslandRole.Visitor + || role == IslandRole.Member + || role == IslandRole.Coop) { + nInv.addItemStack(createItem(role, "Destroy", new ItemStack(Material.DIAMOND_PICKAXE)), 9); + nInv.addItemStack(createItem(role, "Place", new ItemStack(Material.GRASS)), 10); + nInv.addItemStack(createItem(role, "Anvil", new ItemStack(Material.ANVIL)), 11); + nInv.addItemStack(createItem(role, "ArmorStandUse", new ItemStack(Material.ARMOR_STAND)), 12); + nInv.addItemStack(createItem(role, "Beacon", new ItemStack(Material.BEACON)), 13); + nInv.addItemStack(createItem(role, "Bed", Materials.WHITE_BED.parseItem()), 14); + nInv.addItemStack(createItem(role, "AnimalBreeding", new ItemStack(Material.WHEAT)), 15); + nInv.addItemStack( + createItem(role, "Brewing", new ItemStack(Materials.LEGACY_BREWING_STAND.getPostMaterial())), + 16); + nInv.addItemStack(createItem(role, "Bucket", new ItemStack(Material.BUCKET)), 17); + nInv.addItemStack(createItem(role, "WaterCollection", new ItemStack(Material.POTION)), 18); + nInv.addItemStack(createItem(role, "Storage", new ItemStack(Material.CHEST)), 19); + nInv.addItemStack(createItem(role, "Workbench", Materials.CRAFTING_TABLE.parseItem()), 20); + nInv.addItemStack(createItem(role, "Crop", Materials.WHEAT_SEEDS.parseItem()), 21); + nInv.addItemStack(createItem(role, "Door", Materials.OAK_DOOR.parseItem()), 22); + nInv.addItemStack(createItem(role, "Gate", Materials.OAK_FENCE_GATE.parseItem()), 23); + nInv.addItemStack(createItem(role, "Projectile", new ItemStack(Material.ARROW)), 24); + nInv.addItemStack(createItem(role, "Enchant", Materials.ENCHANTING_TABLE.parseItem()), 25); + nInv.addItemStack(createItem(role, "Fire", new ItemStack(Material.FLINT_AND_STEEL)), 26); + nInv.addItemStack(createItem(role, "Furnace", new ItemStack(Material.FURNACE)), 27); + nInv.addItemStack(createItem(role, "HorseInventory", Materials.CHEST_MINECART.parseItem()), 28); + nInv.addItemStack(createItem(role, "MobRiding", new ItemStack(Material.SADDLE)), 29); + nInv.addItemStack(createItem(role, "MobHurting", Materials.WOODEN_SWORD.parseItem()), 30); + nInv.addItemStack(createItem(role, "MobTaming", Materials.POPPY.parseItem()), 31); + nInv.addItemStack(createItem(role, "Leash", Materials.LEAD.parseItem()), 32); + nInv.addItemStack(createItem(role, "LeverButton", new ItemStack(Material.LEVER)), 33); + nInv.addItemStack(createItem(role, "Milking", new ItemStack(Material.MILK_BUCKET)), 34); + nInv.addItemStack(createItem(role, "Jukebox", new ItemStack(Material.JUKEBOX)), 35); + nInv.addItemStack(createItem(role, "PressurePlate", Materials.OAK_PRESSURE_PLATE.parseItem()), 36); + nInv.addItemStack(createItem(role, "Redstone", new ItemStack(Material.REDSTONE)), 37); + nInv.addItemStack(createItem(role, "Shearing", new ItemStack(Material.SHEARS)), 38); + nInv.addItemStack(createItem(role, "Trading", new ItemStack(Material.EMERALD)), 39); + nInv.addItemStack(createItem(role, "ItemDrop", new ItemStack(Material.PUMPKIN_SEEDS)), 40); + nInv.addItemStack(createItem(role, "ItemPickup", new ItemStack(Material.MELON_SEEDS)), 41); + nInv.addItemStack(createItem(role, "Fishing", new ItemStack(Material.FISHING_ROD)), 42); + nInv.addItemStack(createItem(role, "DropperDispenser", new ItemStack(Material.DISPENSER)), 43); + nInv.addItemStack(createItem(role, "SpawnEgg", new ItemStack(Material.EGG)), 44); + nInv.addItemStack(createItem(role, "HangingDestroy", new ItemStack(Material.ITEM_FRAME)), 45); + nInv.addItemStack(createItem(role, "Cake", new ItemStack(Material.CAKE)), 46); + nInv.addItemStack(createItem(role, "DragonEggUse", new ItemStack(Material.DRAGON_EGG)), 47); + nInv.addItemStack(createItem(role, "MinecartBoat", new ItemStack(Material.MINECART)), 48); + nInv.addItemStack(createItem(role, "Portal", new ItemStack(Material.ENDER_PEARL)), 50); + nInv.addItemStack(createItem(role, "Hopper", new ItemStack(Material.HOPPER)), 51); + nInv.addItemStack(createItem(role, "EntityPlacement", new ItemStack(Material.ARMOR_STAND)), 52); + nInv.addItemStack(createItem(role, "ExperienceOrbPickup", Materials.EXPERIENCE_BOTTLE.parseItem()), 53); + + nInv.setRows(6); + } else if (role == IslandRole.Operator) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Banning")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 10); + nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 11); + nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 12); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 13); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 14); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 15); + nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 16); + nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 17); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 22); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); + } else { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 10); + nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 11); + nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 12); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 13); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 14); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 15); + nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 16); + nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 17); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); + nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 12); + nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 13); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 14); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 15); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 16); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 22); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); + } else { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); + nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 12); + nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 13); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 14); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 15); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 16); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); + } + } + + nInv.setRows(3); + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 12); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 13); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 14); + nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 15); + nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 16); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 22); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); + } else { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 12); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 13); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 14); + nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 15); + nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 16); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 21); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); + } + + nInv.setRows(3); + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 12); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 13); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 14); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 15); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 16); + nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 21); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 22); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 23); + + nInv.setRows(3); + } else { + nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); + nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 10); + nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 11); + nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 12); + nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 13); + nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 14); + nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), + 15); + nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 16); + nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 17); + + nInv.setRows(2); + } + } + } + } else if (role == IslandRole.Owner) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 17); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + } + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 14); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 15); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 16); + } + } + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 10); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 11); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 12); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack( + createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); + } + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); + } + } else { + if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 10); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 11); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); + } else { + nInv.addItemStack( + createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), + 11); + nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), + 12); + nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); + nInv.addItemStack( + createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); + nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); + } + } + } + } + + nInv.setRows(2); + } + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + configLoad.getString("Menu.Admin.Settings." + role.name() + ".Item.Return.Displayname"), null, null, + null, null), 0, 8); + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings." + role.name() + ".Title"))); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } + + private ItemStack createItem(IslandRole role, String setting, ItemStack is) { + SkyBlock skyblock = SkyBlock.getInstance(); + + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + List itemLore = new ArrayList<>(); + + ItemMeta im = is.getItemMeta(); + + String roleName = role.name(); + + if (role == IslandRole.Visitor + || role == IslandRole.Member + || role == IslandRole.Coop) { + roleName = "Default"; + } + + im.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Settings." + roleName + ".Item.Setting." + setting + ".Displayname"))); + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "settings.yml")).getFileConfiguration() + .getBoolean("Settings." + role.name() + "." + setting)) { + for (String itemLoreList : configLoad + .getStringList("Menu.Admin.Settings." + roleName + ".Item.Setting.Status.Enabled.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + } else { + for (String itemLoreList : configLoad + .getStringList("Menu.Admin.Settings." + roleName + ".Item.Setting.Status.Disabled.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + } + + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + im.setLore(itemLore); + is.setItemMeta(im); + + return is; + } + + private String getRoleName(IslandRole role) { + if (role == IslandRole.Visitor + || role == IslandRole.Member + || role == IslandRole.Coop) { + return "Default"; + } + + return role.name(); + } + + public enum Type { + + Categories, Panel, Role + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Upgrade.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Upgrade.java new file mode 100644 index 00000000..66ae04a7 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/menus/admin/Upgrade.java @@ -0,0 +1,831 @@ +package com.songoda.skyblock.menus.admin; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.placeholder.Placeholder; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.upgrade.UpgradeManager; +import com.songoda.skyblock.utils.AbstractAnvilGUI; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.nInventoryUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionData; +import org.bukkit.potion.PotionType; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +public class Upgrade { + + private static Upgrade instance; + + public static Upgrade getInstance() { + if (instance == null) { + instance = new Upgrade(); + } + + return instance; + } + + @SuppressWarnings("deprecation") + public void open(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + UpgradeManager upgradeManager = skyblock.getUpgradeManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (playerDataManager.hasPlayerData(player) && playerDataManager.getPlayerData(player).getViewer() != null) { + FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration(); + Viewer viewer = (Upgrade.Viewer) playerDataManager.getPlayerData(player).getViewer(); + + if (viewer == null || viewer.getType() == Upgrade.Viewer.Type.Upgrades) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (!(player.hasPermission("fabledskyblock.admin.upgrade") || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Upgrade.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + ItemStack is = event.getItem(); + com.songoda.skyblock.upgrade.Upgrade upgrade = null; + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Exit.Displayname"))))) { + soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); + + return; + } else if ((is.getType() == Material.POTION) && (is.hasItemMeta())) { + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Speed.Displayname")))) { + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Speed) + .get(0); + viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Speed); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( + '&', configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Jump.Displayname")))) { + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Jump) + .get(0); + viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Jump); + } + } else if ((is.getType() == Materials.WHEAT_SEEDS.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Crop.Displayname"))))) { + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Crop) + .get(0); + viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Crop); + } else if ((is.getType() == Material.FEATHER) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Fly.Displayname"))))) { + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Fly) + .get(0); + viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Fly); + } else if ((is.getType() == Material.SPIDER_EYE) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Drops.Displayname"))))) { + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Drops) + .get(0); + viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Drops); + } else if ((is.getType() == Material.BEACON) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Size.Displayname"))))) { + viewer.setType(Viewer.Type.Size); + viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Size); + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if ((is.getType() == Materials.SPAWNER.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Admin.Upgrade.Upgrades.Item.Spawner.Displayname"))))) { + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner) + .get(0); + viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner); + } + + if (upgrade != null) { + if (event.getClick() == ClickType.LEFT) { + if (upgrade.isEnabled()) { + upgrade.setEnabled(false); + } else { + upgrade.setEnabled(true); + } + + if (playerDataManager.hasPlayerData(player)) { + com.songoda.skyblock.upgrade.Upgrade.Type upgradeType = ((Viewer) playerDataManager + .getPlayerData(player).getViewer()).getUpgrade(); + + boolean enabled = upgrade.isEnabled(); + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config = fileManager.getConfig(new File( + skyblock.getDataFolder(), "upgrades.yml")); + FileConfiguration configLoad1 = config + .getFileConfiguration(); + + configLoad1.set( + "Upgrades." + upgradeType.name() + ".Enable", + enabled); + + try { + configLoad1.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if (event.getClick() == ClickType.RIGHT) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.upgrade") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, configLoad + .getString("Island.Admin.Upgrade.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), + 1.0F, 1.0F); + + return; + } else if (!(event1.getName().matches("[0-9]+") + || event1.getName().matches("([0-9]*)\\.([0-9]{1,2}$)"))) { + messageManager.sendMessage(player, configLoad + .getString("Island.Admin.Upgrade.Numerical.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), + 1.0F, 1.0F); + + event1.setWillClose(false); + event1.setWillDestroy(false); + + return; + } + + if (playerDataManager.hasPlayerData(player)) { + double upgradeCost = Double.valueOf(event1.getName()); + com.songoda.skyblock.upgrade.Upgrade.Type upgradeType = ((Viewer) playerDataManager + .getPlayerData(player).getViewer()).getUpgrade(); + + com.songoda.skyblock.upgrade.Upgrade upgrade1 = upgradeManager + .getUpgrades(upgradeType).get(0); + upgrade1.setCost(upgradeCost); + soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), + 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, + () -> { + Config config = fileManager.getConfig(new File( + skyblock.getDataFolder(), "upgrades.yml")); + FileConfiguration configLoad1 = config + .getFileConfiguration(); + + configLoad1.set( + "Upgrades." + upgradeType.name() + ".Cost", + upgradeCost); + + try { + configLoad1.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is1 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is1.getItemMeta(); + im.setDisplayName( + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Word.Enter")); + is1.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); + gui.open(); + }, 1L); + } else { + event.setWillClose(false); + event.setWillDestroy(false); + } + } + }); + + ItemStack speedPotion = new ItemStack(Material.POTION); + ItemStack jumpPotion = new ItemStack(Material.POTION); + com.songoda.skyblock.upgrade.Upgrade upgrade; + + int NMSVersion = NMSUtil.getVersionNumber(); + + if (NMSVersion > 12) { + PotionMeta pm = (PotionMeta) speedPotion.getItemMeta(); + pm.setBasePotionData(new PotionData(PotionType.SPEED)); + speedPotion.setItemMeta(pm); + } else { + speedPotion = new ItemStack(Material.POTION, 1, (short) 8194); + } + + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Speed).get(0); + nInv.addItem(nInv.createItem(speedPotion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Speed.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Speed.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", getStatus(upgrade))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 1); + + if (NMSVersion > 12) { + PotionMeta pm = (PotionMeta) jumpPotion.getItemMeta(); + pm.setBasePotionData(new PotionData(PotionType.JUMP)); + jumpPotion.setItemMeta(pm); + } else { + jumpPotion = new ItemStack(Material.POTION, 1, (short) 8203); + } + + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Jump).get(0); + nInv.addItem(nInv.createItem(jumpPotion, + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Jump.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Jump.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", getStatus(upgrade))}, + null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 2); + + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Crop).get(0); + nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Crop.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Crop.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", getStatus(upgrade))}, + null, null), 3); + + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Fly).get(0); + nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Fly.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Fly.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", getStatus(upgrade))}, + null, null), 4); + + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Drops).get(0); + nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Drops.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Drops.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", getStatus(upgrade))}, + null, null), 5); + + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size); + int upgradeTiers = 0; + + if (upgrades != null) { + upgradeTiers = upgrades.size(); + } + + nInv.addItem(nInv.createItem(new ItemStack(Material.BEACON), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Size.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Size.Lore"), + new Placeholder[]{new Placeholder("%tiers", "" + upgradeTiers)}, null, null), 6); + + upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner).get(0); + nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Spawner.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Spawner.Lore"), + new Placeholder[]{ + new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), + new Placeholder("%status", getStatus(upgrade))}, + null, null), 7); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Exit.Displayname")), + null, null, null, null), 0, 8); + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Upgrades.Title"))); + nInv.setRows(1); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } else if (viewer.getType() == Upgrade.Viewer.Type.Size) { + nInventoryUtil nInv = new nInventoryUtil(player, event -> { + if (!(player.hasPermission("fabledskyblock.admin.upgrade") || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Upgrade.Permission.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + return; + } + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + ItemStack is = event.getItem(); + + if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Admin.Upgrade.Size.Item.Return.Displayname"))))) { + playerData.setViewer(new Viewer(Viewer.Type.Upgrades, null)); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta() + .getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Admin.Upgrade.Size.Item.Information.Displayname"))))) { + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size); + + if (upgrades != null && upgrades.size() >= 5) { + messageManager.sendMessage(player, + configLoad.getString("Island.Admin.Upgrade.Tier.Limit.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (playerDataManager.hasPlayerData(player) + && playerDataManager + .getPlayerData(player) != null) { + if (!event1.getName().matches("[0-9]+")) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Numerical.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event1.setWillClose(false); + event1.setWillDestroy(false); + + return; + } else { + List upgrades1 = upgradeManager + .getUpgrades( + com.songoda.skyblock.upgrade.Upgrade.Type.Size); + + if (upgrades1 != null && upgrades1.size() >= 5) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Tier.Limit.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } + } + + int size = Integer.valueOf(event1.getName()); + + if (size > 1000) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Tier.Size.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } else if (upgradeManager.hasUpgrade( + com.songoda.skyblock.upgrade.Upgrade.Type.Size, + size)) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Tier.Exist.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event1.setWillClose(false); + event1.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, + Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + upgradeManager.addUpgrade( + com.songoda.skyblock.upgrade.Upgrade.Type.Size, + size); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is12 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is12.getItemMeta(); + im.setDisplayName(configLoad + .getString("Menu.Admin.Upgrade.Size.Item.Word.Size.Enter")); + is12.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is12); + gui.open(); + }, 1L); + } + } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) + && (is.hasItemMeta()) + && (is.getItemMeta().getDisplayName() + .equals(ChatColor.translateAlternateColorCodes('&', configLoad + .getString("Menu.Admin.Upgrade.Size.Item.Barrier.Displayname"))))) { + soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } else if ((is.getType() == Material.PAPER) && (is.hasItemMeta())) { + int slot = event.getSlot(); + int tier = slot - 3; + + com.songoda.skyblock.upgrade.Upgrade upgrade = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size).get(tier); + + if (upgrade != null) { + if (event.getClick() == ClickType.LEFT) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.upgrade") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Permission.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + return; + } + + if (playerDataManager.hasPlayerData(player) + && playerDataManager + .getPlayerData(player) != null) { + if (!event1.getName().matches("[0-9]+")) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Numerical.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event1.setWillClose(false); + event1.setWillDestroy(false); + + return; + } else if (upgradeManager.getUpgrades( + com.songoda.skyblock.upgrade.Upgrade.Type.Size) + .get(tier) == null) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Tier.Selected.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } + + int size = Integer.valueOf(event1.getName()); + + if (size > 1000) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Tier.Size.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } else if (upgradeManager.hasUpgrade( + com.songoda.skyblock.upgrade.Upgrade.Type.Size, + size)) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Tier.Exist.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + + soundManager.playSound(player, + Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + upgradeManager.getUpgrades( + com.songoda.skyblock.upgrade.Upgrade.Type.Size) + .get(tier).setValue(size); + fileManager + .getConfig( + new File(skyblock.getDataFolder(), + "upgrades.yml")) + .getFileConfiguration() + .set("Upgrades.Size." + tier + ".Value", + size); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is13 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is13.getItemMeta(); + im.setDisplayName(configLoad.getString( + "Menu.Admin.Upgrade.Size.Item.Word.Size.Enter")); + is13.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is13); + gui.open(); + }, 1L); + + return; + } else if (event.getClick() == ClickType.MIDDLE) { + soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); + upgradeManager.removeUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Size, + upgrade.getCost(), upgrade.getValue()); + } else if (event.getClick() == ClickType.RIGHT) { + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, + () -> { + AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { + if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { + if (!(player.hasPermission("fabledskyblock.admin.upgrade") + || player.hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*"))) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Permission.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + return; + } + + if (playerDataManager.hasPlayerData(player) + && playerDataManager + .getPlayerData(player) != null) { + if (!(event1.getName().matches("[0-9]+") + || event1.getName().matches( + "([0-9]*)\\.([0-9]{2}$)"))) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Numerical.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + event1.setWillClose(false); + event1.setWillDestroy(false); + + return; + } else if (upgradeManager.getUpgrades( + com.songoda.skyblock.upgrade.Upgrade.Type.Size) + .get(tier) == null) { + messageManager.sendMessage(player, + configLoad.getString( + "Island.Admin.Upgrade.Tier.Selected.Message")); + soundManager.playSound(player, + Sounds.ANVIL_LAND.bukkitSound(), 1.0F, + 1.0F); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player), 1L); + + return; + } + + double cost = Double.valueOf(event1.getName()); + + soundManager.playSound(player, + Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); + upgradeManager.getUpgrades( + com.songoda.skyblock.upgrade.Upgrade.Type.Size) + .get(tier).setCost(cost); + fileManager + .getConfig( + new File(skyblock.getDataFolder(), + "upgrades.yml")) + .getFileConfiguration() + .set("Upgrades.Size." + tier + ".Cost", + cost); + + Bukkit.getServer().getScheduler() + .runTaskLater(skyblock, + () -> open(player), 1L); + } + + event1.setWillClose(true); + event1.setWillDestroy(true); + } else { + event1.setWillClose(false); + event1.setWillDestroy(false); + } + }); + + ItemStack is14 = new ItemStack(Material.NAME_TAG); + ItemMeta im = is14.getItemMeta(); + im.setDisplayName(configLoad.getString( + "Menu.Admin.Upgrade.Size.Item.Word.Cost.Enter")); + is14.setItemMeta(im); + + gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is14); + gui.open(); + }, 1L); + + return; + } else { + event.setWillClose(false); + event.setWillDestroy(false); + + return; + } + } + + Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); + } + } + }); + + nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Size.Item.Return.Displayname")), + null, null, null, null), 0); + nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Size.Item.Information.Displayname")), + configLoad.getStringList("Menu.Admin.Upgrade.Size.Item.Information.Lore"), null, null, null), + 1); + nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Size.Item.Barrier.Displayname")), + null, null, null, null), 2); + + List upgrades = upgradeManager + .getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size); + + if (upgrades != null) { + for (int i = 0; i < 5; i++) { + if (upgrades.size() >= i + 1) { + com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(i); + int tier = i + 1; + + if (upgrade != null) { + nInv.addItem(nInv.createItem(new ItemStack(Material.PAPER, tier), + ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Size.Item.Tier.Displayname") + .replace("%tier", "" + tier)), + configLoad.getStringList("Menu.Admin.Upgrade.Size.Item.Tier.Lore"), + new Placeholder[]{new Placeholder("%size", "" + upgrade.getValue()), + new Placeholder("%cost", + NumberUtil.formatNumberByDecimal(upgrade.getCost()))}, + null, null), i + 3); + } + } + } + } + + nInv.setTitle(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Menu.Admin.Upgrade.Size.Title"))); + nInv.setRows(1); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); + } + } + } + + private String getStatus(com.songoda.skyblock.upgrade.Upgrade upgrade) { + SkyBlock skyblock = SkyBlock.getInstance(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); + + if (upgrade.isEnabled()) { + return configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Word.Disable"); + } else { + return configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Word.Enable"); + } + } + + public static class Viewer { + + private Type type; + private com.songoda.skyblock.upgrade.Upgrade.Type upgrade; + + public Viewer(Type type, com.songoda.skyblock.upgrade.Upgrade.Type upgrade) { + this.type = type; + this.upgrade = upgrade; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public com.songoda.skyblock.upgrade.Upgrade.Type getUpgrade() { + return upgrade; + } + + public void setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type upgrade) { + this.upgrade = upgrade; + } + + public enum Type { + + Upgrades, Size + + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/message/MessageManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/message/MessageManager.java new file mode 100644 index 00000000..47604246 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/message/MessageManager.java @@ -0,0 +1,70 @@ +package com.songoda.skyblock.message; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.placeholder.PlaceholderManager; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class MessageManager { + + private final SkyBlock skyblock; + + public MessageManager(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + public void sendMessage(CommandSender sender, String message) { + if (sender instanceof Player) { + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); + Player player = (Player) sender; + + if (placeholderManager.isPlaceholderAPIEnabled()) { + message = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, message.replace("&", "clr")) + .replace("clr", "&"); + } + + if (message.contains("\n") || message.contains("\\n")) { + List messages = new ArrayList<>(); + + message = message.replace("\\n", "\n"); + + for (String messageList : message.split("\n")) { + messages.add(ChatColor.translateAlternateColorCodes('&', messageList)); + } + + sender.sendMessage(messages.toArray(new String[0])); + } else { + sender.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); + } + } else { + if (message.contains("\n") || message.contains("\\n")) { + List messages = new ArrayList<>(); + + message = message.replace("\\n", "\n"); + + for (String messageList : message.split("\n")) { + messages.add(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', messageList))); + } + + sender.sendMessage(messages.toArray(new String[0])); + } else { + sender.sendMessage(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message))); + } + } + } + + public String replaceMessage(Player player, String message) { + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); + + if (placeholderManager.isPlaceholderAPIEnabled()) { + message = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, message.replace("&", "clr")) + .replace("clr", "&"); + } + + return message; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/EZPlaceholder.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/EZPlaceholder.java new file mode 100644 index 00000000..72959a5f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/EZPlaceholder.java @@ -0,0 +1,145 @@ +package com.songoda.skyblock.placeholder; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.leaderboard.Leaderboard; +import com.songoda.skyblock.leaderboard.LeaderboardManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.visit.Visit; +import me.clip.placeholderapi.expansion.PlaceholderExpansion; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; + +import java.io.File; +import java.util.List; + +public class EZPlaceholder extends PlaceholderExpansion implements Listener { + + private final SkyBlock skyblock; + + public EZPlaceholder(SkyBlock skyblock) { + this.skyblock = skyblock; + Bukkit.getPluginManager().registerEvents(this, skyblock); + } + + public String getIdentifier() { + return "fabledskyblock"; + } + + public String getPlugin() { + return null; + } + + public String getAuthor() { + return skyblock.getDescription().getAuthors().get(0); + } + + public String getVersion() { + return skyblock.getDescription().getVersion(); + } + + public boolean persist() { + return true; + } + + public String onPlaceholderRequest(Player player, String identifier) { + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + List leaderboardLevelPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Level); + List leaderboardBankPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Bank); + List 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("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.fabledskyblock_leaderboard_votes.Non-empty.Message") + .replace("%position", "" + (i + 1)).replace("%player", islandOwnerName) + .replace("%votes", NumberUtil.formatNumberByDecimal(visit.getVoters().size()))); + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_leaderboard_votes.Empty.Message")); + } else if (identifier.equalsIgnoreCase("leaderboard_bank_" + (i + 1))) { + if (i < leaderboardBankPlayers.size()) { + Leaderboard leaderboard = leaderboardBankPlayers.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.fabledskyblock_leaderboard_bank.Non-empty.Message") + .replace("%position", "" + (i + 1)).replace("%player", islandOwnerName) + .replace("%balance", NumberUtil.formatNumberByDecimal(visit.getBankBalance()))); + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_leaderboard_bank.Empty.Message")); + } else if (identifier.equalsIgnoreCase("leaderboard_level_" + (i + 1))) { + if (i < leaderboardLevelPlayers.size()) { + Leaderboard leaderboard = leaderboardLevelPlayers.get(i); + Visit visit = leaderboard.getVisit(); + IslandLevel 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.fabledskyblock_leaderboard_level.Non-empty.Message") + .replace("%position", "" + (i + 1)).replace("%player", islandOwnerName) + .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) + .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints()))); + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_leaderboard_level.Empty.Message")); + } + } + } + + if (player == null) { + return ""; + } + + return placeholderManager.getPlaceholder(player, "fabledskyblock_" + identifier); + } + +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/MVdWPlaceholder.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/MVdWPlaceholder.java new file mode 100644 index 00000000..b9a36b3e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/MVdWPlaceholder.java @@ -0,0 +1,140 @@ +package com.songoda.skyblock.placeholder; + +import be.maximvdw.placeholderapi.PlaceholderAPI; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.leaderboard.Leaderboard; +import com.songoda.skyblock.leaderboard.LeaderboardManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.visit.Visit; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.List; + +public class MVdWPlaceholder { + + private final SkyBlock skyblock; + + public MVdWPlaceholder(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + public void register() { + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + List leaderboardLevelPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Level); + List leaderboardBankPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Bank); + List leaderboardVotesPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Votes); + + PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_islands", event -> "" + skyblock.getVisitManager().getIslands().size()); + + for (int i = 0; i < 10; i++) { + PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_leaderboard_votes_" + (i + 1), + event -> { + int index = Integer.valueOf(event.getPlaceholder().replace("fabledskyblock_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.fabledskyblock_leaderboard_votes.Non-empty.Message") + .replace("%position", "" + (index + 1)) + .replace("%player", islandOwnerName) + .replace("%votes", NumberUtil.formatNumberByDecimal(visit.getVoters().size()))); + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_leaderboard_votes.Empty.Message")); + }); + + PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_leaderboard_bank_" + (i + 1), + event -> { + int index = Integer.valueOf(event.getPlaceholder().replace("fabledskyblock_leaderboard_bank_", "")); + + if (index < leaderboardBankPlayers.size()) { + Leaderboard leaderboard = leaderboardBankPlayers.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.fabledskyblock_leaderboard_bank.Non-empty.Message") + .replace("%position", "" + (index + 1)) + .replace("%player", islandOwnerName) + .replace("%balance", NumberUtil.formatNumberByDecimal(visit.getBankBalance()))); + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_leaderboard_bank.Empty.Message")); + }); + + PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_leaderboard_level_" + (i + 1), + event -> { + int index = Integer.valueOf(event.getPlaceholder().replace("fabledskyblock_leaderboard_level_", "")); + + if (index < leaderboardLevelPlayers.size()) { + Leaderboard leaderboard = leaderboardLevelPlayers.get(index); + Visit visit = leaderboard.getVisit(); + IslandLevel 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.fabledskyblock_leaderboard_level.Non-empty.Message") + .replace("%position", "" + (index + 1)).replace("%player", islandOwnerName) + .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) + .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints()))); + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_leaderboard_level.Empty.Message")); + }); + } + + for (String placeholderList : placeholderManager.getPlaceholders()) { + PlaceholderAPI.registerPlaceholder(skyblock, placeholderList, event -> { + Player player = event.getPlayer(); + + if (player == null) { + return null; + } + + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); + }); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/Placeholder.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/Placeholder.java new file mode 100644 index 00000000..98cc0359 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/Placeholder.java @@ -0,0 +1,20 @@ +package com.songoda.skyblock.placeholder; + +public class Placeholder { + + private String placeholder; + private String result; + + public Placeholder(String placeholder, String result) { + this.placeholder = placeholder; + this.result = result; + } + + public String getPlaceholder() { + return placeholder; + } + + public String getResult() { + return result; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/PlaceholderManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/PlaceholderManager.java new file mode 100644 index 00000000..586ae92e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/placeholder/PlaceholderManager.java @@ -0,0 +1,435 @@ +package com.songoda.skyblock.placeholder; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.invite.Invite; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.leaderboard.Leaderboard; +import com.songoda.skyblock.leaderboard.LeaderboardManager; +import com.songoda.skyblock.levelling.LevellingManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.visit.VisitManager; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.PluginManager; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public class PlaceholderManager { + + private final SkyBlock skyblock; + + private boolean PlaceholderAPI = false; + private boolean MVdWPlaceholderAPI = false; + + public PlaceholderManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + PluginManager pluginManager = skyblock.getServer().getPluginManager(); + + if (pluginManager.getPlugin("PlaceholderAPI") != null) { + PlaceholderAPI = true; + } + + if (pluginManager.getPlugin("MVdWPlaceholderAPI") != null) { + MVdWPlaceholderAPI = true; + } + } + + public void registerPlaceholders() { + if (PlaceholderAPI) { + new EZPlaceholder(skyblock).register(); + } + + if (MVdWPlaceholderAPI) { + new MVdWPlaceholder(skyblock).register(); + } + } + + public boolean isPlaceholderAPIEnabled() { + return PlaceholderAPI; + } + + public boolean isMVdWPlaceholderAPIEnabled() { + return MVdWPlaceholderAPI; + } + + public String getPlaceholder(Player player, String placeholder) { + IslandManager islandManager = skyblock.getIslandManager(); + VisitManager visitManager = skyblock.getVisitManager(); + LevellingManager levellingManager = skyblock.getLevellingManager(); + + Island island = islandManager.getIsland(player); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (placeholder.equalsIgnoreCase("fabledskyblock_island_exists")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_exists.Not-exists.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_exists.Exists.Message")); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_isopen")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_isopen.Empty.Message")); + } else { + if (island.isOpen()) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_isopen.Open.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_isopen.Closed.Message")); + } + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_size")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_size.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_size.Non-empty.Message") + .replace("%placeholder", "" + island.getSize())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_radius")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_radius.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_radius.Non-empty.Message") + .replace("%placeholder", "" + island.getRadius())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_level")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level.Non-empty.Message") + .replace("%placeholder", "" + island.getLevel().getLevel())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_level_formatted")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_formatted.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_formatted.Non-empty.Message").replace( + "%placeholder", "" + NumberUtil.formatNumberBySuffix(island.getLevel().getLevel()))); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_points")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_points.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_points.Non-empty.Message") + .replace("%placeholder", "" + island.getLevel().getPoints())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_votes")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_votes.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_votes.Non-empty.Message") + .replace("%placeholder", "" + visitManager.getIslands().get(player.getUniqueId()).getVoters().size())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_role")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_role.Empty.Message")); + } else { + for (IslandRole roleList : IslandRole.values()) { + if (island.hasRole(roleList, player.getUniqueId())) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_role.Non-empty.Message") + .replace("%placeholder", roleList.name())); + } + } + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_owner")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_owner.Empty.Message")); + } else { + UUID islandOwnerUUID = island.getOwnerUUID(); + Player targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID); + + if (targetPlayer == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_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.fabledskyblock_island_owner.Non-empty.Yourself.Message") + .replace("%placeholder", targetPlayer.getName())); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_owner.Non-empty.Other.Message") + .replace("%placeholder", targetPlayer.getName())); + } + } + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_biome")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_biome.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_biome.Non-empty.Message") + .replace("%placeholder", island.getBiomeName())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_time")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_time.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_time.Non-empty.Message") + .replace("%placeholder", "" + island.getTime())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_weather")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_weather.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_weather.Non-empty.Message") + .replace("%placeholder", "" + island.getWeatherName())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_bans")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_bans.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_bans.Non-empty.Message") + .replace("%placeholder", "" + island.getBan().getBans().size())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_members_total")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_members_total.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_members_total.Non-empty.Message") + .replace("%placeholder", "" + (island.getRole(IslandRole.Member).size() + + island.getRole(IslandRole.Operator).size() + 1))); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_members")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_members.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_members.Non-empty.Message") + .replace("%placeholder", "" + island.getRole(IslandRole.Member).size())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_operators")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_operators.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_operators.Non-empty.Message") + .replace("%placeholder", "" + island.getRole(IslandRole.Operator).size())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_coops")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_coops.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_coops.Non-empty.Message") + .replace("%placeholder", "" + islandManager.getCoopPlayersAtIsland(island).size())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_coops_total")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_coops_total.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_coops_total.Non-empty.Message") + .replace("%placeholder", "" + island.getCoopPlayers().size())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_visitors")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_visitors.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_visitors.Non-empty.Message") + .replace("%placeholder", "" + islandManager.getVisitorsAtIsland(island).size())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_invites")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_invites.Empty.Message")); + } else { + Map invites = skyblock.getInviteManager().getInvites(); + int invitedPlayers = 0; + + for (int i = 0; i < invites.size(); i++) { + UUID uuid = (UUID) invites.keySet().toArray()[i]; + Invite invite = invites.get(uuid); + + if (invite.getOwnerUUID().equals(island.getOwnerUUID())) { + invitedPlayers++; + } + } + + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_invites.Non-empty.Message") + .replace("%placeholder", "" + invitedPlayers)); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_bank_balance")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_bank_balance.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_bank_balance.Non-empty.Message")) + .replace("%placeholder", "" + NumberUtil.formatNumberByDecimal(island.getBankBalance())); + } + } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_bank_balance_formatted")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_bank_balance_formatted.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_bank_balance_formatted.Non-empty.Message")) + .replace("%placeholder", "" + NumberUtil.formatNumberBySuffix((long) island.getBankBalance())); + } + } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_leaderboard_level_rank")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_level_rank.Empty.Message")); + } else { + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + int rank = leaderboardManager.getPlayerIslandLeaderboardPosition(player, Leaderboard.Type.Level); + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_level_rank.Non-empty.Message") + .replace("%placeholder", "" + rank)); + } + } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_leaderboard_bank_rank")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_bank_rank.Empty.Message")); + } else { + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + int rank = leaderboardManager.getPlayerIslandLeaderboardPosition(player, Leaderboard.Type.Bank); + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_bank_rank.Non-empty.Message") + .replace("%placeholder", "" + rank)); + } + } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_leaderboard_votes_rank")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_votes_rank.Empty.Message")); + } else { + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + int rank = leaderboardManager.getPlayerIslandLeaderboardPosition(player, Leaderboard.Type.Votes); + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_votes_rank.Non-empty.Message") + .replace("%placeholder", "" + rank)); + } + } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_level_block_count_")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_block_count.Empty.Message")); + } else { + String materialName = placeholder.replace("fabledskyblock_island_level_block_count_", "").toUpperCase(); + Materials materials = Materials.fromString(materialName); + if (materials == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_block_count.Invalid.Message")); + } else { + long blockCount = island.getLevel().getMaterialAmount(materials.name()); + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_block_count.Non-empty.Message") + .replace("%placeholder", NumberUtil.formatNumberByDecimal(blockCount))); + } + } + } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_level_block_points_")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_block_points.Empty.Message")); + } else { + String materialName = placeholder.replace("fabledskyblock_island_level_block_points_", "").toUpperCase(); + Materials materials = Materials.fromString(materialName); + if (materials == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_block_points.Invalid.Message")); + } else { + long blockPoints = island.getLevel().getMaterialPoints(materials.name()); + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_island_level_block_points.Non-empty.Message") + .replace("%placeholder", NumberUtil.formatNumberByDecimal(blockPoints))); + } + } + } else if (placeholder.toLowerCase().startsWith("fabledskyblock_level_block_value_")) { + String materialName = placeholder.replace("fabledskyblock_level_block_value_", "").toUpperCase(); + Materials materials = Materials.fromString(materialName); + if (materials == null) { + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_level_block_value.Invalid.Message")); + } else { + long blockValue = levellingManager.getMaterial(materials).getPoints(); + return ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Placeholder.fabledskyblock_level_block_value.Non-empty.Message") + .replace("%placeholder", NumberUtil.formatNumberByDecimal(blockValue))); + } + } + + return ""; + } + + public List getPlaceholders() { + List placeholders = new ArrayList<>(); + placeholders.add("fabledskyblock_island_exists"); + placeholders.add("fabledskyblock_island_isopen"); + placeholders.add("fabledskyblock_island_size"); + placeholders.add("fabledskyblock_island_radius"); + placeholders.add("fabledskyblock_island_level"); + placeholders.add("fabledskyblock_island_level_formatted"); + placeholders.add("fabledskyblock_island_points"); + placeholders.add("fabledskyblock_island_votes"); + placeholders.add("fabledskyblock_island_role"); + placeholders.add("fabledskyblock_island_owner"); + placeholders.add("fabledskyblock_island_biome"); + placeholders.add("fabledskyblock_island_time"); + placeholders.add("fabledskyblock_island_weather"); + placeholders.add("fabledskyblock_island_bans"); + placeholders.add("fabledskyblock_island_members_total"); + placeholders.add("fabledskyblock_island_members"); + placeholders.add("fabledskyblock_island_operators"); + placeholders.add("fabledskyblock_island_coops"); + placeholders.add("fabledskyblock_island_coops_total"); + placeholders.add("fabledskyblock_island_visitors"); + placeholders.add("fabledskyblock_island_invites"); + placeholders.add("fabledskyblock_island_bank_balance"); + placeholders.add("fabledskyblock_island_leaderboard_level_rank"); + placeholders.add("fabledskyblock_island_leaderboard_bank_rank"); + placeholders.add("fabledskyblock_island_leaderboard_votes_rank"); + //placeholders.add("fabledskyblock_island_level_block_count_"); + //placeholders.add("fabledskyblock_island_level_block_points_"); + //placeholders.add("fabledskyblock_level_block_value_"); + + return placeholders; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playerdata/PlayerData.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playerdata/PlayerData.java new file mode 100644 index 00000000..082d0010 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playerdata/PlayerData.java @@ -0,0 +1,203 @@ +package com.songoda.skyblock.playerdata; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.confirmation.Confirmation; +import com.songoda.skyblock.utils.structure.Area; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +public class PlayerData { + + private UUID uuid; + private UUID islandOwnerUUID; + private UUID ownershipUUID; + + private int page; + private int playTime; + private int visitTime; + private int confirmationTime; + + private Confirmation confirmation; + + private Object type; + private Object sort; + + private Area area; + + private boolean chat; + + private Object viewer; + + public PlayerData(Player player) { + uuid = player.getUniqueId(); + islandOwnerUUID = null; + + page = 1; + confirmationTime = 0; + playTime = getConfig().getFileConfiguration().getInt("Statistics.Island.Playtime"); + + area = new Area(); + + chat = false; + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public Object getType() { + return type; + } + + public void setType(Object type) { + this.type = type; + } + + public Object getSort() { + return sort; + } + + public void setSort(Object sort) { + this.sort = sort; + } + + public UUID getIsland() { + return islandOwnerUUID; + } + + public void setIsland(UUID islandOwnerUUID) { + this.islandOwnerUUID = islandOwnerUUID; + } + + public UUID getOwnership() { + return ownershipUUID; + } + + public void setOwnership(UUID ownershipUUID) { + this.ownershipUUID = ownershipUUID; + } + + public int getConfirmationTime() { + return confirmationTime; + } + + public void setConfirmationTime(int confirmationTime) { + this.confirmationTime = confirmationTime; + } + + public Confirmation getConfirmation() { + return confirmation; + } + + public void setConfirmation(Confirmation confirmation) { + this.confirmation = confirmation; + } + + public boolean hasConfirmation() { + return confirmationTime > 0; + } + + public int getPlaytime() { + return playTime; + } + + public void setPlaytime(int playTime) { + this.playTime = playTime; + } + + public int getVisitTime() { + return visitTime; + } + + public void setVisitTime(int visitTime) { + this.visitTime = visitTime; + } + + public String getMemberSince() { + return getConfig().getFileConfiguration().getString("Statistics.Island.Join"); + } + + public void setMemberSince(String date) { + getConfig().getFileConfiguration().set("Statistics.Island.Join", date); + } + + public UUID getOwner() { + String islandOwnerUUID = getConfig().getFileConfiguration().getString("Island.Owner"); + return (islandOwnerUUID == null) ? null : UUID.fromString(islandOwnerUUID); + } + + public void setOwner(UUID islandOwnerUUID) { + if (islandOwnerUUID == null) { + getConfig().getFileConfiguration().set("Island.Owner", null); + } else { + getConfig().getFileConfiguration().set("Island.Owner", islandOwnerUUID.toString()); + } + } + + public String[] getTexture() { + FileConfiguration configLoad = getConfig().getFileConfiguration(); + + return new String[]{configLoad.getString("Texture.Signature"), configLoad.getString("Texture.Value")}; + } + + public void setTexture(String signature, String value) { + getConfig().getFileConfiguration().set("Texture.Signature", signature); + getConfig().getFileConfiguration().set("Texture.Value", value); + } + + public String getLastOnline() { + return getConfig().getFileConfiguration().getString("Statistics.Island.LastOnline"); + } + + public void setLastOnline(String date) { + getConfig().getFileConfiguration().set("Statistics.Island.LastOnline", date); + } + + public Area getArea() { + return area; + } + + public boolean isChat() { + return chat; + } + + public void setChat(boolean chat) { + this.chat = chat; + } + + public Object getViewer() { + return viewer; + } + + public void setViewer(Object viewer) { + this.viewer = viewer; + } + + public void save() { + Config config = getConfig(); + FileConfiguration configLoad = config.getFileConfiguration(); + configLoad.set("Statistics.Island.Playtime", getPlaytime()); + + try { + configLoad.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private Config getConfig() { + SkyBlock skyblock = SkyBlock.getInstance(); + + return skyblock.getFileManager().getConfig( + new File(new File(skyblock.getDataFolder().toString() + "/player-data"), uuid.toString() + ".yml")); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playerdata/PlayerDataManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playerdata/PlayerDataManager.java new file mode 100644 index 00000000..614bd914 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playerdata/PlayerDataManager.java @@ -0,0 +1,330 @@ +package com.songoda.skyblock.playerdata; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.ban.BanManager; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.*; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.scoreboard.Scoreboard; +import com.songoda.skyblock.scoreboard.ScoreboardManager; +import com.songoda.skyblock.utils.player.OfflinePlayer; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.visit.Visit; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class PlayerDataManager { + + private final SkyBlock skyblock; + private Map playerDataStorage = new HashMap<>(); + + public PlayerDataManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + for (Player all : Bukkit.getOnlinePlayers()) { + loadPlayerData(all); + + if (!hasPlayerData(all)) { + createPlayerData(all); + loadPlayerData(all); + } + + storeIsland(all); + } + } + + public void onDisable() { + for (UUID playerDataStorageList : playerDataStorage.keySet()) { + playerDataStorage.get(playerDataStorageList).save(); + } + } + + public void createPlayerData(Player player) { + Config config = skyblock.getFileManager().getConfig(new File( + new File(skyblock.getDataFolder().toString() + "/player-data"), player.getUniqueId() + ".yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + String[] playerTexture; + + try { + Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player); + Method getProfileMethod = entityPlayer.getClass().getMethod("getProfile"); + GameProfile gameProfile = (GameProfile) getProfileMethod.invoke(entityPlayer); + Property property = gameProfile.getProperties().get("textures").iterator().next(); + playerTexture = new String[]{property.getSignature(), property.getValue()}; + } catch (Exception e) { + playerTexture = new String[]{ + "K9P4tCIENYbNpDuEuuY0shs1x7iIvwXi4jUUVsATJfwsAIZGS+9OZ5T2HB0tWBoxRvZNi73Vr+syRdvTLUWPusVXIg+2fhXmQoaNEtnQvQVGQpjdQP0TkZtYG8PbvRxE6Z75ddq+DVx/65OSNHLWIB/D+Rg4vINh4ukXNYttn9QvauDHh1aW7/IkIb1Bc0tLcQyqxZQ3mdglxJfgIerqnlA++Lt7TxaLdag4y1NhdZyd3OhklF5B0+B9zw/qP8QCzsZU7VzJIcds1+wDWKiMUO7+60OSrIwgE9FPamxOQDFoDvz5BOULQEeNx7iFMB+eBYsapCXpZx0zf1bduppBUbbVC9wVhto/J4tc0iNyUq06/esHUUB5MHzdJ0Y6IZJAD/xIw15OLCUH2ntvs8V9/cy5/n8u3JqPUM2zhUGeQ2p9FubUGk4Q928L56l3omRpKV+5QYTrvF+AxFkuj2hcfGQG3VE2iYZO6omXe7nRPpbJlHkMKhE8Xvd1HP4PKpgivSkHBoZ92QEUAmRzZydJkp8CNomQrZJf+MtPiNsl/Q5RQM+8CQThg3+4uWptUfP5dDFWOgTnMdA0nIODyrjpp+bvIJnsohraIKJ7ZDnj4tIp4ObTNKDFC/8j8JHz4VCrtr45mbnzvB2DcK8EIB3JYT7ElJTHnc5BKMyLy5SKzuw=", + "eyJ0aW1lc3RhbXAiOjE1MjkyNTg0MTE4NDksInByb2ZpbGVJZCI6Ijg2NjdiYTcxYjg1YTQwMDRhZjU0NDU3YTk3MzRlZWQ3IiwicHJvZmlsZU5hbWUiOiJTdGV2ZSIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGMxYzc3Y2U4ZTU0OTI1YWI1ODEyNTQ0NmVjNTNiMGNkZDNkMGNhM2RiMjczZWI5MDhkNTQ4Mjc4N2VmNDAxNiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjc2N2Q0ODMyNWVhNTMyNDU2MTQwNmI4YzgyYWJiZDRlMjc1NWYxMTE1M2NkODVhYjA1NDVjYzIifX19"}; + } + + configLoad.set("Texture.Signature", playerTexture[0]); + configLoad.set("Texture.Value", playerTexture[1]); + configLoad.set("Statistics.Island.Playtime", 0); + + try { + configLoad.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void loadPlayerData(Player player) { + if (skyblock.getFileManager().isFileExist(new File(skyblock.getDataFolder().toString() + "/player-data", + player.getUniqueId().toString() + ".yml"))) { + PlayerData playerData = new PlayerData(player); + playerDataStorage.put(player.getUniqueId(), playerData); + } + } + + public void unloadPlayerData(Player player) { + if (hasPlayerData(player)) { + skyblock.getFileManager() + .unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + player.getUniqueId().toString() + ".yml")); + playerDataStorage.remove(player.getUniqueId()); + } + } + + public void savePlayerData(Player player) { + if (hasPlayerData(player)) { + Config config = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), + player.getUniqueId().toString() + ".yml")); + + try { + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public Map getPlayerData() { + return playerDataStorage; + } + + public PlayerData getPlayerData(Player player) { + if (hasPlayerData(player)) { + return playerDataStorage.get(player.getUniqueId()); + } + + return null; + } + + public boolean hasPlayerData(Player player) { + return playerDataStorage.containsKey(player.getUniqueId()); + } + + public void storeIsland(Player player) { + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + WorldManager worldManager = skyblock.getWorldManager(); + FileManager fileManager = skyblock.getFileManager(); + BanManager banManager = skyblock.getBanManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (hasPlayerData(player)) { + if (worldManager.isIslandWorld(player.getWorld())) { + IslandWorld world = worldManager.getIslandWorld(player.getWorld()); + Island island = islandManager.getIslandAtLocation(player.getLocation()); + + if (island != null) { + Player targetPlayer = Bukkit.getServer().getPlayer(island.getOwnerUUID()); + String targetPlayerName; + + if (targetPlayer == null) { + targetPlayerName = new OfflinePlayer(island.getOwnerUUID()).getName(); + } else { + targetPlayerName = targetPlayer.getName(); + } + + if (banManager.hasIsland(island.getOwnerUUID()) + && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Banning") + && banManager.getIsland(island.getOwnerUUID()).isBanned(player.getUniqueId())) { + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Teleport.Island.Message") + .replace("%player", targetPlayerName)); + } else { + if (island.hasRole(IslandRole.Member, player.getUniqueId()) + || island.hasRole(IslandRole.Operator, player.getUniqueId()) + || island.hasRole(IslandRole.Owner, player.getUniqueId())) { + PlayerData playerData = getPlayerData(player); + playerData.setIsland(island.getOwnerUUID()); + + if (world == IslandWorld.Normal) { + if (!island.isWeatherSynchronized()) { + player.setPlayerTime(island.getTime(), + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); + player.setPlayerWeather(island.getWeather()); + } + } + + islandManager.updateFlight(player); + + return; + } else if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) { + if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) { + if (islandManager.removeCoopPlayers(island, null)) { + return; + } + } + + PlayerData playerData = getPlayerData(player); + playerData.setIsland(island.getOwnerUUID()); + + if (world == IslandWorld.Normal) { + if (!island.isWeatherSynchronized()) { + player.setPlayerTime(island.getTime(), + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); + player.setPlayerWeather(island.getWeather()); + } + } + + islandManager.updateFlight(player); + + ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); + + if (scoreboardManager != null) { + for (Player all : Bukkit.getOnlinePlayers()) { + PlayerData targetPlayerData = getPlayerData(all); + + if (targetPlayerData.getOwner() != null + && targetPlayerData.getOwner().equals(island.getOwnerUUID())) { + Scoreboard scoreboard = scoreboardManager.getScoreboard(all); + + if ((island.getRole(IslandRole.Member).size() + + island.getRole(IslandRole.Operator).size() + 1) == 1) { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Scoreboard.Island.Solo.Displayname"))); + scoreboard.setDisplayList(configLoad + .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); + } else { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Scoreboard.Island.Team.Displayname"))); + scoreboard.setDisplayList(configLoad + .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); + + Map displayVariables = new HashMap<>(); + displayVariables.put("%owner", + configLoad.getString("Scoreboard.Island.Team.Word.Owner")); + displayVariables.put("%operator", + configLoad.getString("Scoreboard.Island.Team.Word.Operator")); + displayVariables.put("%member", + configLoad.getString("Scoreboard.Island.Team.Word.Member")); + + scoreboard.setDisplayVariables(displayVariables); + } + + scoreboard.run(); + } + } + } + + return; + } else { + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", + targetPlayerName)); + } + } + + LocationUtil.teleportPlayerToSpawn(player); + + return; + } + + HashMap visitIslands = skyblock.getVisitManager().getIslands(); + + for (UUID visitIslandList : visitIslands.keySet()) { + Visit visit = visitIslands.get(visitIslandList); + IslandLocation location = visit.getLocation(world); + + if (location != null && LocationUtil.isLocationAtLocationRadius(player.getLocation(), + location.getLocation(), visit.getRadius())) { + Player targetPlayer = Bukkit.getServer().getPlayer(visitIslandList); + String targetPlayerName; + + if (targetPlayer == null) { + targetPlayerName = new OfflinePlayer(visitIslandList).getName(); + } else { + targetPlayerName = targetPlayer.getName(); + } + + if (banManager.hasIsland(visitIslandList) + && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Banning") + && banManager.getIsland(visitIslandList).isBanned(player.getUniqueId())) { + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Teleport.Island.Message").replace("%player", + targetPlayerName)); + } else { + org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer() + .getOfflinePlayer(visitIslandList); + + islandManager.loadIsland(offlinePlayer); + island = islandManager.getIsland(offlinePlayer); + + if (island != null) { + if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) { + if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) { + if (islandManager.removeCoopPlayers(island, null)) { + islandManager.unloadIsland(island, + Bukkit.getServer().getOfflinePlayer(visitIslandList)); + + return; + } + } + + PlayerData playerData = getPlayerData(player); + playerData.setIsland(visitIslandList); + + if (world == IslandWorld.Normal) { + if (!island.isWeatherSynchronized()) { + player.setPlayerTime(island.getTime(), fileManager + .getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration() + .getBoolean("Island.Weather.Time.Cycle")); + player.setPlayerWeather(island.getWeather()); + } + } + + islandManager.updateFlight(player); + + return; + } else { + islandManager.unloadIsland(island, + Bukkit.getServer().getOfflinePlayer(visitIslandList)); + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Closed.Island.Message") + .replace("%player", targetPlayerName)); + } + } + } + + LocationUtil.teleportPlayerToSpawn(player); + + return; + } + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playtime/PlaytimeTask.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playtime/PlaytimeTask.java new file mode 100644 index 00000000..ca943f00 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/playtime/PlaytimeTask.java @@ -0,0 +1,29 @@ +package com.songoda.skyblock.playtime; + +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class PlaytimeTask extends BukkitRunnable { + + private final PlayerDataManager playerDataManager; + private final IslandManager islandManager; + + public PlaytimeTask(PlayerDataManager playerDataManager, IslandManager islandManager) { + this.playerDataManager = playerDataManager; + this.islandManager = islandManager; + } + + @Override + public void run() { + for (Player all : Bukkit.getOnlinePlayers()) { + if (playerDataManager.hasPlayerData(all) && islandManager.getIsland(all) != null) { + PlayerData playerData = playerDataManager.getPlayerData(all); + playerData.setPlaytime(playerData.getPlaytime() + 1); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/scoreboard/Scoreboard.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/scoreboard/Scoreboard.java new file mode 100644 index 00000000..fc2f9067 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/scoreboard/Scoreboard.java @@ -0,0 +1,245 @@ +package com.songoda.skyblock.scoreboard; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import com.songoda.skyblock.placeholder.PlaceholderManager; +import com.songoda.skyblock.utils.NumberUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitTask; +import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.Team; + +import java.util.*; + +public class Scoreboard { + + private final SkyBlock plugin; + + private final Player player; + private String displayName; + private List displayList; + private Map displayVariables; + private BukkitTask scheduler; + + public Scoreboard(SkyBlock plugin, Player player) { + this.plugin = plugin; + this.player = player; + displayList = new ArrayList<>(); + displayVariables = new HashMap<>(); + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public void setDisplayList(List displayList) { + this.displayList = displayList; + } + + public void setDisplayVariables(Map displayVariables) { + this.displayVariables = displayVariables; + } + + public void run() { + if (scheduler != null) scheduler.cancel(); + + new BukkitRunnable() { + @Override + public void run() { + final org.bukkit.scoreboard.Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); + + new BukkitRunnable() { + @Override + @SuppressWarnings("deprecation") + public void run() { + String ranStr = UUID.randomUUID().toString().split("-")[0]; + Objective obj; + + if (scoreboard.getObjective(player.getName()) != null) { + obj = scoreboard.getObjective(player.getName()); + } else { + obj = scoreboard.registerNewObjective(player.getName(), "dummy"); + } + + obj.setDisplaySlot(DisplaySlot.SIDEBAR); + + String formattedDisplayName = ChatColor.translateAlternateColorCodes('&', + replaceDisplayName(displayName)); + + if (formattedDisplayName.length() > 32) { + obj.setDisplayName(ChatColor.RED + "Too long..."); + } else { + obj.setDisplayName(formattedDisplayName); + } + + for (int i = 0; i < ChatColor.values().length; i++) { + if (i == displayList.size()) { + break; + } + + ChatColor chatColor = ChatColor.values()[i]; + Team team = scoreboard.registerNewTeam(ranStr + i); + team.addEntry(chatColor.toString()); + obj.getScore(chatColor.toString()).setScore(i); + } + + scheduler = new BukkitRunnable() { + int i1 = displayList.size(); + + @Override + public void run() { + if (!player.isOnline()) cancel(); + + try { + String formattedDisplayName = ChatColor.translateAlternateColorCodes('&', + replaceDisplayName(displayName)); + + if (formattedDisplayName.length() > 32) { + obj.setDisplayName(ChatColor.RED + "Too long..."); + } else { + obj.setDisplayName(formattedDisplayName); + } + + for (String displayLine : displayList) { + i1--; + + displayLine = replaceDisplayLine(displayLine); + + if (displayLine.length() > 32) { + displayLine = "&cLine too long..."; + } + + if (displayLine.length() >= 16) { + String prefixLine = displayLine.substring(0, + Math.min(displayLine.length(), 16)); + String suffixLine = displayLine.substring(16, + Math.min(displayLine.length(), displayLine.length())); + + if (prefixLine.substring(prefixLine.length() - 1).equals("&")) { + prefixLine = ChatColor.translateAlternateColorCodes('&', + prefixLine.substring(0, prefixLine.length() - 1)); + suffixLine = ChatColor.translateAlternateColorCodes('&', + "&" + suffixLine); + } else { + String lastColorCodes; + + if (prefixLine.contains("&")) { + String[] colorCodes = prefixLine.split("&"); + String lastColorCodeText = colorCodes[colorCodes.length - 1]; + lastColorCodes = "&" + lastColorCodeText.substring(0, + Math.min(lastColorCodeText.length(), 1)); + + if ((colorCodes.length >= 2) && (lastColorCodes.equals("&l") + || lastColorCodes.equals("&m") + || lastColorCodes.equals("&n") + || lastColorCodes.equals("&o"))) { + lastColorCodeText = colorCodes[colorCodes.length - 2]; + lastColorCodes = "&" + + lastColorCodeText.substring(0, + Math.min(lastColorCodeText.length(), 1)) + + lastColorCodes; + } + } else { + lastColorCodes = "&f"; + } + + prefixLine = ChatColor.translateAlternateColorCodes('&', + prefixLine); + suffixLine = ChatColor.translateAlternateColorCodes('&', + lastColorCodes + suffixLine); + } + + scoreboard.getTeam(ranStr + i1).setPrefix(prefixLine); + scoreboard.getTeam(ranStr + i1).setSuffix(suffixLine); + } else { + scoreboard.getTeam(ranStr + i1).setPrefix( + ChatColor.translateAlternateColorCodes('&', displayLine)); + } + } + + i1 = displayList.size(); + } catch (Exception e) { + cancel(); + } + } + }.runTaskTimerAsynchronously(plugin, 0L, 20L); + + player.setScoreboard(scoreboard); + } + }.runTaskAsynchronously(plugin); + } + }.runTask(plugin); + } + + private String replaceDisplayName(String displayName) { + displayName = displayName.replace("%players_online", "" + Bukkit.getServer().getOnlinePlayers().size()) + .replace("%players_max", "" + Bukkit.getServer().getMaxPlayers()); + + return displayName; + } + + private String replaceDisplayLine(String displayLine) { + SkyBlock skyblock = SkyBlock.getInstance(); + + IslandManager islandManager = skyblock.getIslandManager(); + + displayLine = displayLine.replace("%players_online", "" + Bukkit.getServer().getOnlinePlayers().size()) + .replace("%players_max", "" + Bukkit.getServer().getMaxPlayers()); + + Island island = islandManager.getIsland(player); + + if (island != null) { + IslandLevel level = island.getLevel(); + + if (island.getRole(IslandRole.Member).size() == 0 && island.getRole(IslandRole.Operator).size() == 0) { + displayLine = displayLine + .replace("%island_level", "" + NumberUtil.formatNumberByDecimal(level.getLevel())) + .replace("%island_members", ChatColor.RED + "0").replace("%island_role", ChatColor.RED + "null") + .replace("%island_visitors", "" + islandManager.getVisitorsAtIsland(island).size()) + .replace("%island_size", "" + island.getSize()) + .replace("%island_radius", "" + island.getRadius()); + } else { + int islandMembers = 1 + island.getRole(IslandRole.Member).size() + + island.getRole(IslandRole.Operator).size(); + String islandRole = ""; + + if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { + islandRole = displayVariables.get("%owner"); + } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { + islandRole = displayVariables.get("%operator"); + } else if (island.hasRole(IslandRole.Member, player.getUniqueId())) { + islandRole = displayVariables.get("%member"); + } + + displayLine = displayLine + .replace("%island_points", "" + NumberUtil.formatNumberByDecimal(level.getPoints())) + .replace("%island_level", "" + NumberUtil.formatNumberByDecimal(level.getLevel())) + .replace("%island_members", "" + islandMembers).replace("%island_role", islandRole) + .replace("%island_visitors", "" + islandManager.getVisitorsAtIsland(island).size()) + .replace("%island_size", "" + island.getSize()) + .replace("%island_radius", "" + island.getRadius()); + } + } else { + displayLine = displayLine.replace("%island_points", ChatColor.RED + "0") + .replace("%island_level", ChatColor.RED + "0").replace("%island_members", ChatColor.RED + "0") + .replace("%island_role", ChatColor.RED + "null").replace("%island_size", ChatColor.RED + "0") + .replace("%island_radius", ChatColor.RED + "0"); + } + + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); + + if (placeholderManager.isPlaceholderAPIEnabled()) { + displayLine = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, displayLine.replace("&", "clr")) + .replace("clr", "&"); + } + + return displayLine; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/scoreboard/ScoreboardManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/scoreboard/ScoreboardManager.java new file mode 100644 index 00000000..dae09cf9 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/scoreboard/ScoreboardManager.java @@ -0,0 +1,170 @@ +package com.songoda.skyblock.scoreboard; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandRole; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class ScoreboardManager { + + private final SkyBlock skyblock; + private Map scoreboardStorage = new HashMap<>(); + + public ScoreboardManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + new BukkitRunnable() { + @Override + public void run() { + IslandManager islandManager = skyblock.getIslandManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Scoreboard.Enable")) { + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + + for (Player all : Bukkit.getOnlinePlayers()) { + Scoreboard scoreboard = new Scoreboard(skyblock, all); + Island island = islandManager.getIsland(all); + + if (island == null) { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); + scoreboard.setDisplayList( + config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); + } else { + if (island.getRole(IslandRole.Member).size() == 0 + && island.getRole(IslandRole.Operator).size() == 0) { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); + } + } else { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Team.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); + } + + Map displayVariables = new HashMap<>(); + displayVariables.put("%owner", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Owner")); + displayVariables.put("%operator", config.getFileConfiguration() + .getString("Scoreboard.Island.Team.Word.Operator")); + displayVariables.put("%member", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Member")); + + scoreboard.setDisplayVariables(displayVariables); + } + } + + scoreboard.run(); + storeScoreboard(all, scoreboard); + } + } + } + }.runTaskLater(skyblock, 20L); + } + + public void resendScoreboard() { + IslandManager islandManager = skyblock.getIslandManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Scoreboard.Enable")) return; + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + + for (Player all : Bukkit.getOnlinePlayers()) { + if (!hasScoreboard(all)) continue; + + Scoreboard scoreboard = getScoreboard(all); + + Island island = islandManager.getIsland(all); + + if (island == null) { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); + scoreboard.setDisplayList( + config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); + } else { + if (island.getRole(IslandRole.Member).size() == 0 + && island.getRole(IslandRole.Operator).size() == 0) { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); + } + } else { + scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', + config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname"))); + + if (islandManager.getVisitorsAtIsland(island).size() == 0) { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Team.Empty.Displaylines")); + } else { + scoreboard.setDisplayList(config.getFileConfiguration() + .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); + } + + Map displayVariables = new HashMap<>(); + displayVariables.put("%owner", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Owner")); + displayVariables.put("%operator", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Operator")); + displayVariables.put("%member", + config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Member")); + + scoreboard.setDisplayVariables(displayVariables); + } + } + scoreboard.run(); + } + } + + public void storeScoreboard(Player player, Scoreboard scoreboard) { + scoreboardStorage.put(player.getUniqueId(), scoreboard); + } + + public void unloadPlayer(Player player) { + scoreboardStorage.remove(player.getUniqueId()); + } + + public Scoreboard getScoreboard(Player player) { + if (scoreboardStorage.containsKey(player.getUniqueId())) { + return scoreboardStorage.get(player.getUniqueId()); + } + + return null; + } + + public boolean hasScoreboard(Player player) { + return scoreboardStorage.containsKey(player.getUniqueId()); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/sound/SoundManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/sound/SoundManager.java new file mode 100644 index 00000000..4f588acd --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/sound/SoundManager.java @@ -0,0 +1,41 @@ +package com.songoda.skyblock.sound; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; + +public class SoundManager { + + private final SkyBlock skyblock; + + public SoundManager(SkyBlock skyblock) { + this.skyblock = skyblock; + } + + public void playSound(CommandSender sender, Sound sound, float volume, float pitch) { + if (sender instanceof Player) { + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getBoolean("Sound.Enable")) { + Player player = (Player) sender; + player.playSound(player.getLocation(), sound, volume, pitch); + } + } + } + + public void playSound(Location location, Sound sound, float volume, float pitch) { + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getBoolean("Sound.Enable")) { + location.getWorld().playSound(location, sound, volume, pitch); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/stackable/Stackable.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/stackable/Stackable.java similarity index 94% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/stackable/Stackable.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/stackable/Stackable.java index e93b7749..81063f4c 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/stackable/Stackable.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/stackable/Stackable.java @@ -1,11 +1,11 @@ -package me.goodandevil.skyblock.stackable; +package com.songoda.skyblock.stackable; -import java.io.File; -import java.util.UUID; - -import me.goodandevil.skyblock.utils.NumberUtil; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.version.Sounds; import org.apache.commons.lang3.text.WordUtils; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; @@ -16,10 +16,8 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; +import java.io.File; +import java.util.UUID; public class Stackable { diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/stackable/StackableManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/stackable/StackableManager.java similarity index 88% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/stackable/StackableManager.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/stackable/StackableManager.java index f58728c5..86d72d48 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/stackable/StackableManager.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/stackable/StackableManager.java @@ -1,20 +1,14 @@ -package me.goodandevil.skyblock.stackable; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; +package com.songoda.skyblock.stackable; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; +import java.io.File; +import java.util.*; public class StackableManager { @@ -39,10 +33,11 @@ public class StackableManager { for (String stackableStr : stackableList) { try { this.stackableMaterials.add(Material.valueOf(stackableStr)); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } } - + public void loadSavedStackables() { FileManager fileManager = SkyBlock.getInstance().getFileManager(); String path = SkyBlock.getInstance().getDataFolder().toString() + "/island-data"; @@ -56,7 +51,7 @@ public class StackableManager { if (cs == null || cs.getKeys(false) == null) continue; for (String uuid : cs.getKeys(false)) { ConfigurationSection section = configLoad.getConfigurationSection("Stackables." + uuid); - Location location = (Location)section.get("Location"); + Location location = (Location) section.get("Location"); org.bukkit.Material material = org.bukkit.Material.valueOf(section.getString("Material")); int size = section.getInt("Size"); if (size == 0) continue; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/structure/Structure.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/structure/Structure.java new file mode 100644 index 00000000..b7393c09 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/structure/Structure.java @@ -0,0 +1,127 @@ +package com.songoda.skyblock.structure; + +import com.songoda.skyblock.utils.version.Materials; + +import java.util.ArrayList; +import java.util.List; + +public class Structure implements com.songoda.skyblock.api.structure.Structure { + + private Materials materials; + + private String name; + private String overworldFile; + private String netherFile; + private String endFile; + private String displayName; + + private boolean permission; + + private List description = new ArrayList<>(); + private List commands = new ArrayList<>(); + + private double deletionCost; + + public Structure(String name, Materials materials, String overworldFile, String netherFile, String endFile, + String displayName, boolean permission, List description, List commands, + double deletionCost) { + this.name = name; + this.materials = materials; + this.overworldFile = overworldFile; + this.netherFile = netherFile; + this.endFile = endFile; + this.displayName = displayName; + this.permission = permission; + this.description = description; + this.commands = commands; + this.deletionCost = deletionCost; + } + + public String getName() { + return name; + } + + public Materials getMaterials() { + return materials; + } + + public void setMaterials(Materials materials) { + this.materials = materials; + } + + public String getOverworldFile() { + return overworldFile; + } + + public void setOverworldFile(String file) { + this.overworldFile = file; + } + + public String getNetherFile() { + return netherFile; + } + + public void setNetherFile(String file) { + this.netherFile = file; + } + + public String getEndFile() { + return endFile; + } + + public void setEndFile(String file) { + this.endFile = file; + } + + public String getDisplayname() { + return displayName; + } + + public void setDisplayname(String displayName) { + this.displayName = displayName; + } + + public boolean isPermission() { + return permission; + } + + public String getPermission() { + return "fabledskyblock.island." + name.toLowerCase().replace(" ", "_"); + } + + public void setPermission(boolean permission) { + this.permission = permission; + } + + public List getDescription() { + return description; + } + + public void addLine(String line) { + description.add(line); + } + + public void removeLine(int index) { + description.remove(index); + } + + public List getCommands() { + return commands; + } + + public void addCommand(String command) { + commands.add(command); + } + + public void removeCommand(int index) { + commands.remove(index); + } + + public double getDeletionCost() { + return deletionCost; + } + + public void setDeletionCost(double deletionCost) { + this.deletionCost = deletionCost; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/structure/StructureManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/structure/StructureManager.java new file mode 100644 index 00000000..134ee0a4 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/structure/StructureManager.java @@ -0,0 +1,127 @@ +package com.songoda.skyblock.structure; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.utils.version.Materials; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class StructureManager { + + private List structureStorage = new ArrayList<>(); + + public StructureManager(SkyBlock skyblock) { + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "structures.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString("Structures") != null) { + for (String structureList : configLoad.getConfigurationSection("Structures").getKeys(false)) { + Materials materials = null; + + if (configLoad.getString("Structures." + structureList + ".Item.Material") == null) { + materials = Materials.GRASS_BLOCK; + } else { + materials = Materials + .fromString(configLoad.getString("Structures." + structureList + ".Item.Material")); + + if (materials == null) { + materials = Materials.GRASS_BLOCK; + } + } + + String structureFile = null, overworldFile = null, netherFile = null, endFile = null; + + if (configLoad.getString("Structures." + structureList + ".File.Overworld") == null + && configLoad.getString("Structures." + structureList + ".File.Nether") == null + && configLoad.getString("Structures." + structureList + ".File.End") == null) { + if (configLoad.getString("Structures." + structureList + ".File") != null) { + structureFile = configLoad.getString("Structures." + structureList + ".File"); + overworldFile = structureFile; + netherFile = structureFile; + endFile = structureFile; + } + } else { + if (configLoad.getString("Structures." + structureList + ".File.Overworld") != null) { + overworldFile = configLoad.getString("Structures." + structureList + ".File.Overworld"); + } + + if (configLoad.getString("Structures." + structureList + ".File.Nether") == null + && overworldFile != null) { + netherFile = overworldFile; + } else { + netherFile = configLoad.getString("Structures." + structureList + ".File.Nether"); + } + + if (configLoad.getString("Structures." + structureList + ".File.End") == null + && overworldFile != null) { + endFile = overworldFile; + } else { + endFile = configLoad.getString("Structures." + structureList + ".File.End"); + } + + if (overworldFile == null && netherFile != null) { + overworldFile = netherFile; + } else if (overworldFile == null && endFile != null) { + overworldFile = endFile; + } + + if (netherFile == null && endFile != null) { + netherFile = endFile; + } + + if (endFile == null && overworldFile != null) { + endFile = overworldFile; + } else if (endFile == null && netherFile != null) { + endFile = netherFile; + } + } + + structureStorage.add(new Structure(configLoad.getString("Structures." + structureList + ".Name"), + materials, overworldFile, netherFile, endFile, + configLoad.getString("Structures." + structureList + ".Displayname"), + configLoad.getBoolean("Structures." + structureList + ".Permission"), + configLoad.getStringList("Structures." + structureList + ".Description"), + configLoad.getStringList("Structures." + structureList + ".Commands"), + configLoad.getDouble("Structures." + structureList + ".Deletion.Cost"))); + } + } + } + + public void addStructure(String name, Materials materials, String overworldFile, String netherFile, String endFile, + String displayName, boolean permission, List description, List commands, + double deletionCost) { + structureStorage.add(new Structure(name, materials, overworldFile, netherFile, endFile, displayName, permission, + description, commands, deletionCost)); + } + + public void removeStructure(Structure structure) { + structureStorage.remove(structure); + } + + public Structure getStructure(String name) { + for (Structure structureList : structureStorage) { + if (structureList.getName().equalsIgnoreCase(name)) { + return structureList; + } + } + + return null; + } + + public boolean containsStructure(String name) { + for (Structure structureList : structureStorage) { + if (structureList.getName().equalsIgnoreCase(name)) { + return true; + } + } + + return false; + } + + public List getStructures() { + return structureStorage; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/upgrade/Upgrade.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/upgrade/Upgrade.java new file mode 100644 index 00000000..86053c92 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/upgrade/Upgrade.java @@ -0,0 +1,47 @@ +package com.songoda.skyblock.upgrade; + +public class Upgrade { + + private double cost; + private int value; + private boolean enabled = true; + + public Upgrade(double cost) { + this.cost = cost; + } + + public Upgrade(double cost, int value) { + this.cost = cost; + this.value = value; + } + + public double getCost() { + return cost; + } + + public void setCost(double cost) { + this.cost = cost; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public enum Type { + + Crop, Spawner, Fly, Drops, Size, Speed, Jump + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/upgrade/UpgradeManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/upgrade/UpgradeManager.java new file mode 100644 index 00000000..bed17488 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/upgrade/UpgradeManager.java @@ -0,0 +1,183 @@ +package com.songoda.skyblock.upgrade; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandManager; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +public class UpgradeManager { + + private SkyBlock skyblock; + private Map> upgradeStorage = new HashMap<>(); + + public UpgradeManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "upgrades.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + for (Upgrade.Type typeList : Upgrade.Type.values()) { + if (typeList != Upgrade.Type.Size) { + List upgrades = new ArrayList<>(); + + Upgrade upgrade = new Upgrade(configLoad.getDouble("Upgrades." + typeList.name() + ".Cost")); + upgrade.setEnabled(configLoad.getBoolean("Upgrades." + typeList.name() + ".Enable")); + upgrades.add(upgrade); + + upgradeStorage.put(typeList, upgrades); + } + } + + if (configLoad.getString("Upgrades.Size") != null) { + List upgrades = new ArrayList<>(); + + for (String tierList : configLoad.getConfigurationSection("Upgrades.Size").getKeys(false)) { + if (configLoad.getString("Upgrades.Size." + tierList + ".Value") != null) { + if (configLoad.getInt("Upgrades.Size." + tierList + ".Value") > 1000) { + continue; + } + } + + upgrades.add(new Upgrade(configLoad.getDouble("Upgrades.Size." + tierList + ".Cost"), + configLoad.getInt("Upgrades.Size." + tierList + ".Value"))); + } + + upgradeStorage.put(Upgrade.Type.Size, upgrades); + } + + // Task for applying the speed & jump boost upgrades if the player is on an island that has them + Bukkit.getScheduler().scheduleSyncRepeatingTask(SkyBlock.getInstance(), this::applyUpgrades, 5L, 20L); + } + + public List getUpgrades(Upgrade.Type type) { + if (upgradeStorage.containsKey(type)) { + return upgradeStorage.get(type); + } + + return null; + } + + public void addUpgrade(Upgrade.Type type, int value) { + List upgrades = new ArrayList<>(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "upgrades.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString("Upgrades.Size") != null) { + for (String tierList : configLoad.getConfigurationSection("Upgrades.Size").getKeys(false)) { + upgrades.add(new Upgrade(configLoad.getDouble("Upgrades.Size." + tierList + ".Cost"), + configLoad.getInt("Upgrades.Size." + tierList + ".Value"))); + } + } + + upgrades.add(new Upgrade(0, value)); + configLoad.set("Upgrades.Size", null); + + for (int i = 0; i < upgrades.size(); i++) { + Upgrade upgrade = upgrades.get(i); + configLoad.set("Upgrades.Size." + i + ".Value", upgrade.getValue()); + configLoad.set("Upgrades.Size." + i + ".Cost", upgrade.getCost()); + } + + upgradeStorage.put(type, upgrades); + + try { + configLoad.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void removeUpgrade(Upgrade.Type type, double cost, int value) { + for (Upgrade upgradeList : upgradeStorage.get(type)) { + if (upgradeList.getCost() == cost && upgradeList.getValue() == value) { + List upgrades = upgradeStorage.get(type); + upgrades.remove(upgradeList); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "upgrades.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + configLoad.set("Upgrades.Size", null); + + for (int i = 0; i < upgrades.size(); i++) { + Upgrade upgrade = upgrades.get(i); + configLoad.set("Upgrades.Size." + i + ".Value", upgrade.getValue()); + configLoad.set("Upgrades.Size." + i + ".Cost", upgrade.getCost()); + } + + try { + configLoad.save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + + return; + } + } + } + + public boolean hasUpgrade(Upgrade.Type type, int value) { + if (upgradeStorage.containsKey(type)) { + for (Upgrade upgradeList : upgradeStorage.get(type)) { + if (upgradeList.getValue() == value) { + return true; + } + } + } + + return false; + } + + private void applyUpgrades() { + IslandManager islandManager = skyblock.getIslandManager(); + UpgradeManager upgradeManager = skyblock.getUpgradeManager(); + + for (Player player : Bukkit.getOnlinePlayers()) { + Island island = islandManager.getIslandAtLocation(player.getLocation()); + if (island == null) continue; + + // Apply potion effect upgrades + Collection potionEffects = player.getActivePotionEffects(); + PotionEffect speed = null, jump = null; + for (PotionEffect potionEffect : potionEffects) { + if (potionEffect.getType().equals(PotionEffectType.SPEED)) { + speed = potionEffect; + } else if (potionEffect.getType().equals(PotionEffectType.JUMP)) { + jump = potionEffect; + } + if (speed != null && jump != null) break; + } + + // Speed + List speedUpgrades = upgradeManager.getUpgrades(Upgrade.Type.Speed); + if (speedUpgrades != null && speedUpgrades.size() > 0 && speedUpgrades.get(0).isEnabled() && island.isUpgrade(Upgrade.Type.Speed)) { + if (speed == null) { + speed = new PotionEffect(PotionEffectType.SPEED, 60, 1); + } else if (speed.getAmplifier() == 1 && speed.getDuration() < 60) { + speed = new PotionEffect(PotionEffectType.SPEED, speed.getDuration() + 21, 1); + } + player.addPotionEffect(speed, true); + } + + // Jump boost + List jumpUpgrades = upgradeManager.getUpgrades(Upgrade.Type.Jump); + if (jumpUpgrades != null && jumpUpgrades.size() > 0 && jumpUpgrades.get(0).isEnabled() && island.isUpgrade(Upgrade.Type.Jump)) { + if (jump == null) { + jump = new PotionEffect(PotionEffectType.JUMP, 60, 1); + } else if (jump.getAmplifier() == 1 && jump.getDuration() < 60) { + jump = new PotionEffect(PotionEffectType.JUMP, jump.getDuration() + 21, 1); + } + player.addPotionEffect(jump, true); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/usercache/UserCacheManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/usercache/UserCacheManager.java new file mode 100644 index 00000000..f0fca750 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/usercache/UserCacheManager.java @@ -0,0 +1,156 @@ +package com.songoda.skyblock.usercache; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.utils.player.NameFetcher; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; +import java.util.logging.Level; + +public class UserCacheManager { + + private final SkyBlock skyblock; + private final Config config; + + public UserCacheManager(SkyBlock skyblock) { + this.skyblock = skyblock; + this.config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "usercache.yml")); + + FileManager fileManager = skyblock.getFileManager(); + File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); + + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { + if (configFile.exists()) { + int usersIgnored = 0; + + Bukkit.getServer().getLogger().log(Level.INFO, + "SkyBlock | Info: Fetching user information from island data. This may take a while..."); + + for (File fileList : configFile.listFiles()) { + if (fileList != null && fileList.getName().contains(".yml") + && fileList.getName().length() > 35) { + UUID islandOwnerUUID = null; + + try { + Config config = new Config(fileManager, fileList); + FileConfiguration configLoad = config.getFileConfiguration(); + + islandOwnerUUID = UUID.fromString(fileList.getName().replace(".yml", "")); + + if (islandOwnerUUID == null) { + islandOwnerUUID = UUID.fromString(fileList.getName().replaceFirst("[.][^.]+$", "")); + + if (islandOwnerUUID == null) { + continue; + } + } + + Set islandMembers = new HashSet<>(); + islandMembers.add(islandOwnerUUID); + + if (configLoad.getString("Members") != null) { + for (String memberList : configLoad.getStringList("Members")) { + islandMembers.add(UUID.fromString(memberList)); + } + } + + if (configLoad.getString("Operators") != null) { + for (String operatorList : configLoad.getStringList("Operators")) { + islandMembers.add(UUID.fromString(operatorList)); + } + } + + for (UUID islandMemberList : islandMembers) { + if (!hasUser(islandMemberList)) { + NameFetcher.Names[] names = NameFetcher.getNames(islandMemberList); + + if (names.length >= 1) { + addUser(islandMemberList, names[0].getName()); + } + } + } + } catch (Exception e) { + usersIgnored++; + } + } + } + + save(); + + if (usersIgnored != 0) { + Bukkit.getServer().getLogger().log(Level.INFO, + "SkyBlock | Info: Finished fetching user information from island data. There were " + + usersIgnored + " users that were skipped."); + } else { + Bukkit.getServer().getLogger().log(Level.INFO, + "SkyBlock | Info: Finished fetching user information from island data."); + } + } + }); + } + + public void onDisable() { + save(); + } + + public void addUser(UUID uuid, String name) { + config.getFileConfiguration().set(uuid.toString(), name); + } + + public String getUser(UUID uuid) { + FileConfiguration configLoad = config.getFileConfiguration(); + + if (configLoad.getString(uuid.toString()) != null) { + return configLoad.getString(uuid.toString()); + } + + return null; + } + + public UUID getUser(String name) { + FileConfiguration configLoad = config.getFileConfiguration(); + + for (String userList : configLoad.getConfigurationSection("").getKeys(false)) { + if (configLoad.getString(userList).equalsIgnoreCase(name)) { + return UUID.fromString(userList); + } + } + + return null; + } + + public boolean hasUser(UUID uuid) { + return config.getFileConfiguration().getString(uuid.toString()) != null; + } + + public boolean hasUser(String name) { + FileConfiguration configLoad = config.getFileConfiguration(); + + for (String userList : configLoad.getConfigurationSection("").getKeys(false)) { + if (configLoad.getString(userList).equalsIgnoreCase(name)) { + return true; + } + } + + return false; + } + + public void saveAsync() { + Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> save()); + } + + public void save() { + try { + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/AbstractAnvilGUI.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/AbstractAnvilGUI.java similarity index 98% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/AbstractAnvilGUI.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/AbstractAnvilGUI.java index a2b66993..e5c84d2d 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/AbstractAnvilGUI.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/AbstractAnvilGUI.java @@ -1,7 +1,7 @@ -package me.goodandevil.skyblock.utils; +package com.songoda.skyblock.utils; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.utils.version.NMSUtil; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -37,11 +37,6 @@ public class AbstractAnvilGUI { private static Class ContainersClass; private static Class CraftPlayerClass; - private Player player; - private Map items = new HashMap<>(); - private Inventory inv; - private Listener listener; - static { BlockPositionClass = NMSUtil.getNMSClass("BlockPosition"); PacketPlayOutOpenWindowClass = NMSUtil.getNMSClass("PacketPlayOutOpenWindow"); @@ -61,6 +56,11 @@ public class AbstractAnvilGUI { } } + private Player player; + private Map items = new HashMap<>(); + private Inventory inv; + private Listener listener; + public AbstractAnvilGUI(Player player, AnvilClickEventHandler handler) { SkyBlock instance = SkyBlock.getInstance(); this.player = player; diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/ChatComponent.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/ChatComponent.java new file mode 100644 index 00000000..8b66cb4d --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/ChatComponent.java @@ -0,0 +1,50 @@ +package com.songoda.skyblock.utils; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; + +public class ChatComponent { + + private TextComponent textComponent; + + public ChatComponent(String text, boolean bold, ChatColor color, ClickEvent clickEvent, HoverEvent hoverEvent) { + textComponent = new TextComponent(ChatColor.translateAlternateColorCodes('&', text)); + textComponent.setBold(bold); + + if (color != null) { + textComponent.setColor(color); + } + + if (clickEvent != null) { + textComponent.setClickEvent(clickEvent); + } + + if (hoverEvent != null) { + textComponent.setHoverEvent(hoverEvent); + } + } + + public TextComponent addExtra(ChatComponent chatComponent) { + textComponent.addExtra(chatComponent.getTextComponent()); + + return textComponent; + } + + public ChatComponent addExtra(TextComponent textComponent) { + this.textComponent.addExtra(textComponent); + + return this; + } + + public ChatComponent addExtraChatComponent(ChatComponent chatComponent) { + textComponent.addExtra(chatComponent.getTextComponent()); + + return this; + } + + public TextComponent getTextComponent() { + return textComponent; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/GZipUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/GZipUtil.java new file mode 100644 index 00000000..bccbfcfb --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/GZipUtil.java @@ -0,0 +1,36 @@ +package com.songoda.skyblock.utils; + +import org.apache.commons.io.IOUtils; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +public final class GZipUtil { + + public static byte[] compress(byte[] data) throws IOException { + ByteArrayOutputStream obj = new ByteArrayOutputStream(); + GZIPOutputStream gzip = new GZIPOutputStream(obj); + gzip.write(data); + gzip.flush(); + gzip.close(); + + return obj.toByteArray(); + } + + public static byte[] decompress(final byte[] compressedData) throws IOException { + if (isCompressed(compressedData)) { + GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(compressedData)); + return IOUtils.toByteArray(gis); + } + + return new byte[512]; + } + + public static boolean isCompressed(final byte[] compressedData) { + return (compressedData[0] == (byte) (GZIPInputStream.GZIP_MAGIC)) + && (compressedData[1] == (byte) (GZIPInputStream.GZIP_MAGIC >> 8)); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/Metrics.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/Metrics.java similarity index 97% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/Metrics.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/Metrics.java index bfbdaa94..4ccc036e 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/Metrics.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/Metrics.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.utils; +package com.songoda.skyblock.utils; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; @@ -28,6 +28,19 @@ import java.util.zip.GZIPOutputStream; @SuppressWarnings({"WeakerAccess", "unused"}) public class Metrics { + // The version of this bStats class + public static final int B_STATS_VERSION = 1; + // The url to which the data is sent + private static final String URL = "https://bStats.org/submitData/bukkit"; + // Should failed requests be logged? + private static boolean logFailedRequests; + // Should the sent data be logged? + private static boolean logSentData; + // Should the response text be logged? + private static boolean logResponseStatusText; + // The uuid of the server + private static String serverUUID; + static { // You can use the property to disable the check in your test environment if (System.getProperty("bstats.relocatecheck") == null || !System.getProperty("bstats.relocatecheck").equals("false")) { @@ -42,32 +55,12 @@ public class Metrics { } } - // The version of this bStats class - public static final int B_STATS_VERSION = 1; - - // The url to which the data is sent - private static final String URL = "https://bStats.org/submitData/bukkit"; - - // Is bStats enabled on this server? - private boolean enabled; - - // Should failed requests be logged? - private static boolean logFailedRequests; - - // Should the sent data be logged? - private static boolean logSentData; - - // Should the response text be logged? - private static boolean logResponseStatusText; - - // The uuid of the server - private static String serverUUID; - // The plugin private final Plugin plugin; - // A list with all custom charts private final List charts = new ArrayList<>(); + // Is bStats enabled on this server? + private boolean enabled; /** * Class constructor. @@ -108,7 +101,8 @@ public class Metrics { ).copyDefaults(true); try { config.save(configFile); - } catch (IOException ignored) { } + } catch (IOException ignored) { + } } // Load the data @@ -126,7 +120,8 @@ public class Metrics { service.getField("B_STATS_VERSION"); // Our identifier :) found = true; // We aren't the first break; - } catch (NoSuchFieldException ignored) { } + } catch (NoSuchFieldException ignored) { + } } // Register our service Bukkit.getServicesManager().register(Metrics.class, this, plugin, ServicePriority.Normal); @@ -137,6 +132,76 @@ public class Metrics { } } + /** + * Sends the data to the bStats server. + * + * @param plugin Any plugin. It's just used to get a logger instance. + * @param data The data to send. + * @throws Exception If the request failed. + */ + private static void sendData(Plugin plugin, JSONObject data) throws Exception { + if (data == null) { + throw new IllegalArgumentException("Data cannot be null!"); + } + if (Bukkit.isPrimaryThread()) { + throw new IllegalAccessException("This method must not be called from the main thread!"); + } + if (logSentData) { + plugin.getLogger().info("Sending data to bStats: " + data.toString()); + } + HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection(); + + // Compress the data to save bandwidth + byte[] compressedData = compress(data.toString()); + + // Add headers + connection.setRequestMethod("POST"); + connection.addRequestProperty("Accept", "application/json"); + connection.addRequestProperty("Connection", "close"); + connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request + connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); + connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format + connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION); + + // Send data + connection.setDoOutput(true); + DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); + outputStream.write(compressedData); + outputStream.flush(); + outputStream.close(); + + InputStream inputStream = connection.getInputStream(); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + + StringBuilder builder = new StringBuilder(); + String line; + while ((line = bufferedReader.readLine()) != null) { + builder.append(line); + } + bufferedReader.close(); + if (logResponseStatusText) { + plugin.getLogger().info("Sent data to bStats and received response: " + builder.toString()); + } + } + + /** + * Gzips the given String. + * + * @param str The string to gzip. + * @return The gzipped String. + * @throws IOException If the compression failed. + */ + private static byte[] compress(final String str) throws IOException { + if (str == null) { + return null; + } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + GZIPOutputStream gzip = new GZIPOutputStream(outputStream); + gzip.write(str.getBytes(StandardCharsets.UTF_8)); + gzip.close(); + return outputStream.toByteArray(); + } + /** * Checks if bStats is enabled. * @@ -268,9 +333,11 @@ public class Metrics { for (RegisteredServiceProvider provider : Bukkit.getServicesManager().getRegistrations(service)) { try { pluginData.add(provider.getService().getMethod("getPluginData").invoke(provider.getProvider())); - } catch (NullPointerException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } + } catch (NullPointerException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { + } } - } catch (NoSuchFieldException ignored) { } + } catch (NoSuchFieldException ignored) { + } } data.put("plugins", pluginData); @@ -292,76 +359,6 @@ public class Metrics { }).start(); } - /** - * Sends the data to the bStats server. - * - * @param plugin Any plugin. It's just used to get a logger instance. - * @param data The data to send. - * @throws Exception If the request failed. - */ - private static void sendData(Plugin plugin, JSONObject data) throws Exception { - if (data == null) { - throw new IllegalArgumentException("Data cannot be null!"); - } - if (Bukkit.isPrimaryThread()) { - throw new IllegalAccessException("This method must not be called from the main thread!"); - } - if (logSentData) { - plugin.getLogger().info("Sending data to bStats: " + data.toString()); - } - HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection(); - - // Compress the data to save bandwidth - byte[] compressedData = compress(data.toString()); - - // Add headers - connection.setRequestMethod("POST"); - connection.addRequestProperty("Accept", "application/json"); - connection.addRequestProperty("Connection", "close"); - connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request - connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); - connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format - connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION); - - // Send data - connection.setDoOutput(true); - DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); - outputStream.write(compressedData); - outputStream.flush(); - outputStream.close(); - - InputStream inputStream = connection.getInputStream(); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); - - StringBuilder builder = new StringBuilder(); - String line; - while ((line = bufferedReader.readLine()) != null) { - builder.append(line); - } - bufferedReader.close(); - if (logResponseStatusText) { - plugin.getLogger().info("Sent data to bStats and received response: " + builder.toString()); - } - } - - /** - * Gzips the given String. - * - * @param str The string to gzip. - * @return The gzipped String. - * @throws IOException If the compression failed. - */ - private static byte[] compress(final String str) throws IOException { - if (str == null) { - return null; - } - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - GZIPOutputStream gzip = new GZIPOutputStream(outputStream); - gzip.write(str.getBytes(StandardCharsets.UTF_8)); - gzip.close(); - return outputStream.toByteArray(); - } - /** * Represents a custom chart. */ @@ -415,7 +412,7 @@ public class Metrics { /** * Class constructor. * - * @param chartId The id of the chart. + * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ public SimplePie(String chartId, Callable callable) { @@ -446,7 +443,7 @@ public class Metrics { /** * Class constructor. * - * @param chartId The id of the chart. + * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ public AdvancedPie(String chartId, Callable> callable) { @@ -490,7 +487,7 @@ public class Metrics { /** * Class constructor. * - * @param chartId The id of the chart. + * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ public DrilldownPie(String chartId, Callable>> callable) { @@ -539,7 +536,7 @@ public class Metrics { /** * Class constructor. * - * @param chartId The id of the chart. + * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ public SingleLineChart(String chartId, Callable callable) { @@ -571,7 +568,7 @@ public class Metrics { /** * Class constructor. * - * @param chartId The id of the chart. + * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ public MultiLineChart(String chartId, Callable> callable) { @@ -616,7 +613,7 @@ public class Metrics { /** * Class constructor. * - * @param chartId The id of the chart. + * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ public SimpleBarChart(String chartId, Callable> callable) { @@ -654,7 +651,7 @@ public class Metrics { /** * Class constructor. * - * @param chartId The id of the chart. + * @param chartId The id of the chart. * @param callable The callable which is used to request the chart data. */ public AdvancedBarChart(String chartId, Callable> callable) { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/NumberUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/NumberUtil.java new file mode 100644 index 00000000..1341ea7a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/NumberUtil.java @@ -0,0 +1,69 @@ +package com.songoda.skyblock.utils; + +import java.text.DecimalFormat; +import java.util.Date; + +public final class NumberUtil { + + public static String formatNumber(long number) { + return String.format("%,d", number); + } + + public static String formatNumberByDecimal(double number) { + String withoutDecimal = new DecimalFormat("0.#").format(number).replace(",", "."), withDecimal = ""; + + if (withoutDecimal.contains(".")) { + withDecimal = "." + withoutDecimal.split("\\.")[1]; + withoutDecimal = withoutDecimal.replace(withDecimal, ""); + } + + if (withDecimal.equals(".0")) { + withDecimal = ""; + } + + long itemCostWithoutDecimalValue = Long.valueOf(withoutDecimal); + + return formatNumber(itemCostWithoutDecimalValue) + withDecimal; + + } + + public static String formatNumberBySuffix(long number) { + if (number < 1000) { + return "" + number; + } + + int exp = (int) (Math.log(number) / Math.log(1000)); + + return String.format("%.1f%c", number / Math.pow(1000, exp), "kMGTPE".charAt(exp - 1)); + } + + public static long[] getDuration(int time) { + long seconds = time % 60; + long minutes = time % 3600 / 60; + long hours = time % 86400 / 3600; + long days = time / 86400; + + return new long[]{days, hours, minutes, seconds}; + } + + public static long[] getDuration(Date startDate, Date endDate) { + long different = endDate.getTime() - startDate.getTime(); + long secondsInMilli = 1000; + long minutesInMilli = secondsInMilli * 60; + long hoursInMilli = minutesInMilli * 60; + long daysInMilli = hoursInMilli * 24; + + long elapsedDays = different / daysInMilli; + different = different % daysInMilli; + + long elapsedHours = different / hoursInMilli; + different = different % hoursInMilli; + + long elapsedMinutes = different / minutesInMilli; + different = different % minutesInMilli; + + long elapsedSeconds = different / secondsInMilli; + + return new long[]{elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds}; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/StringUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/StringUtil.java new file mode 100644 index 00000000..0e9f4d8e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/StringUtil.java @@ -0,0 +1,22 @@ +package com.songoda.skyblock.utils; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class StringUtil { + + public static String capatilizeUppercaseLetters(String string) { + StringBuilder stringBuilder = new StringBuilder(string); + Matcher matcher = Pattern.compile("[A-Z]").matcher(string); + int extraFeed = 0; + + while (matcher.find()) { + if (matcher.start() != 0) { + stringBuilder = stringBuilder.insert(matcher.start() + extraFeed, " "); + extraFeed++; + } + } + + return stringBuilder.toString(); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/InventoryUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/InventoryUtil.java new file mode 100644 index 00000000..6f9b5482 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/InventoryUtil.java @@ -0,0 +1,91 @@ +package com.songoda.skyblock.utils.item; + +import com.songoda.skyblock.utils.version.NMSUtil; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Map; + +public class InventoryUtil { + + @SuppressWarnings("deprecation") + public static void removeItem(Inventory inv, int amount, boolean hasDisplayname, Material material) { + Map ammo = inv.all(material); + + for (Integer index : ammo.keySet()) { + ItemStack is = ammo.get(index); + ItemMeta im = is.getItemMeta(); + + if (NMSUtil.getVersionNumber() > 12) { + if (((Damageable) im).getDamage() != 0) { + continue; + } + } else { + if (is.getDurability() != 0) { + continue; + } + } + + int removed = Math.min(amount, is.getAmount()); + amount -= removed; + + if (is.getAmount() == removed) { + inv.setItem(index, null); + } else { + is.setAmount(is.getAmount() - removed); + } + + if (amount <= 0) { + break; + } + } + } + + @SuppressWarnings("deprecation") + public static boolean isInventoryFull(Inventory inv, int subtract, int amount, Material material) { + for (int i = 0; i < inv.getSize() - subtract; i++) { + ItemStack is = inv.getItem(i); + + if (is == null) { + return false; + } else if (is.getType() == material) { + ItemMeta im = is.getItemMeta(); + + if (!im.hasDisplayName()) { + if (NMSUtil.getVersionNumber() > 12) { + if (((Damageable) im).getDamage() != 0) { + continue; + } + } else { + if (is.getDurability() != 0) { + continue; + } + } + + if (is.getAmount() < is.getMaxStackSize() && (is.getAmount() + amount) <= is.getMaxStackSize()) { + return false; + } + } + } + } + + return true; + } + + public static void takeItem(Player player, int amount) { + if (player.getGameMode() == GameMode.CREATIVE) return; + + ItemStack item = player.getInventory().getItemInHand(); + if (item == null) return; + + int result = item.getAmount() - amount; + item.setAmount(result); + + player.setItemInHand(result > 0 ? item : null); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/ItemStackUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/ItemStackUtil.java new file mode 100644 index 00000000..d3518e6b --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/ItemStackUtil.java @@ -0,0 +1,77 @@ +package com.songoda.skyblock.utils.item; + +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import java.io.*; +import java.lang.reflect.Constructor; +import java.math.BigInteger; + +public final class ItemStackUtil { + + public static ItemStack deserializeItemStack(String data) { + ByteArrayInputStream inputStream = new ByteArrayInputStream(new BigInteger(data, 32).toByteArray()); + DataInputStream dataInputStream = new DataInputStream(inputStream); + + ItemStack itemStack = null; + + try { + Class NBTTagCompoundClass = NMSUtil.getNMSClass("NBTTagCompound"); + Class NMSItemStackClass = NMSUtil.getNMSClass("ItemStack"); + Object NBTTagCompound = NMSUtil.getNMSClass("NBTCompressedStreamTools") + .getMethod("a", DataInputStream.class).invoke(null, dataInputStream); + Object craftItemStack; + + if (NMSUtil.getVersionNumber() > 12) { + craftItemStack = NMSItemStackClass.getMethod("a", NBTTagCompoundClass).invoke(null, NBTTagCompound); + } else if (NMSUtil.getVersionNumber() > 10) { + craftItemStack = NMSItemStackClass.getConstructor(NBTTagCompoundClass).newInstance(NBTTagCompound); + } else { + craftItemStack = NMSItemStackClass.getMethod("createStack", NBTTagCompoundClass).invoke(null, + NBTTagCompound); + } + + itemStack = (ItemStack) NMSUtil.getCraftClass("inventory.CraftItemStack") + .getMethod("asBukkitCopy", NMSItemStackClass).invoke(null, craftItemStack); + + // TODO: This method of serialization has some issues. Not all the names are the same between versions + // Make an exception for reeds/melon, they NEED to load in the island chest + // This code is here SPECIFICALLY to get the default.structure to load properly in all versions + // Other structures people make NEED to be saved from the version that they will be using so everything loads properly + if (itemStack.getType() == Material.AIR) { + if (NBTTagCompound.toString().equals("{id:\"minecraft:sugar_cane\",Count:1b}")) { + itemStack = new ItemStack(Materials.SUGAR_CANE.parseMaterial(), 1); + } else if (NBTTagCompound.toString().equals("{id:\"minecraft:melon_slice\",Count:1b}")) { + itemStack = new ItemStack(Materials.MELON_SLICE.parseMaterial(), 1); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return itemStack; + } + + public static String serializeItemStack(ItemStack item) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + DataOutputStream dataOutput = new DataOutputStream(outputStream); + + try { + Class NBTTagCompoundClass = NMSUtil.getNMSClass("NBTTagCompound"); + Constructor nbtTagCompoundConstructor = NBTTagCompoundClass.getConstructor(); + Object NBTTagCompound = nbtTagCompoundConstructor.newInstance(); + Object NMSItemStackClass = NMSUtil.getCraftClass("inventory.CraftItemStack") + .getMethod("asNMSCopy", ItemStack.class).invoke(null, item); + NMSUtil.getNMSClass("ItemStack").getMethod("save", NBTTagCompoundClass).invoke(NMSItemStackClass, + NBTTagCompound); + NMSUtil.getNMSClass("NBTCompressedStreamTools").getMethod("a", NBTTagCompoundClass, DataOutput.class) + .invoke(null, NBTTagCompound, dataOutput); + } catch (Exception e) { + e.printStackTrace(); + } + + return new BigInteger(1, outputStream.toByteArray()).toString(32); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/MaterialUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/MaterialUtil.java new file mode 100644 index 00000000..514edb56 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/MaterialUtil.java @@ -0,0 +1,73 @@ +package com.songoda.skyblock.utils.item; + +import com.songoda.skyblock.utils.version.Materials; +import org.bukkit.Material; + +public class MaterialUtil { + + public static Material correctMaterial(Material material) { + if (material == Material.REDSTONE_WIRE) { + material = Material.REDSTONE; + } else if (material == Materials.LEGACY_DOUBLE_SLAB.getPostMaterial()) { + material = Materials.SMOOTH_STONE.parseMaterial(); + } else if (material == Materials.FERN.parseMaterial()) { + material = Material.GRASS; + } else if (material == Materials.LEGACY_NETHER_WARTS.getPostMaterial()) { + material = Materials.LEGACY_NETHER_STALK.getPostMaterial(); + } else if (material == Materials.LEGACY_SIGN_POST.getPostMaterial() || material == Materials.OAK_WALL_SIGN.parseMaterial()) { + material = Materials.OAK_SIGN.parseMaterial(); + } else if (material == Materials.BIRCH_WALL_SIGN.parseMaterial()) { + material = Materials.BIRCH_SIGN.parseMaterial(); + } else if (material == Materials.SPRUCE_WALL_SIGN.parseMaterial()) { + material = Materials.SPRUCE_SIGN.parseMaterial(); + } else if (material == Materials.JUNGLE_WALL_SIGN.parseMaterial()) { + material = Materials.JUNGLE_SIGN.parseMaterial(); + } else if (material == Materials.ACACIA_WALL_SIGN.parseMaterial()) { + material = Materials.ACACIA_SIGN.parseMaterial(); + } else if (material == Materials.DARK_OAK_WALL_SIGN.parseMaterial()) { + material = Materials.DARK_OAK_SIGN.parseMaterial(); + } else if (material == Materials.LEGACY_SUGAR_CANE_BLOCK.getPostMaterial()) { + material = Material.SUGAR_CANE; + } else if (material == Material.TRIPWIRE) { + material = Material.STRING; + } else if (material == Material.FLOWER_POT) { + material = Materials.LEGACY_FLOWER_POT_ITEM.getPostMaterial(); + } else if (material.name().startsWith("POTTED_")) { + material = Material.FLOWER_POT; + } else if (material == Materials.LEGACY_IRON_DOOR_BLOCK.getPostMaterial()) { + material = Material.IRON_DOOR; + } else if (material == Material.CAULDRON) { + material = Materials.LEGACY_CAULDRON_ITEM.getPostMaterial(); + } else if (material == Material.BREWING_STAND) { + material = Materials.LEGACY_BREWING_STAND.getPostMaterial(); + } else if (material.name().equals("BED_BLOCK")) { + material = Materials.RED_BED.getPostMaterial(); + } else if (material == Materials.SWEET_BERRY_BUSH.parseMaterial()) { + material = Materials.SWEET_BERRIES.parseMaterial(); + } else if (material == Materials.BAMBOO_SAPLING.parseMaterial()) { + material = Materials.BAMBOO.parseMaterial(); + } + + return material; + } + + public static Material getMaterial(int NMSVersion, int blockVersion, String material, int data) { + if (NMSVersion > 12) { + if (blockVersion > 12) { + return Material.valueOf(material); + } else { + return Materials.requestMaterials(material, (byte) data).getPostMaterial(); + } + } else { + try { + if (blockVersion > 12) { + return Materials.fromString(material).parseMaterial(); + } else { + return Material.valueOf(material); + } + } catch (Exception e) { + return Material.STONE; + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/SkullUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/SkullUtil.java new file mode 100644 index 00000000..00cceecb --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/SkullUtil.java @@ -0,0 +1,80 @@ +package com.songoda.skyblock.utils.item; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import java.lang.reflect.Field; +import java.util.Base64; +import java.util.UUID; + +public final class SkullUtil { + + public static ItemStack create(String skinTexture) { + ItemStack is = createItemStack(); + SkullMeta sm = (SkullMeta) is.getItemMeta(); + + GameProfile gameProfile = new GameProfile(UUID.randomUUID(), null); + + byte[] encodedData = Base64.getEncoder() + .encode(String.format("{textures:{SKIN:{url:\"%s\"}}}", skinTexture).getBytes()); + gameProfile.getProperties().put("textures", new Property("textures", new String(encodedData))); + + Field profileField = null; + + try { + profileField = sm.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + profileField.set(sm, gameProfile); + } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) { + e1.printStackTrace(); + } + + is.setItemMeta(sm); + + return is; + } + + public static ItemStack create(String signature, String value) { + if (signature == null || signature.isEmpty() || value == null || value.isEmpty()) { + signature = "K9P4tCIENYbNpDuEuuY0shs1x7iIvwXi4jUUVsATJfwsAIZGS+9OZ5T2HB0tWBoxRvZNi73Vr+syRdvTLUWPusVXIg+2fhXmQoaNEtnQvQVGQpjdQP0TkZtYG8PbvRxE6Z75ddq+DVx/65OSNHLWIB/D+Rg4vINh4ukXNYttn9QvauDHh1aW7/IkIb1Bc0tLcQyqxZQ3mdglxJfgIerqnlA++Lt7TxaLdag4y1NhdZyd3OhklF5B0+B9zw/qP8QCzsZU7VzJIcds1+wDWKiMUO7+60OSrIwgE9FPamxOQDFoDvz5BOULQEeNx7iFMB+eBYsapCXpZx0zf1bduppBUbbVC9wVhto/J4tc0iNyUq06/esHUUB5MHzdJ0Y6IZJAD/xIw15OLCUH2ntvs8V9/cy5/n8u3JqPUM2zhUGeQ2p9FubUGk4Q928L56l3omRpKV+5QYTrvF+AxFkuj2hcfGQG3VE2iYZO6omXe7nRPpbJlHkMKhE8Xvd1HP4PKpgivSkHBoZ92QEUAmRzZydJkp8CNomQrZJf+MtPiNsl/Q5RQM+8CQThg3+4uWptUfP5dDFWOgTnMdA0nIODyrjpp+bvIJnsohraIKJ7ZDnj4tIp4ObTNKDFC/8j8JHz4VCrtr45mbnzvB2DcK8EIB3JYT7ElJTHnc5BKMyLy5SKzuw="; + value = "eyJ0aW1lc3RhbXAiOjE1MjkyNTg0MTE4NDksInByb2ZpbGVJZCI6Ijg2NjdiYTcxYjg1YTQwMDRhZjU0NDU3YTk3MzRlZWQ3IiwicHJvZmlsZU5hbWUiOiJTdGV2ZSIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGMxYzc3Y2U4ZTU0OTI1YWI1ODEyNTQ0NmVjNTNiMGNkZDNkMGNhM2RiMjczZWI5MDhkNTQ4Mjc4N2VmNDAxNiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjc2N2Q0ODMyNWVhNTMyNDU2MTQwNmI4YzgyYWJiZDRlMjc1NWYxMTE1M2NkODVhYjA1NDVjYzIifX19"; + } + + ItemStack is = createItemStack(); + SkullMeta sm = (SkullMeta) is.getItemMeta(); + + GameProfile gameProfile = new GameProfile(UUID.randomUUID(), null); + gameProfile.getProperties().put("textures", new Property("textures", value, signature)); + + Field profileField = null; + + try { + profileField = sm.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + profileField.set(sm, gameProfile); + } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) { + e1.printStackTrace(); + } + + is.setItemMeta(sm); + + return is; + } + + public static ItemStack createItemStack() { + ItemStack is; + + if (NMSUtil.getVersionNumber() > 12) { + is = new ItemStack(Material.valueOf("PLAYER_HEAD")); + } else { + is = Materials.LEGACY_SKULL_ITEM.getPostItem(); + } + + return is; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/nInventoryUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/nInventoryUtil.java new file mode 100644 index 00000000..da052b5d --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/item/nInventoryUtil.java @@ -0,0 +1,315 @@ +package com.songoda.skyblock.utils.item; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.placeholder.Placeholder; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class nInventoryUtil { + + private Player player; + private Listener listener; + + private Inventory inv; + + private String title; + private int size = 9; + private InventoryType type; + private Map items = new HashMap<>(); + + public nInventoryUtil(Player player, final ClickEventHandler handler) { + this.player = player; + + if (handler != null) { + this.listener = new Listener() { + @EventHandler + public void onInventoryClick(InventoryClickEvent event) { + if (!(event.getWhoClicked() instanceof Player)) { + return; + } + + if (inv != null && event.getInventory().equals(inv)) { + event.setCancelled(true); + + if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR) { + return; + } + + ClickEvent clickEvent = new ClickEvent(event.getClick(), event.getSlot(), + event.getCurrentItem()); + handler.onClick(clickEvent); + + if (!clickEvent.getCancelled()) { + event.setCancelled(false); + } + + if (clickEvent.getWillClose()) { + event.getWhoClicked().closeInventory(); + } + + if (clickEvent.getWillDestroy()) { + destroy(); + } + } + } + + @EventHandler + public void onInventoryClose(InventoryCloseEvent event) { + if (!(event.getPlayer() instanceof Player)) { + return; + } + + Inventory inv = event.getInventory(); + + if (inv.equals(nInventoryUtil.this.inv)) { + inv.clear(); + destroy(); + } + } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) { + if (event.getPlayer().getUniqueId().equals(player.getUniqueId())) { + destroy(); + } + } + }; + + Bukkit.getPluginManager().registerEvents(listener, SkyBlock.getInstance()); + } + } + + public void addItem(Item item, int... slots) { + for (int slotList : slots) { + items.put(slotList, item.prepareItem()); + } + } + + public void addItemStack(ItemStack is, int... slots) { + for (int slotList : slots) { + items.put(slotList, is); + } + } + + public Map getItems() { + return items; + } + + public Item createItem(ItemStack is, String itemDisplayname, List itemLore, Placeholder[] placeholders, + Enchantment[] itemEnchantments, ItemFlag[] itemFlags) { + return new Item(is, itemDisplayname, itemLore, placeholders, itemEnchantments, itemFlags); + } + + public void open() { + createInventory(); + player.openInventory(inv); + } + + public void setTitle(String title) { + this.title = title; + } + + public void setType(InventoryType type) { + this.type = type; + } + + public void setRows(int rows) { + if (rows > 6 || rows < 0) { + size = 9; + + return; + } + + this.size = rows * 9; + } + + public void setSize(int size) { + this.size = size; + } + + public void createInventory() { + if (type == null) { + if (title == null) { + inv = Bukkit.createInventory(null, size); + } else { + inv = Bukkit.createInventory(null, size, title); + } + } else { + if (title == null) { + inv = Bukkit.createInventory(null, type); + } else { + inv = Bukkit.createInventory(null, type, title); + } + } + + for (int i = 0; i < items.size(); i++) { + int slot = (int) items.keySet().toArray()[i]; + inv.setItem(slot, items.get(slot)); + } + } + + public Inventory getInventory() { + return inv; + } + + public void setInventory(Inventory inv) { + this.inv = inv; + } + + public void destroy() { + if (listener != null) { + HandlerList.unregisterAll(listener); + } + + title = null; + type = null; + inv = null; + items.clear(); + + listener = null; + } + + public interface ClickEventHandler { + void onClick(ClickEvent event); + } + + public class Item { + + private ItemStack is; + private String itemDisplayname; + private List itemLore; + private Placeholder[] placeholders; + private Enchantment[] itemEnchantments; + private ItemFlag[] itemFlags; + + public Item(ItemStack is, String itemDisplayname, List itemLore, Placeholder[] placeholders, + Enchantment[] itemEnchantments, ItemFlag[] itemFlags) { + this.is = is; + this.itemDisplayname = ChatColor.translateAlternateColorCodes('&', itemDisplayname); + this.itemLore = itemLore; + this.placeholders = placeholders; + this.itemEnchantments = itemEnchantments; + this.itemFlags = itemFlags; + } + + public void setLore() { + if (itemLore != null) { + ArrayList formattedItemLore = new ArrayList<>(); + + for (String itemLoreList : itemLore) { + if (placeholders != null) { + for (Placeholder placeholderList : placeholders) { + if (itemLoreList.contains(placeholderList.getPlaceholder())) { + itemLoreList = ChatColor.translateAlternateColorCodes('&', itemLoreList + .replace(placeholderList.getPlaceholder(), placeholderList.getResult())); + } + } + } + + formattedItemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + + itemLore.clear(); + itemLore = formattedItemLore; + } + } + + public void setItemMeta() { + ItemMeta im = is.hasItemMeta() ? is.getItemMeta() : Bukkit.getItemFactory().getItemMeta(is.getType()); + im.setDisplayName(itemDisplayname); + im.setLore(itemLore); + + if (itemFlags != null) { + im.addItemFlags(itemFlags); + } + + if (itemEnchantments != null) { + for (Enchantment itemEnchantmentList : itemEnchantments) { + im.addEnchant(itemEnchantmentList, 1, true); + } + } + + is.setItemMeta(im); + } + + public ItemStack prepareItem() { + setLore(); + setItemMeta(); + + return is; + } + } + + public class ClickEvent { + + private ClickType click; + private int slot; + private ItemStack is; + + private boolean close = true; + private boolean destroy = true; + private boolean cancelled = true; + + public ClickEvent(ClickType click, int slot, ItemStack is) { + this.click = click; + this.slot = slot; + this.is = is; + } + + public ClickType getClick() { + return click; + } + + public int getSlot() { + return slot; + } + + public ItemStack getItem() { + return is; + } + + public boolean getWillClose() { + return close; + } + + public void setWillClose(boolean close) { + this.close = close; + } + + public boolean getWillDestroy() { + return destroy; + } + + public void setWillDestroy(boolean destroy) { + this.destroy = destroy; + } + + public boolean getCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/math/VectorUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/math/VectorUtil.java new file mode 100644 index 00000000..1622037e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/math/VectorUtil.java @@ -0,0 +1,49 @@ +package com.songoda.skyblock.utils.math; + +import org.bukkit.util.Vector; + +public final class VectorUtil { + + public static Vector rotateAroundAxisX(Vector v, double angle) { + angle = Math.toRadians(angle); + + double y, z, cos, sin; + + cos = Math.cos(angle); + sin = Math.sin(angle); + + y = v.getY() * cos - v.getZ() * sin; + z = v.getY() * sin + v.getZ() * cos; + + return v.setY(y).setZ(z); + } + + public static Vector rotateAroundAxisY(Vector v, double angle) { + angle = -angle; + angle = Math.toRadians(angle); + + double x, z, cos, sin; + + cos = Math.cos(angle); + sin = Math.sin(angle); + + x = v.getX() * cos + v.getZ() * sin; + z = v.getX() * -sin + v.getZ() * cos; + + return v.setX(x).setZ(z); + } + + public static Vector rotateAroundAxisZ(Vector v, double angle) { + angle = Math.toRadians(angle); + + double x, y, cos, sin; + + cos = Math.cos(angle); + sin = Math.sin(angle); + + x = v.getX() * cos - v.getY() * sin; + y = v.getX() * sin + v.getY() * cos; + + return v.setX(x).setY(y); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/player/NameFetcher.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/player/NameFetcher.java new file mode 100644 index 00000000..e99c736e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/player/NameFetcher.java @@ -0,0 +1,44 @@ +package com.songoda.skyblock.utils.player; + +import com.google.gson.Gson; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Date; +import java.util.Scanner; +import java.util.UUID; + +public class NameFetcher { + + public static Names[] getNames(UUID uuid) throws IOException { + if (uuid == null) { + return null; + } + + Names[] names = null; + + Scanner jsonScanner = new Scanner( + (new URL("https://api.mojang.com/user/profiles/" + uuid.toString().replaceAll("-", "") + "/names")) + .openConnection().getInputStream(), + "UTF-8"); + names = new Gson().fromJson(jsonScanner.next(), Names[].class); + jsonScanner.close(); + + return names; + } + + public class Names { + + public String name; + public long changedToAt; + + public String getName() { + return name; + } + + public Date getChangeDate() { + return new Date(changedToAt); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/player/OfflinePlayer.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/player/OfflinePlayer.java new file mode 100644 index 00000000..9219e68e --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/player/OfflinePlayer.java @@ -0,0 +1,106 @@ +package com.songoda.skyblock.utils.player; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.usercache.UserCacheManager; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.File; +import java.util.UUID; + +public class OfflinePlayer { + + private UUID uuid; + + private String name; + private String memberSince; + private String lastOnline; + private UUID owner = null; + private String[] texture; + + private int playtime; + + public OfflinePlayer(String name) { + SkyBlock skyblock = SkyBlock.getInstance(); + UserCacheManager userCacheManager = skyblock.getUserCacheManager(); + + @SuppressWarnings("deprecation") + org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(name); + + this.name = offlinePlayer.getName(); + this.uuid = offlinePlayer.getUniqueId(); + + if (this.uuid == null && userCacheManager.hasUser(name)) { + this.uuid = userCacheManager.getUser(name); + } + + FileConfiguration configLoad = YamlConfiguration.loadConfiguration( + new File(new File(skyblock.getDataFolder().toString() + "/player-data"), uuid.toString() + ".yml")); + texture = new String[]{configLoad.getString("Texture.Signature"), configLoad.getString("Texture.Value")}; + playtime = configLoad.getInt("Statistics.Island.Playtime"); + memberSince = configLoad.getString("Statistics.Island.Join"); + lastOnline = configLoad.getString("Statistics.Island.LastOnline"); + + if (!(configLoad.getString("Island.Owner") == null || configLoad.getString("Island.Owner").isEmpty())) { + owner = UUID.fromString(configLoad.getString("Island.Owner")); + } + } + + public OfflinePlayer(UUID uuid) { + SkyBlock skyblock = SkyBlock.getInstance(); + UserCacheManager userCacheManager = skyblock.getUserCacheManager(); + + org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(uuid); + + this.name = offlinePlayer.getName(); + this.uuid = uuid; + + if (this.name == null && userCacheManager.hasUser(uuid)) { + this.name = userCacheManager.getUser(uuid); + } + + FileConfiguration configLoad = YamlConfiguration.loadConfiguration( + new File(new File(skyblock.getDataFolder().toString() + "/player-data"), uuid.toString() + ".yml")); + texture = new String[]{configLoad.getString("Texture.Signature"), configLoad.getString("Texture.Value")}; + playtime = configLoad.getInt("Statistics.Island.Playtime"); + memberSince = configLoad.getString("Statistics.Island.Join"); + lastOnline = configLoad.getString("Statistics.Island.LastOnline"); + + if (!(configLoad.getString("Island.Owner") == null || configLoad.getString("Island.Owner").isEmpty())) { + owner = UUID.fromString(configLoad.getString("Island.Owner")); + } + } + + public UUID getUUID() { + return uuid; + } + + public UUID getUniqueId() { + return uuid; + } + + public String getName() { + return name; + } + + public String getMemberSince() { + return memberSince; + } + + public String getLastOnline() { + return lastOnline; + } + + public UUID getOwner() { + return owner; + } + + public String[] getTexture() { + return texture; + } + + public int getPlaytime() { + return playtime; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Area.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Area.java new file mode 100644 index 00000000..b7aebac1 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Area.java @@ -0,0 +1,27 @@ +package com.songoda.skyblock.utils.structure; + +import org.bukkit.Location; + +import java.util.HashMap; +import java.util.Map; + +public class Area { + + private Map positions; + + public Area() { + positions = new HashMap<>(); + } + + public Location getPosition(int position) { + if (positions.containsKey(position)) { + return positions.get(position); + } + + return null; + } + + public void setPosition(int position, Location location) { + positions.put(position, location); + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Location.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Location.java new file mode 100644 index 00000000..44bfdc5d --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Location.java @@ -0,0 +1,33 @@ +package com.songoda.skyblock.utils.structure; + +public class Location { + + private int x; + private int y; + private int z; + + private boolean originLocation; + + public Location(int x, int y, int z, boolean originLocation) { + this.x = x; + this.y = y; + this.z = z; + this.originLocation = originLocation; + } + + public int getX() { + return this.x; + } + + public int getY() { + return this.y; + } + + public int getZ() { + return this.z; + } + + public boolean isOriginLocation() { + return originLocation; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/SchematicUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/SchematicUtil.java similarity index 95% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/SchematicUtil.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/SchematicUtil.java index 8cc87272..363b4aa1 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/SchematicUtil.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/SchematicUtil.java @@ -1,7 +1,7 @@ -package me.goodandevil.skyblock.utils.structure; +package com.songoda.skyblock.utils.structure; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.utils.version.NMSUtil; import org.bukkit.Bukkit; import org.bukkit.World; @@ -67,7 +67,7 @@ public class SchematicUtil { Bukkit.getScheduler().runTask(SkyBlock.getInstance(), pasteTask); } - return new Float[] { location.getYaw(), location.getPitch() }; + return new Float[]{location.getYaw(), location.getPitch()}; } } diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/SelectionLocation.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/SelectionLocation.java new file mode 100644 index 00000000..79a014e0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/SelectionLocation.java @@ -0,0 +1,80 @@ +package com.songoda.skyblock.utils.structure; + +import org.bukkit.block.Block; +import org.bukkit.entity.*; + +import java.util.LinkedHashMap; + +public final class SelectionLocation { + + public static LinkedHashMap getEntities(org.bukkit.Location originLocation, + org.bukkit.Location location1, org.bukkit.Location location2) throws Exception { + LinkedHashMap locations = getLocations(originLocation, location1, location2); + LinkedHashMap entities = new LinkedHashMap<>(); + + for (Entity entityList : location2.getWorld().getEntities()) { + for (org.bukkit.Location locationList : locations.keySet()) { + if (locationList.getBlockX() == entityList.getLocation().getBlockX() + && locationList.getBlockY() == entityList.getLocation().getBlockY() + && locationList.getBlockZ() == entityList.getLocation().getBlockZ()) { + if (entityList instanceof Player || !(entityList instanceof LivingEntity + || entityList instanceof Vehicle || entityList instanceof Hanging)) { + continue; + } + + entities.put(entityList, locations.get(locationList)); + } + } + } + + return entities; + } + + public static LinkedHashMap getBlocks(org.bukkit.Location originLocation, + org.bukkit.Location location1, org.bukkit.Location location2) throws Exception { + LinkedHashMap locations = getLocations(originLocation, location1, location2); + LinkedHashMap blocks = new LinkedHashMap<>(); + + for (org.bukkit.Location locationList : locations.keySet()) { + blocks.put(locationList.getBlock(), locations.get(locationList)); + } + + return blocks; + } + + private static LinkedHashMap getLocations(org.bukkit.Location originLocation, + org.bukkit.Location location1, org.bukkit.Location location2) throws Exception { + LinkedHashMap locations = new LinkedHashMap<>(); + + int MinX = Math.min(location2.getBlockX(), location1.getBlockX()); + int MinY = Math.min(location2.getBlockY(), location1.getBlockY()); + int MinZ = Math.min(location2.getBlockZ(), location1.getBlockZ()); + + int MaxX = Math.max(location2.getBlockX(), location1.getBlockX()); + int MaxY = Math.max(location2.getBlockY(), location1.getBlockY()); + int MaxZ = Math.max(location2.getBlockZ(), location1.getBlockZ()); + + for (int x = MinX; x <= MaxX; x++) { + for (int y = MinY; y <= MaxY; y++) { + for (int z = MinZ; z <= MaxZ; z++) { + Block block = location1.getWorld().getBlockAt(x, y, z); + + int offsetX = x - (int) location1.getX(); + int offsetY = y - (int) location1.getY(); + int offsetZ = z - (int) location1.getZ(); + + boolean isOriginLocation = false; + + if (block.getX() == originLocation.getBlockX() && block.getY() == originLocation.getBlockY() + && block.getZ() == originLocation.getBlockZ()) { + isOriginLocation = true; + } + + locations.put(block.getLocation(), new Location(offsetX, offsetY, offsetZ, isOriginLocation)); + } + } + } + + return locations; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Storage.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Storage.java new file mode 100644 index 00000000..744aa097 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Storage.java @@ -0,0 +1,40 @@ +package com.songoda.skyblock.utils.structure; + +public class Storage { + + private String blocks; + private String entities; + private String originLocation; + + private long time; + + private int version; + + public Storage(String blocks, String entities, String originLocation, long time, int version) { + this.blocks = blocks; + this.entities = entities; + this.originLocation = originLocation; + this.time = time; + this.version = version; + } + + public int getVersion() { + return version; + } + + public String getBlocks() { + return blocks; + } + + public String getEntities() { + return entities; + } + + public String getOriginLocation() { + return originLocation; + } + + public long getTime() { + return time; + } +} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Structure.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Structure.java new file mode 100644 index 00000000..8285d684 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/Structure.java @@ -0,0 +1,20 @@ +package com.songoda.skyblock.utils.structure; + +public class Structure { + + private Storage storage; + private String file; + + public Structure(Storage storage, String file) { + this.storage = storage; + this.file = file; + } + + public Storage getStructureStorage() { + return storage; + } + + public String getStructureFile() { + return this.file; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/StructureUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/StructureUtil.java new file mode 100644 index 00000000..0f920bf2 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/structure/StructureUtil.java @@ -0,0 +1,224 @@ +package com.songoda.skyblock.utils.structure; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.utils.GZipUtil; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.utils.world.block.BlockData; +import com.songoda.skyblock.utils.world.block.BlockDegreesType; +import com.songoda.skyblock.utils.world.block.BlockUtil; +import com.songoda.skyblock.utils.world.entity.EntityData; +import com.songoda.skyblock.utils.world.entity.EntityUtil; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; + +public final class StructureUtil { + + public static void saveStructure(File configFile, org.bukkit.Location originLocation, + org.bukkit.Location[] positions) throws Exception { + if (!configFile.exists()) { + configFile.createNewFile(); + } + + LinkedHashMap blocks = SelectionLocation.getBlocks(originLocation, positions[0], positions[1]); + LinkedHashMap entities = SelectionLocation.getEntities(originLocation, positions[0], + positions[1]); + + List blockData = new ArrayList<>(); + List entityData = new ArrayList<>(); + + String originBlockLocation = ""; + + for (Block blockList : blocks.keySet()) { + Location location = blocks.get(blockList); + + if (location.isOriginLocation()) { + originBlockLocation = location.getX() + ":" + location.getY() + ":" + location.getZ() + ":" + + positions[0].getWorld().getName(); + + if (blockList.getType() == Material.AIR) { + blockData.add(BlockUtil.convertBlockToBlockData(blockList, location.getX(), location.getY(), + location.getZ())); + } + } + + if (blockList.getType() == Material.AIR) { + continue; + } + + blockData.add( + BlockUtil.convertBlockToBlockData(blockList, location.getX(), location.getY(), location.getZ())); + } + + for (Entity entityList : entities.keySet()) { + if (entityList.getType() == EntityType.PLAYER) { + continue; + } + + Location location = entities.get(entityList); + entityData.add(EntityUtil.convertEntityToEntityData(entityList, location.getX(), location.getY(), + location.getZ())); + } + + if (!originBlockLocation.isEmpty()) { + originBlockLocation = originBlockLocation + ":" + originLocation.getYaw() + ":" + originLocation.getPitch(); + } + + String JSONString = new Gson().toJson(new Storage(new Gson().toJson(blockData), new Gson().toJson(entityData), + originBlockLocation, System.currentTimeMillis(), NMSUtil.getVersionNumber()), new TypeToken() { + }.getType()); + + FileOutputStream fileOutputStream = new FileOutputStream(configFile, false); + fileOutputStream.write(GZipUtil.compress(JSONString.getBytes(StandardCharsets.UTF_8))); + fileOutputStream.flush(); + fileOutputStream.close(); + } + + public static Structure loadStructure(File configFile) throws IOException { + if (!configFile.exists()) { + return null; + } + + byte[] content = new byte[(int) configFile.length()]; + + FileInputStream fileInputStream = new FileInputStream(configFile); + fileInputStream.read(content); + fileInputStream.close(); + + String JSONString = new String(GZipUtil.decompress(content)); + Storage storage = new Gson().fromJson(JSONString, new TypeToken() { + }.getType()); + + return new Structure(storage, configFile.getName()); + } + + @SuppressWarnings("unchecked") + public static Float[] pasteStructure(Structure structure, org.bukkit.Location location, BlockDegreesType type) { + Storage storage = structure.getStructureStorage(); + + String[] originLocationPositions = null; + + if (!storage.getOriginLocation().isEmpty()) { + originLocationPositions = storage.getOriginLocation().split(":"); + } + + float yaw = 0.0F, pitch = 0.0F; + + if (originLocationPositions.length == 6) { + yaw = Float.valueOf(originLocationPositions[4]); + pitch = Float.valueOf(originLocationPositions[5]); + } + + List blockData = new Gson().fromJson(storage.getBlocks(), + new TypeToken>() { + }.getType()); + + for (BlockData blockDataList : blockData) { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(SkyBlock.getInstance(), () -> { + try { + org.bukkit.Location blockRotationLocation = LocationUtil + .rotateLocation(new org.bukkit.Location(location.getWorld(), blockDataList.getX(), + blockDataList.getY(), blockDataList.getZ()), type); + org.bukkit.Location blockLocation = new org.bukkit.Location(location.getWorld(), + location.getX() - Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[0])), + location.getY() - Integer.valueOf(storage.getOriginLocation().split(":")[1]), + location.getZ() + Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[2]))); + blockLocation.add(blockRotationLocation); + BlockUtil.convertBlockDataToBlock(blockLocation.getBlock(), blockDataList); + } catch (Exception e) { + SkyBlock.getInstance().getLogger().warning("Unable to convert BlockData to Block for type {" + blockDataList.getMaterial() + + ":" + blockDataList.getData() + "} in structure {" + structure.getStructureFile() + "}"); + } + }); + } + + Bukkit.getScheduler().scheduleSyncDelayedTask(SkyBlock.getInstance(), () -> { + for (EntityData entityDataList : (List) new Gson().fromJson(storage.getEntities(), + new TypeToken>() { + }.getType())) { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(SkyBlock.getInstance(), () -> { + try { + org.bukkit.Location blockRotationLocation = LocationUtil + .rotateLocation(new org.bukkit.Location(location.getWorld(), entityDataList.getX(), + entityDataList.getY(), entityDataList.getZ()), type); + org.bukkit.Location blockLocation = new org.bukkit.Location(location.getWorld(), + location.getX() - Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[0])), + location.getY() - Integer.valueOf(storage.getOriginLocation().split(":")[1]), + location.getZ() + Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[2]))); + blockLocation.add(blockRotationLocation); + EntityUtil.convertEntityDataToEntity(entityDataList, blockLocation, type); + } catch (Exception e) { + SkyBlock.getInstance().getLogger().warning("Unable to convert EntityData to Entity for type {" + entityDataList.getEntityType() + + "} in structure {" + structure.getStructureFile() + "}"); + } + }); + } + }, 60L); + + return new Float[]{yaw, pitch}; + } + + public static ItemStack getTool() throws Exception { + SkyBlock skyblock = SkyBlock.getInstance(); + + FileManager fileManager = skyblock.getFileManager(); + + FileManager.Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + ItemStack is = new ItemStack( + Material.valueOf(fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getString("Island.Admin.Structure.Selector"))); + ItemMeta im = is.getItemMeta(); + im.setDisplayName(ChatColor.translateAlternateColorCodes('&', + configLoad.getString("Island.Structure.Tool.Item.Displayname"))); + + List itemLore = new ArrayList<>(); + + for (String itemLoreList : configLoad.getStringList("Island.Structure.Tool.Item.Lore")) { + itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); + } + + im.setLore(itemLore); + is.setItemMeta(im); + + return is; + } + + public static org.bukkit.Location[] getFixedLocations(org.bukkit.Location location1, + org.bukkit.Location location2) { + org.bukkit.Location location1Fixed = location1.clone(); + org.bukkit.Location location2Fixed = location2.clone(); + + if (location1.getX() > location2.getX()) { + location1Fixed.setX(location2.getX()); + location2Fixed.setX(location1.getX()); + } + + if (location1.getZ() < location2.getZ()) { + location1Fixed.setZ(location2.getZ()); + location2Fixed.setZ(location1.getZ()); + } + + return new org.bukkit.Location[]{location1Fixed, location2Fixed}; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/Materials.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/Materials.java similarity index 99% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/Materials.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/Materials.java index 97ad7e3f..9fb252d4 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/Materials.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/Materials.java @@ -1,13 +1,13 @@ -package me.goodandevil.skyblock.utils.version; - -import java.lang.reflect.Method; -import java.util.HashMap; +package com.songoda.skyblock.utils.version; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; +import java.lang.reflect.Method; +import java.util.HashMap; + public enum Materials { ACACIA_BOAT("BOAT_ACACIA", 0), @@ -1055,6 +1055,8 @@ public enum Materials { ZOMBIE_VILLAGER_SPAWN_EGG("MONSTER_EGG", 0), ZOMBIE_WALL_HEAD("SKULL", 0); + static int newV = -1; + private static HashMap cachedSearch = new HashMap<>(); String old13Mat; String old12Mat; int data; @@ -1076,23 +1078,11 @@ public enum Materials { Materials(String old12Mat, int data) { this(null, old12Mat, data, false); } - + Materials(String old12Mat, int data, boolean is13Plusonly) { this(null, old12Mat, data, is13Plusonly); } - @SuppressWarnings("deprecation") - public ItemStack parseItem() { - Material mat = parseMaterial(); - if (isNewVersion()) { - return new ItemStack(mat); - } - if (mat == null) return null; - return new ItemStack(mat, 1, (byte) data); - } - - static int newV = -1; - public static boolean isNewVersion() { if (newV == 0) return false; if (newV == 1) return true; @@ -1104,25 +1094,6 @@ public enum Materials { newV = 0; return false; } - - /** - * Checks if a given Material is available for this server version - * - * @return True if the Material exists - */ - public boolean isAvailable() { - if (this.isSpawner() && this != Materials.SPAWNER) { - String spawnerType = this.name().replace("SPAWNER_", ""); - for (EntityType entityType : EntityType.values()) - if (entityType.name().equalsIgnoreCase(spawnerType)) - return true; - return false; - } - - return isNewVersion() || !this.is13Plusonly; - } - - private static HashMap cachedSearch = new HashMap<>(); public static Materials requestMaterials(String name, byte data) { if (cachedSearch.containsKey(name.toUpperCase() + "," + data)) @@ -1167,44 +1138,10 @@ public enum Materials { return pmat; } - public boolean isSpawner() { - return this.name().startsWith("SPAWNER"); - } - public static Materials getSpawner(EntityType spawnerType) { return fromString("SPAWNER_" + spawnerType.name()); } - @SuppressWarnings("deprecation") - public boolean isSameMaterial(ItemStack comp) { - if (isNewVersion()) { - return comp.getType() == this.parseMaterial(); - } - if (comp.getType() == this.parseMaterial() && (int) comp.getData().getData() == (int) this.data) { - return true; - } - Materials xmat = fromMaterial(comp.getType()); - if (isDamageable(xmat)) { - if (this.parseMaterial() == comp.getType()) { - return true; - } - } - return false; - } - - public Materials fromMaterial(Material mat) { - try { - return Materials.valueOf(mat.toString()); - } catch (IllegalArgumentException e) { - for (Materials xmat : Materials.values()) { - if (xmat.old12Mat.equalsIgnoreCase(mat.toString())) { - return xmat; - } - } - } - return null; - } - public static Materials fromString(String key) { Materials xmat = null; try { @@ -1229,6 +1166,65 @@ public enum Materials { } } + @SuppressWarnings("deprecation") + public ItemStack parseItem() { + Material mat = parseMaterial(); + if (isNewVersion()) { + return new ItemStack(mat); + } + if (mat == null) return null; + return new ItemStack(mat, 1, (byte) data); + } + + /** + * Checks if a given Material is available for this server version + * + * @return True if the Material exists + */ + public boolean isAvailable() { + if (this.isSpawner() && this != Materials.SPAWNER) { + String spawnerType = this.name().replace("SPAWNER_", ""); + for (EntityType entityType : EntityType.values()) + if (entityType.name().equalsIgnoreCase(spawnerType)) + return true; + return false; + } + + return isNewVersion() || !this.is13Plusonly; + } + + public boolean isSpawner() { + return this.name().startsWith("SPAWNER"); + } + + @SuppressWarnings("deprecation") + public boolean isSameMaterial(ItemStack comp) { + if (isNewVersion()) { + return comp.getType() == this.parseMaterial(); + } + if (comp.getType() == this.parseMaterial() && (int) comp.getData().getData() == this.data) { + return true; + } + Materials xmat = fromMaterial(comp.getType()); + if (isDamageable(xmat)) { + return this.parseMaterial() == comp.getType(); + } + return false; + } + + public Materials fromMaterial(Material mat) { + try { + return Materials.valueOf(mat.toString()); + } catch (IllegalArgumentException e) { + for (Materials xmat : Materials.values()) { + if (xmat.old12Mat.equalsIgnoreCase(mat.toString())) { + return xmat; + } + } + } + return null; + } + public boolean isDamageable(Materials type) { String[] split = type.toString().split("_"); int length = split.length; @@ -1252,7 +1248,7 @@ public enum Materials { return false; } } - + public Material parseMaterial() { if (this.cachedMaterial != null || this.isMaterialParsed) return this.cachedMaterial; @@ -1283,8 +1279,8 @@ public enum Materials { public Material getPostMaterial() { try { - Method getUnsafe = Bukkit.class.getMethod("getUnsafe", new Class[0]); - Object unsafe = getUnsafe.invoke(Bukkit.class, new Object[0]); + Method getUnsafe = Bukkit.class.getMethod("getUnsafe"); + Object unsafe = getUnsafe.invoke(Bukkit.class); Method fromLegacy = unsafe.getClass().getMethod("fromLegacy", Material.class); if (fromLegacy != null) { @@ -1298,8 +1294,8 @@ public enum Materials { public ItemStack getPostItem() { try { - Method getUnsafe = Bukkit.class.getMethod("getUnsafe", new Class[0]); - Object unsafe = getUnsafe.invoke(Bukkit.class, new Object[0]); + Method getUnsafe = Bukkit.class.getMethod("getUnsafe"); + Object unsafe = getUnsafe.invoke(Bukkit.class); Method fromLegacy = unsafe.getClass().getMethod("fromLegacy", Material.class); if (fromLegacy != null) { diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/NMSUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/NMSUtil.java new file mode 100644 index 00000000..8d886c21 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/NMSUtil.java @@ -0,0 +1,100 @@ +package com.songoda.skyblock.utils.version; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.lang.reflect.Field; + +public class NMSUtil { + + public static String getVersion() { + String name = Bukkit.getServer().getClass().getPackage().getName(); + return name.substring(name.lastIndexOf('.') + 1) + "."; + } + + public static int getVersionNumber() { + String name = getVersion().substring(3); + return Integer.valueOf(name.substring(0, name.length() - 4)); + } + + public static int getVersionReleaseNumber() { + String NMSVersion = getVersion(); + return Integer.valueOf(NMSVersion.substring(NMSVersion.length() - 2).replace(".", "")); + } + + public static Class getNMSClass(String className) { + try { + String fullName = "net.minecraft.server." + getVersion() + className; + Class clazz = Class.forName(fullName); + return clazz; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static Class getCraftClass(String className) { + try { + String fullName = "org.bukkit.craftbukkit." + getVersion() + className; + Class clazz = Class.forName(fullName); + return clazz; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static Field getField(Class clazz, String name, boolean declared) { + try { + Field field; + + if (declared) { + field = clazz.getDeclaredField(name); + } else { + field = clazz.getField(name); + } + + field.setAccessible(true); + return field; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static Object getFieldObject(Object object, Field field) { + try { + return field.get(object); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static void setField(Object object, String fieldName, Object fieldValue, boolean declared) { + try { + Field field; + + if (declared) { + field = object.getClass().getDeclaredField(fieldName); + } else { + field = object.getClass().getField(fieldName); + } + + field.setAccessible(true); + field.set(object, fieldValue); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void sendPacket(Player player, Object packet) { + try { + Object handle = player.getClass().getMethod("getHandle").invoke(player); + Object playerConnection = handle.getClass().getField("playerConnection").get(handle); + playerConnection.getClass().getMethod("sendPacket", getNMSClass("Packet")).invoke(playerConnection, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/SBiome.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/SBiome.java similarity index 95% rename from FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/SBiome.java rename to FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/SBiome.java index dfc92cc4..9b748ffe 100644 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/SBiome.java +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/SBiome.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.utils.version; +package com.songoda.skyblock.utils.version; import org.apache.commons.lang3.text.WordUtils; import org.bukkit.Material; @@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack; * A Biome wrapper for supporting Biomes in 1.8-1.13+ */ public enum SBiome { - + BADLANDS(true, Materials.DEAD_BUSH), COLD_OCEAN(true, Materials.ICE), DARK_FOREST("ROOFED_FOREST", Materials.DARK_OAK_SAPLING), @@ -28,13 +28,13 @@ public enum SBiome { THE_END(true, Materials.END_STONE), THE_VOID("SKY", Materials.OBSIDIAN), WARM_OCEAN(true, Materials.TROPICAL_FISH); - + private static boolean isPostVersion = NMSUtil.getVersionNumber() >= 13; - + private String legacyName; private boolean isPost13; private Materials guiIcon; - + SBiome(Materials guiIcon) { this(null, false, guiIcon); } @@ -42,64 +42,20 @@ public enum SBiome { SBiome(String legacyName, Materials guiIcon) { this(legacyName, false, guiIcon); } - + SBiome(boolean isPost13, Materials guiIcon) { this(null, isPost13, guiIcon); } - + SBiome(String legacyName, boolean is13only, Materials guiIcon) { this.legacyName = legacyName; this.isPost13 = is13only; this.guiIcon = guiIcon; } - - /** - * Checks if this Biome can be used in the current server version - * - * @return True if the current server version supports this Biome, otherwise false - */ - public boolean isAvailable() { - return !this.isPost13 || isPostVersion; - } - - /** - * Gets an SBiome as it's Bukkit Biome counterpart - * - * @return The Biome this SBiome represents, or null if it is not available in this server version - */ - public Biome getBiome() { - if (!this.isAvailable()) - return null; - if (isPostVersion || this.legacyName == null) - return Biome.valueOf(this.name()); - return Biome.valueOf(this.legacyName); - } - - /** - * Gets the name of the Biome formatted for a Gui - * - * @return The formatted Biome name - */ - public String getFormattedBiomeName() { - if (!this.isAvailable()) - return null; - return WordUtils.capitalizeFully(this.getBiome().name().replaceAll("_", " ")); - } - - /** - * Gets the Gui icon that represents this Biome - * - * @return The Gui icon that represents this Biome - */ - public ItemStack getGuiIcon() { - if (!this.isAvailable()) - return null; - return this.guiIcon.parseItem(); - } - + /** * Gets an SBiome based on its Gui icon - * + * * @return An SBiome with a matching Gui icon */ @SuppressWarnings("deprecation") @@ -110,4 +66,48 @@ public enum SBiome { return null; } + /** + * Checks if this Biome can be used in the current server version + * + * @return True if the current server version supports this Biome, otherwise false + */ + public boolean isAvailable() { + return !this.isPost13 || isPostVersion; + } + + /** + * Gets an SBiome as it's Bukkit Biome counterpart + * + * @return The Biome this SBiome represents, or null if it is not available in this server version + */ + public Biome getBiome() { + if (!this.isAvailable()) + return null; + if (isPostVersion || this.legacyName == null) + return Biome.valueOf(this.name()); + return Biome.valueOf(this.legacyName); + } + + /** + * Gets the name of the Biome formatted for a Gui + * + * @return The formatted Biome name + */ + public String getFormattedBiomeName() { + if (!this.isAvailable()) + return null; + return WordUtils.capitalizeFully(this.getBiome().name().replaceAll("_", " ")); + } + + /** + * Gets the Gui icon that represents this Biome + * + * @return The Gui icon that represents this Biome + */ + public ItemStack getGuiIcon() { + if (!this.isAvailable()) + return null; + return this.guiIcon.parseItem(); + } + } diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/Sounds.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/Sounds.java new file mode 100644 index 00000000..541d0a3f --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/version/Sounds.java @@ -0,0 +1,224 @@ +package com.songoda.skyblock.utils.version; + +import org.bukkit.Sound; + +public enum Sounds { + + AMBIENCE_CAVE("AMBIENCE_CAVE", "AMBIENT_CAVE", "AMBIENT_CAVE"), + AMBIENCE_RAIN("AMBIENCE_RAIN", "WEATHER_RAIN", "WEATHER_RAIN"), + AMBIENCE_THUNDER("AMBIENCE_THUNDER", "ENTITY_LIGHTNING_THUNDER", "ENTITY_LIGHTNING_BOLT_THUNDER"), + ANVIL_BREAK("ANVIL_BREAK", "BLOCK_ANVIL_BREAK", "BLOCK_ANVIL_BREAK"), + ANVIL_LAND("ANVIL_LAND", "BLOCK_ANVIL_LAND", "BLOCK_ANVIL_LAND"), + ANVIL_USE("ANVIL_USE", "BLOCK_ANVIL_USE", "BLOCK_ANVIL_USE"), + ARROW_HIT("ARROW_HIT", "ENTITY_ARROW_HIT", "ENTITY_ARROW_HIT"), + BURP("BURP", "ENTITY_PLAYER_BURP", "ENTITY_PLAYER_BURP"), + CHEST_CLOSE("CHEST_CLOSE", "BLOCK_CHEST_CLOSE", "BLOCK_CHEST_CLOSE"), + CHEST_OPEN("CHEST_OPEN", "BLOCK_CHEST_OPEN", "BLOCK_CHEST_OPEN"), + CLICK("CLICK", "UI_BUTTON_CLICK", "UI_BUTTON_CLICK"), + DOOR_CLOSE("DOOR_CLOSE", "BLOCK_WOODEN_DOOR_CLOSE", "BLOCK_WOODEN_DOOR_CLOSE"), + DOOR_OPEN("DOOR_OPEN", "BLOCK_WOODEN_DOOR_OPEN", "BLOCK_WOODEN_DOOR_OPEN"), + DRINK("DRINK", "ENTITY_GENERIC_DRINK", "ENTITY_GENERIC_DRINK"), + EAT("EAT", "ENTITY_GENERIC_EAT", "ENTITY_GENERIC_EAT"), + EXPLODE("EXPLODE", "ENTITY_GENERIC_EXPLODE", "ENTITY_GENERIC_EXPLODE"), + FALL_BIG("FALL_BIG", "ENTITY_GENERIC_BIG_FALL", "ENTITY_GENERIC_BIG_FALL"), + FALL_SMALL("FALL_SMALL", "ENTITY_GENERIC_SMALL_FALL", "ENTITY_GENERIC_SMALL_FALL"), + FIRE("FIRE", "BLOCK_FIRE_AMBIENT", "BLOCK_FIRE_AMBIENT"), + FIRE_IGNITE("FIRE_IGNITE", "ITEM_FLINTANDSTEEL_USE", "ITEM_FLINTANDSTEEL_USE"), + FIZZ("FIZZ", "BLOCK_FIRE_EXTINGUISH", "BLOCK_FIRE_EXTINGUISH"), + FUSE("FUSE", "ENTITY_TNT_PRIMED", "ENTITY_TNT_PRIMED"), GLASS("GLASS", "BLOCK_GLASS_BREAK", "BLOCK_GLASS_BREAK"), + HURT_FLESH("HURT_FLESH", "ENTITY_PLAYER_HURT", "ENTITY_PLAYER_HURT"), + ITEM_BREAK("ITEM_BREAK", "ENTITY_ITEM_BREAK", "ENTITY_ITEM_BREAK"), + ITEM_PICKUP("ITEM_PICKUP", "ENTITY_ITEM_PICKUP", "ENTITY_ITEM_PICKUP"), + LAVA("LAVA", "BLOCK_LAVA_AMBIENT", "BLOCK_LAVA_AMBIENT"), LAVA_POP("LAVA_POP", "BLOCK_LAVA_POP", "BLOCK_LAVA_POP"), + LEVEL_UP("LEVEL_UP", "ENTITY_PLAYER_LEVELUP", "ENTITY_PLAYER_LEVELUP"), + MINECART_BASE("MINECART_BASE", "ENTITY_MINECART_RIDING", "ENTITY_MINECART_RIDING"), + MINECART_INSIDE("MINECART_INSIDE", "ENTITY_MINECART_RIDING", "ENTITY_MINECART_RIDING"), + NOTE_BASS("NOTE_BASS", "BLOCK_NOTE_BASS", "BLOCK_NOTE_BLOCK_BASS"), + NOTE_PIANO("NOTE_PIANO", "BLOCK_NOTE_HARP", "BLOCK_NOTE_BLOCK_HARP"), + NOTE_BASS_DRUM("NOTE_BASS_DRUM", "BLOCK_NOTE_BASEDRUM", "BLOCK_NOTE_BLOCK_BASEDRUM"), + NOTE_STICKS("NOTE_STICKS", "BLOCK_NOTE_HAT", "BLOCK_NOTE_BLOCK_HAT"), + NOTE_BASS_GUITAR("NOTE_BASS_GUITAR", "BLOCK_NOTE_BASS", "BLOCK_NOTE_BLOCK_BASS"), + NOTE_SNARE_DRUM("NOTE_SNARE_DRUM", "BLOCK_NOTE_SNARE", "BLOCK_NOTE_BLOCK_SNARE"), + NOTE_PLING("NOTE_PLING", "BLOCK_NOTE_PLING", "BLOCK_NOTE_BLOCK_PLING"), + ORB_PICKUP("ORB_PICKUP", "ENTITY_EXPERIENCE_ORB_PICKUP", "ENTITY_EXPERIENCE_ORB_PICKUP"), + PISTON_EXTEND("PISTON_EXTEND", "BLOCK_PISTON_EXTEND", "BLOCK_PISTON_EXTEND"), + PISTON_RETRACT("PISTON_RETRACT", "BLOCK_PISTON_CONTRACT", "BLOCK_PISTON_CONTRACT"), + PORTAL("PORTAL", "BLOCK_PORTAL_AMBIENT", "BLOCK_PORTAL_AMBIENT"), + PORTAL_TRAVEL("PORTAL_TRAVEL", "BLOCK_PORTAL_TRAVEL", "BLOCK_PORTAL_TRAVEL"), + PORTAL_TRIGGER("PORTAL_TRIGGER", "BLOCK_PORTAL_TRIGGER", "BLOCK_PORTAL_TRIGGER"), + SHOOT_ARROW("SHOOT_ARROW", "ENTITY_ARROW_SHOOT", "ENTITY_ARROW_SHOOT"), + SPLASH("SPLASH", "ENTITY_GENERIC_SPLASH", "ENTITY_GENERIC_SPLASH"), + SPLASH2("SPLASH2", "ENTITY_BOBBER_SPLASH", "ENTITY_FISHING_BOBBER_SPLASH"), + STEP_GRASS("STEP_GRASS", "BLOCK_GRASS_STEP", "BLOCK_GRASS_STEP"), + STEP_GRAVEL("STEP_GRAVEL", "BLOCK_GRAVEL_STEP", "BLOCK_GRAVEL_STEP"), + STEP_LADDER("STEP_LADDER", "BLOCK_LADDER_STEP", "BLOCK_LADDER_STEP"), + STEP_SAND("STEP_SAND", "BLOCK_SAND_STEP", "BLOCK_SAND_STEP"), + STEP_SNOW("STEP_SNOW", "BLOCK_SNOW_STEP", "BLOCK_SNOW_STEP"), + STEP_STONE("STEP_STONE", "BLOCK_STONE_STEP", "BLOCK_STONE_STEP"), + STEP_WOOD("STEP_WOOD", "BLOCK_WOOD_STEP", "BLOCK_WOOD_STEP"), + STEP_WOOL("STEP_WOOL", "BLOCK_CLOTH_STEP", "BLOCK_WOOL_STEP"), + SWIM("SWIM", "ENTITY_GENERIC_SWIM", "ENTITY_GENERIC_SWIM"), + WATER("WATER", "BLOCK_WATER_AMBIENT", "BLOCK_WATER_AMBIENT"), + WOOD_CLICK("WOOD_CLICK", "BLOCK_WOOD_BUTTON_CLICK_ON", "BLOCK_WOODEN_BUTTON_CLICK_ON"), + BAT_DEATH("BAT_DEATH", "ENTITY_BAT_DEATH", "ENTITY_BAT_DEATH"), + BAT_HURT("BAT_HURT", "ENTITY_BAT_HURT", "ENTITY_BAT_HURT"), + BAT_IDLE("BAT_IDLE", "ENTITY_BAT_AMBIENT", "ENTITY_BAT_AMBIENT"), + BAT_LOOP("BAT_LOOP", "ENTITY_BAT_LOOP", "ENTITY_BAT_LOOP"), + BAT_TAKEOFF("BAT_TAKEOFF", "ENTITY_BAT_TAKEOFF", "ENTITY_BAT_TAKEOFF"), + BLAZE_BREATH("BLAZE_BREATH", "ENTITY_BLAZE_AMBIENT", "ENTITY_BLAZE_AMBIENT"), + BLAZE_DEATH("BLAZE_DEATH", "ENTITY_BLAZE_DEATH", "ENTITY_BLAZE_DEATH"), + BLAZE_HIT("BLAZE_HIT", "ENTITY_BLAZE_HURT", "ENTITY_BLAZE_HURT"), + CAT_HISS("CAT_HISS", "ENTITY_CAT_HISS", "ENTITY_CAT_HISS"), + CAT_HIT("CAT_HIT", "ENTITY_CAT_HURT", "ENTITY_CAT_HURT"), + CAT_MEOW("CAT_MEOW", "ENTITY_CAT_AMBIENT", "ENTITY_CAT_AMBIENT"), + CAT_PURR("CAT_PURR", "ENTITY_CAT_PURR", "ENTITY_CAT_PURR"), + CAT_PURREOW("CAT_PURREOW", "ENTITY_CAT_PURREOW", "ENTITY_CAT_PURREOW"), + CHICKEN_IDLE("CHICKEN_IDLE", "ENTITY_CHICKEN_AMBIENT", "ENTITY_CHICKEN_AMBIENT"), + CHICKEN_HURT("CHICKEN_HURT", "ENTITY_CHICKEN_HURT", "ENTITY_CHICKEN_HURT"), + CHICKEN_EGG_POP("CHICKEN_EGG_POP", "ENTITY_CHICKEN_EGG", "ENTITY_CHICKEN_EGG"), + CHICKEN_WALK("CHICKEN_WALK", "ENTITY_CHICKEN_STEP", "ENTITY_CHICKEN_STEP"), + COW_IDLE("COW_IDLE", "ENTITY_COW_AMBIENT", "ENTITY_COW_AMBIENT"), + COW_HURT("COW_HURT", "ENTITY_COW_HURT", "ENTITY_COW_HURT"), + COW_WALK("COW_WALK", "ENTITY_COW_STEP", "ENTITY_COW_STEP"), + CREEPER_HISS("CREEPER_HISS", "ENTITY_CREEPER_PRIMED", "ENTITY_CREEPER_PRIMED"), + CREEPER_DEATH("CREEPER_DEATH", "ENTITY_CREEPER_DEATH", "ENTITY_CREEPER_DEATH"), + ENDERDRAGON_DEATH("ENDERDRAGON_DEATH", "ENTITY_ENDERDRAGON_DEATH", "ENTITY_ENDER_DRAGON_DEATH"), + ENDERDRAGON_GROWL("ENDERDRAGON_GROWL", "ENTITY_ENDERDRAGON_GROWL", "ENTITY_ENDER_DRAGON_GROWL"), + ENDERDRAGON_HIT("ENDERDRAGON_HIT", "ENTITY_ENDERDRAGON_HURT", "ENTITY_ENDER_DRAGON_HURT"), + ENDERDRAGON_WINGS("ENDERDRAGON_WINGS", "ENTITY_ENDERDRAGON_FLAP", "ENTITY_ENDER_DRAGON_FLAP"), + ENDERMAN_DEATH("ENDERMAN_DEATH", "ENTITY_ENDERMEN_DEATH", "ENTITY_ENDERMAN_DEATH"), + ENDERMAN_HIT("ENDERMAN_HIT", "ENTITY_ENDERMEN_HURT", "ENTITY_ENDERMAN_HURT"), + ENDERMAN_IDLE("ENDERMAN_IDLE", "ENTITY_ENDERMEN_AMBIENT", "ENTITY_ENDERMAN_AMBIENT"), + ENDERMAN_TELEPORT("ENDERMAN_TELEPORT", "ENTITY_ENDERMEN_TELEPORT", "ENTITY_ENDERMAN_TELEPORT"), + ENDERMAN_SCREAM("ENDERMAN_SCREAM", "ENTITY_ENDERMEN_SCREAM", "ENTITY_ENDERMAN_SCREAM"), + ENDERMAN_STARE("ENDERMAN_STARE", "ENTITY_ENDERMEN_STARE", "ENTITY_ENDERMAN_STARE"), + GHAST_SCREAM("GHAST_SCREAM", "ENTITY_GHAST_SCREAM", "ENTITY_GHAST_SCREAM"), + GHAST_SCREAM2("GHAST_SCREAM2", "ENTITY_GHAST_HURT", "ENTITY_GHAST_HURT"), + GHAST_CHARGE("GHAST_CHARGE", "ENTITY_GHAST_WARN", "ENTITY_GHAST_WARN"), + GHAST_DEATH("GHAST_DEATH", "ENTITY_GHAST_DEATH", "ENTITY_GHAST_DEATH"), + GHAST_FIREBALL("GHAST_FIREBALL", "ENTITY_GHAST_SHOOT", "ENTITY_GHAST_SHOOT"), + GHAST_MOAN("GHAST_MOAN", "ENTITY_GHAST_AMBIENT", "ENTITY_GHAST_AMBIENT"), + IRONGOLEM_DEATH("IRONGOLEM_DEATH", "ENTITY_IRONGOLEM_DEATH", "ENTITY_IRON_GOLEM_DEATH"), + IRONGOLEM_HIT("IRONGOLEM_HIT", "ENTITY_IRONGOLEM_HURT", "ENTITY_IRON_GOLEM_HURT"), + IRONGOLEM_THROW("IRONGOLEM_THROW", "ENTITY_IRONGOLEM_ATTACK", "ENTITY_IRON_GOLEM_ATTACK"), + IRONGOLEM_WALK("IRONGOLEM_WALK", "ENTITY_IRONGOLEM_STEP", "ENTITY_IRON_GOLEM_STEP"), + MAGMACUBE_WALK("MAGMACUBE_WALK", "ENTITY_MAGMACUBE_SQUISH", "ENTITY_MAGMA_CUBE_SQUISH"), + MAGMACUBE_WALK2("MAGMACUBE_WALK2", "ENTITY_MAGMACUBE_SQUISH", "ENTITY_MAGMA_CUBE_SQUISH"), + MAGMACUBE_JUMP("MAGMACUBE_JUMP", "ENTITY_MAGMACUBE_JUMP", "ENTITY_MAGMA_CUBE_JUMP"), + PIG_IDLE("PIG_IDLE", "ENTITY_PIG_AMBIENT", "ENTITY_PIG_AMBIENT"), + PIG_DEATH("PIG_DEATH", "ENTITY_PIG_DEATH", "ENTITY_PIG_DEATH"), + PIG_WALK("PIG_WALK", "ENTITY_PIG_STEP", "ENTITY_PIG_STEP"), + SHEEP_IDLE("SHEEP_IDLE", "ENTITY_SHEEP_AMBIENT", "ENTITY_SHEEP_AMBIENT"), + SHEEP_SHEAR("SHEEP_SHEAR", "ENTITY_SHEEP_SHEAR", "ENTITY_SHEEP_SHEAR"), + SHEEP_WALK("SHEEP_WALK", "ENTITY_SHEEP_STEP", "ENTITY_SHEEP_STEP"), + SILVERFISH_HIT("SILVERFISH_HIT", "ENTITY_SILVERFISH_HURT", "ENTITY_SILVERFISH_HURT"), + SILVERFISH_KILL("SILVERFISH_KILL", "ENTITY_SILVERFISH_DEATH", "ENTITY_SILVERFISH_DEATH"), + SILVERFISH_IDLE("SILVERFISH_IDLE", "ENTITY_SILVERFISH_AMBIENT", "ENTITY_SILVERFISH_AMBIENT"), + SILVERFISH_WALK("SILVERFISH_WALK", "ENTITY_SILVERFISH_STEP", "ENTITY_SILVERFISH_STEP"), + SKELETON_IDLE("SKELETON_IDLE", "ENTITY_SKELETON_AMBIENT", "ENTITY_SKELETON_AMBIENT"), + SKELETON_DEATH("SKELETON_DEATH", "ENTITY_SKELETON_DEATH", "ENTITY_SKELETON_DEATH"), + SKELETON_HURT("SKELETON_HURT", "ENTITY_SKELETON_HURT", "ENTITY_SKELETON_HURT"), + SKELETON_WALK("SKELETON_WALK", "ENTITY_SKELETON_STEP", "ENTITY_SKELETON_STEP"), + SLIME_ATTACK("SLIME_ATTACK", "ENTITY_SLIME_ATTACK", "ENTITY_SLIME_ATTACK"), + SLIME_WALK("SLIME_WALK", "ENTITY_SLIME_JUMP", "ENTITY_SLIME_JUMP"), + SLIME_WALK2("SLIME_WALK2", "ENTITY_SLIME_SQUISH", "ENTITY_SLIME_SQUISH"), + SPIDER_IDLE("SPIDER_IDLE", "ENTITY_SPIDER_AMBIENT", "ENTITY_SPIDER_AMBIENT"), + SPIDER_DEATH("SPIDER_DEATH", "ENTITY_SPIDER_DEATH", "ENTITY_SPIDER_DEATH"), + SPIDER_WALK("SPIDER_WALK", "ENTITY_SPIDER_STEP", "ENTITY_SPIDER_STEP"), + WITHER_DEATH("WITHER_DEATH", "ENTITY_WITHER_DEATH", "ENTITY_WITHER_DEATH"), + WITHER_HURT("WITHER_HURT", "ENTITY_WITHER_HURT", "ENTITY_WITHER_HURT"), + WITHER_IDLE("WITHER_IDLE", "ENTITY_WITHER_AMBIENT", "ENTITY_WITHER_AMBIENT"), + WITHER_SHOOT("WITHER_SHOOT", "ENTITY_WITHER_SHOOT", "ENTITY_WITHER_SHOOT"), + WITHER_SPAWN("WITHER_SPAWN", "ENTITY_WITHER_SPAWN", "ENTITY_WITHER_SPAWN"), + WOLF_BARK("WOLF_BARK", "ENTITY_WOLF_AMBIENT", "ENTITY_WOLF_AMBIENT"), + WOLF_DEATH("WOLF_DEATH", "ENTITY_WOLF_DEATH", "ENTITY_WOLF_DEATH"), + WOLF_GROWL("WOLF_GROWL", "ENTITY_WOLF_GROWL", "ENTITY_WOLF_GROWL"), + WOLF_HOWL("WOLF_HOWL", "ENTITY_WOLF_HOWL", "ENTITY_WOLF_HOWL"), + WOLF_HURT("WOLF_HURT", "ENTITY_WOLF_HURT", "ENTITY_WOLF_HURT"), + WOLF_PANT("WOLF_PANT", "ENTITY_WOLF_PANT", "ENTITY_WOLF_PANT"), + WOLF_SHAKE("WOLF_SHAKE", "ENTITY_WOLF_SHAKE", "ENTITY_WOLF_SHAKE"), + WOLF_WALK("WOLF_WALK", "ENTITY_WOLF_STEP", "ENTITY_WOLF_STEP"), + WOLF_WHINE("WOLF_WHINE", "ENTITY_WOLF_WHINE", "ENTITY_WOLF_WHINE"), + ZOMBIE_METAL("ZOMBIE_METAL", "ENTITY_ZOMBIE_ATTACK_IRON_DOOR", "ENTITY_ZOMBIE_ATTACK_IRON_DOOR"), + ZOMBIE_WOOD("ZOMBIE_WOOD", "ENTITY_ZOMBIE_ATTACK_DOOR_WOOD", "ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR"), + ZOMBIE_WOODBREAK("ZOMBIE_WOODBREAK", "ENTITY_ZOMBIE_BREAK_DOOR_WOOD", "ENTITY_ZOMBIE_BREAK_WOODEN_DOOR"), + ZOMBIE_IDLE("ZOMBIE_IDLE", "ENTITY_ZOMBIE_AMBIENT", "ENTITY_ZOMBIE_AMBIENT"), + ZOMBIE_DEATH("ZOMBIE_DEATH", "ENTITY_ZOMBIE_DEATH", "ENTITY_ZOMBIE_DEATH"), + ZOMBIE_HURT("ZOMBIE_HURT", "ENTITY_ZOMBIE_HURT", "ENTITY_ZOMBIE_HURT"), + ZOMBIE_INFECT("ZOMBIE_INFECT", "ENTITY_ZOMBIE_INFECT", "ENTITY_ZOMBIE_INFECT"), + ZOMBIE_UNFECT("ZOMBIE_UNFECT", "ENTITY_ZOMBIE_VILLAGER_CONVERTED", "ENTITY_ZOMBIE_VILLAGER_CONVERTED"), + ZOMBIE_REMEDY("ZOMBIE_REMEDY", "ENTITY_ZOMBIE_VILLAGER_CURE", "ENTITY_ZOMBIE_VILLAGER_CURE"), + ZOMBIE_WALK("ZOMBIE_WALK", "ENTITY_ZOMBIE_STEP", "ENTITY_ZOMBIE_STEP"), + ZOMBIE_PIG_IDLE("ZOMBIE_PIG_IDLE", "ENTITY_ZOMBIE_PIG_AMBIENT", "ENTITY_ZOMBIE_PIGMAN_AMBIENT"), + ZOMBIE_PIG_ANGRY("ZOMBIE_PIG_ANGRY", "ENTITY_ZOMBIE_PIG_ANGRY", "ENTITY_ZOMBIE_PIGMAN_ANGRY"), + ZOMBIE_PIG_DEATH("ZOMBIE_PIG_DEATH", "ENTITY_ZOMBIE_PIG_DEATH", "ENTITY_ZOMBIE_PIGMAN_DEATH"), + ZOMBIE_PIG_HURT("ZOMBIE_PIG_HURT", "ENTITY_ZOMBIE_PIG_HURT", "ENTITY_ZOMBIE_PIGMAN_HURT"), + DIG_WOOL("DIG_WOOL", "BLOCK_CLOTH_BREAK", "BLOCK_WOOL_BREAK"), + DIG_GRASS("DIG_GRASS", "BLOCK_GRASS_BREAK", "BLOCK_GRASS_BREAK"), + DIG_GRAVEL("DIG_GRAVEL", "BLOCK_GRAVEL_BREAK", "BLOCK_GRAVEL_BREAK"), + DIG_SAND("DIG_SAND", "BLOCK_SAND_BREAK", "BLOCK_SAND_BREAK"), + DIG_SNOW("DIG_SNOW", "BLOCK_SNOW_BREAK", "BLOCK_SNOW_BREAK"), + DIG_STONE("DIG_STONE", "BLOCK_STONE_BREAK", "BLOCK_STONE_BREAK"), + DIG_WOOD("DIG_WOOD", "BLOCK_WOOD_BREAK", "BLOCK_WOOD_BREAK"), + FIREWORK_BLAST("FIREWORK_BLAST", "ENTITY_FIREWORK_BLAST", "ENTITY_FIREWORK_ROCKET_BLAST"), + FIREWORK_BLAST2("FIREWORK_BLAST2", "ENTITY_FIREWORK_BLAST_FAR", "ENTITY_FIREWORK_ROCKET_BLAST_FAR"), + FIREWORK_LARGE_BLAST("FIREWORK_LARGE_BLAST", "ENTITY_FIREWORK_LARGE_BLAST", "ENTITY_FIREWORK_ROCKET_LARGE_BLAST"), + FIREWORK_LARGE_BLAST2("FIREWORK_LARGE_BLAST2", "ENTITY_FIREWORK_LARGE_BLAST_FAR", + "ENTITY_FIREWORK_ROCKET_LARGE_BLAST_FAR"), + FIREWORK_TWINKLE("FIREWORK_TWINKLE", "ENTITY_FIREWORK_TWINKLE", "ENTITY_FIREWORK_ROCKET_TWINKLE"), + FIREWORK_TWINKLE2("FIREWORK_TWINKLE2", "ENTITY_FIREWORK_TWINKLE_FAR", "ENTITY_FIREWORK_ROCKET_TWINKLE_FAR"), + FIREWORK_LAUNCH("FIREWORK_LAUNCH", "ENTITY_FIREWORK_LAUNCH", "ENTITY_FIREWORK_ROCKET_LAUNCH"), + SUCCESSFUL_HIT("SUCCESSFUL_HIT", "ENTITY_PLAYER_ATTACK_STRONG", "ENTITY_PLAYER_ATTACK_STRONG"), + HORSE_ANGRY("HORSE_ANGRY", "ENTITY_HORSE_ANGRY", "ENTITY_HORSE_ANGRY"), + HORSE_ARMOR("HORSE_ARMOR", "ENTITY_HORSE_ARMOR", "ENTITY_HORSE_ARMOR"), + HORSE_BREATHE("HORSE_BREATHE", "ENTITY_HORSE_BREATHE", "ENTITY_HORSE_BREATHE"), + HORSE_DEATH("HORSE_DEATH", "ENTITY_HORSE_DEATH", "ENTITY_HORSE_DEATH"), + HORSE_GALLOP("HORSE_GALLOP", "ENTITY_HORSE_GALLOP", "ENTITY_HORSE_GALLOP"), + HORSE_HIT("HORSE_HIT", "ENTITY_HORSE_HURT", "ENTITY_HORSE_HURT"), + HORSE_IDLE("HORSE_IDLE", "ENTITY_HORSE_AMBIENT", "ENTITY_HORSE_AMBIENT"), + HORSE_JUMP("HORSE_JUMP", "ENTITY_HORSE_JUMP", "ENTITY_HORSE_JUMP"), + HORSE_LAND("HORSE_LAND", "ENTITY_HORSE_LAND", "ENTITY_HORSE_LAND"), + HORSE_SADDLE("HORSE_SADDLE", "ENTITY_HORSE_SADDLE", "ENTITY_HORSE_SADDLE"), + HORSE_SOFT("HORSE_SOFT", "ENTITY_HORSE_STEP", "ENTITY_HORSE_STEP"), + HORSE_WOOD("HORSE_WOOD", "ENTITY_HORSE_STEP_WOOD", "ENTITY_HORSE_STEP_WOOD"), + DONKEY_ANGRY("DONKEY_ANGRY", "ENTITY_DONKEY_ANGRY", "ENTITY_DONKEY_ANGRY"), + DONKEY_DEATH("DONKEY_DEATH", "ENTITY_DONKEY_DEATH", "ENTITY_DONKEY_DEATH"), + DONKEY_HIT("DONKEY_HIT", "ENTITY_DONKEY_HURT", "ENTITY_DONKEY_HURT"), + DONKEY_IDLE("DONKEY_IDLE", "ENTITY_DONKEY_AMBIENT", "ENTITY_DONKEY_AMBIENT"), + HORSE_SKELETON_DEATH("HORSE_SKELETON_DEATH", "ENTITY_SKELETON_HORSE_DEATH", "ENTITY_SKELETON_HORSE_DEATH"), + HORSE_SKELETON_HIT("HORSE_SKELETON_HIT", "ENTITY_SKELETON_HORSE_HURT", "ENTITY_SKELETON_HORSE_HURT"), + HORSE_SKELETON_IDLE("HORSE_SKELETON_IDLE", "ENTITY_SKELETON_HORSE_AMBIENT", "ENTITY_SKELETON_HORSE_AMBIENT"), + HORSE_ZOMBIE_DEATH("HORSE_ZOMBIE_DEATH", "ENTITY_ZOMBIE_HORSE_DEATH", "ENTITY_ZOMBIE_HORSE_DEATH"), + HORSE_ZOMBIE_HIT("HORSE_ZOMBIE_HIT", "ENTITY_ZOMBIE_HORSE_HURT", "ENTITY_ZOMBIE_HORSE_HURT"), + HORSE_ZOMBIE_IDLE("HORSE_ZOMBIE_IDLE", "ENTITY_ZOMBIE_HORSE_AMBIENT", "ENTITY_ZOMBIE_HORSE_AMBIENT"), + VILLAGER_DEATH("VILLAGER_DEATH", "ENTITY_VILLAGER_DEATH", "ENTITY_VILLAGER_DEATH"), + VILLAGER_HAGGLE("VILLAGER_HAGGLE", "ENTITY_VILLAGER_TRADING", "ENTITY_VILLAGER_TRADE"), + VILLAGER_HIT("VILLAGER_HIT", "ENTITY_VILLAGER_HURT", "ENTITY_VILLAGER_HURT"), + VILLAGER_IDLE("VILLAGER_IDLE", "ENTITY_VILLAGER_AMBIENT", "ENTITY_VILLAGER_AMBIENT"), + VILLAGER_NO("VILLAGER_NO", "ENTITY_VILLAGER_NO", "ENTITY_VILLAGER_NO"), + VILLAGER_YES("VILLAGER_YES", "ENTITY_VILLAGER_YES", "ENTITY_VILLAGER_YES"); + + private String v18sound; + private String v19sound; + private String v113sound; + + Sounds(String v18sound, String v19sound, String v113sound) { + this.v18sound = v18sound; + this.v19sound = v19sound; + this.v113sound = v113sound; + } + + public Sound bukkitSound() { + int NMSVersion = NMSUtil.getVersionNumber(); + + if (NMSVersion < 9) { + return Sound.valueOf(v18sound); + } else if (NMSVersion < 13) { + return Sound.valueOf(v19sound); + } else if (NMSVersion > 12) { + return Sound.valueOf(v113sound); + } + + return null; + } +} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/LocationUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/LocationUtil.java new file mode 100644 index 00000000..3f52cebb --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/LocationUtil.java @@ -0,0 +1,277 @@ +package com.songoda.skyblock.utils.world; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandEnvironment; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.utils.math.VectorUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.world.block.BlockDegreesType; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.*; +import org.bukkit.World.Environment; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.logging.Level; + +public final class LocationUtil { + + public static boolean isLocationLocation(Location location1, Location location2) { + return location1.getBlockX() == location2.getBlockX() && location1.getBlockY() == location2.getBlockY() + && location1.getBlockZ() == location2.getBlockZ(); + } + + public static boolean isLocationAffectingIslandSpawn(Location location, Island island, IslandWorld world) { + return isLocationAffectingLocation(location, island.getLocation(world, IslandEnvironment.Main)) + || isLocationAffectingLocation(location, island.getLocation(world, IslandEnvironment.Visitor)); + } + + private static boolean isLocationAffectingLocation(Location location1, Location location2) { + Location headHeight = location2.clone().add(0, 1, 0); + Location feetHeight = location2.clone(); + Location groundHeight = location2.clone().add(0, -1, 0); + + return isLocationLocation(headHeight, location1) + || isLocationLocation(feetHeight, location1) + || isLocationLocation(groundHeight, location1); + } + + public static boolean isLocationAtLocationRadius(Location location1, Location location2, double radius) { + if (location1 == null || location2 == null || location1.getWorld() == null || location2.getWorld() == null + || !location1.getWorld().getName().equals(location2.getWorld().getName())) { + return false; + } + + double x = Math.abs(location1.getX() - location2.getX()); + double z = Math.abs(location1.getZ() - location2.getZ()); + + return x <= radius && z <= radius; + } + + public static List getLocations(Location minLocation, Location maxLocation) { + List locations = new ArrayList<>(); + + int MinX = Math.min(maxLocation.getBlockX(), minLocation.getBlockX()); + int MinY = Math.min(maxLocation.getBlockY(), minLocation.getBlockY()); + int MinZ = Math.min(maxLocation.getBlockZ(), minLocation.getBlockZ()); + + int MaxX = Math.max(maxLocation.getBlockX(), minLocation.getBlockX()); + int MaxY = Math.max(maxLocation.getBlockY(), minLocation.getBlockY()); + int MaxZ = Math.max(maxLocation.getBlockZ(), minLocation.getBlockZ()); + + for (int x = MinX; x <= MaxX; x++) { + for (int y = MinY; y <= MaxY; y++) { + for (int z = MinZ; z <= MaxZ; z++) { + locations.add(new Location(minLocation.getWorld(), x, y, z)); + } + } + } + + return locations; + } + + public static boolean isInsideArea(Location targetLocation, Location minLocation, Location maxLocation) { + int MinX = Math.min(maxLocation.getBlockX(), minLocation.getBlockX()); + int MinY = Math.min(maxLocation.getBlockY(), minLocation.getBlockY()); + int MinZ = Math.min(maxLocation.getBlockZ(), minLocation.getBlockZ()); + + int MaxX = Math.max(maxLocation.getBlockX(), minLocation.getBlockX()); + int MaxY = Math.max(maxLocation.getBlockY(), minLocation.getBlockY()); + int MaxZ = Math.max(maxLocation.getBlockZ(), minLocation.getBlockZ()); + + return MinX < targetLocation.getX() && MaxX > targetLocation.getX() && MinY < targetLocation.getY() + && MaxY > targetLocation.getY() && MinZ < targetLocation.getZ() && MaxZ > targetLocation.getZ(); + } + + public static Location getHighestBlock(Location location) { + for (int y = location.getWorld().getMaxHeight(); y > 0; y--) { + location.setY(y); + + Block block = location.getBlock(); + + if (!(block.getType() == Material.AIR)) { + return location; + } + } + + return location; + } + + public static int getYSurface(Location location, boolean isNether) { + int maxY = 0; + boolean followY = false; + + for (int y = 0; y < location.getWorld().getMaxHeight(); y++) { + Location loc = new Location(location.getWorld(), location.getBlockX(), y, location.getBlockZ()); + Block block = loc.getBlock().getRelative(BlockFace.UP); + + if (isNether) { + if (y < 127 && (block.getType() == Material.LAVA + || block.getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() + || block.getType() == Material.AIR)) { + maxY = y; + break; + } + } else { + if (block.getType() == Materials.OAK_LEAVES.parseMaterial() + || block.getType() == Materials.ACACIA_LEAVES.parseMaterial()) { + break; + } + + if (block.getType() == Material.AIR + || block.getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() + || block.getType() == Material.WATER + || block.getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() + || block.getType() == Material.LAVA) { + if (!followY) { + maxY = y; + followY = true; + } + } else { + followY = false; + maxY = 0; + } + } + } + + return maxY; + } + + public static double rotateYaw(double a, double b) throws Exception { + if (a < -180 || a > 180) { + throw new Exception(); + } + + double c = a + b; + return (c > 180) ? -(c - 180) : 180 - c; + } + + public static double rotatePitch(double a, double b) throws Exception { + if (a < -90 || a > 90) { + throw new Exception(); + } + + double c = a + b; + return (c > 90) ? -(c - 90) : 90 - c; + } + + public static Location rotateLocation(Location location, BlockDegreesType blockTypeDegrees) { + if (blockTypeDegrees == BlockDegreesType.ROTATE_90) { + return VectorUtil.rotateAroundAxisY(location.toVector(), 90).toLocation(location.getWorld()); + } else if (blockTypeDegrees == BlockDegreesType.ROTATE_180) { + return VectorUtil.rotateAroundAxisY(location.toVector(), 180).toLocation(location.getWorld()); + } else if (blockTypeDegrees == BlockDegreesType.ROTATE_270) { + return VectorUtil.rotateAroundAxisY(location.toVector(), 270).toLocation(location.getWorld()); + } else { + return location; + } + } + + public static void teleportPlayerToSpawn(Player player) { + SkyBlock skyblock = SkyBlock.getInstance(); + + IslandManager islandManager = skyblock.getIslandManager(); + WorldManager worldManager = skyblock.getWorldManager(); + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); + + if (config.getFileConfiguration().getString("Location.Spawn") == null) { + Bukkit.getServer().getLogger().log(Level.WARNING, "SkyBlock | Error: A spawn point hasn't been set."); + } else { + Location spawnLocation = getSpawnLocation(); + + if (spawnLocation == null) { + Bukkit.getServer().getLogger().log(Level.WARNING, + "SkyBlock | Error: The location for the spawn point could not be found."); + + return; + } + + // If the spawn point is at an island, load that island + if (worldManager.isIslandWorld(spawnLocation.getWorld())) { + Island island = islandManager.getIslandAtLocation(spawnLocation); + if (island == null) { + islandManager.loadIslandAtLocation(spawnLocation); + } + } + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> { + player.teleport(spawnLocation); + player.setFallDistance(0.0F); + }); + } + } + + public static Location getSpawnLocation() { + SkyBlock skyblock = SkyBlock.getInstance(); + + FileManager fileManager = skyblock.getFileManager(); + + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); + + if (config.getFileConfiguration().getString("Location.Spawn") != null) { + Location location = fileManager.getLocation(config, "Location.Spawn", true); + + if (location != null && location.getWorld() != null) { + return location; + } + } + + return null; + } + + public static Location getRandomLocation(World world, int xRange, int zRange, boolean loadChunk, + boolean ignoreLiquid) { + Random rnd = new Random(); + + int rndX = rnd.nextInt(xRange); + int rndZ = rnd.nextInt(zRange); + + if (loadChunk) { + Chunk chunk = world.getChunkAt(new Location(world, rndX, 10, rndZ)); + world.loadChunk(chunk); + } + + double rndY = -1; + + if (world.getEnvironment() == Environment.NETHER) { + for (int i = 120; i > 0; i--) { + Location rndLoc = new Location(world, rndX, i, rndZ); + + if (rndLoc.getBlock().getType() != Material.AIR + && rndLoc.clone().add(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.AIR + && rndLoc.clone().add(0.0D, 2.0D, 0.0D).getBlock().getType() == Material.AIR + && rndLoc.clone().add(0.0D, 3.0D, 0.0D).getBlock().getType() == Material.AIR + && rndLoc.clone().add(0.0D, 4.0D, 0.0D).getBlock().getType() == Material.AIR) { + rndY = i; + + break; + } + } + + if (rndY == -1) { + return getRandomLocation(world, xRange, zRange, loadChunk, ignoreLiquid); + } + } else { + rndY = world.getHighestBlockYAt(rndX, rndZ); + } + + Location rndLoc = new Location(world, rndX, rndY, rndZ); + + if (ignoreLiquid && rndLoc.getBlock().isLiquid() || rndLoc.getBlock().getRelative(BlockFace.DOWN).isLiquid()) { + return getRandomLocation(world, xRange, zRange, loadChunk, ignoreLiquid); + } else { + return rndLoc; + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/WorldBorder.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/WorldBorder.java new file mode 100644 index 00000000..0bc33b2d --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/WorldBorder.java @@ -0,0 +1,90 @@ +package com.songoda.skyblock.utils.world; + +import com.songoda.skyblock.utils.version.NMSUtil; +import org.bukkit.Location; +import org.bukkit.entity.Player; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public final class WorldBorder { + + private static Class packetPlayOutWorldBorder, packetPlayOutWorldBorderEnumClass, worldBorderClass, + craftWorldClass; + private static Constructor packetPlayOutWorldBorderConstructor; + + static { + try { + packetPlayOutWorldBorder = NMSUtil.getNMSClass("PacketPlayOutWorldBorder"); + + if (NMSUtil.getVersionNumber() > 10) { + packetPlayOutWorldBorderEnumClass = packetPlayOutWorldBorder.getDeclaredClasses()[0]; + } else { + packetPlayOutWorldBorderEnumClass = packetPlayOutWorldBorder.getDeclaredClasses()[1]; + } + + worldBorderClass = NMSUtil.getNMSClass("WorldBorder"); + craftWorldClass = NMSUtil.getCraftClass("CraftWorld"); + + packetPlayOutWorldBorderConstructor = packetPlayOutWorldBorder.getConstructor(worldBorderClass, + packetPlayOutWorldBorderEnumClass); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void send(Player player, Color color, double size, Location centerLocation) { + try { + if (centerLocation == null || centerLocation.getWorld() == null) + return; + + if (size % 2 == 1) + size++; + + Object worldBorder = worldBorderClass.getConstructor().newInstance(); + + if (NMSUtil.getVersionNumber() < 9) { + Field borderSize = worldBorder.getClass().getDeclaredField("d"); + borderSize.setAccessible(true); + borderSize.set(worldBorder, size); + } else { + Object craftWorld = craftWorldClass.cast(centerLocation.getWorld()); + Method getHandleMethod = craftWorld.getClass().getMethod("getHandle"); + Object worldServer = getHandleMethod.invoke(craftWorld); + NMSUtil.setField(worldBorder, "world", worldServer, false); + } + + Method setCenter = worldBorder.getClass().getMethod("setCenter", double.class, double.class); + setCenter.invoke(worldBorder, centerLocation.getBlockX(), centerLocation.getBlockZ()); + + Method setSize = worldBorder.getClass().getMethod("setSize", double.class); + setSize.invoke(worldBorder, size); + + Method setWarningTime = worldBorder.getClass().getMethod("setWarningTime", int.class); + setWarningTime.invoke(worldBorder, 0); + + Method transitionSizeBetween = worldBorder.getClass().getMethod("transitionSizeBetween", double.class, + double.class, long.class); + + if (color == Color.Green) { + transitionSizeBetween.invoke(worldBorder, size - 0.1D, size, 20000000L); + } else if (color == Color.Red) { + transitionSizeBetween.invoke(worldBorder, size, size - 1.0D, 20000000L); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + Object packet = packetPlayOutWorldBorderConstructor.newInstance(worldBorder, + Enum.valueOf((Class) packetPlayOutWorldBorderEnumClass, "INITIALIZE")); + NMSUtil.sendPacket(player, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public enum Color { + + Blue, Green, Red + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockData.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockData.java new file mode 100644 index 00000000..2210a7b1 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockData.java @@ -0,0 +1,316 @@ +package com.songoda.skyblock.utils.world.block; + +import com.songoda.skyblock.utils.version.Materials; +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.SkullType; +import org.bukkit.block.Biome; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.EntityType; +import org.bukkit.potion.PotionEffectType; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@SuppressWarnings("deprecation") +public class BlockData { + + private String material = Material.AIR.toString(); + private String blockData = ""; + private String biome = Biome.PLAINS.toString(); + private String stateType = BlockStateType.NORMAL.toString(); + private String dataType = BlockDataType.NORMAL.toString(); + private String baseColor = Color.WHITE.toString(); + private String potionEffect = PotionEffectType.SPEED.toString(); + private String command = ""; + private String commandBlockName = ""; + private String entity = EntityType.COW.toString(); + private String exitLocation = ""; + private String flower = Materials.RED_DYE.parseMaterial().toString() + ":0"; + private String playing = Materials.MUSIC_DISC_CHIRP.parseMaterial().toString(); + private String[] signLines = {}; + private String rotateFace = BlockFace.NORTH.toString(); + private String skullOwner = "Notch"; + private String skullType = SkullType.PLAYER.toString(); + private String facing; + + private Map inventory = new HashMap<>(); + + private int version; + private int x = 0; + private int y = 0; + private int z = 0; + private int brewingTime = 0; + private int fuelLevel = 0; + private int delay = 0; + + private byte data = (byte) 0; + + private short burnTime = (short) 0; + private short cookTime = (short) 0; + + private List patterns = new ArrayList<>(); + + private boolean exactTeleport = true; + + public BlockData(String material, byte data, int x, int y, int z, String biome) { + this.material = material; + this.data = data; + + this.x = x; + this.y = y; + this.z = z; + + this.biome = biome; + } + + public String getMaterial() { + return this.material; + } + + public void setMaterial(String material) { + this.material = material; + } + + public String getBlockData() { + return blockData; + } + + public void setBlockData(String blockData) { + this.blockData = blockData; + } + + public String getBiome() { + return this.biome; + } + + public void setBiome(String biome) { + this.biome = biome; + } + + public String getStateType() { + return this.stateType; + } + + public void setStateType(String stateType) { + this.stateType = stateType; + } + + public String getDataType() { + return this.dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public String getBaseColor() { + return this.baseColor; + } + + public void setBaseColor(String baseColor) { + this.baseColor = baseColor; + } + + public String getPotionEffect() { + return this.potionEffect; + } + + public void setPotionEffect(String potionEffect) { + this.potionEffect = potionEffect; + } + + public Map getInventory() { + return this.inventory; + } + + public void addItem(int slot, String is) { + this.inventory.put(slot, is); + } + + public String getCommand() { + return this.command; + } + + public void setCommand(String command) { + this.command = command; + } + + public String getCommandBlockName() { + return this.commandBlockName; + } + + public void setCommandBlockName(String commandBlockName) { + this.commandBlockName = commandBlockName; + } + + public String getEntity() { + return this.entity; + } + + public void setEntity(String entity) { + this.entity = entity; + } + + public String getExitLocation() { + return this.exitLocation; + } + + public void setExitLocation(String exitLocation) { + this.exitLocation = exitLocation; + } + + public String getFlower() { + return this.flower; + } + + public void setFlower(String flower) { + this.flower = flower; + } + + public String getPlaying() { + return this.playing; + } + + public void setPlaying(String playing) { + this.playing = playing; + } + + public String[] getSignLines() { + return this.signLines; + } + + public void setSignLines(String[] signLines) { + this.signLines = signLines; + } + + public String getRotateFace() { + return this.rotateFace; + } + + public void setRotateFace(String rotateFace) { + this.rotateFace = rotateFace; + } + + public String getSkullOwner() { + return this.skullOwner; + } + + public void setSkullOwner(String skullOwner) { + this.skullOwner = skullOwner; + } + + public String getSkullType() { + return this.skullType; + } + + public void setSkullType(String skullType) { + this.skullType = skullType; + } + + public String getFacing() { + return this.facing; + } + + public void setFacing(String facing) { + this.facing = facing; + } + + public int getVersion() { + return version; + } + + public void setVersion(int version) { + this.version = version; + } + + public int getX() { + return this.x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return this.y; + } + + public void setY(int y) { + this.y = y; + } + + public int getZ() { + return this.z; + } + + public void setZ(int z) { + this.z = z; + } + + public int getBrewingTime() { + return this.brewingTime; + } + + public void setBrewingTime(int brewingTime) { + this.brewingTime = brewingTime; + } + + public int getFuelLevel() { + return this.fuelLevel; + } + + public void setFuelLevel(int fuelLevel) { + this.fuelLevel = fuelLevel; + } + + public int getDelay() { + return this.delay; + } + + public void setDelay(int delay) { + this.delay = delay; + } + + public byte getData() { + return this.data; + } + + public void setData(byte data) { + this.data = data; + } + + public short getBurnTime() { + return this.burnTime; + } + + public void setBurnTime(short burnTime) { + this.burnTime = burnTime; + } + + public short getCookTime() { + return this.cookTime; + } + + public void setCookTime(short cookTime) { + this.cookTime = cookTime; + } + + public List getPatterns() { + return patterns; + } + + public void setPatterns(List patterns) { + this.patterns = patterns; + } + + public boolean isExactTeleport() { + return this.exactTeleport; + } + + public void setExactTeleport(boolean exactTeleport) { + this.exactTeleport = exactTeleport; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockDataType.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockDataType.java new file mode 100644 index 00000000..fdcfe79b --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockDataType.java @@ -0,0 +1,6 @@ +package com.songoda.skyblock.utils.world.block; + +public enum BlockDataType { + + NORMAL, STAIRS, FLOWERPOT +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockDegreesType.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockDegreesType.java new file mode 100644 index 00000000..b3c5ad1c --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockDegreesType.java @@ -0,0 +1,16 @@ +package com.songoda.skyblock.utils.world.block; + +public enum BlockDegreesType { + + ROTATE_90(90F), ROTATE_180(180F), ROTATE_270(270F), ROTATE_360(360F); + + private float angle; + + BlockDegreesType(float angle) { + this.angle = angle; + } + + public float getAngle() { + return angle; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockStateType.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockStateType.java new file mode 100644 index 00000000..9f1141dc --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockStateType.java @@ -0,0 +1,8 @@ +package com.songoda.skyblock.utils.world.block; + +public enum BlockStateType { + + NORMAL, BANNER, BEACON, BREWINGSTAND, COMMANDBLOCK, CHEST, DISPENSER, DROPPER, HOPPER, SHULKERBOX, CREATURESPAWNER, + ENDGATEWAY, FURNACE, JUKEBOX, SIGN, SKULL, DOUBLECHEST + +} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockUtil.java new file mode 100644 index 00000000..51e13cea --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/block/BlockUtil.java @@ -0,0 +1,565 @@ +package com.songoda.skyblock.utils.world.block; + +import com.songoda.skyblock.utils.item.ItemStackUtil; +import com.songoda.skyblock.utils.item.MaterialUtil; +import com.songoda.skyblock.utils.version.Materials; +import com.songoda.skyblock.utils.version.NMSUtil; +import org.bukkit.*; +import org.bukkit.block.*; +import org.bukkit.block.banner.Pattern; +import org.bukkit.block.banner.PatternType; +import org.bukkit.entity.EntityType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.material.MaterialData; +import org.bukkit.material.Stairs; +import org.bukkit.potion.PotionEffectType; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +@SuppressWarnings("deprecation") +public final class BlockUtil { + + public static BlockData convertBlockToBlockData(Block block, int x, int y, int z) { + BlockData blockData = new BlockData(block.getType().toString(), block.getData(), x, y, z, + block.getBiome().toString()); + + int NMSVersion = NMSUtil.getVersionNumber(); + blockData.setVersion(NMSVersion); + + if (NMSVersion > 12) { + blockData.setBlockData(block.getBlockData().getAsString()); + } + + BlockState blockState = block.getState(); + MaterialData materialData = blockState.getData(); + + if (blockState instanceof Banner) { + Banner banner = (Banner) blockState; + blockData.setBaseColor(banner.getBaseColor().toString()); + + List patterns = new ArrayList<>(); + + for (Pattern patternList : banner.getPatterns()) { + patterns.add(patternList.getPattern().toString() + ":" + patternList.getColor().toString()); + } + + blockData.setPatterns(patterns); + blockData.setStateType(BlockStateType.BANNER.toString()); + } else if (blockState instanceof Beacon) { + Beacon beacon = (Beacon) blockState; + String primaryEffectName = beacon.getPrimaryEffect() != null ? beacon.getPrimaryEffect().toString() : "null"; + String secondaryEffectName = beacon.getSecondaryEffect() != null ? beacon.getSecondaryEffect().toString() : "null"; + + blockData.setPotionEffect(primaryEffectName + ":" + secondaryEffectName); + blockData.setStateType(BlockStateType.BEACON.toString()); + } else if (blockState instanceof BrewingStand) { + BrewingStand brewingStand = (BrewingStand) blockState; + blockData.setBrewingTime(brewingStand.getBrewingTime()); + blockData.setFuelLevel(brewingStand.getFuelLevel()); + blockData.setStateType(BlockStateType.BREWINGSTAND.toString()); + } else if (blockState instanceof Furnace) { + Furnace furnace = (Furnace) blockState; + blockData.setBurnTime(furnace.getBurnTime()); + blockData.setCookTime(furnace.getCookTime()); + + for (int i = 0; i < furnace.getInventory().getSize(); i++) { + ItemStack is = furnace.getInventory().getItem(i); + + if (is != null && is.getType() != Material.AIR) { + blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); + } + } + + blockData.setStateType(BlockStateType.FURNACE.toString()); + } else if (blockState instanceof Chest) { + Chest chest = (Chest) blockState; + + for (int i = 0; i < chest.getInventory().getSize(); i++) { + ItemStack is = chest.getInventory().getItem(i); + + if (is != null && is.getType() != Material.AIR) { + blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); + } + } + + blockData.setStateType(BlockStateType.CHEST.toString()); + } else if (blockState instanceof Dispenser) { + Dispenser dispenser = (Dispenser) blockState; + + for (int i = 0; i < dispenser.getInventory().getSize(); i++) { + ItemStack is = dispenser.getInventory().getItem(i); + + if (is != null && is.getType() != Material.AIR) { + blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); + } + } + + blockData.setStateType(BlockStateType.DISPENSER.toString()); + } else if (blockState instanceof Dropper) { + Dropper dropper = (Dropper) blockState; + + for (int i = 0; i < dropper.getInventory().getSize(); i++) { + ItemStack is = dropper.getInventory().getItem(i); + + if (is != null && is.getType() != Material.AIR) { + blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); + } + } + + blockData.setStateType(BlockStateType.DROPPER.toString()); + } else if (blockState instanceof Hopper) { + Hopper hopper = (Hopper) blockState; + + for (int i = 0; i < hopper.getInventory().getSize(); i++) { + ItemStack is = hopper.getInventory().getItem(i); + + if (is != null && is.getType() != Material.AIR) { + blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); + } + } + + blockData.setStateType(BlockStateType.HOPPER.toString()); + } else if (blockState instanceof CommandBlock) { + CommandBlock commandBlock = (CommandBlock) blockState; + blockData.setCommand(commandBlock.getCommand()); + blockData.setCommandBlockName(commandBlock.getName()); + blockData.setStateType(BlockStateType.COMMANDBLOCK.toString()); + } else if (blockState instanceof CreatureSpawner) { + CreatureSpawner creatureSpawner = (CreatureSpawner) blockState; + + if (creatureSpawner.getSpawnedType() != null) { + blockData.setEntity(creatureSpawner.getSpawnedType().toString()); + } + + blockData.setDelay(creatureSpawner.getDelay()); + blockData.setStateType(BlockStateType.CREATURESPAWNER.toString()); + } else if (blockState instanceof Jukebox) { + Jukebox jukebox = (Jukebox) blockState; + + if (jukebox.getPlaying() != null) { + blockData.setPlaying(jukebox.getPlaying().toString()); + } + + blockData.setStateType(BlockStateType.JUKEBOX.toString()); + } else if (blockState instanceof Sign) { + Sign sign = (Sign) blockState; + + String[] signLines = sign.getLines(); + + if (signLines != null) { + List 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; + blockData.setSkullOwner(skull.getOwner()); + blockData.setSkullType(skull.getSkullType().toString()); + blockData.setRotateFace(skull.getRotation().toString()); + blockData.setStateType(BlockStateType.SKULL.toString()); + } else { + if (NMSVersion > 8) { + if (blockState instanceof EndGateway) { + EndGateway endGateway = (EndGateway) blockState; + blockData.setExactTeleport(endGateway.isExactTeleport()); + + Location location = endGateway.getExitLocation(); + blockData.setExitLocation(location.getX() + ":" + location.getY() + ":" + location.getZ() + ":" + + location.getWorld().getName()); + blockData.setStateType(BlockStateType.ENDGATEWAY.toString()); + } + + if (NMSVersion > 10) { + if (blockState instanceof ShulkerBox) { + ShulkerBox shulkerBox = (ShulkerBox) blockState; + + for (int i = 0; i < shulkerBox.getInventory().getSize(); i++) { + ItemStack is = shulkerBox.getInventory().getItem(i); + + if (is != null && is.getType() != Material.AIR) { + blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); + } + } + + blockData.setStateType(BlockStateType.SHULKERBOX.toString()); + } + } + } + } + + if (materialData instanceof Stairs) { + blockData.setFacing(((Stairs) materialData).getFacing().toString()); + blockData.setDataType(BlockDataType.STAIRS.toString()); + } else if (materialData instanceof org.bukkit.material.FlowerPot) { + if (NMSVersion >= 8 && NMSVersion <= 12) { + try { + World world = block.getWorld(); + + Class blockPositionClass = NMSUtil.getNMSClass("BlockPosition"); + + Object worldHandle = world.getClass().getMethod("getHandle").invoke(world); + Object blockPosition = blockPositionClass.getConstructor(int.class, int.class, int.class) + .newInstance(block.getX(), block.getY(), block.getZ()); + Object tileEntity = worldHandle.getClass().getMethod("getTileEntity", blockPositionClass) + .invoke(worldHandle, blockPosition); + + Field aField = tileEntity.getClass().getDeclaredField("a"); + aField.setAccessible(true); + + Object item = aField.get(tileEntity); + + if (item != null) { + Object itemStackNMS = NMSUtil.getNMSClass("ItemStack") + .getConstructor(NMSUtil.getNMSClass("Item")).newInstance(item); + + ItemStack itemStack = (ItemStack) NMSUtil.getCraftClass("inventory.CraftItemStack") + .getMethod("asBukkitCopy", itemStackNMS.getClass()).invoke(null, itemStackNMS); + + Field fField = tileEntity.getClass().getDeclaredField("f"); + fField.setAccessible(true); + + int data = (int) fField.get(tileEntity); + + blockData.setFlower(itemStack.getType().name() + ":" + data); + } + } catch (Exception e) { + e.printStackTrace(); + } + } else { + org.bukkit.material.FlowerPot flowerPot = (org.bukkit.material.FlowerPot) materialData; + + if (flowerPot.getContents() != null && flowerPot.getContents().getItemType() != Material.AIR) { + blockData.setFlower( + flowerPot.getContents().getItemType().toString() + ":" + flowerPot.getContents().getData()); + } + } + + blockData.setDataType(BlockDataType.FLOWERPOT.toString()); + } + + return blockData; + } + + public static void convertBlockDataToBlock(Block block, BlockData blockData) { + int NMSVersion = NMSUtil.getVersionNumber(); + + Material material = null; + + if (NMSVersion > 12 && blockData.getVersion() > 12 && blockData.getBlockData() != null) { + block.setBlockData(Bukkit.getServer().createBlockData(blockData.getBlockData())); + } else { + material = MaterialUtil.getMaterial(NMSVersion, blockData.getVersion(), + blockData.getMaterial(), block.getData()); + setBlockFast(block.getWorld(), block.getX(), block.getY(), block.getZ(), material, blockData.getData()); + } + + // TODO Create a class to support biome changes + // block.setBiome(Biome.valueOf(blockData.getBiome().toUpperCase())); + + BlockStateType blockTypeState = BlockStateType.valueOf(blockData.getStateType()); + + if (blockTypeState == BlockStateType.BANNER) { + Banner banner = (Banner) block.getState(); + banner.setBaseColor(DyeColor.valueOf(blockData.getBaseColor().toUpperCase())); + + for (String patternList : blockData.getPatterns()) { + String[] pattern = patternList.split(":"); + banner.addPattern(new Pattern(DyeColor.valueOf(pattern[1].toUpperCase()), + PatternType.valueOf(pattern[0].toUpperCase()))); + } + } else if (blockTypeState == BlockStateType.BEACON) { + Beacon beacon = (Beacon) block.getState(); + String[] potionEffect = blockData.getPotionEffect().split(":"); + if (!potionEffect[0].equals("null")) { + beacon.setPrimaryEffect(PotionEffectType.getByName(potionEffect[0].toUpperCase())); + } + + if (!potionEffect[1].equals("null")) { + beacon.setSecondaryEffect(PotionEffectType.getByName(potionEffect[1].toUpperCase())); + } + } else if (blockTypeState == BlockStateType.BREWINGSTAND) { + BrewingStand brewingStand = (BrewingStand) block.getState(); + brewingStand.setBrewingTime(blockData.getBrewingTime()); + brewingStand.setFuelLevel(blockData.getFuelLevel()); + } else if (blockTypeState == BlockStateType.COMMANDBLOCK) { + CommandBlock commandBlock = (CommandBlock) block.getState(); + commandBlock.setCommand(blockData.getCommand()); + commandBlock.setName(blockData.getCommandBlockName()); + } else if (blockTypeState == BlockStateType.CHEST) { + Chest chest = (Chest) block.getState(); + + for (Integer slotList : blockData.getInventory().keySet()) { + if (slotList < chest.getInventory().getSize()) { + ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); + chest.getInventory().setItem(slotList, is); + } + } + } else if (blockTypeState == BlockStateType.DISPENSER) { + Dispenser dispenser = (Dispenser) block.getState(); + + for (Integer slotList : blockData.getInventory().keySet()) { + if (slotList < dispenser.getInventory().getSize()) { + ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); + dispenser.getInventory().setItem(slotList, is); + } + } + } else if (blockTypeState == BlockStateType.DROPPER) { + Dropper dropper = (Dropper) block.getState(); + + for (Integer slotList : blockData.getInventory().keySet()) { + if (slotList < dropper.getInventory().getSize()) { + ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); + dropper.getInventory().setItem(slotList, is); + } + } + } else if (blockTypeState == BlockStateType.HOPPER) { + Hopper hopper = (Hopper) block.getState(); + + for (Integer slotList : blockData.getInventory().keySet()) { + if (slotList < hopper.getInventory().getSize()) { + ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); + hopper.getInventory().setItem(slotList, is); + } + } + } else if (blockTypeState == BlockStateType.CREATURESPAWNER) { + CreatureSpawner creatureSpawner = (CreatureSpawner) block.getState(); + + if (blockData.getEntity() != null) { + creatureSpawner.setSpawnedType(EntityType.valueOf(blockData.getEntity().toUpperCase())); + } + + creatureSpawner.setDelay(blockData.getDelay()); + } else if (blockTypeState == BlockStateType.FURNACE) { + Furnace furnace = (Furnace) block.getState(); + furnace.setBurnTime(blockData.getBurnTime()); + furnace.setCookTime(blockData.getCookTime()); + + for (Integer slotList : blockData.getInventory().keySet()) { + if (slotList < furnace.getInventory().getSize()) { + ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); + furnace.getInventory().setItem(slotList, is); + } + } + } else if (blockTypeState == BlockStateType.JUKEBOX) { + Jukebox jukebox = (Jukebox) block.getState(); + + if (blockData.getPlaying() != null) { + jukebox.setPlaying(Material.valueOf(blockData.getPlaying().toUpperCase())); + } + } else if (blockTypeState == BlockStateType.SIGN) { + Sign sign = (Sign) block.getState(); + + for (int i = 0; i < blockData.getSignLines().length; i++) { + sign.setLine(i, ChatColor.translateAlternateColorCodes('&', blockData.getSignLines()[i])); + } + } else if (blockTypeState == BlockStateType.SKULL) { + Skull skull = (Skull) block.getState(); + + skull.setRotation(BlockFace.valueOf(blockData.getRotateFace().toUpperCase())); + skull.setSkullType(SkullType.valueOf(blockData.getSkullType().toUpperCase())); + + if (NMSVersion > 9) { + skull.setOwningPlayer(Bukkit.getServer().getOfflinePlayer(blockData.getSkullOwner())); + } else { + skull.setOwner(blockData.getSkullOwner()); + } + } else { + if (NMSVersion > 8) { + if (blockTypeState == BlockStateType.ENDGATEWAY) { + EndGateway endGateway = (EndGateway) block.getState(); + endGateway.setExactTeleport(blockData.isExactTeleport()); + + String[] exitLocation = blockData.getExitLocation().split(":"); + World exitLocationWorld = Bukkit.getServer().getWorld(exitLocation[3]); + + double exitLocationX = Double.parseDouble(exitLocation[0]); + double exitLocationY = Double.parseDouble(exitLocation[1]); + double exitLocationZ = Double.parseDouble(exitLocation[2]); + + endGateway.setExitLocation( + new Location(exitLocationWorld, exitLocationX, exitLocationY, exitLocationZ)); + } + + if (NMSVersion > 9) { + if (NMSVersion > 10) { + if (blockTypeState == BlockStateType.SHULKERBOX) { + ShulkerBox shulkerBox = (ShulkerBox) block.getState(); + + for (Integer slotList : blockData.getInventory().keySet()) { + if (slotList < shulkerBox.getInventory().getSize()) { + ItemStack is = ItemStackUtil + .deserializeItemStack(blockData.getInventory().get(slotList)); + shulkerBox.getInventory().setItem(slotList, is); + } + } + } + } + } + } + } + + BlockDataType blockDataType = BlockDataType.valueOf(blockData.getDataType()); + + if (blockDataType == BlockDataType.STAIRS) { + Stairs stairs = (Stairs) block.getState().getData(); + stairs.setFacingDirection(BlockFace.valueOf(blockData.getFacing())); + block.getState().setData(stairs); + } else if (blockDataType == BlockDataType.FLOWERPOT) { + if (NMSVersion >= 8 && NMSVersion <= 12) { + if (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.AIR) { + setBlockFast(block.getWorld(), block.getX(), block.getY() - 1, block.getZ(), Material.STONE, + (byte) 0); + } + + if (blockData.getFlower() != null && !blockData.getFlower().isEmpty()) { + try { + String[] flower = blockData.getFlower().split(":"); + int materialData = Integer.parseInt(flower[1]); + + material = MaterialUtil.getMaterial(NMSVersion, + blockData.getVersion(), flower[0].toUpperCase(), materialData); + + if (material != null) { + ItemStack is = new ItemStack(material, 1, (byte) materialData); + + World world = block.getWorld(); + + Class blockPositionClass = NMSUtil.getNMSClass("BlockPosition"); + + Object worldHandle = world.getClass().getMethod("getHandle").invoke(world); + Object blockPosition = blockPositionClass.getConstructor(int.class, int.class, int.class) + .newInstance(block.getX(), block.getY(), block.getZ()); + Object tileEntity = worldHandle.getClass().getMethod("getTileEntity", blockPositionClass) + .invoke(worldHandle, blockPosition); + Object itemStack = NMSUtil.getCraftClass("inventory.CraftItemStack") + .getMethod("asNMSCopy", is.getClass()).invoke(null, is); + Object item = itemStack.getClass().getMethod("getItem").invoke(itemStack); + Object data = itemStack.getClass().getMethod("getData").invoke(itemStack); + + Field aField = tileEntity.getClass().getDeclaredField("a"); + aField.setAccessible(true); + aField.set(tileEntity, item); + + Field fField = tileEntity.getClass().getDeclaredField("f"); + fField.setAccessible(true); + fField.set(tileEntity, data); + + tileEntity.getClass().getMethod("update").invoke(tileEntity); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } else { + if (blockData.getFlower() != null && !blockData.getFlower().isEmpty()) { + org.bukkit.material.FlowerPot flowerPot = (org.bukkit.material.FlowerPot) block.getState() + .getData(); + String[] flower = blockData.getFlower().split(":"); + material = null; + + if (blockData.getVersion() > 12) { + if (NMSVersion > 12) { + material = Material.valueOf(flower[0].toUpperCase()); + } + } else { + if (NMSVersion < 13) { + material = Material.valueOf(flower[0].toUpperCase()); + } + } + + if (material != null) { + flowerPot.setContents(new MaterialData(material, (byte) Integer.parseInt(flower[1]))); + } + + block.getState().setData(flowerPot); + } + } + } + + if (NMSVersion < 13) { + block.getState().update(); + } + + if (blockData.getMaterial().equals("DOUBLE_PLANT")) { + Block topBlock = block.getLocation().clone().add(0.0D, 1.0D, 0.0D).getBlock(); + Block bottomBlock = block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock(); + + if (bottomBlock.getType() == Material.AIR && !topBlock.getType().name().equals("DOUBLE_PLANT")) { + bottomBlock.setType(Materials.LEGACY_DOUBLE_PLANT.getPostMaterial()); + + if (NMSVersion < 13) { + try { + bottomBlock.getClass().getMethod("setData", byte.class).invoke(bottomBlock, (byte) 2); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + } + + public static List getNearbyBlocks(Location loc, int rx, int ry, int rz) { + List nearbyBlocks = new ArrayList<>(); + + for (int x = -(rx); x <= rx; x++) { + for (int y = -(ry); y <= ry; y++) { + for (int z = -(rz); z <= rz; z++) { + nearbyBlocks.add( + new Location(loc.getWorld(), loc.getX() + x, loc.getY() + y, loc.getZ() + z).getBlock()); + } + } + } + + return nearbyBlocks; + } + + private static void setBlockFast(World world, int x, int y, int z, Material material, byte data) { + try { + Class IBlockDataClass = NMSUtil.getNMSClass("IBlockData"); + + Object worldHandle = world.getClass().getMethod("getHandle").invoke(world); + Object chunk = worldHandle.getClass().getMethod("getChunkAt", int.class, int.class).invoke(worldHandle, + x >> 4, z >> 4); + Object blockPosition = NMSUtil.getNMSClass("BlockPosition").getConstructor(int.class, int.class, int.class) + .newInstance(x & 0xF, y, z & 0xF); + + if (NMSUtil.getVersionNumber() > 12) { + Object block = NMSUtil.getNMSClass("Blocks").getField(material.name()).get(null); + Object IBlockData = block.getClass().getMethod("getBlockData").invoke(block); + worldHandle.getClass().getMethod("setTypeAndData", blockPosition.getClass(), IBlockDataClass, int.class) + .invoke(worldHandle, blockPosition, IBlockData, 2); + + try { + chunk.getClass().getMethod("a", blockPosition.getClass(), IBlockDataClass, boolean.class) + .invoke(chunk, blockPosition, IBlockData, true); + } catch (Exception e) { + chunk.getClass().getMethod("setType", blockPosition.getClass(), IBlockDataClass, boolean.class) + .invoke(chunk, blockPosition, IBlockData, true); + } + } else { + Object IBlockData = NMSUtil.getNMSClass("Block").getMethod("getByCombinedId", int.class).invoke(null, + material.getId() + (data << 12)); + worldHandle.getClass().getMethod("setTypeAndData", blockPosition.getClass(), IBlockDataClass, int.class) + .invoke(worldHandle, blockPosition, IBlockData, 3); + chunk.getClass().getMethod("a", blockPosition.getClass(), IBlockDataClass).invoke(chunk, blockPosition, + IBlockData); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/entity/EntityData.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/entity/EntityData.java new file mode 100644 index 00000000..111cfea9 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/entity/EntityData.java @@ -0,0 +1,594 @@ +package com.songoda.skyblock.utils.world.entity; + +public class EntityData { + + private String entityType; + private String hand; + private String helmet; + private String chestplate; + private String leggings; + private String boots; + private String bodyPose; + private String headPose; + private String leftArmPose; + private String leftLegPose; + private String rightArmPose; + private String rightLegPose; + private String offHand; + private String woodType; + private String carryBlock; + private String customName; + private String horseColor; + private String horseStyle; + private String item; + private String rotate; + private String llamaColor; + private String ocelotType; + private String art; + private String parrotVariant; + private String rabbitType; + private String profession; + private String color; + + private String[] inventory; + + private double x; + private double y; + private double z; + + private float handChance; + private float offHandChance; + private float helmetChance; + private float chestplateChance; + private float leggingsChance; + private float bootsChance; + private float yaw = 0; + private float pitch = 0; + + private int version; + private int fireTicks; + private int ticksLived; + private int llamaStrength; + private int angerLevel; + private int slimeSize; + private int age; + + private boolean arms; + private boolean basePlate; + private boolean visible; + private boolean small; + private boolean marker; + private boolean awake; + private boolean powered; + private boolean customNameVisible; + private boolean createdByPlayer; + private boolean saddle; + private boolean angry; + private boolean sheared; + private boolean derp; + private boolean ageLock; + private boolean breed; + private boolean ai; + private boolean baby; + + public EntityData(String entityType, double x, double y, double z, String customName, boolean customNameVisible, + int fireTicks, int ticksLived) { + this.entityType = entityType; + + this.x = x; + this.y = y; + this.z = z; + + this.customName = customName; + this.customNameVisible = customNameVisible; + + this.fireTicks = fireTicks; + this.ticksLived = ticksLived; + + this.ai = true; + } + + public String getEntityType() { + return entityType; + } + + public void setEntityType(String entityType) { + this.entityType = entityType; + } + + public String getHand() { + return this.hand; + } + + public void setHand(String hand) { + this.hand = hand; + } + + public String getHelmet() { + return this.helmet; + } + + public void setHelmet(String helmet) { + this.helmet = helmet; + } + + public String getChestplate() { + return this.chestplate; + } + + public void setChestplate(String chestplate) { + this.chestplate = chestplate; + } + + public String getLeggings() { + return this.leggings; + } + + public void setLeggings(String leggings) { + this.leggings = leggings; + } + + public String getBoots() { + return this.boots; + } + + public void setBoots(String boots) { + this.boots = boots; + } + + public String getBodyPose() { + return this.bodyPose; + } + + public void setBodyPose(String bodyPose) { + this.bodyPose = bodyPose; + } + + public String getHeadPose() { + return this.headPose; + } + + public void setHeadPose(String headPose) { + this.headPose = headPose; + } + + public String getLeftArmPose() { + return this.leftArmPose; + } + + public void setLeftArmPose(String leftArmPose) { + this.leftArmPose = leftArmPose; + } + + public String getLeftLegPose() { + return this.leftLegPose; + } + + public void setLeftLegPose(String leftLegPose) { + this.leftLegPose = leftLegPose; + } + + public String getRightArmPose() { + return this.rightArmPose; + } + + public void setRightArmPose(String rightArmPose) { + this.rightArmPose = rightArmPose; + } + + public String getRightLegPose() { + return this.rightLegPose; + } + + public void setRightLegPose(String rightLegPose) { + this.rightLegPose = rightLegPose; + } + + public String getOffHand() { + return this.offHand; + } + + public void setOffHand(String offHand) { + this.offHand = offHand; + } + + public String getWoodType() { + return this.woodType; + } + + public void setWoodType(String woodType) { + this.woodType = woodType; + } + + public String getCarryBlock() { + return this.carryBlock; + } + + public void setCarryBlock(String carryBlock) { + this.carryBlock = carryBlock; + } + + public String getCustomName() { + return this.customName; + } + + public void setCustomName(String customName) { + this.customName = customName; + } + + public String getHorseColor() { + return this.horseColor; + } + + public void setHorseColor(String horseColor) { + this.horseColor = horseColor; + } + + public String getHorseStyle() { + return this.horseStyle; + } + + public void setHorseStyle(String horseStyle) { + this.horseStyle = horseStyle; + } + + public String getItem() { + return this.item; + } + + public void setItem(String item) { + this.item = item; + } + + public String getRotate() { + return this.rotate; + } + + public void setRotate(String rotate) { + this.rotate = rotate; + } + + public String getLlamaColor() { + return this.llamaColor; + } + + public void setLlamaColor(String llamaColor) { + this.llamaColor = llamaColor; + } + + public String getOcelotType() { + return this.ocelotType; + } + + public void setOcelotType(String ocelotType) { + this.ocelotType = ocelotType; + } + + public String getArt() { + return this.art; + } + + public void setArt(String art) { + this.art = art; + } + + public String getParrotVariant() { + return this.parrotVariant; + } + + public void setParrotVariant(String parrotVariant) { + this.parrotVariant = parrotVariant; + } + + public String getRabbitType() { + return this.rabbitType; + } + + public void setRabbitType(String rabbitType) { + this.rabbitType = rabbitType; + } + + public String getProfession() { + return this.profession; + } + + public void setProfession(String profession) { + this.profession = profession; + } + + public String getColor() { + return this.color; + } + + public void setColor(String color) { + this.color = color; + } + + public String[] getInventory() { + return this.inventory; + } + + public void setInventory(String[] inventory) { + this.inventory = inventory; + } + + public double getX() { + return this.x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return this.y; + } + + public void setY(double y) { + this.y = y; + } + + public double getZ() { + return z; + } + + public void setZ(double z) { + this.z = z; + } + + public float getHandChance() { + return this.handChance; + } + + public void setHandChance(float handChance) { + this.handChance = handChance; + } + + public float getOffHandChance() { + return this.offHandChance; + } + + public void setOffHandChange(float offHandChange) { + this.offHandChance = offHandChange; + } + + public float getHelmetChance() { + return this.helmetChance; + } + + public void setHelmetChance(float helmetChance) { + this.helmetChance = helmetChance; + } + + public float getChestplateChance() { + return this.chestplateChance; + } + + public void setChestplateChance(float chestplateChance) { + this.chestplateChance = chestplateChance; + } + + public float getLeggingsChance() { + return this.leggingsChance; + } + + public void setLeggingsChance(float leggingsChance) { + this.leggingsChance = leggingsChance; + } + + public float getBootsChance() { + return this.bootsChance; + } + + public void setBootsChance(float bootsChance) { + this.bootsChance = bootsChance; + } + + public float getYaw() { + return this.yaw; + } + + public void setYaw(float yaw) { + this.yaw = yaw; + } + + public float getPitch() { + return this.pitch; + } + + public void setPitch(float pitch) { + this.pitch = pitch; + } + + public int getVersion() { + return this.version; + } + + public void setVersion(int version) { + this.version = version; + } + + public int getFireTicks() { + return this.fireTicks; + } + + public void setFireTicks(int fireTicks) { + this.fireTicks = fireTicks; + } + + public int getTicksLived() { + return this.ticksLived; + } + + public void setTicksLived(int ticksLived) { + this.ticksLived = ticksLived; + } + + public int getLlamaStrength() { + return this.llamaStrength; + } + + public void setLlamaStrength(int llamaStrength) { + this.llamaStrength = llamaStrength; + } + + public int getAngerLevel() { + return this.angerLevel; + } + + public void setAngerLevel(int angerLevel) { + this.angerLevel = angerLevel; + } + + public int getSlimeSize() { + return this.slimeSize; + } + + public void setSlimeSize(int slimeSize) { + this.slimeSize = slimeSize; + } + + public int getAge() { + return this.age; + } + + public void setAge(int age) { + this.age = age; + } + + public boolean hasArms() { + return this.arms; + } + + public void setArms(boolean arms) { + this.arms = arms; + } + + public boolean hasBasePlate() { + return this.basePlate; + } + + public void setBasePlate(boolean basePlate) { + this.basePlate = basePlate; + } + + public boolean isVisible() { + return this.visible; + } + + public void setVisible(boolean visible) { + this.visible = visible; + } + + public boolean isSmall() { + return this.small; + } + + public void setSmall(boolean small) { + this.small = small; + } + + public boolean isMarker() { + return this.marker; + } + + public void setMarker(boolean marker) { + this.marker = marker; + } + + public boolean isAwake() { + return this.awake; + } + + public void setAwake(boolean awake) { + this.awake = awake; + } + + public boolean isPowered() { + return this.powered; + } + + public void setPowered(boolean powered) { + this.powered = powered; + } + + public boolean isCustomNameVisible() { + return this.customNameVisible; + } + + public void setCustomNameVisible(boolean customNameVisible) { + this.customNameVisible = customNameVisible; + } + + public boolean isCreatedByPlayer() { + return this.createdByPlayer; + } + + public void setCreatedByPlayer(boolean createdByPlayer) { + this.createdByPlayer = createdByPlayer; + } + + public boolean hasSaddle() { + return this.saddle; + } + + public void setSaddle(boolean saddle) { + this.saddle = saddle; + } + + public boolean isAngry() { + return this.angry; + } + + public void setAngry(boolean angry) { + this.angry = angry; + } + + public boolean isSheared() { + return this.sheared; + } + + public void setSheared(boolean sheared) { + this.sheared = sheared; + } + + public boolean isDerp() { + return this.derp; + } + + public void setDerp(boolean derp) { + this.derp = derp; + } + + public boolean isAgeLock() { + return this.ageLock; + } + + public void setAgeLock(boolean ageLock) { + this.ageLock = ageLock; + } + + public boolean canBreed() { + return this.breed; + } + + public void setBreed(boolean breed) { + this.breed = breed; + } + + public boolean hasAI() { + return this.ai; + } + + public void setAI(boolean ai) { + this.ai = ai; + } + + public boolean isBaby() { + return this.baby; + } + + public void setBaby(boolean baby) { + this.baby = baby; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/entity/EntityUtil.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/entity/EntityUtil.java new file mode 100644 index 00000000..5c71374a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/utils/world/entity/EntityUtil.java @@ -0,0 +1,500 @@ +package com.songoda.skyblock.utils.world.entity; + +import com.songoda.skyblock.utils.item.ItemStackUtil; +import com.songoda.skyblock.utils.item.MaterialUtil; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.utils.world.block.BlockDegreesType; +import org.bukkit.*; +import org.bukkit.entity.*; +import org.bukkit.entity.minecart.HopperMinecart; +import org.bukkit.entity.minecart.StorageMinecart; +import org.bukkit.inventory.EntityEquipment; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; +import org.bukkit.material.Colorable; +import org.bukkit.material.MaterialData; +import org.bukkit.util.EulerAngle; + +import java.util.ArrayList; +import java.util.List; + +@SuppressWarnings("deprecation") +public final class EntityUtil { + + public static EntityData convertEntityToEntityData(Entity entity, int x, int y, int z) { + EntityData entityData = new EntityData(entity.getType().toString(), x, y, z, entity.getCustomName(), + entity.isCustomNameVisible(), entity.getFireTicks(), entity.getTicksLived()); + entityData.setVersion(NMSUtil.getVersionNumber()); + + if (entity instanceof ArmorStand) { + ArmorStand armorStand = (ArmorStand) entity; + entityData.setArms(armorStand.hasArms()); + + if (armorStand.getItemInHand() != null && armorStand.getItemInHand().getType() != Material.AIR) { + entityData.setHand(ItemStackUtil.serializeItemStack(armorStand.getItemInHand())); + } + + if (armorStand.getHelmet() != null && armorStand.getHelmet().getType() != Material.AIR) { + entityData.setHelmet(ItemStackUtil.serializeItemStack(armorStand.getHelmet())); + } + + if (armorStand.getChestplate() != null && armorStand.getChestplate().getType() != Material.AIR) { + entityData.setChestplate(ItemStackUtil.serializeItemStack(armorStand.getChestplate())); + } + + if (armorStand.getLeggings() != null && armorStand.getLeggings().getType() != Material.AIR) { + entityData.setLeggings(ItemStackUtil.serializeItemStack(armorStand.getLeggings())); + } + + if (armorStand.getBoots() != null && armorStand.getBoots().getType() != Material.AIR) { + entityData.setBoots(ItemStackUtil.serializeItemStack(armorStand.getBoots())); + } + + entityData.setBasePlate(armorStand.hasBasePlate()); + entityData.setVisible(armorStand.isVisible()); + entityData.setSmall(armorStand.isSmall()); + entityData.setMarker(armorStand.isMarker()); + entityData.setBodyPose(armorStand.getBodyPose().getX() + " " + armorStand.getBodyPose().getY() + " " + + armorStand.getBodyPose().getZ()); + entityData.setHeadPose(armorStand.getHeadPose().getX() + " " + armorStand.getHeadPose().getY() + " " + + armorStand.getHeadPose().getZ()); + entityData.setLeftArmPose(armorStand.getLeftArmPose().getX() + " " + armorStand.getLeftArmPose().getY() + + " " + armorStand.getLeftArmPose().getZ()); + entityData.setLeftLegPose(armorStand.getLeftLegPose().getX() + " " + armorStand.getLeftLegPose().getY() + + " " + armorStand.getLeftLegPose().getZ()); + entityData.setRightArmPose(armorStand.getRightArmPose().getX() + " " + armorStand.getRightArmPose().getY() + + " " + armorStand.getRightArmPose().getZ()); + entityData.setRightLegPose(armorStand.getRightLegPose().getX() + " " + armorStand.getRightLegPose().getY() + + " " + armorStand.getRightLegPose().getZ()); + + return entityData; + } + + int NMSVersion = NMSUtil.getVersionNumber(); + + if (entity instanceof LivingEntity) { + LivingEntity livingEntity = (LivingEntity) entity; + EntityEquipment entityEquipment = livingEntity.getEquipment(); + + if (NMSVersion > 8) { + if (NMSVersion > 9) { + entityData.setAI(livingEntity.hasAI()); + } + + if (entityEquipment.getItemInMainHand() != null + && entityEquipment.getItemInMainHand().getType() != Material.AIR) { + entityData.setHand(ItemStackUtil.serializeItemStack(entityEquipment.getItemInMainHand())); + } + + entityData.setHandChance(entityEquipment.getItemInMainHandDropChance()); + + if (entityEquipment.getItemInOffHand() != null + && entityEquipment.getItemInOffHand().getType() != Material.AIR) { + entityData.setOffHand(ItemStackUtil.serializeItemStack(entityEquipment.getItemInOffHand())); + } + + entityData.setOffHandChange(entityEquipment.getItemInOffHandDropChance()); + } else { + if (entityEquipment.getItemInHand() != null + && entityEquipment.getItemInHand().getType() != Material.AIR) { + entityData.setHand(ItemStackUtil.serializeItemStack(entityEquipment.getItemInHand())); + } + + entityData.setHandChance(entityEquipment.getItemInHandDropChance()); + } + + if (entityEquipment.getHelmet() != null && entityEquipment.getHelmet().getType() != Material.AIR) { + entityData.setHelmet(ItemStackUtil.serializeItemStack(entityEquipment.getHelmet())); + } + + if (entityEquipment.getChestplate() != null && entityEquipment.getChestplate().getType() != Material.AIR) { + entityData.setChestplate(ItemStackUtil.serializeItemStack(entityEquipment.getChestplate())); + } + + if (entityEquipment.getLeggings() != null && entityEquipment.getLeggings().getType() != Material.AIR) { + entityData.setLeggings(ItemStackUtil.serializeItemStack(entityEquipment.getLeggings())); + } + + if (entityEquipment.getBoots() != null && entityEquipment.getBoots().getType() != Material.AIR) { + entityData.setBoots(ItemStackUtil.serializeItemStack(entityEquipment.getBoots())); + } + + entityData.setHelmetChance(entityEquipment.getHelmetDropChance()); + entityData.setChestplateChance(entityEquipment.getChestplateDropChance()); + entityData.setLeggingsChance(entityEquipment.getLeggingsDropChance()); + entityData.setBootsChance(entityEquipment.getBootsDropChance()); + + if (entity instanceof Bat) { + entityData.setAwake(((Bat) entityData).isAwake()); + } else if (entity instanceof Creeper) { + entityData.setPowered(((Creeper) entity).isPowered()); + } else if (entity instanceof Enderman) { + Enderman enderman = ((Enderman) entity); + + if (NMSVersion > 12) { + if (enderman.getCarriedBlock() == null) { + entityData.setCarryBlock(""); + } else { + entityData.setCarryBlock(enderman.getCarriedBlock().getMaterial().name() + ":0"); + } + } else { + MaterialData materialData = enderman.getCarriedMaterial(); + + if (materialData == null) { + entityData.setCarryBlock(""); + } else { + entityData.setCarryBlock(materialData.getItemType().toString() + ":" + materialData.getData()); + } + } + } else if (entity instanceof Horse) { + Horse horse = ((Horse) entity); + entityData.setHorseColor(horse.getColor().toString()); + entityData.setHorseStyle(horse.getStyle().toString()); + + List items = new ArrayList<>(); + + for (ItemStack itemList : horse.getInventory().getContents()) { + if (itemList != null && itemList.getType() != Material.AIR) { + items.add(ItemStackUtil.serializeItemStack(itemList)); + } + } + + entityData.setInventory(items.toArray(new String[0])); + } else if (entity instanceof IronGolem) { + entityData.setCreatedByPlayer(((IronGolem) entity).isPlayerCreated()); + } else if (entity instanceof Ocelot) { + entityData.setOcelotType(((Ocelot) entity).getCatType().toString()); + } else if (entity instanceof Pig) { + entityData.setSaddle(((Pig) entity).hasSaddle()); + } else if (entity instanceof Zombie) { + entityData.setBaby(((Zombie) entity).isBaby()); + } else if (entity instanceof PigZombie) { + PigZombie pigZombie = ((PigZombie) entity); + entityData.setAngry(pigZombie.isAngry()); + entityData.setAngerLevel(pigZombie.getAnger()); + } else if (entity instanceof Rabbit) { + entityData.setRabbitType(((Rabbit) entity).getRabbitType().toString()); + } else if (entity instanceof Sheep) { + entityData.setSheared(((Sheep) entity).isSheared()); + entityData.setColor(((Colorable) entity).getColor().toString()); + } else if (entity instanceof Slime) { + entityData.setSlimeSize(((Slime) entity).getSize()); + } else if (entity instanceof Snowman) { + entityData.setDerp(((Snowman) entity).isDerp()); + } else if (entity instanceof Villager) { + Villager villager = ((Villager) entity); + entityData.setProfession(villager.getProfession().toString()); + + List items = new ArrayList<>(); + + for (ItemStack itemList : villager.getInventory().getContents()) { + if (itemList != null && itemList.getType() != Material.AIR) { + items.add(ItemStackUtil.serializeItemStack(itemList)); + } + } + + entityData.setInventory(items.toArray(new String[0])); + } + + if (NMSVersion > 10) { + if (entity instanceof Llama) { + Llama llama = ((Llama) entity); + entityData.setLlamaColor(llama.getColor().toString()); + entityData.setLlamaStrength(llama.getStrength()); + + List items = new ArrayList<>(); + + for (ItemStack itemList : llama.getInventory().getContents()) { + if (itemList != null && itemList.getType() != Material.AIR) { + items.add(ItemStackUtil.serializeItemStack(itemList)); + } + } + } + + if (NMSVersion > 11) { + if (entity instanceof Parrot) { + entityData.setParrotVariant(((Parrot) entity).getVariant().toString()); + } + } + } + } + + if (entity instanceof Ageable) { + Ageable ageable = ((Ageable) entity); + entityData.setBreed(ageable.canBreed()); + entityData.setAge(ageable.getAge()); + entityData.setAgeLock(ageable.getAgeLock()); + entityData.setBaby(!ageable.isAdult()); + } else if (entity instanceof Vehicle) { + if (entity instanceof Boat) { + entityData.setWoodType(((Boat) entity).getWoodType().toString()); + } else if (entity instanceof StorageMinecart || entity instanceof HopperMinecart) { + List items = new ArrayList<>(); + + for (ItemStack itemList : ((InventoryHolder) entity).getInventory().getContents()) { + if (itemList != null && itemList.getType() != Material.AIR) { + items.add(ItemStackUtil.serializeItemStack(itemList)); + } + } + + entityData.setInventory(items.toArray(new String[0])); + } + } else if (entity instanceof Hanging) { + if (entity instanceof ItemFrame) { + ItemFrame itemFrame = ((ItemFrame) entity); + ItemStack is = itemFrame.getItem(); + + if (is == null) { + entityData.setItem(""); + } else { + entityData.setItem(ItemStackUtil.serializeItemStack(is)); + } + + entityData.setRotate(itemFrame.getRotation().toString()); + } else if (entity instanceof Painting) { + entityData.setArt(((Painting) entity).getArt().toString()); + } + } + + return entityData; + } + + public static void convertEntityDataToEntity(EntityData entityData, Location loc, BlockDegreesType type) { + Entity entity = loc.getWorld().spawnEntity(loc, EntityType.valueOf(entityData.getEntityType().toUpperCase())); + entity.setCustomName(entityData.getCustomName()); + entity.setCustomNameVisible(entityData.isCustomNameVisible()); + entity.setFireTicks(entityData.getFireTicks()); + entity.setTicksLived(entityData.getTicksLived()); + + if (entity instanceof ArmorStand) { + ArmorStand armorStand = (ArmorStand) entity; + armorStand.setArms(entityData.hasArms()); + + if (entityData.getHand() != null && !entityData.getHand().isEmpty()) { + armorStand.setItemInHand(ItemStackUtil.deserializeItemStack(entityData.getHand())); + } + + if (entityData.getHelmet() != null && !entityData.getHelmet().isEmpty()) { + armorStand.setHelmet(ItemStackUtil.deserializeItemStack(entityData.getHelmet())); + } + + if (entityData.getChestplate() != null && !entityData.getChestplate().isEmpty()) { + armorStand.setChestplate(ItemStackUtil.deserializeItemStack(entityData.getChestplate())); + } + + if (entityData.getLeggings() != null && !entityData.getLeggings().isEmpty()) { + armorStand.setLeggings(ItemStackUtil.deserializeItemStack(entityData.getLeggings())); + } + + if (entityData.getBoots() != null && !entityData.getBoots().isEmpty()) { + armorStand.setBoots(ItemStackUtil.deserializeItemStack(entityData.getBoots())); + } + + armorStand.setBasePlate(entityData.hasBasePlate()); + armorStand.setVisible(entityData.isVisible()); + armorStand.setSmall(entityData.isSmall()); + armorStand.setMarker(entityData.isMarker()); + + String[] bodyPose = entityData.getBodyPose().split(" "); + armorStand.setBodyPose(new EulerAngle(Double.parseDouble(bodyPose[0]), Double.parseDouble(bodyPose[1]), + Double.parseDouble(bodyPose[2]))); + + String[] headPose = entityData.getHeadPose().split(" "); + armorStand.setHeadPose(new EulerAngle(Double.parseDouble(headPose[0]), Double.parseDouble(headPose[1]), + Double.parseDouble(headPose[2]))); + + String[] leftArmPose = entityData.getLeftArmPose().split(" "); + armorStand.setLeftArmPose(new EulerAngle(Double.parseDouble(leftArmPose[0]), + Double.parseDouble(leftArmPose[1]), Double.parseDouble(leftArmPose[2]))); + + String[] leftLegPose = entityData.getLeftLegPose().split(" "); + armorStand.setLeftLegPose(new EulerAngle(Double.parseDouble(leftLegPose[0]), + Double.parseDouble(leftLegPose[1]), Double.parseDouble(leftLegPose[2]))); + + String[] rightArmPose = entityData.getRightArmPose().split(" "); + armorStand.setRightArmPose(new EulerAngle(Double.parseDouble(rightArmPose[0]), + Double.parseDouble(rightArmPose[1]), Double.parseDouble(rightArmPose[2]))); + + String[] rightLegPose = entityData.getRightLegPose().split(" "); + armorStand.setRightLegPose(new EulerAngle(Double.parseDouble(rightLegPose[0]), + Double.parseDouble(rightLegPose[1]), Double.parseDouble(rightLegPose[2]))); + } + + int NMSVersion = NMSUtil.getVersionNumber(); + + if (entity instanceof LivingEntity) { + LivingEntity livingEntity = (LivingEntity) entity; + EntityEquipment entityEquipment = livingEntity.getEquipment(); + + if (NMSVersion > 8) { + if (NMSVersion > 9) { + livingEntity.setAI(entityData.hasAI()); + } + + if (entityData.getHand() != null && !entityData.getHand().isEmpty()) { + entityEquipment.setItemInMainHand(ItemStackUtil.deserializeItemStack(entityData.getHand())); + } + + if (entityData.getOffHand() != null && !entityData.getOffHand().isEmpty()) { + entityEquipment.setItemInOffHand(ItemStackUtil.deserializeItemStack(entityData.getOffHand())); + } + + entityEquipment.setItemInMainHandDropChance(entityData.getHandChance()); + entityEquipment.setItemInOffHandDropChance(entityData.getOffHandChance()); + } else { + if (entityData.getHand() != null && !entityData.getHand().isEmpty()) { + entityEquipment.setItemInHand(ItemStackUtil.deserializeItemStack(entityData.getHand())); + } + + entityEquipment.setItemInHandDropChance(entityData.getHandChance()); + } + + if (entityData.getHelmet() != null && !entityData.getHelmet().isEmpty()) { + entityEquipment.setHelmet(ItemStackUtil.deserializeItemStack(entityData.getHelmet())); + } + + if (entityData.getChestplate() != null && !entityData.getChestplate().isEmpty()) { + entityEquipment.setChestplate(ItemStackUtil.deserializeItemStack(entityData.getChestplate())); + } + + if (entityData.getLeggings() != null && !entityData.getLeggings().isEmpty()) { + entityEquipment.setLeggings(ItemStackUtil.deserializeItemStack(entityData.getLeggings())); + } + + if (entityData.getBoots() != null && !entityData.getBoots().isEmpty()) { + entityEquipment.setBoots(ItemStackUtil.deserializeItemStack(entityData.getBoots())); + } + + entityEquipment.setHelmetDropChance(entityData.getHelmetChance()); + entityEquipment.setChestplateDropChance(entityData.getChestplateChance()); + entityEquipment.setLeggingsDropChance(entityData.getLeggingsChance()); + entityEquipment.setBootsDropChance(entityData.getBootsChance()); + + if (entity instanceof Bat) { + ((Bat) entity).setAwake(entityData.isAwake()); + } else if (entity instanceof Creeper) { + ((Creeper) entity).setPowered(entityData.isPowered()); + } else if (entity instanceof Enderman) { + if (entityData.getCarryBlock() != null && !entityData.getCarryBlock().isEmpty()) { + String[] materialData = entityData.getCarryBlock().split(":"); + + byte data = Byte.parseByte(materialData[1]); + Material material = MaterialUtil.getMaterial(NMSVersion, entityData.getVersion(), + materialData[0].toUpperCase(), data); + + if (material != null) { + if (NMSVersion > 12) { + ((Enderman) entity).setCarriedBlock(Bukkit.getServer().createBlockData(material)); + } else { + ((Enderman) entity).setCarriedMaterial(new MaterialData(material, data)); + } + } + } + } else if (entity instanceof Horse) { + Horse horse = ((Horse) entity); + horse.setColor(Horse.Color.valueOf(entityData.getHorseColor().toUpperCase())); + horse.setStyle(Horse.Style.valueOf(entityData.getHorseStyle().toUpperCase())); + + List items = new ArrayList<>(); + + for (String inventoryList : entityData.getInventory()) { + items.add(ItemStackUtil.deserializeItemStack(inventoryList)); + } + + horse.getInventory().setContents(items.toArray(new ItemStack[0])); + } else if (entity instanceof IronGolem) { + ((IronGolem) entity).setPlayerCreated(entityData.isCreatedByPlayer()); + } else if (entity instanceof Ocelot) { + ((Ocelot) entity).setCatType(Ocelot.Type.valueOf(entityData.getOcelotType().toUpperCase())); + } else if (entity instanceof Pig) { + ((Pig) entity).setSaddle(entityData.hasSaddle()); + } else if (entity instanceof Zombie) { + ((Zombie) entity).setBaby(entityData.isBaby()); + } else if (entity instanceof PigZombie) { + PigZombie pigZombie = ((PigZombie) entity); + pigZombie.setAngry(entityData.isAngry()); + pigZombie.setAnger(entityData.getAngerLevel()); + } else if (entity instanceof Rabbit) { + ((Rabbit) entity).setRabbitType(Rabbit.Type.valueOf(entityData.getRabbitType().toUpperCase())); + } else if (entity instanceof Sheep) { + Sheep sheep = ((Sheep) entity); + sheep.setSheared(entityData.isSheared()); + sheep.setColor(DyeColor.valueOf(entityData.getColor().toUpperCase())); + } else if (entity instanceof Slime) { + ((Slime) entity).setSize(entityData.getSlimeSize()); + } else if (entity instanceof Snowman) { + ((Snowman) entity).setDerp(entityData.isDerp()); + } else if (entity instanceof Villager) { + Villager villager = ((Villager) entity); + villager.setProfession(Villager.Profession.valueOf(entityData.getProfession().toUpperCase())); + + List items = new ArrayList<>(); + + for (String inventoryList : entityData.getInventory()) { + items.add(ItemStackUtil.deserializeItemStack(inventoryList)); + } + + villager.getInventory().setContents(items.toArray(new ItemStack[0])); + } + + if (NMSVersion > 10) { + if (entity instanceof Llama) { + Llama llama = ((Llama) entity); + llama.setColor(Llama.Color.valueOf(entityData.getLlamaColor().toUpperCase())); + llama.setStrength(entityData.getLlamaStrength()); + + List items = new ArrayList<>(); + + for (String inventoryList : entityData.getInventory()) { + items.add(ItemStackUtil.deserializeItemStack(inventoryList)); + } + + llama.getInventory().setContents(items.toArray(new ItemStack[0])); + } + + if (NMSVersion > 11) { + if (entity instanceof Parrot) { + ((Parrot) entity) + .setVariant(Parrot.Variant.valueOf(entityData.getParrotVariant().toUpperCase())); + } + } + } + } + + if (entity instanceof Ageable) { + Ageable ageable = ((Ageable) entity); + ageable.setBreed(entityData.canBreed()); + ageable.setAge(entityData.getAge()); + ageable.setAgeLock(entityData.isAgeLock()); + + if (!entityData.isBaby()) { + ageable.setAdult(); + } + } else if (entity instanceof Vehicle) { + if (entity instanceof Boat) { + ((Boat) entity).setWoodType(TreeSpecies.valueOf(entityData.getWoodType().toUpperCase())); + } else if (entity instanceof StorageMinecart || entity instanceof HopperMinecart) { + + List items = new ArrayList<>(); + + for (String inventoryList : entityData.getInventory()) { + items.add(ItemStackUtil.deserializeItemStack(inventoryList)); + } + + ((InventoryHolder) entity).getInventory().setContents(items.toArray(new ItemStack[0])); + } + } else if (entity instanceof Hanging) { + if (entity instanceof ItemFrame) { + ItemFrame itemFrame = ((ItemFrame) entity); + + if (0 < entityData.getItem().length()) { + itemFrame.setItem(ItemStackUtil.deserializeItemStack(entityData.getItem())); + } + + itemFrame.setRotation(Rotation.valueOf(entityData.getRotate().toUpperCase())); + } else if (entity instanceof Painting) { + ((Painting) entity).setArt(Art.valueOf(entityData.getArt())); + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/Visit.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/Visit.java new file mode 100644 index 00000000..d175e9ac --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/Visit.java @@ -0,0 +1,230 @@ +package com.songoda.skyblock.visit; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.ban.Ban; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandLocation; +import com.songoda.skyblock.island.IslandWorld; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +public class Visit { + + private final SkyBlock skyblock; + private final IslandLevel islandLevel; + private UUID islandOwnerUUID; + private String islandOwnerName; + private IslandLocation[] islandLocations; + private int islandSize; + private int islandMembers; + private int safeLevel; + private double islandBankBalance; + private List islandSignature; + + private boolean open; + + protected Visit(SkyBlock skyblock, UUID islandOwnerUUID, IslandLocation[] islandLocations, int islandSize, + int islandMembers, double islandBankBalance, int safeLevel, IslandLevel islandLevel, List islandSignature, boolean open) { + this.skyblock = skyblock; + this.islandOwnerUUID = islandOwnerUUID; + this.islandLocations = islandLocations; + this.islandSize = islandSize; + this.islandMembers = islandMembers; + this.islandBankBalance = islandBankBalance; + this.safeLevel = safeLevel; + this.islandLevel = islandLevel; + this.islandSignature = islandSignature; + this.open = open; + } + + public UUID getOwnerUUID() { + return islandOwnerUUID; + } + + public void setOwnerUUID(UUID islandOwnerUUID) { + this.islandOwnerUUID = islandOwnerUUID; + } + + public String getOwnerName() { + return islandOwnerName; + } + + public void setOwnerName(String islandOwnerName) { + this.islandOwnerName = islandOwnerName; + } + + public IslandLocation getLocation(IslandWorld world) { + switch (world) { + case End: + return islandLocations[2]; + case Nether: + return islandLocations[1]; + case Normal: + return islandLocations[0]; + } + + return null; + } + + public int getMembers() { + return islandMembers; + } + + public void setMembers(int islandMembers) { + this.islandMembers = islandMembers; + } + + public int getSafeLevel() { + return safeLevel; + } + + public void setSafeLevel(int safeLevel) { + this.safeLevel = safeLevel; + } + + public int getRadius() { + return islandSize; + } + + public void setSize(int islandSize) { + this.islandSize = islandSize; + } + + public double getBankBalance() { + return this.islandBankBalance; + } + + public IslandLevel getLevel() { + return islandLevel; + } + + public boolean isVisitor(UUID uuid) { + return getVisitors().contains(uuid); + } + + public Set getVisitors() { + Set islandVisitors = new HashSet<>(); + + for (String islandVisitorList : skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration().getStringList("Visitors")) { + islandVisitors.add(UUID.fromString(islandVisitorList)); + } + + return islandVisitors; + } + + public void addVisitor(UUID uuid) { + List islandVisitors = new ArrayList<>(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration(); + + for (String islandVisitorList : configLoad.getStringList("Visitors")) { + islandVisitors.add(islandVisitorList); + } + + islandVisitors.add(uuid.toString()); + configLoad.set("Visitors", islandVisitors); + } + + public void removeVisitor(UUID uuid) { + List islandVisitors = new ArrayList<>(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration(); + + for (String islandVisitorList : configLoad.getStringList("Visitors")) { + islandVisitors.add(islandVisitorList); + } + + islandVisitors.remove(uuid.toString()); + configLoad.set("Visitors", islandVisitors); + } + + public boolean isVoter(UUID uuid) { + return getVoters().contains(uuid); + } + + public Set getVoters() { + Set islandVoters = new HashSet<>(); + + for (String islandVisitorList : skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration().getStringList("Voters")) { + islandVoters.add(UUID.fromString(islandVisitorList)); + } + + return islandVoters; + } + + public void addVoter(UUID uuid) { + List islandVoters = new ArrayList<>(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration(); + + for (String islandVoterList : configLoad.getStringList("Voters")) { + islandVoters.add(islandVoterList); + } + + islandVoters.add(uuid.toString()); + configLoad.set("Voters", islandVoters); + } + + public void removeVoter(UUID uuid) { + List islandVoters = new ArrayList<>(); + FileConfiguration configLoad = skyblock.getFileManager() + .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")) + .getFileConfiguration(); + + for (String islandVoterList : configLoad.getStringList("Voters")) { + if (!uuid.toString().equals(islandVoterList)) { + islandVoters.add(islandVoterList); + } + } + + configLoad.set("Voters", islandVoters); + } + + public List getSiganture() { + return islandSignature; + } + + public void setSignature(List islandSignature) { + this.islandSignature = islandSignature; + } + + public boolean isOpen() { + return open; + } + + public void setOpen(boolean open) { + this.open = open; + } + + public Ban getBan() { + return skyblock.getBanManager().getIsland(getOwnerUUID()); + } + + public void save() { + FileManager.Config config = skyblock.getFileManager().getConfig(new File( + new File(skyblock.getDataFolder().toString() + "/visit-data"), islandOwnerUUID.toString() + ".yml")); + + try { + config.getFileConfiguration().save(config.getFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/VisitManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/VisitManager.java new file mode 100644 index 00000000..c49d3419 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/VisitManager.java @@ -0,0 +1,245 @@ +package com.songoda.skyblock.visit; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandLocation; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.utils.version.Sounds; +import com.songoda.skyblock.utils.world.LocationUtil; +import com.songoda.skyblock.world.WorldManager; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +public class VisitManager { + + private final SkyBlock skyblock; + private HashMap visitStorage = new HashMap<>(); + + public VisitManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + loadIslands(); + } + + public void onDisable() { + HashMap visitIslands = getIslands(); + + for (UUID visitIslandList : visitIslands.keySet()) { + Visit visit = visitIslands.get(visitIslandList); + visit.save(); + } + } + + public void loadIslands() { + WorldManager worldManager = skyblock.getWorldManager(); + FileManager fileManager = skyblock.getFileManager(); + + if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() + .getBoolean("Island.Visitor.Unload")) { + File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); + + if (!configFile.exists()) return; + + for (File fileList : configFile.listFiles()) { + if (fileList != null && fileList.getName().contains(".yml") && fileList.getName().length() > 35) { + try { + FileManager.Config config = new FileManager.Config(fileManager, fileList); + FileConfiguration configLoad = config.getFileConfiguration(); + + UUID islandOwnerUUID = UUID.fromString(fileList.getName().replace(".yml", "")); + + if (islandOwnerUUID == null) { + islandOwnerUUID = UUID.fromString(fileList.getName().replaceFirst("[.][^.]+$", "")); + + if (islandOwnerUUID == null) { + continue; + } + } + + List islandSignature = new ArrayList<>(); + + if (configLoad.getString("Visitor.Signature.Message") != null) { + islandSignature = configLoad.getStringList("Visitor.Signature.Message"); + } + + int size = 100; + + if (configLoad.getString("Size") != null) { + size = configLoad.getInt("Size"); + } + + createIsland(islandOwnerUUID, + new IslandLocation[]{ + new IslandLocation(IslandWorld.Normal, null, + worldManager.getLocation(fileManager.getLocation(config, + "Location.Normal.Island", true), IslandWorld.Normal)), + new IslandLocation(IslandWorld.Nether, null, + worldManager.getLocation(fileManager.getLocation(config, + "Location.Nether.Island", true), IslandWorld.Nether)), + new IslandLocation(IslandWorld.End, null, + worldManager.getLocation(fileManager.getLocation(config, + "Location.Nether.Island", true), IslandWorld.End))}, + size, + configLoad.getStringList("Members").size() + + configLoad.getStringList("Operators").size() + 1, + configLoad.getDouble("Bank.Balance", 0), + getIslandSafeLevel(islandOwnerUUID), new IslandLevel(islandOwnerUUID, skyblock), + islandSignature, configLoad.getBoolean("Visitor.Open")); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + } + + public void transfer(UUID uuid1, UUID uuid2) { + Visit visit = getIsland(uuid1); + visit.setOwnerUUID(uuid2); + visit.getLevel().setOwnerUUID(uuid2); + visit.save(); + + File oldVisitDataFile = new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + uuid1.toString() + ".yml"); + File newVisitDataFile = new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + uuid2.toString() + ".yml"); + + skyblock.getFileManager().unloadConfig(oldVisitDataFile); + skyblock.getFileManager().unloadConfig(newVisitDataFile); + + oldVisitDataFile.renameTo(newVisitDataFile); + + removeIsland(uuid1); + addIsland(uuid2, visit); + } + + public void removeVisitors(Island island, VisitManager.Removal removal) { + MessageManager messageManager = skyblock.getMessageManager(); + SoundManager soundManager = skyblock.getSoundManager(); + FileManager fileManager = skyblock.getFileManager(); + + FileManager.Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + for (UUID visitorList : skyblock.getIslandManager().getVisitorsAtIsland(island)) { + Player targetPlayer = Bukkit.getServer().getPlayer(visitorList); + + LocationUtil.teleportPlayerToSpawn(targetPlayer); + + messageManager.sendMessage(targetPlayer, + configLoad.getString("Island.Visit." + removal.name() + ".Message")); + soundManager.playSound(targetPlayer, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); + } + } + + public int getIslandSafeLevel(UUID islandOwnerUUID) { + FileManager fileManager = skyblock.getFileManager(); + + FileManager.Config settingDataConfig = new FileManager.Config(fileManager, + new File(skyblock.getDataFolder().toString() + "/setting-data", islandOwnerUUID.toString() + ".yml")); + FileConfiguration settingDataConfigLoad = settingDataConfig.getFileConfiguration(); + + FileManager.Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); + + int safeLevel = 0; + + Map settings = new HashMap<>(); + settings.put("KeepItemsOnDeath", false); + settings.put("PvP", true); + settings.put("Damage", true); + + for (String settingList : settings.keySet()) { + if (mainConfigLoad.getBoolean("Island.Settings." + settingList + ".Enable") + && settingDataConfigLoad.getString("Settings.Owner." + settingList) != null + && settingDataConfigLoad.getBoolean("Settings.Owner." + settingList) == settings.get(settingList)) { + safeLevel++; + } + } + + return safeLevel; + } + + public boolean hasIsland(UUID islandOwnerUUID) { + return visitStorage.containsKey(islandOwnerUUID); + } + + public Visit getIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + return visitStorage.get(islandOwnerUUID); + } + + return null; + } + + public HashMap getIslands() { + return visitStorage; + } + + public Map getOpenIslands() { + Map visitIslands = new ConcurrentHashMap<>(); + visitIslands.putAll(visitStorage); + + Iterator it = visitIslands.keySet().iterator(); + + while (it.hasNext()) { + UUID islandOwnerUUID = it.next(); + Visit visit = visitIslands.get(islandOwnerUUID); + + if (!visit.isOpen()) { + visitIslands.remove(islandOwnerUUID); + } + } + + return visitIslands; + } + + public void createIsland(UUID islandOwnerUUID, IslandLocation[] islandLocations, int islandSize, int islandMembers, + double islandBankBalance, int safeLevel, IslandLevel islandLevel, List islandSignature, boolean open) { + visitStorage.put(islandOwnerUUID, new Visit(skyblock, islandOwnerUUID, islandLocations, islandSize, + islandMembers, islandBankBalance, safeLevel, islandLevel, islandSignature, open)); + } + + public void addIsland(UUID islandOwnerUUID, Visit visit) { + visitStorage.put(islandOwnerUUID, visit); + } + + public void removeIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + visitStorage.remove(islandOwnerUUID); + } + } + + public void unloadIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + skyblock.getFileManager() + .unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")); + visitStorage.remove(islandOwnerUUID); + } + } + + public void deleteIsland(UUID islandOwnerUUID) { + if (hasIsland(islandOwnerUUID)) { + skyblock.getFileManager() + .deleteConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), + islandOwnerUUID.toString() + ".yml")); + visitStorage.remove(islandOwnerUUID); + } + } + + public enum Removal { + + Unloaded, Kicked, Deleted + + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/VisitTask.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/VisitTask.java new file mode 100644 index 00000000..c0c014d8 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/visit/VisitTask.java @@ -0,0 +1,29 @@ +package com.songoda.skyblock.visit; + +import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.playerdata.PlayerDataManager; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class VisitTask extends BukkitRunnable { + + private final PlayerDataManager playerDataManager; + + public VisitTask(PlayerDataManager playerManager) { + this.playerDataManager = playerManager; + } + + @Override + public void run() { + for (Player all : Bukkit.getOnlinePlayers()) { + if (playerDataManager.hasPlayerData(all)) { + PlayerData playerData = playerDataManager.getPlayerData(all); + + if (playerData.getIsland() != null) { + playerData.setVisitTime(playerData.getVisitTime() + 1); + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/world/WorldManager.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/world/WorldManager.java new file mode 100644 index 00000000..dc8236b0 --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/world/WorldManager.java @@ -0,0 +1,132 @@ +package com.songoda.skyblock.world; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.world.generator.VoidGenerator; +import org.bukkit.*; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.File; +import java.util.logging.Level; + +public class WorldManager { + + private final SkyBlock skyblock; + + private org.bukkit.World normalWorld; + private org.bukkit.World netherWorld; + private org.bukkit.World endWorld; + + public WorldManager(SkyBlock skyblock) { + this.skyblock = skyblock; + + loadWorlds(); + } + + public void loadWorlds() { + FileManager.Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + String normalWorldName = configLoad.getString("Island.World.Normal.Name"); + String netherWorldName = configLoad.getString("Island.World.Nether.Name"); + String endWorldName = configLoad.getString("Island.World.End.Name"); + + boolean netherWorldEnabled = configLoad.getBoolean("Island.World.Nether.Enable"); + boolean endWorldEnabled = configLoad.getBoolean("Island.World.End.Enable"); + + World.Environment normalWorldEnvironment = World.Environment.valueOf(configLoad.getString("Island.World.Normal.Environment")); + World.Environment netherWorldEnvironment = World.Environment.valueOf(configLoad.getString("Island.World.Nether.Environment")); + World.Environment endWorldEnvironment = World.Environment.valueOf(configLoad.getString("Island.World.End.Environment")); + + normalWorld = Bukkit.getServer().getWorld(normalWorldName); + netherWorld = Bukkit.getServer().getWorld(netherWorldName); + endWorld = Bukkit.getServer().getWorld(endWorldName); + + if (normalWorld == null) { + Bukkit.getServer().getLogger().log(Level.INFO, + "SkyBlock | Info: Generating VoidWorld '" + normalWorldName + "'."); + normalWorld = WorldCreator.name(normalWorldName).type(WorldType.FLAT).environment(normalWorldEnvironment) + .generator(new VoidGenerator()).createWorld(); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> registerMultiverse(normalWorldName, normalWorldEnvironment)); + } + + if (netherWorld == null && netherWorldEnabled) { + Bukkit.getServer().getLogger().log(Level.INFO, + "SkyBlock | Info: Generating VoidWorld '" + netherWorldName + "'."); + netherWorld = WorldCreator.name(netherWorldName).type(WorldType.FLAT).environment(netherWorldEnvironment) + .generator(new VoidGenerator()).createWorld(); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> registerMultiverse(netherWorldName, netherWorldEnvironment)); + } + + if (endWorld == null && endWorldEnabled) { + Bukkit.getServer().getLogger().log(Level.INFO, + "SkyBlock | Info: Generating VoidWorld '" + endWorldName + "'."); + endWorld = WorldCreator.name(endWorldName).type(WorldType.FLAT).environment(endWorldEnvironment) + .generator(new VoidGenerator()).createWorld(); + + Bukkit.getServer().getScheduler().runTask(skyblock, () -> registerMultiverse(endWorldName, endWorldEnvironment)); + } + } + + public void registerMultiverse(String worldName, World.Environment environment) { + if (Bukkit.getServer().getPluginManager().getPlugin("Multiverse-Core") != null) { + Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + "mv import " + worldName + " " + environment.name().toLowerCase() + " -g " + skyblock.getName()); + Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + "mv modify set generator " + skyblock.getName() + " " + worldName); + } + } + + public World getWorld(IslandWorld world) { + if (world == IslandWorld.Normal) { + return normalWorld; + } else if (world == IslandWorld.Nether) { + return netherWorld; + } else if (world == IslandWorld.End) { + return endWorld; + } + + return null; + } + + public IslandWorld getIslandWorld(World world) { + if (world == null) { + return null; + } + + if (normalWorld != null && normalWorld.getName().equals(world.getName())) + return IslandWorld.Normal; + + if (netherWorld != null && netherWorld.getName().equals(world.getName())) + return IslandWorld.Nether; + + if (endWorld != null && endWorld.getName().equals(world.getName())) + return IslandWorld.End; + + return null; + } + + public boolean isIslandWorld(World world) { + if (world == null) + return false; + + if (normalWorld != null && normalWorld.getName().equals(world.getName())) + return true; + + if (netherWorld != null && netherWorld.getName().equals(world.getName())) + return true; + + return endWorld != null && endWorld.getName().equals(world.getName()); + } + + public Location getLocation(Location location, IslandWorld world) { + if (location != null && location.getWorld() == null) { + location.setWorld(getWorld(world)); + } + + return location; + } +} diff --git a/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/world/generator/VoidGenerator.java b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/world/generator/VoidGenerator.java new file mode 100644 index 00000000..41ad509a --- /dev/null +++ b/FabledSkyBlock/Core/src/main/java/com/songoda/skyblock/world/generator/VoidGenerator.java @@ -0,0 +1,71 @@ +package com.songoda.skyblock.world.generator; + +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager.Config; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.utils.version.Materials; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.ChunkGenerator; + +import java.io.File; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +public class VoidGenerator extends ChunkGenerator { + + @Override + public ChunkData generateChunkData(World world, Random random, int chunkX, int chunkZ, BiomeGrid biome) { + ChunkData chunkData = createChunkData(world); + + SkyBlock skyblock = SkyBlock.getInstance(); + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + for (IslandWorld worldList : IslandWorld.values()) { + if (world.getEnvironment() == worldList.getUncheckedEnvironment()) { + if (configLoad.getBoolean("Island.World." + worldList.name() + ".Liquid.Enable")) { + if (configLoad.getBoolean("Island.World." + worldList.name() + ".Liquid.Lava")) { + setBlock(chunkData, Materials.LEGACY_STATIONARY_LAVA.parseMaterial(), + configLoad.getInt("Island.World." + worldList.name() + ".Liquid.Height")); + } else { + setBlock(chunkData, Materials.LEGACY_STATIONARY_WATER.parseMaterial(), + configLoad.getInt("Island.World." + worldList.name() + ".Liquid.Height")); + } + } + + break; + } + } + + return chunkData; + } + + @Override + public List getDefaultPopulators(final World world) { + return Arrays.asList(new BlockPopulator[0]); + } + + @Override + public boolean canSpawn(World world, int x, int z) { + return true; + } + + public byte[][] generateBlockSections(World world, Random random, int chunkX, int chunkZ, BiomeGrid biomeGrid) { + return new byte[world.getMaxHeight() / 16][]; + } + + private void setBlock(ChunkData chunkData, Material material, int height) { + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + for (int y = 0; y < height; y++) { + chunkData.setBlock(x, y, z, material); + } + } + } + } +} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/SkyBlock.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/SkyBlock.java deleted file mode 100644 index 57fd6c06..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/SkyBlock.java +++ /dev/null @@ -1,336 +0,0 @@ -package me.goodandevil.skyblock; - -import com.songoda.update.Plugin; -import com.songoda.update.SongodaUpdate; -import me.goodandevil.skyblock.api.SkyBlockAPI; -import me.goodandevil.skyblock.ban.BanManager; -import me.goodandevil.skyblock.biome.BiomeManager; -import me.goodandevil.skyblock.command.CommandManager; -import me.goodandevil.skyblock.command.commands.SkyBlockCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.confirmation.ConfirmationTask; -import me.goodandevil.skyblock.cooldown.CooldownManager; -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; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.limit.LimitManager; -import me.goodandevil.skyblock.listeners.*; -import me.goodandevil.skyblock.menus.Rollback; -import me.goodandevil.skyblock.menus.admin.Creator; -import me.goodandevil.skyblock.menus.admin.Generator; -import me.goodandevil.skyblock.menus.admin.Levelling; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.PlaceholderManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.playtime.PlaytimeTask; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.stackable.StackableManager; -import me.goodandevil.skyblock.structure.StructureManager; -import me.goodandevil.skyblock.upgrade.UpgradeManager; -import me.goodandevil.skyblock.usercache.UserCacheManager; -import me.goodandevil.skyblock.utils.Metrics; -import me.goodandevil.skyblock.visit.VisitManager; -import me.goodandevil.skyblock.visit.VisitTask; -import me.goodandevil.skyblock.world.WorldManager; -import me.goodandevil.skyblock.world.generator.VoidGenerator; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.event.HandlerList; -import org.bukkit.generator.ChunkGenerator; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; - -import java.io.File; - -public class SkyBlock extends JavaPlugin { - - private static SkyBlock instance; - - private FileManager fileManager; - private WorldManager worldManager; - private UserCacheManager userCacheManager; - private VisitManager visitManager; - private BanManager banManager; - private IslandManager islandManager; - private UpgradeManager upgradeManager; - private PlayerDataManager playerDataManager; - private CooldownManager cooldownManager; - private LimitManager limitManager; - private ScoreboardManager scoreboardManager; - private InviteManager inviteManager; - private BiomeManager biomeManager; - private LevellingManager levellingManager; - private CommandManager commandManager; - private StructureManager structureManager; - private StackableManager stackableManager; - private SoundManager soundManager; - private GeneratorManager generatorManager; - private LeaderboardManager leaderboardManager; - private PlaceholderManager placeholderManager; - private MessageManager messageManager; - private EconomyManager economyManager; - private HologramManager hologramManager; - - @Override - public void onEnable() { - ConsoleCommandSender console = Bukkit.getConsoleSender(); - console.sendMessage(formatText("&a=============================")); - console.sendMessage(formatText("&7FabledSkyBlock " + this.getDescription().getVersion() + " by &5Songoda <3&7!")); - console.sendMessage(formatText("&7Action: &aEnabling&7...")); - console.sendMessage(formatText("&a=============================")); - - instance = this; - - fileManager = new FileManager(this); - worldManager = new WorldManager(this); - userCacheManager = new UserCacheManager(this); - economyManager = new EconomyManager(); - visitManager = new VisitManager(this); - banManager = new BanManager(this); - islandManager = new IslandManager(this); - upgradeManager = new UpgradeManager(this); - playerDataManager = new PlayerDataManager(this); - cooldownManager = new CooldownManager(this); - limitManager = new LimitManager(this); - - if (fileManager.getConfig(new File(getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Scoreboard.Enable")) { - scoreboardManager = new ScoreboardManager(this); - } - - inviteManager = new InviteManager(this); - biomeManager = new BiomeManager(this); - levellingManager = new LevellingManager(this); - commandManager = new CommandManager(this); - structureManager = new StructureManager(this); - soundManager = new SoundManager(this); - - if (fileManager.getConfig(new File(getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Generator.Enable")) { - generatorManager = new GeneratorManager(this); - } - - if (fileManager.getConfig(new File(getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Stackable.Enable")) { - stackableManager = new StackableManager(this); - Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> stackableManager.loadSavedStackables(), 5L); - } - - leaderboardManager = new LeaderboardManager(this); - - placeholderManager = new PlaceholderManager(this); - placeholderManager.registerPlaceholders(); - - messageManager = new MessageManager(this); - hologramManager = new HologramManager(this); - - new PlaytimeTask(playerDataManager, islandManager).runTaskTimerAsynchronously(this, 0L, 20L); - new VisitTask(playerDataManager).runTaskTimerAsynchronously(this, 0L, 20L); - new ConfirmationTask(playerDataManager).runTaskTimerAsynchronously(this, 0L, 20L); - - PluginManager pluginManager = getServer().getPluginManager(); - pluginManager.registerEvents(new Join(this), this); - pluginManager.registerEvents(new Quit(this), this); - pluginManager.registerEvents(new Block(this), this); - pluginManager.registerEvents(new Interact(this), this); - pluginManager.registerEvents(new Entity(this), this); - pluginManager.registerEvents(new Bucket(this), this); - pluginManager.registerEvents(new Projectile(this), this); - pluginManager.registerEvents(new Inventory(this), this); - pluginManager.registerEvents(new Item(this), this); - pluginManager.registerEvents(new Teleport(this), this); - pluginManager.registerEvents(new Portal(this), this); - pluginManager.registerEvents(new Move(this), this); - pluginManager.registerEvents(new Death(this), this); - pluginManager.registerEvents(new Respawn(this), this); - pluginManager.registerEvents(new Chat(this), this); - pluginManager.registerEvents(new Spawner(this), this); - pluginManager.registerEvents(new Food(this), this); - - if (pluginManager.isPluginEnabled("EpicSpawners")) - pluginManager.registerEvents(new EpicSpawners(this), this); - if (pluginManager.isPluginEnabled("WildStacker")) - pluginManager.registerEvents(new WildStacker(this), this); - if (pluginManager.isPluginEnabled("UltimateStacker")) - pluginManager.registerEvents(new UltimateStacker(this), this); - - pluginManager.registerEvents(new Rollback(), this); - pluginManager.registerEvents(new Levelling(), this); - pluginManager.registerEvents(new Generator(), this); - pluginManager.registerEvents(new Creator(), this); - - this.getCommand("skyblock").setExecutor(new SkyBlockCommand()); - - // bStats Metrics - new Metrics(this); - - // Songoda Updater - Plugin plugin = new Plugin(this, 17); - SongodaUpdate.load(plugin); - - SkyBlockAPI.setImplementation(instance); - } - - @Override - public void onDisable() { - ConsoleCommandSender console = Bukkit.getConsoleSender(); - console.sendMessage(formatText("&a=============================")); - console.sendMessage(formatText("&7FabledSkyBlock " + this.getDescription().getVersion() + " by &5Songoda <3&7!")); - console.sendMessage(formatText("&7Action: &cDisabling&7...")); - console.sendMessage(formatText("&a=============================")); - - if (this.userCacheManager != null) { - this.userCacheManager.onDisable(); - } - - if (this.islandManager != null) { - this.islandManager.onDisable(); - } - - if (this.visitManager != null) { - this.visitManager.onDisable(); - } - - if (this.banManager != null) { - this.banManager.onDisable(); - } - - if (this.playerDataManager != null) { - this.playerDataManager.onDisable(); - } - - if (this.cooldownManager != null) { - this.cooldownManager.onDisable(); - } - - if (this.hologramManager != null) { - this.hologramManager.onDisable(); - } - - HandlerList.unregisterAll(this); - } - - private String formatText(String string){ - return ChatColor.translateAlternateColorCodes('&', string); - } - - public static SkyBlock getInstance() { - return instance; - } - - public FileManager getFileManager() { - return fileManager; - } - - public WorldManager getWorldManager() { - return worldManager; - } - - public UserCacheManager getUserCacheManager() { - return userCacheManager; - } - - public VisitManager getVisitManager() { - return visitManager; - } - - public BanManager getBanManager() { - return banManager; - } - - public IslandManager getIslandManager() { - return islandManager; - } - - public UpgradeManager getUpgradeManager() { - return upgradeManager; - } - - public PlayerDataManager getPlayerDataManager() { - return playerDataManager; - } - - public CooldownManager getCooldownManager() { - return cooldownManager; - } - - public LimitManager getLimitManager() { - return limitManager; - } - - public ScoreboardManager getScoreboardManager() { - return scoreboardManager; - } - - public void setScoreboardManager(ScoreboardManager scoreboardManager) { - this.scoreboardManager = scoreboardManager; - } - - public InviteManager getInviteManager() { - return inviteManager; - } - - public BiomeManager getBiomeManager() { - return biomeManager; - } - - public LevellingManager getLevellingManager() { - return levellingManager; - } - - public CommandManager getCommandManager() { - return commandManager; - } - - public StructureManager getStructureManager() { - return structureManager; - } - - public SoundManager getSoundManager() { - return soundManager; - } - - public GeneratorManager getGeneratorManager() { - return generatorManager; - } - - public void setGeneratorManager(GeneratorManager generatorManager) { - this.generatorManager = generatorManager; - } - - public LeaderboardManager getLeaderboardManager() { - return leaderboardManager; - } - - public PlaceholderManager getPlaceholderManager() { - return placeholderManager; - } - - public MessageManager getMessageManager() { - return messageManager; - } - - public EconomyManager getEconomyManager() { - return economyManager; - } - - public HologramManager getHologramManager() { - return hologramManager; - } - - public StackableManager getStackableManager() { - return stackableManager; - } - - @Override - public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { - return new VoidGenerator(); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/SkyBlockAPI.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/SkyBlockAPI.java deleted file mode 100644 index ce1e46dc..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/SkyBlockAPI.java +++ /dev/null @@ -1,79 +0,0 @@ -package me.goodandevil.skyblock.api; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.biome.BiomeManager; -import me.goodandevil.skyblock.api.island.IslandManager; -import me.goodandevil.skyblock.api.levelling.LevellingManager; -import me.goodandevil.skyblock.api.structure.StructureManager; - -public class SkyBlockAPI { - - private static SkyBlock implementation; - - private static IslandManager islandManager; - private static BiomeManager biomeManager; - private static LevellingManager levellingManager; - private static StructureManager structureManager; - - /** - * @param implementation the implementation to set - */ - public static void setImplementation(SkyBlock implementation) { - if (SkyBlockAPI.implementation != null) { - throw new IllegalArgumentException("Cannot set API implementation twice"); - } - - SkyBlockAPI.implementation = implementation; - } - - /** - * @return The SkyBlock implementation - */ - public static SkyBlock getImplementation() { - return implementation; - } - - /** - * @return The IslandManager implementation - */ - public static IslandManager getIslandManager() { - if (islandManager == null) { - islandManager = new IslandManager(implementation.getIslandManager()); - } - - return islandManager; - } - - /** - * @return The BiomeManager implementation - */ - public static BiomeManager getBiomeManager() { - if (biomeManager == null) { - biomeManager = new BiomeManager(implementation.getBiomeManager()); - } - - return biomeManager; - } - - /** - * @return The LevellingManager implementation - */ - public static LevellingManager getLevellingManager() { - if (levellingManager == null) { - levellingManager = new LevellingManager(implementation.getLevellingManager()); - } - - return levellingManager; - } - - /** - * @return The StructureManager implementation - */ - public static StructureManager getStructureManager() { - if (structureManager == null) { - structureManager = new StructureManager(implementation.getStructureManager()); - } - - return structureManager; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/ban/Ban.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/ban/Ban.java deleted file mode 100644 index 1d204f94..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/ban/Ban.java +++ /dev/null @@ -1,55 +0,0 @@ -package me.goodandevil.skyblock.api.ban; - -import java.util.Set; -import java.util.UUID; - -import com.google.common.base.Preconditions; - -import me.goodandevil.skyblock.api.island.Island; - -public class Ban { - - private final Island handle; - - public Ban(Island handle) { - this.handle = handle; - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isBanned(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); - return getBans().contains(uuid); - } - - /** - * @return A Set of players that have banned from the Island - */ - public Set getBans() { - return handle.getIsland().getBan().getBans(); - } - - /** - * Add a player to the banned players for the Island - */ - public void addBan(UUID issuer, UUID banned) { - Preconditions.checkArgument(banned != null, "Cannot add ban to null banned uuid"); - handle.getIsland().getBan().addBan(issuer, banned); - } - - /** - * Remove a player from the banned players for the Island - */ - public void removeBan(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot remove ban to null uuid"); - handle.getIsland().getBan().removeBan(uuid); - } - - /** - * @return Implementation for the Island - */ - public Island getIsland() { - return handle; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/biome/BiomeManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/biome/BiomeManager.java deleted file mode 100644 index be3adff3..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/biome/BiomeManager.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.goodandevil.skyblock.api.biome; - -import org.bukkit.block.Biome; - -import com.google.common.base.Preconditions; - -import me.goodandevil.skyblock.api.island.Island; - -public class BiomeManager { - - private final me.goodandevil.skyblock.biome.BiomeManager biomeManager; - - public BiomeManager(me.goodandevil.skyblock.biome.BiomeManager biomeManager) { - this.biomeManager = biomeManager; - } - - /** - * Set the Biome of an Island - */ - public void setBiome(Island island, Biome biome) { - Preconditions.checkArgument(island != null, "Cannot set biome to null island"); - Preconditions.checkArgument(biome != null, "Cannot set biome to null biome"); - - this.biomeManager.setBiome(island.getIsland(), biome); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandBanEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandBanEvent.java deleted file mode 100644 index 49f52231..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandBanEvent.java +++ /dev/null @@ -1,48 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.OfflinePlayer; -import org.bukkit.event.Cancellable; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandBanEvent extends IslandEvent implements Cancellable { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean cancelled = false; - private final OfflinePlayer issuer, banned; - - public IslandBanEvent(Island island, OfflinePlayer issuer, OfflinePlayer banned) { - super(island); - this.issuer = issuer; - this.banned = banned; - } - - public OfflinePlayer getIssuer() { - return issuer; - } - - public OfflinePlayer getBanned() { - return banned; - } - - @Override - public void setCancelled(boolean cancel) { - this.cancelled = cancel; - } - - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandBiomeChangeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandBiomeChangeEvent.java deleted file mode 100644 index 42a1faac..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandBiomeChangeEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.block.Biome; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandBiomeChangeEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private Biome biome; - - public IslandBiomeChangeEvent(Island island, Biome biome) { - super(island); - this.biome = biome; - } - - public Biome getBiome() { - return biome; - } - - public void setBiome(Biome biome) { - this.biome = biome; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandCreateEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandCreateEvent.java deleted file mode 100644 index f4f33133..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandCreateEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandCreateEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final Player player; - - public IslandCreateEvent(Island island, Player player) { - super(island, true); - this.player = player; - } - - public Player getPlayer() { - return player; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandDeleteEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandDeleteEvent.java deleted file mode 100644 index ffc43443..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandDeleteEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandDeleteEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - public IslandDeleteEvent(Island island) { - super(island); - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandEvent.java deleted file mode 100644 index c4418f33..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import me.goodandevil.skyblock.api.island.Island; - -import org.bukkit.event.Event; - -public abstract class IslandEvent extends Event { - - private final Island island; - - protected IslandEvent(Island island) { - this.island = island; - } - - protected IslandEvent(Island island, boolean async) { - super(async); - this.island = island; - } - - public Island getIsland() { - return island; - } -} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandInviteEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandInviteEvent.java deleted file mode 100644 index 847cfbc8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandInviteEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.invite.IslandInvitation; -import me.goodandevil.skyblock.api.island.Island; - -public class IslandInviteEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final IslandInvitation invite; - - public IslandInviteEvent(Island island, IslandInvitation invite) { - super(island); - this.invite = invite; - } - - public IslandInvitation getInvite() { - return invite; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandKickEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandKickEvent.java deleted file mode 100644 index 1eab7708..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandKickEvent.java +++ /dev/null @@ -1,55 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.OfflinePlayer; -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; -import me.goodandevil.skyblock.api.island.IslandRole; - -public class IslandKickEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean cancelled = false; - - private final Player kicker; - private final OfflinePlayer kicked; - private final IslandRole role; - - public IslandKickEvent(Island island, IslandRole role, OfflinePlayer kicked, Player kicker) { - super(island); - this.role = role; - this.kicked = kicked; - this.kicker = kicker; - } - - public OfflinePlayer getKicked() { - return kicked; - } - - public Player getKicker() { - return kicker; - } - - public IslandRole getRole() { - return role; - } - - public boolean isCancelled() { - return cancelled; - } - - public void setCancelled(boolean cancel) { - this.cancelled = cancel; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLevelChangeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLevelChangeEvent.java deleted file mode 100644 index aa9d2a9e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLevelChangeEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; -import me.goodandevil.skyblock.api.island.IslandLevel; - -public class IslandLevelChangeEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final IslandLevel level; - - public IslandLevelChangeEvent(Island island, IslandLevel level) { - super(island); - this.level = level; - } - - public IslandLevel getLevel() { - return level; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLoadEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLoadEvent.java deleted file mode 100644 index f575f428..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLoadEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandLoadEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - public IslandLoadEvent(Island island) { - super(island); - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLocationChangeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLocationChangeEvent.java deleted file mode 100644 index 583f031d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandLocationChangeEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; -import me.goodandevil.skyblock.api.island.IslandLocation; - -public class IslandLocationChangeEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final IslandLocation location; - - public IslandLocationChangeEvent(Island island, IslandLocation location) { - super(island, true); - this.location = location; - } - - public IslandLocation getLocation() { - return location; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandMessageChangeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandMessageChangeEvent.java deleted file mode 100644 index c49273c9..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandMessageChangeEvent.java +++ /dev/null @@ -1,65 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import java.util.List; - -import org.bukkit.event.Cancellable; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; -import me.goodandevil.skyblock.api.island.IslandMessage; - -public class IslandMessageChangeEvent extends IslandEvent implements Cancellable { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean cancelled = false; - private final IslandMessage message; - private List lines; - private String author; - - public IslandMessageChangeEvent(Island island, IslandMessage message, List lines, String author) { - super(island); - this.message = message; - this.lines = lines; - this.author = author; - } - - public IslandMessage getMessage() { - return message; - } - - public List getLines() { - return lines; - } - - public void setLines(List lines) { - this.lines = lines; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean cancel) { - this.cancelled = cancel; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandOpenEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandOpenEvent.java deleted file mode 100644 index 374d3338..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandOpenEvent.java +++ /dev/null @@ -1,42 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.Cancellable; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandOpenEvent extends IslandEvent implements Cancellable { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean cancelled = false; - private final boolean open; - - public IslandOpenEvent(Island island, boolean open) { - super(island); - this.open = open; - } - - public boolean isOpen() { - return open; - } - - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean cancelled) { - this.cancelled = cancelled; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandOwnershipTransferEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandOwnershipTransferEvent.java deleted file mode 100644 index b13fd17c..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandOwnershipTransferEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.OfflinePlayer; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandOwnershipTransferEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final OfflinePlayer owner; - - public IslandOwnershipTransferEvent(Island island, OfflinePlayer owner) { - super(island); - this.owner = owner; - } - - public OfflinePlayer getOwner() { - return owner; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandPasswordChangeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandPasswordChangeEvent.java deleted file mode 100644 index 8bb48ab9..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandPasswordChangeEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandPasswordChangeEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private String password; - - public IslandPasswordChangeEvent(Island island, String password) { - super(island); - this.password = password; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandRoleChangeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandRoleChangeEvent.java deleted file mode 100644 index 8433720d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandRoleChangeEvent.java +++ /dev/null @@ -1,38 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.OfflinePlayer; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; -import me.goodandevil.skyblock.api.island.IslandRole; - -public class IslandRoleChangeEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final OfflinePlayer player; - private final IslandRole role; - - public IslandRoleChangeEvent(Island island, OfflinePlayer player, IslandRole role) { - super(island); - this.player = player; - this.role = role; - } - - public OfflinePlayer getPlayer() { - return player; - } - - public IslandRole getRole() { - return role; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUnbanEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUnbanEvent.java deleted file mode 100644 index ce67b44d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUnbanEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.OfflinePlayer; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandUnbanEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final OfflinePlayer unbanned; - - public IslandUnbanEvent(Island island, OfflinePlayer unbanned) { - super(island); - this.unbanned = unbanned; - } - - public OfflinePlayer getUnbanned() { - return unbanned; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUnloadEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUnloadEvent.java deleted file mode 100644 index d3bf9cc8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUnloadEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandUnloadEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - public IslandUnloadEvent(Island island) { - super(island); - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUpgradeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUpgradeEvent.java deleted file mode 100644 index 72afc603..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandUpgradeEvent.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; -import me.goodandevil.skyblock.api.island.IslandUpgrade; - -public class IslandUpgradeEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final Player player; - private IslandUpgrade upgrade; - - public IslandUpgradeEvent(Island island, Player player, IslandUpgrade upgrade) { - super(island); - this.player = player; - } - - public Player getPlayer() { - return player; - } - - public IslandUpgrade getUpgrade() { - return upgrade; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandWeatherChangeEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandWeatherChangeEvent.java deleted file mode 100644 index ab120b01..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/island/IslandWeatherChangeEvent.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.goodandevil.skyblock.api.event.island; - -import org.bukkit.WeatherType; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class IslandWeatherChangeEvent extends IslandEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private WeatherType weather; - private int time; - - private final boolean sync; - - public IslandWeatherChangeEvent(Island island, WeatherType weather, int time, boolean sync) { - super(island); - this.weather = weather; - this.time = time; - this.sync = sync; - } - - public WeatherType getWeather() { - return weather; - } - - public int getTime() { - return time; - } - - public boolean isSync() { - return sync; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerEvent.java deleted file mode 100644 index 323f914f..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.Event; - -import me.goodandevil.skyblock.api.island.Island; - -public abstract class PlayerEvent extends Event { - - private final Player player; - private final Island island; - - protected PlayerEvent(Player player, Island island) { - this.player = player; - this.island = island; - } - - protected PlayerEvent(Player player, Island island, boolean async) { - super(async); - this.player = player; - this.island = island; - } - - public Player getPlayer() { - return player; - } - - public Island getIsland() { - return island; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandChatEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandChatEvent.java deleted file mode 100644 index 4f7abe00..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandChatEvent.java +++ /dev/null @@ -1,54 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class PlayerIslandChatEvent extends PlayerEvent implements Cancellable { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean cancelled = false; - private String message, format; - - public PlayerIslandChatEvent(Player player, Island island, String message, String format) { - super(player, island, true); - this.message = message; - this.format = format; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public boolean isCancelled() { - return cancelled; - } - - public void setCancelled(boolean cancelled) { - this.cancelled = cancelled; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandChatSwitchEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandChatSwitchEvent.java deleted file mode 100644 index fd1a3f6b..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandChatSwitchEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class PlayerIslandChatSwitchEvent extends PlayerEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean chat; - - public PlayerIslandChatSwitchEvent(Player player, Island island, boolean chat) { - super(player, island); - this.chat = chat; - } - - public boolean isChat() { - return chat; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandEnterEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandEnterEvent.java deleted file mode 100644 index 4013c185..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandEnterEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class PlayerIslandEnterEvent extends PlayerEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - public PlayerIslandEnterEvent(Player player, Island island) { - super(player, island); - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandExitEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandExitEvent.java deleted file mode 100644 index 5cf417ae..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandExitEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class PlayerIslandExitEvent extends PlayerEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - public PlayerIslandExitEvent(Player player, Island island) { - super(player, island); - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandJoinEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandJoinEvent.java deleted file mode 100644 index 129ac8c5..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandJoinEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class PlayerIslandJoinEvent extends PlayerEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean cancelled = false; - - public PlayerIslandJoinEvent(Player player, Island island) { - super(player, island); - } - - public boolean isCancelled() { - return cancelled; - } - - public void setCancelled(boolean cancel) { - this.cancelled = cancel; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandLeaveEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandLeaveEvent.java deleted file mode 100644 index d5e3b4ef..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandLeaveEvent.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class PlayerIslandLeaveEvent extends PlayerEvent implements Cancellable { - - private static final HandlerList HANDLERS = new HandlerList(); - - private boolean cancelled = false; - - public PlayerIslandLeaveEvent(Player player, Island island) { - super(player, island); - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public HandlerList getHandlerList() { - return HANDLERS; - } - - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean cancelled) { - this.cancelled = cancelled; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandSwitchEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandSwitchEvent.java deleted file mode 100644 index e9f7fbec..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerIslandSwitchEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; - -import me.goodandevil.skyblock.api.island.Island; - -public class PlayerIslandSwitchEvent extends PlayerEvent { - - private static final HandlerList HANDLERS = new HandlerList(); - - private final Island lastIsland; - - public PlayerIslandSwitchEvent(Player player, Island lastIsland, Island island) { - super(player, island); - this.lastIsland = lastIsland; - } - - public Island getLastIsland() { - return lastIsland; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerWithdrawMoneyEvent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerWithdrawMoneyEvent.java deleted file mode 100644 index 3389b3a2..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/event/player/PlayerWithdrawMoneyEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.goodandevil.skyblock.api.event.player; - -import org.bukkit.entity.Player; -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; - -public class PlayerWithdrawMoneyEvent extends Event { - - private static final HandlerList HANDLERS = new HandlerList(); - - private Player player; - private double money; - - public PlayerWithdrawMoneyEvent(Player player, double money) { - this.player = player; - this.money = money; - } - - public Player getPlayer() { - return player; - } - - public double getMoney() { - return money; - } - - @Override - public HandlerList getHandlers() { - return HANDLERS; - } - - public static HandlerList getHandlerList() { - return HANDLERS; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/invite/IslandInvitation.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/invite/IslandInvitation.java deleted file mode 100644 index 6f66151a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/invite/IslandInvitation.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.goodandevil.skyblock.api.invite; - -import org.bukkit.entity.Player; - -public class IslandInvitation { - - private final Player invited, inviter; - private int time; - - public IslandInvitation(Player invited, Player inviter, int time) { - this.invited = invited; - this.inviter = inviter; - this.time = time; - } - - public Player getInvited() { - return invited; - } - - public Player getInviter() { - return inviter; - } - - public int getTime() { - return time; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/Island.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/Island.java deleted file mode 100644 index 93e3718a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/Island.java +++ /dev/null @@ -1,509 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.Location; -import org.bukkit.OfflinePlayer; -import org.bukkit.WeatherType; -import org.bukkit.World; -import org.bukkit.block.Biome; -import org.bukkit.entity.Player; - -import com.google.common.base.Preconditions; - -import me.goodandevil.skyblock.api.SkyBlockAPI; -import me.goodandevil.skyblock.api.ban.Ban; -import me.goodandevil.skyblock.api.utils.APIUtil; -import me.goodandevil.skyblock.api.visit.Visit; - -public class Island { - - private me.goodandevil.skyblock.island.Island handle; - private OfflinePlayer player; - - public Island(me.goodandevil.skyblock.island.Island handle, OfflinePlayer player) { - this.handle = handle; - this.player = player; - } - - /** - * @return The Island UUID - */ - public UUID getIslandUUID() { - return this.handle.getIslandUUID(); - } - - /** - * @return The Island owner UUID - */ - public UUID getOwnerUUID() { - return this.handle.getOwnerUUID(); - } - - /** - * @return The original Island owner UUID - */ - public UUID getOriginalOwnerUUID() { - return this.handle.getOriginalOwnerUUID(); - } - - /** - * @return The Island size - */ - public int getSize() { - return this.handle.getSize(); - } - - /** - * Set the size of the Island - */ - public void setSize(int size) { - Preconditions.checkArgument(size <= 1000, "Cannot set size to greater than 1000"); - Preconditions.checkArgument(size >= 50, "Cannot set size to less than 50"); - this.handle.setSize(size); - } - - /** - * @return The Island radius - */ - public double getRadius() { - return this.handle.getRadius(); - } - - /** - * @return true if not null, false otherwise - */ - public boolean hasPassword() { - return this.handle.hasPassword(); - } - - /** - * Set the password for ownership - */ - public void setPassword(String password) { - Preconditions.checkArgument(password != null, "Cannot set password to null password"); - this.handle.setPassword(password); - } - - /** - * Get the Location from the World in island world from World in environment. - * - * @return Location of Island - */ - public Location getLocation(IslandWorld world, IslandEnvironment environment) { - Preconditions.checkArgument(world != null, "World in island world null does not exist"); - Preconditions.checkArgument(environment != null, "World in environment null does not exist"); - - return handle.getLocation(APIUtil.toImplementation(world), APIUtil.toImplementation(environment)); - } - - /** - * Set the Location from the World in island world from world in environment - * followed by position - */ - public void setLocation(IslandWorld world, IslandEnvironment environment, int x, int y, int z) { - Preconditions.checkArgument(world != null, "World in island world null does not exist"); - Preconditions.checkArgument(environment != null, "World in environment null does not exist"); - - World bukkitWorld = getLocation(world, environment).getWorld(); - this.handle.setLocation(APIUtil.toImplementation(world), APIUtil.toImplementation(environment), - new Location(bukkitWorld, x, y, z)); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isBorder() { - return this.handle.isBorder(); - } - - /** - * Set the border visible to players for the Island - */ - public void setBorder(boolean border) { - this.handle.setBorder(border); - } - - /** - * @return The color of the Island border - */ - public IslandBorderColor getBorderColor() { - return APIUtil.fromImplementation(this.handle.getBorderColor()); - } - - /** - * Set the border color for the Island - */ - public void setBorderColor(IslandBorderColor color) { - Preconditions.checkArgument(color != null, "IslandBorderColor null does not exist"); - this.handle.setBorderColor(APIUtil.toImplementation(color)); - } - - /** - * @return The biome set for the Island - */ - public Biome getBiome() { - return this.handle.getBiome(); - } - - /** - * Set the biome for the Island - */ - public void setBiome(Biome biome) { - Preconditions.checkArgument(biome != null, "Cannot set biome to null biome"); - this.handle.setBiome(biome); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isDayCycleSynchronizedSynchronized() { - return this.handle.isWeatherSynchronized(); - } - - /** - * Set the Day Cycle of the Island to be Synchronized with the World cycle - */ - public void setDayCycleSynchronzied(boolean sync) { - this.handle.setWeatherSynchronized(sync); - } - - /** - * @return The WeatherType set for the Island - */ - public WeatherType getWeather() { - return this.handle.getWeather(); - } - - /** - * Set the weather for the Island - */ - public void setWeather(WeatherType weatherType) { - Preconditions.checkArgument(weatherType != null, "Cannot set weather to null weather"); - this.handle.setWeather(weatherType); - } - - /** - * @return The time set for the Island - */ - public int getTime() { - return this.handle.getTime(); - } - - /** - * Set the time for the Island - */ - public void setTime(int time) { - this.handle.setTime(time); - } - - /** - * @return A Set of cooped players - */ - public Set getCoopPlayers() { - return this.handle.getCoopPlayers(); - } - - /** - * Add a player to the coop players for the Island - */ - public void addCoopPlayer(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot add coop player to null uuid"); - this.handle.addCoopPlayer(uuid); - } - - /** - * Add a player to the coop players for the Island - */ - public void addCoopPlayer(OfflinePlayer player) { - Preconditions.checkArgument(player != null, "Cannot add coop player to null player"); - this.handle.addCoopPlayer(player.getUniqueId()); - } - - /** - * Remove a player from the coop players for the Island - */ - public void removeCoopPlayer(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot remove coop player to null uuid"); - this.handle.removeCoopPlayer(uuid); - } - - /** - * Remove a player from the coop players for the Island - */ - public void removeCoopPlayer(OfflinePlayer player) { - Preconditions.checkArgument(player != null, "Cannot remove coop player to null player"); - this.handle.removeCoopPlayer(player.getUniqueId()); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isCoopPlayer(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); - return this.handle.isCoopPlayer(uuid); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isCoopPlayer(OfflinePlayer player) { - Preconditions.checkArgument(player != null, "Cannot return condition to null player"); - return this.handle.isCoopPlayer(player.getUniqueId()); - } - - /** - * @return The IslandRole of a player - */ - public IslandRole getRole(OfflinePlayer player) { - Preconditions.checkArgument(player != null, "Cannot get role for null player"); - - for (me.goodandevil.skyblock.island.IslandRole role : me.goodandevil.skyblock.island.IslandRole.values()) { - if (this.handle.hasRole(role, player.getUniqueId())) { - return APIUtil.fromImplementation(role); - } - } - - return null; - } - - /** - * @return A Set of players with IslandRole - */ - public Set getPlayersWithRole(IslandRole role) { - Preconditions.checkArgument(role != null, "Cannot get players will null role"); - return this.handle.getRole(APIUtil.toImplementation(role)); - } - - /** - * Set the IslandRole of a player for the Island - * - * @return true of conditions met, false otherwise - */ - public boolean setRole(OfflinePlayer player, IslandRole role) { - Preconditions.checkArgument(player != null, "Cannot set role of null player"); - return setRole(player.getUniqueId(), role); - } - - /** - * Set the IslandRole of a player for the Island - * - * @return true of conditions met, false otherwise - */ - public boolean setRole(UUID uuid, IslandRole role) { - Preconditions.checkArgument(uuid != null, "Cannot set role of null player"); - Preconditions.checkArgument(role != null, "Cannot set role to null role"); - - return this.handle.setRole(APIUtil.toImplementation(role), uuid); - } - - /** - * Remove the IslandRole of a player for the Island - * - * @return true of conditions met, false otherwise - */ - public boolean removeRole(OfflinePlayer player, IslandRole role) { - Preconditions.checkArgument(player != null, "Cannot remove role of null player"); - return removeRole(player.getUniqueId(), role); - } - - /** - * Remove the IslandRole of a player for the Island - * - * @return true of conditions met, false otherwise - */ - public boolean removeRole(UUID uuid, IslandRole role) { - Preconditions.checkArgument(uuid != null, "Cannot remove role of null player"); - Preconditions.checkArgument(role != null, "Cannot remove role to null role"); - - return this.handle.removeRole(APIUtil.toImplementation(role), uuid); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean hasRole(OfflinePlayer player, IslandRole role) { - Preconditions.checkArgument(player != null, "Cannot check role of null player"); - return handle.hasRole(APIUtil.toImplementation(role), player.getUniqueId()); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean hasRole(UUID uuid, IslandRole role) { - Preconditions.checkArgument(uuid != null, "Cannot check role of null player"); - Preconditions.checkArgument(role != null, "Cannot check role to null role"); - - return handle.hasRole(APIUtil.toImplementation(role), uuid); - } - - /** - * Set the condition of an IslandUpgrade for the Island - */ - public void setUpgrade(Player player, IslandUpgrade upgrade, boolean status) { - Preconditions.checkArgument(upgrade != null, "Cannot set upgrade to null upgrade"); - this.handle.setUpgrade(player, APIUtil.toImplementation(upgrade), status); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean hasUpgrade(IslandUpgrade upgrade) { - Preconditions.checkArgument(upgrade != null, "Cannot check upgrade to null upgrade"); - return this.handle.hasUpgrade(APIUtil.toImplementation(upgrade)); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isUpgrade(IslandUpgrade upgrade) { - Preconditions.checkArgument(upgrade != null, "Cannot check upgrade to null upgrade"); - return this.handle.isUpgrade(APIUtil.toImplementation(upgrade)); - } - - /** - * @return Setting of an IslandRole for the Island - */ - public IslandSetting getSetting(IslandRole role, String setting) { - Preconditions.checkArgument(role != null, "Cannot get setting to null role"); - Preconditions.checkArgument(setting != null, "Cannot get setting for null setting"); - - return new IslandSetting(this.handle.getSetting(APIUtil.toImplementation(role), setting)); - } - - /** - * @return A List of Settings of an IslandRole for the Island - */ - public List getSettings(IslandRole role) { - Preconditions.checkArgument(role != null, "Cannot get settings to null role"); - List settings = new ArrayList<>(); - - for (me.goodandevil.skyblock.island.IslandSetting settingList : this.handle - .getSettings(APIUtil.toImplementation(role))) { - settings.add(new IslandSetting(settingList)); - } - - return settings; - } - - public void setOpen(boolean open) { - this.handle.setOpen(open); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isOpen() { - return handle.isOpen(); - } - - /** - * @return A List from IslandMessage for the Island - */ - public List getMessage(IslandMessage message) { - Preconditions.checkArgument(message != null, "Cannot get message for null message"); - return this.handle.getMessage(APIUtil.toImplementation(message)); - } - - /** - * @return The author of an IslandMessage for the Island - */ - public String getMessageAuthor(IslandMessage message) { - Preconditions.checkArgument(message != null, "Cannot get message author for null message"); - return this.handle.getMessageAuthor(APIUtil.toImplementation(message)); - } - - /** - * Set the IslandMessage for the Island - */ - public void setMessage(IslandMessage message, String author, List messageLines) { - Preconditions.checkArgument(message != null, "Cannot set message for null message"); - this.handle.setMessage(APIUtil.toImplementation(message), author, messageLines); - } - - /** - * Set the Structure for the Island - */ - public void setStructure(String structure) { - Preconditions.checkArgument(structure != null, "Cannot set structure to null structure"); - this.handle.setStructure(structure); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean hasStructure() { - return this.handle.hasStructure(); - } - - /** - * @return The Structure name for the Island - */ - public String getStructure() { - return this.handle.getStructure(); - } - - /** - * @return The Visit implementation for the Island - */ - public Visit getVisit() { - return new Visit(this); - } - - /** - * @return The Ban implementation for the Island - */ - public Ban getBan() { - return new Ban(this); - } - - /** - * @return The Level implementation for the Island - */ - public IslandLevel getLevel() { - return new IslandLevel(this); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isLoaded() { - return this.handle != null; - } - - /** - * Loads the Island if unloaded - */ - public void load() { - if (this.handle == null) { - this.handle = SkyBlockAPI.getImplementation().getIslandManager().loadIsland(player); - } - } - - /** - * Unloads the Island if loaded - */ - public void unload() { - if (this.handle != null) { - SkyBlockAPI.getImplementation().getIslandManager().unloadIsland(getIsland(), null); - this.handle = null; - } - } - - /** - * Sets the player of the Island - */ - public void setPlayer(OfflinePlayer player) { - this.player = player; - } - - /** - * @return Implementation for the Island - */ - public me.goodandevil.skyblock.island.Island getIsland() { - return handle; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandBorderColor.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandBorderColor.java deleted file mode 100644 index f451e467..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandBorderColor.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -public enum IslandBorderColor { - - Blue, Green, Red; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandEnvironment.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandEnvironment.java deleted file mode 100644 index 65df0710..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandEnvironment.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -public enum IslandEnvironment { - - ISLAND, VISITOR, MAIN; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandLevel.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandLevel.java deleted file mode 100644 index f340d93b..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandLevel.java +++ /dev/null @@ -1,117 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -import org.bukkit.Material; - -import com.google.common.base.Preconditions; - -import me.goodandevil.skyblock.utils.version.Materials; - -public class IslandLevel { - - private final Island handle; - - public IslandLevel(Island handle) { - this.handle = handle; - } - - /** - * @return Points of the Island from gathered materials - */ - public long getPoints() { - return this.handle.getIsland().getLevel().getPoints(); - } - - /** - * @return Level of the Island from points - */ - public long getLevel() { - return this.handle.getIsland().getLevel().getLevel(); - } - - /** - * @return Last calculated points of the Island - */ - public long getLastCalculatedPoints() { - return this.handle.getIsland().getLevel().getLastCalculatedPoints(); - } - - /** - * @return Last calculated level of the Island - */ - public long getLastCalculatedLevel() { - return this.handle.getIsland().getLevel().getLastCalculatedLevel(); - } - - /** - * Set the amount of a Material for the Island - */ - public void setMaterialAmount(Material material, int amount) { - Preconditions.checkArgument(material != null, "Cannot set material amount to null material"); - this.handle.getIsland().getLevel().setMaterialAmount(Materials.fromString(material.name()).name(), amount); - } - - /** - * Set the amount of a Material for the Island - */ - public void setMaterialAmount(Material material, byte data, int amount) { - Preconditions.checkArgument(material != null, "Cannot set material amount to null material"); - this.handle.getIsland().getLevel().setMaterialAmount(Materials.requestMaterials(material.name(), data).name(), - amount); - } - - /** - * @return The amount of a Material from the Island - */ - public long getMaterialAmount(Material material) { - Preconditions.checkArgument(material != null, "Cannot get material amount to null material"); - - Materials materials = Materials.fromString(material.name()); - me.goodandevil.skyblock.island.IslandLevel level = this.handle.getIsland().getLevel(); - - if (level.getMaterials().containsKey(materials.name())) { - return level.getMaterials().get(materials.name()); - } - - return 0; - } - - /** - * @return The amount of a Material from the Island - */ - public long getMaterialAmount(Material material, byte data) { - Preconditions.checkArgument(material != null, "Cannot get material amount to null material"); - - Materials materials = Materials.requestMaterials(material.name(), data); - me.goodandevil.skyblock.island.IslandLevel level = this.handle.getIsland().getLevel(); - - if (level.getMaterials().containsKey(materials.name())) { - return level.getMaterials().get(materials.name()); - } - - return 0; - } - - /** - * @return The points earned for a Material from the Island - */ - public long getMaterialPoints(Material material) { - Preconditions.checkArgument(material != null, "Cannot get material points to null material"); - return this.handle.getIsland().getLevel().getMaterialPoints(Materials.fromString(material.name()).name()); - } - - /** - * @return The points earned for a Material from the Island - */ - public long getMaterialPoints(Material material, byte data) { - Preconditions.checkArgument(material != null, "Cannot get material points to null material"); - return this.handle.getIsland().getLevel() - .getMaterialPoints(Materials.requestMaterials(material.name(), data).name()); - } - - /** - * @return Implementation for the Island - */ - public Island getIsland() { - return handle; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandLocation.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandLocation.java deleted file mode 100644 index 68e2c8a6..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandLocation.java +++ /dev/null @@ -1,45 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -import org.bukkit.Location; -import org.bukkit.World; - -public class IslandLocation { - - private IslandEnvironment environment; - private IslandWorld world; - private Location location; - - public IslandLocation(IslandEnvironment environment, IslandWorld world, Location location) { - this.environment = environment; - this.world = world; - this.location = location; - } - - public IslandEnvironment getEnvironment() { - return environment; - } - - public IslandWorld getWorld() { - return world; - } - - public Location getLocation() { - return location; - } - - public World getBukkitWorld() { - return location.getWorld(); - } - - public int getX() { - return location.getBlockX(); - } - - public int getY() { - return location.getBlockY(); - } - - public int getZ() { - return location.getBlockZ(); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandManager.java deleted file mode 100644 index cb139b64..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandManager.java +++ /dev/null @@ -1,377 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -import com.google.common.base.Preconditions; -import me.goodandevil.skyblock.api.structure.Structure; -import me.goodandevil.skyblock.api.utils.APIUtil; -import org.bukkit.Location; -import org.bukkit.OfflinePlayer; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -public class IslandManager { - - private final me.goodandevil.skyblock.island.IslandManager islandManager; - - public IslandManager(me.goodandevil.skyblock.island.IslandManager islandManager) { - this.islandManager = islandManager; - } - - /** - * Updates the Island border for players occupying an Island - */ - public void updateBorder(Island island) { - Preconditions.checkArgument(island != null, "Cannot update border to null island"); - - this.islandManager.updateBorder(island.getIsland()); - } - - /** - * Gives Island ownership to a player of their Island - */ - public void giveOwnership(Island island, OfflinePlayer player) { - Preconditions.checkArgument(player != null, "Cannot give ownership to null island"); - Preconditions.checkArgument(player != null, "Cannot give ownership to null player"); - - this.islandManager.giveOwnership(island.getIsland(), player); - } - - /** - * @return The Visitors occupying an Island - */ - public Set getVisitorsAtIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot get visitors at island to null island"); - - return this.islandManager.getVisitorsAtIsland(island.getIsland()); - } - - /** - * Makes a player a Visitor of an Island - */ - public void visitIsland(Player player, Island island) { - Preconditions.checkArgument(player != null, "Cannot visit island to null player"); - Preconditions.checkArgument(island != null, "Cannot visit island to null island"); - - this.islandManager.visitIsland(player, island.getIsland()); - } - - /** - * Closes an Island from Visitors - */ - public void closeIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot closed island to null island"); - - this.islandManager.closeIsland(island.getIsland()); - } - - /** - * Checks if a player has permission at an Island for a Setting - * - * @return true of conditions met, false otherwise - */ - public boolean hasPermission(Player player, String setting) { - Preconditions.checkArgument(player != null, "Cannot check permission to null player"); - - return this.islandManager.hasPermission(player, setting); - } - - /** - * Checks if a player has permission at a location of an Island for a Setting - * - * @return true of conditions met, false otherwise - */ - public boolean hasPermission(Player player, Location location, String setting) { - Preconditions.checkArgument(player != null, "Cannot check permission to null player"); - Preconditions.checkArgument(location != null, "Cannot check permission to null location"); - - return this.islandManager.hasPermission(player, location, setting); - } - - /** - * Checks the permission of a Setting for a Role at a Location - * - * @return true of conditions met, false otherwise - */ - public boolean hasSetting(Location location, IslandRole role, String setting) { - Preconditions.checkArgument(location != null, "Cannot check setting to null location"); - Preconditions.checkArgument(role != null, "Cannot check setting to null role"); - - return this.islandManager.hasSetting(location, APIUtil.toImplementation(role), setting); - } - - /** - * @return A Set of Members of an Island that are online - */ - public Set getMembersOnline(Island island) { - Preconditions.checkArgument(island != null, "Cannot get online members to null island"); - - return this.islandManager.getMembersOnline(island.getIsland()); - } - - /** - * @return A List of Players at an Island - */ - public List getPlayersAtIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot get players at island to null island"); - - return this.islandManager.getPlayersAtIsland(island.getIsland()); - } - - /** - * @return A List of Players at an Island by IslandWorld - */ - public List getPlayersAtIsland(Island island, IslandWorld world) { - Preconditions.checkArgument(island != null, "Cannot get players at island to null island"); - Preconditions.checkArgument(world != null, "Cannot get players at island to null world"); - - return this.islandManager.getPlayersAtIsland(island.getIsland(), APIUtil.toImplementation(world)); - } - - /** - * Gives the Island Upgrades to a player - * - * @deprecated use {@link #updateFlight(Player)} instead - */ - @Deprecated - public void giveUgrades(Player player, Island island) { - Preconditions.checkArgument(player != null, "Cannot give upgrades to null player"); - Preconditions.checkArgument(island != null, "Cannot give upgrades to null island"); - - this.islandManager.updateFlight(player); - } - - /** - * Gives Fly to a player if they have permission at an Island - * - * @deprecated use {@link #updateFlight(Player)} instead - */ - @Deprecated - public void giveFly(Player player, Island island) { - Preconditions.checkArgument(player != null, "Cannot give upgrades to null player"); - Preconditions.checkArgument(island != null, "Cannot give upgrades to null island"); - - this.islandManager.updateFlight(player); - } - - /** - * Removes the Island Upgrades from a player - * - * @deprecated use {@link #updateFlight(Player)} instead - */ - @Deprecated - public void removeUpgrades(Player player) { - Preconditions.checkArgument(player != null, "Cannot remove upgrades to null player"); - - this.islandManager.updateFlight(player); - } - - /** - * Updates the flight of a player based on their permissions and current island upgrades - */ - public void updateFlight(Player player) { - Preconditions.checkArgument(player != null, "Cannot update flight of a null player"); - - this.islandManager.updateFlight(player); - } - - /** - * Updates the flight of all players on an island based on their permissions and island upgrades - */ - public void updateFlightAtIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot update flight of a null island"); - - this.islandManager.updateFlightAtIsland(island.getIsland()); - } - - /** - * @return A Set of Cooped Players at an Island - */ - public Set getCoopPlayersAtIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot get coop players to null island"); - - return this.islandManager.getCoopPlayersAtIsland(island.getIsland()); - } - - /** - * Removes Coop Players occupying an Island - */ - public void removeCoopPlayersAtIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot remove coop players to null island"); - this.islandManager.removeCoopPlayers(island.getIsland(), null); - } - - /** - * Creates an Island for a player from a Structure - * - * @return true of conditions met, false otherwise - */ - public boolean createIsland(Player player, Structure structure) { - Preconditions.checkArgument(player != null, "Cannot create island to null player"); - Preconditions.checkArgument(structure != null, "Cannot create island to null structure"); - - if (!hasIsland(player)) { - return islandManager.createIsland(player, (me.goodandevil.skyblock.structure.Structure) structure); - } - - return false; - } - - /** - * Deletes an Island permanently - */ - public void deleteIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot delete island to null island"); - - this.islandManager.deleteIsland(island.getIsland()); - } - - /** - * Check if a player is occupying an Island - * - * @return true of conditions met, false otherwise - */ - public boolean isPlayerAtIsland(Island island, Player player) { - Preconditions.checkArgument(island != null, "Cannot check to null island"); - Preconditions.checkArgument(player != null, "Cannot check to null player"); - return this.islandManager.isPlayerAtIsland(island.getIsland(), player); - } - - /** - * Check if a player is occupying an Island by IslandWorld - * - * @return true of conditions met, false otherwise - */ - public boolean isPlayerAtIsland(Island island, Player player, IslandWorld world) { - Preconditions.checkArgument(island != null, "Cannot check to null island"); - Preconditions.checkArgument(player != null, "Cannot check to null player"); - Preconditions.checkArgument(world != null, "Cannot check to null world"); - - return this.islandManager.isPlayerAtIsland(island.getIsland(), player, APIUtil.toImplementation(world)); - } - - /** - * Check if a location is at an Island - * - * @return true of conditions met, false otherwise - */ - public boolean isLocationAtIsland(Island island, Location location) { - Preconditions.checkArgument(island != null, "Cannot check to null island"); - Preconditions.checkArgument(location != null, "Cannot check to null location"); - - return this.islandManager.isLocationAtIsland(island.getIsland(), location); - } - - /** - * @return The Island at a location - */ - public Island getIslandAtLocation(Location location) { - Preconditions.checkArgument(location != null, "Cannot get island to null location"); - - me.goodandevil.skyblock.island.Island island = this.islandManager.getIslandAtLocation(location); - - if (island != null) { - return island.getAPIWrapper(); - } - - return null; - } - - /** - * Check if a location is at an Island by IslandWorld - * - * @return true of conditions met, false otherwise - */ - public boolean isPlayerAtIsland(Island island, Location location, IslandWorld world) { - Preconditions.checkArgument(island != null, "Cannot check to null island"); - Preconditions.checkArgument(location != null, "Cannot check to null location"); - Preconditions.checkArgument(world != null, "Cannot check to null world"); - - return this.islandManager.isLocationAtIsland(island.getIsland(), location, APIUtil.toImplementation(world)); - } - - /** - * @return The Island the player is occupying - */ - public Island getIslandPlayerAt(Player player) { - Preconditions.checkArgument(player != null, "Cannot get Island to null player"); - - me.goodandevil.skyblock.island.Island island = this.islandManager.getIslandPlayerAt(player); - - if (island != null) { - return island.getAPIWrapper(); - } - - return null; - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isPlayerAtAnIsland(Player player) { - Preconditions.checkArgument(player != null, "Cannot check to null player"); - return this.islandManager.isPlayerAtAnIsland(player); - } - - /** - * Resets an Island permanently - */ - public void resetIsland(Island island) { - Preconditions.checkArgument(island != null, "Cannot reset island to null island"); - this.islandManager.resetIsland(island.getIsland()); - } - - /** - * @return true of conditions met, false otherwise - */ - public static boolean hasIsland(OfflinePlayer player) { - Preconditions.checkArgument(player != null, "Cannot check island to null player"); - return new me.goodandevil.skyblock.utils.player.OfflinePlayer(player.getUniqueId()).getOwner() != null; - } - - /** - * @return The Island of a player - */ - public Island getIsland(OfflinePlayer player) { - Preconditions.checkArgument(player != null, "Cannot get island to null player"); - - me.goodandevil.skyblock.island.Island island = this.islandManager.getIsland(player); - - if (island != null) { - return island.getAPIWrapper(); - } - - return new Island(null, player); - } - - /** - * Gets an Island by its UUID - * Returns null if an Island with the given UUID does not exist - * - * @param islandUUID The UUID of the Island - * @return The Island with the given UUID, or null if one was not found - */ - public Island getIslandByUUID(UUID islandUUID) { - Preconditions.checkArgument(islandUUID != null, "Cannot get island with a null UUID"); - - me.goodandevil.skyblock.island.Island island = this.islandManager.getIslandByUUID(islandUUID); - - return island != null ? island.getAPIWrapper() : null; - } - - /** - * @return A List of loaded Islands - */ - public List getIslands() { - List islands = new ArrayList<>(); - - for (int i = 0; i < this.islandManager.getIslands().size(); i++) { - islands.add(this.islandManager.getIslands().get(this.islandManager.getIslands().keySet().toArray()[i]) - .getAPIWrapper()); - } - - return islands; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandMessage.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandMessage.java deleted file mode 100644 index 6bf1f945..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandMessage.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -public enum IslandMessage { - - WELCOME, SIGNATURE, SIGN; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandRole.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandRole.java deleted file mode 100644 index 5c50baab..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandRole.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -public enum IslandRole { - - COOP, VISITOR, MEMBER, OPERATOR, OWNER; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandSetting.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandSetting.java deleted file mode 100644 index 8db77dfb..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandSetting.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -public class IslandSetting { - - private final me.goodandevil.skyblock.island.IslandSetting handle; - - public IslandSetting(me.goodandevil.skyblock.island.IslandSetting handle) { - this.handle = handle; - } - - /** - * @return The name of the Setting - */ - public String getName() { - return this.handle.getName(); - } - - /** - * @param status condition for the Setting - */ - public void setStatus(boolean status) { - this.handle.setStatus(status); - } - - /** - * @return The status condition of the Setting - */ - public boolean getStatus() { - return this.handle.getStatus(); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandUpgrade.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandUpgrade.java deleted file mode 100644 index 391b9f3b..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandUpgrade.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -public enum IslandUpgrade { - - CROP, SPAWNER, FLY, DROPS, SIZE, SPEED, JUMP; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandWorld.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandWorld.java deleted file mode 100644 index c747f0be..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/island/IslandWorld.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.api.island; - -public enum IslandWorld { - - OVERWORLD, NETHER, END; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/levelling/LevellingManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/levelling/LevellingManager.java deleted file mode 100644 index 2be30666..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/levelling/LevellingManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.goodandevil.skyblock.api.levelling; - -import com.google.common.base.Preconditions; - -import me.goodandevil.skyblock.api.island.Island; - -public class LevellingManager { - - private final me.goodandevil.skyblock.levelling.LevellingManager levellingManager; - - public LevellingManager(me.goodandevil.skyblock.levelling.LevellingManager levellingManager) { - this.levellingManager = levellingManager; - } - - /** - * Calculates the points of an Island to determine what the Island level is - */ - public void calculatePoints(Island island) { - Preconditions.checkArgument(island != null, "Cannot calculate points to null island"); - this.levellingManager.calculatePoints(null, island.getIsland()); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/structure/Structure.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/structure/Structure.java deleted file mode 100644 index 82d67129..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/structure/Structure.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.goodandevil.skyblock.api.structure; - -import java.util.List; - -import me.goodandevil.skyblock.utils.version.Materials; - -public interface Structure { - - public String getName(); - - public Materials getMaterials(); - - public void setMaterials(Materials materials); - - public String getOverworldFile(); - - public String getNetherFile(); - - public void setOverworldFile(String file); - - public void setNetherFile(String file); - - public String getDisplayname(); - - public void setDisplayname(String displayName); - - public boolean isPermission(); - - public String getPermission(); - - public void setPermission(boolean permission); - - public List getDescription(); - - public void addLine(String line); - - public void removeLine(int index); - - public List getCommands(); - - public void addCommand(String command); - - public void removeCommand(int index); -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/structure/StructureManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/structure/StructureManager.java deleted file mode 100644 index f42e3305..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/structure/StructureManager.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.goodandevil.skyblock.api.structure; - -import java.util.ArrayList; -import java.util.List; - -public class StructureManager { - - private final me.goodandevil.skyblock.structure.StructureManager structureManager; - - public StructureManager(me.goodandevil.skyblock.structure.StructureManager structureManager) { - this.structureManager = structureManager; - } - - /** - * @return The Structure for an Island - */ - public Structure getStructure(String structure) { - return this.structureManager.getStructure(structure); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean hasStructure(String structure) { - return structureManager.containsStructure(structure); - } - - /** - * @return A List of Structures for an Island - */ - public List getStructures() { - List structures = new ArrayList<>(); - - for (Structure structureList : structureManager.getStructures()) { - structures.add(structureList); - } - - return structures; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/utils/APIUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/utils/APIUtil.java deleted file mode 100644 index 7f238373..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/utils/APIUtil.java +++ /dev/null @@ -1,193 +0,0 @@ -package me.goodandevil.skyblock.api.utils; - -import me.goodandevil.skyblock.api.island.IslandBorderColor; -import me.goodandevil.skyblock.api.island.IslandEnvironment; -import me.goodandevil.skyblock.api.island.IslandMessage; -import me.goodandevil.skyblock.api.island.IslandRole; -import me.goodandevil.skyblock.api.island.IslandUpgrade; -import me.goodandevil.skyblock.api.island.IslandWorld; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.utils.world.WorldBorder; - -public final class APIUtil { - - public static me.goodandevil.skyblock.island.IslandWorld toImplementation(IslandWorld world) { - switch (world) { - case NETHER: - return me.goodandevil.skyblock.island.IslandWorld.Nether; - case OVERWORLD: - return me.goodandevil.skyblock.island.IslandWorld.Normal; - case END: - return me.goodandevil.skyblock.island.IslandWorld.End; - } - - return null; - } - - public static IslandWorld fromImplementation(me.goodandevil.skyblock.island.IslandWorld world) { - switch (world) { - case Nether: - return IslandWorld.NETHER; - case Normal: - return IslandWorld.OVERWORLD; - case End: - return IslandWorld.END; - } - - return null; - } - - public static me.goodandevil.skyblock.island.IslandEnvironment toImplementation(IslandEnvironment environment) { - switch (environment) { - case ISLAND: - return me.goodandevil.skyblock.island.IslandEnvironment.Island; - case MAIN: - return me.goodandevil.skyblock.island.IslandEnvironment.Main; - case VISITOR: - return me.goodandevil.skyblock.island.IslandEnvironment.Visitor; - } - - return null; - } - - public static IslandEnvironment fromImplementation(me.goodandevil.skyblock.island.IslandEnvironment environment) { - switch (environment) { - case Island: - return IslandEnvironment.ISLAND; - case Main: - return IslandEnvironment.MAIN; - case Visitor: - return IslandEnvironment.VISITOR; - } - - return null; - } - - public static me.goodandevil.skyblock.island.IslandRole toImplementation(IslandRole role) { - switch (role) { - case VISITOR: - return me.goodandevil.skyblock.island.IslandRole.Visitor; - case COOP: - return me.goodandevil.skyblock.island.IslandRole.Coop; - case MEMBER: - return me.goodandevil.skyblock.island.IslandRole.Member; - case OPERATOR: - return me.goodandevil.skyblock.island.IslandRole.Operator; - case OWNER: - return me.goodandevil.skyblock.island.IslandRole.Owner; - } - - return null; - } - - public static IslandRole fromImplementation(me.goodandevil.skyblock.island.IslandRole role) { - switch (role) { - case Visitor: - return IslandRole.VISITOR; - case Coop: - return IslandRole.COOP; - case Member: - return IslandRole.MEMBER; - case Operator: - return IslandRole.OPERATOR; - case Owner: - return IslandRole.OWNER; - } - - return null; - } - - public static Upgrade.Type toImplementation(IslandUpgrade upgrade) { - switch (upgrade) { - case CROP: - return Upgrade.Type.Crop; - case DROPS: - return Upgrade.Type.Drops; - case FLY: - return Upgrade.Type.Fly; - case JUMP: - return Upgrade.Type.Jump; - case SIZE: - return Upgrade.Type.Size; - case SPAWNER: - return Upgrade.Type.Spawner; - case SPEED: - return Upgrade.Type.Speed; - } - - return null; - } - - public static IslandUpgrade fromImplementation(Upgrade.Type upgrade) { - switch (upgrade) { - case Crop: - return IslandUpgrade.CROP; - case Drops: - return IslandUpgrade.DROPS; - case Fly: - return IslandUpgrade.FLY; - case Jump: - return IslandUpgrade.JUMP; - case Size: - return IslandUpgrade.SIZE; - case Spawner: - return IslandUpgrade.SPAWNER; - case Speed: - return IslandUpgrade.SPEED; - } - - return null; - } - - public static me.goodandevil.skyblock.island.IslandMessage toImplementation(IslandMessage message) { - switch (message) { - case SIGN: - return me.goodandevil.skyblock.island.IslandMessage.Sign; - case SIGNATURE: - return me.goodandevil.skyblock.island.IslandMessage.Signature; - case WELCOME: - return me.goodandevil.skyblock.island.IslandMessage.Welcome; - } - - return null; - } - - public static IslandMessage fromImplementation(me.goodandevil.skyblock.island.IslandMessage message) { - switch (message) { - case Sign: - return IslandMessage.SIGN; - case Signature: - return IslandMessage.SIGNATURE; - case Welcome: - return IslandMessage.WELCOME; - } - - return null; - } - - public static WorldBorder.Color toImplementation(IslandBorderColor color) { - switch (color) { - case Blue: - return WorldBorder.Color.Blue; - case Green: - return WorldBorder.Color.Green; - case Red: - return WorldBorder.Color.Red; - } - - return null; - } - - public static IslandBorderColor fromImplementation(WorldBorder.Color color) { - switch (color) { - case Blue: - return IslandBorderColor.Blue; - case Green: - return IslandBorderColor.Green; - case Red: - return IslandBorderColor.Red; - } - - return null; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/visit/Visit.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/visit/Visit.java deleted file mode 100644 index 13dac414..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/api/visit/Visit.java +++ /dev/null @@ -1,100 +0,0 @@ -package me.goodandevil.skyblock.api.visit; - -import java.util.Set; -import java.util.UUID; - -import com.google.common.base.Preconditions; - -import me.goodandevil.skyblock.api.island.Island; - -public class Visit { - - private final Island handle; - - public Visit(Island handle) { - this.handle = handle; - } - - /** - * @return The Safe Level for the Island - */ - public int getSafeLevel() { - return this.handle.getIsland().getVisit().getSafeLevel(); - } - - /** - * Set the Safe Level for the Island - */ - public void setSafeLevel(int safeLevel) { - this.handle.getIsland().getVisit().setSafeLevel(safeLevel); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isVisitor(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); - return getVisitors().contains(uuid); - } - - /** - * @return A Set of players that have visited the Island - */ - public Set getVisitors() { - return this.handle.getIsland().getVisit().getVisitors(); - } - - /** - * Add a player to the visited players for the Island - */ - public void addVisitor(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot add visitor to null uuid"); - this.handle.getIsland().getVisit().addVisitor(uuid); - } - - /** - * Remove a player from the visited players for the Island - */ - public void removeVisitor(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot remove visitor to null uuid"); - this.handle.getIsland().getVisit().removeVisitor(uuid); - } - - /** - * @return true of conditions met, false otherwise - */ - public boolean isVoter(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot return condition to null uuid"); - return getVoters().contains(uuid); - } - - /** - * @return A Set of players that have voted for the Island - */ - public Set getVoters() { - return this.handle.getIsland().getVisit().getVoters(); - } - - /** - * Add a player to the voted players for the Island - */ - public void addVoter(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot add voter to null uuid"); - this.handle.getIsland().getVisit().addVoter(uuid); - } - - /** - * Remove a player from the voted players for the Island - */ - public void removeVoter(UUID uuid) { - Preconditions.checkArgument(uuid != null, "Cannot remove voter to null uuid"); - this.handle.getIsland().getVisit().removeVoter(uuid); - } - - /** - * @return Implementation for the Island - */ - public Island getIsland() { - return handle; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/ban/Ban.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/ban/Ban.java deleted file mode 100644 index af8f8bcf..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/ban/Ban.java +++ /dev/null @@ -1,120 +0,0 @@ -package me.goodandevil.skyblock.ban; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.island.IslandBanEvent; -import me.goodandevil.skyblock.api.event.island.IslandUnbanEvent; -import me.goodandevil.skyblock.config.FileManager.Config; - -public class Ban { - - private UUID islandOwnerUUID; - - public Ban(UUID islandOwnerUUID) { - this.islandOwnerUUID = islandOwnerUUID; - } - - public UUID getOwnerUUID() { - return islandOwnerUUID; - } - - public void setOwnerUUID(UUID islandOwnerUUID) { - this.islandOwnerUUID = islandOwnerUUID; - } - - public boolean isBanned(UUID uuid) { - return getBans().contains(uuid); - } - - public Set getBans() { - SkyBlock skyblock = SkyBlock.getInstance(); - - Set islandBans = new HashSet<>(); - - for (String islandBanList : skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration().getStringList("Bans")) { - - UUID uuid = UUID.fromString(islandBanList); - if (!Bukkit.getOfflinePlayer(uuid).hasPlayedBefore()) - continue; - - islandBans.add(uuid); - } - - return islandBans; - } - - public void addBan(UUID issuer, UUID banned) { - SkyBlock skyblock = SkyBlock.getInstance(); - - IslandBanEvent islandBanEvent = new IslandBanEvent( - skyblock.getIslandManager().getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)) - .getAPIWrapper(), - Bukkit.getServer().getOfflinePlayer(issuer), Bukkit.getServer().getOfflinePlayer(banned)); - Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> Bukkit.getServer().getPluginManager().callEvent(islandBanEvent)); - - if (!islandBanEvent.isCancelled()) { - List islandBans = new ArrayList<>(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration(); - - for (String islandBanList : configLoad.getStringList("Bans")) { - islandBans.add(islandBanList); - } - - islandBans.add(banned.toString()); - configLoad.set("Bans", islandBans); - } - } - - public void removeBan(UUID uuid) { - SkyBlock skyblock = SkyBlock.getInstance(); - - List islandBans = new ArrayList<>(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration(); - - for (String islandBanList : configLoad.getStringList("Bans")) { - if (!uuid.toString().equals(islandBanList)) { - islandBans.add(islandBanList); - } - } - - configLoad.set("Bans", islandBans); - - Bukkit.getServer().getPluginManager() - .callEvent(new IslandUnbanEvent(skyblock.getIslandManager() - .getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)).getAPIWrapper(), - Bukkit.getServer().getOfflinePlayer(uuid))); - } - - public void save() { - SkyBlock skyblock = SkyBlock.getInstance(); - - Config config = skyblock.getFileManager().getConfig(new File( - new File(skyblock.getDataFolder().toString() + "/ban-data"), islandOwnerUUID.toString() + ".yml")); - - try { - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/ban/BanManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/ban/BanManager.java deleted file mode 100644 index 776f5748..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/ban/BanManager.java +++ /dev/null @@ -1,140 +0,0 @@ -package me.goodandevil.skyblock.ban; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; -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.Island; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; - -public class BanManager { - - private final SkyBlock skyblock; - private Map banStorage = new HashMap<>(); - - public BanManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - loadIslands(); - } - - public void onDisable() { - Map banIslands = getIslands(); - - for (UUID banIslandList : banIslands.keySet()) { - Ban ban = banIslands.get(banIslandList); - ban.save(); - } - } - - public void loadIslands() { - FileManager fileManager = skyblock.getFileManager(); - - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Unload")) { - File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); - - if (configFile.exists()) { - for (File fileList : configFile.listFiles()) { - UUID islandOwnerUUID = UUID.fromString(fileList.getName().replaceFirst("[.][^.]+$", "")); - createIsland(islandOwnerUUID); - } - } - } - } - - public void transfer(UUID uuid1, UUID uuid2) { - FileManager fileManager = skyblock.getFileManager(); - - Ban ban = getIsland(uuid1); - ban.save(); - - File oldBanDataFile = new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), - uuid1.toString() + ".yml"); - File newBanDataFile = new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), - uuid2.toString() + ".yml"); - - fileManager.unloadConfig(oldBanDataFile); - fileManager.unloadConfig(newBanDataFile); - - oldBanDataFile.renameTo(newBanDataFile); - - removeIsland(uuid1); - addIsland(uuid2, ban); - } - - public void removeVisitor(Island island) { - 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(); - - for (UUID visitorList : skyblock.getIslandManager().getVisitorsAtIsland(island)) { - Player targetPlayer = Bukkit.getServer().getPlayer(visitorList); - - LocationUtil.teleportPlayerToSpawn(targetPlayer); - - messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Visit.Banned.Island.Message")); - soundManager.playSound(targetPlayer, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); - } - } - - public boolean hasIsland(UUID islandOwnerUUID) { - return banStorage.containsKey(islandOwnerUUID); - } - - public Ban getIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - return banStorage.get(islandOwnerUUID); - } - - return null; - } - - public Map getIslands() { - return banStorage; - } - - public void createIsland(UUID islandOwnerUUID) { - banStorage.put(islandOwnerUUID, new Ban(islandOwnerUUID)); - } - - public void addIsland(UUID islandOwnerUUID, Ban ban) { - banStorage.put(islandOwnerUUID, ban); - } - - public void removeIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - banStorage.remove(islandOwnerUUID); - } - } - - public void unloadIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - skyblock.getFileManager().unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), - islandOwnerUUID.toString() + ".yml")); - banStorage.remove(islandOwnerUUID); - } - } - - public void deleteIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - skyblock.getFileManager().deleteConfig(new File(new File(skyblock.getDataFolder().toString() + "/ban-data"), - islandOwnerUUID.toString() + ".yml")); - banStorage.remove(islandOwnerUUID); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/CommandManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/CommandManager.java deleted file mode 100644 index 2a09cfba..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/CommandManager.java +++ /dev/null @@ -1,556 +0,0 @@ -package me.goodandevil.skyblock.command; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.menus.ControlPanel; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.ChatComponent; -import me.goodandevil.skyblock.utils.version.Sounds; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.*; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class CommandManager implements CommandExecutor, TabCompleter { - - private final SkyBlock skyblock; - private List islandCommands; - private List adminCommands; - - public CommandManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - skyblock.getCommand("island").setExecutor(this); - skyblock.getCommand("island").setTabCompleter(this); - - registerSubCommands(); - } - - public void registerSubCommands() { - islandCommands = Arrays.asList( - new me.goodandevil.skyblock.command.commands.island.AcceptCommand(), - new me.goodandevil.skyblock.command.commands.island.BanCommand(), - new me.goodandevil.skyblock.command.commands.island.BankCommand(), - new me.goodandevil.skyblock.command.commands.island.BansCommand(), - new me.goodandevil.skyblock.command.commands.island.BiomeCommand(), - new me.goodandevil.skyblock.command.commands.island.BorderCommand(), - new me.goodandevil.skyblock.command.commands.island.CancelCommand(), - new me.goodandevil.skyblock.command.commands.island.ChatCommand(), - new me.goodandevil.skyblock.command.commands.island.CloseCommand(), - new me.goodandevil.skyblock.command.commands.island.ConfirmCommand(), - new me.goodandevil.skyblock.command.commands.island.ControlPanelCommand(), - new me.goodandevil.skyblock.command.commands.island.CoopCommand(), - new me.goodandevil.skyblock.command.commands.island.CreateCommand(), - new me.goodandevil.skyblock.command.commands.island.CurrentCommand(), - new me.goodandevil.skyblock.command.commands.island.DeleteCommand(), - new me.goodandevil.skyblock.command.commands.island.DemoteCommand(), - new me.goodandevil.skyblock.command.commands.island.DenyCommand(), - new me.goodandevil.skyblock.command.commands.island.InformationCommand(), - new me.goodandevil.skyblock.command.commands.island.InviteCommand(), - new me.goodandevil.skyblock.command.commands.island.KickAllCommand(), - new me.goodandevil.skyblock.command.commands.island.KickCommand(), - new me.goodandevil.skyblock.command.commands.island.LeaderboardCommand(), - new me.goodandevil.skyblock.command.commands.island.LeaveCommand(), - new me.goodandevil.skyblock.command.commands.island.LevelCommand(), - new me.goodandevil.skyblock.command.commands.island.MembersCommand(), - new me.goodandevil.skyblock.command.commands.island.OpenCommand(), - new me.goodandevil.skyblock.command.commands.island.OwnerCommand(), - new me.goodandevil.skyblock.command.commands.island.PromoteCommand(), - new me.goodandevil.skyblock.command.commands.island.PublicCommand(), - new me.goodandevil.skyblock.command.commands.island.SetSpawnCommand(), - new me.goodandevil.skyblock.command.commands.island.SettingsCommand(), - new me.goodandevil.skyblock.command.commands.island.TeleportCommand(), - new me.goodandevil.skyblock.command.commands.island.UnbanCommand(), - new me.goodandevil.skyblock.command.commands.island.UnlockCommand(), - new me.goodandevil.skyblock.command.commands.island.UpgradeCommand(), - new me.goodandevil.skyblock.command.commands.island.ValueCommand(), - new me.goodandevil.skyblock.command.commands.island.VisitCommand(), - new me.goodandevil.skyblock.command.commands.island.VisitorsCommand(), - new me.goodandevil.skyblock.command.commands.island.VoteCommand(), - new me.goodandevil.skyblock.command.commands.island.WeatherCommand() - ); - - adminCommands = Arrays.asList( - new me.goodandevil.skyblock.command.commands.admin.AddUpgradeCommand(), - new me.goodandevil.skyblock.command.commands.admin.CreateCommand(), - new me.goodandevil.skyblock.command.commands.admin.DeleteCommand(), - new me.goodandevil.skyblock.command.commands.admin.GeneratorCommand(), - new me.goodandevil.skyblock.command.commands.admin.LevelCommand(), - new me.goodandevil.skyblock.command.commands.admin.LevelScanCommand(), - new me.goodandevil.skyblock.command.commands.admin.OwnerCommand(), - new me.goodandevil.skyblock.command.commands.admin.RefreshHologramsCommand(), - new me.goodandevil.skyblock.command.commands.admin.ReloadCommand(), - new me.goodandevil.skyblock.command.commands.admin.RemoveHologramCommand(), - new me.goodandevil.skyblock.command.commands.admin.RemoveUpgradeCommand(), - new me.goodandevil.skyblock.command.commands.admin.SetBiomeCommand(), - new me.goodandevil.skyblock.command.commands.admin.SetHologramCommand(), - new me.goodandevil.skyblock.command.commands.admin.SetSizeCommand(), - new me.goodandevil.skyblock.command.commands.admin.SetSpawnCommand(), - new me.goodandevil.skyblock.command.commands.admin.SettingsCommand(), - new me.goodandevil.skyblock.command.commands.admin.StructureCommand(), - new me.goodandevil.skyblock.command.commands.admin.UpgradeCommand() - ); - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { - if (command.getName().equalsIgnoreCase("island")) { - 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(); - - Player player = null; - - if (sender instanceof Player) { - player = (Player) sender; - } - - if (args.length == 0) { - if (player == null) { - sendConsoleHelpCommands(sender); - } else { - if (skyblock.getIslandManager().getIsland(player) == null) { - Bukkit.getServer().getScheduler().runTask(skyblock, () -> Bukkit.getServer().dispatchCommand(sender, "island create")); - } else { - boolean canUseControlPanel = player.hasPermission("fabledskyblock.*") - || player.hasPermission("fabledskyblock.island.*") - || player.hasPermission("fabledskyblock.island.controlpanel"); - - if (!canUseControlPanel) { - messageManager.sendMessage(player, configLoad.getString("Command.PermissionDenied.Island.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return true; - } - - ControlPanel.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - return true; - } - - SubCommand subCommand; - boolean isAdmin; - - if (args[0].equalsIgnoreCase("help")) { - if (player == null) { - sendConsoleHelpCommands(sender); - } else { - boolean canUseHelp = player.hasPermission("fabledskyblock.*") - || player.hasPermission("fabledskyblock.island.*") - || player.hasPermission("fabledskyblock.island.help"); - - if (!canUseHelp) { - messageManager.sendMessage(player, configLoad.getString("Command.PermissionDenied.Island.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return true; - } - - int page = -1; - - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Command.Help.List")) { - page = 1; - - if (args.length == 2) { - if (args[1].matches("[0-9]+")) { - page = Integer.valueOf(args[1]); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Help.Integer.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return true; - } - } - } - - sendPlayerIslandHelpCommands(player, page); - } - - return true; - } else if (args[0].equalsIgnoreCase("admin")) { - if (args.length == 1 || args[1].equalsIgnoreCase("help")) { - if (player == null) { - sendConsoleHelpCommands(sender); - } else { - boolean canUseHelp = player.hasPermission("fabledskyblock.*") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.admin.help"); - - if (!canUseHelp) { - messageManager.sendMessage(player, configLoad.getString("Command.PermissionDenied.Admin.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return true; - } - - int page = -1; - - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Command.Help.List")) { - page = 1; - - if (args.length == 3) { - if (args[2].matches("[0-9]+")) { - page = Integer.valueOf(args[2]); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Help.Integer.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - return true; - } - } - } - - sendPlayerAdminHelpCommands(player, page); - } - - return true; - } - - subCommand = getAdminSubCommand(args[1]); - isAdmin = true; - } else { - subCommand = getIslandSubCommand(args[0]); - isAdmin = false; - } - - if (subCommand == null) { - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Argument.Unrecognised.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - return true; - } - - if (!subCommand.hasPermission(sender, isAdmin)) { - messageManager.sendMessage(sender, configLoad.getString("Command.PermissionDenied." + (isAdmin ? "Admin" : "Island") + ".Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return true; - } - - List arguments = new ArrayList<>(Arrays.asList(args)); - arguments.remove(args[0]); - - if (adminCommands.contains(subCommand)) { - arguments.remove(args[1]); - } - - if (sender instanceof Player) { - subCommand.onCommandByPlayer(player, arguments.toArray(new String[0])); - } else if (sender instanceof ConsoleCommandSender) { - subCommand.onCommandByConsole((ConsoleCommandSender) sender, - arguments.toArray(new String[0])); - } - } - - return true; - } - - @Override - public List onTabComplete(CommandSender sender, Command command, String s, String[] args) { - if (!(sender instanceof Player)) { - return null; - } - - boolean isAdmin = sender.hasPermission("fabledskyblock.admin.*") || sender.hasPermission("fabledskyblock.*"); - - if (command.getName().equalsIgnoreCase("island")) { - List commandAliases = new ArrayList<>(); - - if (args.length == 1) { - if (args[0] == null || args[0].isEmpty()) { - commandAliases.add("admin"); - - for (SubCommand subCommandList : islandCommands) { - commandAliases.add(subCommandList.getName()); - } - } else { - if (isAdmin) { - if ("admin".contains(args[0].toLowerCase())) { - commandAliases.add("admin"); - } - } - - for (SubCommand subCommandList : islandCommands) { - if (subCommandList.getName().toLowerCase().contains(args[0].toLowerCase())) { - commandAliases.add(subCommandList.getName()); - } - } - } - } else if (args.length == 2) { - if (isAdmin) { - if (args[0].equalsIgnoreCase("admin")) { - if (args[1] == null || args[1].isEmpty()) { - for (SubCommand subCommandList : adminCommands) { - commandAliases.add(subCommandList.getName()); - } - } else { - for (SubCommand subCommandList : adminCommands) { - if (subCommandList.getName().toLowerCase().contains(args[1].toLowerCase())) { - commandAliases.add(subCommandList.getName()); - } - } - } - } - } - - List arguments = getIslandArguments(args[0], args[1]); - - if (arguments.size() != 0) { - commandAliases.addAll(arguments); - } - } else if (args.length == 3) { - if (isAdmin) { - if (args[0].equalsIgnoreCase("admin")) { - List arguments = getAdminArguments(args[1], args[2]); - - if (arguments.size() != 0) { - commandAliases.addAll(arguments); - } - } - } - } - - if (commandAliases.size() != 0) { - return commandAliases; - } - } - - return null; - } - - public List getIslandArguments(String arg1, String arg2) { - return this.getArguments(islandCommands, arg1, arg2); - } - - public List getAdminArguments(String arg1, String arg2) { - return this.getArguments(adminCommands, arg1, arg2); - } - - public List getArguments(List subCommands, String arg1, String arg2) { - List arguments = new ArrayList<>(); - - for (SubCommand subCommandList : subCommands) { - if (arg1.equalsIgnoreCase(subCommandList.getName())) { - if (arg2 == null || arg2.isEmpty()) { - arguments.addAll(Arrays.asList(subCommandList.getArguments())); - } else { - for (String argumentList : subCommandList.getArguments()) { - if (argumentList.contains(arg2.toLowerCase())) { - arguments.add(argumentList); - - break; - } - } - } - - break; - } - } - - return arguments; - } - - public void sendPlayerIslandHelpCommands(Player player, int page) { - this.sendPlayerHelpCommands(player, islandCommands, page, false); - } - - public void sendPlayerAdminHelpCommands(Player player, int page) { - this.sendPlayerHelpCommands(player, adminCommands, page, true); - } - - public void sendPlayerHelpCommands(Player player, List subCommands, int page, boolean isAdmin) { - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - int pageSize = 7; - - int nextEndIndex = subCommands.size() - page * pageSize, index = page * pageSize - pageSize, - endIndex = index >= subCommands.size() ? subCommands.size() - 1 : index + pageSize; - boolean showAlises = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Command.Help.Aliases.Enable"); - - if (nextEndIndex <= -7) { - skyblock.getMessageManager().sendMessage(player, configLoad.getString("Command.Island.Help.Page.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - - String subCommandText = ""; - - if (isAdmin) { - subCommandText = "admin "; - } - - for (String helpLines : configLoad.getStringList("Command.Island.Help.Lines")) { - if (helpLines.contains("%type")) { - helpLines = helpLines.replace("%type", "Admin"); - } - - if (helpLines.contains("%commands")) { - String[] sections = helpLines.split("%commands"); - String prefix = "", suffix = ""; - - if (sections.length >= 1) { - prefix = ChatColor.translateAlternateColorCodes('&', sections[0]); - } - - if (sections.length == 2) { - suffix = ChatColor.translateAlternateColorCodes('&', sections[1]); - } - - if (page == -1) { - for (SubCommand subCommand : subCommands) { - StringBuilder commandAliases = new StringBuilder(); - - if (showAlises) { - for (int i = 0; i < subCommand.getAliases().length; i++) { - commandAliases.append("/").append(subCommand.getAliases()[i]); - } - } - - player.spigot() - .sendMessage(new ChatComponent( - prefix.replace("%info", subCommand.getInfo()) + "/island " - + subCommandText + subCommand.getName() + commandAliases - + suffix.replace("%info", subCommand.getInfo()), - false, null, null, - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(subCommand.getInfo()).create())) - .getTextComponent()); - } - } else { - for (; index < endIndex; index++) { - if (subCommands.size() > index) { - SubCommand subCommandFromIndex = subCommands.get(index); - StringBuilder commandAliases = new StringBuilder(); - - if (showAlises) { - for (int i = 0; i < subCommandFromIndex.getAliases().length; i++) { - commandAliases.append("/").append(subCommandFromIndex.getAliases()[i]); - } - } - - player.spigot() - .sendMessage(new ChatComponent( - prefix.replace("%info", subCommandFromIndex.getInfo()) + "/island " - + subCommandText + subCommandFromIndex.getName() + commandAliases - + suffix.replace("%info", subCommandFromIndex.getInfo()), - false, null, null, - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(subCommandFromIndex.getInfo()).create())) - .getTextComponent()); - } - } - } - } else { - skyblock.getMessageManager().sendMessage(player, helpLines); - } - } - - if (page != -1) { - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - if (page == 1) { - player.spigot() - .sendMessage( - new ChatComponent( - ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Command.Island.Help.Word.Next")), - false, null, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, - "/island " + subCommandText + "help " + (page + 1)), - null).getTextComponent()); - } else { - player.spigot() - .sendMessage( - new ChatComponent( - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Command.Island.Help.Word.Previous")), - false, null, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, - "/island " + subCommandText + "help " + (page - 1)), - null).addExtraChatComponent( - new ChatComponent(" " - + ChatColor.translateAlternateColorCodes('&', - configLoad - .getString("Command.Island.Help.Word.Pipe")) - + " ", false, null, null, null)) - .addExtraChatComponent(new ChatComponent( - ChatColor.translateAlternateColorCodes('&', - configLoad.getString( - "Command.Island.Help.Word.Next")), - false, null, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, - "/island " + subCommandText + "help " + (page + 1)), - null)) - .getTextComponent()); - } - } else { - if (page != 1) { - player.spigot() - .sendMessage(new ChatComponent( - ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Command.Island.Help.Word.Previous")), - false, null, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, - "/island " + subCommandText + "help " + (page - 1)), - null).getTextComponent()); - } - } - } - - skyblock.getSoundManager().playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - } - - public void sendConsoleHelpCommands(CommandSender sender) { - sender.sendMessage("SkyBlock - Console Commands"); - - String[] commands = { "delete", "owner", "reload", "removehologram", "setsize" }; - - for (String commandList : commands) { - SubCommand subCommand = this.getAdminSubCommand(commandList); - sender.sendMessage("* /island admin " + subCommand.getName() + " - " + subCommand.getInfo()); - } - } - - public SubCommand getIslandSubCommand(String cmdName) { - return this.getSubCommand(islandCommands, cmdName); - } - - public SubCommand getAdminSubCommand(String cmdName) { - return this.getSubCommand(adminCommands, cmdName); - } - - public SubCommand getSubCommand(List subCommands, String cmdName) { - for (SubCommand command : subCommands) { - if (command.getName().equalsIgnoreCase(cmdName)) - return command; - - for (String argList : command.getAliases()) - if (argList.equalsIgnoreCase(cmdName)) - return command; - } - - return null; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/AddUpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/AddUpgradeCommand.java deleted file mode 100644 index 45fb3ed8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/AddUpgradeCommand.java +++ /dev/null @@ -1,156 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; -import java.util.UUID; - -public class AddUpgradeCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - onCommand(sender, args); - } - - public void onCommand(CommandSender sender, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 2) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID islandOwnerUUID; - String targetPlayerName; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - islandOwnerUUID = targetPlayerOffline.getOwner(); - targetPlayerName = targetPlayerOffline.getName(); - } else { - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - targetPlayerName = targetPlayer.getName(); - } - - Upgrade.Type upgrade = null; - - for (Upgrade.Type upgradeList : Upgrade.Type.values()) { - if (upgradeList != Upgrade.Type.Size) { - if (args[1].toUpperCase().equals(upgradeList.name().toUpperCase())) { - upgrade = upgradeList; - - break; - } - } - } - - if (islandOwnerUUID == null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.AddUpgrade.Island.Owner.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (upgrade == null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.AddUpgrade.Upgrade.Exist.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else { - if (islandManager.containsIsland(islandOwnerUUID)) { - Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); - - if (island.hasUpgrade(upgrade)) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.AddUpgrade.Upgrade.Already.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - island.setUpgrade(null, upgrade, true); - } else { - File islandDataFile = new File(skyblock.getDataFolder().toString() + "/island-data", - islandOwnerUUID.toString() + ".yml"); - - if (!fileManager.isFileExist(islandDataFile)) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.AddUpgrade.Island.Data.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - FileConfiguration islandDataConfigLoad = YamlConfiguration.loadConfiguration(islandDataFile); - - if (islandDataConfigLoad.getString("Upgrade." + upgrade.name()) != null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.AddUpgrade.Upgrade.Already.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - islandDataConfigLoad.set("Upgrade." + upgrade.name(), true); - - try { - islandDataConfigLoad.save(islandDataFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.AddUpgrade.Added.Message") - .replace("%player", targetPlayerName).replace("%upgrade", upgrade.name())); - soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.AddUpgrade.Invalid.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public String getName() { - return "addupgrade"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.AddUpgrade.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/CreateCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/CreateCommand.java deleted file mode 100644 index 824bfb22..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/CreateCommand.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.menus.admin.Creator; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -public class CreateCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - if (playerDataManager.hasPlayerData(player)) { - playerDataManager.getPlayerData(player).setViewer(null); - } - - Creator.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "create"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Create.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/DeleteCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/DeleteCommand.java deleted file mode 100644 index dc1f303d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/DeleteCommand.java +++ /dev/null @@ -1,126 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class DeleteCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - onCommand(sender, args); - } - - public void onCommand(CommandSender sender, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Player player = null; - - if (sender instanceof Player) { - player = (Player) sender; - } - - if (args.length == 1) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID targetPlayerUUID; - String targetPlayerName; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - targetPlayerUUID = targetPlayerOffline.getUniqueId(); - targetPlayerName = targetPlayerOffline.getName(); - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - targetPlayerName = targetPlayer.getName(); - } - - if (targetPlayerUUID == null || !islandManager.isIslandExist(targetPlayerUUID)) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.Delete.Owner.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Island island = islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(targetPlayerUUID)); - Location spawnLocation = LocationUtil.getSpawnLocation(); - - if (spawnLocation != null && islandManager.isLocationAtIsland(island, spawnLocation)) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Admin.Delete.Spawn.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - islandManager.unloadIsland(island, null); - - return; - } - - for (Player all : Bukkit.getOnlinePlayers()) { - if (island.hasRole(IslandRole.Member, all.getUniqueId()) - || island.hasRole(IslandRole.Operator, all.getUniqueId())) { - all.sendMessage(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Command.Island.Confirmation.Deletion.Broadcast.Message"))); - soundManager.playSound(all, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); - } - } - - island.setDeleted(true); - islandManager.deleteIsland(island); - - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.Delete.Deleted.Message").replace("%player", - targetPlayerName)); - soundManager.playSound(sender, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.Delete.Invalid.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public String getName() { - return "delete"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Delete.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "remove", "disband" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/GeneratorCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/GeneratorCommand.java deleted file mode 100644 index 724f575d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/GeneratorCommand.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.menus.admin.Generator; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class GeneratorCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - 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 (skyblock.getGeneratorManager() == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.Generator.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - if (playerDataManager.hasPlayerData(player)) { - playerDataManager.getPlayerData(player).setViewer(null); - } - - Generator.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "generator"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Generator.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/LevelCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/LevelCommand.java deleted file mode 100644 index 5fd79635..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/LevelCommand.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.menus.admin.Levelling; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -public class LevelCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - SoundManager soundManager = skyblock.getSoundManager(); - - Levelling.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "level"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Level.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "levelling", "points" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/LevelScanCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/LevelScanCommand.java deleted file mode 100644 index 518d9a31..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/LevelScanCommand.java +++ /dev/null @@ -1,82 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class LevelScanCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - this.onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - this.onCommand(sender, args); - } - - private void onCommand(CommandSender sender, String[] args) { - LevellingManager levellingManager = skyblock.getLevellingManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - FileManager.Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 0) { - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.LevelScan.Invalid.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return; - } - - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[0]); - Island island = islandManager.getIsland(offlinePlayer); - - if (island == null) { - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.LevelScan.NoIsland.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return; - } - - levellingManager.calculatePoints(sender instanceof Player ? (Player) sender : null, island); - - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.LevelScan.Started.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public String getName() { - return "levelscan"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.LevelScan.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/OwnerCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/OwnerCommand.java deleted file mode 100644 index 068f936d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/OwnerCommand.java +++ /dev/null @@ -1,105 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class OwnerCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - onCommand(sender, args); - } - - public void onCommand(CommandSender sender, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - 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 (args.length == 1) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID targetPlayerUUID, islandOwnerUUID; - String targetPlayerName, islandOwnerName; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - targetPlayerUUID = targetPlayerOffline.getUniqueId(); - islandOwnerUUID = targetPlayerOffline.getOwner(); - targetPlayerName = targetPlayerOffline.getName(); - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - targetPlayerName = targetPlayer.getName(); - } - - if (islandOwnerUUID == null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.Owner.Island.None.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (islandOwnerUUID.equals(targetPlayerUUID)) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.Owner.Island.Owner.Message").replace("%player", - targetPlayerName)); - soundManager.playSound(sender, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } else { - targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID); - - if (targetPlayer == null) { - islandOwnerName = new OfflinePlayer(islandOwnerUUID).getName(); - } else { - islandOwnerName = targetPlayer.getName(); - } - - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.Owner.Island.Member.Message") - .replace("%player", targetPlayerName).replace("%owner", islandOwnerName)); - soundManager.playSound(sender, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.Owner.Invalid.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public String getName() { - return "owner"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Owner.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "ownership", "leader" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/ReloadCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/ReloadCommand.java deleted file mode 100644 index c050088b..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/ReloadCommand.java +++ /dev/null @@ -1,126 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.generator.GeneratorManager; -import me.goodandevil.skyblock.hologram.Hologram; -import me.goodandevil.skyblock.hologram.HologramManager; -import me.goodandevil.skyblock.hologram.HologramType; -import me.goodandevil.skyblock.leaderboard.LeaderboardManager; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.limit.LimitManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.Map; - -public class ReloadCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - onCommand(sender, args); - } - - public void onCommand(CommandSender sender, String[] args) { - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - HologramManager hologramManager = skyblock.getHologramManager(); - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - LimitManager limitManager = skyblock.getLimitManager(); - FileManager fileManager = skyblock.getFileManager(); - - messageManager.sendMessage(sender, "&cPlease note that this command is not supported and may " + - "cause issues that could put the plugin in an unstable state. " + - "If you encounter any issues please stop your server, edit the configuration files, " + - "and then start your server again. This command does NOT reload all the plugin files, only " + - "the config.yml, language.yml, generators.yml, levelling.yml, and limits.yml."); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Map configs = fileManager.getConfigs(); - - for (int i = 0; i < configs.size(); i++) { - String configFileName = (String) configs.keySet().toArray()[i]; - Config configFileConfig = configs.get(configFileName); - String configFilePath = configFileName.replace(configFileConfig.getFile().getName(), ""); - - if (configFilePath.equals(skyblock.getDataFolder().toString() + "\\") - || configFilePath.equals(skyblock.getDataFolder().toString() + "/")) { - configFileConfig.loadFile(); - } - } - - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); - - if (skyblock.getScoreboardManager() == null) { - if (mainConfigLoad.getBoolean("Island.Scoreboard.Enable")) { - skyblock.setScoreboardManager(new ScoreboardManager(skyblock)); - } - } else { - skyblock.getScoreboardManager().resendScoreboard(); - } - - if (skyblock.getGeneratorManager() == null) { - if (mainConfigLoad.getBoolean("Island.Generator.Enable")) { - skyblock.setGeneratorManager(new GeneratorManager(skyblock)); - } - } else { - GeneratorManager generatorManager = skyblock.getGeneratorManager(); - generatorManager.unregisterGenerators(); - generatorManager.registerGenerators(); - } - - LevellingManager levellingManager = skyblock.getLevellingManager(); - levellingManager.unregisterMaterials(); - levellingManager.registerMaterials(); - - Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { - leaderboardManager.clearLeaderboard(); - leaderboardManager.resetLeaderboard(); - leaderboardManager.setupLeaderHeads(); - - Bukkit.getScheduler().runTask(skyblock, () -> skyblock.getHologramManager().resetHologram()); - }); - - limitManager.reload(); - - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.Reload.Reloaded.Message")); - soundManager.playSound(sender, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public String getName() { - return "reload"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Reload.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RemoveHologramCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RemoveHologramCommand.java deleted file mode 100644 index c17a4060..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RemoveHologramCommand.java +++ /dev/null @@ -1,118 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -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; -import org.apache.commons.lang3.text.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; - -public class RemoveHologramCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - onCommand(sender, args); - } - - public void onCommand(CommandSender sender, 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 (args.length == 1) { - HologramType hologramType = null; - - switch (args[0].toLowerCase()) { - case "level": - hologramType = HologramType.Level; - break; - case "bank": - hologramType = HologramType.Bank; - break; - case "votes": - hologramType = HologramType.Votes; - break; - } - - 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(sender, - configLoad.getString("Command.Island.Admin.RemoveHologram.Set.Message")); - soundManager.playSound(sender, 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, () -> { - HologramType hologramType1 = HologramType - .valueOf(WordUtils.capitalize(args[0].toLowerCase())); - Hologram hologram = hologramManager.getHologram(hologramType1); - - if (hologram != null) { - hologramManager.removeHologram(hologram); - } - }); - - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveHologram.Removed.Message") - .replace("%type", hologramType.name())); - soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - - return; - } - } - - messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.RemoveHologram.Invalid.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public String getName() { - return "removehologram"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.RemoveHologram.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[] { "level", "bank", "votes" }; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RemoveUpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RemoveUpgradeCommand.java deleted file mode 100644 index 33a2ff21..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/RemoveUpgradeCommand.java +++ /dev/null @@ -1,156 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; -import java.util.UUID; - -public class RemoveUpgradeCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - onCommand(sender, args); - } - - public void onCommand(CommandSender sender, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 2) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID islandOwnerUUID; - String targetPlayerName; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - islandOwnerUUID = targetPlayerOffline.getOwner(); - targetPlayerName = targetPlayerOffline.getName(); - } else { - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - targetPlayerName = targetPlayer.getName(); - } - - Upgrade.Type upgrade = null; - - for (Upgrade.Type upgradeList : Upgrade.Type.values()) { - if (upgradeList != Upgrade.Type.Size) { - if (args[1].toUpperCase().equals(upgradeList.name().toUpperCase())) { - upgrade = upgradeList; - - break; - } - } - } - - if (islandOwnerUUID == null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveUpgrade.Island.Owner.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (upgrade == null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveUpgrade.Upgrade.Exist.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else { - if (islandManager.containsIsland(islandOwnerUUID)) { - Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); - - if (!island.hasUpgrade(upgrade)) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveUpgrade.Upgrade.Missing.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - island.removeUpgrade(upgrade); - } else { - File islandDataFile = new File(skyblock.getDataFolder().toString() + "/island-data", - islandOwnerUUID.toString() + ".yml"); - - if (!fileManager.isFileExist(islandDataFile)) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveUpgrade.Island.Data.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - FileConfiguration islandDataConfigLoad = YamlConfiguration.loadConfiguration(islandDataFile); - - if (islandDataConfigLoad.getString("Upgrade." + upgrade.name()) == null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveUpgrade.Upgrade.Missing.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - islandDataConfigLoad.set("Upgrade." + upgrade.name(), null); - - try { - islandDataConfigLoad.save(islandDataFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveUpgrade.Removed.Message") - .replace("%player", targetPlayerName).replace("%upgrade", upgrade.name())); - soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.RemoveUpgrade.Invalid.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public String getName() { - return "removeupgrade"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.RemoveUpgrade.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetHologramCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetHologramCommand.java deleted file mode 100644 index d495f4a5..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetHologramCommand.java +++ /dev/null @@ -1,102 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -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; -import org.apache.commons.lang3.text.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class SetHologramCommand extends SubCommand { - - @Override - public void onCommandByPlayer(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 (args.length == 1) { - HologramType hologramType = null; - - switch (args[0].toLowerCase()) { - case "level": - hologramType = HologramType.Level; - break; - case "bank": - hologramType = HologramType.Bank; - break; - case "votes": - hologramType = HologramType.Votes; - break; - } - - if (hologramType != null) { - fileManager.setLocation( - fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")), - "Location.Hologram.Leaderboard." + hologramType.name(), player.getLocation(), true); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> { - HologramType hologramType1 = HologramType - .valueOf(WordUtils.capitalize(args[0].toLowerCase())); - Hologram hologram = hologramManager.getHologram(hologramType1); - - if (hologram != null) { - hologramManager.removeHologram(hologram); - } - - hologramManager.spawnHologram(hologramType1); - }); - - 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); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "sethologram"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.SetHologram.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[] { "level", "bank", "votes" }; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetSizeCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetSizeCommand.java deleted file mode 100644 index 2a2705cd..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetSizeCommand.java +++ /dev/null @@ -1,147 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; -import java.util.UUID; - -public class SetSizeCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - onCommand(player, args); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - onCommand(sender, args); - } - - public void onCommand(CommandSender sender, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 2) { - if (args[1].matches("[0-9]+")) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID islandOwnerUUID; - String targetPlayerName; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - islandOwnerUUID = targetPlayerOffline.getOwner(); - targetPlayerName = targetPlayerOffline.getName(); - } else { - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - targetPlayerName = targetPlayer.getName(); - } - - int size = Integer.valueOf(args[1]); - - if (islandOwnerUUID == null) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.SetSize.Island.Owner.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (size < 50) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.SetSize.Size.Greater.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (size > 1000) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.SetSize.Size.Less.Message")); - soundManager.playSound(sender, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else { - if (islandManager.containsIsland(islandOwnerUUID)) { - Island island = islandManager - .getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); - island.setSize(size); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.WorldBorder.Enable") - && island.isBorder()) { - islandManager.updateBorder(island); - } - } else { - File islandDataFile = new File(skyblock.getDataFolder().toString() + "/island-data", - islandOwnerUUID.toString() + ".yml"); - - if (!fileManager.isFileExist(islandDataFile)) { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.SetSize.Island.Data.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - FileConfiguration islandDataConfigLoad = YamlConfiguration - .loadConfiguration(islandDataFile); - islandDataConfigLoad.set("Size", size); - - try { - islandDataConfigLoad.save(islandDataFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.SetSize.Set.Message") - .replace("%player", targetPlayerName) - .replace("%size", NumberUtil.formatNumberByDecimal(size))); - soundManager.playSound(sender, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.SetSize.Numerical.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(sender, - configLoad.getString("Command.Island.Admin.SetSize.Invalid.Message")); - soundManager.playSound(sender, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public String getName() { - return "setsize"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.SetSize.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetSpawnCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetSpawnCommand.java deleted file mode 100644 index cc33c462..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SetSpawnCommand.java +++ /dev/null @@ -1,56 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class SetSpawnCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - 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(); - - fileManager.setLocation(fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")), - "Location.Spawn", player.getLocation(), true); - messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.SetSpawn.Set.Message")); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "setspawn"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.SetSpawn.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SettingsCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SettingsCommand.java deleted file mode 100644 index f1a3213c..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/SettingsCommand.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.menus.admin.Settings; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -public class SettingsCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - SoundManager soundManager = skyblock.getSoundManager(); - - Settings.getInstance().open(player, Settings.Type.Categories, null); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "settings"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Settings.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "permissions", "perms", "p" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/StructureCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/StructureCommand.java deleted file mode 100644 index 970d6123..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/StructureCommand.java +++ /dev/null @@ -1,211 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.ChatComponent; -import me.goodandevil.skyblock.utils.structure.StructureUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import java.io.File; -import java.util.logging.Level; - -public class StructureCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 0 || args[0].equalsIgnoreCase("help")) { - for (String helpLines : configLoad.getStringList("Command.Island.Help.Lines")) { - if (helpLines.contains("%type")) { - helpLines = helpLines.replace("%type", "Structure"); - } - - if (helpLines.contains("%commands")) { - String[] sections = helpLines.split("%commands"); - String prefix = "", suffix = ""; - - if (sections.length >= 1) { - prefix = ChatColor.translateAlternateColorCodes('&', sections[0]); - } - - if (sections.length == 2) { - suffix = ChatColor.translateAlternateColorCodes('&', sections[1]); - } - - player.spigot() - .sendMessage( - new ChatComponent( - prefix.replace("%info", - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Command.Island.Admin.Structure.Tool.Info.Message"))) - + "/island admin structure tool" - + suffix.replace("%info", ChatColor.translateAlternateColorCodes( - '&', - configLoad.getString( - "Command.Island.Admin.Structure.Tool.Info.Message"))), - false, null, null, - new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Command.Island.Admin.Structure.Tool.Info.Message"))) - .create())).getTextComponent()); - player.spigot() - .sendMessage( - new ChatComponent( - prefix.replace("%info", - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Command.Island.Admin.Structure.Save.Info.Message"))) - + "/island admin structure save" - + suffix.replace("%info", ChatColor.translateAlternateColorCodes( - '&', - configLoad.getString( - "Command.Island.Admin.Structure.Save.Info.Message"))), - false, null, null, - new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Command.Island.Admin.Structure.Save.Info.Message"))) - .create())).getTextComponent()); - } else { - messageManager.sendMessage(player, helpLines); - } - } - - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - } else { - if (args[0].equalsIgnoreCase("tool")) { - try { - ItemStack is = StructureUtil.getTool(); - - for (ItemStack itemList : player.getInventory().getContents()) { - if (itemList != null) { - if ((itemList.getType() == is.getType()) && (itemList.hasItemMeta()) && (itemList - .getItemMeta().getDisplayName().equals(is.getItemMeta().getDisplayName()))) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Admin.Structure.Tool.Inventory.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - } - - player.getInventory().addItem(is); - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Admin.Structure.Tool.Equiped.Message")); - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - } catch (Exception e) { - messageManager.sendMessage(player, - configLoad.getString("Island.Structure.Tool.Material.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getLogger().log(Level.WARNING, - "SkyBlock | Error: The defined material in the configuration file for the Structure selection tool could not be found."); - } - - return; - } else if (args[0].equalsIgnoreCase("save")) { - if (args.length == 2) { - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - Location position1Location = playerData.getArea().getPosition(1); - Location position2Location = playerData.getArea().getPosition(2); - - if (position1Location == null && position2Location == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Admin.Structure.Save.Position.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if ((position1Location == null && position2Location != null) - || (position1Location != null && position2Location == null)) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Admin.Structure.Save.Complete.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (!position1Location.getWorld().getName() - .equals(position2Location.getWorld().getName())) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Admin.Structure.Save.Selection.World.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (!player.getWorld().getName().equals(position1Location.getWorld().getName())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Admin.Structure.Save.Player.World.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (!LocationUtil.isInsideArea(player.getLocation(), position1Location, - position2Location)) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Admin.Structure.Save.Player.Area.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - try { - File configFile = new File( - skyblock.getDataFolder().toString() + "/structures/" + args[1] + ".structure"); - StructureUtil.saveStructure(configFile, player.getLocation(), - StructureUtil.getFixedLocations(position1Location, position2Location)); - - messageManager.sendMessage(player, - configLoad - .getString( - "Command.Island.Admin.Structure.Save.Saved.Successful.Message") - .replace("%name", args[1])); - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } catch (Exception e) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Admin.Structure.Save.Saved.Failed.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - e.printStackTrace(); - } - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Admin.Structure.Save.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - - return; - } - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Argument.Unrecognised.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "structure"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Structure.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[] { "tool", "save" }; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/UpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/UpgradeCommand.java deleted file mode 100644 index d35c15fa..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/admin/UpgradeCommand.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.goodandevil.skyblock.command.commands.admin; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.menus.admin.Upgrade; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class UpgradeCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - 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 (skyblock.getUpgradeManager() == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Admin.Upgrade.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - if (playerDataManager.hasPlayerData(player)) { - playerDataManager.getPlayerData(player) - .setViewer(new Upgrade.Viewer(Upgrade.Viewer.Type.Upgrades, null)); - Upgrade.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "upgrade"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Admin.Upgrade.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/AcceptCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/AcceptCommand.java deleted file mode 100644 index 72161746..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/AcceptCommand.java +++ /dev/null @@ -1,248 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.api.event.player.PlayerIslandJoinEvent; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.invite.Invite; -import me.goodandevil.skyblock.invite.InviteManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.scoreboard.Scoreboard; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -public class AcceptCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = playerDataManager.getPlayerData(player); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - InviteManager inviteManager = skyblock.getInviteManager(); - - if (inviteManager.hasInvite(player.getUniqueId())) { - Invite invite = inviteManager.getInvite(player.getUniqueId()); - String playerName = args[0]; - - if (invite.getSenderName().equalsIgnoreCase(playerName)) { - inviteManager.removeInvite(player.getUniqueId()); - - if (islandManager.getIsland(player) == null) { - boolean unloadIsland = false; - Island island; - - if (islandManager.containsIsland(invite.getOwnerUUID())) { - island = islandManager - .getIsland(Bukkit.getServer().getOfflinePlayer(invite.getOwnerUUID())); - } else { - island = islandManager - .loadIsland(Bukkit.getServer().getOfflinePlayer(invite.getOwnerUUID())); - unloadIsland = true; - } - - PlayerIslandJoinEvent islandJoinEvent = new PlayerIslandJoinEvent(player, - island.getAPIWrapper()); - Bukkit.getServer().getPluginManager().callEvent(islandJoinEvent); - - if (islandJoinEvent.isCancelled()) { - if (unloadIsland) { - islandManager.unloadIsland(island, null); - } - } else { - Player targetPlayer = Bukkit.getServer().getPlayer(invite.getSenderUUID()); - - if (targetPlayer != null) { - messageManager.sendMessage(targetPlayer, - configLoad.getString("Command.Island.Accept.Accepted.Target.Message") - .replace("%player", player.getName())); - soundManager.playSound(targetPlayer, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Accept.Accepted.Sender.Message") - .replace("%player", invite.getSenderName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - playerData.setPlaytime(0); - playerData.setOwner(invite.getOwnerUUID()); - playerData.setMemberSince(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date())); - playerData.save(); - - island.setRole(IslandRole.Member, player.getUniqueId()); - island.save(); - - if ((island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size() - + 1) >= fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Member.Capacity")) { - Map invites = inviteManager.getInvites(); - - for (UUID inviteList : invites.keySet()) { - Invite targetInvite = invites.get(inviteList); - - if (targetInvite.getOwnerUUID().equals(invite.getOwnerUUID())) { - inviteManager.removeInvite(inviteList); - - Player targetInvitePlayer = Bukkit.getServer().getPlayer(inviteList); - - if (targetInvitePlayer != null) { - targetInvitePlayer - .sendMessage(ChatColor.translateAlternateColorCodes('&', - configLoad.getString( - "Command.Island.Accept.Capacity.Broadcast.Message") - .replace("%player", targetInvite.getSenderName()))); - soundManager.playSound(targetInvitePlayer, - Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } - } - } - } - - skyblock.getVisitManager().getIsland(invite.getOwnerUUID()) - .removeVoter(player.getUniqueId()); - - for (Player all : Bukkit.getOnlinePlayers()) { - if (!all.getUniqueId().equals(player.getUniqueId())) { - if (playerDataManager.hasPlayerData(all)) { - playerData = playerDataManager.getPlayerData(all); - - if (playerData.getOwner() != null - && playerData.getOwner().equals(island.getOwnerUUID())) { - all.sendMessage(ChatColor.translateAlternateColorCodes('&', - configLoad - .getString( - "Command.Island.Accept.Accepted.Broadcast.Message") - .replace("%player", player.getName()))); - soundManager.playSound(all, Sounds.FIREWORK_BLAST.bukkitSound(), 1.0F, - 1.0F); - - if (scoreboardManager != null) { - if (island.getRole(IslandRole.Member).size() == 1 - && island.getRole(IslandRole.Operator).size() == 0) { - Scoreboard scoreboard = scoreboardManager.getScoreboard(all); - scoreboard.cancel(); - scoreboard.setDisplayName( - ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Scoreboard.Island.Team.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(configLoad.getStringList( - "Scoreboard.Island.Team.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(configLoad.getStringList( - "Scoreboard.Island.Team.Occupied.Displaylines")); - } - - Map displayVariables = new HashMap<>(); - displayVariables.put("%owner", - configLoad.getString("Scoreboard.Island.Team.Word.Owner")); - displayVariables.put("%operator", configLoad - .getString("Scoreboard.Island.Team.Word.Operator")); - displayVariables.put("%member", - configLoad.getString("Scoreboard.Island.Team.Word.Member")); - - scoreboard.setDisplayVariables(displayVariables); - scoreboard.run(); - } - } - } - } - } - } - - if (scoreboardManager != null) { - Scoreboard scoreboard = scoreboardManager.getScoreboard(player); - scoreboard.cancel(); - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Scoreboard.Island.Team.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList( - configLoad.getStringList("Scoreboard.Island.Team.Empty.Displaylines")); - } else { - scoreboard.setDisplayList( - configLoad.getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); - } - - Map displayVariables = new HashMap<>(); - displayVariables.put("%owner", - configLoad.getString("Scoreboard.Island.Team.Word.Owner")); - displayVariables.put("%operator", - configLoad.getString("Scoreboard.Island.Team.Word.Operator")); - displayVariables.put("%member", - configLoad.getString("Scoreboard.Island.Team.Word.Member")); - - scoreboard.setDisplayVariables(displayVariables); - scoreboard.run(); - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Invited.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Invite.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Accept.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "accept"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Accept.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BanCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BanCommand.java deleted file mode 100644 index 3ceb0da5..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BanCommand.java +++ /dev/null @@ -1,146 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.ban.Ban; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class BanCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Banning")) { - if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Ban").getStatus())) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - if (targetPlayer != null && targetPlayer.hasPermission("fabledskyblock.bypass.ban")) - return; - - UUID targetPlayerUUID = null; - String targetPlayerName = null; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - targetPlayerUUID = targetPlayerOffline.getUniqueId(); - targetPlayerName = targetPlayerOffline.getName(); - - if (skyblock.getEconomyManager().hasPermission(skyblock.getWorldManager().getWorld(IslandWorld.Normal).getName(), Bukkit.getOfflinePlayer(targetPlayerUUID), "fabledskyblock.bypass.ban")) - return; - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - targetPlayerName = targetPlayer.getName(); - } - - if (targetPlayerUUID == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Found.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (targetPlayerUUID.equals(player.getUniqueId())) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Member, targetPlayerUUID) - || island.hasRole(IslandRole.Operator, targetPlayerUUID) - || island.hasRole(IslandRole.Owner, targetPlayerUUID)) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.getBan().isBanned(targetPlayerUUID)) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Already.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ban.Banned.Sender.Message").replace("%player", - targetPlayerName)); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - if (island.isCoopPlayer(targetPlayerUUID)) { - island.removeCoopPlayer(targetPlayerUUID); - } - - Ban ban = island.getBan(); - ban.addBan(player.getUniqueId(), targetPlayerUUID); - ban.save(); - - if (targetPlayer != null) { - if (islandManager.isPlayerAtIsland(island, targetPlayer)) { - messageManager.sendMessage(targetPlayer, - configLoad.getString("Command.Island.Ban.Banned.Target.Message") - .replace("%player", player.getName())); - soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - LocationUtil.teleportPlayerToSpawn(targetPlayer); - } - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - }); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "ban"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Ban.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BansCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BansCommand.java deleted file mode 100644 index 6a97d3ba..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BansCommand.java +++ /dev/null @@ -1,72 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.menus.Bans; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class BansCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = skyblock.getIslandManager().getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Bans.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Unban").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (island.getBan().getBans().size() == 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Bans.Bans.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Bans.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Bans.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "bans"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Bans.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "banned" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BiomeCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BiomeCommand.java deleted file mode 100644 index 4991b5a5..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BiomeCommand.java +++ /dev/null @@ -1,68 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class BiomeCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Biome.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Biome").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - me.goodandevil.skyblock.menus.Biome.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Biome.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "biome"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Biome.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BorderCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BorderCommand.java deleted file mode 100644 index c5834921..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/BorderCommand.java +++ /dev/null @@ -1,76 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class BorderCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Border").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.WorldBorder.Enable")) { - me.goodandevil.skyblock.menus.Border.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "border"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Border.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "worldborder", "wb" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CancelCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CancelCommand.java deleted file mode 100644 index e2ddbe35..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CancelCommand.java +++ /dev/null @@ -1,104 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.invite.Invite; -import me.goodandevil.skyblock.invite.InviteManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class CancelCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - InviteManager inviteManager = skyblock.getInviteManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Owner.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || island.hasRole(IslandRole.Operator, player.getUniqueId())) { - String playerName = args[0]; - Player targetPlayer = Bukkit.getServer().getPlayer(playerName); - - if (targetPlayer == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Offline.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId()) - || island.hasRole(IslandRole.Operator, targetPlayer.getUniqueId()) - || island.hasRole(IslandRole.Owner, targetPlayer.getUniqueId())) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (inviteManager.hasInvite(targetPlayer.getUniqueId())) { - Invite invite = inviteManager.getInvite(targetPlayer.getUniqueId()); - - if (invite.getOwnerUUID().equals(island.getOwnerUUID())) { - inviteManager.removeInvite(targetPlayer.getUniqueId()); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Cancel.Cancelled.Message").replace("%player", - targetPlayer.getName())); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Cancel.Invited.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Invited.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Cancel.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "cancel"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Cancel.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ChatCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ChatCommand.java deleted file mode 100644 index e362a592..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ChatCommand.java +++ /dev/null @@ -1,89 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.api.event.player.PlayerIslandChatSwitchEvent; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class ChatCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - PlayerData playerData = playerDataManager.getPlayerData(player); - if (playerData.isChat() && island != null) { - Bukkit.getServer().getPluginManager() - .callEvent(new PlayerIslandChatSwitchEvent(player, island.getAPIWrapper(), false)); - playerData.setChat(false); - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Untoggled.Message")); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - return; - } - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if ((island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size()) == 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Team.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if ((islandManager.getMembersOnline(island).size() - 1) <= 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Offline.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Bukkit.getServer().getPluginManager() - .callEvent(new PlayerIslandChatSwitchEvent(player, island.getAPIWrapper(), true)); - playerData.setChat(true); - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Toggled.Message")); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "chat"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Chat.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CloseCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CloseCommand.java deleted file mode 100644 index 9a9f3450..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CloseCommand.java +++ /dev/null @@ -1,75 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class CloseCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Visitor").getStatus())) { - if (island.isOpen()) { - islandManager.closeIsland(island); - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Closed.Message")); - soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Already.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "close"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Close.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "lock" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ConfirmCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ConfirmCommand.java deleted file mode 100644 index c7f25dfb..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ConfirmCommand.java +++ /dev/null @@ -1,219 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.confirmation.Confirmation; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.economy.EconomyManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.structure.Structure; -import me.goodandevil.skyblock.structure.StructureManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class ConfirmCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - StructureManager structureManager = skyblock.getStructureManager(); - MessageManager messageManager = skyblock.getMessageManager(); - EconomyManager economyManager = skyblock.getEconomyManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (playerData.getConfirmationTime() > 0) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Confirmation.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Confirmation confirmation = playerData.getConfirmation(); - - if (confirmation == Confirmation.Ownership || confirmation == Confirmation.Reset - || confirmation == Confirmation.Deletion) { - if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (confirmation == Confirmation.Ownership) { - UUID targetPlayerUUID = playerData.getOwnership(); - - if (island.hasRole(IslandRole.Member, targetPlayerUUID) - || island.hasRole(IslandRole.Operator, targetPlayerUUID)) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Confirmation.Confirmed.Message")); - - String targetPlayerName; - Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID); - - if (targetPlayer == null) { - targetPlayerName = new OfflinePlayer(targetPlayerUUID).getName(); - } else { - targetPlayerName = targetPlayer.getName(); - messageManager.sendMessage(targetPlayer, configLoad - .getString("Command.Island.Confirmation.Ownership.Assigned.Message")); - soundManager.playSound(targetPlayer, Sounds.ANVIL_USE.bukkitSound(), 1.0F, - 1.0F); - } - - for (Player all : Bukkit.getOnlinePlayers()) { - if ((island.hasRole(IslandRole.Member, all.getUniqueId()) - || island.hasRole(IslandRole.Operator, all.getUniqueId()) - || island.hasRole(IslandRole.Owner, all.getUniqueId()) - || island.hasRole(IslandRole.Owner, all.getUniqueId())) - && (!all.getUniqueId().equals(targetPlayerUUID))) { - all.sendMessage(ChatColor.translateAlternateColorCodes('&', - configLoad.getString( - "Command.Island.Ownership.Assigned.Broadcast.Message") - .replace("%player", targetPlayerName))); - soundManager.playSound(all, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - } - } - - playerData.setConfirmation(null); - playerData.setConfirmationTime(0); - - islandManager.giveOwnership(island, - Bukkit.getServer().getOfflinePlayer(targetPlayerUUID)); - - skyblock.getCooldownManager().createPlayer(CooldownType.Ownership, - Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); - } else { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Confirmation.Ownership.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else if (confirmation == Confirmation.Reset) { - playerData.setConfirmation(null); - playerData.setConfirmationTime(0); - } else if (confirmation == Confirmation.Deletion) { - if (island.isOpen()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Confirmation.Deletion.Open.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Location spawnLocation = LocationUtil.getSpawnLocation(); - - if (spawnLocation != null - && islandManager.isLocationAtIsland(island, spawnLocation)) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Confirmation.Deletion.Spawn.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (economyManager.isEconomy() && island.getStructure() != null - && !island.getStructure().isEmpty() - && structureManager.containsStructure(island.getStructure())) { - Structure structure = structureManager.getStructure(island.getStructure()); - double deletionCost = structure.getDeletionCost(); - - if (deletionCost != 0.0D) { - if (economyManager.hasBalance(player, deletionCost)) { - economyManager.withdraw(player, deletionCost); - } else { - messageManager.sendMessage(player, - configLoad.getString( - "Command.Island.Confirmation.Deletion.Money.Message") - .replace("%cost", "" + deletionCost)); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - return; - } - } - } - - playerData.setConfirmation(null); - playerData.setConfirmationTime(0); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Confirmation.Confirmed.Message")); - - for (Player all : Bukkit.getOnlinePlayers()) { - if (island.hasRole(IslandRole.Member, all.getUniqueId()) - || island.hasRole(IslandRole.Operator, all.getUniqueId())) { - all.sendMessage( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Command.Island.Confirmation.Deletion.Broadcast.Message"))); - soundManager.playSound(all, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); - } - } - - island.setDeleted(true); - islandManager.deleteIsland(island); - - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Confirmation.Deletion.Sender.Message")); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 10.0F, 10.0F); - } - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Confirmation.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Confirmation.Specified.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Confirmation.Pending.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "confirm"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Confirmation.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "confirmation" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ControlPanelCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ControlPanelCommand.java deleted file mode 100644 index 727efa48..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ControlPanelCommand.java +++ /dev/null @@ -1,57 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.menus.ControlPanel; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class ControlPanelCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (skyblock.getIslandManager().getIsland(player) == null) { - skyblock.getMessageManager().sendMessage(player, - configLoad.getString("Command.Island.ControlPanel.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - ControlPanel.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "controlpanel"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.ControlPanel.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "cp" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CoopCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CoopCommand.java deleted file mode 100644 index 14beef0b..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CoopCommand.java +++ /dev/null @@ -1,158 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.menus.Coop; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class CoopCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Coop.Enable")) { - if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "CoopPlayers").getStatus())) { - if (args.length == 1) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - UUID targetPlayerUUID = null; - String targetPlayerName = null; - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(args[0]); - targetPlayerUUID = offlinePlayer.getUniqueId(); - targetPlayerName = offlinePlayer.getName(); - - if (targetPlayerUUID != null && !Bukkit.getOfflinePlayer(targetPlayerUUID).hasPlayedBefore()) { - targetPlayerUUID = null; - targetPlayerName = null; - } - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - targetPlayerName = targetPlayer.getName(); - } - - if (targetPlayerUUID == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Found.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (targetPlayerUUID.equals(player.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Coop.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Member, targetPlayerUUID) - || island.hasRole(IslandRole.Operator, targetPlayerUUID) - || island.hasRole(IslandRole.Owner, targetPlayerUUID)) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.getBan().isBanned(targetPlayerUUID)) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Banned.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.isCoopPlayer(targetPlayerUUID)) { - if (targetPlayer != null) { - if (islandManager.getVisitorsAtIsland(island).contains(targetPlayerUUID)) { - if (!island.isOpen()) { - LocationUtil.teleportPlayerToSpawn(targetPlayer); - - messageManager.sendMessage(targetPlayer, - configLoad.getString("Command.Island.Coop.Removed.Target.Message")); - soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, - 1.0F); - } - } - } - - island.removeCoopPlayer(targetPlayerUUID); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Coop.Removed.Sender.Message").replace("%player", - targetPlayerName)); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } else { - island.addCoopPlayer(targetPlayerUUID); - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Added.Message") - .replace("%player", targetPlayerName)); - - if (targetPlayer != null) { - messageManager.sendMessage(targetPlayer, configLoad.getString("Command.Island.Coop.AddedTarget.Message") - .replace("%player", player.getName())); - } - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - - return; - } else if (args.length != 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - Coop.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "coop"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Coop.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CreateCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CreateCommand.java deleted file mode 100644 index fab66284..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CreateCommand.java +++ /dev/null @@ -1,129 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.cooldown.Cooldown; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownPlayer; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.menus.Creator; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.structure.Structure; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.List; - -public class CreateCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - CooldownManager cooldownManager = skyblock.getCooldownManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (islandManager.getIsland(player) == null) { - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - - if (mainConfig.getFileConfiguration().getBoolean("Island.Creation.Menu.Enable")) { - Creator.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else { - List structures = skyblock.getStructureManager().getStructures(); - - if (structures.size() == 0) { - messageManager.sendMessage(player, configLoad.getString("Island.Creator.Selector.None.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!fileManager - .isFileExist(new File(new File(skyblock.getDataFolder().toString() + "/structures"), - structures.get(0).getOverworldFile()))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Creator.Selector.File.Overworld.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!fileManager - .isFileExist(new File(new File(skyblock.getDataFolder().toString() + "/structures"), - structures.get(0).getNetherFile()))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Creator.Selector.File.Nether.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Creation.Cooldown.Creation.Enable") - && cooldownManager.hasPlayer(CooldownType.Creation, player)) { - CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Creation, player); - Cooldown cooldown = cooldownPlayer.getCooldown(); - - if (cooldown.getTime() < 60) { - messageManager.sendMessage(player, - config.getFileConfiguration().getString("Island.Creator.Selector.Cooldown.Message") - .replace("%time", cooldown.getTime() + " " + config.getFileConfiguration() - .getString("Island.Creator.Selector.Cooldown.Word.Second"))); - } else { - long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); - messageManager.sendMessage(player, - config.getFileConfiguration().getString("Island.Creator.Selector.Cooldown.Message") - .replace("%time", durationTime[2] + " " - + config.getFileConfiguration() - .getString("Island.Creator.Selector.Cooldown.Word.Minute") - + " " + durationTime[3] + " " + config.getFileConfiguration() - .getString("Island.Creator.Selector.Cooldown.Word.Second"))); - } - - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (islandManager.createIsland(player, structures.get(0))) { - messageManager.sendMessage(player, configLoad.getString("Island.Creator.Selector.Created.Message")); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Create.Owner.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "create"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Create.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "new" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CurrentCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CurrentCommand.java deleted file mode 100644 index 1c0cab43..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/CurrentCommand.java +++ /dev/null @@ -1,125 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class CurrentCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length > 0) { - if (!args[0].equalsIgnoreCase(player.getName())) { - if (args.length == 1) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - if (targetPlayer == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Current.Offline.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (!targetPlayer.getName().equals(player.getName())) { - PlayerData playerData = playerDataManager.getPlayerData(targetPlayer); - - if (playerData.getIsland() == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Current.Island.None.Other.Message")); - } else { - String targetPlayerName = targetPlayer.getName(), ownerPlayerName; - targetPlayer = Bukkit.getServer().getPlayer(playerData.getIsland()); - - if (targetPlayer == null) { - ownerPlayerName = new OfflinePlayer(playerData.getIsland()).getName(); - } else { - ownerPlayerName = targetPlayer.getName(); - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Current.Island.Owner.Other.Message") - .replace("%target", targetPlayerName) - .replace("%owner", ownerPlayerName)); - } - - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (args.length > 1) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Current.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - } - - PlayerData playerData = playerDataManager.getPlayerData(player); - - if (playerData.getIsland() == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Current.Island.None.Yourself.Message")); - } else { - Player targetPlayer = Bukkit.getServer().getPlayer(playerData.getIsland()); - String targetPlayerName; - - if (targetPlayer == null) { - targetPlayerName = new OfflinePlayer(playerData.getIsland()).getName(); - } else { - targetPlayerName = targetPlayer.getName(); - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Current.Island.Owner.Yourself.Message").replace("%player", - targetPlayerName)); - } - - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "current"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Current.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "cur" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DeleteCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DeleteCommand.java deleted file mode 100644 index 0376a82e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DeleteCommand.java +++ /dev/null @@ -1,153 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.confirmation.Confirmation; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.ChatComponent; -import me.goodandevil.skyblock.utils.version.Sounds; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.chat.ComponentSerializer; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class DeleteCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Delete.Owner.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (playerData.getConfirmationTime() > 0) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Delete.Confirmation.Pending.Message")); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } else { - int confirmationTime = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Confirmation.Timeout"); - - playerData.setConfirmation(Confirmation.Deletion); - playerData.setConfirmationTime(confirmationTime); - - String confirmationMessage = configLoad.getString("Command.Island.Delete.Confirmation.Confirm.Message") - .replace("%time", "" + confirmationTime); - - if (confirmationMessage.contains("%confirm")) { - String[] confirmationMessages = confirmationMessage.split("%confirm"); - - if (confirmationMessages.length == 0) { - player.spigot().sendMessage(new ChatComponent( - configLoad.getString("Command.Island.Delete.Confirmation.Confirm.Word.Confirm") - .toUpperCase(), - true, ChatColor.RED, new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', - configLoad.getString( - "Command.Island.Delete.Confirmation.Confirm.Word.Tutorial"))) - .create())).getTextComponent()); - } else { - ChatComponent chatComponent = new ChatComponent("", false, null, null, null); - - for (int i = 0; i < confirmationMessages.length; i++) { - String message = confirmationMessages[i]; - - if (message.contains("\n") || message.contains("\\n")) { - message = message.replace("\\n", "\n"); - - for (String messageList : message.split("\n")) { - chatComponent - .addExtraChatComponent( - new ChatComponent( - messageManager.replaceMessage(player, - messageList.replace("%time", - "" + confirmationTime)), - false, null, null, null)); - - chatComponent - .addExtra(new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); - } - } else { - chatComponent.addExtraChatComponent(new ChatComponent( - messageManager.replaceMessage(player, - message.replace("%time", "" + confirmationTime)), - false, null, null, null)); - } - - if (confirmationMessages.length == 1 || i + 1 != confirmationMessages.length) { - chatComponent.addExtraChatComponent(new ChatComponent( - configLoad.getString("Command.Island.Delete.Confirmation.Confirm.Word.Confirm") - .toUpperCase(), - true, ChatColor.RED, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Command.Island.Delete.Confirmation.Confirm.Word.Tutorial"))) - .create()))); - } - } - - player.spigot().sendMessage(chatComponent.getTextComponent()); - } - } else { - messageManager.sendMessage(player, confirmationMessage.replace("%time", "" + confirmationTime)); - } - - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Delete.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "delete"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Delete.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "remove", "disband", "reset", "restart" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DemoteCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DemoteCommand.java deleted file mode 100644 index 7ff0ae70..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DemoteCommand.java +++ /dev/null @@ -1,127 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.Set; -import java.util.UUID; - -public class DemoteCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Demote.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(args[0]); - Set islandMembers = island.getRole(IslandRole.Member); - - if (offlinePlayer.getUniqueId() != null && (islandMembers.contains(offlinePlayer.getUniqueId()) - || island.getRole(IslandRole.Operator).contains(offlinePlayer.getUniqueId()))) { - if (islandMembers.contains(offlinePlayer.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Demote.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Demote.Demoted.Sender.Message") - .replace("%player", offlinePlayer.getName())); - - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - island.removeRole(IslandRole.Operator, offlinePlayer.getUniqueId()); - island.setRole(IslandRole.Member, offlinePlayer.getUniqueId()); - island.save(); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Demote.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId()) - || island.hasRole(IslandRole.Operator, targetPlayer.getUniqueId())) { - if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Demote.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Demote.Demoted.Sender.Message") - .replace("%player", targetPlayer.getName())); - messageManager.sendMessage(targetPlayer, - configLoad.getString("Command.Island.Demote.Demoted.Target.Message")); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - island.removeRole(IslandRole.Operator, targetPlayer.getUniqueId()); - island.setRole(IslandRole.Member, targetPlayer.getUniqueId()); - island.save(); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Promote.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Demote.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Demote.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "demote"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Demote.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DenyCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DenyCommand.java deleted file mode 100644 index e2187d02..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/DenyCommand.java +++ /dev/null @@ -1,86 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.invite.Invite; -import me.goodandevil.skyblock.invite.InviteManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class DenyCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - InviteManager inviteManager = skyblock.getInviteManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - if (inviteManager.hasInvite(player.getUniqueId())) { - Invite invite = inviteManager.getInvite(player.getUniqueId()); - String playerName = args[0]; - - if (invite.getSenderName().equalsIgnoreCase(playerName)) { - Player targetPlayer = Bukkit.getServer().getPlayer(invite.getSenderUUID()); - - if (targetPlayer != null) { - messageManager.sendMessage(targetPlayer, - configLoad.getString("Command.Island.Deny.Denied.Target.Message").replace("%player", - player.getName())); - soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); - } - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Denied.Sender.Message") - .replace("%player", invite.getSenderName())); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); - - inviteManager.removeInvite(player.getUniqueId()); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Invited.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Invited.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Deny.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "deny"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Deny.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/InformationCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/InformationCommand.java deleted file mode 100644 index ba0c317c..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/InformationCommand.java +++ /dev/null @@ -1,104 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.menus.Information; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class InformationCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - if (playerDataManager.hasPlayerData(player)) { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - UUID islandOwnerUUID = null; - - if (args.length == 1) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - if (targetPlayer == null) { - OfflinePlayer targetOfflinePlayer = new OfflinePlayer(args[0]); - islandOwnerUUID = targetOfflinePlayer.getOwner(); - } else { - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - } - - if (islandOwnerUUID == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Information.Island.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (args.length != 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Information.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - if (islandOwnerUUID == null) { - if (islandManager.getIsland(player) == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Information.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else { - islandOwnerUUID = playerData.getOwner(); - } - } - - playerData.setViewer(new Information.Viewer(islandOwnerUUID, Information.Viewer.Type.Categories)); - Information.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "information"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Information.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "info" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/InviteCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/InviteCommand.java deleted file mode 100644 index 432cfb56..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/InviteCommand.java +++ /dev/null @@ -1,262 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.api.event.island.IslandInviteEvent; -import me.goodandevil.skyblock.api.invite.IslandInvitation; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.invite.Invite; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.ChatComponent; -import me.goodandevil.skyblock.utils.version.Sounds; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.chat.ComponentSerializer; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class InviteCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Owner.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Invite").getStatus())) { - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - - if ((island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size() - + 1) >= mainConfig.getFileConfiguration().getInt("Island.Member.Capacity")) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Capacity.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - String playerName = args[0]; - - if (playerName.equalsIgnoreCase(player.getName())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Invite.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Player targetPlayer = Bukkit.getServer().getPlayer(playerName); - - if (targetPlayer == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Invite.Offline.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (targetPlayer.getName().equalsIgnoreCase(player.getName())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Invite.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Member, targetPlayer.getUniqueId()) - || island.hasRole(IslandRole.Operator, targetPlayer.getUniqueId()) - || island.hasRole(IslandRole.Owner, targetPlayer.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Invite.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (skyblock.getInviteManager().hasInvite(targetPlayer.getUniqueId())) { - Invite invite = skyblock.getInviteManager().getInvite(targetPlayer.getUniqueId()); - - if (invite.getOwnerUUID().equals(island.getOwnerUUID())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Invite.Already.Own.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Invite.Already.Other.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - int respondTime = mainConfig.getFileConfiguration().getInt("Island.Invite.Time"); - - String cancellationMessage = configLoad - .getString("Command.Island.Invite.Invited.Sender.Sent.Message"); - String timeMessage; - - if (respondTime < 60) { - timeMessage = respondTime + " " - + configLoad.getString("Command.Island.Invite.Invited.Word.Second"); - } else { - timeMessage = respondTime / 60 + " " - + configLoad.getString("Command.Island.Invite.Invited.Word.Minute"); - } - - // TODO: Use this same logic wherever a clickable placeholder has to be replaced at - String placeholderName = "%cancel"; - if (cancellationMessage.contains(placeholderName)) { - if (cancellationMessage.equals(placeholderName)) { - player.spigot().sendMessage(new ChatComponent(configLoad - .getString("Command.Island.Invite.Invited.Word.Cancel").toUpperCase(), true, - ChatColor.RED, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, - "/island cancel " + targetPlayer.getName()), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( - ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Command.Island.Invite.Invited.Word.Tutorial") - .replace("%action", configLoad.getString( - "Command.Island.Invite.Invited.Word.Cancel")))) - .create())).getTextComponent()); - } else { - ChatComponent chatComponent = new ChatComponent("", false, null, null, null); - - String[] messagePieces = cancellationMessage.replace("\\n", "\n").split("\n"); - for (int i = 0; i < messagePieces.length; i++) { - String piece = messagePieces[i].replace("%player", targetPlayer.getName()).replace("%time", timeMessage); - - if (piece.contains(placeholderName)) { - String before = piece.substring(0, piece.indexOf(placeholderName)); - String after = piece.substring(piece.indexOf(placeholderName) + placeholderName.length()); - - chatComponent.addExtraChatComponent(new ChatComponent(before, false, null, null, null)); - - chatComponent.addExtraChatComponent(new ChatComponent( - configLoad.getString("Command.Island.Invite.Invited.Word.Cancel").toUpperCase(), - true, ChatColor.RED, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, - "/island cancel " + targetPlayer.getName()), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( - ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Command.Island.Invite.Invited.Word.Tutorial") - .replace("%action", configLoad.getString( - "Command.Island.Invite.Invited.Word.Cancel")))) - .create()))); - - chatComponent.addExtraChatComponent(new ChatComponent(after, false, null, null, null)); - } else { - chatComponent.addExtraChatComponent(new ChatComponent(piece, false, null, null, null)); - } - - if (i != messagePieces.length - 1) - chatComponent.addExtra(new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); - } - - player.spigot().sendMessage(chatComponent.getTextComponent()); - } - } else { - messageManager.sendMessage(player, cancellationMessage - .replace("%player", targetPlayer.getName()).replace("%time", timeMessage)); - } - - String invitationMessage = configLoad - .getString("Command.Island.Invite.Invited.Target.Received.Message"); - ChatComponent chatComponent = new ChatComponent("", false, null, null, null); - - if (invitationMessage.contains("\n") || invitationMessage.contains("\\n")) { - invitationMessage = invitationMessage.replace("\\n", "\n"); - - for (String messageList : invitationMessage.split("\n")) { - chatComponent - .addExtra(new ChatComponent( - messageManager.replaceMessage(player, - messageList.replace("%player", player.getName()) - .replace("%time", timeMessage)), - false, null, null, null)); - - chatComponent - .addExtra(new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); - } - } else { - chatComponent - .addExtra(new ChatComponent( - messageManager.replaceMessage(player, - invitationMessage.replace("%player", player.getName()) - .replace("%time", timeMessage)), - false, null, null, null)); - } - - chatComponent.addExtra(new ChatComponent( - configLoad.getString("Command.Island.Invite.Invited.Word.Accept").toUpperCase(), - true, ChatColor.GREEN, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island accept " + player.getName()), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Command.Island.Invite.Invited.Word.Tutorial") - .replace("%action", configLoad.getString( - "Command.Island.Invite.Invited.Word.Accept")))) - .create()))); - - chatComponent.addExtra(new ChatComponent(" | ", false, ChatColor.DARK_GRAY, null, null)); - - chatComponent.addExtra(new ChatComponent( - configLoad.getString("Command.Island.Invite.Invited.Word.Deny").toUpperCase(), true, - ChatColor.RED, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island deny " + player.getName()), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Command.Island.Invite.Invited.Word.Tutorial") - .replace("%action", configLoad.getString( - "Command.Island.Invite.Invited.Word.Deny")))) - .create()))); - - targetPlayer.spigot().sendMessage(chatComponent.getTextComponent()); - - Invite invite = skyblock.getInviteManager().createInvite(targetPlayer, player, - island.getOwnerUUID(), respondTime); - - Bukkit.getServer().getPluginManager() - .callEvent(new IslandInviteEvent(island.getAPIWrapper(), - new IslandInvitation(targetPlayer, player, invite.getTime()))); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - soundManager.playSound(targetPlayer, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Invite.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "invite"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Invite.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/KickAllCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/KickAllCommand.java deleted file mode 100644 index f2fd9154..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/KickAllCommand.java +++ /dev/null @@ -1,109 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.api.event.island.IslandKickEvent; -import me.goodandevil.skyblock.api.utils.APIUtil; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.Set; -import java.util.UUID; - -public class KickAllCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Kick").getStatus())) { - if (island.isOpen()) { - Set islandVisitors = islandManager.getVisitorsAtIsland(island); - - if (islandVisitors.size() == 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Visitors.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - for (UUID islandVisitorList : islandVisitors) { - Player targetPlayer = Bukkit.getServer().getPlayer(islandVisitorList); - - if (targetPlayer != null && targetPlayer.hasPermission("fabledskyblock.bypass.ban")) - continue; - - IslandKickEvent islandKickEvent = new IslandKickEvent(island.getAPIWrapper(), - APIUtil.fromImplementation(IslandRole.Visitor), - Bukkit.getServer().getOfflinePlayer(islandVisitorList), player); - Bukkit.getServer().getPluginManager().callEvent(islandKickEvent); - - if (!islandKickEvent.isCancelled()) { - LocationUtil.teleportPlayerToSpawn(targetPlayer); - - messageManager.sendMessage(targetPlayer, - configLoad.getString("Command.Island.KickAll.Kicked.Target.Message") - .replace("%player", player.getName())); - soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.KickAll.Kicked.Sender.Message").replace("%visitors", - "" + islandVisitors.size())); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Closed.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Role.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "expel"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.KickAll.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/KickCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/KickCommand.java deleted file mode 100644 index 9c1f2608..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/KickCommand.java +++ /dev/null @@ -1,287 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.api.event.island.IslandKickEvent; -import me.goodandevil.skyblock.api.utils.APIUtil; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.scoreboard.Scoreboard; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; -import java.util.Set; -import java.util.UUID; - -public class KickCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = playerDataManager.getPlayerData(player); - - Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - - if (args.length == 1) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Kick.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Kick").getStatus())) { - UUID targetPlayerUUID = null; - String targetPlayerName = null; - - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - if (targetPlayer != null && targetPlayer.hasPermission("fabledskyblock.bypass.ban")) - return; - - Set islandMembers = island.getRole(IslandRole.Member), - islandOperators = island.getRole(IslandRole.Operator), - islandVisitors = islandManager.getVisitorsAtIsland(island); - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - targetPlayerUUID = targetPlayerOffline.getUniqueId(); - targetPlayerName = targetPlayerOffline.getName(); - - if (skyblock.getEconomyManager().hasPermission(skyblock.getWorldManager().getWorld(IslandWorld.Normal).getName(), Bukkit.getOfflinePlayer(targetPlayerUUID), "fabledskyblock.bypass.ban")) - return; - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - targetPlayerName = targetPlayer.getName(); - } - - if (targetPlayerUUID.equals(player.getUniqueId())) { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Kick.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (islandOperators.contains(player.getUniqueId()) - && islandOperators.contains(targetPlayerUUID)) { - messageManager.sendMessage(player, languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Role.Operator.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.getOwnerUUID().equals(targetPlayerUUID)) { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Kick.Role.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.isOpen() && islandVisitors.contains(targetPlayerUUID) && targetPlayer != null) { - if (island.isCoopPlayer(targetPlayerUUID)) { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Kick.Cooped.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - IslandKickEvent islandKickEvent = new IslandKickEvent(island.getAPIWrapper(), - APIUtil.fromImplementation(IslandRole.Visitor), - Bukkit.getServer().getOfflinePlayer(targetPlayerUUID), player); - - Bukkit.getScheduler().runTask(skyblock, () -> Bukkit.getServer().getPluginManager().callEvent(islandKickEvent)); - - if (!islandKickEvent.isCancelled()) { - LocationUtil.teleportPlayerToSpawn(targetPlayer); - - messageManager.sendMessage(player, - languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Kicked.Sender.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - messageManager.sendMessage(targetPlayer, - languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Kicked.Target.Message") - .replace("%player", player.getName())); - soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } - } - } else if (islandMembers.contains(targetPlayerUUID) || islandOperators.contains(targetPlayerUUID)) { - IslandRole islandRole = IslandRole.Member; - - if (islandOperators.contains(targetPlayerUUID)) { - islandRole = IslandRole.Operator; - } - - IslandKickEvent islandKickEvent = new IslandKickEvent(island.getAPIWrapper(), - APIUtil.fromImplementation(islandRole), - Bukkit.getServer().getOfflinePlayer(targetPlayerUUID), player); - - Bukkit.getScheduler().runTask(skyblock, () -> Bukkit.getServer().getPluginManager().callEvent(islandKickEvent)); - - if (!islandKickEvent.isCancelled()) { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Kicked.Sender.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - if (targetPlayer == null) { - Config config = fileManager - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - targetPlayerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - configLoad.set("Statistics.Island.Playtime", null); - configLoad.set("Statistics.Island.Join", null); - configLoad.set("Island.Owner", null); - - try { - configLoad.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } else { - messageManager.sendMessage(targetPlayer, - languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Kicked.Target.Message") - .replace("%player", player.getName())); - soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - if (islandManager.isPlayerAtIsland(island, targetPlayer)) { - LocationUtil.teleportPlayerToSpawn(targetPlayer); - } - - if (scoreboardManager != null) { - Scoreboard scoreboard = scoreboardManager.getScoreboard(targetPlayer); - scoreboard.cancel(); - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', languageConfig - .getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); - scoreboard.setDisplayList(languageConfig.getFileConfiguration() - .getStringList("Scoreboard.Tutorial.Displaylines")); - scoreboard.run(); - } - - playerData = playerDataManager.getPlayerData(targetPlayer); - playerData.setPlaytime(0); - playerData.setMemberSince(null); - playerData.setOwner(null); - playerData.setChat(false); - playerData.save(); - } - - if (islandMembers.contains(targetPlayerUUID)) { - island.removeRole(IslandRole.Member, targetPlayerUUID); - } else if (islandOperators.contains(targetPlayerUUID)) { - island.removeRole(IslandRole.Operator, targetPlayerUUID); - } - - island.save(); - - Set islandMembersOnline = islandManager.getMembersOnline(island); - - if (islandMembersOnline.size() == 1) { - for (UUID islandMembersOnlineList : islandMembersOnline) { - if (!islandMembersOnlineList.equals(player.getUniqueId())) { - targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); - PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); - - if (targetPlayerData.isChat()) { - targetPlayerData.setChat(false); - messageManager.sendMessage(targetPlayer, fileManager - .getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Chat.Untoggled.Message")); - } - } - } - } - - if (scoreboardManager != null) { - if (island.getRole(IslandRole.Member).size() == 0 - && island.getRole(IslandRole.Operator).size() == 0) { - Scoreboard scoreboard = scoreboardManager.getScoreboard(player); - scoreboard.cancel(); - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', languageConfig - .getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(languageConfig.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(languageConfig.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); - } - - scoreboard.run(); - } - } - } - } else { - if (island.isOpen()) { - messageManager.sendMessage(player, languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Occupant.Visit.Open.Message")); - } else { - messageManager.sendMessage(player, languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Occupant.Visit.Closed.Message")); - } - - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - if (island.isOpen()) { - messageManager.sendMessage(player, languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Permission.Visit.Open.Message")); - } else { - messageManager.sendMessage(player, languageConfig.getFileConfiguration() - .getString("Command.Island.Kick.Permission.Visit.Closed.Message")); - } - - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Kick.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - }); - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "kick"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Kick.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LeaderboardCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LeaderboardCommand.java deleted file mode 100644 index 766fd0ad..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LeaderboardCommand.java +++ /dev/null @@ -1,98 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.menus.Leaderboard; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class LeaderboardCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - 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 (playerDataManager.hasPlayerData(player)) { - if (args.length == 0) { - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Vote")) { - playerDataManager.getPlayerData(player) - .setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Browse)); - } else { - playerDataManager.getPlayerData(player) - .setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Level)); - } - } else if (args.length == 1) { - String type = args[0].toLowerCase(); - switch (type) { - case "level": - playerDataManager.getPlayerData(player).setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Level)); - break; - case "bank": - playerDataManager.getPlayerData(player).setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Bank)); - break; - case "votes": - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Vote")) { - playerDataManager.getPlayerData(player).setViewer(new Leaderboard.Viewer(Leaderboard.Viewer.Type.Votes)); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Leaderboard.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return; - } - break; - default: - messageManager.sendMessage(player, configLoad.getString("Command.Island.Leaderboard.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return; - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Leaderboard.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - Leaderboard.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "leaderboard"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Leaderboard.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "lb", "top" }; - } - - @Override - public String[] getArguments() { - return new String[] { "level", "bank", "votes" }; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LeaveCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LeaveCommand.java deleted file mode 100644 index 8ecbb609..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LeaveCommand.java +++ /dev/null @@ -1,169 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.api.event.player.PlayerIslandLeaveEvent; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.scoreboard.Scoreboard; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.Set; -import java.util.UUID; - -public class LeaveCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = playerDataManager.getPlayerData(player); - - Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Leave.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Leave.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - PlayerIslandLeaveEvent islandLeaveEvent = new PlayerIslandLeaveEvent(player, island.getAPIWrapper()); - Bukkit.getServer().getPluginManager().callEvent(islandLeaveEvent); - - if (!islandLeaveEvent.isCancelled()) { - if (islandManager.isPlayerAtIsland(island, player)) { - LocationUtil.teleportPlayerToSpawn(player); - } - - if (island.hasRole(IslandRole.Member, player.getUniqueId())) { - island.removeRole(IslandRole.Member, player.getUniqueId()); - } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { - island.removeRole(IslandRole.Operator, player.getUniqueId()); - } - - island.save(); - - playerData.setPlaytime(0); - playerData.setOwner(null); - playerData.setMemberSince(null); - playerData.setChat(false); - playerData.save(); - - Set islandMembersOnline = islandManager.getMembersOnline(island); - - if (islandMembersOnline.size() == 1) { - for (UUID islandMembersOnlineList : islandMembersOnline) { - if (!islandMembersOnlineList.equals(player.getUniqueId())) { - Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); - PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); - - if (targetPlayerData.isChat()) { - targetPlayerData.setChat(false); - messageManager.sendMessage(targetPlayer, - fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Chat.Untoggled.Message")); - } - } - } - } - - // TODO Check if player has been teleported - islandManager.unloadIsland(island, null); - - for (Player all : Bukkit.getOnlinePlayers()) { - if (!all.getUniqueId().equals(player.getUniqueId())) { - if (island.hasRole(IslandRole.Member, all.getUniqueId()) - || island.hasRole(IslandRole.Operator, all.getUniqueId()) - || island.hasRole(IslandRole.Owner, all.getUniqueId())) { - all.sendMessage(ChatColor.translateAlternateColorCodes('&', - languageConfig.getFileConfiguration() - .getString("Command.Island.Leave.Left.Broadcast.Message") - .replace("%player", player.getName()))); - soundManager.playSound(all, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); - - if (island.getRole(IslandRole.Member).size() == 0 - && island.getRole(IslandRole.Operator).size() == 0) { - if (scoreboardManager != null) { - if (islandManager.getVisitorsAtIsland(island).size() != 0) { - Scoreboard scoreboard = scoreboardManager.getScoreboard(all); - scoreboard.cancel(); - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - languageConfig.getFileConfiguration() - .getString("Scoreboard.Island.Solo.Displayname"))); - scoreboard.setDisplayList(languageConfig.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); - scoreboard.run(); - } - } - - break; - } - } - } - } - - messageManager.sendMessage(player, - languageConfig.getFileConfiguration().getString("Command.Island.Leave.Left.Sender.Message")); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 5.0F, 5.0F); - - if (scoreboardManager != null) { - Scoreboard scoreboard = scoreboardManager.getScoreboard(player); - scoreboard.cancel(); - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - languageConfig.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); - scoreboard.setDisplayList( - languageConfig.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); - scoreboard.run(); - } - } - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "leave"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Leave.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LevelCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LevelCommand.java deleted file mode 100644 index a44462b6..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/LevelCommand.java +++ /dev/null @@ -1,173 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.cooldown.Cooldown; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownPlayer; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.menus.Levelling; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.visit.VisitManager; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class LevelCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - LevellingManager levellingManager = skyblock.getLevellingManager(); - CooldownManager cooldownManager = skyblock.getCooldownManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - VisitManager visitManager = skyblock.getVisitManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID islandOwnerUUID = null; - String targetPlayerName; - - if (targetPlayer == null) { - OfflinePlayer targetOfflinePlayer = new OfflinePlayer(args[0]); - islandOwnerUUID = targetOfflinePlayer.getOwner(); - targetPlayerName = targetOfflinePlayer.getName(); - } else { - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - targetPlayerName = targetPlayer.getName(); - } - - if (islandOwnerUUID == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Owner.Other.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!islandOwnerUUID.equals(playerDataManager.getPlayerData(player).getOwner())) { - if (visitManager.hasIsland(islandOwnerUUID)) { - me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(islandOwnerUUID); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Level.Message") - .replace("%player", targetPlayerName).replace("%level", - "" + NumberUtil.formatNumberByDecimal(visit.getLevel().getLevel()))); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - return; - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Owner.Other.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (args.length != 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Owner.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - player.closeInventory(); - - if (!island.getLevel().hasMaterials()) { - org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); - - if (cooldownManager.hasPlayer(CooldownType.Levelling, offlinePlayer)) { - CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Levelling, - offlinePlayer); - Cooldown cooldown = cooldownPlayer.getCooldown(); - - long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); - - if (cooldown.getTime() >= 3600) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Cooldown.Message").replace("%time", - durationTime[1] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") - + " " + durationTime[2] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") - + " " + durationTime[3] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Second"))); - } else if (cooldown.getTime() >= 60) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Cooldown.Message").replace("%time", - durationTime[2] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") - + " " + durationTime[3] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Second"))); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Cooldown.Message").replace("%time", - cooldown.getTime() + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Second"))); - } - - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Processing.Message")); - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - cooldownManager.createPlayer(CooldownType.Levelling, - Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); - levellingManager.calculatePoints(player, island); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Loading.Message")); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - Levelling.getInstance().open(player); - } - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "level"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Level.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "levelling", "points" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/MembersCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/MembersCommand.java deleted file mode 100644 index f9e09441..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/MembersCommand.java +++ /dev/null @@ -1,59 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.menus.Members; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -import java.io.File; - -public class MembersCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - SoundManager soundManager = skyblock.getSoundManager(); - - if (skyblock.getIslandManager().getIsland(player) == null) { - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - playerData.setType(Members.Type.Default); - playerData.setSort(Members.Sort.Default); - - Members.getInstance().open(player, (Members.Type) playerData.getType(), - (Members.Sort) playerData.getSort()); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "members"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Members.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/OpenCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/OpenCommand.java deleted file mode 100644 index 97036183..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/OpenCommand.java +++ /dev/null @@ -1,75 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class OpenCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Visitor").getStatus())) { - if (island.isOpen()) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Already.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - island.setOpen(true); - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Opened.Message")); - soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "open"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Open.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/OwnerCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/OwnerCommand.java deleted file mode 100644 index 68b5c40e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/OwnerCommand.java +++ /dev/null @@ -1,273 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.confirmation.Confirmation; -import me.goodandevil.skyblock.cooldown.Cooldown; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownPlayer; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.menus.Ownership; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.ChatComponent; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.chat.ComponentSerializer; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class OwnerCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - CooldownManager cooldownManager = skyblock.getCooldownManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ownership.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (args.length == 0) { - if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - playerData.setType(Ownership.Visibility.Hidden); - Ownership.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (args.length == 1) { - if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (playerData.getConfirmationTime() > 0) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Confirmation.Pending.Message")); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } else { - UUID targetPlayerUUID; - String targetPlayerName; - - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(args[0]); - targetPlayerUUID = offlinePlayer.getUniqueId(); - targetPlayerName = offlinePlayer.getName(); - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - targetPlayerName = targetPlayer.getName(); - } - - if (targetPlayerUUID == null || (!island.hasRole(IslandRole.Member, targetPlayerUUID) - && !island.hasRole(IslandRole.Operator, targetPlayerUUID) - && !island.hasRole(IslandRole.Owner, targetPlayerUUID))) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (targetPlayerUUID.equals(player.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (cooldownManager.hasPlayer(CooldownType.Ownership, - Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()))) { - CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Ownership, - Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); - Cooldown cooldown = cooldownPlayer.getCooldown(); - long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); - - if (cooldown.getTime() >= 3600) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Ownership.Cooldown.Message") - .replace("%time", durationTime[1] + " " - + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Minute") - + " " + durationTime[2] + " " - + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Minute") - + " " + durationTime[3] + " " - + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Second"))); - } else if (cooldown.getTime() >= 60) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Ownership.Cooldown.Message") - .replace("%time", durationTime[2] + " " - + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Minute") - + " " + durationTime[3] + " " - + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Second"))); - } else { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Ownership.Cooldown.Message") - .replace("%time", cooldown.getTime() + " " - + configLoad.getString("Command.Island.Ownership.Cooldown.Word.Second"))); - } - - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } else { - int confirmationTime = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Confirmation.Timeout"); - - playerData.setOwnership(targetPlayerUUID); - playerData.setConfirmation(Confirmation.Ownership); - playerData.setConfirmationTime(confirmationTime); - - String confirmationMessage = configLoad - .getString("Command.Island.Ownership.Confirmation.Confirm.Message") - .replace("%time", "" + confirmationTime); - - if (confirmationMessage.contains("%confirm")) { - String[] confirmationMessages = confirmationMessage.split("%confirm"); - - if (confirmationMessages.length == 0) { - player.spigot() - .sendMessage(new ChatComponent(configLoad - .getString("Command.Island.Ownership.Confirmation.Confirm.Word.Confirm") - .toUpperCase(), true, ChatColor.RED, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', - configLoad.getString( - "Command.Island.Ownership.Confirmation.Confirm.Word.Tutorial"))) - .create())).getTextComponent()); - } else { - ChatComponent chatComponent = new ChatComponent("", false, null, null, null); - - for (int i = 0; i < confirmationMessages.length; i++) { - String message = confirmationMessages[i]; - - if (message.contains("\n") || message.contains("\\n")) { - message = message.replace("\\n", "\n"); - - for (String messageList : message.split("\n")) { - chatComponent.addExtraChatComponent(new ChatComponent( - messageManager.replaceMessage(player, - messageList.replace("%player", targetPlayerName) - .replace("%time", "" + confirmationTime)), - false, null, null, null)); - - chatComponent.addExtra( - new TextComponent(ComponentSerializer.parse("{text: \"\n\"}"))); - } - } else { - chatComponent - .addExtraChatComponent(new ChatComponent( - messageManager.replaceMessage(player, - message.replace("%player", targetPlayerName) - .replace("%time", "" + confirmationTime)), - false, null, null, null)); - } - - if (confirmationMessages.length == 1 || i + 1 != confirmationMessages.length) { - chatComponent.addExtraChatComponent(new ChatComponent( - configLoad.getString( - "Command.Island.Ownership.Confirmation.Confirm.Word.Confirm") - .toUpperCase(), - true, ChatColor.RED, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(ChatColor.translateAlternateColorCodes('&', - configLoad.getString( - "Command.Island.Ownership.Confirmation.Confirm.Word.Tutorial"))) - .create()))); - } - } - - player.spigot().sendMessage(chatComponent.getTextComponent()); - } - } else { - messageManager.sendMessage(player, confirmationMessage.replace("%player", targetPlayerName) - .replace("%time", "" + confirmationTime)); - } - - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } - } - } else { - if (island.hasPassword()) { - if (args[0].equalsIgnoreCase(island.getPassword())) { - for (Player all : Bukkit.getOnlinePlayers()) { - if ((island.hasRole(IslandRole.Member, all.getUniqueId()) - || island.hasRole(IslandRole.Operator, all.getUniqueId()) - || island.hasRole(IslandRole.Owner, all.getUniqueId())) - && (!all.getUniqueId().equals(player.getUniqueId()))) { - all.sendMessage(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Command.Island.Ownership.Assigned.Broadcast.Message") - .replace("%player", player.getName()))); - soundManager.playSound(all, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - } - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Assigned.Sender.Message")); - soundManager.playSound(player, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - - islandManager.giveOwnership(island, player); - - cooldownManager.createPlayer(CooldownType.Ownership, - Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Password.Incorrect.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Password.Unset.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - return; - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Ownership.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "owner"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Ownership.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "ownership", "transfer", "makeleader", "makeowner" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/PublicCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/PublicCommand.java deleted file mode 100644 index f87ce55f..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/PublicCommand.java +++ /dev/null @@ -1,77 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class PublicCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Visitor").getStatus())) { - if (island.isOpen()) { - islandManager.closeIsland(island); - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Private.Message")); - soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else { - island.setOpen(true); - - messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Public.Message")); - soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "public"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Public.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "pub", "private", "pri" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/SetSpawnCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/SetSpawnCommand.java deleted file mode 100644 index 051bb048..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/SetSpawnCommand.java +++ /dev/null @@ -1,166 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.*; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; - -import java.io.File; - -public class SetSpawnCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - IslandEnvironment environment; - - if (args[0].equalsIgnoreCase("Main")) { - environment = IslandEnvironment.Main; - } else if (args[0].equalsIgnoreCase("Visitor")) { - environment = IslandEnvironment.Visitor; - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Spawn.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (island.hasRole(IslandRole.Operator, player.getUniqueId()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && (island.getSetting(IslandRole.Operator, environment.name() + "Spawn").getStatus())) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (islandManager.isPlayerAtIsland(island, player)) { - IslandWorld world = skyblock.getWorldManager().getIslandWorld(player.getWorld()); - Location location = player.getLocation(); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Spawn.Protection")) { - if (location.clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.AIR - || location.clone().subtract(0.0D, 1.0D, 0.0D).getBlock() - .getType() == Materials.LEGACY_PISTON_MOVING_PIECE.getPostMaterial()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.SetSpawn.Protection.Block.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!player.getLocation().clone().subtract(0, 0.1, 0).getBlock().getType().isSolid()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.SetSpawn.Protection.Ground.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (location.getBlock().isLiquid() - || location.clone().add(0.0D, 1.0D, 0.0D).getBlock().isLiquid()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.SetSpawn.Protection.Liquid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (location.getBlock().getType() == Materials.NETHER_PORTAL.parseMaterial() - || location.clone().add(0.0D, 1.0D, 0.0D).getBlock() - .getType() == Materials.NETHER_PORTAL.parseMaterial()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.SetSpawn.Protection.Portal.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else { - Material type = location.getBlock().getType(); - if (type.isSolid() && type.isOccluding()) { - location.getBlock().breakNaturally(); - } - - Material typeBelow = location.clone().add(0.0D, 1.0D, 0.0D).getBlock().getType(); - if (typeBelow.isSolid() && type.isOccluding()) { - location.clone().add(0.0D, 1.0D, 0.0D).getBlock().breakNaturally(); - } - - islandManager.removeSpawnProtection(island.getLocation(world, environment)); - } - } - - Location newSpawnLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); - island.setLocation(world, environment, newSpawnLocation); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.SetSpawn.Set.Message").replace("%spawn", - environment.name().toLowerCase())); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - return; - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.SetSpawn.Island.Message").replace("%spawn", - environment.name().toLowerCase())); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.SetSpawn.Permission.Message").replace("%spawn", - environment.name().toLowerCase())); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Role.Message") - .replace("%spawn", environment.name().toLowerCase())); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.SetSpawn.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "setspawn"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.SetSpawn.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[] { "main", "visitor" }; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/SettingsCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/SettingsCommand.java deleted file mode 100644 index 3c2cbe39..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/SettingsCommand.java +++ /dev/null @@ -1,77 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class SettingsCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Operator, player.getUniqueId()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && (island.getSetting(IslandRole.Operator, "Visitor").getStatus() - || island.getSetting(IslandRole.Operator, "Member").getStatus())) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - me.goodandevil.skyblock.menus.Settings.getInstance().open(player, - me.goodandevil.skyblock.menus.Settings.Type.Categories, null, null); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Permission.Default.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Settings.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "settings"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Settings.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "permissions", "perms", "p" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/TeleportCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/TeleportCommand.java deleted file mode 100644 index 38cb9ffc..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/TeleportCommand.java +++ /dev/null @@ -1,147 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.visit.VisitManager; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class TeleportCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - VisitManager visitManager = skyblock.getVisitManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID islandOwnerUUID = null; - String targetPlayerName; - - if (targetPlayer == null) { - OfflinePlayer targetOfflinePlayer = new OfflinePlayer(args[0]); - islandOwnerUUID = targetOfflinePlayer.getOwner(); - targetPlayerName = targetOfflinePlayer.getName(); - } else { - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - targetPlayerName = targetPlayer.getName(); - } - - if (islandOwnerUUID == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Teleport.Island.None.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!islandOwnerUUID.equals(playerDataManager.getPlayerData(player).getOwner())) { - if (visitManager.hasIsland(islandOwnerUUID)) { - me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(islandOwnerUUID); - boolean isCoopPlayer = false; - - if (islandManager.containsIsland(islandOwnerUUID)) { - if (islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)) - .isCoopPlayer(player.getUniqueId())) { - isCoopPlayer = true; - } - } - - if (isCoopPlayer || player.hasPermission("fabledskyblock.bypass") - || player.hasPermission("fabledskyblock.bypass.*") || player.hasPermission("fabledskyblock.*") - || visit.isOpen()) { - if (!islandManager.containsIsland(islandOwnerUUID)) { - islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); - } - - islandManager.visitIsland(player, - islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID))); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Teleport.Teleported.Other.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); - - return; - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Teleport.Island.Closed.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - - return; - } - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Teleport.Island.None.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (args.length != 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Teleport.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Teleport.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Teleport.Teleported.Yourself.Message")); - soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> { - player.teleport(island.getLocation(IslandWorld.Normal, IslandEnvironment.Main)); - player.setFallDistance(0.0F); - }); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "teleport"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Teleport.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "tp", "spawn", "home", "go", "warp" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UnbanCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UnbanCommand.java deleted file mode 100644 index 997d4f8a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UnbanCommand.java +++ /dev/null @@ -1,121 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.ban.Ban; -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class UnbanCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Banning")) { - if (island.hasRole(IslandRole.Owner, player.getUniqueId()) - || (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Unban").getStatus())) { - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - - UUID targetPlayerUUID = null; - String targetPlayerName = null; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - targetPlayerUUID = targetPlayerOffline.getUniqueId(); - targetPlayerName = targetPlayerOffline.getName(); - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - targetPlayerName = targetPlayer.getName(); - } - - if (targetPlayerUUID == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Found.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (targetPlayerUUID.equals(player.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Unban.Yourself.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Member, targetPlayerUUID) - || island.hasRole(IslandRole.Operator, targetPlayerUUID) - || island.hasRole(IslandRole.Owner, targetPlayerUUID)) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (!island.getBan().isBanned(targetPlayerUUID)) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Banned.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Unbanned.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - Ban ban = island.getBan(); - ban.removeBan(targetPlayerUUID); - ban.save(); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Unban.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "unban"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Unban.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UpgradeCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UpgradeCommand.java deleted file mode 100644 index fe8554e7..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/UpgradeCommand.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.menus.Upgrade; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class UpgradeCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (skyblock.getIslandManager().getIsland(player) == null) { - skyblock.getMessageManager().sendMessage(player, - configLoad.getString("Command.Island.Upgrade.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - if (!skyblock.getEconomyManager().isEconomy()) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Upgrade.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - Upgrade.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "upgrade"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Upgrade.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "upgrades" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ValueCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ValueCommand.java deleted file mode 100644 index adc477bb..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/ValueCommand.java +++ /dev/null @@ -1,91 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.levelling.LevellingMaterial; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.apache.commons.lang3.text.WordUtils; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class ValueCommand extends SubCommand { - - @SuppressWarnings("deprecation") - @Override - public void onCommandByPlayer(Player player, String[] args) { - LevellingManager levellingManager = skyblock.getLevellingManager(); - 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.getItemInHand() == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Value.Hand.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Materials materials = null; - - if (NMSUtil.getVersionNumber() < 13) { - materials = Materials.requestMaterials(player.getItemInHand().getType().name(), - (byte) player.getItemInHand().getDurability()); - } else { - materials = Materials.fromString(player.getItemInHand().getType().name()); - } - - if (materials != null && levellingManager.containsMaterial(materials)) { - LevellingMaterial material = levellingManager.getMaterial(materials); - double level = (double) material.getPoints() - / (double) fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Levelling.Division"); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Value.Value.Message") - .replace("%material", - WordUtils.capitalizeFully(materials.name().toLowerCase().replace("_", " "))) - .replace("%points", "" + material.getPoints()) - .replace("%level", "" + NumberUtil.formatNumberByDecimal(level))); - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Value.None.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "value"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Value.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VisitCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VisitCommand.java deleted file mode 100644 index 0d7fe095..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VisitCommand.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.menus.Visit; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -import java.io.File; - -public class VisitCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - if (args.length == 0) { - if (!skyblock.getPlayerDataManager().hasPlayerData(player)) - skyblock.getPlayerDataManager().createPlayerData(player); - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - playerData.setType(Visit.Type.Default); - playerData.setSort(Visit.Sort.Default); - - Visit.getInstance().open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else if (args.length == 1) { - Bukkit.getServer().getScheduler().runTask(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island teleport " + args[0])); - } else { - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Command.Island.Visit.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "visit"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Visit.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[] { "warps", "explore" }; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VisitorsCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VisitorsCommand.java deleted file mode 100644 index 4eeff41a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VisitorsCommand.java +++ /dev/null @@ -1,69 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.menus.Visitors; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class VisitorsCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (!island.isOpen()) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Closed.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (islandManager.getVisitorsAtIsland(island).size() == 0) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Visitors.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - Visitors.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "visitors"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Visitors.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VoteCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VoteCommand.java deleted file mode 100644 index 5fdd56ce..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/VoteCommand.java +++ /dev/null @@ -1,145 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.visit.VisitManager; -import org.bukkit.Bukkit; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.UUID; - -public class VoteCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - VisitManager visitManager = skyblock.getVisitManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (args.length == 1) { - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Vote")) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - Player targetPlayer = Bukkit.getServer().getPlayer(args[0]); - UUID islandOwnerUUID; - String targetPlayerName; - - if (targetPlayer == null) { - OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]); - islandOwnerUUID = targetPlayerOffline.getOwner(); - targetPlayerName = targetPlayerOffline.getName(); - } else { - islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner(); - targetPlayerName = targetPlayer.getName(); - } - - if (islandOwnerUUID == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Island.None.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (!visitManager.hasIsland(islandOwnerUUID)) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Island.Unloaded.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(islandOwnerUUID); - - if (visit.isOpen()) { - if (!islandManager.containsIsland(islandOwnerUUID)) { - islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); - } - - Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)); - - if (island.hasRole(IslandRole.Member, player.getUniqueId()) - || island.hasRole(IslandRole.Operator, player.getUniqueId()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Vote.Island.Member.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - - if (playerData.getIsland() != null && playerData.getIsland().equals(island.getOwnerUUID())) { - if (visit.getVoters().contains(player.getUniqueId())) { - visit.removeVoter(player.getUniqueId()); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Vote.Vote.Removed.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); - } else { - visit.addVoter(player.getUniqueId()); - - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Vote.Vote.Added.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Vote.Island.Location.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - - islandManager.unloadIsland(island, null); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Vote.Island.Closed.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Invalid.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "vote"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Vote.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/WeatherCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/WeatherCommand.java deleted file mode 100644 index 13e6d7e4..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/WeatherCommand.java +++ /dev/null @@ -1,68 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.menus.Weather; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class WeatherCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Weather.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Weather").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - Weather.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Weather.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "weather"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Weather.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/disabled/ResetCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/disabled/ResetCommand.java deleted file mode 100644 index 3b13587a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/disabled/ResetCommand.java +++ /dev/null @@ -1,100 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island.disabled; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.confirmation.Confirmation; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.ChatComponent; -import me.goodandevil.skyblock.utils.version.Sounds; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class ResetCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Reset.Owner.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (playerData.getConfirmationTime() > 0) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Reset.Confirmation.Pending.Message")); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } else { - int confirmationTime = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Confirmation.Timeout"); - - playerData.setConfirmation(Confirmation.Reset); - playerData.setConfirmationTime(confirmationTime); - - player.spigot().sendMessage(new ChatComponent( - configLoad.getString("Command.Island.Reset.Confirmation.Confirm.Message").replace("%time", - "" + confirmationTime) + " ", - false, null, null, null) - .addExtra(new ChatComponent(configLoad - .getString("Command.Island.Reset.Confirmation.Confirm.Word.Confirm") - .toUpperCase(), true, ChatColor.RED, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/island confirm"), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Command.Island.Reset.Confirmation.Confirm.Word.Tutorial"))) - .create())))); - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - } - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Reset.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "reset"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Reset.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/disabled/RollbackCommand.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/disabled/RollbackCommand.java deleted file mode 100644 index ba547d9e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/command/commands/island/disabled/RollbackCommand.java +++ /dev/null @@ -1,67 +0,0 @@ -package me.goodandevil.skyblock.command.commands.island.disabled; - -import me.goodandevil.skyblock.command.SubCommand; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.menus.Rollback; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; - -public class RollbackCommand extends SubCommand { - - @Override - public void onCommandByPlayer(Player player, String[] args) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Rollback.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - Rollback.getInstance().open(player); - soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Rollback.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - } - - @Override - public void onCommandByConsole(ConsoleCommandSender sender, String[] args) { - sender.sendMessage("SkyBlock | Error: You must be a player to perform that command."); - } - - @Override - public String getName() { - return "rollback"; - } - - @Override - public String getInfoMessagePath() { - return "Command.Island.Rollback.Info.Message"; - } - - @Override - public String[] getAliases() { - return new String[0]; - } - - @Override - public String[] getArguments() { - return new String[0]; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/config/FileChecker.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/config/FileChecker.java deleted file mode 100644 index 7ab190de..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/config/FileChecker.java +++ /dev/null @@ -1,132 +0,0 @@ -package me.goodandevil.skyblock.config; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.EnumMap; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; - -import me.goodandevil.skyblock.SkyBlock; - -public class FileChecker { - - private final FileManager fileManager; - - private Map loadedFiles; - - public FileChecker(SkyBlock skyblock, FileManager fileManager, String configurationFileName, - boolean applyComments) { - this.fileManager = fileManager; - - loadedFiles = new EnumMap<>(File.Type.class); - - java.io.File configFile = new java.io.File(skyblock.getDataFolder(), configurationFileName); - loadedFiles.put(File.Type.CREATED, - new File(fileManager, configFile, YamlConfiguration.loadConfiguration(configFile))); - - if (applyComments) { - loadedFiles.put(File.Type.RESOURCE, - new File(null, null, YamlConfiguration.loadConfiguration(new InputStreamReader(fileManager - .getConfigContent(new InputStreamReader(skyblock.getResource(configurationFileName))))))); - } else { - loadedFiles.put(File.Type.RESOURCE, new File(null, null, YamlConfiguration - .loadConfiguration(new InputStreamReader(skyblock.getResource(configurationFileName))))); - } - } - - public void loadSections() { - for (File.Type fileType : File.Type.values()) { - File file = loadedFiles.get(fileType); - FileConfiguration configLoad = file.getFileConfiguration(); - - Set configKeys = configLoad.getKeys(true); - - for (String configKeysList : configKeys) { - file.addKey(configKeysList, configLoad.get(configKeysList)); - } - } - } - - public void compareFiles() { - for (File.Type fileType : File.Type.values()) { - File file = loadedFiles.get(fileType); - FileConfiguration configLoad = file.getFileConfiguration(); - - if (fileType == File.Type.CREATED) { - File resourceFile = loadedFiles.get(File.Type.RESOURCE); - - for (String configKeyList : file.getKeys().keySet()) { - if (!resourceFile.getKeys().containsKey(configKeyList)) { - configLoad.set(configKeyList, null); - } - } - } else if (fileType == File.Type.RESOURCE) { - File createdFile = loadedFiles.get(File.Type.CREATED); - FileConfiguration createdConfigLoad = createdFile.getFileConfiguration(); - - for (String configKeyList : file.getKeys().keySet()) { - if (createdConfigLoad.getString(configKeyList) == null) { - createdConfigLoad.set(configKeyList, file.getKeys().get(configKeyList)); - } - } - } - } - } - - public void saveChanges() { - File file = loadedFiles.get(File.Type.CREATED); - - try { - if (file.getFile().getName().equals("config.yml")) { - fileManager.saveConfig(file.getFileConfiguration().saveToString(), file.getFile()); - } else { - file.getFileConfiguration().save(file.getFile()); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static class File { - - private java.io.File configFile; - private FileConfiguration configLoad; - - private HashMap configKeys; - - public File(FileManager fileManager, java.io.File configFile, FileConfiguration configLoad) { - this.configFile = configFile; - this.configLoad = configLoad; - configKeys = new HashMap<>(); - - if (configFile != null && configFile.getName().equals("config.yml")) { - this.configLoad = YamlConfiguration - .loadConfiguration(new InputStreamReader(fileManager.getConfigContent(configFile))); - } - } - - public java.io.File getFile() { - return configFile; - } - - public FileConfiguration getFileConfiguration() { - return configLoad; - } - - public HashMap getKeys() { - return configKeys; - } - - public void addKey(String key, Object object) { - configKeys.put(key, object); - } - - public enum Type { - CREATED, RESOURCE; - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/config/FileManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/config/FileManager.java deleted file mode 100644 index d626fa93..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/config/FileManager.java +++ /dev/null @@ -1,318 +0,0 @@ -package me.goodandevil.skyblock.config; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.Reader; -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.logging.Level; - -import com.google.common.io.ByteStreams; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.IslandWorld; - -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; - -public class FileManager { - - private final SkyBlock skyblock; - private Map loadedConfigs = new HashMap<>(); - - public FileManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - loadConfigs(); - } - - public void loadConfigs() { - if (!skyblock.getDataFolder().exists()) { - skyblock.getDataFolder().mkdir(); - } - - if (!new File(skyblock.getDataFolder().toString() + "/structures").exists()) { - new File(skyblock.getDataFolder().toString() + "/structures").mkdir(); - } - - if (Bukkit.getPluginManager().isPluginEnabled("WorldEdit") && !new File(skyblock.getDataFolder().toString() + "/schematics").exists()) { - new File(skyblock.getDataFolder().toString() + "/schematics").mkdir(); - } - - Map configFiles = new LinkedHashMap<>(); - configFiles.put("limits.yml", new File(skyblock.getDataFolder(), "limits.yml")); - configFiles.put("worlds.yml", new File(skyblock.getDataFolder(), "worlds.yml")); - configFiles.put("levelling.yml", new File(skyblock.getDataFolder(), "levelling.yml")); - configFiles.put("config.yml", new File(skyblock.getDataFolder(), "config.yml")); - configFiles.put("language.yml", new File(skyblock.getDataFolder(), "language.yml")); - configFiles.put("settings.yml", new File(skyblock.getDataFolder(), "settings.yml")); - configFiles.put("upgrades.yml", new File(skyblock.getDataFolder(), "upgrades.yml")); - configFiles.put("generators.yml", new File(skyblock.getDataFolder(), "generators.yml")); - configFiles.put("stackables.yml", new File(skyblock.getDataFolder(), "stackables.yml")); - configFiles.put("structures.yml", new File(skyblock.getDataFolder(), "structures.yml")); - configFiles.put("structures/default.structure", - new File(skyblock.getDataFolder().toString() + "/structures", "default.structure")); - - for (String configFileList : configFiles.keySet()) { - File configFile = configFiles.get(configFileList); - - if (configFile.exists()) { - if (configFileList.equals("config.yml") || configFileList.equals("language.yml") - || configFileList.equals("settings.yml")) { - FileChecker fileChecker; - - if (configFileList.equals("config.yml")) { - fileChecker = new FileChecker(skyblock, this, configFileList, true); - } else { - fileChecker = new FileChecker(skyblock, this, configFileList, false); - } - - fileChecker.loadSections(); - fileChecker.compareFiles(); - fileChecker.saveChanges(); - } - } else { - try { - configFile.createNewFile(); - try (InputStream is = skyblock.getResource(configFileList); - OutputStream os = new FileOutputStream(configFile)) { - ByteStreams.copy(is, os); - } - - if (configFileList.equals("worlds.yml")) { - File mainConfigFile = new File(skyblock.getDataFolder(), "config.yml"); - - if (isFileExist(mainConfigFile)) { - Config config = new Config(this, configFile); - Config mainConfig = new Config(this, mainConfigFile); - - FileConfiguration configLoad = config.getFileConfiguration(); - FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); - - for (IslandWorld worldList : IslandWorld.values()) { - if (mainConfigLoad.getString("World." + worldList.name()) != null) { - configLoad.set("World." + worldList.name() + ".nextAvailableLocation.x", - mainConfigLoad.getDouble( - "World." + worldList.name() + ".nextAvailableLocation.x")); - configLoad.set("World." + worldList.name() + ".nextAvailableLocation.z", - mainConfigLoad.getDouble( - "World." + worldList.name() + ".nextAvailableLocation.z")); - } - } - - mainConfigLoad.set("World", null); - - configLoad.save(config.getFile()); - saveConfig(mainConfigLoad.saveToString(), mainConfig.getFile()); - } - } - } catch (IOException ex) { - Bukkit.getServer().getLogger().log(Level.WARNING, - "SkyBlock | Error: Unable to create configuration file."); - } - } - } - } - - public void setLocation(Config config, String path, Location location, boolean direction) { - File configFile = config.getFile(); - FileConfiguration configLoad = config.getFileConfiguration(); - - configLoad.set(path + ".world", location.getWorld().getName()); - configLoad.set(path + ".x", Double.valueOf(location.getX())); - configLoad.set(path + ".y", Double.valueOf(location.getY())); - configLoad.set(path + ".z", Double.valueOf(location.getZ())); - - if (direction) { - configLoad.set(path + ".yaw", Float.valueOf(location.getYaw())); - configLoad.set(path + ".pitch", Float.valueOf(location.getPitch())); - } - - try { - configLoad.save(configFile); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - - public Location getLocation(Config config, String path, boolean direction) { - Location location = null; - - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.contains(path)) { - String world = configLoad.getString(path + ".world"); - - double x = configLoad.getDouble(path + ".x"); - double y = configLoad.getDouble(path + ".y"); - double z = configLoad.getDouble(path + ".z"); - double yaw = 0.0D; - double pitch = 0.0D; - - if (configLoad.contains(path + ".yaw")) { - yaw = configLoad.getDouble(path + ".yaw"); - pitch = configLoad.getDouble(path + ".pitch"); - } - - location = new org.bukkit.Location(Bukkit.getWorld(world), x, y, z); - - if (direction) { - location.setYaw((float) yaw); - location.setPitch((float) pitch); - } - } - - return location; - } - - public boolean isFileExist(File configPath) { - return configPath.exists(); - } - - public void unloadConfig(File configPath) { - loadedConfigs.remove(configPath.getPath()); - } - - public void deleteConfig(File configPath) { - Config config = getConfig(configPath); - config.getFile().delete(); - loadedConfigs.remove(configPath.getPath()); - } - - public Config getConfig(File configPath) { - if (loadedConfigs.containsKey(configPath.getPath())) { - return loadedConfigs.get(configPath.getPath()); - } - - Config config = new Config(this, configPath); - loadedConfigs.put(configPath.getPath(), config); - - return config; - } - - public Map getConfigs() { - return loadedConfigs; - } - - public boolean isConfigLoaded(java.io.File configPath) { - return loadedConfigs.containsKey(configPath.getPath()); - } - - public InputStream getConfigContent(Reader reader) { - try { - String addLine, currentLine, pluginName = skyblock.getDescription().getName(); - int commentNum = 0; - - StringBuilder whole = new StringBuilder(""); - BufferedReader bufferedReader = new BufferedReader(reader); - - while ((currentLine = bufferedReader.readLine()) != null) { - if (currentLine.contains("#")) { - addLine = currentLine.replace("[!]", "IMPORTANT").replace(":", "-").replaceFirst("#", - pluginName + "_COMMENT_" + commentNum + ":"); - whole.append(addLine + "\n"); - commentNum++; - } else { - whole.append(currentLine + "\n"); - } - } - - String config = whole.toString(); - InputStream configStream = new ByteArrayInputStream(config.getBytes(Charset.forName("UTF-8"))); - bufferedReader.close(); - - return configStream; - } catch (IOException e) { - e.printStackTrace(); - - return null; - } - } - - public InputStream getConfigContent(File configFile) { - if (!configFile.exists()) { - return null; - } - - try { - return getConfigContent(new FileReader(configFile)); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - - return null; - } - - private String prepareConfigString(String configString) { - String[] lines = configString.split("\n"); - StringBuilder config = new StringBuilder(""); - - for (String line : lines) { - if (line.contains(skyblock.getDescription().getName() + "_COMMENT")) { - config.append(line.replace("IMPORTANT", "[!]").replace("\n", "") - .replace(skyblock.getDescription().getName() + "_COMMENT_", "#").replaceAll("[0-9]+:", "") - + "\n"); - } else if (line.contains(":")) { - config.append(line + "\n"); - } - } - - return config.toString(); - } - - public void saveConfig(String configString, File configFile) { - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(configFile)); - writer.write(prepareConfigString(configString)); - writer.flush(); - writer.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static class Config { - - private File configFile; - private FileConfiguration configLoad; - - public Config(FileManager fileManager, java.io.File configPath) { - configFile = configPath; - - if (configPath.getName().equals("config.yml")) { - configLoad = YamlConfiguration - .loadConfiguration(new InputStreamReader(fileManager.getConfigContent(configFile))); - } else { - configLoad = YamlConfiguration.loadConfiguration(configPath); - } - } - - public File getFile() { - return configFile; - } - - public FileConfiguration getFileConfiguration() { - return configLoad; - } - - public FileConfiguration loadFile() { - configLoad = YamlConfiguration.loadConfiguration(configFile); - - return configLoad; - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/confirmation/Confirmation.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/confirmation/Confirmation.java deleted file mode 100644 index f09cf82a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/confirmation/Confirmation.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.confirmation; - -public enum Confirmation { - - Ownership, Reset, Deletion; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/confirmation/ConfirmationTask.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/confirmation/ConfirmationTask.java deleted file mode 100644 index 6d2e7ddb..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/confirmation/ConfirmationTask.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.goodandevil.skyblock.confirmation; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; - -public class ConfirmationTask extends BukkitRunnable { - - private final PlayerDataManager playerDataManager; - - public ConfirmationTask(PlayerDataManager playerDataManager) { - this.playerDataManager = playerDataManager; - } - - @Override - public void run() { - for (Player all : Bukkit.getOnlinePlayers()) { - if (playerDataManager.hasPlayerData(all)) { - PlayerData playerData = playerDataManager.getPlayerData(all); - - if (playerData.getConfirmationTime() > 0) { - playerData.setConfirmationTime(playerData.getConfirmationTime() - 1); - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/Cooldown.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/Cooldown.java deleted file mode 100644 index 23bc17b0..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/Cooldown.java +++ /dev/null @@ -1,18 +0,0 @@ -package me.goodandevil.skyblock.cooldown; - -public class Cooldown { - - private int time; - - public Cooldown(int time) { - this.time = time; - } - - public int getTime() { - return time; - } - - public void setTime(int time) { - this.time = time; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownManager.java deleted file mode 100644 index 6e509435..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownManager.java +++ /dev/null @@ -1,301 +0,0 @@ -package me.goodandevil.skyblock.cooldown; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.configuration.file.FileConfiguration; -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.Island; -import me.goodandevil.skyblock.island.IslandManager; - -public class CooldownManager { - - private final SkyBlock skyblock; - - private Map> cooldownStorage = new HashMap<>(); - - public CooldownManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - IslandManager islandManager = skyblock.getIslandManager(); - - for (CooldownType cooldownTypeList : CooldownType.values()) { - List cooldownPlayers = new ArrayList<>(); - - for (Player all : Bukkit.getOnlinePlayers()) { - CooldownPlayer cooldownPlayer = null; - - if (cooldownTypeList == CooldownType.Biome || cooldownTypeList == CooldownType.Creation) { - cooldownPlayer = loadCooldownPlayer(cooldownTypeList, all); - } else if (cooldownTypeList == CooldownType.Levelling || cooldownTypeList == CooldownType.Ownership) { - Island island = islandManager.getIsland(all); - - if (island != null) { - OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); - - if (!hasPlayer(cooldownTypeList, offlinePlayer)) { - cooldownPlayer = loadCooldownPlayer(cooldownTypeList, offlinePlayer); - } - } - } - - if (cooldownPlayer != null) { - cooldownPlayers.add(cooldownPlayer); - } - } - - cooldownStorage.put(cooldownTypeList, cooldownPlayers); - } - - new CooldownTask(this).runTaskTimerAsynchronously(skyblock, 0L, 20L); - } - - public void onDisable() { - for (CooldownType cooldownTypeList : CooldownType.values()) { - setCooldownPlayer(cooldownTypeList); - saveCooldownPlayer(cooldownTypeList); - } - } - - public CooldownPlayer loadCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { - if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { - Config config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - player.getUniqueId().toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString("Island." + cooldownType.name() + ".Cooldown") != null) { - return new CooldownPlayer(player.getUniqueId(), - new Cooldown(configLoad.getInt("Island." + cooldownType.name() + ".Cooldown"))); - } - } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { - Config config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - player.getUniqueId().toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString(cooldownType.name() + ".Cooldown") != null) { - return new CooldownPlayer(player.getUniqueId(), - new Cooldown(configLoad.getInt(cooldownType.name() + ".Cooldown"))); - } - } - - return null; - } - - public void createPlayer(CooldownType cooldownType, OfflinePlayer player) { - FileManager fileManager = skyblock.getFileManager(); - - if (cooldownStorage.containsKey(cooldownType)) { - int time = 0; - - if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { - time = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getInt("Island." + cooldownType.name() + ".Cooldown.Time"); - - Config config = fileManager - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - player.getUniqueId().toString() + ".yml")); - File configFile = config.getFile(); - FileConfiguration configLoad = config.getFileConfiguration(); - - configLoad.set("Island." + cooldownType.name() + ".Cooldown", time); - - try { - configLoad.save(configFile); - } catch (IOException e) { - e.printStackTrace(); - } - } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { - time = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getInt("Island." + cooldownType.name() + ".Cooldown.Time"); - - Config config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - player.getUniqueId().toString() + ".yml")); - File configFile = config.getFile(); - FileConfiguration configLoad = config.getFileConfiguration(); - - configLoad.set(cooldownType.name() + ".Cooldown", time); - - try { - configLoad.save(configFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - - cooldownStorage.get(cooldownType).add(new CooldownPlayer(player.getUniqueId(), new Cooldown(time))); - } - } - - public void deletePlayer(CooldownType cooldownType, OfflinePlayer player) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { - if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - player.getUniqueId().toString() + ".yml")) - .getFileConfiguration().set("Island." + cooldownType.name() + ".Cooldown", null); - } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - player.getUniqueId().toString().toString() + ".yml")) - .getFileConfiguration().set(cooldownType.name() + ".Cooldown", null); - } - - cooldownStorage.get(cooldownType).remove(cooldownPlayerList); - - break; - } - } - } - } - - public boolean hasPlayer(CooldownType cooldownType, OfflinePlayer player) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { - return true; - } - } - } - - return false; - } - - public void transferPlayer(CooldownType cooldownType, OfflinePlayer player1, OfflinePlayer player2) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - if (cooldownPlayerList.getUUID().equals(player1.getUniqueId())) { - cooldownPlayerList.setUUID(player2.getUniqueId()); - - break; - } - } - } - } - - public void removeCooldownPlayer(CooldownType cooldownType, CooldownPlayer cooldownPlayer) { - if (cooldownStorage.containsKey(cooldownType)) { - cooldownStorage.get(cooldownType).remove(cooldownPlayer); - } - } - - public void removeCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { - cooldownStorage.get(cooldownType).remove(cooldownPlayerList); - - break; - } - } - } - } - - public void setCooldownPlayer(CooldownType cooldownType) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - setCooldownPlayer(cooldownType, Bukkit.getServer().getOfflinePlayer(cooldownPlayerList.getUUID())); - } - } - } - - public void setCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { - if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - player.getUniqueId().toString() + ".yml")) - .getFileConfiguration().set("Island." + cooldownType + ".Cooldown", - cooldownPlayerList.getCooldown().getTime()); - } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - player.getUniqueId().toString() + ".yml")) - .getFileConfiguration() - .set(cooldownType.name() + ".Cooldown", cooldownPlayerList.getCooldown().getTime()); - } - - break; - } - } - } - } - - public void saveCooldownPlayer(CooldownType cooldownType) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - saveCooldownPlayer(cooldownType, Bukkit.getServer().getOfflinePlayer(cooldownPlayerList.getUUID())); - } - } - } - - public void saveCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { - Config config = null; - - if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation) { - config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - player.getUniqueId().toString() + ".yml")); - } else if (cooldownType == CooldownType.Levelling || cooldownType == CooldownType.Ownership) { - config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - player.getUniqueId().toString().toString() + ".yml")); - } - - if (config != null) { - try { - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - public void addCooldownPlayer(CooldownType cooldownType, CooldownPlayer cooldownPlayer) { - if (cooldownType != null && cooldownPlayer != null) { - if (cooldownStorage.containsKey(cooldownType)) { - cooldownStorage.get(cooldownType).add(cooldownPlayer); - } - } - } - - public CooldownPlayer getCooldownPlayer(CooldownType cooldownType, OfflinePlayer player) { - if (cooldownStorage.containsKey(cooldownType)) { - for (CooldownPlayer cooldownPlayerList : cooldownStorage.get(cooldownType)) { - if (cooldownPlayerList.getUUID().equals(player.getUniqueId())) { - return cooldownPlayerList; - } - } - } - - return null; - } - - public List getCooldownPlayers(CooldownType cooldownType) { - if (cooldownStorage.containsKey(cooldownType)) { - return cooldownStorage.get(cooldownType); - } - - return null; - } - - public boolean hasCooldownType(CooldownType cooldownType) { - return cooldownStorage.containsKey(cooldownType); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownPlayer.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownPlayer.java deleted file mode 100644 index b67d3da0..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownPlayer.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.goodandevil.skyblock.cooldown; - -import java.util.UUID; - -public class CooldownPlayer { - - private UUID uuid; - private Cooldown cooldown; - - public CooldownPlayer(UUID uuid, Cooldown cooldown) { - this.uuid = uuid; - this.cooldown = cooldown; - } - - public UUID getUUID() { - return uuid; - } - - public void setUUID(UUID uuid) { - this.uuid = uuid; - } - - public Cooldown getCooldown() { - return cooldown; - } - - public void setCooldown(Cooldown cooldown) { - this.cooldown = cooldown; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownTask.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownTask.java deleted file mode 100644 index 623203d8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownTask.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.goodandevil.skyblock.cooldown; - -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.scheduler.BukkitRunnable; - -public class CooldownTask extends BukkitRunnable { - - private final CooldownManager cooldownManager; - - public CooldownTask(CooldownManager cooldownManager) { - this.cooldownManager = cooldownManager; - } - - @Override - public void run() { - for (CooldownType cooldownTypeList : CooldownType.values()) { - if (cooldownManager.hasCooldownType(cooldownTypeList)) { - List cooldownPlayers = cooldownManager.getCooldownPlayers(cooldownTypeList); - - for (int i = 0; i < cooldownPlayers.size(); i++) { - CooldownPlayer cooldownPlayer = cooldownPlayers.get(i); - Cooldown cooldown = cooldownPlayer.getCooldown(); - - cooldown.setTime(cooldown.getTime() - 1); - - if (cooldown.getTime() <= 0) { - cooldownManager.deletePlayer(cooldownTypeList, - Bukkit.getServer().getOfflinePlayer(cooldownPlayer.getUUID())); - } - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownType.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownType.java deleted file mode 100644 index b355cd5a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/cooldown/CooldownType.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.cooldown; - -public enum CooldownType { - - Biome, Creation, Levelling, Ownership, Teleport; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/economy/EconomyManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/economy/EconomyManager.java deleted file mode 100644 index e13373a1..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/economy/EconomyManager.java +++ /dev/null @@ -1,99 +0,0 @@ -package me.goodandevil.skyblock.economy; - -import me.goodandevil.skyblock.api.event.player.PlayerWithdrawMoneyEvent; -import net.milkbowl.vault.economy.Economy; -import net.milkbowl.vault.permission.Permission; -import net.tnemc.core.Reserve; -import net.tnemc.core.economy.EconomyAPI; -import net.tnemc.core.permissions.PermissionsAPI; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.entity.Player; -import org.bukkit.plugin.RegisteredServiceProvider; - -import java.math.BigDecimal; - -public class EconomyManager { - - // Vault - private Economy vaultEconomy = null; - private Permission vaultPermission = null; - - // Reserve - private EconomyAPI reserveEconomy = null; -// private PermissionsAPI reservePermission = null; - - public EconomyManager() { - setup(); - } - - public void setup() { - if (Bukkit.getServer().getPluginManager().getPlugin("Vault") != null) { - RegisteredServiceProvider economyRsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class); - - if (economyRsp != null) - this.vaultEconomy = economyRsp.getProvider(); - - RegisteredServiceProvider permissionRsp = Bukkit.getServer().getServicesManager().getRegistration(Permission.class); - if (permissionRsp != null) - this.vaultPermission = permissionRsp.getProvider(); - } else if (Bukkit.getServer().getPluginManager().getPlugin("Reserve") != null) { - if (Reserve.instance().economyProvided()) - this.reserveEconomy = Reserve.instance().economy(); - -// if (Reserve.instance().permissionsProvided()) -// this.reservePermission = Reserve.instance().permissions(); - } - } - - public double getBalance(Player player) { - if (this.vaultEconomy != null) - return this.vaultEconomy.getBalance(player); - - if (this.reserveEconomy != null) - return this.reserveEconomy.getHoldings(player.getUniqueId()).doubleValue(); - - return 0; - } - - public boolean hasBalance(Player player, double money) { - return this.getBalance(player) >= money; - } - - public void withdraw(Player player, double money) { - if (this.vaultEconomy != null) - this.vaultEconomy.withdrawPlayer(player, money); - else if (this.reserveEconomy != null) - this.reserveEconomy.removeHoldings(player.getUniqueId(), new BigDecimal(money)); - - Bukkit.getServer().getPluginManager().callEvent(new PlayerWithdrawMoneyEvent(player, money)); - } - - public void deposit(Player player, double money) { - if (this.vaultEconomy != null) - this.vaultEconomy.depositPlayer(player, money); - else if (this.reserveEconomy != null) - this.reserveEconomy.addHoldings(player.getUniqueId(), new BigDecimal(money)); - - Bukkit.getServer().getPluginManager().callEvent(new PlayerWithdrawMoneyEvent(player, money)); - } - - public boolean hasPermission(String world, OfflinePlayer offlinePlayer, String perm) { - if (this.vaultPermission != null) - return this.vaultPermission.playerHas(world, offlinePlayer, perm); - -// if (this.reservePermission != null) { -// // TODO -// } - - return false; - } - - public boolean isEconomy() { - return this.vaultEconomy != null || this.reserveEconomy != null; - } - - public boolean isPermission() { - return this.vaultPermission != null/* || this.reservePermission != null*/; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/Generator.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/Generator.java deleted file mode 100644 index 893bbdf8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/Generator.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.goodandevil.skyblock.generator; - -import java.util.List; - -import me.goodandevil.skyblock.utils.version.Materials; - -public class Generator { - - private String name; - private Materials materials; - private List generatorMaterials; - private boolean permission; - - public Generator(String name, Materials materials, List generatorMaterials, boolean permission) { - this.name = name; - this.materials = materials; - this.generatorMaterials = generatorMaterials; - this.permission = permission; - } - - public String getName() { - return name; - } - - public Materials getMaterials() { - return materials; - } - - public List getGeneratorMaterials() { - return generatorMaterials; - } - - public boolean isPermission() { - return permission; - } - - public String getPermission() { - return "fabledskyblock.generator." + name.toLowerCase().replace(" ", "_"); - } - - public void setPermission(boolean permission) { - this.permission = permission; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/GeneratorMaterial.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/GeneratorMaterial.java deleted file mode 100644 index 38d2b885..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/generator/GeneratorMaterial.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.goodandevil.skyblock.generator; - -import me.goodandevil.skyblock.utils.version.Materials; - -public class GeneratorMaterial { - - private Materials materials; - private double chance; - - public GeneratorMaterial(Materials materials, double chance) { - this.materials = materials; - this.chance = chance; - } - - public Materials getMaterials() { - return materials; - } - - public double getChance() { - return chance; - } - - public void setChance(double chance) { - this.chance = chance; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/Hologram.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/Hologram.java deleted file mode 100644 index c811eb83..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/Hologram.java +++ /dev/null @@ -1,80 +0,0 @@ -package me.goodandevil.skyblock.hologram; - -import java.util.ArrayList; -import java.util.List; - -import me.goodandevil.skyblock.utils.version.NMSUtil; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.EntityType; - -public class Hologram { - - private List holograms = new ArrayList<>(); - - private HologramType type; - private Location location; - - public Hologram(HologramType type, Location location, List 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); - int NMSVersion = NMSUtil.getVersionNumber(); - as.setVisible(false); - if (NMSVersion > 8) - as.setMarker(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 getHolograms() { - return holograms; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/HologramManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/HologramManager.java deleted file mode 100644 index 6357b7fe..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/HologramManager.java +++ /dev/null @@ -1,310 +0,0 @@ -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.ChatColor; -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.IslandLevel; -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.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.visit.Visit; - -public class HologramManager { - - private final SkyBlock skyblock; - private List hologramStorage = new ArrayList<>(); - - public HologramManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - FileManager fileManager = skyblock.getFileManager(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { - removeWorldHolograms(); - - for (HologramType hologramTypeList : HologramType.values()) { - 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 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 hologramLines = new ArrayList<>(); - Leaderboard.Type leaderboardType = null; - - switch (type) { - case Level: - leaderboardType = Leaderboard.Type.Level; - break; - case Bank: - leaderboardType = Leaderboard.Type.Bank; - break; - case Votes: - leaderboardType = Leaderboard.Type.Votes; - break; - } - - hologramLines.add(messageManager.replaceMessage(null, - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Header"))); - - for (int i = 0; i < 10; i++) { - Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); - - if (leaderboard == null) { - hologramLines.add(messageManager.replaceMessage(null, - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Unclaimed") - .replace("%position", "" + (i + 1)))); - } else { - 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) { - IslandLevel level = visit.getLevel(); - hologramLines.add(ChatColor.translateAlternateColorCodes('&', - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints())))); - } else if (type == HologramType.Bank) { - hologramLines.add(ChatColor.translateAlternateColorCodes('&', - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%balance", - "" + NumberUtil.formatNumberByDecimal(visit.getBankBalance())))); - } else if (type == HologramType.Votes) { - hologramLines.add(ChatColor.translateAlternateColorCodes('&', - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%votes", - "" + NumberUtil.formatNumberByDecimal(visit.getVoters().size())))); - } - } - } - - 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 holograms = hologram.getHolograms(); - - for (Iterator it = holograms.iterator(); it.hasNext();) { - it.next().remove(); - } - - hologramStorage.remove(hologram); - } - } - - public void removeHolograms() { - for (Hologram hologramList : hologramStorage) { - List holograms = hologramList.getHolograms(); - - for (Iterator it = holograms.iterator(); it.hasNext();) { - it.next().remove(); - } - } - } - - public void removeWorldHolograms() { - FileManager fileManager = skyblock.getFileManager(); - - List locations = new ArrayList<>(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - for (HologramType hologramTypeList : HologramType.values()) { - 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 entities = worldList.getEntities(); - - for (Iterator 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.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; - } - - Leaderboard.Type leaderboardType = null; - - switch (hologramTypeList) { - case Level: - leaderboardType = Leaderboard.Type.Level; - break; - case Bank: - leaderboardType = Leaderboard.Type.Bank; - break; - case Votes: - leaderboardType = Leaderboard.Type.Votes; - break; - } - - for (int i = 0; i < 10; i++) { - Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); - int hologramLine = 10 - i; - - if (leaderboard == null) { - hologram.setLine(hologramLine, messageManager.replaceMessage(null, - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Unclaimed") - .replace("%position", "" + (i + 1)))); - } else { - 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) { - IslandLevel level = visit.getLevel(); - hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints())))); - } else if (hologramTypeList == HologramType.Bank) { - hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%balance", - "" + NumberUtil.formatNumberByDecimal(visit.getBankBalance())))); - } else if (hologramTypeList == HologramType.Votes) { - hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%votes", - "" + NumberUtil.formatNumberByDecimal(visit.getVoters().size())))); - } - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/HologramType.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/HologramType.java deleted file mode 100644 index 634ff92e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/hologram/HologramType.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.hologram; - -public enum HologramType { - - Level, Bank, Votes - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/Invite.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/Invite.java deleted file mode 100644 index 7e11cf45..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/Invite.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.goodandevil.skyblock.invite; - -import java.util.UUID; - -import org.bukkit.entity.Player; - -public class Invite { - - private UUID playerUUID; - private UUID senderUUID; - private UUID islandOwnerUUID; - private String senderName; - private int time; - - public Invite(Player player, Player sender, UUID islandOwnerUUID, int time) { - this.playerUUID = player.getUniqueId(); - this.senderUUID = sender.getUniqueId(); - this.senderName = sender.getName(); - this.islandOwnerUUID = islandOwnerUUID; - this.time = time; - } - - public UUID getPlayerUUID() { - return playerUUID; - } - - public UUID getSenderUUID() { - return senderUUID; - } - - public UUID getOwnerUUID() { - return islandOwnerUUID; - } - - public void setOwnerUUID(UUID islandOwnerUUID) { - this.islandOwnerUUID = islandOwnerUUID; - } - - public String getSenderName() { - return senderName; - } - - public int getTime() { - return time; - } - - public void setTime(int time) { - this.time = time; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/InviteManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/InviteManager.java deleted file mode 100644 index 3f06f238..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/InviteManager.java +++ /dev/null @@ -1,59 +0,0 @@ -package me.goodandevil.skyblock.invite; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.bukkit.entity.Player; - -import me.goodandevil.skyblock.SkyBlock; - -public class InviteManager { - - private Map inviteStorage = new HashMap<>(); - - public InviteManager(SkyBlock skyblock) { - new InviteTask(this, skyblock).runTaskTimerAsynchronously(skyblock, 0L, 20L); - } - - public Invite createInvite(Player player, Player sender, UUID owner, int time) { - Invite invite = new Invite(player, sender, owner, time); - inviteStorage.put(player.getUniqueId(), invite); - - return invite; - } - - public void removeInvite(UUID uuid) { - if (hasInvite(uuid)) { - inviteStorage.remove(uuid); - } - } - - public void tranfer(UUID uuid1, UUID uuid2) { - Map islandInvites = getInvites(); - - for (UUID islandInviteList : islandInvites.keySet()) { - Invite invite = islandInvites.get(islandInviteList); - - if (invite.getOwnerUUID().equals(uuid1)) { - invite.setOwnerUUID(uuid2); - } - } - } - - public Map getInvites() { - return inviteStorage; - } - - public Invite getInvite(UUID uuid) { - if (hasInvite(uuid)) { - return inviteStorage.get(uuid); - } - - return null; - } - - public boolean hasInvite(UUID uuid) { - return inviteStorage.containsKey(uuid); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/InviteTask.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/InviteTask.java deleted file mode 100644 index db437cad..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/invite/InviteTask.java +++ /dev/null @@ -1,86 +0,0 @@ -package me.goodandevil.skyblock.invite; - -import java.io.File; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.ChatComponent; -import me.goodandevil.skyblock.utils.version.Sounds; - -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.ComponentBuilder; -import net.md_5.bungee.api.chat.HoverEvent; - -public class InviteTask extends BukkitRunnable { - - private final SkyBlock skyblock; - private final InviteManager inviteManager; - - protected InviteTask(InviteManager inviteManager, SkyBlock skyblock) { - this.inviteManager = inviteManager; - this.skyblock = skyblock; - } - - @Override - public void run() { - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - for (Player all : Bukkit.getOnlinePlayers()) { - if (inviteManager.hasInvite(all.getUniqueId())) { - Invite invite = inviteManager.getInvite(all.getUniqueId()); - invite.setTime(invite.getTime() - 1); - - if (invite.getTime() == 0) { - Player targetPlayer = Bukkit.getServer().getPlayer(invite.getOwnerUUID()); - - if (targetPlayer != null) { - targetPlayer.spigot() - .sendMessage(new ChatComponent( - messageManager.replaceMessage(targetPlayer, - configLoad - .getString( - "Command.Island.Invite.Invited.Sender.Expired.Message") - .replace("%player", all.getName()) + " "), - false, null, null, null) - .addExtra(new ChatComponent( - configLoad - .getString("Command.Island.Invite.Invited.Word.Resend") - .toUpperCase(), - true, ChatColor.AQUA, - new ClickEvent(ClickEvent.Action.RUN_COMMAND, - "/island invite " + all.getName()), - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new ComponentBuilder(ChatColor - .translateAlternateColorCodes('&', configLoad - .getString( - "Command.Island.Invite.Invited.Word.Tutorial") - .replace("%action", - configLoad.getString( - "Command.Island.Invite.Invited.Word.Resend")))) - .create())))); - soundManager.playSound(targetPlayer, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - - messageManager.sendMessage(all, - configLoad.getString("Command.Island.Invite.Invited.Target.Expired.Message") - .replace("%player", invite.getSenderName())); - soundManager.playSound(all, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - inviteManager.removeInvite(all.getUniqueId()); - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/Island.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/Island.java deleted file mode 100644 index d8113626..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/Island.java +++ /dev/null @@ -1,837 +0,0 @@ -package me.goodandevil.skyblock.island; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.island.*; -import me.goodandevil.skyblock.api.utils.APIUtil; -import me.goodandevil.skyblock.ban.Ban; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.utils.world.WorldBorder; -import me.goodandevil.skyblock.visit.Visit; -import org.apache.commons.lang.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.OfflinePlayer; -import org.bukkit.WeatherType; -import org.bukkit.block.Biome; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.*; - -public class Island { - - private final SkyBlock skyblock; - private final me.goodandevil.skyblock.api.island.Island apiWrapper; - - private Map> islandSettings = new HashMap<>(); - private List islandLocations = new ArrayList<>(); - private Set coopPlayers = new HashSet<>(); - - private UUID islandUUID; - private UUID ownerUUID; - private IslandLevel level; - private int size; - private boolean deleted = false; - - public Island(OfflinePlayer player) { - this.skyblock = SkyBlock.getInstance(); - - FileManager fileManager = skyblock.getFileManager(); - - this.islandUUID = UUID.randomUUID(); - this.ownerUUID = player.getUniqueId(); - this.size = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getInt("Island.Size.Minimum"); - - if (this.size > 1000) { - this.size = 50; - } - - level = new IslandLevel(getOwnerUUID(), skyblock); - - File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); - - Config config = fileManager.getConfig(new File(configFile, ownerUUID + ".yml")); - Config defaultSettingsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "settings.yml")); - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - - FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); - - if (fileManager.isFileExist(new File(configFile, ownerUUID + ".yml"))) { - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString("UUID") != null) { - islandUUID = UUID.fromString(configLoad.getString("UUID")); - } else { - configLoad.set("UUID", islandUUID.toString()); - } - - if (configLoad.getString("Size") != null) { - size = configLoad.getInt("Size"); - } - - if (configLoad.getString("Settings") != null) { - configLoad.set("Settings", null); - } - - if (configLoad.getString("Levelling.Materials") != null) { - configLoad.set("Levelling.Materials", null); - } - - if (configLoad.getString("Border") == null) { - configLoad.set("Border.Enable", true); - configLoad.set("Border.Color", WorldBorder.Color.Blue.name()); - } - - if (configLoad.getString("Members") != null) { - List members = configLoad.getStringList("Members"); - - for (int i = 0; i < members.size(); i++) { - String member = members.get(i); - Config playerDataConfig = new FileManager.Config(fileManager, - new File(skyblock.getDataFolder().toString() + "/player-data", member + ".yml")); - FileConfiguration playerDataConfigLoad = playerDataConfig.getFileConfiguration(); - - if (playerDataConfigLoad.getString("Island.Owner") == null - || !playerDataConfigLoad.getString("Island.Owner").equals(ownerUUID.toString())) { - members.remove(member); - } - } - - configLoad.set("Members", members); - } - - if (configLoad.getString("Operators") != null) { - List operators = configLoad.getStringList("Operators"); - - for (int i = 0; i < operators.size(); i++) { - String operator = operators.get(i); - Config playerDataConfig = new FileManager.Config(fileManager, - new File(skyblock.getDataFolder().toString() + "/player-data", operator + ".yml")); - FileConfiguration playerDataConfigLoad = playerDataConfig.getFileConfiguration(); - - if (playerDataConfigLoad.getString("Island.Owner") == null - || !playerDataConfigLoad.getString("Island.Owner").equals(ownerUUID.toString())) { - operators.remove(operator); - } - } - - configLoad.set("Operators", operators); - } - - Config settingsDataConfig = null; - - if (fileManager.isFileExist(new File(skyblock.getDataFolder().toString() + "/setting-data", - getOwnerUUID().toString() + ".yml"))) { - settingsDataConfig = fileManager.getConfig(new File( - skyblock.getDataFolder().toString() + "/setting-data", getOwnerUUID().toString() + ".yml")); - } - - for (IslandRole roleList : IslandRole.values()) { - List settings = new ArrayList<>(); - - for (String settingList : defaultSettingsConfig.getFileConfiguration() - .getConfigurationSection("Settings." + roleList.name()).getKeys(false)) { - if (settingsDataConfig == null || settingsDataConfig.getFileConfiguration() - .getString("Settings." + roleList.name() + "." + settingList) == null) { - settings.add(new IslandSetting(settingList, defaultSettingsConfig.getFileConfiguration() - .getBoolean("Settings." + roleList.name() + "." + settingList))); - } else { - settings.add(new IslandSetting(settingList, settingsDataConfig.getFileConfiguration() - .getBoolean("Settings." + roleList.name() + "." + settingList))); - } - } - - islandSettings.put(roleList, settings); - } - } else { - FileConfiguration configLoad = config.getFileConfiguration(); - - configLoad.set("UUID", islandUUID.toString()); - configLoad.set("Visitor.Open", mainConfigLoad.getBoolean("Island.Visitor.Open")); - configLoad.set("Border.Enable", true); - configLoad.set("Border.Color", WorldBorder.Color.Blue.name()); - configLoad.set("Biome.Type", mainConfigLoad.getString("Island.Biome.Default.Type").toUpperCase()); - configLoad.set("Weather.Synchronised", mainConfigLoad.getBoolean("Island.Weather.Default.Synchronised")); - configLoad.set("Weather.Time", mainConfigLoad.getInt("Island.Weather.Default.Time")); - configLoad.set("Weather.Weather", mainConfigLoad.getString("Island.Weather.Default.Weather").toUpperCase()); - configLoad.set("Ownership.Original", ownerUUID.toString()); - - for (IslandRole roleList : IslandRole.values()) { - List settings = new ArrayList<>(); - - for (String settingList : defaultSettingsConfig.getFileConfiguration() - .getConfigurationSection("Settings." + roleList.name()).getKeys(false)) { - settings.add(new IslandSetting(settingList, defaultSettingsConfig.getFileConfiguration() - .getBoolean("Settings." + roleList.name() + "." + settingList))); - } - - islandSettings.put(roleList, settings); - } - - save(); - - Player onlinePlayer = Bukkit.getServer().getPlayer(ownerUUID); - - if (!skyblock.getPlayerDataManager().hasPlayerData(onlinePlayer)) { - skyblock.getPlayerDataManager().createPlayerData(onlinePlayer); - } - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(onlinePlayer); - playerData.setPlaytime(0); - playerData.setOwner(ownerUUID); - playerData.setMemberSince(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date())); - playerData.save(); - } - - if (!mainConfigLoad.getBoolean("Island.Coop.Unload")) { - File coopDataFile = new File(skyblock.getDataFolder().toString() + "/coop-data", - getOwnerUUID().toString() + ".yml"); - - if (fileManager.isFileExist(coopDataFile)) { - Config coopDataConfig = fileManager.getConfig(coopDataFile); - FileConfiguration coopDataConfigLoad = coopDataConfig.getFileConfiguration(); - - if (coopDataConfigLoad.getString("CoopPlayers") != null) { - for (String coopPlayerList : coopDataConfigLoad.getStringList("CoopPlayers")) { - coopPlayers.add(UUID.fromString(coopPlayerList)); - } - } - } - } - - this.apiWrapper = new me.goodandevil.skyblock.api.island.Island(this, player); - } - - public UUID getIslandUUID() { - return islandUUID; - } - - public UUID getOwnerUUID() { - return ownerUUID; - } - - public void setOwnerUUID(UUID uuid) { - getVisit().setOwnerUUID(uuid); - this.ownerUUID = uuid; - } - - public UUID getOriginalOwnerUUID() { - return UUID - .fromString( - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Ownership.Original")); - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - if (size > 1000 || size < 0) { - size = 50; - } - - this.size = size; - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Size", size); - } - - public double getRadius() { - return (size / 2) + 0.5; - } - - public boolean hasPassword() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Ownership.Password") != null; - } - - public String getPassword() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Ownership.Password"); - } - - public void setPassword(String password) { - IslandPasswordChangeEvent islandPasswordChangeEvent = new IslandPasswordChangeEvent(getAPIWrapper(), password); - Bukkit.getServer().getPluginManager().callEvent(islandPasswordChangeEvent); - - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Ownership.Password", islandPasswordChangeEvent.getPassword()); - } - - public Location getLocation(IslandWorld world, IslandEnvironment environment) { - for (IslandLocation islandLocationList : islandLocations) { - if (islandLocationList.getWorld() == world && islandLocationList.getEnvironment() == environment) { - return islandLocationList.getLocation(); - } - } - - return null; - } - - public IslandLocation getIslandLocation(IslandWorld world, IslandEnvironment environment) { - for (IslandLocation islandLocationList : islandLocations) { - if (islandLocationList.getWorld() == world && islandLocationList.getEnvironment() == environment) { - return islandLocationList; - } - } - - return null; - } - - public void addLocation(IslandWorld world, IslandEnvironment environment, Location location) { - islandLocations.add(new IslandLocation(world, environment, location)); - } - - public void setLocation(IslandWorld world, IslandEnvironment environment, Location location) { - for (IslandLocation islandLocationList : islandLocations) { - if (islandLocationList.getWorld() == world && islandLocationList.getEnvironment() == environment) { - Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> - Bukkit.getServer().getPluginManager().callEvent(new IslandLocationChangeEvent(getAPIWrapper(), - new me.goodandevil.skyblock.api.island.IslandLocation( - APIUtil.fromImplementation(environment), APIUtil.fromImplementation(world), - location)))); - - FileManager fileManager = skyblock.getFileManager(); - - if (environment == IslandEnvironment.Island) { - fileManager.setLocation( - fileManager - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - getOwnerUUID().toString() + ".yml")), - "Location." + world.name() + "." + environment.name(), location, true); - } else { - fileManager.setLocation( - fileManager - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - getOwnerUUID().toString() + ".yml")), - "Location." + world.name() + ".Spawn." + environment.name(), location, true); - } - - islandLocationList.setLocation(location); - - break; - } - } - } - - public boolean isBorder() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getBoolean("Border.Enable"); - } - - public void setBorder(boolean border) { - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Border.Enable", border); - } - - public WorldBorder.Color getBorderColor() { - return WorldBorder.Color.valueOf(skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Border.Color")); - } - - public void setBorderColor(WorldBorder.Color color) { - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Border.Color", color.name()); - } - - public Biome getBiome() { - return Biome.valueOf(skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Biome.Type")); - } - - public String getBiomeName() { - return WordUtils.capitalizeFully(getBiome().name().replace("_", " ")); - } - - public void setBiome(Biome biome) { - IslandBiomeChangeEvent islandBiomeChangeEvent = new IslandBiomeChangeEvent(getAPIWrapper(), biome); - Bukkit.getServer().getPluginManager().callEvent(islandBiomeChangeEvent); - - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Biome.Type", islandBiomeChangeEvent.getBiome().name()); - } - - public boolean isWeatherSynchronized() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getBoolean("Weather.Synchronised"); - } - - public void setWeatherSynchronized(boolean sync) { - IslandWeatherChangeEvent islandWeatherChangeEvent = new IslandWeatherChangeEvent(getAPIWrapper(), getWeather(), - getTime(), sync); - Bukkit.getServer().getPluginManager().callEvent(islandWeatherChangeEvent); - - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Weather.Synchronised", sync); - } - - public WeatherType getWeather() { - String weatherTypeName = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Weather.Weather"); - - WeatherType weatherType; - - if (weatherTypeName == null || weatherTypeName.isEmpty() || WeatherType.valueOf(weatherTypeName) == null) { - weatherType = WeatherType.CLEAR; - } else { - weatherType = WeatherType.valueOf(weatherTypeName); - } - - return weatherType; - } - - public String getWeatherName() { - return WordUtils.capitalize(getWeather().name().toLowerCase()); - } - - public void setWeather(WeatherType weatherType) { - IslandWeatherChangeEvent islandWeatherChangeEvent = new IslandWeatherChangeEvent(getAPIWrapper(), weatherType, - getTime(), isWeatherSynchronized()); - Bukkit.getServer().getPluginManager().callEvent(islandWeatherChangeEvent); - - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Weather.Weather", weatherType.name()); - } - - public int getTime() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getInt("Weather.Time"); - } - - public void setTime(int time) { - IslandWeatherChangeEvent islandWeatherChangeEvent = new IslandWeatherChangeEvent(getAPIWrapper(), getWeather(), - time, isWeatherSynchronized()); - Bukkit.getServer().getPluginManager().callEvent(islandWeatherChangeEvent); - - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Weather.Time", time); - } - - public Set getCoopPlayers() { - return coopPlayers; - } - - public void addCoopPlayer(UUID uuid) { - coopPlayers.add(uuid); - Bukkit.getScheduler().runTaskAsynchronously(skyblock, this::save); - } - - public void removeCoopPlayer(UUID uuid) { - coopPlayers.remove(uuid); - Bukkit.getScheduler().runTaskAsynchronously(skyblock, this::save); - } - - public boolean isCoopPlayer(UUID uuid) { - return coopPlayers.contains(uuid); - } - - public Set getRole(IslandRole role) { - Set islandRoles = new HashSet<>(); - - if (role == IslandRole.Owner) { - islandRoles.add(getOwnerUUID()); - } else { - Config config = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString(role.name() + "s") != null) { - for (String playerList : configLoad.getStringList(role.name() + "s")) { - islandRoles.add(UUID.fromString(playerList)); - } - } - } - - return islandRoles; - } - - public IslandRole getRole(OfflinePlayer player){ - for (IslandRole role : IslandRole.values()) - if(getRole(role).contains(player.getUniqueId())) - return role; - - return IslandRole.Visitor; - } - - public boolean setRole(IslandRole role, UUID uuid) { - if (!(role == IslandRole.Visitor || role == IslandRole.Coop || role == IslandRole.Owner)) { - if (!hasRole(role, uuid)) { - if (role == IslandRole.Member) { - if (hasRole(IslandRole.Operator, uuid)) { - Bukkit.getServer().getPluginManager().callEvent(new IslandRoleChangeEvent(getAPIWrapper(), - Bukkit.getServer().getOfflinePlayer(uuid), APIUtil.fromImplementation(role))); - removeRole(IslandRole.Operator, uuid); - } - } else if (role == IslandRole.Operator) { - if (hasRole(IslandRole.Member, uuid)) { - Bukkit.getServer().getPluginManager().callEvent(new IslandRoleChangeEvent(getAPIWrapper(), - Bukkit.getServer().getOfflinePlayer(uuid), APIUtil.fromImplementation(role))); - removeRole(IslandRole.Member, uuid); - } - } - - Config config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - getOwnerUUID().toString() + ".yml")); - File configFile = config.getFile(); - FileConfiguration configLoad = config.getFileConfiguration(); - - List islandMembers; - - if (configLoad.getString(role.name() + "s") == null) { - islandMembers = new ArrayList<>(); - } else { - islandMembers = configLoad.getStringList(role.name() + "s"); - } - - islandMembers.add(uuid.toString()); - configLoad.set(role.name() + "s", islandMembers); - - try { - configLoad.save(configFile); - } catch (IOException e) { - e.printStackTrace(); - } - - getVisit().setMembers(getRole(IslandRole.Member).size() + getRole(IslandRole.Operator).size() + 1); - - return true; - } - } - - return false; - } - - public boolean removeRole(IslandRole role, UUID uuid) { - if (!(role == IslandRole.Visitor || role == IslandRole.Coop || role == IslandRole.Owner)) { - if (hasRole(role, uuid)) { - Config config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - getOwnerUUID().toString() + ".yml")); - File configFile = config.getFile(); - FileConfiguration configLoad = config.getFileConfiguration(); - List islandMembers = configLoad.getStringList(role.name() + "s"); - - islandMembers.remove(uuid.toString()); - configLoad.set(role.name() + "s", islandMembers); - - try { - configLoad.save(configFile); - } catch (IOException e) { - e.printStackTrace(); - } - - getVisit().setMembers(getRole(IslandRole.Member).size() + getRole(IslandRole.Operator).size() + 1); - - return true; - } - } - - return false; - } - - public boolean hasRole(IslandRole role, UUID uuid) { - if (role == IslandRole.Owner) { - return getOwnerUUID().equals(uuid); - } - - return getRole(role).contains(uuid); - } - - public void setUpgrade(Player player, Upgrade.Type type, boolean status) { - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Upgrade." + type.name(), status); - - Bukkit.getServer().getPluginManager() - .callEvent(new IslandUpgradeEvent(getAPIWrapper(), player, APIUtil.fromImplementation(type))); - } - - public void removeUpgrade(Upgrade.Type type) { - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Upgrade." + type.name(), null); - } - - public boolean hasUpgrade(Upgrade.Type type) { - if (skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Upgrade." + type.name()) == null) { - return false; - } - - return true; - } - - public boolean isUpgrade(Upgrade.Type type) { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getBoolean("Upgrade." + type.name()); - } - - public IslandSetting getSetting(IslandRole role, String setting) { - if (islandSettings.containsKey(role)) { - for (IslandSetting settingList : islandSettings.get(role)) { - if (settingList.getName().equalsIgnoreCase(setting)) { - return settingList; - } - } - } - - return new IslandSetting(setting, true); //TODO: Default setting value - } - - public List getSettings(IslandRole role) { - if (islandSettings.containsKey(role)) { - return islandSettings.get(role); - } - - return null; - } - - public double getBankBalance() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getDouble("Bank.Balance"); - } - - public void addToBank(double value) { - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager - .getConfig(new File(skyblock.getDataFolder().toString() + "/island-data", ownerUUID.toString() + ".yml")); - - value = getBankBalance() + value; - config.getFileConfiguration().set("Bank.Balance", value); - - try { - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void removeFromBank(double value) { - addToBank(-value); - } - - public boolean isOpen() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getBoolean("Visitor.Open"); - } - - public void setOpen(boolean open) { - IslandOpenEvent islandOpenEvent = new IslandOpenEvent(getAPIWrapper(), open); - Bukkit.getServer().getPluginManager().callEvent(islandOpenEvent); - - if (!islandOpenEvent.isCancelled()) { - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Visitor.Open", open); - getVisit().setOpen(open); - } - } - - public List getMessage(IslandMessage message) { - List islandMessage = new ArrayList<>(); - - Config config = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString("Visitor." + message.name() + ".Message") != null) { - islandMessage = configLoad.getStringList("Visitor." + message.name() + ".Message"); - } - - return islandMessage; - } - - public String getMessageAuthor(IslandMessage message) { - Config config = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString("Visitor." + message.name() + ".Author") != null) { - return configLoad.getString("Visitor." + message.name() + ".Author"); - } - - return ""; - } - - public void setMessage(IslandMessage message, String author, List lines) { - IslandMessageChangeEvent islandMessageChangeEvent = new IslandMessageChangeEvent(getAPIWrapper(), - APIUtil.fromImplementation(message), lines, author); - Bukkit.getServer().getPluginManager().callEvent(islandMessageChangeEvent); - - if (!islandMessageChangeEvent.isCancelled()) { - Config config = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - configLoad.set("Visitor." + message.name() + ".Message", islandMessageChangeEvent.getLines()); - configLoad.set("Visitor." + message.name() + ".Author", islandMessageChangeEvent.getAuthor()); - - if (message == IslandMessage.Signature) { - getVisit().setSignature(lines); - } - } - } - - public void setStructure(String structure) { - skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Structure", structure); - } - - public boolean hasStructure() { - if (getStructure() != null) { - return true; - } - - return false; - } - - public String getStructure() { - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")) - .getFileConfiguration().getString("Structure"); - } - - public Visit getVisit() { - return skyblock.getVisitManager().getIsland(getOwnerUUID()); - } - - public Ban getBan() { - return skyblock.getBanManager().getIsland(getOwnerUUID()); - } - - public IslandLevel getLevel() { - return level; - } - - public void setDeleted(boolean deleted) { - this.deleted = deleted; - } - - public boolean isDeleted() { - return deleted; - } - - public void save() { - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager - .getConfig(new File(skyblock.getDataFolder().toString() + "/island-data", ownerUUID.toString() + ".yml")); - - try { - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - - config = fileManager - .getConfig(new File(skyblock.getDataFolder().toString() + "/setting-data", ownerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - for (IslandRole roleList : islandSettings.keySet()) { - for (IslandSetting settingList : islandSettings.get(roleList)) { - configLoad.set("Settings." + roleList + "." + settingList.getName(), settingList.getStatus()); - } - } - - try { - configLoad.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Coop.Unload")) { - config = fileManager - .getConfig(new File(skyblock.getDataFolder().toString() + "/coop-data", ownerUUID.toString() + ".yml")); - configLoad = config.getFileConfiguration(); - - List coopPlayersAsString = new ArrayList<>(); - - for (UUID coopPlayerList : coopPlayers) { - coopPlayersAsString.add(coopPlayerList.toString()); - } - - configLoad.set("CoopPlayers", coopPlayersAsString); - - try { - configLoad.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - - getLevel().save(); - } - - public boolean isRegionUnlocked(Player player, String type) { - FileManager fileManager = skyblock.getFileManager(); - SoundManager soundManager = skyblock.getSoundManager(); - MessageManager messageManager = skyblock.getMessageManager(); - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - Config islandData = fileManager - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), - ownerUUID.toString() + ".yml")); - FileConfiguration configLoadIslandData = islandData.getFileConfiguration(); - double price = configLoad.getDouble("Island.World." + type + ".UnlockPrice"); - - boolean unlocked = configLoadIslandData.getBoolean("Unlocked." + type); - if (price == -1) { - configLoadIslandData.set("Unlocked." + type, true); - unlocked = true; - } - - if (!unlocked) { - messageManager.sendMessage(player, - fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration() - .getString("Island.Unlock." + type + ".Message").replace( - "%cost%", NumberUtil.formatNumberByDecimal(price))); - - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - player.setVelocity(player.getLocation().getDirection().multiply(-.50)); - } - return unlocked; - } - - public me.goodandevil.skyblock.api.island.Island getAPIWrapper() { - return apiWrapper; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandEnvironment.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandEnvironment.java deleted file mode 100644 index aaf3cc9d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandEnvironment.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.island; - -public enum IslandEnvironment { - - Island, Visitor, Main; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandLevel.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandLevel.java deleted file mode 100644 index be26daa9..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandLevel.java +++ /dev/null @@ -1,187 +0,0 @@ -package me.goodandevil.skyblock.island; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.bukkit.configuration.file.FileConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; - -public class IslandLevel { - - private final SkyBlock skyblock; - - private UUID ownerUUID; - - private long lastCalculatedLevel = 0; - private long lastCalculatedPoints = 0; - - private Map materials; - - public IslandLevel(UUID ownerUUID, SkyBlock skyblock) { - this.skyblock = skyblock; - this.ownerUUID = ownerUUID; - - Config config = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/level-data"), ownerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Map materials = new HashMap<>(); - - if (configLoad.getString("Levelling.Materials") != null) { - for (String materialList : configLoad.getConfigurationSection("Levelling.Materials").getKeys(false)) { - if (configLoad.getString("Levelling.Materials." + materialList + ".Amount") != null) { - materials.put(materialList, configLoad.getLong("Levelling.Materials." + materialList + ".Amount")); - } - } - } - - this.materials = materials; - } - - public void setOwnerUUID(UUID ownerUUID) { - this.ownerUUID = ownerUUID; - } - - public long getPoints() { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - long pointsEarned = 0; - - for (String materialList : this.materials.keySet()) { - long materialAmount = this.materials.get(materialList); - - if (configLoad.getString("Materials." + materialList + ".Points") != null) { - long pointsRequired = config.getFileConfiguration().getLong("Materials." + materialList + ".Points"); - - if (pointsRequired != 0) { - pointsEarned = pointsEarned + (materialAmount * pointsRequired); - } - } - } - - return pointsEarned; - } - - public long getMaterialPoints(String material) { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - long pointsEarned = 0; - - if (this.materials.containsKey(material)) { - long materialAmount = this.materials.get(material); - - if (configLoad.getString("Materials." + material + ".Points") != null) { - long pointsRequired = configLoad.getLong("Materials." + material + ".Points"); - - if (pointsRequired != 0) { - pointsEarned = materialAmount * pointsRequired; - } - } - } - - return pointsEarned; - } - - public long getLevel() { - long division = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getLong("Island.Levelling.Division"); - - if (division == 0) { - division = 1; - } - - return getPoints() / division; - } - - public void setMaterialAmount(String material, long amount) { - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/level-data"), - ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Levelling.Materials." + material + ".Amount", amount); - - this.materials.put(material, amount); - } - - public long getMaterialAmount(String material) { - if (this.materials.containsKey(material)) { - return this.materials.get(material); - } - - return 0; - } - - public void removeMaterial(String material) { - skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/level-data"), - ownerUUID.toString() + ".yml")) - .getFileConfiguration().set("Levelling.Materials." + material, null); - - this.materials.remove(material); - } - - public void setMaterials(Map materials) { - Config config = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/level-data"), ownerUUID.toString() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - configLoad.set("Levelling.Materials", null); - - for (String materialList : materials.keySet()) { - configLoad.set("Levelling.Materials." + materialList + ".Amount", materials.get(materialList)); - } - - this.materials = materials; - } - - public boolean hasMaterial(String material) { - return this.materials.containsKey(material); - } - - public boolean hasMaterials() { - if (this.materials.size() == 0) { - return false; - } - - return true; - } - - public Map getMaterials() { - return this.materials; - } - - public void setLastCalculatedPoints(long lastCalculatedPoints) { - this.lastCalculatedPoints = lastCalculatedPoints; - } - - public long getLastCalculatedPoints() { - return this.lastCalculatedPoints; - } - - public void setLastCalculatedLevel(long lastCalculatedLevel) { - this.lastCalculatedLevel = lastCalculatedLevel; - } - - public long getLastCalculatedLevel() { - return this.lastCalculatedLevel; - } - - public void save() { - Config config = skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/level-data"), ownerUUID.toString() + ".yml")); - File configFile = config.getFile(); - FileConfiguration configLoad = config.getFileConfiguration(); - - try { - configLoad.save(configFile); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandLocation.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandLocation.java deleted file mode 100644 index efb5ca81..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandLocation.java +++ /dev/null @@ -1,74 +0,0 @@ -package me.goodandevil.skyblock.island; - -import org.bukkit.Location; - -import me.goodandevil.skyblock.SkyBlock; - -public class IslandLocation { - - private IslandWorld world; - private IslandEnvironment environment; - - private double x; - private double y; - private double z; - - private float yaw; - private float pitch; - - public IslandLocation(IslandWorld world, IslandEnvironment environment, org.bukkit.Location location) { - this.world = world; - this.environment = environment; - - if (location == null) - return; - - this.x = location.getX(); - this.y = location.getY(); - this.z = location.getZ(); - - this.yaw = location.getYaw(); - this.pitch = location.getPitch(); - } - - public IslandWorld getWorld() { - return this.world; - } - - public IslandEnvironment getEnvironment() { - return this.environment; - } - - public double getX() { - return this.x; - } - - public double getY() { - return this.y; - } - - public double getZ() { - return this.z; - } - - public float getYaw() { - return this.yaw; - } - - public float getPitch() { - return this.pitch; - } - - public void setLocation(Location location) { - this.x = location.getX(); - this.y = location.getY(); - this.z = location.getZ(); - - this.yaw = location.getYaw(); - this.pitch = location.getPitch(); - } - - public Location getLocation() { - return new Location(SkyBlock.getInstance().getWorldManager().getWorld(world), x, y, z, yaw, pitch); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandMessage.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandMessage.java deleted file mode 100644 index 129a9a31..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandMessage.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.island; - -public enum IslandMessage { - - Welcome, Signature, Sign; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandPosition.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandPosition.java deleted file mode 100644 index fb62c96a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandPosition.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.goodandevil.skyblock.island; - -public class IslandPosition { - - private IslandWorld world; - - private double x; - private double z; - - public IslandPosition(IslandWorld world, double x, double z) { - this.world = world; - this.x = x; - this.z = z; - } - - public IslandWorld getWorld() { - return this.world; - } - - public double getX() { - return this.x; - } - - public void setX(double x) { - this.x = x; - } - - public double getZ() { - return this.z; - } - - public void setZ(double z) { - this.z = z; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandRole.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandRole.java deleted file mode 100644 index bec06aeb..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandRole.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.goodandevil.skyblock.island; - -public enum IslandRole { - - Coop, Visitor, Member, Operator, Owner; - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandSetting.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandSetting.java deleted file mode 100644 index a0ade698..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandSetting.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.goodandevil.skyblock.island; - -public class IslandSetting { - - private String name; - private boolean status; - - public IslandSetting(String name, boolean status) { - this.name = name; - this.status = status; - } - - public String getName() { - return this.name; - } - - public void setStatus(boolean status) { - this.status = status; - } - - public boolean getStatus() { - return this.status; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandWorld.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandWorld.java deleted file mode 100644 index 05859aee..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/island/IslandWorld.java +++ /dev/null @@ -1,56 +0,0 @@ -package me.goodandevil.skyblock.island; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.World.Environment; - -import java.util.ArrayList; -import java.util.List; - -public enum IslandWorld { - - Normal, Nether, End; - - public Environment getUncheckedEnvironment() { - switch (this) { - case Normal: - return Environment.NORMAL; - case Nether: - return Environment.NETHER; - case End: - return Environment.THE_END; - } - - return null; - } - - public Environment getEnvironment() { - WorldManager worldManager = SkyBlock.getInstance().getWorldManager(); - if (worldManager.getWorld(Normal) != null) - return Environment.NORMAL; - - if (worldManager.getWorld(Nether) != null) - return Environment.NETHER; - - if (worldManager.getWorld(End) != null) - return Environment.THE_END; - - return null; - } - - public static List getIslandWorlds() { - List islandWorlds = new ArrayList<>(); - - WorldManager worldManager = SkyBlock.getInstance().getWorldManager(); - if (worldManager.getWorld(Normal) != null) - islandWorlds.add(Normal); - - if (worldManager.getWorld(Nether) != null) - islandWorlds.add(Nether); - - if (worldManager.getWorld(End) != null) - islandWorlds.add(End); - - return islandWorlds; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/Leaderboard.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/Leaderboard.java deleted file mode 100644 index 077747e4..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/Leaderboard.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.goodandevil.skyblock.leaderboard; - -import me.goodandevil.skyblock.visit.Visit; - -public class Leaderboard { - - private Type type; - private final Visit visit; - private int position; - - public Leaderboard(Type type, Visit visit, int position) { - this.type = type; - this.visit = visit; - this.position = position; - } - - public Type getType() { - return type; - } - - public Visit getVisit() { - return visit; - } - - public int getPosition() { - return position; - } - - public enum Type { - - Level, Bank, Votes - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardManager.java deleted file mode 100644 index 5764d1ca..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardManager.java +++ /dev/null @@ -1,157 +0,0 @@ -package me.goodandevil.skyblock.leaderboard; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.economy.EconomyManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.leaderboard.leaderheads.TopBank; -import me.goodandevil.skyblock.leaderboard.leaderheads.TopLevel; -import me.goodandevil.skyblock.leaderboard.leaderheads.TopVotes; -import me.goodandevil.skyblock.visit.Visit; -import me.goodandevil.skyblock.visit.VisitManager; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.UUID; - -public class LeaderboardManager { - - private final SkyBlock skyblock; - - private List leaderboardStorage = new ArrayList<>(); - - public LeaderboardManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - new LeaderboardTask(skyblock).runTaskTimerAsynchronously(skyblock, 0L, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Leaderboard.Reset.Time") * 20); - - resetLeaderboard(); - setupLeaderHeads(); - } - - public void resetLeaderboard() { - EconomyManager economyManager = skyblock.getEconomyManager(); - VisitManager visitManager = skyblock.getVisitManager(); - WorldManager worldManager = skyblock.getWorldManager(); - - visitManager.loadIslands(); - - List islandLevels = new ArrayList<>(); - List islandBanks = new ArrayList<>(); - List islandVotes = new ArrayList<>(); - - boolean enableExemptions = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Leaderboard.Exemptions.Enable"); - - for (UUID ownerUUID : visitManager.getIslands().keySet()) { - if (enableExemptions && economyManager.hasPermission(worldManager.getWorld(IslandWorld.Normal).getName(), - Bukkit.getOfflinePlayer(ownerUUID), - "fabledskyblock.top.exempt")) - continue; - - Visit visit = visitManager.getIslands().get(ownerUUID); - islandLevels.add(new LeaderboardPlayer(ownerUUID, visit.getLevel().getLevel())); - islandBanks.add(new LeaderboardPlayer(ownerUUID, (long)visit.getBankBalance())); - islandVotes.add(new LeaderboardPlayer(ownerUUID, visit.getVoters().size())); - } - - islandLevels.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); - islandBanks.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); - islandVotes.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); - - for (int i = 0; i < 10; i++) { - if (!islandVotes.isEmpty() && i < islandVotes.size()) { - Leaderboard leaderboard = new Leaderboard(Leaderboard.Type.Votes, visitManager.getIsland(islandVotes.get(i).getUUID()), i); - leaderboardStorage.add(leaderboard); - } - - if (!islandBanks.isEmpty() && i < islandBanks.size()) { - Leaderboard leaderboard = new Leaderboard(Leaderboard.Type.Bank, visitManager.getIsland(islandBanks.get(i).getUUID()), i); - leaderboardStorage.add(leaderboard); - } - - if (!islandLevels.isEmpty() && i < islandLevels.size()) { - Leaderboard leaderboard = new Leaderboard(Leaderboard.Type.Level, visitManager.getIsland(islandLevels.get(i).getUUID()), i); - leaderboardStorage.add(leaderboard); - } - } - } - - public int getPlayerIslandLeaderboardPosition(Player player, Leaderboard.Type type) { - VisitManager visitManager = skyblock.getVisitManager(); - visitManager.loadIslands(); - - List leaderboardPlayers = new ArrayList<>(); - - switch (type) { - case Level: - for (UUID ownerUUID : visitManager.getIslands().keySet()) { - Visit visit = visitManager.getIslands().get(ownerUUID); - leaderboardPlayers.add(new LeaderboardPlayer(ownerUUID, visit.getLevel().getLevel())); - } - break; - case Bank: - for (UUID ownerUUID : visitManager.getIslands().keySet()) { - Visit visit = visitManager.getIslands().get(ownerUUID); - leaderboardPlayers.add(new LeaderboardPlayer(ownerUUID, (long)visit.getBankBalance())); - } - case Votes: - for (UUID ownerUUID : visitManager.getIslands().keySet()) { - Visit visit = visitManager.getIslands().get(ownerUUID); - leaderboardPlayers.add(new LeaderboardPlayer(ownerUUID, visit.getVoters().size())); - } - break; - } - - leaderboardPlayers.sort(Comparator.comparingLong(LeaderboardPlayer::getValue).reversed()); - - for (int i = 0; i < leaderboardPlayers.size(); i++) { - if (leaderboardPlayers.get(i).getUUID().equals(player.getUniqueId())) { - return i + 1; - } - } - - return -1; - } - - public void setupLeaderHeads() { - if (Bukkit.getServer().getPluginManager().getPlugin("LeaderHeads") != null) { - new TopLevel(skyblock); - new TopBank(skyblock); - new TopVotes(skyblock); - } - } - - public void clearLeaderboard() { - leaderboardStorage.clear(); - } - - public List getLeaderboard(Leaderboard.Type type) { - List leaderboardIslands = new ArrayList<>(); - - for (Leaderboard leaderboardList : leaderboardStorage) { - if (leaderboardList.getType() == type) { - leaderboardIslands.add(leaderboardList); - } - } - - return leaderboardIslands; - } - - public Leaderboard getLeaderboardFromPosition(Leaderboard.Type type, int position) { - for (Leaderboard leaderboardPlayerList : leaderboardStorage) - if (leaderboardPlayerList.getType() == type && leaderboardPlayerList.getPosition() == position) - return leaderboardPlayerList; - return null; - } - - public List getLeaderboards() { - return leaderboardStorage; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardPlayer.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardPlayer.java deleted file mode 100644 index 91f6e12c..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardPlayer.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.goodandevil.skyblock.leaderboard; - -import java.util.UUID; - -public class LeaderboardPlayer { - - private UUID uuid; - private long value; - - public LeaderboardPlayer(UUID uuid, long value) { - this.uuid = uuid; - this.value = value; - } - - public UUID getUUID() { - return uuid; - } - - public long getValue() { - return value; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardTask.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardTask.java deleted file mode 100644 index 2c73ea45..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardTask.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.goodandevil.skyblock.leaderboard; - -import org.bukkit.scheduler.BukkitRunnable; - -import me.goodandevil.skyblock.SkyBlock; - -public class LeaderboardTask extends BukkitRunnable { - - private final SkyBlock skyblock; - - public LeaderboardTask(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @Override - public void run() { - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - leaderboardManager.clearLeaderboard(); - leaderboardManager.resetLeaderboard(); - leaderboardManager.setupLeaderHeads(); - - skyblock.getHologramManager().resetHologram(); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopLevel.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopLevel.java deleted file mode 100644 index 8c18b8c9..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopLevel.java +++ /dev/null @@ -1,48 +0,0 @@ -package me.goodandevil.skyblock.leaderboard.leaderheads; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.bukkit.ChatColor; - -import java.util.UUID; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.leaderboard.Leaderboard; -import me.goodandevil.skyblock.leaderboard.Leaderboard.Type; -import me.goodandevil.skyblock.visit.Visit; -import me.robin.leaderheads.api.LeaderHeadsAPI; -import me.robin.leaderheads.datacollectors.DataCollector; -import me.robin.leaderheads.objects.BoardType; - -public class TopLevel extends DataCollector { - - private final SkyBlock skyblock; - - public TopLevel(SkyBlock skyblock) { - super("toplevels", skyblock.getDescription().getName(), BoardType.DEFAULT, "&bTop Level", "toplevel", - Arrays.asList(ChatColor.DARK_GRAY + "-=+=-", ChatColor.AQUA + "{name}", - ChatColor.WHITE + "{amount} Level", ChatColor.DARK_GRAY + "-=+=-"), - true, UUID.class); - - this.skyblock = skyblock; - } - - @Override - public List> requestAll() { - Map topLevels = new HashMap<>(); - - List leaderboards = skyblock.getLeaderboardManager().getLeaderboard(Type.Level); - - for (int i = 0; i < leaderboards.size(); i++) { - Leaderboard leaderboard = leaderboards.get(i); - Visit visit = leaderboard.getVisit(); - topLevels.put(visit.getOwnerUUID(), (double) visit.getLevel().getLevel()); - } - - return LeaderHeadsAPI.sortMap(topLevels); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopVotes.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopVotes.java deleted file mode 100644 index 38ce4cb5..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/leaderboard/leaderheads/TopVotes.java +++ /dev/null @@ -1,47 +0,0 @@ -package me.goodandevil.skyblock.leaderboard.leaderheads; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.Map.Entry; - -import org.bukkit.ChatColor; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.leaderboard.Leaderboard; -import me.goodandevil.skyblock.leaderboard.Leaderboard.Type; -import me.goodandevil.skyblock.visit.Visit; -import me.robin.leaderheads.api.LeaderHeadsAPI; -import me.robin.leaderheads.datacollectors.DataCollector; -import me.robin.leaderheads.objects.BoardType; - -public class TopVotes extends DataCollector { - - private final SkyBlock skyblock; - - public TopVotes(SkyBlock skyblock) { - super("topvotes", skyblock.getDescription().getName(), BoardType.DEFAULT, "&bTop Votes", "topvotes", - Arrays.asList(ChatColor.DARK_GRAY + "-=+=-", ChatColor.AQUA + "{name}", - ChatColor.WHITE + "{amount} Votes", ChatColor.DARK_GRAY + "-=+=-"), - true, UUID.class); - - this.skyblock = skyblock; - } - - @Override - public List> requestAll() { - Map topLevels = new HashMap<>(); - - List leaderboards = skyblock.getLeaderboardManager().getLeaderboard(Type.Votes); - - for (int i = 0; i < leaderboards.size(); i++) { - Leaderboard leaderboard = leaderboards.get(i); - Visit visit = leaderboard.getVisit(); - topLevels.put(visit.getOwnerUUID(), (double) visit.getVoters().size()); - } - - return LeaderHeadsAPI.sortMap(topLevels); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/Chunk.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/Chunk.java deleted file mode 100644 index 1780be17..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/Chunk.java +++ /dev/null @@ -1,157 +0,0 @@ -package me.goodandevil.skyblock.levelling; - -import java.io.File; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -import me.goodandevil.skyblock.utils.version.NMSUtil; -import net.md_5.bungee.api.ChatMessageType; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.ChunkSnapshot; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.configuration.file.FileConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandWorld; -import org.bukkit.entity.Player; - -public class Chunk { - - private static final int MAX_CHUNKS = 150; - private final SkyBlock skyblock; - private Island island; - - private int initialNumberOfChunks = -1; - private Set chunkPositions = new HashSet<>(); - private Set chunkSnapshots = new HashSet<>(); - private boolean isReady = false; - private boolean isFinished = false; - - public Chunk(SkyBlock skyblock, Island island) { - this.skyblock = skyblock; - this.island = island; - } - - public void prepareInitial() { - Bukkit.getScheduler().runTask(this.skyblock, () -> { - FileConfiguration config = this.skyblock.getFileManager().getConfig(new File(this.skyblock.getDataFolder(), "config.yml")).getFileConfiguration(); - FileConfiguration islandData = this.skyblock.getFileManager().getConfig(new File(new File(this.skyblock.getDataFolder().toString() + "/island-data"), this.island.getOwnerUUID().toString() + ".yml")).getFileConfiguration(); - - boolean hasNether = config.getBoolean("Island.World.Nether.Enable") && islandData.getBoolean("Unlocked.Nether", false); - boolean hasEnd = config.getBoolean("Island.World.End.Enable") && islandData.getBoolean("Unlocked.End", false); - - for (IslandWorld islandWorld : IslandWorld.getIslandWorlds()) { - if (islandWorld == IslandWorld.Normal || (islandWorld == IslandWorld.Nether && hasNether) || (islandWorld == IslandWorld.End && hasEnd)) { - this.getChunksToScan(islandWorld); - } - } - - this.initialNumberOfChunks = this.chunkPositions.size(); - - this.prepareNextChunkSnapshots(); - }); - } - - public boolean isReadyToScan() { - return this.isReady; - } - - public Set getAvailableChunkSnapshots() { - this.isReady = false; - return this.chunkSnapshots; - } - - public boolean isFinished() { - return this.isFinished; - } - - public void prepareNextChunkSnapshots() { - boolean isWildStackerEnabled = Bukkit.getPluginManager().isPluginEnabled("WildStacker"); - - Bukkit.getScheduler().runTask(this.skyblock, () -> { - this.chunkSnapshots.clear(); - - Iterator it = this.chunkPositions.iterator(); - if (!it.hasNext()) { - this.isReady = true; - this.isFinished = true; - this.sendFinishedMessage(); - return; - } - - int percentComplete = (int)((1 - ((double)this.chunkPositions.size() / this.initialNumberOfChunks)) * 100); - this.sendPercentMessage(percentComplete); - - while (it.hasNext() && this.chunkSnapshots.size() < MAX_CHUNKS) { - ChunkPosition chunkPosition = it.next(); - World world = chunkPosition.getWorld(); - int x = chunkPosition.getX(); - int z = chunkPosition.getZ(); - - // Try to load the chunk, but don't generate anything and ignore if we couldn't get it - if (world.isChunkLoaded(x, z) || world.loadChunk(x, z, false)) { - org.bukkit.Chunk chunk = world.getChunkAt(x, z); - ChunkSnapshot chunkSnapshot = chunk.getChunkSnapshot(); - if (isWildStackerEnabled) { - this.chunkSnapshots.add(new WildStackerChunkSnapshotWrapper(chunkSnapshot, com.bgsoftware.wildstacker.api.WildStackerAPI.getWildStacker().getSystemManager().getStackedSnapshot(chunk, true))); - } else { - this.chunkSnapshots.add(new ChunkSnapshotWrapper(chunkSnapshot)); - } - } - it.remove(); - } - - this.isReady = true; - }); - } - - private void sendPercentMessage(int percent) { - if (NMSUtil.getVersionNumber() > 8) { - String message = ChatColor.translateAlternateColorCodes('&', - this.skyblock.getFileManager() - .getConfig(new File(this.skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Command.Island.Level.Scanning.Progress.Message") - .replace("%percent", String.valueOf(percent))); - for (Player player : this.skyblock.getIslandManager().getPlayersAtIsland(this.island)) { - player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); - } - } - } - - private void sendFinishedMessage() { - if (NMSUtil.getVersionNumber() > 8) { - String message = ChatColor.translateAlternateColorCodes('&', this.skyblock.getFileManager() - .getConfig(new File(this.skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Command.Island.Level.Scanning.Finished.Message")); - for (Player player : this.skyblock.getIslandManager().getPlayersAtIsland(this.island)) { - player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); - } - } - } - - private void getChunksToScan(IslandWorld islandWorld) { - Location islandLocation = this.island.getLocation(islandWorld, IslandEnvironment.Island); - World world = islandLocation.getWorld(); - - Location minLocation = new Location(world, islandLocation.getBlockX() - this.island.getRadius(), 0, islandLocation.getBlockZ() - this.island.getRadius()); - Location maxLocation = new Location(world, islandLocation.getBlockX() + this.island.getRadius(), world.getMaxHeight(), islandLocation.getBlockZ() + this.island.getRadius()); - - int minX = Math.min(maxLocation.getBlockX(), minLocation.getBlockX()); - int minZ = Math.min(maxLocation.getBlockZ(), minLocation.getBlockZ()); - - int maxX = Math.max(maxLocation.getBlockX(), minLocation.getBlockX()); - int maxZ = Math.max(maxLocation.getBlockZ(), minLocation.getBlockZ()); - - for (int x = minX; x < maxX + 16; x += 16) { - for (int z = minZ; z < maxZ + 16; z += 16) { - this.chunkPositions.add(new ChunkPosition(world, x >> 4, z >> 4)); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevellingMaterial.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevellingMaterial.java deleted file mode 100644 index 813742f7..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/levelling/LevellingMaterial.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.goodandevil.skyblock.levelling; - -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.utils.version.Materials; - -public class LevellingMaterial { - - private Materials materials; - private long points; - - public LevellingMaterial(Materials materials, long points) { - this.materials = materials; - this.points = points; - } - - public Materials getMaterials() { - return materials; - } - - public void setPoints(long points) { - this.points = points; - } - - public long getPoints() { - return points; - } - - public ItemStack getItemStack() { - return materials.parseItem(); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Bucket.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Bucket.java deleted file mode 100644 index ee974752..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Bucket.java +++ /dev/null @@ -1,88 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerBucketEmptyEvent; -import org.bukkit.event.player.PlayerBucketFillEvent; - -import java.io.File; - -public class Bucket implements Listener { - - private final SkyBlock skyblock; - - public Bucket(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onPlayerBucketFill(PlayerBucketFillEvent event) { - Player player = event.getPlayer(); - org.bukkit.block.Block block = event.getBlockClicked(); - - if (event.getBlockClicked().getType() == Material.WATER - || event.getBlockClicked().getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() - || event.getBlockClicked().getType() == Material.LAVA - || event.getBlockClicked().getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial()) { - if (skyblock.getWorldManager().isIslandWorld(block.getWorld())) { - if (!skyblock.getIslandManager().hasPermission(player, block.getLocation(), "Bucket")) { - event.setCancelled(true); - - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - } - } - - @EventHandler - public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { - Player player = event.getPlayer(); - org.bukkit.block.Block block = event.getBlockClicked().getRelative(event.getBlockFace()); - - if (skyblock.getWorldManager().isIslandWorld(block.getWorld())) { - if (!skyblock.getIslandManager().hasPermission(player, block.getLocation(), "Bucket")) { - event.setCancelled(true); - - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - WorldManager worldManager = skyblock.getWorldManager(); - IslandManager islandManager = skyblock.getIslandManager(); - - if (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Spawn.Protection")) - return; - - Island island = islandManager.getIslandAtLocation(block.getLocation()); - if (island == null) - return; - - // Check spawn block protection - IslandWorld world = worldManager.getIslandWorld(block.getWorld()); - if (LocationUtil.isLocationAffectingIslandSpawn(block.getLocation(), island, world)) { - event.setCancelled(true); - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.SpawnProtection.Place.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Chat.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Chat.java deleted file mode 100644 index 8264db2d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Chat.java +++ /dev/null @@ -1,104 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; -import java.util.UUID; - -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerChatEvent; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.player.PlayerIslandChatEvent; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.PlaceholderManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; - -public class Chat implements Listener { - - private final SkyBlock skyblock; - - public Chat(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onAsyncPlayerChat(AsyncPlayerChatEvent event) { - Player player = event.getPlayer(); - - PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = null; - - if (playerData.getOwner() != null) { - island = skyblock.getIslandManager().getIsland(player); - } - - String messageFormat = event.getFormat(); - - for (String placeholderList : placeholderManager.getPlaceholders()) { - String placeholder = "{" + placeholderList + "}"; - - if (messageFormat.contains(placeholder)) { - messageFormat = messageFormat.replace(placeholder, - placeholderManager.getPlaceholder(player, placeholderList)); - } - } - - event.setFormat(messageFormat); - - if (playerData.isChat()) { - event.setCancelled(true); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - String islandRole = ""; - - if (island.hasRole(IslandRole.Member, player.getUniqueId())) { - islandRole = configLoad.getString("Island.Chat.Format.Role.Member"); - } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { - islandRole = configLoad.getString("Island.Chat.Format.Role.Operator"); - } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - islandRole = configLoad.getString("Island.Chat.Format.Role.Owner"); - } - - PlayerIslandChatEvent islandChatEvent = new PlayerIslandChatEvent(player, island.getAPIWrapper(), - event.getMessage(), configLoad.getString("Island.Chat.Format.Message")); - Bukkit.getServer().getPluginManager().callEvent(islandChatEvent); - - if (!islandChatEvent.isCancelled()) { - for (UUID islandMembersOnlineList : islandManager.getMembersOnline(island)) { - Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); - String message = ChatColor.translateAlternateColorCodes('&', messageManager.replaceMessage(targetPlayer, - islandChatEvent.getFormat().replace("%role", islandRole).replace("%player", player.getName()))) - .replace("%message", islandChatEvent.getMessage()); - targetPlayer.sendMessage(message); - } - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Chat.OutputToConsole")) { - messageManager.sendMessage(Bukkit.getConsoleSender(), islandChatEvent.getFormat().replace("%role", islandRole).replace("%player", player.getName()) - .replace("%message", islandChatEvent.getMessage())); - } - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Death.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Death.java deleted file mode 100644 index 1825204a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Death.java +++ /dev/null @@ -1,61 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.PlayerDeathEvent; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.IslandRole; - -public class Death implements Listener { - - private final SkyBlock skyblock; - - public Death(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onPlayerDeath(PlayerDeathEvent event) { - Player player = event.getEntity(); - - if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - boolean keepInventory = false; - - if (configLoad.getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { - if (skyblock.getIslandManager().hasSetting(player.getLocation(), IslandRole.Owner, - "KeepItemsOnDeath")) { - keepInventory = true; - } - } else if (configLoad.getBoolean("Island.KeepItemsOnDeath.Enable")) { - keepInventory = true; - } else { - keepInventory = false; - } - - if (keepInventory) { - event.setKeepInventory(true); - event.getDrops().clear(); - event.setKeepLevel(true); - event.setDroppedExp(0); - } - - if (configLoad.getBoolean("Island.Death.AutoRespawn")) { - Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> { - player.spigot().respawn(); - player.setFallDistance(0.0F); - player.setFireTicks(0); - }, 1L); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Food.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Food.java deleted file mode 100644 index caf3c724..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Food.java +++ /dev/null @@ -1,33 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.FoodLevelChangeEvent; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.IslandRole; - -public class Food implements Listener { - - private final SkyBlock skyblock; - - public Food(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onFoodLevelChange(FoodLevelChangeEvent event) { - Player player = (Player) event.getEntity(); - - if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { - if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable") - && !skyblock.getIslandManager().hasSetting(player.getLocation(), IslandRole.Owner, "Hunger")) { - event.setCancelled(true); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Interact.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Interact.java deleted file mode 100644 index dda91f15..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Interact.java +++ /dev/null @@ -1,1016 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; -import java.util.Set; - -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.limit.LimitManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import org.apache.commons.lang3.text.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Beacon; -import org.bukkit.block.CreatureSpawner; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Horse; -import org.bukkit.entity.Player; -import org.bukkit.entity.minecart.StorageMinecart; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.player.PlayerArmorStandManipulateEvent; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.vehicle.VehicleDamageEvent; -import org.bukkit.event.vehicle.VehicleDestroyEvent; -import org.bukkit.inventory.EquipmentSlot; -import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.stackable.Stackable; -import me.goodandevil.skyblock.stackable.StackableManager; -import me.goodandevil.skyblock.utils.item.InventoryUtil; -import me.goodandevil.skyblock.utils.structure.StructureUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.material.Cauldron; - -public class Interact implements Listener { - - private final SkyBlock skyblock; - - public Interact(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @SuppressWarnings("deprecation") - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onPlayerInteract(PlayerInteractEvent event) { - Player player = event.getPlayer(); - org.bukkit.block.Block block = event.getClickedBlock(); - - if (block != null && !skyblock.getWorldManager().isIslandWorld(block.getWorld())) { - return; - } - - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - StackableManager stackableManager = skyblock.getStackableManager(); - LevellingManager levellingManager = skyblock.getLevellingManager(); - - Island island = islandManager.getIslandAtLocation(player.getLocation()); - if (island == null) { - event.setCancelled(true); - return; - } - - if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_BLOCK) { - if (block.getType() == Material.DRAGON_EGG) { - if (!islandManager.hasPermission(player, block.getLocation(), "DragonEggUse")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getState() instanceof Beacon) { // ChunkCollectors support - if (!islandManager.hasPermission(player, block.getLocation(), "Beacon")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getState() instanceof InventoryHolder || block.getState() instanceof CreatureSpawner) { // EpicHoppers/EpicSpawners support - if (!islandManager.hasPermission(player, block.getLocation(), "Storage")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.CAULDRON) { // WildStacker stackables - if (!islandManager.hasPermission(player, block.getLocation(), "Place") || !islandManager.hasPermission(player, block.getLocation(), "Destroy")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - } - - if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_AIR) { - if (event.getItem() != null && event.getItem().getType() == Material.EGG) { - if (!skyblock.getIslandManager().hasPermission(player, "Projectile")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - } - - if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (stackableManager != null - && stackableManager.getStackableMaterials().contains(event.getMaterial()) - && event.getClickedBlock().getType() == event.getMaterial() - && !player.isSneaking() && islandManager.hasPermission(player, block.getLocation(), "Place") - && (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Stackable.RequirePermission") || player.hasPermission("fabledskyblock.stackable"))) { - if (NMSUtil.getVersionNumber() > 8) { - if (event.getHand() == EquipmentSlot.OFF_HAND) return; - } - - if (levellingManager.isIslandLevelBeingScanned(island)) { - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Command.Island.Level.Scanning.BlockPlacing.Message")); - event.setCancelled(true); - return; - } - - LimitManager limitManager = skyblock.getLimitManager(); - if (limitManager.isBlockLimitExceeded(player, block)) { - Materials material = Materials.getMaterials(block.getType(), block.getData()); - - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Limit.Block.Exceeded.Message") - .replace("%type", WordUtils.capitalizeFully(material.name().replace("_", " "))) - .replace("%limit", NumberUtil.formatNumber(limitManager.getBlockLimit(player, block)))); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setCancelled(true); - return; - } - - Location location = event.getClickedBlock().getLocation(); - if (stackableManager.isStacked(location)) { - Stackable stackable = stackableManager.getStack(location, event.getMaterial()); - if (stackable != null) - stackable.addOne(); - } else { - stackableManager.addStack(new Stackable(location, event.getMaterial())); - } - event.setCancelled(true); - InventoryUtil.takeItem(player, 1); - - FileManager.Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - if (!configLoad.getBoolean("Island.Block.Level.Enable")) return; - - Materials materials = Materials.getMaterials(block.getType(), block.getData()); - - if (materials == null) return; - long materialAmount = 0; - IslandLevel level = island.getLevel(); - - if (level.hasMaterial(materials.name())) { - materialAmount = level.getMaterialAmount(materials.name()); - } - - level.setMaterialAmount(materials.name(), materialAmount + 1); - return; - } - - if (event.getItem() != null && event.getItem().getType() == Materials.BONE_MEAL.parseMaterial() && !islandManager.hasPermission(player, block.getLocation(), "Place")) { - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - event.setCancelled(true); - return; - } - - if (block.getType() == Materials.SWEET_BERRY_BUSH.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Destroy")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.ANVIL) { - if (!islandManager.hasPermission(player, block.getLocation(), "Anvil")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Materials.LEGACY_BED_BLOCK.parseMaterial() - || block.getType() == Materials.WHITE_BED.parseMaterial() - || block.getType() == Materials.ORANGE_BED.parseMaterial() - || block.getType() == Materials.MAGENTA_BED.parseMaterial() - || block.getType() == Materials.LIGHT_BLUE_BED.parseMaterial() - || block.getType() == Materials.YELLOW_BED.parseMaterial() - || block.getType() == Materials.LIME_BED.parseMaterial() - || block.getType() == Materials.PINK_BED.parseMaterial() - || block.getType() == Materials.GRAY_BED.parseMaterial() - || block.getType() == Materials.LIGHT_GRAY_BED.parseMaterial() - || block.getType() == Materials.CYAN_BED.parseMaterial() - || block.getType() == Materials.CYAN_BED.parseMaterial() - || block.getType() == Materials.PURPLE_BED.parseMaterial() - || block.getType() == Materials.BLUE_BED.parseMaterial() - || block.getType() == Materials.BROWN_BED.parseMaterial() - || block.getType() == Materials.GREEN_BED.parseMaterial() - || block.getType() == Materials.RED_BED.parseMaterial() - || block.getType() == Materials.BLACK_BED.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Bed")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.BREWING_STAND) { - if (!islandManager.hasPermission(player, block.getLocation(), "Brewing")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.CHEST || block.getType() == Material.TRAPPED_CHEST - || (NMSUtil.getVersionNumber() > 9 - && (block.getType() == Materials.SHULKER_BOX.parseMaterial() - || block.getType() == Materials.BLACK_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.BLUE_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.BROWN_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.CYAN_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.GRAY_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.GREEN_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.LIGHT_BLUE_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.LIGHT_GRAY_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.LIME_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.MAGENTA_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.ORANGE_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.PINK_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.PURPLE_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.RED_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.WHITE_SHULKER_BOX.parseMaterial() - || block.getType() == Materials.YELLOW_SHULKER_BOX.parseMaterial()))) { - if (!islandManager.hasPermission(player, block.getLocation(), "Storage")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Materials.CRAFTING_TABLE.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Workbench")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.BIRCH_DOOR || block.getType() == Material.ACACIA_DOOR - || block.getType() == Material.DARK_OAK_DOOR || block.getType() == Material.JUNGLE_DOOR - || block.getType() == Material.SPRUCE_DOOR - || block.getType() == Materials.LEGACY_WOODEN_DOOR.parseMaterial() - || block.getType() == Materials.OAK_DOOR.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Door")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Materials.ENCHANTING_TABLE.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Enchant")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.FURNACE - || block.getType() == Materials.LEGACY_BURNING_FURNACE.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Furnace")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.STONE_BUTTON - || block.getType() == Materials.OAK_BUTTON.parseMaterial() - || block.getType() == Materials.SPRUCE_BUTTON.parseMaterial() - || block.getType() == Materials.BIRCH_BUTTON.parseMaterial() - || block.getType() == Materials.JUNGLE_BUTTON.parseMaterial() - || block.getType() == Materials.ACACIA_BUTTON.parseMaterial() - || block.getType() == Materials.DARK_OAK_BUTTON.parseMaterial() - || block.getType() == Materials.LEVER.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "LeverButton")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.JUKEBOX) { - if (!islandManager.hasPermission(player, block.getLocation(), "Jukebox")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Materials.OAK_TRAPDOOR.parseMaterial() - || block.getType() == Materials.SPRUCE_TRAPDOOR.parseMaterial() - || block.getType() == Materials.BIRCH_TRAPDOOR.parseMaterial() - || block.getType() == Materials.JUNGLE_TRAPDOOR.parseMaterial() - || block.getType() == Materials.ACACIA_TRAPDOOR.parseMaterial() - || block.getType() == Materials.DARK_OAK_TRAPDOOR.parseMaterial() - || block.getType() == Material.NOTE_BLOCK - || block.getType() == Material.HOPPER - || block.getType() == Materials.COMPARATOR.parseMaterial() - || block.getType() == Materials.LEGACY_REDSTONE_COMPARATOR_OFF.parseMaterial() - || block.getType() == Materials.LEGACY_REDSTONE_COMPARATOR_ON.parseMaterial() - || block.getType() == Materials.REPEATER.parseMaterial() - || block.getType() == Materials.LEGACY_DIODE_BLOCK_OFF.parseMaterial() - || block.getType() == Materials.LEGACY_DIODE_BLOCK_ON.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Redstone")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Materials.OAK_FENCE_GATE.parseMaterial() - || block.getType() == Material.ACACIA_FENCE_GATE || block.getType() == Material.BIRCH_FENCE_GATE - || block.getType() == Material.DARK_OAK_FENCE_GATE || block.getType() == Material.JUNGLE_FENCE_GATE - || block.getType() == Material.SPRUCE_FENCE_GATE) { - if (!islandManager.hasPermission(player, block.getLocation(), "Gate")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.DROPPER || block.getType() == Material.DISPENSER) { - if (!islandManager.hasPermission(player, block.getLocation(), "DropperDispenser")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.TNT) { - if (!islandManager.hasPermission(player, block.getLocation(), "Destroy")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Materials.LEGACY_CAKE_BLOCK.getPostMaterial()) { - if (player.getFoodLevel() < 20 && !islandManager.hasPermission(player, block.getLocation(), "Cake")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (block.getType() == Material.HOPPER) { - if (!islandManager.hasPermission(player, block.getLocation(), "Hopper")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if ((player.getGameMode() == GameMode.SURVIVAL) && (block.getType() == Material.OBSIDIAN) - && (event.getItem() != null) && (event.getItem().getType() != Material.AIR) - && (event.getItem().getType() == Material.BUCKET)) { - if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Block.Obsidian.Enable") - && islandManager.hasPermission(player, block.getLocation(), "Bucket")) { - int NMSVersion = NMSUtil.getVersionNumber(); - boolean isInventoryFull = false; - - if (NMSVersion > 8) { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 5, 1, Material.BUCKET); - } else { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 0, 1, Material.BUCKET); - } - - soundManager.playSound(block.getLocation(), Sounds.FIZZ.bukkitSound(), 1.0F, 1.0F); - - InventoryUtil.removeItem(player.getInventory(), 1, false, Material.BUCKET); - block.setType(Material.AIR); - - if (isInventoryFull) { - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(Material.LAVA_BUCKET)); - } else { - if (NMSVersion > 8) { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 5, 1, - Material.LAVA_BUCKET); - } else { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 0, 1, - Material.LAVA_BUCKET); - } - - if (isInventoryFull) { - player.getWorld().dropItemNaturally(player.getLocation(), - new ItemStack(Material.LAVA_BUCKET)); - } else { - player.getInventory().addItem(new ItemStack(Material.LAVA_BUCKET)); - } - } - - event.setCancelled(true); - - return; - } - } else if (block.getType() == Materials.END_PORTAL_FRAME.parseMaterial()) { - if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Block.EndFrame.Enable") - && islandManager.hasPermission(player, block.getLocation(), "Destroy")) { - - if (NMSUtil.getVersionNumber() > 8 && event.getHand() == EquipmentSlot.OFF_HAND) - return; - - if (Bukkit.getPluginManager().isPluginEnabled("EpicAnchors")) { - if (com.songoda.epicanchors.EpicAnchorsPlugin.getInstance().getAnchorManager().getAnchor(block.getLocation()) != null) { - event.setCancelled(true); - return; - } - } - - ItemStack is = event.getPlayer().getItemInHand(); - - if (is == null || is.getType() == Material.AIR) { - if (stackableManager != null && stackableManager.isStacked(block.getLocation())) { - Stackable stackable = stackableManager.getStack(block.getLocation(), Materials.END_PORTAL_FRAME.parseMaterial()); - stackable.takeOne(); - - if (stackable.getSize() <= 1) { - stackableManager.removeStack(stackable); - } - } else { - block.setType(Material.AIR); - } - - player.getInventory().addItem(new ItemStack(Materials.END_PORTAL_FRAME.parseMaterial(), 1)); - player.updateInventory(); - - FileManager.Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getBoolean("Island.Block.Level.Enable")) { - Materials materials = Materials.END_PORTAL_FRAME; - IslandLevel level = island.getLevel(); - - if (level.hasMaterial(materials.name())) { - long materialAmount = level.getMaterialAmount(materials.name()); - - if (materialAmount - 1 <= 0) { - level.removeMaterial(materials.name()); - } else { - level.setMaterialAmount(materials.name(), materialAmount - 1); - } - } - } - - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 10.0F, 10.0F); - - event.setCancelled(true); - return; - } - } - } - - if ((event.getItem() != null) && (event.getItem().getType() != Material.AIR) && !event.isCancelled()) { - if (event.getItem().getType() == Material.BUCKET || event.getItem().getType() == Material.WATER_BUCKET - || event.getItem().getType() == Material.LAVA_BUCKET) { - if (!islandManager.hasPermission(player, block.getLocation(), "Bucket")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - player.updateInventory(); - } - } else if (event.getItem().getType() == Material.GLASS_BOTTLE) { - if (block.getType() == Material.WATER - || block.getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() - || block.getType() == Material.CAULDRON) { - if (!islandManager.hasPermission(player, block.getLocation(), "WaterCollection")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - player.updateInventory(); - } - } - } else if (event.getItem().getType().name().contains("SPAWN_EGG") || event.getItem().getType().name().equals("MONSTER_EGG")) { - if (!islandManager.hasPermission(player, block.getLocation(), "SpawnEgg")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - player.updateInventory(); - } - } else if (event.getItem().getType() == Material.ARMOR_STAND) { - if (!islandManager.hasPermission(player, block.getLocation(), "EntityPlacement")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - player.updateInventory(); - } - } - } - } else if (event.getAction() == Action.LEFT_CLICK_BLOCK) { - // Note: Cast is necessary as it is ambiguous without it in 1.8 - if (player.getTargetBlock((Set) null, 5).getType() == Material.FIRE) { - if (!islandManager.hasPermission(player, block.getLocation(), "Fire")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - } else if (event.getAction() == Action.PHYSICAL) { - if (block.getType() == Materials.TURTLE_EGG.parseMaterial()) { - event.setCancelled(true); - } else if (block.getType() == Materials.FARMLAND.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "Crop")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } else if (block.getType() == Materials.STONE_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.OAK_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.SPRUCE_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.BIRCH_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.JUNGLE_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.ACACIA_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.DARK_OAK_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.LIGHT_WEIGHTED_PRESSURE_PLATE.parseMaterial() - || block.getType() == Materials.HEAVY_WEIGHTED_PRESSURE_PLATE.parseMaterial()) { - if (!islandManager.hasPermission(player, block.getLocation(), "PressurePlate")) { - event.setCancelled(true); - } - } else if (block.getType() == Material.TRIPWIRE) { - if (!islandManager.hasPermission(player, block.getLocation(), "Redstone")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - } - } - - @EventHandler - public void onPlayerInteractStructure(PlayerInteractEvent event) { - Player player = event.getPlayer(); - - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - if (event.getItem() != null) { - try { - if (event.getAction() == Action.LEFT_CLICK_BLOCK) { - ItemStack structureTool = StructureUtil.getTool(); - - if ((event.getItem().getType() == structureTool.getType()) && (event.getItem().hasItemMeta()) - && (event.getItem().getItemMeta().getDisplayName() - .equals(structureTool.getItemMeta().getDisplayName()))) { - if (player.hasPermission("fabledskyblock.admin.structure.selection") - || player.hasPermission("fabledskyblock.admin.structure.*") - || player.hasPermission("fabledskyblock.admin.*") || player.hasPermission("fabledskyblock.*")) { - event.setCancelled(true); - - skyblock.getPlayerDataManager().getPlayerData(player).getArea().setPosition(1, - event.getClickedBlock().getLocation()); - - messageManager.sendMessage(player, - skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Structure.Tool.Position.Message") - .replace("%position", "1")); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - } - } - } else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { - ItemStack structureTool = StructureUtil.getTool(); - - if ((event.getItem().getType() == structureTool.getType()) && (event.getItem().hasItemMeta()) - && (event.getItem().getItemMeta().getDisplayName() - .equals(structureTool.getItemMeta().getDisplayName()))) { - if (player.hasPermission("fabledskyblock.admin.structure.selection") - || player.hasPermission("fabledskyblock.admin.structure.*") - || player.hasPermission("fabledskyblock.admin.*") || player.hasPermission("fabledskyblock.*")) { - event.setCancelled(true); - - skyblock.getPlayerDataManager().getPlayerData(player).getArea().setPosition(2, - event.getClickedBlock().getLocation()); - - messageManager.sendMessage(player, - skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Structure.Tool.Position.Message") - .replace("%position", "2")); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - } - } - } - } catch (Exception e) { - } - } - } - - @SuppressWarnings("deprecation") - @EventHandler - public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { - Player player = event.getPlayer(); - org.bukkit.entity.Entity entity = event.getRightClicked(); - - ItemStack is = player.getItemInHand(); - - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - if (skyblock.getWorldManager().isIslandWorld(entity.getWorld())) { - if ((is != null) && (is.getType() != Material.AIR)) { - if (is.getType() == Materials.LEAD.parseMaterial()) { - if (!islandManager.hasPermission(player, entity.getLocation(), "Leash")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - } - - if (entity.getType() == EntityType.HORSE || entity.getType() == EntityType.PIG) { - if (entity.getType() == EntityType.HORSE) { - Horse horse = (Horse) event.getRightClicked(); - - if (horse.getInventory().getSaddle() != null && player.isSneaking()) { - if (!islandManager.hasPermission(player, horse.getLocation(), "HorseInventory")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else { - if (!islandManager.hasPermission(player, horse.getLocation(), "MobRiding")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - } else if (entity.getType() == EntityType.PIG) { - if (!islandManager.hasPermission(player, entity.getLocation(), "MobRiding")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - } - else if (entity.getType().equals(EntityType.SHEEP)) { - if (!islandManager.hasPermission(player, entity.getLocation(), "EntityPlacement")) { - event.setCancelled(true); - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - else if (entity.getType().equals(EntityType.ITEM_FRAME)){ - if (!skyblock.getIslandManager().hasPermission(player, entity.getLocation(), "Storage")) { - event.setCancelled(true); - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - else if (entity.getType() == EntityType.COW || entity.getType() == EntityType.MUSHROOM_COW) { - if (is.getType() == Material.BUCKET) { - if (!islandManager.hasPermission(player, entity.getLocation(), "Milking")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - } else if (entity.getType() == EntityType.VILLAGER) { - if (!islandManager.hasPermission(player, entity.getLocation(), "Trading")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if(entity instanceof StorageMinecart){ - if (!islandManager.hasPermission(player, entity.getLocation(), "Storage")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (entity.getType() == EntityType.MINECART || entity.getType() == EntityType.BOAT) { - if (!islandManager.hasPermission(player, entity.getLocation(), "MinecartBoat")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } else if (entity.getType() == EntityType.MINECART_HOPPER) { - if (!islandManager.hasPermission(player, entity.getLocation(), "Hopper")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - - if (entity.getType() == EntityType.HORSE) { - if (!(is.getType() == Material.GOLDEN_APPLE || is.getType() == Material.GOLDEN_CARROT - || is.getType() == Material.SUGAR || is.getType() == Material.WHEAT - || is.getType() == Material.APPLE || is.getType() == Material.HAY_BLOCK)) { - return; - } - } else if (entity.getType() == EntityType.SHEEP || entity.getType() == EntityType.COW - || entity.getType() == EntityType.MUSHROOM_COW) { - if (!(is.getType() == Material.WHEAT)) { - return; - } - } else if (entity.getType() == EntityType.PIG) { - if (!(is.getType() == Materials.CARROT.parseMaterial() - || is.getType() == Materials.POTATO.parseMaterial())) { - return; - } - } else if (entity.getType() == EntityType.CHICKEN) { - if (!(is.getType() == Materials.WHEAT_SEEDS.parseMaterial() || is.getType() == Material.PUMPKIN_SEEDS - || is.getType() == Material.MELON_SEEDS)) { - if (NMSUtil.getVersionNumber() > 8) { - if (!(is.getType() == Materials.BEETROOT_SEEDS.parseMaterial())) { - return; - } - } else { - return; - } - } - } else if (entity.getType() == EntityType.WOLF) { - if (!(is.getType() == Material.BONE || is.getType() == Materials.PORKCHOP.parseMaterial() - || is.getType() == Materials.BEEF.parseMaterial() - || is.getType() == Materials.CHICKEN.parseMaterial() || is.getType() == Material.RABBIT - || is.getType() == Material.MUTTON || is.getType() == Material.ROTTEN_FLESH - || is.getType() == Materials.COOKED_PORKCHOP.parseMaterial() - || is.getType() == Material.COOKED_BEEF || is.getType() == Material.COOKED_CHICKEN - || is.getType() == Material.COOKED_RABBIT || is.getType() == Material.COOKED_MUTTON)) { - return; - } - } else if (entity.getType() == EntityType.OCELOT) { - if (!(is.getType() == Materials.COD.parseMaterial() || is.getType() == Materials.SALMON.parseMaterial() - || is.getType() == Materials.TROPICAL_FISH.parseMaterial() - || is.getType() == Materials.PUFFERFISH.parseMaterial())) { - return; - } - } else if (entity.getType() == EntityType.RABBIT) { - if (!(is.getType() == Materials.DANDELION.parseMaterial() - || is.getType() == Materials.CARROTS.parseMaterial() - || is.getType() == Material.GOLDEN_CARROT)) { - return; - } - } else { - int NMSVersion = NMSUtil.getVersionNumber(); - - if (NMSVersion > 10) { - if (entity.getType() == EntityType.LLAMA) { - if (!(is.getType() == Materials.HAY_BLOCK.parseMaterial())) { - return; - } - } else if (NMSVersion > 12) { - if (entity.getType() == EntityType.TURTLE) { - if (!(is.getType() == Materials.SEAGRASS.parseMaterial())) { - return; - } - } else { - return; - } - } else { - return; - } - } else { - return; - } - } - - if (!islandManager.hasPermission(player, entity.getLocation(), "AnimalBreeding")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - } - - @EventHandler - public void onPlayerDamageVehicle(VehicleDamageEvent event){ - if(!(event.getAttacker() instanceof Player)) - return; - - Player player = (Player) event.getAttacker(); - - if (!skyblock.getIslandManager().hasPermission(player, event.getVehicle().getLocation(), "MobHurting")) { - event.setCancelled(true); - - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - @EventHandler - public void onPlayerDestroyVehicle(VehicleDestroyEvent event){ - if(!(event.getAttacker() instanceof Player)) - return; - - Player player = (Player) event.getAttacker(); - - if (!skyblock.getIslandManager().hasPermission(player, event.getVehicle().getLocation(), "MobHurting")) { - event.setCancelled(true); - - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - - @EventHandler(ignoreCancelled = true) - public void onPlayerArmorStandManipulate(PlayerArmorStandManipulateEvent event) { - if (skyblock.getStackableManager() != null && skyblock.getStackableManager().isStacked(event.getRightClicked().getLocation().getBlock().getLocation())) { - event.setCancelled(true); - } - } - - - @EventHandler - public void onPlayerInteractAtEntity(PlayerInteractEntityEvent event) { - Player player = event.getPlayer(); - org.bukkit.entity.Entity entity = event.getRightClicked(); - - if (!skyblock.getWorldManager().isIslandWorld(entity.getWorld())) - return; - - if (entity instanceof ArmorStand){ - if (!skyblock.getIslandManager().hasPermission(player, entity.getLocation(), "ArmorStandUse")) { - event.setCancelled(true); - - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Inventory.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Inventory.java deleted file mode 100644 index 82643544..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Inventory.java +++ /dev/null @@ -1,41 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryOpenEvent; -import org.bukkit.inventory.HorseInventory; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Inventory implements Listener { - - private final SkyBlock skyblock; - - public Inventory(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onInventoryOpen(InventoryOpenEvent event) { - Player player = (Player) event.getPlayer(); - - if (!(event.getInventory() instanceof HorseInventory)) { - return; - } - - if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { - if (!skyblock.getIslandManager().hasPermission(player, "HorseInventory")) { - event.setCancelled(true); - - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Item.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Item.java deleted file mode 100644 index e691dc0f..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Item.java +++ /dev/null @@ -1,41 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerDropItemEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; - -import me.goodandevil.skyblock.SkyBlock; - -@SuppressWarnings("deprecation") -public class Item implements Listener { - - private final SkyBlock skyblock; - - public Item(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onPlayerDropItem(PlayerDropItemEvent event) { - Player player = event.getPlayer(); - - if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { - if (!skyblock.getIslandManager().hasPermission(player, "ItemDrop")) { - event.setCancelled(true); - } - } - } - - @EventHandler - public void onPlayerPickupItem(PlayerPickupItemEvent event) { - Player player = event.getPlayer(); - - if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { - if (!skyblock.getIslandManager().hasPermission(player, "ItemPickup")) { - event.setCancelled(true); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Join.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Join.java deleted file mode 100644 index 86c801e8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Join.java +++ /dev/null @@ -1,176 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.OfflinePlayer; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.scoreboard.Scoreboard; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.usercache.UserCacheManager; -import me.goodandevil.skyblock.utils.world.LocationUtil; - -public class Join implements Listener { - - private final SkyBlock skyblock; - - public Join(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) { - Player player = event.getPlayer(); - - ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - UserCacheManager userCacheManager = skyblock.getUserCacheManager(); - CooldownManager cooldownManager = skyblock.getCooldownManager(); - IslandManager islandManager = skyblock.getIslandManager(); - FileManager fileManager = skyblock.getFileManager(); - - userCacheManager.addUser(player.getUniqueId(), player.getName()); - userCacheManager.saveAsync(); - - try { - Island island = islandManager.loadIsland(player); - boolean teleportedToIsland = false; - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getBoolean("Island.Join.Spawn")) { - LocationUtil.teleportPlayerToSpawn(player); - } else if (configLoad.getBoolean("Island.Join.Island") && island != null) { - player.teleport(island.getLocation(IslandWorld.Normal, IslandEnvironment.Main)); - player.setFallDistance(0.0F); - teleportedToIsland = true; - } - - if (!teleportedToIsland) { - islandManager.loadPlayer(player); - } - } catch (Exception e) { - e.printStackTrace(); - } - - playerDataManager.loadPlayerData(player); - - if (playerDataManager.hasPlayerData(player)) { - String[] playerTexture; - - try { - Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player); - Method getProfileMethod = entityPlayer.getClass().getMethod("getProfile", new Class[0]); - GameProfile gameProfile = (GameProfile) getProfileMethod.invoke(entityPlayer); - Property property = gameProfile.getProperties().get("textures").iterator().next(); - playerTexture = new String[] { property.getSignature(), property.getValue() }; - } catch (Exception e) { - playerTexture = new String[] { - "K9P4tCIENYbNpDuEuuY0shs1x7iIvwXi4jUUVsATJfwsAIZGS+9OZ5T2HB0tWBoxRvZNi73Vr+syRdvTLUWPusVXIg+2fhXmQoaNEtnQvQVGQpjdQP0TkZtYG8PbvRxE6Z75ddq+DVx/65OSNHLWIB/D+Rg4vINh4ukXNYttn9QvauDHh1aW7/IkIb1Bc0tLcQyqxZQ3mdglxJfgIerqnlA++Lt7TxaLdag4y1NhdZyd3OhklF5B0+B9zw/qP8QCzsZU7VzJIcds1+wDWKiMUO7+60OSrIwgE9FPamxOQDFoDvz5BOULQEeNx7iFMB+eBYsapCXpZx0zf1bduppBUbbVC9wVhto/J4tc0iNyUq06/esHUUB5MHzdJ0Y6IZJAD/xIw15OLCUH2ntvs8V9/cy5/n8u3JqPUM2zhUGeQ2p9FubUGk4Q928L56l3omRpKV+5QYTrvF+AxFkuj2hcfGQG3VE2iYZO6omXe7nRPpbJlHkMKhE8Xvd1HP4PKpgivSkHBoZ92QEUAmRzZydJkp8CNomQrZJf+MtPiNsl/Q5RQM+8CQThg3+4uWptUfP5dDFWOgTnMdA0nIODyrjpp+bvIJnsohraIKJ7ZDnj4tIp4ObTNKDFC/8j8JHz4VCrtr45mbnzvB2DcK8EIB3JYT7ElJTHnc5BKMyLy5SKzuw=", - "eyJ0aW1lc3RhbXAiOjE1MjkyNTg0MTE4NDksInByb2ZpbGVJZCI6Ijg2NjdiYTcxYjg1YTQwMDRhZjU0NDU3YTk3MzRlZWQ3IiwicHJvZmlsZU5hbWUiOiJTdGV2ZSIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGMxYzc3Y2U4ZTU0OTI1YWI1ODEyNTQ0NmVjNTNiMGNkZDNkMGNhM2RiMjczZWI5MDhkNTQ4Mjc4N2VmNDAxNiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjc2N2Q0ODMyNWVhNTMyNDU2MTQwNmI4YzgyYWJiZDRlMjc1NWYxMTE1M2NkODVhYjA1NDVjYzIifX19" }; - } - - PlayerData playerData = playerDataManager.getPlayerData(player); - playerData.setTexture(playerTexture[0], playerTexture[1]); - playerData.save(); - } else { - playerDataManager.createPlayerData(player); - playerDataManager.loadPlayerData(player); - } - - playerDataManager.storeIsland(player); - - cooldownManager.addCooldownPlayer(CooldownType.Biome, - cooldownManager.loadCooldownPlayer(CooldownType.Biome, player)); - cooldownManager.addCooldownPlayer(CooldownType.Creation, - cooldownManager.loadCooldownPlayer(CooldownType.Creation, player)); - - if (scoreboardManager != null) { - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - Scoreboard scoreboard = new Scoreboard(player); - Island island = islandManager.getIsland(player); - - if (island != null) { - OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); - - cooldownManager.addCooldownPlayer(CooldownType.Levelling, - cooldownManager.loadCooldownPlayer(CooldownType.Levelling, offlinePlayer)); - cooldownManager.addCooldownPlayer(CooldownType.Ownership, - cooldownManager.loadCooldownPlayer(CooldownType.Ownership, offlinePlayer)); - - if (island.getRole(IslandRole.Member).size() == 0 && island.getRole(IslandRole.Operator).size() == 0) { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); - } - } else { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Team.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); - } - - Map displayVariables = new HashMap<>(); - displayVariables.put("%owner", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Owner")); - displayVariables.put("%operator", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Operator")); - displayVariables.put("%member", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Member")); - - scoreboard.setDisplayVariables(displayVariables); - } - } else { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); - scoreboard.setDisplayList( - config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); - } - - scoreboard.run(); - scoreboardManager.storeScoreboard(player, scoreboard); - } - - Island island = islandManager.getIslandPlayerAt(player); - if (island != null) { - islandManager.updateBorder(island); - islandManager.updateFlight(player); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Projectile.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Projectile.java deleted file mode 100644 index 2c9f805d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Projectile.java +++ /dev/null @@ -1,59 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; - -import org.bukkit.entity.FishHook; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.ProjectileLaunchEvent; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Projectile implements Listener { - - private final SkyBlock skyblock; - - public Projectile(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onProjectileLaunch(ProjectileLaunchEvent event) { - if (!(event.getEntity().getShooter() instanceof Player)) { - return; - } - - Player player = (Player) event.getEntity().getShooter(); - - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - if (skyblock.getWorldManager().isIslandWorld(player.getWorld())) { - if (event.getEntity() instanceof FishHook) { - if (!skyblock.getIslandManager().hasPermission(player, "Fishing")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - - return; - } - - if (!skyblock.getIslandManager().hasPermission(player, "Projectile")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Quit.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Quit.java deleted file mode 100644 index 58a2dc4e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Quit.java +++ /dev/null @@ -1,132 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.io.File; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerQuitEvent; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.invite.Invite; -import me.goodandevil.skyblock.invite.InviteManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Quit implements Listener { - - private final SkyBlock skyblock; - - public Quit(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) { - Bukkit.getScheduler().runTaskAsynchronously(skyblock, () -> { - Player player = event.getPlayer(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - CooldownManager cooldownManager = skyblock.getCooldownManager(); - MessageManager messageManager = skyblock.getMessageManager(); - InviteManager inviteManager = skyblock.getInviteManager(); - IslandManager islandManager = skyblock.getIslandManager(); - - PlayerData playerData = playerDataManager.getPlayerData(player); - - try { - playerData.setLastOnline(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date())); - } catch (Exception ignored) { - } - - Island island = islandManager.getIsland(player); - - if (island != null) { - Set islandMembersOnline = islandManager.getMembersOnline(island); - - if (islandMembersOnline.size() == 1) { - OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); - cooldownManager.setCooldownPlayer(CooldownType.Levelling, offlinePlayer); - cooldownManager.removeCooldownPlayer(CooldownType.Levelling, offlinePlayer); - - cooldownManager.setCooldownPlayer(CooldownType.Ownership, offlinePlayer); - cooldownManager.removeCooldownPlayer(CooldownType.Ownership, offlinePlayer); - } else if (islandMembersOnline.size() == 2) { - for (UUID islandMembersOnlineList : islandMembersOnline) { - if (!islandMembersOnlineList.equals(player.getUniqueId())) { - Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); - PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); - - if (targetPlayerData.isChat()) { - targetPlayerData.setChat(false); - messageManager.sendMessage(targetPlayer, - skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration().getString("Island.Chat.Untoggled.Message")); - } - } - } - } - - final Island is = island; - Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> islandManager.unloadIsland(is, player)); - } - - cooldownManager.setCooldownPlayer(CooldownType.Biome, player); - cooldownManager.removeCooldownPlayer(CooldownType.Biome, player); - - cooldownManager.setCooldownPlayer(CooldownType.Creation, player); - cooldownManager.removeCooldownPlayer(CooldownType.Creation, player); - - playerDataManager.savePlayerData(player); - playerDataManager.unloadPlayerData(player); - - if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Coop.Unload")) { - for (Island islandList : islandManager.getCoopIslands(player)) { - islandList.removeCoopPlayer(player.getUniqueId()); - } - } - - if (playerData != null && playerData.getIsland() != null && islandManager.containsIsland(playerData.getIsland())) { - island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(playerData.getIsland())); - - if (!island.hasRole(IslandRole.Member, player.getUniqueId()) - && !island.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island.hasRole(IslandRole.Owner, player.getUniqueId())) { - final Island is = island; - Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> islandManager.unloadIsland(is, null)); - } - } - - if (inviteManager.hasInvite(player.getUniqueId())) { - Invite invite = inviteManager.getInvite(player.getUniqueId()); - Player targetPlayer = Bukkit.getServer().getPlayer(invite.getOwnerUUID()); - - if (targetPlayer != null) { - messageManager.sendMessage(targetPlayer, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration() - .getString("Command.Island.Invite.Invited.Sender.Disconnected.Message") - .replace("%player", player.getName())); - skyblock.getSoundManager().playSound(targetPlayer, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } - - inviteManager.removeInvite(player.getUniqueId()); - } - }); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Respawn.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Respawn.java deleted file mode 100644 index 6ddb110c..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Respawn.java +++ /dev/null @@ -1,78 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.*; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerTeleportEvent; - -import java.io.File; -import java.util.logging.Level; - -public class Respawn implements Listener { - - private final SkyBlock skyblock; - - public Respawn(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onPlayerRespawn(PlayerRespawnEvent event) { - Player player = event.getPlayer(); - - IslandManager islandManager = skyblock.getIslandManager(); - WorldManager worldManager = skyblock.getWorldManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (worldManager.isIslandWorld(player.getWorld())) { - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getBoolean("Island.Death.Respawn.Island")) { - Island island = islandManager.getIslandAtLocation(player.getLocation()); - - if (island != null) { - Location playerLocation = player.getLocation().clone(), islandLocation; - IslandWorld world = worldManager.getIslandWorld(player.getWorld()); - - if (island.hasRole(IslandRole.Member, player.getUniqueId()) - || island.hasRole(IslandRole.Operator, player.getUniqueId()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - islandLocation = island.getLocation(world, IslandEnvironment.Main); - } else { - islandLocation = island.getLocation(world, IslandEnvironment.Visitor); - } - - Bukkit.getServer().getPluginManager() - .callEvent(new PlayerTeleportEvent(player, playerLocation, islandLocation)); - event.setRespawnLocation(islandLocation); - - islandManager.updateFlight(player); - - return; - } - } - - config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); - - if (config.getFileConfiguration().getString("Location.Spawn") == null) { - Bukkit.getServer().getLogger().log(Level.WARNING, "SkyBlock | Error: A spawn point hasn't been set."); - } else { - Location playerLocation = player.getLocation().clone(), - spawnLocation = fileManager.getLocation(config, "Location.Spawn", true); - Bukkit.getServer().getPluginManager() - .callEvent(new PlayerTeleportEvent(player, playerLocation, spawnLocation)); - event.setRespawnLocation(spawnLocation); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Spawner.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Spawner.java deleted file mode 100644 index 2a041a0e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/listeners/Spawner.java +++ /dev/null @@ -1,102 +0,0 @@ -package me.goodandevil.skyblock.listeners; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.util.List; - -import org.bukkit.block.CreatureSpawner; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.SpawnerSpawnEvent; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.upgrade.Upgrade; -import me.goodandevil.skyblock.utils.version.NMSUtil; - -public class Spawner implements Listener { - - private final SkyBlock skyblock; - - public Spawner(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - @EventHandler - public void onSpawnSpawn(SpawnerSpawnEvent event) { - IslandManager islandManager = skyblock.getIslandManager(); - - CreatureSpawner spawner = event.getSpawner(); - org.bukkit.Location location = spawner.getBlock().getLocation(); - - if (skyblock.getWorldManager().isIslandWorld(location.getWorld())) { - Island island = islandManager.getIslandAtLocation(location); - - if (island != null) { - List upgrades = skyblock.getUpgradeManager().getUpgrades(Upgrade.Type.Spawner); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled() - && island.isUpgrade(Upgrade.Type.Spawner)) { - if (NMSUtil.getVersionNumber() > 12) { - if (spawner.getDelay() == 20) { - spawner.setDelay(10); - } - - spawner.setMinSpawnDelay(100); - spawner.setMaxSpawnDelay(400); - } else { - try { - Object MobSpawner = null; - - try { - Field TileEntityMobSpawnerField = spawner.getClass().getDeclaredField("spawner"); - TileEntityMobSpawnerField.setAccessible(true); - Object TileEntityMobSpawner = TileEntityMobSpawnerField.get(spawner); - MobSpawner = TileEntityMobSpawner.getClass().getMethod("getSpawner") - .invoke(TileEntityMobSpawner); - } catch (NoSuchFieldException e) { - Field snapshotField = spawner.getClass().getSuperclass().getDeclaredField("snapshot"); - snapshotField.setAccessible(true); - Object snapshot = snapshotField.get(spawner); - MobSpawner = snapshot.getClass().getMethod("getSpawner").invoke(snapshot); - } - - int spawnDelay = (int) MobSpawner.getClass().getSuperclass().getField("spawnDelay") - .get(MobSpawner); - - if (spawnDelay == 20) { - Field spawnDelayField = MobSpawner.getClass().getSuperclass().getField("spawnDelay"); - spawnDelayField.setAccessible(true); - spawnDelayField.set(MobSpawner, 10); - } - - Field minSpawnDelayField = MobSpawner.getClass().getSuperclass() - .getDeclaredField("minSpawnDelay"); - minSpawnDelayField.setAccessible(true); - int minSpawnDelay = (int) minSpawnDelayField.get(MobSpawner); - - if (minSpawnDelay != 100) { - minSpawnDelayField.set(MobSpawner, 100); - } - - Field maxSpawnDelayField = MobSpawner.getClass().getSuperclass() - .getDeclaredField("maxSpawnDelay"); - maxSpawnDelayField.setAccessible(true); - int maxSpawnDelay = (int) maxSpawnDelayField.get(MobSpawner); - - if (maxSpawnDelay != 400) { - maxSpawnDelayField.set(MobSpawner, 400); - } - } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException - | SecurityException | InvocationTargetException | NoSuchMethodException e) { - e.printStackTrace(); - } - } - } - - return; - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Bans.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Bans.java deleted file mode 100644 index d513a943..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Bans.java +++ /dev/null @@ -1,244 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Bans { - - private static Bans instance; - - public static Bans getInstance() { - if (instance == null) { - instance = new Bans(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = skyblock.getIslandManager().getIsland(player); - - Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = languageConfig.getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData1 = playerDataManager.getPlayerData(player); - Island island1 = islandManager.getIsland(player); - - if (island1 == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Bans.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Banning")) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Bans.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Bans.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Bans.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Bans.Item.Information.Displayname"))))) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - Bukkit.getServer().dispatchCommand(player, - "island ban " + event1.getName()); - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is1 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is1.getItemMeta(); - im.setDisplayName(configLoad.getString("Menu.Bans.Item.Word.Enter")); - is1.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); - gui.open(); - }, 1L); - } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Bans.Item.Nothing.Displayname"))))) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Bans.Item.Previous.Displayname")))) { - playerData1.setPage(playerData1.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Bans.Item.Next.Displayname")))) { - playerData1.setPage(playerData1.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - if ((island1.hasRole(IslandRole.Operator, player.getUniqueId()) - && island1.getSetting(IslandRole.Operator, "Unban").getStatus()) - || island1.hasRole(IslandRole.Owner, player.getUniqueId())) { - String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); - Bukkit.getServer().dispatchCommand(player, "island unban " + playerName); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 3L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Bans.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } - } - }); - - Set islandBans = island.getBan().getBans(); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Bans.Item.Exit.Displayname"), null, null, null, null), 0, 8); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Bans.Item.Information.Displayname"), - configLoad.getStringList("Menu.Bans.Item.Information.Lore"), - new Placeholder[] { new Placeholder("%bans", "" + islandBans.size()) }, null, null), 4); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Bans.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - int playerMenuPage = playerData.getPage(), nextEndIndex = islandBans.size() - playerMenuPage * 36; - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Bans.Item.Previous.Displayname"), null, null, null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Bans.Item.Next.Displayname"), null, null, null, null), 7); - } - - if (islandBans.size() == 0) { - nInv.addItem( - nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Bans.Item.Nothing.Displayname"), null, null, null, null), - 31); - } else { - int index = playerMenuPage * 36 - 36, - endIndex = index >= islandBans.size() ? islandBans.size() - 1 : index + 36, inventorySlot = 17; - - for (; index < endIndex; index++) { - if (islandBans.size() > index) { - inventorySlot++; - - UUID targetPlayerUUID = (UUID) islandBans.toArray()[index]; - String targetPlayerName; - String[] targetPlayerTexture; - - Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(targetPlayerUUID); - targetPlayerName = offlinePlayer.getName(); - targetPlayerTexture = offlinePlayer.getTexture(); - } else { - targetPlayerName = targetPlayer.getName(); - - if (playerDataManager.hasPlayerData(targetPlayer)) { - targetPlayerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); - } else { - targetPlayerTexture = new String[] { null, null }; - } - } - - nInv.addItem( - nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Bans.Item.Ban.Displayname") - .replace("%player", targetPlayerName == null ? "" : targetPlayerName)), - configLoad.getStringList("Menu.Bans.Item.Ban.Lore"), null, null, null), - inventorySlot); - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Bans.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Biome.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Biome.java deleted file mode 100644 index 398ded4e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Biome.java +++ /dev/null @@ -1,219 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.biome.BiomeManager; -import me.goodandevil.skyblock.cooldown.Cooldown; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownPlayer; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.island.*; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.SBiome; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; - -import java.io.File; - -public class Biome { - - private static Biome instance; - - public static Biome getInstance() { - if (instance == null) { - instance = new Biome(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - CooldownManager cooldownManager = skyblock.getCooldownManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - BiomeManager biomeManager = skyblock.getBiomeManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - if (playerDataManager.hasPlayerData(player)) { - FileConfiguration langConfig = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - langConfig.getString("Command.Island.Biome.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } else if (!((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Biome").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { - messageManager.sendMessage(player, - langConfig.getString("Command.Island.Biome.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - langConfig.getString("Menu.Biome.Item.Info.Displayname"))))) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - langConfig.getString("Menu.Biome.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) -&& (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', -langConfig.getString("Menu.Biome.Item.Exit.Displayname"))))) { -soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else { - if (is.getItemMeta().hasEnchant(Enchantment.THORNS)) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - if (cooldownManager.hasPlayer(CooldownType.Biome, player) && !player.hasPermission("fabledskyblock.bypass.cooldown")) { - CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Biome, player); - Cooldown cooldown = cooldownPlayer.getCooldown(); - - if (cooldown.getTime() < 60) { - messageManager.sendMessage(player, - langConfig.getString("Island.Biome.Cooldown.Message") - .replace("%time", - cooldown.getTime() + " " + langConfig - .getString("Island.Biome.Cooldown.Word.Second"))); - } else { - long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); - messageManager.sendMessage(player, - langConfig.getString("Island.Biome.Cooldown.Message") - .replace("%time", durationTime[2] + " " - + langConfig.getString("Island.Biome.Cooldown.Word.Minute") - + " " + durationTime[3] + " " - + langConfig.getString("Island.Biome.Cooldown.Word.Second"))); - } - - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - @SuppressWarnings("deprecation") - SBiome selectedBiomeType = SBiome.getFromGuiIcon(is.getType(), is.getData().getData()); - - cooldownManager.createPlayer(CooldownType.Biome, player); - biomeManager.setBiome(island, selectedBiomeType.getBiome()); - island.setBiome(selectedBiomeType.getBiome()); - island.save(); - - soundManager.playSound(island.getLocation(IslandWorld.Normal, IslandEnvironment.Island), - Sounds.SPLASH.bukkitSound(), 1.0F, 1.0F); - - if (!islandManager.isPlayerAtIsland(island, player, IslandWorld.Normal)) { - soundManager.playSound(player, Sounds.SPLASH.bukkitSound(), 1.0F, 1.0F); - } - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - }); - - Island island = islandManager.getIsland(player); - org.bukkit.block.Biome islandBiome = island.getBiome(); - String islandBiomeName = island.getBiomeName(); - - nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), - ChatColor.translateAlternateColorCodes('&', - langConfig.getString("Menu.Biome.Item.Info.Displayname")), - langConfig.getStringList("Menu.Biome.Item.Info.Lore"), - new Placeholder[] { new Placeholder("%biome_type", islandBiomeName) }, null, null), 4); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - langConfig.getString("Menu.Biome.Item.Exit.Displayname"), null, null, null, null), - 0, 8); - - nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - ChatColor.translateAlternateColorCodes('&', - langConfig.getString("Menu.Biome.Item.Barrier.Displayname")), - null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - FileConfiguration settings = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration(); - - boolean allowNetherBiome = settings.getBoolean("Island.Biome.AllowOtherWorldlyBiomes.Nether"); - boolean allowEndBiome = settings.getBoolean("Island.Biome.AllowOtherWorldlyBiomes.End"); - - int slotIndex = 18; - for (SBiome biome : SBiome.values()) { - if (!biome.isAvailable()) - continue; - - if (!allowNetherBiome && biome.equals(SBiome.NETHER)) - continue; - - if (!allowEndBiome && (biome.equals(SBiome.THE_END) || biome.equals(SBiome.THE_VOID))) - continue; - - if (!player.hasPermission("fabledskyblock.biome.*") && !player.hasPermission("fabledskyblock.biome." + biome.name().toLowerCase())) - continue; - - if (islandBiome.equals(biome.getBiome())) { - nInv.addItem(nInv.createItem(biome.getGuiIcon(), - ChatColor.translateAlternateColorCodes('&', - langConfig.getString("Menu.Biome.Item.Biome.Current.Displayname") - .replace("%biome_type", biome.getFormattedBiomeName())), - langConfig.getStringList("Menu.Biome.Item.Biome.Current.Lore"), null, - new Enchantment[] { Enchantment.THORNS }, new ItemFlag[] { ItemFlag.HIDE_ENCHANTS }), - slotIndex); - } else { - nInv.addItem(nInv.createItem(biome.getGuiIcon(), - ChatColor.translateAlternateColorCodes('&', - langConfig.getString("Menu.Biome.Item.Biome.Select.Displayname") - .replace("%biome_type", biome.getFormattedBiomeName())), - langConfig.getStringList("Menu.Biome.Item.Biome.Select.Lore"), null, null, null), - slotIndex); - } - - slotIndex++; - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', langConfig.getString("Menu.Biome.Title"))); - nInv.setRows(4); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Border.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Border.java deleted file mode 100644 index 4473a874..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Border.java +++ /dev/null @@ -1,225 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.WorldBorder; - -public class Border { - - private static Border instance; - - public static Border getInstance() { - if (instance == null) { - instance = new Border(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Border").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Border.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Border.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Border.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Material.TRIPWIRE_HOOK) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Border.Item.Toggle.Displayname"))))) { - if (island.isBorder()) { - island.setBorder(false); - } else { - island.setBorder(true); - } - - islandManager.updateBorder(island); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if ((is.getType() == Materials.LIGHT_BLUE_DYE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Blue")))))) { - if (island.getBorderColor() == WorldBorder.Color.Blue) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - island.setBorderColor(WorldBorder.Color.Blue); - islandManager.updateBorder(island); - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } else if ((is.getType() == Materials.LIME_DYE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Green")))))) { - if (island.getBorderColor() == WorldBorder.Color.Green) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - island.setBorderColor(WorldBorder.Color.Green); - islandManager.updateBorder(island); - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } else if ((is.getType() == Materials.RED_DYE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Red")))))) { - if (island.getBorderColor() == WorldBorder.Color.Red) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - island.setBorderColor(WorldBorder.Color.Red); - islandManager.updateBorder(island); - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - }); - - Island island = islandManager.getIsland(player); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Border.Item.Exit.Displayname"), null, null, null, null), 0); - - WorldBorder.Color borderColor = island.getBorderColor(); - String borderToggle; - - if (island.isBorder()) { - borderToggle = configLoad.getString("Menu.Border.Item.Word.Disable"); - } else { - borderToggle = configLoad.getString("Menu.Border.Item.Word.Enable"); - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.TRIPWIRE_HOOK), - configLoad.getString("Menu.Border.Item.Toggle.Displayname"), - configLoad.getStringList("Menu.Border.Item.Toggle.Lore"), - new Placeholder[] { new Placeholder("%toggle", borderToggle) }, null, null), 1); - - if (borderColor == WorldBorder.Color.Blue) { - nInv.addItem(nInv.createItem(Materials.LIGHT_BLUE_DYE.parseItem(), - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Blue")), - configLoad.getStringList("Menu.Border.Item.Color.Selected.Lore"), - new Placeholder[] { new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Blue")) }, - null, null), 2); - } else { - nInv.addItem(nInv.createItem(Materials.LIGHT_BLUE_DYE.parseItem(), - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Blue")), - configLoad.getStringList("Menu.Border.Item.Color.Unselected.Lore"), - new Placeholder[] { new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Blue")) }, - null, null), 2); - } - - if (borderColor == WorldBorder.Color.Green) { - nInv.addItem(nInv.createItem(Materials.LIME_DYE.parseItem(), - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Green")), - configLoad.getStringList("Menu.Border.Item.Color.Selected.Lore"), - new Placeholder[] { - new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Green")) }, - null, null), 3); - } else { - nInv.addItem(nInv.createItem(Materials.LIME_DYE.parseItem(), - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Green")), - configLoad.getStringList("Menu.Border.Item.Color.Unselected.Lore"), - new Placeholder[] { - new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Green")) }, - null, null), 3); - } - - if (borderColor == WorldBorder.Color.Red) { - nInv.addItem(nInv.createItem(Materials.RED_DYE.parseItem(), - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Red")), - configLoad.getStringList("Menu.Border.Item.Color.Selected.Lore"), - new Placeholder[] { new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Red")) }, - null, null), 4); - } else { - nInv.addItem(nInv.createItem(Materials.RED_DYE.parseItem(), - configLoad.getString("Menu.Border.Item.Color.Displayname").replace("%color", - configLoad.getString("Menu.Border.Item.Word.Red")), - configLoad.getStringList("Menu.Border.Item.Color.Unselected.Lore"), - new Placeholder[] { new Placeholder("%color", configLoad.getString("Menu.Border.Item.Word.Red")) }, - null, null), 4); - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Border.Title"))); - nInv.setType(InventoryType.HOPPER); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/ControlPanel.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/ControlPanel.java deleted file mode 100644 index 16c96043..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/ControlPanel.java +++ /dev/null @@ -1,144 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; - -import me.goodandevil.skyblock.island.Island; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class ControlPanel { - - private static ControlPanel instance; - - public static ControlPanel getInstance() { - if (instance == null) { - instance = new ControlPanel(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - Island island = skyblock.getIslandManager().getIsland(player); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_DOOR.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Teleport.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island teleport"), 1L); - } else if ((is.getType() == Materials.IRON_DOOR.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Lock.Displayname"))))) { - if (island.isOpen()) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island close"), 1L); - } else { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island open"), 1L); - } - } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Barrier.Displayname"))))) { - skyblock.getSoundManager().playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.EXPERIENCE_BOTTLE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Level.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island level"), 1L); - } else if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Settings.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island settings"), 1L); - } else if ((is.getType() == Material.ITEM_FRAME) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Members.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island members"), 1L); - } else if ((is.getType() == Materials.OAK_SAPLING.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Biome.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island biome"), 1L); - } else if ((is.getType() == Materials.CLOCK.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Weather.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island weather"), 1L); - } else if ((is.getType() == Material.IRON_AXE) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Bans.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island bans"), 1L); - } else if ((is.getType() == Materials.OAK_SIGN.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Visitors.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island visitors"), 1L); - } else if ((is.getType() == Materials.ANVIL.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.ControlPanel.Item.Upgrades.Displayname"))))) { - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> Bukkit.getServer().dispatchCommand(player, "island upgrades"), 1L); - } - }); - - // Teleport to island and open/close island - nInv.addItem(nInv.createItem(Materials.OAK_DOOR.parseItem(), - configLoad.getString("Menu.ControlPanel.Item.Teleport.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Teleport.Lore"), null, null, null), 1); - nInv.addItem(nInv.createItem(Materials.IRON_DOOR.parseItem(), - configLoad.getString("Menu.ControlPanel.Item.Lock.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Lock.Lore"), null, null, null), 10); - - // Glass panes barriers - nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.ControlPanel.Item.Barrier.Displayname"), null, null, null, null), 0, 2, 5, 8, 9, 11, 14, 17); - - // 4 Items at the left - nInv.addItem(nInv.createItem(new ItemStack(Materials.EXPERIENCE_BOTTLE.parseMaterial()), - configLoad.getString("Menu.ControlPanel.Item.Level.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Level.Lore"), null, null, null), 3); - nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), - configLoad.getString("Menu.ControlPanel.Item.Settings.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Settings.Lore"), null, null, null), 4); - nInv.addItem(nInv.createItem(Materials.CLOCK.parseItem(), - configLoad.getString("Menu.ControlPanel.Item.Weather.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Weather.Lore"), null, null, null), 12); - nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), - configLoad.getString("Menu.ControlPanel.Item.Biome.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Biome.Lore"), null, null, null), 13); - - // 4 Items at the right - nInv.addItem(nInv.createItem(new ItemStack(Material.ITEM_FRAME), - configLoad.getString("Menu.ControlPanel.Item.Members.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Members.Lore"), null, null, null), 16); - nInv.addItem(nInv.createItem(new ItemStack(Material.IRON_AXE), - configLoad.getString("Menu.ControlPanel.Item.Bans.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Bans.Lore"), null, null, - new ItemFlag[] { ItemFlag.HIDE_ATTRIBUTES }), 6); - nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), - configLoad.getString("Menu.ControlPanel.Item.Visitors.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Visitors.Lore"), null, null, null), 7); - nInv.addItem(nInv.createItem(new ItemStack(Materials.ANVIL.parseMaterial()), - configLoad.getString("Menu.ControlPanel.Item.Upgrades.Displayname"), - configLoad.getStringList("Menu.ControlPanel.Item.Upgrades.Lore"), null, null, null), 15); - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.ControlPanel.Title"))); - nInv.setRows(2); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Coop.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Coop.java deleted file mode 100644 index 5b4e3a9d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Coop.java +++ /dev/null @@ -1,248 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.scheduler.BukkitRunnable; - -public class Coop { - - private static Coop instance; - - public static Coop getInstance() { - if (instance == null) { - instance = new Coop(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Coop.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Coop.Enable")) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Coop.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Coop.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Coop.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Coop.Item.Information.Displayname"))))) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - Bukkit.getServer().dispatchCommand(player, - "island coop " + event1.getName()); - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is1 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is1.getItemMeta(); - im.setDisplayName(configLoad.getString("Menu.Coop.Item.Word.Enter")); - is1.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); - gui.open(); - }, 1L); - } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Coop.Item.Nothing.Displayname"))))) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Coop.Item.Previous.Displayname")))) { - playerData.setPage(playerData.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Coop.Item.Next.Displayname")))) { - playerData.setPage(playerData.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - if ((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "CoopPlayers").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); - Bukkit.getServer().dispatchCommand(player, "island coop " + playerName); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 3L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Coop.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } - } - }); - - PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = islandManager.getIsland(player); - - Set coopPlayers = island.getCoopPlayers(); - coopPlayers.removeIf(x -> !Bukkit.getOfflinePlayer(x).hasPlayedBefore()); - - int playerMenuPage = playerData.getPage(), nextEndIndex = coopPlayers.size() - playerMenuPage * 36; - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Coop.Item.Exit.Displayname"), null, null, null, null), 0, 8); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Coop.Item.Information.Displayname"), - configLoad.getStringList("Menu.Coop.Item.Information.Lore"), - new Placeholder[] { new Placeholder("%coops", "" + coopPlayers.size()) }, null, null), 4); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Coop.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Coop.Item.Previous.Displayname"), null, null, null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Coop.Item.Next.Displayname"), null, null, null, null), 7); - } - - if (coopPlayers.size() == 0) { - nInv.addItem( - nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Coop.Item.Nothing.Displayname"), null, null, null, null), - 31); - } else { - int index = playerMenuPage * 36 - 36, - endIndex = index >= coopPlayers.size() ? coopPlayers.size() - 1 : index + 36, - inventorySlot = 17; - - for (; index < endIndex; index++) { - if (coopPlayers.size() > index) { - inventorySlot++; - - UUID targetPlayerUUID = (UUID) coopPlayers.toArray()[index]; - String targetPlayerName; - String[] targetPlayerTexture; - - Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(targetPlayerUUID); - targetPlayerName = offlinePlayer.getName(); - targetPlayerTexture = offlinePlayer.getTexture(); - } else { - targetPlayerName = targetPlayer.getName(); - - if (playerDataManager.hasPlayerData(targetPlayer)) { - targetPlayerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); - } else { - targetPlayerTexture = new String[] { null, null }; - } - } - - nInv.addItem( - nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Coop.Item.Coop.Displayname") - .replace("%player", targetPlayerName)), - configLoad.getStringList("Menu.Coop.Item.Coop.Lore"), null, null, null), - inventorySlot); - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Creator.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Creator.java deleted file mode 100644 index 23404465..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Creator.java +++ /dev/null @@ -1,240 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import me.goodandevil.skyblock.utils.version.NMSUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.cooldown.Cooldown; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownPlayer; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.structure.Structure; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Creator { - - private static Creator instance; - - public static Creator getInstance() { - if (instance == null) { - instance = new Creator(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - CooldownManager cooldownManager = skyblock.getCooldownManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - List availableStructures = new ArrayList<>(); - - for (Structure structureList : skyblock.getStructureManager().getStructures()) { - if (structureList.getDisplayname() == null || structureList.getDisplayname().isEmpty() - || structureList.getOverworldFile() == null || structureList.getOverworldFile().isEmpty() - || structureList.getNetherFile() == null || structureList.getNetherFile().isEmpty()) { - continue; - } - - if (structureList.isPermission()) { - if (!player.hasPermission(structureList.getPermission()) && !player.hasPermission("fabledskyblock.island.*") - && !player.hasPermission("fabledskyblock.*")) { - continue; - } - } - - availableStructures.add(structureList); - } - - int inventoryRows = 0; - - if (availableStructures.size() == 0) { - skyblock.getMessageManager().sendMessage(player, - configLoad.getString("Island.Creator.Selector.None.Message")); - skyblock.getSoundManager().playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (availableStructures.size() <= 9) { - inventoryRows = 1; - } else if (availableStructures.size() <= 18) { - inventoryRows = 2; - } else if (availableStructures.size() <= 27) { - inventoryRows = 3; - } else if (availableStructures.size() <= 36) { - inventoryRows = 4; - } else if (availableStructures.size() <= 45) { - inventoryRows = 5; - } else if (availableStructures.size() <= 54) { - inventoryRows = 6; - } - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (islandManager.getIsland(player) != null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Create.Owner.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - ItemStack is = event.getItem(); - - for (Structure structureList : skyblock.getStructureManager().getStructures()) { - if ((is.getType() == structureList.getMaterials().parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Creator.Selector.Item.Island.Displayname") - .replace("%displayname", structureList.getDisplayname()))))) { - if (structureList.isPermission() && structureList.getPermission() != null - && !structureList.getPermission().isEmpty()) { - if (!player.hasPermission(structureList.getPermission()) - && !player.hasPermission("fabledskyblock.island.*") - && !player.hasPermission("fabledskyblock.*")) { - messageManager.sendMessage(player, - configLoad.getString("Island.Creator.Selector.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } - } - - if (!fileManager.isFileExist( - new File(new File(skyblock.getDataFolder().toString() + "/" + - (structureList.getOverworldFile().endsWith(".structure") ? "structures" : "schematics")), - structureList.getOverworldFile()))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Creator.Selector.File.Overworld.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } else if (!fileManager.isFileExist( - new File(new File(skyblock.getDataFolder().toString() + "/" + - (structureList.getNetherFile().endsWith(".structure") ? "structures" : "schematics")), - structureList.getNetherFile()))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Creator.Selector.File.Nether.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } else if (!fileManager.isFileExist( - new File(new File(skyblock.getDataFolder().toString() + "/" + - (structureList.getEndFile().endsWith(".structure") ? "structures" : "schematics")), - structureList.getEndFile()))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Creator.Selector.File.End.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Creation.Cooldown.Creation.Enable") - && cooldownManager.hasPlayer(CooldownType.Creation, player)) { - CooldownPlayer cooldownPlayer = cooldownManager - .getCooldownPlayer(CooldownType.Creation, player); - Cooldown cooldown = cooldownPlayer.getCooldown(); - - if (cooldown.getTime() < 60) { - messageManager.sendMessage(player, config.getFileConfiguration() - .getString("Island.Creator.Selector.Cooldown.Message") - .replace("%time", cooldown.getTime() + " " - + config.getFileConfiguration().getString( - "Island.Creator.Selector.Cooldown.Word.Second"))); - } else { - long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); - messageManager.sendMessage(player, config.getFileConfiguration() - .getString("Island.Creator.Selector.Cooldown.Message") - .replace("%time", durationTime[2] + " " - + config.getFileConfiguration().getString( - "Island.Creator.Selector.Cooldown.Word.Minute") - + " " + durationTime[3] + " " - + config.getFileConfiguration().getString( - "Island.Creator.Selector.Cooldown.Word.Second"))); - } - - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - if (islandManager.createIsland(player, structureList)) { - messageManager.sendMessage(player, - configLoad.getString("Island.Creator.Selector.Created.Message")); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - } - - return; - } - } - }); - }); - - for (int i = 0; i < availableStructures.size(); i++) { - Structure structure = availableStructures.get(i); - List itemLore = new ArrayList<>(); - - for (String itemLoreList : configLoad.getStringList("Menu.Creator.Selector.Item.Island.Lore")) { - if (itemLoreList.contains("%description")) { - if (structure.getDescription() == null || structure.getDescription().isEmpty()) { - itemLore.add(configLoad.getString("Menu.Creator.Selector.Item.Island.Word.Empty")); - } else { - for (String descriptionList : structure.getDescription()) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', descriptionList)); - } - } - } else { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - } - - nInv.addItem(nInv.createItem(structure.getMaterials().parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Creator.Selector.Item.Island.Displayname") - .replace("%displayname", structure.getDisplayname())), - itemLore, null, null, null), i); - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Creator.Selector.Title"))); - nInv.setRows(inventoryRows); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Information.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Information.java deleted file mode 100644 index 4ed065ff..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Information.java +++ /dev/null @@ -1,596 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Information { - - private static Information instance; - - public static Information getInstance() { - if (instance == null) { - instance = new Information(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - - if (playerData.getViewer() != null) { - Information.Viewer viewer = (Information.Viewer) playerData.getViewer(); - org.bukkit.OfflinePlayer targetOfflinePlayer = Bukkit.getServer().getOfflinePlayer(viewer.getOwner()); - - if (islandManager.getIsland(targetOfflinePlayer) == null) { - islandManager.loadIsland(targetOfflinePlayer); - } - - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(viewer.getOwner())); - - if (island == null) { - messageManager.sendMessage(player, configLoad.getString("Island.Information.Island.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (viewer.getType() == Information.Viewer.Type.Visitors) { - if (island.isOpen()) { - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - messageManager.sendMessage(player, - configLoad.getString("Island.Information.Visitors.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - playerData.setViewer( - new Information.Viewer(viewer.getOwner(), Information.Viewer.Type.Categories)); - open(player); - - return; - } - } else { - messageManager.sendMessage(player, configLoad.getString("Island.Information.Closed.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - playerData.setViewer( - new Information.Viewer(viewer.getOwner(), Information.Viewer.Type.Categories)); - open(player); - - return; - } - } - - me.goodandevil.skyblock.visit.Visit visit = island.getVisit(); - - String islandOwnerName = ""; - Player targetPlayer = Bukkit.getServer().getPlayer(viewer.getOwner()); - - if (targetPlayer == null) { - islandOwnerName = new OfflinePlayer(viewer.getOwner()).getName(); - } else { - islandOwnerName = targetPlayer.getName(); - } - - if (viewer.getType() == Information.Viewer.Type.Categories) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData13 = playerDataManager.getPlayerData(player); - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Categories.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Materials.ITEM_FRAME.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Categories.Item.Members.Displayname"))))) { - playerData13.setViewer(new Viewer( - ((Viewer) playerData13.getViewer()).getOwner(), - Viewer.Type.Members)); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if ((is.getType() == Materials.LEGACY_EMPTY_MAP.getPostMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Categories.Item.Information.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.PAINTING.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Categories.Item.Visitors.Displayname"))))) { - playerData13.setViewer(new Viewer( - ((Viewer) playerData13.getViewer()).getOwner(), - Viewer.Type.Visitors)); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } - } - }); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Information.Categories.Item.Exit.Displayname"), null, null, null, - null), 0, 4); - nInv.addItem(nInv.createItem(Materials.ITEM_FRAME.parseItem(), - configLoad.getString("Menu.Information.Categories.Item.Members.Displayname"), - configLoad.getStringList("Menu.Information.Categories.Item.Members.Lore"), null, null, - null), 1); - nInv.addItem(nInv.createItem(Materials.PAINTING.parseItem(), - configLoad.getString("Menu.Information.Categories.Item.Visitors.Displayname"), - configLoad.getStringList("Menu.Information.Categories.Item.Visitors.Lore"), null, null, - null), 3); - - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - List itemLore = new ArrayList<>(); - - String safety = ""; - - if (visit.getSafeLevel() > 0) { - safety = configLoad.getString("Menu.Information.Categories.Item.Information.Vote.Word.Unsafe"); - } else { - safety = configLoad.getString("Menu.Information.Categories.Item.Information.Vote.Word.Safe"); - } - - if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Vote")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { - for (String itemLoreList : configLoad.getStringList( - "Menu.Information.Categories.Item.Information.Vote.Enabled.Signature.Enabled.Lore")) { - if (itemLoreList.contains("%signature")) { - List islandSignature = visit.getSiganture(); - - if (islandSignature.size() == 0) { - itemLore.add(configLoad.getString( - "Menu.Information.Categories.Item.Information.Vote.Word.Empty")); - } else { - for (String signatureList : islandSignature) { - itemLore.add(signatureList); - } - } - } else { - itemLore.add(itemLoreList); - } - } - } else { - itemLore.addAll(configLoad.getStringList( - "Menu.Information.Categories.Item.Information.Vote.Enabled.Signature.Disabled.Lore")); - } - - nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), - configLoad.getString("Menu.Information.Categories.Item.Information.Displayname"), - itemLore, - new Placeholder[] { new Placeholder("%level", "" + visit.getLevel().getLevel()), - new Placeholder("%members", "" + visit.getMembers()), - new Placeholder("%votes", "" + visit.getVoters().size()), - new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%players", - "" + islandManager.getPlayersAtIsland(island).size()), - new Placeholder("%player_capacity", - "" + mainConfig.getFileConfiguration() - .getInt("Island.Visitor.Capacity")), - new Placeholder("%owner", islandOwnerName), - new Placeholder("%safety", safety) }, - null, null), 2); - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { - for (String itemLoreList : configLoad.getStringList( - "Menu.Information.Categories.Item.Information.Vote.Disabled.Signature.Enabled.Lore")) { - if (itemLoreList.contains("%signature")) { - List islandSignature = visit.getSiganture(); - - if (islandSignature.size() == 0) { - itemLore.add(configLoad.getString( - "Menu.Information.Categories.Item.Information.Vote.Word.Empty")); - } else { - for (String signatureList : islandSignature) { - itemLore.add(signatureList); - } - } - } else { - itemLore.add(itemLoreList); - } - } - } else { - itemLore.addAll(configLoad.getStringList( - "Menu.Information.Categories.Item.Information.Vote.Disabled.Signature.Disabled.Lore")); - } - - nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), - configLoad.getString("Menu.Information.Categories.Item.Information.Displayname"), - itemLore, - new Placeholder[] { new Placeholder("%level", "" + visit.getLevel().getLevel()), - new Placeholder("%members", "" + visit.getMembers()), - new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%players", - "" + islandManager.getPlayersAtIsland(island).size()), - new Placeholder("%player_capacity", - "" + mainConfig.getFileConfiguration() - .getInt("Island.Visitor.Capacity")), - new Placeholder("%owner", islandOwnerName), - new Placeholder("%safety", safety) }, - null, null), 2); - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Information.Categories.Title"))); - nInv.setType(InventoryType.HOPPER); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else if (viewer.getType() == Information.Viewer.Type.Members) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData1 = playerDataManager.getPlayerData(player); - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Members.Item.Return.Displayname"))))) { - playerData1.setViewer(new Viewer( - ((Viewer) playerData1.getViewer()).getOwner(), - Viewer.Type.Categories)); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if ((is.getType() == Materials.PAINTING.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Members.Item.Statistics.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Members.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) - && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Members.Item.Previous.Displayname")))) { - playerData1.setPage(playerData1.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Information.Members.Item.Next.Displayname")))) { - playerData1.setPage(playerData1.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } - }); - - List displayedMembers = new ArrayList<>(); - - Set islandMembers = island.getRole(IslandRole.Member); - Set islandOperators = island.getRole(IslandRole.Operator); - - displayedMembers.add(island.getOwnerUUID()); - displayedMembers.addAll(islandOperators); - displayedMembers.addAll(islandMembers); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Information.Members.Item.Return.Displayname"), null, null, null, - null), 0, 8); - nInv.addItem( - nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Information.Members.Item.Statistics.Displayname"), - configLoad.getStringList("Menu.Information.Members.Item.Statistics.Lore"), - new Placeholder[] { - new Placeholder("%island_members", - "" + (islandMembers.size() + islandOperators.size() + 1)), - new Placeholder("%island_capacity", - "" + skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Member.Capacity")), - new Placeholder("%members", "" + islandMembers.size()), - new Placeholder("%operators", "" + islandOperators.size()) }, - null, null), - 4); - nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Information.Members.Item.Barrier.Displayname"), null, null, null, - null), 9, 10, 11, 12, 13, 14, 15, 16, 17); - - int playerMenuPage = playerData.getPage(), - nextEndIndex = displayedMembers.size() - playerMenuPage * 36; - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Information.Members.Item.Previous.Displayname"), null, null, - null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Information.Members.Item.Next.Displayname"), null, null, - null, null), 7); - } - - int index = playerMenuPage * 36 - 36, - endIndex = index >= displayedMembers.size() ? displayedMembers.size() - 1 : index + 36, - inventorySlot = 17; - - for (; index < endIndex; index++) { - if (displayedMembers.size() > index) { - inventorySlot++; - - UUID playerUUID = displayedMembers.get(index); - - String[] playerTexture; - String playerName, islandRole; - - targetPlayer = Bukkit.getServer().getPlayer(playerUUID); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(playerUUID); - playerName = offlinePlayer.getName(); - playerTexture = offlinePlayer.getTexture(); - } else { - playerName = targetPlayer.getName(); - playerData = skyblock.getPlayerDataManager().getPlayerData(targetPlayer); - playerTexture = playerData.getTexture(); - } - - if (islandMembers.contains(playerUUID)) { - islandRole = configLoad.getString("Menu.Information.Members.Item.Member.Word.Member"); - } else if (islandOperators.contains(playerUUID)) { - islandRole = configLoad.getString("Menu.Information.Members.Item.Member.Word.Operator"); - } else { - islandRole = configLoad.getString("Menu.Information.Members.Item.Member.Word.Owner"); - } - - nInv.addItem( - nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), - configLoad.getString("Menu.Information.Members.Item.Member.Displayname") - .replace("%player", playerName), - configLoad.getStringList("Menu.Information.Members.Item.Member.Lore"), - new Placeholder[] { new Placeholder("%role", islandRole) }, null, null), - inventorySlot); - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Information.Members.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else if (viewer.getType() == Information.Viewer.Type.Visitors) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData12 = playerDataManager.getPlayerData(player); - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Visitors.Item.Return.Displayname"))))) { - playerData12.setViewer(new Viewer( - ((Viewer) playerData12.getViewer()).getOwner(), - Viewer.Type.Categories)); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if ((is.getType() == Materials.PAINTING.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Visitors.Item.Statistics.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Visitors.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) - && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Information.Visitors.Item.Previous.Displayname")))) { - playerData12.setPage(playerData12.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Information.Visitors.Item.Next.Displayname")))) { - playerData12.setPage(playerData12.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } - }); - - List displayedVisitors = new ArrayList<>(); - displayedVisitors.addAll(islandManager.getVisitorsAtIsland(island)); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Information.Visitors.Item.Return.Displayname"), null, null, null, - null), 0, 8); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Information.Visitors.Item.Statistics.Displayname"), - configLoad.getStringList("Menu.Information.Visitors.Item.Statistics.Lore"), - new Placeholder[] { new Placeholder("%island_visitors", "" + displayedVisitors.size()) }, - null, null), 4); - nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Information.Visitors.Item.Barrier.Displayname"), null, null, - null, null), 9, 10, 11, 12, 13, 14, 15, 16, 17); - - int playerMenuPage = playerData.getPage(), - nextEndIndex = displayedVisitors.size() - playerMenuPage * 36; - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Information.Visitors.Item.Previous.Displayname"), null, null, - null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Information.Visitors.Item.Next.Displayname"), null, null, - null, null), 7); - } - - int index = playerMenuPage * 36 - 36, - endIndex = index >= displayedVisitors.size() ? displayedVisitors.size() - 1 : index + 36, - inventorySlot = 17; - - for (; index < endIndex; index++) { - if (displayedVisitors.size() > index) { - inventorySlot++; - - UUID playerUUID = displayedVisitors.get(index); - - String[] playerTexture; - String playerName; - - targetPlayer = Bukkit.getServer().getPlayer(playerUUID); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(playerUUID); - playerName = offlinePlayer.getName(); - playerTexture = offlinePlayer.getTexture(); - } else { - playerName = targetPlayer.getName(); - playerData = skyblock.getPlayerDataManager().getPlayerData(targetPlayer); - playerTexture = playerData.getTexture(); - } - - nInv.addItem( - nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), - configLoad.getString("Menu.Information.Visitors.Item.Visitor.Displayname") - .replace("%player", playerName), - null, null, null, null), - inventorySlot); - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Information.Visitors.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - - islandManager.unloadIsland(island, null); - } - } - } - - public static class Viewer { - - private UUID islandOwnerUUID; - private Type type; - - public Viewer(UUID islandOwnerUUID, Type type) { - this.islandOwnerUUID = islandOwnerUUID; - this.type = type; - } - - public UUID getOwner() { - return islandOwnerUUID; - } - - public Type getType() { - return type; - } - - public enum Type { - - Categories, Members, Visitors; - - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Leaderboard.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Leaderboard.java deleted file mode 100644 index 57a205a2..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Leaderboard.java +++ /dev/null @@ -1,359 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import me.goodandevil.skyblock.utils.NumberUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Leaderboard { - - private static Leaderboard instance; - - public static Leaderboard getInstance() { - if (instance == null) { - instance = new Leaderboard(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - Viewer viewer = (Viewer) playerDataManager.getPlayerData(player).getViewer(); - - if (viewer.getType() == Viewer.Type.Browse) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Leaderboard." + Viewer.Type.Browse.name() - + ".Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - - return; - } else if ((is.getType() == Material.DIAMOND) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad - .getString("Menu.Leaderboard." + Viewer.Type.Browse.name() - + ".Item.Leaderboard.Displayname") - .replace("%leaderboard", Viewer.Type.Level.name()))))) { - playerDataManager.getPlayerData(player).setViewer(new Viewer(Viewer.Type.Level)); - } else if ((is.getType() == Material.GOLD_INGOT) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad - .getString("Menu.Leaderboard." + Viewer.Type.Browse.name() - + ".Item.Leaderboard.Displayname") - .replace("%leaderboard", Viewer.Type.Bank.name()))))) { - playerDataManager.getPlayerData(player).setViewer(new Viewer(Viewer.Type.Bank)); - } else if ((is.getType() == Material.EMERALD) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad - .getString("Menu.Leaderboard." + Viewer.Type.Browse.name() - + ".Item.Leaderboard.Displayname") - .replace("%leaderboard", Viewer.Type.Votes.name()))))) { - playerDataManager.getPlayerData(player).setViewer(new Viewer(Viewer.Type.Votes)); - } - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - }); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Leaderboard." + viewer.getType().name() + ".Item.Exit.Displayname"), - null, null, null, null), 0, 4); - nInv.addItem( - nInv.createItem(new ItemStack(Material.DIAMOND), configLoad - .getString( - "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Displayname") - .replace("%leaderboard", Viewer.Type.Level.name()), - configLoad.getStringList( - "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Lore"), - new Placeholder[] { new Placeholder("%leaderboard", Viewer.Type.Level.name()) }, null, - null), - 1); - nInv.addItem( - nInv.createItem(new ItemStack(Material.GOLD_INGOT), configLoad - .getString( - "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Displayname") - .replace("%leaderboard", Viewer.Type.Bank.name()), - configLoad.getStringList( - "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Lore"), - new Placeholder[] { new Placeholder("%leaderboard", Viewer.Type.Bank.name()) }, null, - null), - 2); - nInv.addItem( - nInv.createItem(new ItemStack(Material.EMERALD), configLoad - .getString( - "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Displayname") - .replace("%leaderboard", Viewer.Type.Votes.name()), - configLoad.getStringList( - "Menu.Leaderboard." + viewer.getType().name() + ".Item.Leaderboard.Lore"), - new Placeholder[] { new Placeholder("%leaderboard", Viewer.Type.Votes.name()) }, null, - null), - 3); - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Leaderboard." + viewer.getType().name() + ".Title"))); - nInv.setType(InventoryType.HOPPER); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Exit.Displayname")))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Leaderboard.Leaderboard.Item.Return.Displayname")))) { - if (skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Vote")) { - playerDataManager.getPlayerData(player) - .setViewer(new Viewer(Viewer.Type.Browse)); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } - - return; - } - } - - int clickedSlot = event.getSlot(); - int leaderboardPosition = -1; - - if (clickedSlot == 13) { - leaderboardPosition = 0; - } else if (clickedSlot == 21) { - leaderboardPosition = 1; - } else if (clickedSlot == 22) { - leaderboardPosition = 2; - } else if (clickedSlot == 23) { - leaderboardPosition = 3; - } else if (clickedSlot == 29) { - leaderboardPosition = 4; - } else if (clickedSlot == 31) { - leaderboardPosition = 5; - } else if (clickedSlot == 33) { - leaderboardPosition = 6; - } else if (clickedSlot == 37) { - leaderboardPosition = 7; - } else if (clickedSlot == 40) { - leaderboardPosition = 8; - } else if (clickedSlot == 43) { - leaderboardPosition = 9; - } - - if (leaderboardPosition != -1) { - List leaderboardIslands = skyblock - .getLeaderboardManager().getLeaderboard( - me.goodandevil.skyblock.leaderboard.Leaderboard.Type.valueOf(viewer.getType().name())); - - if (leaderboardIslands.size() > leaderboardPosition) { - me.goodandevil.skyblock.leaderboard.Leaderboard leaderboard = leaderboardIslands.get(leaderboardPosition); - me.goodandevil.skyblock.visit.Visit visit = leaderboard.getVisit(); - - OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); - Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> Bukkit.dispatchCommand(player, "island teleport " + offlinePlayer.getName())); - } - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - }); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Vote")) { - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Return.Displayname"), null, null, - null, null), 0, 8); - } else { - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Exit.Displayname"), null, null, - null, null), 0, 8); - } - - List leaderboardIslands = skyblock - .getLeaderboardManager().getLeaderboard( - me.goodandevil.skyblock.leaderboard.Leaderboard.Type.valueOf(viewer.getType().name())); - - for (int i = 0; i < leaderboardIslands.size(); i++) { - me.goodandevil.skyblock.leaderboard.Leaderboard leaderboard = leaderboardIslands.get(i); - me.goodandevil.skyblock.visit.Visit visit = leaderboard.getVisit(); - - int itemSlot = 0; - - String playerName; - String[] playerTexture; - - Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); - playerName = offlinePlayer.getName(); - playerTexture = offlinePlayer.getTexture(); - } else { - playerName = targetPlayer.getName(); - - if (playerDataManager.hasPlayerData(targetPlayer)) { - playerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); - } else { - playerTexture = new String[] { null, null }; - } - } - - if (leaderboard.getPosition() == 0) { - itemSlot = 13; - } else if (leaderboard.getPosition() == 1) { - itemSlot = 21; - } else if (leaderboard.getPosition() == 2) { - itemSlot = 22; - } else if (leaderboard.getPosition() == 3) { - itemSlot = 23; - } else if (leaderboard.getPosition() == 4) { - itemSlot = 29; - } else if (leaderboard.getPosition() == 5) { - itemSlot = 31; - } else if (leaderboard.getPosition() == 6) { - itemSlot = 33; - } else if (leaderboard.getPosition() == 7) { - itemSlot = 37; - } else if (leaderboard.getPosition() == 8) { - itemSlot = 40; - } else if (leaderboard.getPosition() == 9) { - itemSlot = 43; - } - - List itemLore = new ArrayList<>(); - - for (String itemLoreList : configLoad.getStringList( - "Menu.Leaderboard.Leaderboard.Item.Island." + viewer.getType().name() + ".Lore")) { - if (itemLoreList.contains("%signature")) { - if (visit.getSiganture() == null || visit.getSiganture().size() == 0) { - itemLore.add( - configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Island.Word.Empty")); - } else { - for (String signatureList : visit.getSiganture()) { - itemLore.add(signatureList); - } - } - } else { - itemLore.add(itemLoreList); - } - } - - nInv.addItem( - nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), - configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Island.Displayname") - .replace( - "%owner", playerName) - .replace("%position", "" + (leaderboard.getPosition() + 1)), - itemLore, - new Placeholder[] { - new Placeholder("%position", "" + (leaderboard.getPosition() + 1)), - new Placeholder("%owner", playerName), - new Placeholder("%level", "" + visit.getLevel().getLevel()), - new Placeholder("%balance", NumberUtil.formatNumberByDecimal(visit.getBankBalance())), - new Placeholder("%votes", "" + visit.getVoters().size()), - new Placeholder("%members", "" + visit.getMembers()) }, - null, null), - itemSlot); - } - - int[] itemSlots = new int[] { 13, 21, 22, 23, 29, 31, 33, 37, 40, 43 }; - - for (int i = 0; i < itemSlots.length; i++) { - if (!nInv.getItems().containsKey(itemSlots[i])) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "gi+wnQt/y4Z6E9rn65iDWmt8vUOM2WXY66XvtydqDJZTzwgFrjVcx2c5YwdzvtOIRtiX2nZt4n2uWesUFKb59xS24YWbxCDXnalHhCpPFcIP58SQbCm9AYp3UPzkcRNWzuV4BddrS608QQZGyIFOUaLPOPasGITZu51VLcOKcTyFOCKu1QE2yRo1orTH8bWfdpE769BB/VYGdny0qJtm1amc12wGiVifMJRutZmYo2ZdA0APhIJVaNsPppNESVcbeBCvk60l4QK43C/p98/QEe5U6UJ6Z6N01pBQcswubMu8lCuPLasep+vX3v2K+Ui9jnTQNreGNIZPWVjf6V1GH4xMbbUVQJsoPdcaXG855VdzyoW+kyHdWYEojSn0qAY/moH6JCLnx6PLCv9mITSvOIUHq8ITet0M7Z9KALY5s6eg6VdA8TvClRy2TTm9tIRt//TJo5JxBoTYujawGNSR7ryODj2UEDQ2xOyWSagxAXZpispdrO5jHxRmBZUwX9vxnAp+CNWxifpu9sINJTlqYsT/KlGOJQC483gv5B6Nm5VBB1DRFmQkohzO6Wc2eDixgEbaU795GlLxrNaFfNjVH6Bwr1e7df2H3nE0P0bexs4wYdWplijn4gPyHwjT2LDBPGFQK3Vo2SlaXfPYbkIHX21c9qaz3eWHpLEXUBQfnWc=", - "eyJ0aW1lc3RhbXAiOjE1MzE3MTcxNjY3MDAsInByb2ZpbGVJZCI6IjYwNmUyZmYwZWQ3NzQ4NDI5ZDZjZTFkMzMyMWM3ODM4IiwicHJvZmlsZU5hbWUiOiJNSEZfUXVlc3Rpb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2QzNGUwNjNjYWZiNDY3YTVjOGRlNDNlYzc4NjE5Mzk5ZjM2OWY0YTUyNDM0ZGE4MDE3YTk4M2NkZDkyNTE2YTAifX19"), - configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Empty.Displayname") - .replace("%position", "" + (i + 1)), - configLoad.getStringList("Menu.Leaderboard.Leaderboard.Item.Empty.Lore"), - new Placeholder[] { new Placeholder("%position", "" + (i + 1)) }, null, null), - itemSlots[i]); - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Leaderboard.Leaderboard.Title").replace("%leaderboard", - viewer.getType().name()))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } - } - - public static class Viewer { - - private Type type; - - public Viewer(Type type) { - this.type = type; - } - - public Type getType() { - return type; - } - - public enum Type { - - Browse, Level, Bank, Votes - - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Levelling.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Levelling.java deleted file mode 100644 index 55b5178f..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Levelling.java +++ /dev/null @@ -1,322 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.text.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.cooldown.Cooldown; -import me.goodandevil.skyblock.cooldown.CooldownManager; -import me.goodandevil.skyblock.cooldown.CooldownPlayer; -import me.goodandevil.skyblock.cooldown.CooldownType; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.item.MaterialUtil; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Levelling { - - private static Levelling instance; - - public static Levelling getInstance() { - if (instance == null) { - instance = new Levelling(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - LevellingManager levellingManager = skyblock.getLevellingManager(); - CooldownManager cooldownManager = skyblock.getCooldownManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (islandManager.getIsland(player) == null) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } - - if (playerDataManager.hasPlayerData(player)) { - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Levelling.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Levelling.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Levelling.Item.Statistics.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Levelling.Item.Nothing.Displayname"))))) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.FIREWORK_STAR.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Levelling.Item.Rescan.Displayname"))))) { - Island island = islandManager.getIsland(player); - OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID()); - - if (cooldownManager.hasPlayer(CooldownType.Levelling, offlinePlayer) && !player.hasPermission("fabledskyblock.bypass.cooldown")) { - CooldownPlayer cooldownPlayer = cooldownManager - .getCooldownPlayer(CooldownType.Levelling, offlinePlayer); - Cooldown cooldown = cooldownPlayer.getCooldown(); - - long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); - - if (cooldown.getTime() >= 3600) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Level.Cooldown.Message") - .replace("%time", durationTime[1] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") - + " " + durationTime[2] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") - + " " + durationTime[3] + " " + configLoad - .getString("Command.Island.Level.Cooldown.Word.Second"))); - } else if (cooldown.getTime() >= 60) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Level.Cooldown.Message") - .replace("%time", durationTime[2] + " " - + configLoad.getString("Command.Island.Level.Cooldown.Word.Minute") - + " " + durationTime[3] + " " + configLoad - .getString("Command.Island.Level.Cooldown.Word.Second"))); - } else { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Cooldown.Message") - .replace("%time", cooldown.getTime() + " " + configLoad - .getString("Command.Island.Level.Cooldown.Word.Second"))); - } - - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Level.Processing.Message")); - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - cooldownManager.createPlayer(CooldownType.Levelling, - Bukkit.getServer().getOfflinePlayer(island.getOwnerUUID())); - levellingManager.calculatePoints(player, island); - }); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { - PlayerData playerData1 = skyblock.getPlayerDataManager().getPlayerData(player); - - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Levelling.Item.Previous.Displayname")))) { - playerData1.setPage(playerData1.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Levelling.Item.Next.Displayname")))) { - playerData1.setPage(playerData1.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - }); - - Island island = islandManager.getIsland(player); - IslandLevel level = island.getLevel(); - - Map testIslandMaterials = level.getMaterials(); - List testIslandMaterialKeysOrdered = testIslandMaterials.keySet().stream().sorted().collect(Collectors.toList()); - LinkedHashMap islandMaterials = new LinkedHashMap<>(); - - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); - Config settingsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - - // Filter out ItemStacks that can't be displayed in the inventory - Inventory testInventory = Bukkit.createInventory(null, 9); - for (String materialName : testIslandMaterialKeysOrdered) { - if (mainConfig.getFileConfiguration().getString("Materials." + materialName + ".Points") == null) - continue; - if (!settingsConfig.getFileConfiguration().getBoolean("Island.Levelling.IncludeEmptyPointsInList") && - mainConfig.getFileConfiguration().getInt("Materials." + materialName + ".Points") <= 0) - continue; - - long value = testIslandMaterials.get(materialName); - Materials materials = Materials.fromString(materialName); - ItemStack is = materials.parseItem(); - - if (is == null || is.getItemMeta() == null) continue; - - is.setAmount(Math.min(Math.toIntExact(value), 64)); - is.setType(MaterialUtil.correctMaterial(is.getType())); - - testInventory.clear(); - testInventory.setItem(0, is); - if (testInventory.getItem(0) != null) { - islandMaterials.put(materialName, value); - } - } - - int playerMenuPage = playerData.getPage(), nextEndIndex = islandMaterials.size() - playerMenuPage * 36; - - nInv.addItem( - nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Levelling.Item.Exit.Displayname"), null, null, null, null), - 0, 8); - nInv.addItem(nInv.createItem(Materials.FIREWORK_STAR.parseItem(), - configLoad.getString("Menu.Levelling.Item.Rescan.Displayname"), - configLoad.getStringList("Menu.Levelling.Item.Rescan.Lore"), null, null, - new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 3, 5); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Levelling.Item.Statistics.Displayname"), - configLoad.getStringList("Menu.Levelling.Item.Statistics.Lore"), - new Placeholder[] { - new Placeholder("%level_points", NumberUtil.formatNumberByDecimal(level.getPoints())), - new Placeholder("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) }, - null, null), 4); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Levelling.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Levelling.Item.Previous.Displayname"), null, null, null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Levelling.Item.Next.Displayname"), null, null, null, null), 7); - } - - if (islandMaterials.size() == 0) { - nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Levelling.Item.Nothing.Displayname"), null, null, null, null), 31); - } else { - int index = playerMenuPage * 36 - 36, - endIndex = index >= islandMaterials.size() ? islandMaterials.size() - 1 : index + 36, - inventorySlot = 17; - - for (; index < endIndex; index++) { - if (islandMaterials.size() > index) { - String material = (String) islandMaterials.keySet().toArray()[index]; - Materials materials = Materials.fromString(material); - - if (materials != null) { - long materialAmount = islandMaterials.get(material); - - if (mainConfig.getFileConfiguration().getString("Materials." + material + ".Points") != null) { - int pointsMultiplier = mainConfig.getFileConfiguration().getInt("Materials." + material + ".Points"); - - if (settingsConfig.getFileConfiguration().getBoolean("Island.Levelling.IncludeEmptyPointsInList") || pointsMultiplier != 0) { - inventorySlot++; - - long pointsEarned = materialAmount * pointsMultiplier; - - ItemStack is = materials.parseItem(); - is.setAmount(Math.min(Math.toIntExact(materialAmount), 64)); - is.setType(MaterialUtil.correctMaterial(is.getType())); - - String name; - if (materials.isSpawner() && materials != Materials.SPAWNER) { - name = "Spawner: " + WordUtils.capitalize(material.replace("SPAWNER_", "").toLowerCase().replace("_", " ")).trim(); - } else { - name = WordUtils.capitalize(material.toLowerCase().replace("_", " ")).trim(); - } - - List lore = configLoad.getStringList("Menu.Levelling.Item.Material.Lore"); - lore.replaceAll(x -> x.replace("%points", NumberUtil.formatNumberByDecimal(pointsEarned)) - .replace("%blocks", NumberUtil.formatNumberByDecimal(materialAmount)) - .replace("%material", name)); - - nInv.addItem(nInv.createItem(is, configLoad - .getString("Menu.Levelling.Item.Material.Displayname") - .replace("%points", NumberUtil.formatNumberByDecimal(pointsEarned)) - .replace("%blocks", NumberUtil.formatNumberByDecimal(materialAmount)) - .replace("%material", name), - lore, null, null, null), inventorySlot); - } - } - } - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Levelling.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Members.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Members.java deleted file mode 100644 index a1d1be71..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Members.java +++ /dev/null @@ -1,603 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.StringUtil; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Members { - - private static Members instance; - - public static Members getInstance() { - if (instance == null) { - instance = new Members(); - } - - return instance; - } - - public void open(Player player, Members.Type type, Members.Sort sort) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - - if (playerData.getType() == null || playerData.getSort() == null) { - playerData.setType(Type.Default); - playerData.setSort(Sort.Default); - } - - ItemStack is = event.getItem(); - Island island = islandManager.getIsland(player); - - if (island == null) { - skyblock.getMessageManager().sendMessage(player, - configLoad.getString("Command.Island.Members.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Members.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Members.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Material.HOPPER) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Members.Item.Type.Displayname")))) { - Type type1 = (Type) playerData.getType(); - - if (type1.ordinal() + 1 == Type.values().length) { - playerData.setType(Type.Default); - } else { - playerData.setType(Type.values()[type1.ordinal() + 1]); - } - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Members.Item.Sort.Displayname")))) { - Sort sort1 = (Sort) playerData.getSort(); - - if (sort1.ordinal() + 1 == Sort.values().length) { - playerData.setSort(Sort.Default); - } else { - playerData.setSort(Sort.values()[sort1.ordinal() + 1]); - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 1L); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Members.Item.Statistics.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Members.Item.Nothing.Displayname"))))) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Members.Item.Previous.Displayname")))) { - playerData.setPage(playerData.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 1L); - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Members.Item.Next.Displayname")))) { - playerData.setPage(playerData.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 1L); - } else { - String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); - UUID playerUUID; - - Player targetPlayer = Bukkit.getServer().getPlayer(playerName); - - if (targetPlayer == null) { - playerUUID = new OfflinePlayer(playerName).getUUID(); - } else { - playerUUID = targetPlayer.getUniqueId(); - } - - if (!(playerUUID.equals(player.getUniqueId()) - || island.hasRole(IslandRole.Owner, playerUUID))) { - if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - if (event.getClick() == ClickType.LEFT) { - if (island.hasRole(IslandRole.Member, playerUUID)) { - Bukkit.getServer().dispatchCommand(player, - "island promote " + playerName); - } else { - Bukkit.getServer().dispatchCommand(player, - "island demote " + playerName); - } - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 3L); - - return; - } else if (event.getClick() == ClickType.RIGHT) { - Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 3L); - - return; - } - } else if (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Kick").getStatus()) { - Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 3L); - - return; - } - } - - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } - }); - - PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = islandManager.getIsland(player); - - List displayedMembers = new ArrayList<>(); - Set islandMembers = island.getRole(IslandRole.Member); - Set islandOperators = island.getRole(IslandRole.Operator); - - if (type == Members.Type.Default) { - displayedMembers.add(island.getOwnerUUID()); - displayedMembers.addAll(islandOperators); - displayedMembers.addAll(islandMembers); - } else if (type == Members.Type.Members) { - displayedMembers.addAll(islandMembers); - } else if (type == Members.Type.Operators) { - displayedMembers.addAll(islandOperators); - } else if (type == Members.Type.Owner) { - displayedMembers.add(island.getOwnerUUID()); - } - - if (sort == Members.Sort.Playtime) { - Map sortedPlaytimes = new TreeMap<>(); - - for (UUID displayedMemberList : displayedMembers) { - Player targetPlayer = Bukkit.getServer().getPlayer(displayedMemberList); - - if (targetPlayer == null) { - sortedPlaytimes.put(YamlConfiguration - .loadConfiguration( - new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - displayedMemberList.toString() + ".yml")) - .getInt("Statistics.Island.Playtime"), displayedMemberList); - } else { - sortedPlaytimes.put(skyblock.getPlayerDataManager().getPlayerData(targetPlayer).getPlaytime(), - displayedMemberList); - } - } - - displayedMembers.clear(); - - for (Integer sortedPlaytimeList : sortedPlaytimes.keySet()) { - displayedMembers.add(sortedPlaytimes.get(sortedPlaytimeList)); - } - } else if (sort == Members.Sort.MemberSince) { - Map sortedDates = new TreeMap<>(); - - for (UUID displayedMemberList : displayedMembers) { - Player targetPlayer = Bukkit.getServer().getPlayer(displayedMemberList); - - try { - if (targetPlayer == null) { - sortedDates - .put(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss") - .parse(YamlConfiguration - .loadConfiguration(new File( - new File(skyblock.getDataFolder().toString() - + "/player-data"), - displayedMemberList.toString() + ".yml")) - .getString("Statistics.Island.Join")), - displayedMemberList); - } else { - sortedDates.put(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse( - skyblock.getPlayerDataManager().getPlayerData(targetPlayer).getMemberSince()), - displayedMemberList); - } - } catch (ParseException e) { - e.printStackTrace(); - } - } - - displayedMembers.clear(); - - for (Date sortedDateList : sortedDates.keySet()) { - displayedMembers.add(sortedDates.get(sortedDateList)); - } - } else if (sort == Members.Sort.LastOnline) { - List onlineMembers = new ArrayList<>(displayedMembers); - Map sortedDates = new TreeMap<>(); - - for (UUID displayedMemberList : displayedMembers) { - Player targetPlayer = Bukkit.getServer().getPlayer(displayedMemberList); - - if (targetPlayer == null) { - onlineMembers.remove(displayedMemberList); - - try { - sortedDates - .put(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss") - .parse(YamlConfiguration - .loadConfiguration(new File( - new File(skyblock.getDataFolder().toString() - + "/player-data"), - displayedMemberList.toString() + ".yml")) - .getString("Statistics.Island.LastOnline")), - displayedMemberList); - } catch (ParseException e) { - e.printStackTrace(); - } - } - } - - displayedMembers.clear(); - displayedMembers.addAll(onlineMembers); - - for (Date sortedDateList : sortedDates.keySet()) { - displayedMembers.add(sortedDates.get(sortedDateList)); - } - } - - boolean[] operatorActions = new boolean[] { false, false }; - - if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - operatorActions = new boolean[] { true, true }; - } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { - if (island.getSetting(IslandRole.Operator, "Kick").getStatus()) { - operatorActions = new boolean[] { false, true }; - } - } - - int playerMenuPage = playerData.getPage(), nextEndIndex = displayedMembers.size() - playerMenuPage * 36; - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Members.Item.Exit.Displayname"), null, null, null, null), 0, 8); - nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), - configLoad.getString("Menu.Members.Item.Type.Displayname"), - configLoad.getStringList("Menu.Members.Item.Type.Lore"), - new Placeholder[] { new Placeholder("%type", type.name()) }, null, null), 3); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Members.Item.Statistics.Displayname"), - configLoad.getStringList("Menu.Members.Item.Statistics.Lore"), - new Placeholder[] { - new Placeholder("%island_members", - "" + (islandMembers.size() + islandOperators.size() + 1)), - new Placeholder("%island_capacity", - "" + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Member.Capacity")), - new Placeholder("%members", "" + islandMembers.size()), - new Placeholder("%operators", "" + islandOperators.size()) }, - null, null), 4); - nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), - configLoad.getString("Menu.Members.Item.Sort.Displayname"), - configLoad.getStringList("Menu.Members.Item.Sort.Lore"), - new Placeholder[] { new Placeholder("%sort", StringUtil.capatilizeUppercaseLetters(sort.name())) }, - null, null), 5); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Members.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Members.Item.Previous.Displayname"), null, null, null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Members.Item.Next.Displayname"), null, null, null, null), 7); - } - - if (displayedMembers.size() == 0) { - nInv.addItem( - nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Members.Item.Nothing.Displayname"), null, null, null, null), - 31); - } else { - int index = playerMenuPage * 36 - 36, - endIndex = index >= displayedMembers.size() ? displayedMembers.size() - 1 : index + 36, - inventorySlot = 17; - - for (; index < endIndex; index++) { - if (displayedMembers.size() > index) { - inventorySlot++; - - UUID playerUUID = displayedMembers.get(index); - - String[] playerTexture; - String playerName, islandRole, islandPlaytimeFormatted, memberSinceFormatted, - lastOnlineFormatted = ""; - - long[] playTimeDurationTime, memberSinceDurationTime = null, lastOnlineDurationTime = null; - - int islandPlaytime; - - Player targetPlayer = Bukkit.getServer().getPlayer(playerUUID); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(playerUUID); - playerName = offlinePlayer.getName(); - playerTexture = offlinePlayer.getTexture(); - islandPlaytime = offlinePlayer.getPlaytime(); - playTimeDurationTime = NumberUtil.getDuration(Integer.valueOf(islandPlaytime)); - - try { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - memberSinceDurationTime = NumberUtil.getDuration( - simpleDateFormat.parse(offlinePlayer.getMemberSince()), new Date()); - lastOnlineDurationTime = NumberUtil - .getDuration(simpleDateFormat.parse(offlinePlayer.getLastOnline()), new Date()); - } catch (ParseException e) { - e.printStackTrace(); - } - } else { - playerName = targetPlayer.getName(); - - playerData = skyblock.getPlayerDataManager().getPlayerData(targetPlayer); - playerTexture = playerData.getTexture(); - islandPlaytime = playerData.getPlaytime(); - playTimeDurationTime = NumberUtil.getDuration(Integer.valueOf(islandPlaytime)); - - try { - memberSinceDurationTime = NumberUtil.getDuration( - new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(playerData.getMemberSince()), - new Date()); - } catch (ParseException e) { - e.printStackTrace(); - } - } - - if (islandMembers.contains(playerUUID)) { - islandRole = configLoad.getString("Menu.Members.Item.Member.Role.Word.Member"); - } else if (islandOperators.contains(playerUUID)) { - islandRole = configLoad.getString("Menu.Members.Item.Member.Role.Word.Operator"); - } else { - islandRole = configLoad.getString("Menu.Members.Item.Member.Role.Word.Owner"); - } - - if (islandPlaytime >= 86400) { - islandPlaytimeFormatted = playTimeDurationTime[0] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Days") + ", " - + playTimeDurationTime[1] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " - + playTimeDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + playTimeDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else if (islandPlaytime >= 3600) { - islandPlaytimeFormatted = playTimeDurationTime[1] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " - + playTimeDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + playTimeDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else if (islandPlaytime >= 60) { - islandPlaytimeFormatted = playTimeDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + playTimeDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else { - islandPlaytimeFormatted = playTimeDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } - - if (memberSinceDurationTime[0] != 0L) { - memberSinceFormatted = memberSinceDurationTime[0] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Days") + ", " - + memberSinceDurationTime[1] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " - + memberSinceDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + memberSinceDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else if (memberSinceDurationTime[1] != 0L) { - memberSinceFormatted = memberSinceDurationTime[1] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " - + memberSinceDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + memberSinceDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else if (memberSinceDurationTime[2] != 0L) { - memberSinceFormatted = memberSinceDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + memberSinceDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else { - memberSinceFormatted = memberSinceDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } - - if (lastOnlineDurationTime != null) { - if (lastOnlineDurationTime[0] != 0L) { - lastOnlineFormatted = lastOnlineDurationTime[0] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Days") + ", " - + lastOnlineDurationTime[1] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " - + lastOnlineDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + lastOnlineDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else if (lastOnlineDurationTime[1] != 0L) { - lastOnlineFormatted = lastOnlineDurationTime[1] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Hours") + ", " - + lastOnlineDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + lastOnlineDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else if (lastOnlineDurationTime[2] != 0L) { - lastOnlineFormatted = lastOnlineDurationTime[2] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Minutes") + ", " - + lastOnlineDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } else { - lastOnlineFormatted = lastOnlineDurationTime[3] + " " - + configLoad.getString("Menu.Members.Item.Member.Word.Seconds"); - } - } - - List itemLore = new ArrayList<>(); - itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.Role.Lore")); - itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.Playtime.Lore")); - itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.Since.Lore")); - - if (lastOnlineDurationTime != null) { - itemLore.addAll(configLoad.getStringList("Menu.Members.Item.Member.LastOnline.Lore")); - } - - if (!(playerUUID.equals(player.getUniqueId()) - || island.hasRole(IslandRole.Owner, playerUUID))) { - if (operatorActions[0] && operatorActions[1]) { - if (!island.hasRole(IslandRole.Owner, playerUUID)) { - itemLore.add(""); - - if (island.hasRole(IslandRole.Member, playerUUID)) { - itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") - .replace("%click", - configLoad - .getString("Menu.Members.Item.Member.Word.Left-Click")) - .replace("%action", configLoad - .getString("Menu.Members.Item.Member.Action.Word.Promote"))); - } else { - itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") - .replace("%click", - configLoad - .getString("Menu.Members.Item.Member.Word.Left-Click")) - .replace("%action", configLoad - .getString("Menu.Members.Item.Member.Action.Word.Demote"))); - } - - itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") - .replace("%click", - configLoad.getString("Menu.Members.Item.Member.Word.Right-Click")) - .replace("%action", - configLoad.getString("Menu.Members.Item.Member.Action.Word.Kick"))); - } - } else if (!operatorActions[0] && operatorActions[1]) { - if (!(playerUUID.equals(player.getUniqueId()) - && island.getRole(IslandRole.Operator).contains(playerUUID) - && island.hasRole(IslandRole.Owner, playerUUID))) { - itemLore.add(""); - itemLore.add(configLoad.getString("Menu.Members.Item.Member.Action.Lore") - .replace("%click", - configLoad.getString("Menu.Members.Item.Member.Word.Click")) - .replace("%action", - configLoad.getString("Menu.Members.Item.Member.Action.Word.Kick"))); - } - } - } - - nInv.addItem( - nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), - configLoad.getString("Menu.Members.Item.Member.Displayname").replace("%player", - playerName), - itemLore, - new Placeholder[] { new Placeholder("%role", islandRole), - new Placeholder("%playtime", islandPlaytimeFormatted), - new Placeholder("%since", memberSinceFormatted), - new Placeholder("%last_online", lastOnlineFormatted) }, - null, null), - inventorySlot); - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Members.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } - - public enum Type { - - Default, Members, Operators, Owner; - - } - - public enum Sort { - - Default, Playtime, MemberSince, LastOnline; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Ownership.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Ownership.java deleted file mode 100644 index 3dcbebbf..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Ownership.java +++ /dev/null @@ -1,301 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Ownership { - - private static Ownership instance; - - public static Ownership getInstance() { - if (instance == null) { - instance = new Ownership(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!island.hasRole(IslandRole.Owner, player.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Ownership.Role.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (playerData.getType() == null) { - playerData.setType(Visibility.Hidden); - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Ownership.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Ownership.Item.Original.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Ownership.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.WRITABLE_BOOK.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Ownership.Item.Assign.Displayname"))))) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (playerDataManager.hasPlayerData(player)) { - Island island1 = islandManager.getIsland(player); - - if (island1 == null) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Ownership.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), - 1.0F, 1.0F); - - return; - } else if (!island1.hasRole(IslandRole.Owner, - player.getUniqueId())) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Ownership.Role.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), - 1.0F, 1.0F); - - return; - } - - Bukkit.getScheduler().runTask(skyblock, () -> Bukkit.getServer().dispatchCommand(player, - "island ownership " + event1.getName())); - } - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is1 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is1.getItemMeta(); - im.setDisplayName(configLoad.getString("Menu.Ownership.Item.Assign.Word.Enter")); - is1.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); - gui.open(); - }, 1L); - } else if ((is.getType() == Materials.LEGACY_EMPTY_MAP.getPostMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Ownership.Item.Password.Displayname"))))) { - if (island.hasPassword()) { - if (event.getClick() == ClickType.MIDDLE) { - Visibility visibility = (Visibility) playerData.getType(); - - if (visibility == Visibility.Hidden) { - playerData.setType(Visibility.Visible); - } else { - playerData.setType(Visibility.Hidden); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } else if (event.getClick() == ClickType.RIGHT) { - island.setPassword(null); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } else if (event.getClick() != ClickType.LEFT) { - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event12 -> { - if (event12.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (playerDataManager.hasPlayerData(player)) { - Island island12 = islandManager.getIsland(player); - - if (island12 == null) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Ownership.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), - 1.0F, 1.0F); - - return; - } else if (!island12.hasRole(IslandRole.Owner, - player.getUniqueId())) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Ownership.Role.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), - 1.0F, 1.0F); - - return; - } - - island12.setPassword( - event12.getName().replace("&", "").replace(" ", "")); - soundManager.playSound(player, Sounds.ANVIL_USE.bukkitSound(), 1.0F, - 1.0F); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, () -> open(player), 1L); - } - } else { - event12.setWillClose(false); - event12.setWillDestroy(false); - } - }); - - ItemStack is12 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is12.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Ownership.Item.Password.Hidden.Word.Enter")); - is12.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is12); - gui.open(); - }, 1L); - } - } - }); - - Island island = skyblock.getIslandManager().getIsland(player); - - UUID originalOwnerUUID = island.getOriginalOwnerUUID(); - - String originalOwnerName, ownershipPassword = island.getPassword(); - String[] playerTexture; - - Player targetPlayer = Bukkit.getServer().getPlayer(island.getOriginalOwnerUUID()); - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(originalOwnerUUID); - originalOwnerName = offlinePlayer.getName(); - playerTexture = offlinePlayer.getTexture(); - } else { - originalOwnerName = targetPlayer.getName(); - playerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); - } - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Ownership.Item.Exit.Displayname"), null, null, null, null), 0); - nInv.addItem(nInv.createItem(SkullUtil.create(playerTexture[0], playerTexture[1]), - configLoad.getString("Menu.Ownership.Item.Original.Displayname"), - configLoad.getStringList("Menu.Ownership.Item.Original.Lore"), - new Placeholder[] { new Placeholder("%player", originalOwnerName) }, null, null), 1); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Ownership.Item.Barrier.Displayname"), null, null, null, null), - 2); - nInv.addItem(nInv.createItem(Materials.WRITABLE_BOOK.parseItem(), - configLoad.getString("Menu.Ownership.Item.Assign.Displayname"), - configLoad.getStringList("Menu.Ownership.Item.Assign.Lore"), null, null, null), 3); - - if (island.hasPassword()) { - if (playerDataManager.getPlayerData(player).getType() == Ownership.Visibility.Hidden) { - nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), - configLoad.getString("Menu.Ownership.Item.Password.Displayname"), - configLoad.getStringList("Menu.Ownership.Item.Password.Hidden.Lore"), null, null, null), 4); - } else { - nInv.addItem( - nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), - configLoad.getString("Menu.Ownership.Item.Password.Displayname"), - configLoad.getStringList("Menu.Ownership.Item.Password.Visible.Lore"), - new Placeholder[] { new Placeholder("%password", ownershipPassword) }, null, null), - 4); - } - } else { - nInv.addItem( - nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), - configLoad.getString("Menu.Ownership.Item.Password.Displayname"), - configLoad.getStringList("Menu.Ownership.Item.Password.Unset.Lore"), null, null, null), - 4); - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Ownership.Title"))); - nInv.setType(InventoryType.HOPPER); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } - - public enum Visibility { - - Visible, Hidden; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Rollback.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Rollback.java deleted file mode 100644 index 1e2271a4..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Rollback.java +++ /dev/null @@ -1,206 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import me.goodandevil.skyblock.utils.version.NMSUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -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.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Rollback implements Listener { - - private static Rollback instance; - - public static Rollback getInstance() { - if (instance == null) { - instance = new Rollback(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - Config languageConfig = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = languageConfig.getFileConfiguration(); - - Inventory inv = Bukkit.createInventory(null, InventoryType.HOPPER, - ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Rollback.Title"))); - - ItemStack is; - ItemMeta im; - - List itemLore = new ArrayList<>(); - - is = Materials.BLACK_STAINED_GLASS_PANE.parseItem(); - im = is.getItemMeta(); - im.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Barrier.Displayname"))); - is.setItemMeta(im); - inv.setItem(1, is); - - is = new ItemStack(Materials.WRITABLE_BOOK.parseMaterial()); - im = is.getItemMeta(); - im.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Save.Displayname"))); - - for (String itemLoreList : configLoad.getStringList("Menu.Rollback.Item.Save.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - - im.setLore(itemLore); - is.setItemMeta(im); - inv.setItem(2, is); - itemLore.clear(); - - is = new ItemStack(Material.ENCHANTED_BOOK); - im = is.getItemMeta(); - im.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Load.Displayname"))); - - for (String itemLoreList : configLoad.getStringList("Menu.Rollback.Item.Load.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - - im.setLore(itemLore); - is.setItemMeta(im); - inv.setItem(3, is); - itemLore.clear(); - - is = new ItemStack(Material.HOPPER); - im = is.getItemMeta(); - im.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Reset.Displayname"))); - - for (String itemLoreList : configLoad.getStringList("Menu.Rollback.Item.Reset.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - - im.setLore(itemLore); - is.setItemMeta(im); - inv.setItem(4, is); - itemLore.clear(); - - player.openInventory(inv); - } - - @EventHandler - public void onInventoryClick(InventoryClickEvent event) { - Player player = (Player) event.getWhoClicked(); - ItemStack is = event.getCurrentItem(); - - if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) { - SkyBlock skyblock = SkyBlock.getInstance(); - - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - String inventoryName = ""; - if (NMSUtil.getVersionNumber() > 13) { - inventoryName = event.getView().getTitle(); - } else { - try { - inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Rollback.Title")))) { - event.setCancelled(true); - - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - config.getFileConfiguration().getString("Command.Island.Rollback.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } else if (!island.hasRole(IslandRole.Owner, player.getUniqueId())) { - messageManager.sendMessage(player, - config.getFileConfiguration().getString("Command.Island.Rollback.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } - - if ((event.getCurrentItem().getType() == Material.NAME_TAG) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Info.Displayname"))))) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - } else if ((event.getCurrentItem().getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - } else if ((event.getCurrentItem().getType() == Materials.WRITABLE_BOOK.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Save.Displayname"))))) { - /* - * new BukkitRunnable() { public void run() { for (Location.World worldList : - * Location.World.values()) { Location islandLocation = - * island.getLocation(worldList, Location.Environment.Island); - * - * try { Schematic.getInstance().save(new File(new - * File(skyblock.getDataFolder().toString() + "/rollback-data/" + - * island.getOwnerUUID().toString()), worldList.name() + ".schematic"), new - * Location(islandLocation.getWorld(), islandLocation.getBlockX() + 85, - * islandLocation.getBlockY(), islandLocation.getBlockZ() + 85), new - * Location(islandLocation.getWorld(), islandLocation.getBlockX() - 85, - * islandLocation.getBlockY(), islandLocation.getBlockZ() - 85)); } catch - * (Exception e) { e.printStackTrace(); } } } }.runTaskAsynchronously(skyblock); - */ - - soundManager.playSound(player, Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - } else if ((event.getCurrentItem().getType() == Material.ENCHANTED_BOOK) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Rollback.Item.Load.Displayname"))))) { - /* - * new BukkitRunnable() { public void run() { for (Location.World worldList : - * Location.World.values()) { Location islandLocation = - * island.getLocation(worldList, Location.Environment.Island); - * - * try { Schematic.getInstance().paste(new File(new - * File(skyblock.getDataFolder().toString() + "/rollback-data/" + - * island.getOwnerUUID().toString()), "Normal.schematic"), new - * Location(islandLocation.getWorld(), islandLocation.getBlockX() - 85, 0, - * islandLocation.getBlockZ() - 85), true); } catch (Exception e) { - * e.printStackTrace(); } } } }.runTaskAsynchronously(skyblock); - */ - - soundManager.playSound(player, Sounds.PISTON_EXTEND.bukkitSound(), 1.0F, 1.0F); - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Settings.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Settings.java deleted file mode 100644 index cf778190..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Settings.java +++ /dev/null @@ -1,1600 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandMessage; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.island.IslandSetting; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.visit.Visit; - -public class Settings { - - private static Settings instance; - - public static Settings getInstance() { - if (instance == null) { - instance = new Settings(); - } - - return instance; - } - - public void open(Player player, Settings.Type menuType, IslandRole role, Settings.Panel panel) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - Island island = islandManager.getIsland(player); - - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); - - if (menuType == Settings.Type.Categories) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - Island island13 = islandManager.getIsland(player); - - if (island13 == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!(island13.hasRole(IslandRole.Operator, player.getUniqueId()) - || island13.hasRole(IslandRole.Owner, player.getUniqueId()))) { - messageManager.sendMessage(player, configLoad.getString("Command.Island.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', - configLoad.getString("Menu.Settings.Categories.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', - configLoad.getString("Menu.Settings.Categories.Item.Coop.Displayname"))))) { - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Coop.Enable")) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Coop.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island13.getSetting(IslandRole.Operator, "Coop").getStatus()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Permission.Access.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Coop, null), 1L); - } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Settings.Categories.Item.Visitor.Displayname"))))) { - if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island13.getSetting(IslandRole.Operator, "Visitor").getStatus()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Permission.Access.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Settings.Categories.Item.Member.Displayname"))))) { - if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island13.getSetting(IslandRole.Operator, "Member").getStatus()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Permission.Access.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Member, null), 1L); - } else if ((is.getType() == Material.ITEM_FRAME) && (is.hasItemMeta()) && (is.getItemMeta() - .getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Settings.Categories.Item.Operator.Displayname"))))) { - if (island13.hasRole(IslandRole.Operator, player.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Permission.Access.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Operator, null), 1L); - } else if ((is.getType() == Materials.OAK_SAPLING.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Settings.Categories.Item.Owner.Displayname"))))) { - if (island13.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island13.getSetting(IslandRole.Operator, "Island").getStatus()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Permission.Access.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Owner, null), 1L); - } - } - }); - - nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), - configLoad.getString("Menu.Settings.Categories.Item.Visitor.Displayname"), - configLoad.getStringList("Menu.Settings.Categories.Item.Visitor.Lore"), null, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Settings.Categories.Item.Member.Displayname"), - configLoad.getStringList("Menu.Settings.Categories.Item.Member.Lore"), null, null, null), 3); - nInv.addItem(nInv.createItem(new ItemStack(Material.ITEM_FRAME), - configLoad.getString("Menu.Settings.Categories.Item.Operator.Displayname"), - configLoad.getStringList("Menu.Settings.Categories.Item.Operator.Lore"), null, null, null), 4); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Coop.Enable")) { - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Settings.Categories.Item.Exit.Displayname"), null, null, null, - null), 0); - nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), - configLoad.getString("Menu.Settings.Categories.Item.Coop.Displayname"), - configLoad.getStringList("Menu.Settings.Categories.Item.Coop.Lore"), null, null, null), 6); - nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), - configLoad.getString("Menu.Settings.Categories.Item.Owner.Displayname"), - configLoad.getStringList("Menu.Settings.Categories.Item.Owner.Lore"), null, null, null), 7); - } else { - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Settings.Categories.Item.Exit.Displayname"), null, null, null, - null), 0, 8); - nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), - configLoad.getString("Menu.Settings.Categories.Item.Owner.Displayname"), - configLoad.getStringList("Menu.Settings.Categories.Item.Owner.Lore"), null, null, null), 6); - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings.Categories.Title"))); - nInv.setRows(1); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else if (menuType == Settings.Type.Role && role != null) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - Island island14 = islandManager.getIsland(player); - - if (island14 == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!(island14.hasRole(IslandRole.Operator, player.getUniqueId()) - || island14.hasRole(IslandRole.Owner, player.getUniqueId()))) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (island14.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island14.getSetting(IslandRole.Operator, role.name()).getStatus()) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Permission.Access.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (role == IslandRole.Coop) { - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Coop.Enable")) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Coop.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings." + role.name() + ".Item.Return.Displayname"))))) { - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Categories, null, null), 1L); - } else if ((is.getType() == Material.PAPER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Settings.Visitor.Item.Signature.Displayname"))))) { - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Panel, null, Panel.Signature), 1L); - } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings.Visitor.Item.Welcome.Displayname"))))) { - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Panel, null, Panel.Welcome), 1L); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta() - .getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Settings.Visitor.Item.Statistics.Displayname"))))) { - if (island14.isOpen()) { - islandManager.closeIsland(island14); - soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else { - island14.setOpen(true); - soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); - } - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); - } else if (is.hasItemMeta()) { - String roleName = getRoleName(role); - - for (IslandSetting settingList : island14.getSettings(role)) { - if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings." + roleName + ".Item.Setting." - + settingList.getName() + ".Displayname")))) { - if (!hasPermission(island14, player, role)) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Settings.Permission.Change.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (settingList != null) { - if (settingList.getStatus()) { - settingList.setStatus(false); - } else { - settingList.setStatus(true); - } - - if (settingList.getName().equals("KeepItemsOnDeath") - || settingList.getName().equals("PvP") - || settingList.getName().equals("Damage")) { - island14.getVisit() - .setSafeLevel(islandManager.getIslandSafeLevel(island14)); - } - } - - break; - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, role, null), 1L); - } - } - }); - - if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop) { - if (role == IslandRole.Visitor) { - Config config = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "config.yml")); - Visit visit = island.getVisit(); - - if (config.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { - nInv.addItem(nInv.createItem(new ItemStack(Material.PAPER), - configLoad.getString("Menu.Settings.Visitor.Item.Signature.Displayname"), - configLoad.getStringList("Menu.Settings.Visitor.Item.Signature.Lore"), null, null, - null), 3); - } - - if (config.getFileConfiguration().getBoolean("Island.Visitor.Vote")) { - if (visit.isOpen()) { - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Open.Lore"), - new Placeholder[] { new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%votes", "" + visit.getVoters().size()), - new Placeholder("%visitors", - "" + islandManager.getVisitorsAtIsland(island).size()) }, - null, null), 4); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Closed.Lore"), - new Placeholder[] { new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%votes", "" + visit.getVoters().size()), - new Placeholder("%visitors", - "" + islandManager.getVisitorsAtIsland(island).size()) }, - null, null), 4); - } - } else { - if (visit.isOpen()) { - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Open.Lore"), - new Placeholder[] { new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%visitors", - "" + islandManager.getVisitorsAtIsland(island).size()) }, - null, null), 4); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Closed.Lore"), - new Placeholder[] { new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%visitors", - "" + islandManager.getVisitorsAtIsland(island).size()) }, - null, null), 4); - } - } - - if (config.getFileConfiguration().getBoolean("Island.Visitor.Welcome.Enable")) { - nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), - configLoad.getString("Menu.Settings.Visitor.Item.Welcome.Displayname"), - configLoad.getStringList("Menu.Settings.Visitor.Item.Welcome.Lore"), null, null, - null), 5); - } - } - - nInv.addItemStack(createItem(island, role, "Destroy", new ItemStack(Material.DIAMOND_PICKAXE)), 9); - nInv.addItemStack(createItem(island, role, "Place", new ItemStack(Material.GRASS)), 10); - nInv.addItemStack(createItem(island, role, "Anvil", new ItemStack(Material.ANVIL)), 11); - nInv.addItemStack(createItem(island, role, "ArmorStandUse", new ItemStack(Material.ARMOR_STAND)), - 12); - nInv.addItemStack(createItem(island, role, "Beacon", new ItemStack(Material.BEACON)), 13); - nInv.addItemStack(createItem(island, role, "Bed", Materials.WHITE_BED.parseItem()), 14); - nInv.addItemStack(createItem(island, role, "AnimalBreeding", new ItemStack(Material.WHEAT)), 15); - nInv.addItemStack(createItem(island, role, "Brewing", - new ItemStack(Materials.LEGACY_BREWING_STAND.getPostMaterial())), 16); - nInv.addItemStack(createItem(island, role, "Bucket", new ItemStack(Material.BUCKET)), 17); - nInv.addItemStack(createItem(island, role, "WaterCollection", new ItemStack(Material.POTION)), 18); - nInv.addItemStack(createItem(island, role, "Storage", new ItemStack(Material.CHEST)), 19); - nInv.addItemStack(createItem(island, role, "Workbench", Materials.CRAFTING_TABLE.parseItem()), 20); - nInv.addItemStack(createItem(island, role, "Crop", Materials.WHEAT_SEEDS.parseItem()), 21); - nInv.addItemStack(createItem(island, role, "Door", Materials.OAK_DOOR.parseItem()), 22); - nInv.addItemStack(createItem(island, role, "Gate", Materials.OAK_FENCE_GATE.parseItem()), 23); - nInv.addItemStack(createItem(island, role, "Projectile", new ItemStack(Material.ARROW)), 24); - nInv.addItemStack(createItem(island, role, "Enchant", Materials.ENCHANTING_TABLE.parseItem()), 25); - nInv.addItemStack(createItem(island, role, "Fire", new ItemStack(Material.FLINT_AND_STEEL)), 26); - nInv.addItemStack(createItem(island, role, "Furnace", new ItemStack(Material.FURNACE)), 27); - nInv.addItemStack(createItem(island, role, "HorseInventory", Materials.CHEST_MINECART.parseItem()), - 28); - nInv.addItemStack(createItem(island, role, "MobRiding", new ItemStack(Material.SADDLE)), 29); - nInv.addItemStack(createItem(island, role, "MobHurting", Materials.WOODEN_SWORD.parseItem()), 30); - nInv.addItemStack(createItem(island, role, "MobTaming", Materials.POPPY.parseItem()), 31); - nInv.addItemStack(createItem(island, role, "Leash", Materials.LEAD.parseItem()), 32); - nInv.addItemStack(createItem(island, role, "LeverButton", new ItemStack(Material.LEVER)), 33); - nInv.addItemStack(createItem(island, role, "Milking", new ItemStack(Material.MILK_BUCKET)), 34); - nInv.addItemStack(createItem(island, role, "Jukebox", new ItemStack(Material.JUKEBOX)), 35); - nInv.addItemStack( - createItem(island, role, "PressurePlate", Materials.OAK_PRESSURE_PLATE.parseItem()), 36); - nInv.addItemStack(createItem(island, role, "Redstone", new ItemStack(Material.REDSTONE)), 37); - nInv.addItemStack(createItem(island, role, "Shearing", new ItemStack(Material.SHEARS)), 38); - nInv.addItemStack(createItem(island, role, "Trading", new ItemStack(Material.EMERALD)), 39); - nInv.addItemStack(createItem(island, role, "ItemDrop", new ItemStack(Material.PUMPKIN_SEEDS)), 40); - nInv.addItemStack(createItem(island, role, "ItemPickup", new ItemStack(Material.MELON_SEEDS)), 41); - nInv.addItemStack(createItem(island, role, "Fishing", new ItemStack(Material.FISHING_ROD)), 42); - nInv.addItemStack(createItem(island, role, "DropperDispenser", new ItemStack(Material.DISPENSER)), - 43); - nInv.addItemStack(createItem(island, role, "SpawnEgg", new ItemStack(Material.EGG)), 44); - nInv.addItemStack(createItem(island, role, "HangingDestroy", new ItemStack(Material.ITEM_FRAME)), - 45); - nInv.addItemStack(createItem(island, role, "Cake", new ItemStack(Material.CAKE)), 46); - nInv.addItemStack(createItem(island, role, "DragonEggUse", new ItemStack(Material.DRAGON_EGG)), 47); - nInv.addItemStack(createItem(island, role, "MinecartBoat", new ItemStack(Material.MINECART)), 48); - nInv.addItemStack(createItem(island, role, "Portal", new ItemStack(Material.ENDER_PEARL)), 50); - nInv.addItemStack(createItem(island, role, "Hopper", new ItemStack(Material.HOPPER)), 51); - nInv.addItemStack(createItem(island, role, "EntityPlacement", new ItemStack(Material.ARMOR_STAND)), - 52); - nInv.addItemStack( - createItem(island, role, "ExperienceOrbPickup", Materials.EXPERIENCE_BOTTLE.parseItem()), - 53); - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings." + role.name() + ".Title"))); - nInv.setRows(6); - } else if (role == IslandRole.Operator) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Banning")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 10); - nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), - 11); - nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 13); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 14); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 15); - nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), - 16); - nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), - 17); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), - 22); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); - } else { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 10); - nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), - 11); - nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 13); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 14); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 15); - nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), - 16); - nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), - 17); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 11); - nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), - 12); - nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), - 13); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 14); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 15); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 16); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), - 22); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); - } else { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 11); - nInv.addItemStack(createItem(island, role, "Ban", new ItemStack(Material.IRON_AXE)), - 12); - nInv.addItemStack(createItem(island, role, "Unban", Materials.RED_DYE.parseItem()), - 13); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 14); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 15); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 16); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); - } - } - - nInv.setRows(3); - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 11); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 12); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 13); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 14); - nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), - 15); - nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), - 16); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), - 22); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); - } else { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 11); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 12); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 13); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 14); - nInv.addItemStack(createItem(island, role, "Coop", new ItemStack(Material.NAME_TAG)), - 15); - nInv.addItemStack(createItem(island, role, "CoopPlayers", new ItemStack(Material.BOOK)), - 16); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 24); - } - - nInv.setRows(3); - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 11); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 12); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 13); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 14); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 15); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 16); - nInv.addItemStack(createItem(island, role, "Border", new ItemStack(Material.BEACON)), - 21); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 22); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 23); - - nInv.setRows(3); - } else { - nInv.addItemStack( - createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); - nInv.addItemStack(createItem(island, role, "Kick", new ItemStack(Material.IRON_DOOR)), - 10); - nInv.addItemStack(createItem(island, role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), - 11); - nInv.addItemStack(createItem(island, role, "Member", new ItemStack(Material.PAINTING)), - 12); - nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseItem()), - 13); - nInv.addItemStack( - createItem(island, role, "MainSpawn", new ItemStack(Material.EMERALD)), 14); - nInv.addItemStack( - createItem(island, role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 15); - nInv.addItemStack(createItem(island, role, "Biome", new ItemStack(Material.MAP)), 16); - nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseItem()), 17); - - nInv.setRows(2); - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings." + role.name() + ".Title"))); - } else if (role == IslandRole.Owner) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 14); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 17); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 16); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 17); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 16); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 17); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 13); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 16); - } - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 17); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 13); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 13); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 16); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 14); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 15); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 16); - } - } - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 11); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 12); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 14); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 17); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 14); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 14); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 16); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack(createItem(island, role, "KeepItemsOnDeath", - new ItemStack(Material.ITEM_FRAME)), 16); - } - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 14); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 15); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 16); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack( - createItem(island, role, "Damage", Materials.RED_DYE.parseItem()), 16); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 10); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 12); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - nInv.addItemStack( - createItem(island, role, "Hunger", new ItemStack(Material.COOKED_BEEF)), - 16); - } else { - nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", - Materials.PIG_SPAWN_EGG.parseItem()), 11); - nInv.addItemStack( - createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 12); - nInv.addItemStack( - createItem(island, role, "Explosions", Materials.GUNPOWDER.parseItem()), - 13); - nInv.addItemStack(createItem(island, role, "FireSpread", - new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack( - createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), - 15); - } - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings." + role.name() + ".Title"))); - nInv.setRows(2); - } - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Settings." + role.name() + ".Item.Return.Displayname"), null, null, - null, null), 0, 8); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else if (menuType == Settings.Type.Panel) { - if (panel == Settings.Panel.Welcome) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - Island island15 = islandManager.getIsland(player); - - if (island15 == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!(island15.hasRole(IslandRole.Operator, player.getUniqueId()) - || island15.hasRole(IslandRole.Owner, player.getUniqueId()))) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (!skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Welcome.Enable")) { - messageManager.sendMessage(player, - configLoad.getString("Island.Settings.Visitor.Welcome.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Welcome.Item.Return.Displayname"))))) { - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Item.Statistics.Displayname"))))) { - if (island15.isOpen()) { - islandManager.closeIsland(island15); - soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else { - island15.setOpen(true); - soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); - } - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); - } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Welcome.Item.Message.Displayname"))))) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() - .getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Displayname"))))) { - if (island15.getMessage(IslandMessage.Welcome).size() >= skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Visitor.Welcome.Lines")) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - Island island1 = islandManager.getIsland(player); - - if (island1 == null) { - messageManager.sendMessage(player, - configLoad.getString( - "Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - player.closeInventory(); - - event1.setWillClose(true); - event1.setWillDestroy(true); - - return; - } else if (!(island1.hasRole(IslandRole.Operator, - player.getUniqueId()) - || island1.hasRole(IslandRole.Owner, - player.getUniqueId()))) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Role.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - player.closeInventory(); - - event1.setWillClose(true); - event1.setWillDestroy(true); - - return; - } else if (!skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), - "config.yml")) - .getFileConfiguration() - .getBoolean("Island.Visitor.Welcome.Enable")) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Settings.Visitor.Welcome.Disabled.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event1.setWillClose(true); - event1.setWillDestroy(true); - - return; - } - - Config config1 = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), - "config.yml")); - FileConfiguration configLoad1 = config1 - .getFileConfiguration(); - - if (island1.getMessage(IslandMessage.Welcome) - .size() > configLoad1 - .getInt("Island.Visitor.Welcome.Lines") - || event1.getName().length() > configLoad1 - .getInt("Island.Visitor.Welcome.Length")) { - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - } else { - List welcomeMessage = island1 - .getMessage(IslandMessage.Welcome); - welcomeMessage.add(event1.getName()); - island1.setMessage(IslandMessage.Welcome, - player.getName(), welcomeMessage); - soundManager.playSound(player, - Sounds.NOTE_PLING.bukkitSound(), 1.0F, - 1.0F); - } - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player, - Type.Panel, - null, - Panel.Welcome), 1L); - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is1 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is1.getItemMeta(); - im.setDisplayName(configLoad.getString( - "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Word.Enter")); - is1.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); - gui.open(); - }, 1L); - } - } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() - .getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Displayname"))))) { - List welcomeMessage = island15.getMessage(IslandMessage.Welcome); - - if (welcomeMessage.size() == 0) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - welcomeMessage.remove(welcomeMessage.size() - 1); - island15.setMessage(IslandMessage.Welcome, - island15.getMessageAuthor(IslandMessage.Welcome), welcomeMessage); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, Type.Panel, null, Panel.Welcome), 1L); - } - } - } - }); - - List welcomeMessage = island.getMessage(IslandMessage.Welcome); - - if (welcomeMessage.size() == mainConfig.getFileConfiguration() - .getInt("Island.Visitor.Welcome.Lines")) { - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Displayname"), - configLoad - .getStringList("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Limit.Lore"), - null, null, null), 1); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.Displayname"), - configLoad.getStringList("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Add.More.Lore"), - null, null, null), 1); - } - - if (welcomeMessage.size() == 0) { - List itemLore = new ArrayList<>(); - itemLore.add( - configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Message.Word.Empty")); - nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), - configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Message.Displayname"), - itemLore, null, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad - .getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.None.Lore"), - null, null, null), 3); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial(), welcomeMessage.size()), - configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Message.Displayname"), - welcomeMessage, null, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad - .getString("Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Panel.Welcome.Item.Line.Remove.Lines.Lore"), - null, null, null), 3); - } - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Item.Return.Displayname"), null, - null, null, null), 0, 4); - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings.Visitor.Panel.Welcome.Title"))); - nInv.setType(InventoryType.HOPPER); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else if (panel == Settings.Panel.Signature) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - Island island12 = islandManager.getIsland(player); - - if (island12 == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (!(island12.hasRole(IslandRole.Operator, player.getUniqueId()) - || island12.hasRole(IslandRole.Owner, player.getUniqueId()))) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Role.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (!skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable")) { - messageManager.sendMessage(player, - configLoad.getString("Island.Settings.Visitor.Signature.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Signature.Item.Return.Displayname"))))) { - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals( - ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Item.Statistics.Displayname"))))) { - if (island12.isOpen()) { - islandManager.closeIsland(island12); - soundManager.playSound(player, Sounds.DOOR_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else { - island12.setOpen(true); - soundManager.playSound(player, Sounds.DOOR_OPEN.bukkitSound(), 1.0F, 1.0F); - } - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, Type.Role, IslandRole.Visitor, null), 1L); - } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Signature.Item.Message.Displayname"))))) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() - .getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Displayname"))))) { - if (island12.getMessage(IslandMessage.Signature).size() >= skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Visitor.Signature.Lines")) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - Island island1 = islandManager.getIsland(player); - - if (island1 == null) { - messageManager.sendMessage(player, - configLoad.getString( - "Command.Island.Settings.Owner.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - player.closeInventory(); - - event1.setWillClose(true); - event1.setWillDestroy(true); - - return; - } else if (!(island1.hasRole(IslandRole.Operator, - player.getUniqueId()) - || island1.hasRole(IslandRole.Owner, - player.getUniqueId()))) { - messageManager.sendMessage(player, configLoad - .getString("Command.Island.Role.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - player.closeInventory(); - - event1.setWillClose(true); - event1.setWillDestroy(true); - - return; - } else if (!skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), - "config.yml")) - .getFileConfiguration().getBoolean( - "Island.Visitor.Signature.Enable")) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Settings.Visitor.Signature.Disabled.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event1.setWillClose(true); - event1.setWillDestroy(true); - - return; - } - - Config config1 = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), - "config.yml")); - FileConfiguration configLoad1 = config1 - .getFileConfiguration(); - - if (island1.getMessage(IslandMessage.Signature) - .size() > configLoad1.getInt( - "Island.Visitor.Signature.Lines") - || event1.getName().length() > configLoad1 - .getInt("Island.Visitor.Signature.Length")) { - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - } else { - List signatureMessage = island1 - .getMessage(IslandMessage.Signature); - signatureMessage.add(event1.getName()); - island1.setMessage(IslandMessage.Signature, - player.getName(), signatureMessage); - soundManager.playSound(player, - Sounds.NOTE_PLING.bukkitSound(), 1.0F, - 1.0F); - } - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player, - Type.Panel, - null, - Panel.Signature), 1L); - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is12 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is12.getItemMeta(); - im.setDisplayName(configLoad.getString( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Word.Enter")); - is12.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is12); - gui.open(); - }, 1L); - } - } else if ((is.getType() == Material.ARROW) && (is.hasItemMeta()) && (is.getItemMeta() - .getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Displayname"))))) { - List signatureMessage = island12.getMessage(IslandMessage.Signature); - - if (signatureMessage.size() == 0) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - signatureMessage.remove(signatureMessage.size() - 1); - island12.setMessage(IslandMessage.Signature, - island12.getMessageAuthor(IslandMessage.Signature), signatureMessage); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, Type.Panel, null, - Panel.Signature), 1L); - } - } - } - }); - - List signatureMessage = island.getMessage(IslandMessage.Signature); - - if (signatureMessage.size() == mainConfig.getFileConfiguration() - .getInt("Island.Visitor.Signature.Lines")) { - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Limit.Lore"), - null, null, null), 1); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.Displayname"), - configLoad - .getStringList("Menu.Settings.Visitor.Panel.Signature.Item.Line.Add.More.Lore"), - null, null, null), 1); - } - - if (signatureMessage.size() == 0) { - List itemLore = new ArrayList<>(); - itemLore.add( - configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Message.Word.Empty")); - nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), - configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Message.Displayname"), - itemLore, null, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad.getString( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.None.Lore"), - null, null, null), 3); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial(), signatureMessage.size()), - configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Message.Displayname"), - signatureMessage, null, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.ARROW), - configLoad.getString( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Displayname"), - configLoad.getStringList( - "Menu.Settings.Visitor.Panel.Signature.Item.Line.Remove.Lines.Lore"), - null, null, null), 3); - } - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Item.Return.Displayname"), null, - null, null, null), 0, 4); - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings.Visitor.Panel.Signature.Title"))); - nInv.setType(InventoryType.HOPPER); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } - } - } - - private ItemStack createItem(Island island, IslandRole role, String setting, ItemStack is) { - SkyBlock skyblock = SkyBlock.getInstance(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - List itemLore = new ArrayList<>(); - - ItemMeta im = is.getItemMeta(); - - String roleName = role.name(); - - if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop) { - roleName = "Default"; - } - - im.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Settings." + roleName + ".Item.Setting." + setting + ".Displayname"))); - - if (island.getSetting(role, setting).getStatus()) { - for (String itemLoreList : configLoad - .getStringList("Menu.Settings." + roleName + ".Item.Setting.Status.Enabled.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - } else { - for (String itemLoreList : configLoad - .getStringList("Menu.Settings." + roleName + ".Item.Setting.Status.Disabled.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - } - - im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); - im.setLore(itemLore); - is.setItemMeta(im); - - return is; - } - - private String getRoleName(IslandRole role) { - if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop) { - return "Default"; - } - - return role.name(); - } - - private boolean hasPermission(Island island, Player player, IslandRole role) { - if (role == IslandRole.Visitor || role == IslandRole.Member || role == IslandRole.Coop - || role == IslandRole.Owner) { - String roleName = role.name(); - - if (role == IslandRole.Owner) { - roleName = "Island"; - } - - if (island.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island.getSetting(IslandRole.Operator, roleName).getStatus()) { - return false; - } - } else if (role == IslandRole.Operator) { - if (!island.hasRole(IslandRole.Owner, player.getUniqueId())) { - return false; - } - } - - return true; - } - - public enum Panel { - - Welcome, Signature; - - } - - public enum Type { - - Categories, Panel, Role; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Upgrade.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Upgrade.java deleted file mode 100644 index 82f9ff73..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Upgrade.java +++ /dev/null @@ -1,798 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.island.IslandUpgradeEvent; -import me.goodandevil.skyblock.api.utils.APIUtil; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.economy.EconomyManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.upgrade.UpgradeManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.PotionMeta; -import org.bukkit.potion.PotionData; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; -import org.bukkit.potion.PotionType; - -import java.io.File; -import java.util.List; - -public class Upgrade { - - private static Upgrade instance; - - public static Upgrade getInstance() { - if (instance == null) { - instance = new Upgrade(); - } - - return instance; - } - - @SuppressWarnings("deprecation") - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - EconomyManager economyManager = skyblock.getEconomyManager(); - MessageManager messageManager = skyblock.getMessageManager(); - UpgradeManager upgradeManager = skyblock.getUpgradeManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - if (!economyManager.isEconomy()) { - messageManager.sendMessage(player, configLoad.getString("Island.Upgrade.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (playerDataManager.hasPlayerData(player) && playerDataManager.getPlayerData(player).getOwner() != null) { - Island island = islandManager.getIsland(player); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (!economyManager.isEconomy()) { - messageManager.sendMessage(player, configLoad.getString("Island.Upgrade.Disabled.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - - if (playerData.getOwner() == null) { - messageManager.sendMessage(player, configLoad.getString("Island.Upgrade.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Material.POTION) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")))) { - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed)) { - if (island.isUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed)) { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed, - false); - - for (Player all : islandManager.getPlayersAtIsland(island)) { - all.removePotionEffect(PotionEffectType.SPEED); - } - } else { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed, - true); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (economyManager.hasBalance(player, upgrade.getCost())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Bought.Message") - .replace("%upgrade", is.getItemMeta().getDisplayName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - economyManager.withdraw(player, upgrade.getCost()); - island.setUpgrade(player, - me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed, true); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Money.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")))) { - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump)) { - if (island.isUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump)) { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump, - false); - - for (Player all : islandManager.getPlayersAtIsland(island)) { - all.removePotionEffect(PotionEffectType.JUMP); - } - } else { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump, - true); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (economyManager.hasBalance(player, upgrade.getCost())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Bought.Message") - .replace("%upgrade", is.getItemMeta().getDisplayName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - economyManager.withdraw(player, upgrade.getCost()); - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump, - true); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Money.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } - } else if ((is.getType() == Materials.WHEAT_SEEDS.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Crop.Displayname"))))) { - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop)) { - if (island.isUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop)) { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop, false); - } else { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop, true); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (economyManager.hasBalance(player, upgrade.getCost())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Bought.Message") - .replace("%upgrade", is.getItemMeta().getDisplayName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - economyManager.withdraw(player, upgrade.getCost()); - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop, - true); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Money.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } else if ((is.getType() == Material.FEATHER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Fly.Displayname"))))) { - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly)) { - if (island.isUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly)) { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly, false); - islandManager.updateFlightAtIsland(island); - } else { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly, true); - islandManager.updateFlightAtIsland(island); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (economyManager.hasBalance(player, upgrade.getCost())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Bought.Message") - .replace("%upgrade", is.getItemMeta().getDisplayName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - economyManager.withdraw(player, upgrade.getCost()); - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly, - true); - - islandManager.updateFlightAtIsland(island); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Money.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } else if ((is.getType() == Material.SPIDER_EYE) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Drops.Displayname"))))) { - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops)) { - if (island.isUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops)) { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops, - false); - } else { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops, true); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (economyManager.hasBalance(player, upgrade.getCost())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Bought.Message") - .replace("%upgrade", is.getItemMeta().getDisplayName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - economyManager.withdraw(player, upgrade.getCost()); - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops, - true); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Money.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } else if ((is.getType() == Material.BEACON) && (is.hasItemMeta())) { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); - - if (upgrades != null && upgrades.size() > 0) { - for (int i = 0; i < upgrades.size(); i++) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(i); - int tier = i + 1; - - if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Size.Displayname") - .replace("%tier", "" + tier)))) { - if (upgrade.getValue() > island.getSize() - && upgrade.getValue() != island.getSize()) { - if (economyManager.hasBalance(player, upgrade.getCost())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Bought.Message").replace( - "%upgrade", is.getItemMeta().getDisplayName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, - 1.0F); - - economyManager.withdraw(player, upgrade.getCost()); - island.setSize(upgrade.getValue()); - - Bukkit.getServer().getPluginManager().callEvent(new IslandUpgradeEvent( - island.getAPIWrapper(), player, APIUtil.fromImplementation( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size))); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Money.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - - return; - } - } - } - - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Claimed.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else if ((is.getType() == Materials.SPAWNER.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname"))))) { - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner)) { - if (island.isUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner)) { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner, - false); - } else { - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner, - true); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (economyManager.hasBalance(player, upgrade.getCost())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Bought.Message") - .replace("%upgrade", is.getItemMeta().getDisplayName())); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - economyManager.withdraw(player, upgrade.getCost()); - island.setUpgrade(player, me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner, - true); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Money.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Upgrade.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - } - } - } - }); - - List upgrades; - - ItemStack potion = new ItemStack(Material.POTION); - int NMSVersion = NMSUtil.getVersionNumber(); - - upgrades = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (NMSVersion > 8) { - PotionMeta pm = (PotionMeta) potion.getItemMeta(); - - if (NMSVersion > 9) { - pm.setBasePotionData(new PotionData(PotionType.SPEED)); - } else { - pm.addCustomEffect(new PotionEffect(PotionEffectType.SPEED, 1, 0), true); - } - - potion.setItemMeta(pm); - } else { - potion = new ItemStack(Material.POTION, 1, (short) 8194); - } - - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed)) { - nInv.addItem(nInv.createItem(potion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Speed.Claimed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", - getStatus(island, me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed)) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 0); - } else { - if (economyManager.hasBalance(player, upgrade.getCost())) { - nInv.addItem(nInv.createItem(potion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Speed.Claimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 0); - } else { - nInv.addItem(nInv.createItem(potion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Speed.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Speed.Unclaimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 0); - } - } - } - - upgrades = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (NMSVersion > 8) { - potion = new ItemStack(Material.POTION); - PotionMeta pm = (PotionMeta) potion.getItemMeta(); - - if (NMSVersion > 9) { - pm.setBasePotionData(new PotionData(PotionType.JUMP)); - } else { - pm.addCustomEffect(new PotionEffect(PotionEffectType.JUMP, 1, 0), true); - } - - potion.setItemMeta(pm); - } else { - potion = new ItemStack(Material.POTION, 1, (short) 8203); - } - - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump)) { - nInv.addItem(nInv.createItem(potion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Jump.Claimed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", - getStatus(island, me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump)) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 1); - } else { - if (economyManager.hasBalance(player, upgrade.getCost())) { - nInv.addItem(nInv.createItem(potion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Jump.Claimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 1); - } else { - nInv.addItem(nInv.createItem(potion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Jump.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Jump.Unclaimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 1); - } - } - } - - upgrades = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop)) { - nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Crop.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Crop.Claimed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", - getStatus(island, me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop)) }, - null, null), 3); - } else { - if (economyManager.hasBalance(player, upgrade.getCost())) { - nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Crop.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Crop.Claimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 3); - } else { - nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Crop.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Crop.Unclaimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 3); - } - } - } - - upgrades = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly)) { - nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Fly.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Fly.Claimed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", - getStatus(island, me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly)) }, - null, null), 4); - } else { - if (economyManager.hasBalance(player, upgrade.getCost())) { - nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Fly.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Fly.Claimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 4); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Fly.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Fly.Unclaimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 4); - } - } - } - - upgrades = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops)) { - nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Drops.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Drops.Claimed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", - getStatus(island, me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops)) }, - null, null), 5); - } else { - if (economyManager.hasBalance(player, upgrade.getCost())) { - nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Drops.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Drops.Claimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 5); - } else { - nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Drops.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Drops.Unclaimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 5); - } - } - } - - upgrades = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); - - if (upgrades != null && upgrades.size() > 0) { - for (int i = 0; i < upgrades.size(); i++) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(i); - int tier = i + 1; - - if (tier != upgrades.size()) { - if (upgrade.getValue() <= island.getSize()) { - continue; - } - } - - if (island.getSize() >= upgrade.getValue()) { - nInv.addItem(nInv.createItem(new ItemStack(Material.BEACON), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Size.Displayname").replace("%tier", - "" + tier)), - configLoad.getStringList("Menu.Upgrade.Item.Size.Claimed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%tier", "" + tier), - new Placeholder("%size", "" + upgrade.getValue()) }, - null, null), 7); - } else { - if (economyManager.hasBalance(player, upgrade.getCost())) { - nInv.addItem( - nInv.createItem(new ItemStack(Material.BEACON), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Size.Displayname") - .replace("%tier", "" + tier)), - configLoad.getStringList("Menu.Upgrade.Item.Size.Claimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", - NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%tier", "" + tier), - new Placeholder("%size", "" + upgrade.getValue()) }, - null, null), - 7); - } else { - nInv.addItem( - nInv.createItem(new ItemStack(Material.BEACON), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Size.Displayname") - .replace("%tier", "" + tier)), - configLoad.getStringList("Menu.Upgrade.Item.Size.Unclaimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", - NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%tier", "" + tier), - new Placeholder("%size", "" + upgrade.getValue()) }, - null, null), - 7); - } - } - - break; - } - } - - upgrades = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner); - - if (upgrades != null && upgrades.size() > 0 && upgrades.get(0).isEnabled()) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(0); - - if (island.hasUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner)) { - nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Spawner.Claimed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", - getStatus(island, me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner)) }, - null, null), 8); - } else { - if (economyManager.hasBalance(player, upgrade.getCost())) { - nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Spawner.Claimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 8); - } else { - nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Upgrade.Item.Spawner.Displayname")), - configLoad.getStringList("Menu.Upgrade.Item.Spawner.Unclaimable.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), 8); - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Upgrade.Title"))); - nInv.setRows(1); - nInv.open(); - } - } - - private String getStatus(Island island, me.goodandevil.skyblock.upgrade.Upgrade.Type type) { - SkyBlock skyblock = SkyBlock.getInstance(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); - String upgradeStatus; - - if (island.isUpgrade(type)) { - upgradeStatus = configLoad.getString("Menu.Upgrade.Item.Word.Disable"); - } else { - upgradeStatus = configLoad.getString("Menu.Upgrade.Item.Word.Enable"); - } - - return upgradeStatus; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Visit.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Visit.java deleted file mode 100644 index 5c597fde..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Visit.java +++ /dev/null @@ -1,550 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.StringUtil; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.visit.VisitManager; - -public class Visit { - - private static Visit instance; - - public static Visit getInstance() { - if (instance == null) { - instance = new Visit(); - } - - return instance; - } - - public void open(Player player, Visit.Type type, Visit.Sort sort) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - VisitManager visitManager = skyblock.getVisitManager(); - FileManager fileManager = skyblock.getFileManager(); - - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - - if (playerData.getType() == null || playerData.getSort() == null) { - playerData.setType(Type.Default); - playerData.setSort(Sort.Default); - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Statistics.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Material.HOPPER) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Type.Displayname")))) { - Type type1 = (Type) playerData.getType(); - - if (type1.ordinal() + 1 == Type.values().length) { - playerData.setType(Type.Default); - } else { - playerData.setType(Type.values()[type1.ordinal() + 1]); - } - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Sort.Displayname")))) { - Sort sort1 = (Sort) playerData.getSort(); - - if (sort1.ordinal() + 1 == Sort.values().length) { - playerData.setSort(Sort.Default); - } else { - playerData.setSort(Sort.values()[sort1.ordinal() + 1]); - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); - } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Nothing.Displayname"))))) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Previous.Displayname")))) { - playerData.setPage(playerData.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visit.Item.Next.Displayname")))) { - playerData.setPage(playerData.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); - } else { - String targetPlayerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); - UUID targetPlayerUUID; - - Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerName); - - if (targetPlayer == null) { - targetPlayerUUID = new OfflinePlayer(targetPlayerName).getUniqueId(); - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - } - - if (visitManager.hasIsland(targetPlayerUUID)) { - me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(targetPlayerUUID); - boolean isCoopPlayer = false; - org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer() - .getOfflinePlayer(targetPlayerUUID); - - if (islandManager.containsIsland(targetPlayerUUID)) { - if (islandManager.getIsland(offlinePlayer).isCoopPlayer(player.getUniqueId())) { - isCoopPlayer = true; - } - } - - if (isCoopPlayer || player.hasPermission("fabledskyblock.bypass") - || player.hasPermission("fabledskyblock.bypass.*") - || player.hasPermission("fabledskyblock.*") || visit.isOpen()) { - if (!islandManager.containsIsland(targetPlayerUUID)) { - islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(targetPlayerUUID)); - } - - Island island = islandManager.getIsland(offlinePlayer); - - if ((!island.hasRole(IslandRole.Member, player.getUniqueId()) - && !island.hasRole(IslandRole.Operator, player.getUniqueId()) - && !island.hasRole(IslandRole.Owner, player.getUniqueId())) - && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Vote")) { - if (event.getClick() == ClickType.RIGHT) { - if (playerData.getIsland() != null - && playerData.getIsland().equals(island.getOwnerUUID())) { - if (visit.getVoters().contains(player.getUniqueId())) { - visit.removeVoter(player.getUniqueId()); - - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Vote.Removed.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, - 1.0F); - } else { - visit.addVoter(player.getUniqueId()); - - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Vote.Added.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, - 1.0F); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, - 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Vote.Island.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } - - islandManager.unloadIsland(island, null); - - return; - } else if (event.getClick() != ClickType.LEFT) { - return; - } - } - - if (islandManager.isPlayerAtIsland(island, player)) { - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Already.Message").replace("%player", - targetPlayerName)); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - islandManager.visitIsland(player, island); - - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Teleported.Message").replace("%player", - targetPlayerName)); - soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Closed.Menu.Message").replace("%player", - targetPlayerName)); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player, (Type) playerData.getType(), - (Sort) playerData.getSort()), 1L); - } - - return; - } - - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Exist.Message") - .replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, (Type) playerData.getType(), (Sort) playerData.getSort()), 1L); - } - } - } - }); - - Map openIslands = visitManager.getOpenIslands(); - List visitIslands = new ArrayList<>(); - - boolean keepBannedIslands = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visit.Menu.Bans"); - - for (int i = 0; i < openIslands.size(); i++) { - UUID islandOwnerUUID = (UUID) openIslands.keySet().toArray()[i]; - me.goodandevil.skyblock.visit.Visit visit = openIslands.get(islandOwnerUUID); - - if (type == Visit.Type.Solo) { - if (visit.getMembers() != 1) { - continue; - } - } else if (type == Visit.Type.Team) { - if (visit.getMembers() == 1) { - continue; - } - } - - if (!keepBannedIslands && visit.getBan().isBanned(player.getUniqueId())) { - continue; - } - - visitIslands.add(visit); - } - - openIslands.clear(); - - if (sort == Visit.Sort.Players || sort == Visit.Sort.Level || sort == Visit.Sort.Members - || sort == Visit.Sort.Visits || sort == Visit.Sort.Votes) { - visitIslands.sort(new Comparator() { - @Override - public int compare(me.goodandevil.skyblock.visit.Visit visit1, - me.goodandevil.skyblock.visit.Visit visit2) { - if (sort == Visit.Sort.Players) { - int playersAtIsland1 = 0; - - if (islandManager.containsIsland(visit1.getOwnerUUID())) { - playersAtIsland1 = islandManager - .getPlayersAtIsland(islandManager - .getIsland(Bukkit.getServer().getOfflinePlayer(visit1.getOwnerUUID()))) - .size(); - } - - int playersAtIsland2 = 0; - - if (islandManager.containsIsland(visit2.getOwnerUUID())) { - playersAtIsland2 = islandManager - .getPlayersAtIsland(islandManager - .getIsland(Bukkit.getServer().getOfflinePlayer(visit2.getOwnerUUID()))) - .size(); - } - - return Integer.valueOf(playersAtIsland2).compareTo(playersAtIsland1); - } else if (sort == Visit.Sort.Level) { - return Long.valueOf(visit2.getLevel().getLevel()).compareTo(visit1.getLevel().getLevel()); - } else if (sort == Visit.Sort.Members) { - return Integer.valueOf(visit2.getMembers()).compareTo(visit1.getMembers()); - } else if (sort == Visit.Sort.Visits) { - return Integer.valueOf(visit2.getVisitors().size()).compareTo(visit1.getVisitors().size()); - } else if (sort == Visit.Sort.Votes) { - return Integer.valueOf(visit2.getVoters().size()).compareTo(visit1.getVoters().size()); - } - - return 0; - } - }); - } - - int playerMenuPage = playerDataManager.getPlayerData(player).getPage(), - nextEndIndex = visitIslands.size() - playerMenuPage * 36, - totalIslands = visitManager.getIslands().size(); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Visit.Item.Exit.Displayname"), null, null, null, null), 0, 8); - nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), - configLoad.getString("Menu.Visit.Item.Type.Displayname"), - configLoad.getStringList("Menu.Visit.Item.Type.Lore"), - new Placeholder[] { new Placeholder("%type", StringUtil.capatilizeUppercaseLetters(type.name())) }, - null, null), 3); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Visit.Item.Statistics.Displayname"), - configLoad.getStringList("Menu.Visit.Item.Statistics.Lore"), - new Placeholder[] { - new Placeholder("%islands_open", NumberUtil.formatNumberByDecimal(visitIslands.size())), - new Placeholder("%islands_closed", - NumberUtil.formatNumberByDecimal(totalIslands - visitIslands.size())), - new Placeholder("%islands", NumberUtil.formatNumberByDecimal(totalIslands)) }, - null, null), 4); - nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), - configLoad.getString("Menu.Visit.Item.Sort.Displayname"), - configLoad.getStringList("Menu.Visit.Item.Sort.Lore"), - new Placeholder[] { new Placeholder("%sort", StringUtil.capatilizeUppercaseLetters(sort.name())) }, - null, null), 5); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Visit.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Visit.Item.Previous.Displayname"), null, null, null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Visit.Item.Next.Displayname"), null, null, null, null), 7); - } - - if (visitIslands.size() == 0) { - nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Visit.Item.Nothing.Displayname"), null, null, null, null), 31); - } else { - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - - int index = playerMenuPage * 36 - 36, - endIndex = index >= visitIslands.size() ? visitIslands.size() - 1 : index + 36, inventorySlot = 17, - playerCapacity = config.getFileConfiguration().getInt("Island.Visitor.Capacity"); - - boolean voteEnabled = config.getFileConfiguration().getBoolean("Island.Visitor.Vote"); - boolean signatureEnabled = config.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable"); - - for (; index < endIndex; index++) { - if (visitIslands.size() > index) { - inventorySlot++; - - me.goodandevil.skyblock.visit.Visit visit = visitIslands.get(index); - Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); - - String targetPlayerName; - String[] targetPlayerTexture; - - if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); - targetPlayerName = offlinePlayer.getName(); - targetPlayerTexture = offlinePlayer.getTexture(); - } else { - targetPlayerName = targetPlayer.getName(); - - if (playerDataManager.hasPlayerData(targetPlayer)) { - targetPlayerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture(); - } else { - targetPlayerTexture = new String[] { null, null }; - } - } - - Island island = null; - - if (islandManager.containsIsland(visit.getOwnerUUID())) { - island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(visit.getOwnerUUID())); - } - - List itemLore = new ArrayList<>(); - - String safety = ""; - - if (visit.getSafeLevel() > 0) { - safety = configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Unsafe"); - } else { - safety = configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Safe"); - } - - if (voteEnabled) { - String voteAction = ""; - - if (visit.getVoters().contains(player.getUniqueId())) { - voteAction = configLoad - .getString("Menu.Visit.Item.Island.Vote.Enabled.Signature.Word.Remove"); - } else { - voteAction = configLoad.getString("Menu.Visit.Item.Island.Vote.Enabled.Signature.Word.Add"); - } - - if (signatureEnabled) { - List correctItemLore; - - if (island != null && (island.hasRole(IslandRole.Member, player.getUniqueId()) - || island.hasRole(IslandRole.Operator, player.getUniqueId()) - || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { - correctItemLore = configLoad.getStringList( - "Menu.Visit.Item.Island.Vote.Enabled.Signature.Enabled.Member.Lore"); - } else { - correctItemLore = configLoad.getStringList( - "Menu.Visit.Item.Island.Vote.Enabled.Signature.Enabled.Visitor.Lore"); - } - - for (String itemLoreList : correctItemLore) { - if (itemLoreList.contains("%signature")) { - List islandSignature = visit.getSiganture(); - - if (islandSignature.size() == 0) { - itemLore.add(configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Empty")); - } else { - for (String signatureList : islandSignature) { - itemLore.add(signatureList); - } - } - } else { - itemLore.add(itemLoreList); - } - } - } else { - if (island != null && (island.hasRole(IslandRole.Member, player.getUniqueId()) - || island.hasRole(IslandRole.Operator, player.getUniqueId()) - || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { - itemLore.addAll(configLoad.getStringList( - "Menu.Visit.Item.Island.Vote.Enabled.Signature.Disabled.Member.Lore")); - } else { - itemLore.addAll(configLoad.getStringList( - "Menu.Visit.Item.Island.Vote.Enabled.Signature.Disabled.Visitor.Lore")); - } - } - - nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), - configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player", - targetPlayerName), - itemLore, - new Placeholder[] { new Placeholder("%level", "" + visit.getLevel().getLevel()), - new Placeholder("%members", "" + visit.getMembers()), - new Placeholder("%votes", "" + visit.getVoters().size()), - new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%players", - "" + islandManager.getPlayersAtIsland(island).size()), - new Placeholder("%player_capacity", "" + playerCapacity), - new Placeholder("%action", voteAction), new Placeholder("%safety", safety) }, - null, null), inventorySlot); - } else { - if (signatureEnabled) { - for (String itemLoreList : configLoad - .getStringList("Menu.Visit.Item.Island.Vote.Disabled.Signature.Enabled.Lore")) { - if (itemLoreList.contains("%signature")) { - List islandSignature = visit.getSiganture(); - - if (islandSignature.size() == 0) { - itemLore.add(configLoad.getString("Menu.Visit.Item.Island.Vote.Word.Empty")); - } else { - for (String signatureList : islandSignature) { - itemLore.add(signatureList); - } - } - } else { - itemLore.add(itemLoreList); - } - } - } else { - itemLore.addAll(configLoad - .getStringList("Menu.Visit.Item.Island.Vote.Disabled.Signature.Disabled.Lore")); - } - - nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), - configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player", - targetPlayerName), - itemLore, - new Placeholder[] { new Placeholder("%level", "" + visit.getLevel().getLevel()), - new Placeholder("%members", "" + visit.getMembers()), - new Placeholder("%visits", "" + visit.getVisitors().size()), - new Placeholder("%players", - "" + islandManager.getPlayersAtIsland(island).size()), - new Placeholder("%player_capacity", "" + playerCapacity), - new Placeholder("%safety", safety) }, - null, null), inventorySlot); - } - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Visit.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - - public enum Type { - - Default, Solo, Team; - - } - - public enum Sort { - - Default, Players, Level, Members, Visits, Votes; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Visitors.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Visitors.java deleted file mode 100644 index f7fa59d1..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Visitors.java +++ /dev/null @@ -1,301 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Visitors { - - private static Visitors instance; - - public static Visitors getInstance() { - if (instance == null) { - instance = new Visitors(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - Island island = islandManager.getIsland(player); - - if (island == null) { - skyblock.getMessageManager().sendMessage(player, - configLoad.getString("Command.Island.Visitors.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visitors.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visitors.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visitors.Item.Statistics.Displayname"))))) { - soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visitors.Item.Nothing.Displayname"))))) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visitors.Item.Previous.Displayname")))) { - playerData.setPage(playerData.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Visitors.Item.Next.Displayname")))) { - playerData.setPage(playerData.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - boolean isOperator = island.hasRole(IslandRole.Operator, player.getUniqueId()), - isOwner = island.hasRole(IslandRole.Owner, player.getUniqueId()), - canKick = island.getSetting(IslandRole.Operator, "Kick").getStatus(), - canBan = island.getSetting(IslandRole.Operator, "Ban").getStatus(), - banningEnabled = fileManager - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Banning"); - String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); - - if ((isOperator && canKick) || isOwner) { - if (banningEnabled && ((isOperator && canBan) || isOwner)) { - if (event.getClick() == ClickType.LEFT) { - Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); - } else if (event.getClick() == ClickType.RIGHT) { - Bukkit.getServer().dispatchCommand(player, "island ban " + playerName); - } else { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - } else { - Bukkit.getServer().dispatchCommand(player, "island kick " + playerName); - } - } else { - if (banningEnabled && ((isOperator && canBan) || isOwner)) { - Bukkit.getServer().dispatchCommand(player, "island ban " + playerName); - } else { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - } - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - } - }); - - PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = skyblock.getIslandManager().getIsland(player); - - Set islandVisitors = islandManager.getVisitorsAtIsland(island); - Map sortedIslandVisitors = new TreeMap<>(); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Visitors.Item.Exit.Displayname"), null, null, null, null), 0, 8); - nInv.addItem( - nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Visitors.Item.Statistics.Displayname"), - configLoad.getStringList("Menu.Visitors.Item.Statistics.Lore"), - new Placeholder[] { new Placeholder("%visitors", "" + islandVisitors.size()) }, null, null), - 4); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Visitors.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - for (UUID islandVisitorList : islandVisitors) { - sortedIslandVisitors.put( - playerDataManager.getPlayerData(Bukkit.getServer().getPlayer(islandVisitorList)).getVisitTime(), - islandVisitorList); - } - - islandVisitors.clear(); - - for (int sortedIslandVisitorList : sortedIslandVisitors.keySet()) { - islandVisitors.add(sortedIslandVisitors.get(sortedIslandVisitorList)); - } - - int playerMenuPage = playerData.getPage(), nextEndIndex = sortedIslandVisitors.size() - playerMenuPage * 36; - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Visitors.Item.Previous.Displayname"), null, null, null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Visitors.Item.Next.Displayname"), null, null, null, null), 7); - } - - if (islandVisitors.size() == 0) { - nInv.addItem( - nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Visitors.Item.Nothing.Displayname"), null, null, null, null), - 31); - } else { - boolean isOperator = island.hasRole(IslandRole.Operator, player.getUniqueId()), - isOwner = island.hasRole(IslandRole.Owner, player.getUniqueId()), - canKick = island.getSetting(IslandRole.Operator, "Kick").getStatus(), - canBan = island.getSetting(IslandRole.Operator, "Ban").getStatus(), - banningEnabled = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Banning"); - int index = playerMenuPage * 36 - 36, - endIndex = index >= islandVisitors.size() ? islandVisitors.size() - 1 : index + 36, - inventorySlot = 17; - - for (; index < endIndex; index++) { - if (islandVisitors.size() > index) { - inventorySlot++; - - Player targetPlayer = Bukkit.getServer().getPlayer((UUID) islandVisitors.toArray()[index]); - PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer); - - String[] targetPlayerTexture = targetPlayerData.getTexture(); - String islandVisitTimeFormatted; - - long[] islandVisitTime = NumberUtil.getDuration(targetPlayerData.getVisitTime()); - - if (islandVisitTime[0] != 0) { - islandVisitTimeFormatted = islandVisitTime[0] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Days") + ", " - + islandVisitTime[1] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Hours") + ", " - + islandVisitTime[2] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Minutes") + ", " - + islandVisitTime[3] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); - } else if (islandVisitTime[1] != 0) { - islandVisitTimeFormatted = islandVisitTime[1] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Hours") + ", " - + islandVisitTime[2] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Minutes") + ", " - + islandVisitTime[3] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); - } else if (islandVisitTime[2] != 0) { - islandVisitTimeFormatted = islandVisitTime[2] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Minutes") + ", " - + islandVisitTime[3] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); - } else { - islandVisitTimeFormatted = islandVisitTime[3] + " " - + configLoad.getString("Menu.Visitors.Item.Visitor.Word.Seconds"); - } - - List itemLore = new ArrayList<>(); - - if ((isOperator && canKick) || isOwner) { - if (banningEnabled && ((isOperator && canBan) || isOwner)) { - itemLore.addAll(configLoad.getStringList( - "Menu.Visitors.Item.Visitor.Kick.Permission.Ban.Permission.Lore")); - } else { - itemLore.addAll(configLoad.getStringList( - "Menu.Visitors.Item.Visitor.Kick.Permission.Ban.NoPermission.Lore")); - } - } else { - if (banningEnabled && ((isOperator && canBan) || isOwner)) { - itemLore.addAll(configLoad.getStringList( - "Menu.Visitors.Item.Visitor.Kick.NoPermission.Ban.Permission.Lore")); - } else { - itemLore.addAll(configLoad.getStringList( - "Menu.Visitors.Item.Visitor.Kick.NoPermission.Ban.NoPermission.Lore")); - } - } - - nInv.addItem( - nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Visitors.Item.Visitor.Displayname") - .replace("%player", targetPlayer.getName())), - itemLore, - new Placeholder[] { new Placeholder("%time", islandVisitTimeFormatted) }, null, - null), - inventorySlot); - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Visitors.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Weather.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Weather.java deleted file mode 100644 index 23e9c29c..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/Weather.java +++ /dev/null @@ -1,269 +0,0 @@ -package me.goodandevil.skyblock.menus; - -import java.io.File; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.WeatherType; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Weather { - - private static Weather instance; - - public static Weather getInstance() { - if (instance == null) { - instance = new Weather(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player)) { - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (playerDataManager.hasPlayerData(player)) { - Island island = islandManager.getIsland(player); - - if (island == null) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Weather.Owner.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } else if (!((island.hasRole(IslandRole.Operator, player.getUniqueId()) - && island.getSetting(IslandRole.Operator, "Biome").getStatus()) - || island.hasRole(IslandRole.Owner, player.getUniqueId()))) { - messageManager.sendMessage(player, - configLoad.getString("Command.Island.Weather.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Weather.Item.Info.Displayname"))))) { - soundManager.playSound(player, Sounds.CHICKEN_EGG_POP.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Weather.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if (is.getType() == Materials.BARRIER.parseMaterial()) { - event.setWillClose(false); - event.setWillDestroy(false); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - } else if ((is.getType() == Materials.SUNFLOWER.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Weather.Item.Time.Displayname"))))) { - int islandTime = island.getTime(); - - if (islandTime == 0) { - island.setTime(1000); - } else if (islandTime == 1000) { - island.setTime(6000); - } else if (islandTime == 6000) { - island.setTime(12000); - } else if (islandTime == 12000) { - island.setTime(13000); - } else if (islandTime == 13000) { - island.setTime(18000); - } else if (islandTime == 18000) { - island.setTime(0); - } - - if (!island.isWeatherSynchronized()) { - for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { - all.resetPlayerTime(); - all.resetPlayerWeather(); - all.setPlayerTime(island.getTime(), - fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); - all.setPlayerWeather(island.getWeather()); - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if ((is.getType() == Material.GHAST_TEAR) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Weather.Item.Weather.Displayname"))))) { - if (island.getWeather() == WeatherType.DOWNFALL) { - island.setWeather(WeatherType.CLEAR); - } else { - island.setWeather(WeatherType.DOWNFALL); - } - - if (!island.isWeatherSynchronized()) { - for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { - all.resetPlayerTime(); - all.resetPlayerWeather(); - all.setPlayerTime(island.getTime(), - fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); - all.setPlayerWeather(island.getWeather()); - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if ((is.getType() == Material.TRIPWIRE_HOOK) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Weather.Item.Synchronised.Displayname"))))) { - if (island.isWeatherSynchronized()) { - island.setWeatherSynchronized(false); - - int islandTime = island.getTime(); - WeatherType islandWeather = island.getWeather(); - - for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { - all.setPlayerTime(islandTime, - fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); - all.setPlayerWeather(islandWeather); - } - } else { - island.setWeatherSynchronized(true); - - for (Player all : islandManager.getPlayersAtIsland(island, IslandWorld.Normal)) { - all.resetPlayerTime(); - all.resetPlayerWeather(); - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - }); - - Island island = islandManager.getIsland(player); - - String timeName = "", timeChoice = "", weatherSynchronised, weatherChoice, synchronisedChoice; - int islandTime = island.getTime(); - - if (island.isWeatherSynchronized()) { - weatherSynchronised = configLoad.getString("Menu.Weather.Item.Info.Synchronised.Enabled"); - } else { - weatherSynchronised = configLoad.getString("Menu.Weather.Item.Info.Synchronised.Disabled"); - } - - if (islandTime == 0) { - timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Dawn"); - timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Dawn"); - } else if (islandTime == 1000) { - timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Day"); - timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Day"); - } else if (islandTime == 6000) { - timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Noon"); - timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Noon"); - } else if (islandTime == 12000) { - timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Dusk"); - timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Dusk"); - } else if (islandTime == 13000) { - timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Night"); - timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Night"); - } else if (islandTime == 18000) { - timeName = configLoad.getString("Menu.Weather.Item.Info.Time.Midnight"); - timeChoice = configLoad.getString("Menu.Weather.Item.Time.Choice.Midnight"); - } - - if (island.getWeather() != WeatherType.CLEAR) { - weatherChoice = configLoad.getString("Menu.Weather.Item.Weather.Choice.Downfall"); - } else { - weatherChoice = configLoad.getString("Menu.Weather.Item.Weather.Choice.Clear"); - } - - if (island.isWeatherSynchronized()) { - synchronisedChoice = configLoad.getString("Menu.Weather.Item.Synchronised.Choice.Disable"); - } else { - synchronisedChoice = configLoad.getString("Menu.Weather.Item.Synchronised.Choice.Enable"); - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), - configLoad.getString("Menu.Weather.Item.Info.Displayname"), - configLoad.getStringList("Menu.Weather.Item.Info.Lore." + (island.isWeatherSynchronized() ? "Synchronised" : "Unsynchronised")), - new Placeholder[] { new Placeholder("%synchronised", weatherSynchronised), - new Placeholder("%time_name", timeName), new Placeholder("%time", "" + island.getTime()), - new Placeholder("%weather", island.getWeatherName()) }, - null, null), 0); - nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Weather.Item.Barrier.Displayname"), null, null, null, null), 1); - - if (!island.isWeatherSynchronized()) { - nInv.addItem(nInv.createItem(Materials.SUNFLOWER.parseItem(), - configLoad.getString("Menu.Weather.Item.Time.Displayname"), - configLoad.getStringList("Menu.Weather.Item.Time.Lore"), - new Placeholder[] { new Placeholder("%choice", timeChoice) }, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.GHAST_TEAR), - configLoad.getString("Menu.Weather.Item.Weather.Displayname"), - configLoad.getStringList("Menu.Weather.Item.Weather.Lore"), - new Placeholder[] { new Placeholder("%choice", weatherChoice) }, null, null), 3); - } else { - nInv.addItem(nInv.createItem(Materials.BARRIER.parseItem(), - configLoad.getString("Menu.Weather.Item.Disabled.Time.Displayname"), - configLoad.getStringList("Menu.Weather.Item.Disabled.Time.Lore"), - new Placeholder[] { new Placeholder("%choice", timeChoice) }, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Weather.Item.Disabled.Weather.Displayname"), - configLoad.getStringList("Menu.Weather.Item.Disabled.Weather.Lore"), - new Placeholder[] { new Placeholder("%choice", weatherChoice) }, null, null), 3); - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.TRIPWIRE_HOOK), - configLoad.getString("Menu.Weather.Item.Synchronised.Displayname"), - configLoad.getStringList("Menu.Weather.Item.Synchronised.Lore"), - new Placeholder[] { new Placeholder("%choice", synchronisedChoice) }, null, null), 4); - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Weather.Title"))); - nInv.setType(InventoryType.HOPPER); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Creator.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Creator.java deleted file mode 100644 index e3f08154..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Creator.java +++ /dev/null @@ -1,1315 +0,0 @@ -package me.goodandevil.skyblock.menus.admin; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.structure.Structure; -import me.goodandevil.skyblock.structure.StructureManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Creator implements Listener { - - private static Creator instance; - - public static Creator getInstance() { - if (instance == null) { - instance = new Creator(); - } - - return instance; - } - - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - StructureManager structureManager = skyblock.getStructureManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, null); - - if (playerData.getViewer() == null) { - List structures = structureManager.getStructures(); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Admin.Creator.Browse.Item.Exit.Displayname"), null, null, null, null), 0, - 8); - nInv.addItem( - nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), - configLoad.getString("Menu.Admin.Creator.Browse.Item.Information.Displayname"), - configLoad.getStringList("Menu.Admin.Creator.Browse.Item.Information.Lore"), - new Placeholder[] { new Placeholder("%structures", "" + structures.size()) }, null, null), - 4); - nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Admin.Creator.Browse.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - int playerMenuPage = playerData.getPage(), nextEndIndex = structures.size() - playerMenuPage * 36; - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Admin.Creator.Browse.Item.Previous.Displayname"), null, null, null, - null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Admin.Creator.Browse.Item.Next.Displayname"), null, null, null, - null), 7); - } - - if (structures.size() == 0) { - nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Admin.Creator.Browse.Item.Nothing.Displayname"), null, null, null, - null), 31); - } else { - int index = playerMenuPage * 36 - 36, - endIndex = index >= structures.size() ? structures.size() - 1 : index + 36, inventorySlot = 17; - - for (; index < endIndex; index++) { - if (structures.size() > index) { - inventorySlot++; - - Structure structure = structures.get(index); - nInv.addItem(nInv.createItem(structure.getMaterials().parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Browse.Item.Structure.Displayname") - .replace("%structure", structure.getName())), - configLoad.getStringList("Menu.Admin.Creator.Browse.Item.Structure.Lore"), null, null, - null), inventorySlot); - } - } - } - - nInv.setRows(6); - } else { - Structure structure = structureManager.getStructure(((Creator.Viewer) playerData.getViewer()).getName()); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Admin.Creator.Options.Item.Return.Displayname"), null, null, null, null), - 0, 8); - - String displayName = ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")); - - if (structure.getDisplayname() != null && !structure.getDisplayname().isEmpty()) { - displayName = ChatColor.translateAlternateColorCodes('&', structure.getDisplayname()); - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), - configLoad.getString("Menu.Admin.Creator.Options.Item.Displayname.Displayname"), - configLoad.getStringList("Menu.Admin.Creator.Options.Item.Displayname.Lore"), - new Placeholder[] { new Placeholder("%displayname", displayName) }, null, null), 1); - - List descriptionLore = new ArrayList<>(); - - if (structure.getDescription() == null || structure.getDescription().size() == 0) { - for (String itemLore : configLoad - .getStringList("Menu.Admin.Creator.Options.Item.Description.Unset.Lore")) { - if (itemLore.contains("%description")) { - descriptionLore.add(configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")); - } else { - descriptionLore.add(itemLore); - } - } - } else { - for (String itemLore : configLoad - .getStringList("Menu.Admin.Creator.Options.Item.Description.Set.Lore")) { - if (itemLore.contains("%description")) { - for (String descriptionList : structure.getDescription()) { - descriptionLore.add(descriptionList); - } - } else { - descriptionLore.add(itemLore); - } - } - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.ENCHANTED_BOOK), - configLoad.getString("Menu.Admin.Creator.Options.Item.Description.Displayname"), descriptionLore, - null, null, null), 2); - - List commandsLore = new ArrayList<>(); - - if (structure.getCommands() == null || structure.getCommands().size() == 0) { - for (String itemLore : configLoad - .getStringList("Menu.Admin.Creator.Options.Item.Commands.Unset.Lore")) { - if (itemLore.contains("%commands")) { - commandsLore.add(configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")); - } else { - commandsLore.add(itemLore); - } - } - } else { - for (String itemLore : configLoad.getStringList("Menu.Admin.Creator.Options.Item.Commands.Set.Lore")) { - if (itemLore.contains("%commands")) { - for (String commandList : structure.getCommands()) { - commandsLore.add(commandList); - } - } else { - commandsLore.add(itemLore); - } - } - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.BOOK), - configLoad.getString("Menu.Admin.Creator.Options.Item.Commands.Displayname"), commandsLore, null, - null, null), 3); - - List permissionLore = new ArrayList<>(); - - if (structure.isPermission()) { - permissionLore = configLoad.getStringList("Menu.Admin.Creator.Options.Item.Permission.Disable.Lore"); - } else { - permissionLore = configLoad.getStringList("Menu.Admin.Creator.Options.Item.Permission.Enable.Lore"); - } - - nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), - configLoad.getString("Menu.Admin.Creator.Options.Item.Permission.Displayname"), permissionLore, - new Placeholder[] { new Placeholder("%permission", structure.getPermission()) }, null, null), 4); - - String fileName = ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Word.Unset")), overworldFileName, - netherFileName, endFileName; - - if (structure.getOverworldFile() != null && !structure.getOverworldFile().isEmpty()) { - overworldFileName = structure.getOverworldFile(); - } else { - overworldFileName = fileName; - } - - if (structure.getNetherFile() != null && !structure.getNetherFile().isEmpty()) { - netherFileName = structure.getNetherFile(); - } else { - netherFileName = fileName; - } - - if (structure.getEndFile() != null && !structure.getEndFile().isEmpty()) { - endFileName = structure.getEndFile(); - } else { - endFileName = fileName; - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.PAPER), - configLoad.getString("Menu.Admin.Creator.Options.Item.File.Displayname"), - configLoad.getStringList("Menu.Admin.Creator.Options.Item.File.Lore"), - new Placeholder[] { new Placeholder("%overworld_file", overworldFileName), - new Placeholder("%nether_file", netherFileName), - new Placeholder("%end_file", endFileName) }, - null, null), 5); - nInv.addItem(nInv.createItem(new ItemStack(Material.DIAMOND), - configLoad.getString("Menu.Admin.Creator.Options.Item.Item.Displayname"), - configLoad.getStringList("Menu.Admin.Creator.Options.Item.Item.Lore"), - new Placeholder[] { new Placeholder("%material", structure.getMaterials().name()) }, null, null), - 6); - nInv.addItem(nInv.createItem(new ItemStack(Material.GOLD_NUGGET), - configLoad.getString("Menu.Admin.Creator.Options.Item.DeletionCost.Displayname"), - configLoad.getStringList("Menu.Admin.Creator.Options.Item.DeletionCost.Lore"), - new Placeholder[] { new Placeholder("%cost", "" + structure.getDeletionCost()) }, null, null), 7); - - nInv.setRows(1); - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Creator.Title"))); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - - @SuppressWarnings("deprecation") - @EventHandler - public void onInventoryClick(InventoryClickEvent event) { - Player player = (Player) event.getWhoClicked(); - ItemStack is = event.getCurrentItem(); - - if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) { - SkyBlock skyblock = SkyBlock.getInstance(); - - StructureManager structureManager = skyblock.getStructureManager(); - 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(); - - String inventoryName = ""; - if (NMSUtil.getVersionNumber() > 13) { - inventoryName = event.getView().getTitle(); - } else { - try { - inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Creator.Title")))) { - event.setCancelled(true); - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - if (!(player.hasPermission("fabledskyblock.admin.create") || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, configLoad.getString("Island.Admin.Creator.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if ((event.getCurrentItem().getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Browse.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - return; - } else if ((event.getCurrentItem().getType() == Materials.OAK_FENCE_GATE.parseMaterial()) - && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Browse.Item.Exit.Displayname")))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Return.Displayname")))) { - playerData.setViewer(null); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - - return; - } - } else if ((event.getCurrentItem().getType() == Materials.OAK_SIGN.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Browse.Item.Information.Displayname"))))) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.creator") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (structureManager.containsStructure(event1.getName())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Already.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (!event1.getName().replace(" ", "").matches("^[a-zA-Z0-9]+$")) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Characters.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else { - structureManager.addStructure(event1.getName(), Materials.GRASS_BLOCK, null, null, null, - null, false, new ArrayList<>(), new ArrayList<>(), 0.0D); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Created.Message") - .replace("%structure", event1.getName())); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config111 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad111 = config111.getFileConfiguration(); - - configLoad111.set("Structures." + event1.getName() + ".Name", event1.getName()); - - try { - configLoad111.save(config111.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName(configLoad.getString("Menu.Admin.Creator.Browse.Item.Information.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - - return; - } else if ((event.getCurrentItem().getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Browse.Item.Nothing.Displayname"))))) { - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if ((event.getCurrentItem().getType() == Material.NAME_TAG) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Displayname.Displayname"))))) { - if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - String name = ((Creator.Viewer) playerData.getViewer()).getName(); - - if (structureManager.containsStructure(name)) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.creator") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if (!structureManager.containsStructure(name)) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - Structure structure = structureManager.getStructure(name); - structure.setDisplayname(event1.getName()); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config1 = fileManager.getConfig( - new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad1 = config1.getFileConfiguration(); - - configLoad1.set( - "Structures." + structure.getName() + ".Displayname", - event1.getName()); - - try { - configLoad1.save(config1.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Admin.Creator.Options.Item.Displayname.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - - return; - } else if ((event.getCurrentItem().getType() == Material.ENCHANTED_BOOK) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Description.Displayname"))))) { - if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - String name = ((Creator.Viewer) playerData.getViewer()).getName(); - - if (structureManager.containsStructure(name)) { - Structure structure = structureManager.getStructure(name); - - if (structure.getDescription() != null && !structure.getDescription().isEmpty()) { - if (event.getClick() == ClickType.RIGHT) { - structure.removeLine(structure.getDescription().size() - 1); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config12 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad12 = config12.getFileConfiguration(); - - configLoad12.set("Structures." + structure.getName() + ".Description", - structure.getDescription()); - - try { - configLoad12.save(config12.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } else if (event.getClick() != ClickType.LEFT) { - return; - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.creator") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if (!structureManager.containsStructure(name)) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - structure.addLine(event1.getName()); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config13 = fileManager.getConfig( - new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad13 = config13.getFileConfiguration(); - - configLoad13.set( - "Structures." + structure.getName() + ".Description", - structure.getDescription()); - - try { - configLoad13.save(config13.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Admin.Creator.Options.Item.Description.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - - return; - } else if ((event.getCurrentItem().getType() == Material.BOOK) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Commands.Displayname"))))) { - if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - String name = ((Creator.Viewer) playerData.getViewer()).getName(); - - if (structureManager.containsStructure(name)) { - Structure structure = structureManager.getStructure(name); - - if (structure.getCommands() != null && !structure.getCommands().isEmpty()) { - if (event.getClick() == ClickType.RIGHT) { - structure.removeCommand(structure.getCommands().size() - 1); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config14 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad14 = config14.getFileConfiguration(); - - configLoad14.set("Structures." + structure.getName() + ".Commands", - structure.getCommands()); - - try { - configLoad14.save(config14.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } else if (event.getClick() != ClickType.LEFT) { - return; - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.creator") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if (!structureManager.containsStructure(name)) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - structure.addCommand(event1.getName()); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config15 = fileManager.getConfig( - new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad15 = config15.getFileConfiguration(); - - configLoad15.set( - "Structures." + structure.getName() + ".Commands", - structure.getCommands()); - - try { - configLoad15.save(config15.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Admin.Creator.Options.Item.Commands.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - - return; - } else if ((event.getCurrentItem().getType() == Materials.LEGACY_EMPTY_MAP.getPostMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Permission.Displayname"))))) { - if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - String name = ((Creator.Viewer) playerData.getViewer()).getName(); - - if (structureManager.containsStructure(name)) { - Structure structure = structureManager.getStructure(name); - - if (structure.isPermission()) { - structure.setPermission(false); - } else { - structure.setPermission(true); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config16 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad16 = config16.getFileConfiguration(); - - configLoad16.set("Structures." + structure.getName() + ".Permission", - structure.isPermission()); - - try { - configLoad16.save(config16.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - - return; - } else if ((event.getCurrentItem().getType() == Material.PAPER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.File.Displayname"))))) { - if (event.getClick() == ClickType.LEFT || event.getClick() == ClickType.MIDDLE - || event.getClick() == ClickType.RIGHT) { - if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - String name = ((Creator.Viewer) playerData.getViewer()).getName(); - - if (structureManager.containsStructure(name)) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.creator") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else if (!structureManager.containsStructure(name)) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - String fileName = event1.getName(); - if (fileManager.isFileExist(new File(skyblock.getDataFolder().toString() + "/structures", fileName)) || - fileManager.isFileExist(new File(skyblock.getDataFolder().toString() + "/schematics", fileName))) { - if (event.getClick() == ClickType.LEFT) { - Structure structure = structureManager.getStructure(name); - structure.setOverworldFile(fileName); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), - 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config17 = fileManager.getConfig( - new File(skyblock.getDataFolder(), - "structures.yml")); - FileConfiguration configLoad17 = config17 - .getFileConfiguration(); - - configLoad17.set("Structures." + structure.getName() + ".File.Overworld", fileName); - - try { - configLoad17.save(config17.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } else if (event.getClick() == ClickType.MIDDLE) { - Structure structure = structureManager.getStructure(name); - structure.setNetherFile(fileName); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), - 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config18 = fileManager.getConfig( - new File(skyblock.getDataFolder(), - "structures.yml")); - FileConfiguration configLoad18 = config18 - .getFileConfiguration(); - - configLoad18.set("Structures." + structure.getName() - + ".File.Nether", fileName); - - try { - configLoad18.save(config18.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } else { - Structure structure = structureManager.getStructure(name); - structure.setEndFile(fileName); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), - 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config19 = fileManager.getConfig( - new File(skyblock.getDataFolder(), - "structures.yml")); - FileConfiguration configLoad19 = config19 - .getFileConfiguration(); - - configLoad19.set("Structures." + structure.getName() - + ".File.End", fileName); - - try { - configLoad19.save(config19.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.File.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - } - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Admin.Creator.Options.Item.File.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - } - - return; - } else if ((event.getCurrentItem().getType() == Material.DIAMOND) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.Item.Displayname"))))) { - if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - Creator.Viewer viewer = (Viewer) playerData.getViewer(); - String name = viewer.getName(); - - if (viewer.isItem()) { - viewer.setItem(false); - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Item.Cancelled.Message")); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } else { - if (structureManager.containsStructure(name)) { - viewer.setItem(true); - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Item.Added.Message")); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - } - - return; - } else if ((event.getCurrentItem().getType() == Material.GOLD_NUGGET) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Creator.Options.Item.DeletionCost.Displayname"))))) { - if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - String name = ((Creator.Viewer) playerData.getViewer()).getName(); - - if (structureManager.containsStructure(name)) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.creator") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if (playerData.getViewer() == null) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Selected.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } else if (!structureManager.containsStructure(name)) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } else if (!(event1.getName().matches("[0-9]+") - || event1.getName().matches("([0-9]*)\\.([0-9]{1,2}$)"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Numerical.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event1.setWillClose(false); - event1.setWillDestroy(false); - - return; - } - - double deletionCost = Double.valueOf(event1.getName()); - - Structure structure = structureManager.getStructure(name); - structure.setDeletionCost(deletionCost); - - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config112 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad112 = config112.getFileConfiguration(); - - configLoad112.set("Structures." + structure.getName() + ".Deletion.Cost", - deletionCost); - - try { - configLoad112.save(config112.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Admin.Creator.Options.Item.DeletionCost.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - - return; - } - - if (playerData.getViewer() != null) { - Creator.Viewer viewer = (Viewer) playerData.getViewer(); - - if (viewer.isItem()) { - if (structureManager.containsStructure(viewer.getName())) { - Structure structure = structureManager.getStructure(viewer.getName()); - Materials materials = null; - - if (NMSUtil.getVersionNumber() < 13) { - materials = Materials.requestMaterials(event.getCurrentItem().getType().name(), - (byte) event.getCurrentItem().getDurability()); - } else { - materials = Materials.fromString(event.getCurrentItem().getType().name()); - } - - if (materials != null) { - structure.setMaterials(materials); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config113 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad113 = config113.getFileConfiguration(); - - configLoad113.set("Structures." + structure.getName() + ".Item.Material", - structure.getMaterials().name()); - - try { - configLoad113.save(config113.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } - - viewer.setItem(false); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Item.Removed.Message")); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - playerData.setViewer(null); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - - return; - } - } - - if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) { - for (Structure structureList : structureManager.getStructures()) { - if (event.getCurrentItem().getType() == structureList.getMaterials().parseMaterial() - && ChatColor.stripColor(is.getItemMeta().getDisplayName()) - .equals(structureList.getName())) { - if (event.getClick() == ClickType.LEFT) { - playerData.setViewer(new Viewer(structureList.getName())); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if (event.getClick() == ClickType.RIGHT) { - structureManager.removeStructure(structureList); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Creator.Removed.Message") - .replace("%structure", structureList.getName())); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config110 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad110 = config110.getFileConfiguration(); - - configLoad110.set("Structures." + structureList.getName(), null); - - try { - configLoad110.save(config110.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - - return; - } - } - - messageManager.sendMessage(player, configLoad.getString("Island.Admin.Creator.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - } - } - - @EventHandler - public void onInventoryClose(InventoryCloseEvent event) { - Player player = (Player) event.getPlayer(); - - SkyBlock skyblock = SkyBlock.getInstance(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - String inventoryName = ""; - if (NMSUtil.getVersionNumber() > 13) { - inventoryName = event.getView().getTitle(); - } else { - try { - inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Creator.Title")))) { - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - - if (playerDataManager.hasPlayerData(player)) { - Creator.Viewer viewer = (Viewer) playerDataManager.getPlayerData(player).getViewer(); - - if (viewer != null) { - if (viewer.isItem()) { - viewer.setItem(false); - skyblock.getMessageManager().sendMessage(player, - configLoad.getString("Island.Admin.Creator.Item.Removed.Message")); - skyblock.getSoundManager().playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - } - } - } - } - } - - public class Viewer { - - private String name; - private boolean item = false; - - public Viewer(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setItem(boolean item) { - this.item = item; - } - - public boolean isItem() { - return item; - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Levelling.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Levelling.java deleted file mode 100644 index 031e6e83..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Levelling.java +++ /dev/null @@ -1,450 +0,0 @@ -package me.goodandevil.skyblock.menus.admin; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; - -import me.goodandevil.skyblock.levelling.LevellingMaterial; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.item.MaterialUtil; -import me.goodandevil.skyblock.utils.item.SkullUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Levelling implements Listener { - - private static Levelling instance; - - public static Levelling getInstance() { - if (instance == null) { - instance = new Levelling(); - } - - return instance; - } - - @SuppressWarnings("deprecation") - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - LevellingManager levellingManager = skyblock.getLevellingManager(); - FileManager fileManager = skyblock.getFileManager(); - - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - List levellingMaterials = levellingManager.getMaterials(); - - // Filter out materials that won't be displayed in the GUI properly - Inventory testInventory = Bukkit.createInventory(null, 9); - levellingMaterials = levellingMaterials.stream().filter(x -> { - if (!x.getMaterials().isAvailable()) return false; - if (x.getItemStack() == null) return false; - ItemStack itemStack = new ItemStack(MaterialUtil.correctMaterial(x.getItemStack().getType()), 1, x.getItemStack().getDurability()); - if (itemStack == null || itemStack.getItemMeta() == null) return false; - testInventory.clear(); - testInventory.setItem(0, itemStack); - return testInventory.getItem(0) != null; - }).collect(Collectors.toList()); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - nInventoryUtil nInv = new nInventoryUtil(player, null); - nInv.addItem( - nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Admin.Levelling.Item.Exit.Displayname"), null, null, null, null), - 0, 8); - nInv.addItem( - nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), - configLoad.getString("Menu.Admin.Levelling.Item.Information.Displayname"), - configLoad.getStringList("Menu.Admin.Levelling.Item.Information.Lore"), - new Placeholder[] { new Placeholder("%materials", "" + levellingMaterials.size()), - new Placeholder("%division", - "" + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getInt("Island.Levelling.Division")) }, - null, null), - 4); - nInv.addItem( - nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - configLoad.getString("Menu.Admin.Levelling.Item.Barrier.Displayname"), null, null, null, null), - 9, 10, 11, 12, 13, 14, 15, 16, 17); - - int playerMenuPage = playerData.getPage(), nextEndIndex = levellingMaterials.size() - playerMenuPage * 36; - - if (playerMenuPage != 1) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", - "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), - configLoad.getString("Menu.Admin.Levelling.Item.Previous.Displayname"), null, null, null, null), 1); - } - - if (!(nextEndIndex == 0 || nextEndIndex < 0)) { - nInv.addItem(nInv.createItem(SkullUtil.create( - "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", - "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), - configLoad.getString("Menu.Admin.Levelling.Item.Next.Displayname"), null, null, null, null), 7); - } - - if (levellingMaterials.size() == 0) { - nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), - configLoad.getString("Menu.Admin.Levelling.Item.Nothing.Displayname"), null, null, null, null), 31); - } else { - int index = playerMenuPage * 36 - 36, - endIndex = index >= levellingMaterials.size() ? levellingMaterials.size() - 1 : index + 36, - inventorySlot = 17; - - for (; index < endIndex; index++) { - if (levellingMaterials.size() > index) { - inventorySlot++; - - LevellingMaterial material = levellingMaterials.get(index); - nInv.addItem( - nInv.createItem( - new ItemStack(MaterialUtil.correctMaterial(material.getItemStack().getType()), 1, - material.getItemStack().getDurability()), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Levelling.Item.Material.Displayname") - .replace("%material", material.getMaterials().name())), - configLoad.getStringList("Menu.Admin.Levelling.Item.Material.Lore"), - new Placeholder[] { new Placeholder("%points", - NumberUtil.formatNumberByDecimal(material.getPoints())) }, - null, null), - inventorySlot); - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Levelling.Title"))); - nInv.setRows(6); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - - @SuppressWarnings("deprecation") - @EventHandler - public void onInventoryClick(InventoryClickEvent event) { - Player player = (Player) event.getWhoClicked(); - ItemStack is = event.getCurrentItem(); - - if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) { - SkyBlock skyblock = SkyBlock.getInstance(); - - LevellingManager levellingManager = skyblock.getLevellingManager(); - 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(); - - String inventoryName = ""; - if (NMSUtil.getVersionNumber() > 13) { - inventoryName = event.getView().getTitle(); - } else { - try { - inventoryName = (String) Inventory.class.getMethod("getName").invoke(event.getInventory()); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - if (inventoryName.equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Levelling.Title")))) { - PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player); - - if (!(player.hasPermission("fabledskyblock.admin.level") || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Levelling.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if ((event.getCurrentItem().getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Levelling.Item.Barrier.Displayname"))))) { - event.setCancelled(true); - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - return; - } else if ((event.getCurrentItem().getType() == Materials.OAK_FENCE_GATE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Levelling.Item.Exit.Displayname"))))) { - event.setCancelled(true); - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - player.closeInventory(); - - return; - } else if ((event.getCurrentItem().getType() == Materials.OAK_SIGN.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Levelling.Item.Information.Displayname"))))) { - event.setCancelled(true); - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.level") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Levelling.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (event1.getName().matches("[0-9]+")) { - int pointDivision = Integer.valueOf(event1.getName()); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Levelling.Division.Message") - .replace("%division", NumberUtil.formatNumberByDecimal(pointDivision))); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config12 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad12 = config12.getFileConfiguration(); - - configLoad12.set("Island.Levelling.Division", pointDivision); - - try { - configLoad12.save(config12.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Levelling.Numerical.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName(configLoad.getString("Menu.Admin.Levelling.Item.Information.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - - return; - } else if ((event.getCurrentItem().getType() == Material.BARRIER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Levelling.Item.Nothing.Displayname"))))) { - event.setCancelled(true); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } else if ((event.getCurrentItem().getType() == SkullUtil.createItemStack().getType()) - && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Levelling.Item.Previous.Displayname")))) { - event.setCancelled(true); - player.closeInventory(); - - playerData.setPage(playerData.getPage() - 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - - return; - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Levelling.Item.Next.Displayname")))) { - event.setCancelled(true); - player.closeInventory(); - - playerData.setPage(playerData.getPage() + 1); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - - return; - } - } - - if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) { - for (LevellingMaterial materialList : levellingManager.getMaterials()) { - Materials materials = materialList.getMaterials(); - - if (event.getCurrentItem().getType() == MaterialUtil.correctMaterial(materials.parseMaterial()) - && ChatColor.stripColor(is.getItemMeta().getDisplayName()).equals(materials.name())) { - event.setCancelled(true); - - if (event.getClick() == ClickType.LEFT) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.level") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Levelling.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } else if (levellingManager.containsMaterial(materials)) { - if (event1.getName().matches("[0-9]+")) { - int materialPoints = Integer.valueOf(event1.getName()); - materialList.setPoints(materialPoints); - - messageManager.sendMessage(player, configLoad - .getString("Island.Admin.Levelling.Points.Message") - .replace("%material", materials.name()).replace("%points", - NumberUtil.formatNumberByDecimal(materialPoints))); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, - 1.0F); - player.closeInventory(); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> open(player), 1L); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config1 = fileManager.getConfig(new File( - skyblock.getDataFolder(), "levelling.yml")); - FileConfiguration configLoad1 = config1 - .getFileConfiguration(); - - configLoad1.set( - "Materials." + materials.name() + ".Points", - materialPoints); - - try { - configLoad1.save(config1.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } else { - messageManager.sendMessage(player, configLoad - .getString("Island.Admin.Levelling.Numerical.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - } - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Levelling.Exist.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - is = new ItemStack(Material.NAME_TAG); - ItemMeta im = is.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Admin.Levelling.Item.Material.Word.Enter")); - is.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is); - gui.open(); - } else if (event.getClick() == ClickType.RIGHT) { - levellingManager.removeMaterial(materialList); - open(player); - - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Levelling.Removed.Message") - .replace("%material", materials.name())); - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config13 = fileManager - .getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); - FileConfiguration configLoad13 = config13.getFileConfiguration(); - - configLoad13.set("Materials." + materials.name(), null); - - try { - configLoad13.save(config13.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } - - return; - } - } - } - - event.setCancelled(true); - - Materials materials; - - if (NMSUtil.getVersionNumber() < 13) { - materials = Materials.requestMaterials(event.getCurrentItem().getType().name(), - (byte) event.getCurrentItem().getDurability()); - } else { - materials = Materials.fromString(event.getCurrentItem().getType().name()); - } - - if (levellingManager.containsMaterial(materials)) { - messageManager.sendMessage(player, configLoad.getString("Island.Admin.Levelling.Already.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - levellingManager.addMaterial(materials, 0); - open(player); - - messageManager.sendMessage(player, configLoad.getString("Island.Admin.Levelling.Added.Message") - .replace("%material", materials.name())); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - Config config14 = fileManager.getConfig(new File(skyblock.getDataFolder(), "levelling.yml")); - FileConfiguration configLoad14 = config14.getFileConfiguration(); - - configLoad14.set("Materials." + materials.name() + ".Points", 0); - - try { - configLoad14.save(config14.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Settings.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Settings.java deleted file mode 100644 index 0dbd51ad..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Settings.java +++ /dev/null @@ -1,686 +0,0 @@ -package me.goodandevil.skyblock.menus.admin; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Settings { - - private static Settings instance; - - public static Settings getInstance() { - if (instance == null) { - instance = new Settings(); - } - - return instance; - } - - public void open(Player player, Settings.Type menuType, me.goodandevil.skyblock.island.IslandRole role) { - SkyBlock skyblock = SkyBlock.getInstance(); - - MessageManager messageManager = skyblock.getMessageManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - Config languageConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = languageConfig.getFileConfiguration(); - - if (menuType == Settings.Type.Categories) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (!(player.hasPermission("fabledskyblock.admin.settings") || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Categories.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - } else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Admin.Settings.Categories.Item.Visitor.Displayname"))))) { - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, me.goodandevil.skyblock.island.IslandRole.Visitor), 1L); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Categories.Item.Member.Displayname"))))) { - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, me.goodandevil.skyblock.island.IslandRole.Member), 1L); - } else if ((is.getType() == Material.ITEM_FRAME) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Admin.Settings.Categories.Item.Operator.Displayname"))))) { - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, me.goodandevil.skyblock.island.IslandRole.Operator), 1L); - } else if ((is.getType() == Material.NAME_TAG) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Categories.Item.Coop.Displayname"))))) { - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, me.goodandevil.skyblock.island.IslandRole.Coop), 1L); - } else if ((is.getType() == Materials.OAK_SAPLING.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Categories.Item.Owner.Displayname"))))) { - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, me.goodandevil.skyblock.island.IslandRole.Owner), 1L); - } - }); - - nInv.addItem(nInv.createItem(new ItemStack(Materials.OAK_SIGN.parseMaterial()), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Visitor.Displayname"), - configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Visitor.Lore"), null, null, null), 2); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Member.Displayname"), - configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Member.Lore"), null, null, null), 3); - nInv.addItem(nInv.createItem(new ItemStack(Material.ITEM_FRAME), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Operator.Displayname"), - configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Operator.Lore"), null, null, null), - 4); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Coop.Enable")) { - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Exit.Displayname"), null, null, null, - null), 0); - nInv.addItem(nInv.createItem(new ItemStack(Material.NAME_TAG), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Coop.Displayname"), - configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Coop.Lore"), null, null, null), - 6); - nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Owner.Displayname"), - configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Owner.Lore"), null, null, null), - 7); - } else { - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Exit.Displayname"), null, null, null, - null), 0, 8); - nInv.addItem(nInv.createItem(Materials.OAK_SAPLING.parseItem(), - configLoad.getString("Menu.Admin.Settings.Categories.Item.Owner.Displayname"), - configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Owner.Lore"), null, null, null), - 6); - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Categories.Title"))); - nInv.setRows(1); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else if (menuType == Settings.Type.Role) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (!(player.hasPermission("fabledskyblock.admin.settings") || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) && (is - .getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Visitor.Item.Return.Displayname"))) - || is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Member.Item.Return.Displayname"))) - || is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad - .getString("Menu.Admin.Settings.Operator.Item.Return.Displayname"))) - || is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings.Owner.Item.Return.Displayname"))))) { - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Categories, null), 1L); - } else if (is.hasItemMeta()) { - String roleName = getRoleName(role); - - FileConfiguration settingsConfigLoad = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "settings.yml")).getFileConfiguration(); - - for (String settingList : settingsConfigLoad.getConfigurationSection("Settings." + role.name()) - .getKeys(false)) { - if (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings." + roleName + ".Item.Setting." - + settingList + ".Displayname")))) { - if (settingsConfigLoad.getBoolean("Settings." + role.name() + "." + settingList)) { - settingsConfigLoad.set("Settings." + role.name() + "." + settingList, false); - } else { - settingsConfigLoad.set("Settings." + role.name() + "." + settingList, true); - } - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - try { - Config config = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "settings.yml")); - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - break; - } - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, role), 1L); - } - }); - - if (role == me.goodandevil.skyblock.island.IslandRole.Visitor - || role == me.goodandevil.skyblock.island.IslandRole.Member - || role == me.goodandevil.skyblock.island.IslandRole.Coop) { - nInv.addItemStack(createItem(role, "Destroy", new ItemStack(Material.DIAMOND_PICKAXE)), 9); - nInv.addItemStack(createItem(role, "Place", new ItemStack(Material.GRASS)), 10); - nInv.addItemStack(createItem(role, "Anvil", new ItemStack(Material.ANVIL)), 11); - nInv.addItemStack(createItem(role, "ArmorStandUse", new ItemStack(Material.ARMOR_STAND)), 12); - nInv.addItemStack(createItem(role, "Beacon", new ItemStack(Material.BEACON)), 13); - nInv.addItemStack(createItem(role, "Bed", Materials.WHITE_BED.parseItem()), 14); - nInv.addItemStack(createItem(role, "AnimalBreeding", new ItemStack(Material.WHEAT)), 15); - nInv.addItemStack( - createItem(role, "Brewing", new ItemStack(Materials.LEGACY_BREWING_STAND.getPostMaterial())), - 16); - nInv.addItemStack(createItem(role, "Bucket", new ItemStack(Material.BUCKET)), 17); - nInv.addItemStack(createItem(role, "WaterCollection", new ItemStack(Material.POTION)), 18); - nInv.addItemStack(createItem(role, "Storage", new ItemStack(Material.CHEST)), 19); - nInv.addItemStack(createItem(role, "Workbench", Materials.CRAFTING_TABLE.parseItem()), 20); - nInv.addItemStack(createItem(role, "Crop", Materials.WHEAT_SEEDS.parseItem()), 21); - nInv.addItemStack(createItem(role, "Door", Materials.OAK_DOOR.parseItem()), 22); - nInv.addItemStack(createItem(role, "Gate", Materials.OAK_FENCE_GATE.parseItem()), 23); - nInv.addItemStack(createItem(role, "Projectile", new ItemStack(Material.ARROW)), 24); - nInv.addItemStack(createItem(role, "Enchant", Materials.ENCHANTING_TABLE.parseItem()), 25); - nInv.addItemStack(createItem(role, "Fire", new ItemStack(Material.FLINT_AND_STEEL)), 26); - nInv.addItemStack(createItem(role, "Furnace", new ItemStack(Material.FURNACE)), 27); - nInv.addItemStack(createItem(role, "HorseInventory", Materials.CHEST_MINECART.parseItem()), 28); - nInv.addItemStack(createItem(role, "MobRiding", new ItemStack(Material.SADDLE)), 29); - nInv.addItemStack(createItem(role, "MobHurting", Materials.WOODEN_SWORD.parseItem()), 30); - nInv.addItemStack(createItem(role, "MobTaming", Materials.POPPY.parseItem()), 31); - nInv.addItemStack(createItem(role, "Leash", Materials.LEAD.parseItem()), 32); - nInv.addItemStack(createItem(role, "LeverButton", new ItemStack(Material.LEVER)), 33); - nInv.addItemStack(createItem(role, "Milking", new ItemStack(Material.MILK_BUCKET)), 34); - nInv.addItemStack(createItem(role, "Jukebox", new ItemStack(Material.JUKEBOX)), 35); - nInv.addItemStack(createItem(role, "PressurePlate", Materials.OAK_PRESSURE_PLATE.parseItem()), 36); - nInv.addItemStack(createItem(role, "Redstone", new ItemStack(Material.REDSTONE)), 37); - nInv.addItemStack(createItem(role, "Shearing", new ItemStack(Material.SHEARS)), 38); - nInv.addItemStack(createItem(role, "Trading", new ItemStack(Material.EMERALD)), 39); - nInv.addItemStack(createItem(role, "ItemDrop", new ItemStack(Material.PUMPKIN_SEEDS)), 40); - nInv.addItemStack(createItem(role, "ItemPickup", new ItemStack(Material.MELON_SEEDS)), 41); - nInv.addItemStack(createItem(role, "Fishing", new ItemStack(Material.FISHING_ROD)), 42); - nInv.addItemStack(createItem(role, "DropperDispenser", new ItemStack(Material.DISPENSER)), 43); - nInv.addItemStack(createItem(role, "SpawnEgg", new ItemStack(Material.EGG)), 44); - nInv.addItemStack(createItem(role, "HangingDestroy", new ItemStack(Material.ITEM_FRAME)), 45); - nInv.addItemStack(createItem(role, "Cake", new ItemStack(Material.CAKE)), 46); - nInv.addItemStack(createItem(role, "DragonEggUse", new ItemStack(Material.DRAGON_EGG)), 47); - nInv.addItemStack(createItem(role, "MinecartBoat", new ItemStack(Material.MINECART)), 48); - nInv.addItemStack(createItem(role, "Portal", new ItemStack(Material.ENDER_PEARL)), 50); - nInv.addItemStack(createItem(role, "Hopper", new ItemStack(Material.HOPPER)), 51); - nInv.addItemStack(createItem(role, "EntityPlacement", new ItemStack(Material.ARMOR_STAND)), 52); - nInv.addItemStack(createItem(role, "ExperienceOrbPickup", Materials.EXPERIENCE_BOTTLE.parseItem()), 53); - - nInv.setRows(6); - } else if (role == me.goodandevil.skyblock.island.IslandRole.Operator) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Banning")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 10); - nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 11); - nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 12); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 13); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 14); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 15); - nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 16); - nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 17); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 22); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); - } else { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 10); - nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 11); - nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 12); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 13); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 14); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 15); - nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 16); - nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 17); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); - nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 12); - nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 13); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 14); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 15); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 16); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 22); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); - } else { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); - nInv.addItemStack(createItem(role, "Ban", new ItemStack(Material.IRON_AXE)), 12); - nInv.addItemStack(createItem(role, "Unban", Materials.RED_DYE.parseItem()), 13); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 14); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 15); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 16); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); - } - } - - nInv.setRows(3); - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 12); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 13); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 14); - nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 15); - nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 16); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 22); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); - } else { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 12); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 13); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 14); - nInv.addItemStack(createItem(role, "Coop", new ItemStack(Material.NAME_TAG)), 15); - nInv.addItemStack(createItem(role, "CoopPlayers", new ItemStack(Material.BOOK)), 16); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 20); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 21); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 23); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 24); - } - - nInv.setRows(3); - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Enable")) { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 10); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 11); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 12); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 13); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 14); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 15); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 16); - nInv.addItemStack(createItem(role, "Border", new ItemStack(Material.BEACON)), 21); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 22); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 23); - - nInv.setRows(3); - } else { - nInv.addItemStack(createItem(role, "Invite", Materials.WRITABLE_BOOK.parseItem()), 9); - nInv.addItemStack(createItem(role, "Kick", new ItemStack(Material.IRON_DOOR)), 10); - nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Materials.OAK_SIGN.parseMaterial())), 11); - nInv.addItemStack(createItem(role, "Member", new ItemStack(Material.PAINTING)), 12); - nInv.addItemStack(createItem(role, "Island", Materials.OAK_SAPLING.parseItem()), 13); - nInv.addItemStack(createItem(role, "MainSpawn", new ItemStack(Material.EMERALD)), 14); - nInv.addItemStack(createItem(role, "VisitorSpawn", new ItemStack(Material.NETHER_STAR)), - 15); - nInv.addItemStack(createItem(role, "Biome", new ItemStack(Material.MAP)), 16); - nInv.addItemStack(createItem(role, "Weather", Materials.CLOCK.parseItem()), 17); - - nInv.setRows(2); - } - } - } - } else if (role == me.goodandevil.skyblock.island.IslandRole.Owner) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 17); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); - } - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "PvP", new ItemStack(Material.DIAMOND_SWORD)), 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 14); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 15); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 16); - } - } - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), 9); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 10); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 11); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 12); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 17); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 15); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack( - createItem(role, "KeepItemsOnDeath", new ItemStack(Material.ITEM_FRAME)), 16); - } - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 13); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 14); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 15); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "Damage", Materials.RED_DYE.parseItem()), 16); - } - } else { - if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Hunger.Enable")) { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 10); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 11); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 12); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - nInv.addItemStack(createItem(role, "Hunger", new ItemStack(Material.COOKED_BEEF)), 16); - } else { - nInv.addItemStack( - createItem(role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseItem()), - 11); - nInv.addItemStack(createItem(role, "MobGriefing", Materials.IRON_SHOVEL.parseItem()), - 12); - nInv.addItemStack(createItem(role, "Explosions", Materials.GUNPOWDER.parseItem()), 13); - nInv.addItemStack( - createItem(role, "FireSpread", new ItemStack(Material.FLINT_AND_STEEL)), 14); - nInv.addItemStack(createItem(role, "LeafDecay", Materials.OAK_LEAVES.parseItem()), 15); - } - } - } - } - - nInv.setRows(2); - } - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - configLoad.getString("Menu.Admin.Settings." + role.name() + ".Item.Return.Displayname"), null, null, - null, null), 0, 8); - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings." + role.name() + ".Title"))); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } - - private ItemStack createItem(me.goodandevil.skyblock.island.IslandRole role, String setting, ItemStack is) { - SkyBlock skyblock = SkyBlock.getInstance(); - - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - List itemLore = new ArrayList<>(); - - ItemMeta im = is.getItemMeta(); - - String roleName = role.name(); - - if (role == me.goodandevil.skyblock.island.IslandRole.Visitor - || role == me.goodandevil.skyblock.island.IslandRole.Member - || role == me.goodandevil.skyblock.island.IslandRole.Coop) { - roleName = "Default"; - } - - im.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Settings." + roleName + ".Item.Setting." + setting + ".Displayname"))); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "settings.yml")).getFileConfiguration() - .getBoolean("Settings." + role.name() + "." + setting)) { - for (String itemLoreList : configLoad - .getStringList("Menu.Admin.Settings." + roleName + ".Item.Setting.Status.Enabled.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - } else { - for (String itemLoreList : configLoad - .getStringList("Menu.Admin.Settings." + roleName + ".Item.Setting.Status.Disabled.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - } - - im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); - im.setLore(itemLore); - is.setItemMeta(im); - - return is; - } - - private String getRoleName(me.goodandevil.skyblock.island.IslandRole role) { - if (role == me.goodandevil.skyblock.island.IslandRole.Visitor - || role == me.goodandevil.skyblock.island.IslandRole.Member - || role == me.goodandevil.skyblock.island.IslandRole.Coop) { - return "Default"; - } - - return role.name(); - } - - public enum Type { - - Categories, Panel, Role; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Upgrade.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Upgrade.java deleted file mode 100644 index f3d4d659..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/menus/admin/Upgrade.java +++ /dev/null @@ -1,834 +0,0 @@ -package me.goodandevil.skyblock.menus.admin; - -import java.io.File; -import java.io.IOException; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.PotionMeta; -import org.bukkit.potion.PotionData; -import org.bukkit.potion.PotionType; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.placeholder.Placeholder; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.upgrade.UpgradeManager; -import me.goodandevil.skyblock.utils.AbstractAnvilGUI; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent; -import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; - -public class Upgrade { - - private static Upgrade instance; - - public static Upgrade getInstance() { - if (instance == null) { - instance = new Upgrade(); - } - - return instance; - } - - @SuppressWarnings("deprecation") - public void open(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - UpgradeManager upgradeManager = skyblock.getUpgradeManager(); - SoundManager soundManager = skyblock.getSoundManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (playerDataManager.hasPlayerData(player) && playerDataManager.getPlayerData(player).getViewer() != null) { - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - Viewer viewer = (Upgrade.Viewer) playerDataManager.getPlayerData(player).getViewer(); - - if (viewer == null || viewer.getType() == Upgrade.Viewer.Type.Upgrades) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (!(player.hasPermission("fabledskyblock.admin.upgrade") || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Upgrade.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - ItemStack is = event.getItem(); - me.goodandevil.skyblock.upgrade.Upgrade upgrade = null; - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Exit.Displayname"))))) { - soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F); - - return; - } else if ((is.getType() == Material.POTION) && (is.hasItemMeta())) { - if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Speed.Displayname")))) { - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed) - .get(0); - viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed); - } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes( - '&', configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Jump.Displayname")))) { - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump) - .get(0); - viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump); - } - } else if ((is.getType() == Materials.WHEAT_SEEDS.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Crop.Displayname"))))) { - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop) - .get(0); - viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop); - } else if ((is.getType() == Material.FEATHER) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Fly.Displayname"))))) { - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly) - .get(0); - viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly); - } else if ((is.getType() == Material.SPIDER_EYE) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Drops.Displayname"))))) { - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops) - .get(0); - viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops); - } else if ((is.getType() == Material.BEACON) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Size.Displayname"))))) { - viewer.setType(Viewer.Type.Size); - viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if ((is.getType() == Materials.SPAWNER.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Admin.Upgrade.Upgrades.Item.Spawner.Displayname"))))) { - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner) - .get(0); - viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner); - } - - if (upgrade != null) { - if (event.getClick() == ClickType.LEFT) { - if (upgrade.isEnabled()) { - upgrade.setEnabled(false); - } else { - upgrade.setEnabled(true); - } - - if (playerDataManager.hasPlayerData(player)) { - me.goodandevil.skyblock.upgrade.Upgrade.Type upgradeType = ((Viewer) playerDataManager - .getPlayerData(player).getViewer()).getUpgrade(); - - boolean enabled = upgrade.isEnabled(); - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config = fileManager.getConfig(new File( - skyblock.getDataFolder(), "upgrades.yml")); - FileConfiguration configLoad1 = config - .getFileConfiguration(); - - configLoad1.set( - "Upgrades." + upgradeType.name() + ".Enable", - enabled); - - try { - configLoad1.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if (event.getClick() == ClickType.RIGHT) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.upgrade") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, configLoad - .getString("Island.Admin.Upgrade.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), - 1.0F, 1.0F); - - return; - } else if (!(event1.getName().matches("[0-9]+") - || event1.getName().matches("([0-9]*)\\.([0-9]{1,2}$)"))) { - messageManager.sendMessage(player, configLoad - .getString("Island.Admin.Upgrade.Numerical.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), - 1.0F, 1.0F); - - event1.setWillClose(false); - event1.setWillDestroy(false); - - return; - } - - if (playerDataManager.hasPlayerData(player)) { - double upgradeCost = Double.valueOf(event1.getName()); - me.goodandevil.skyblock.upgrade.Upgrade.Type upgradeType = ((Viewer) playerDataManager - .getPlayerData(player).getViewer()).getUpgrade(); - - me.goodandevil.skyblock.upgrade.Upgrade upgrade1 = upgradeManager - .getUpgrades(upgradeType).get(0); - upgrade1.setCost(upgradeCost); - soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), - 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, - () -> { - Config config = fileManager.getConfig(new File( - skyblock.getDataFolder(), "upgrades.yml")); - FileConfiguration configLoad1 = config - .getFileConfiguration(); - - configLoad1.set( - "Upgrades." + upgradeType.name() + ".Cost", - upgradeCost); - - try { - configLoad1.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is1 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is1.getItemMeta(); - im.setDisplayName( - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Word.Enter")); - is1.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is1); - gui.open(); - }, 1L); - } else { - event.setWillClose(false); - event.setWillDestroy(false); - } - } - }); - - ItemStack speedPotion = new ItemStack(Material.POTION); - ItemStack jumpPotion = new ItemStack(Material.POTION); - me.goodandevil.skyblock.upgrade.Upgrade upgrade; - - int NMSVersion = NMSUtil.getVersionNumber(); - - if (NMSVersion > 12) { - PotionMeta pm = (PotionMeta) speedPotion.getItemMeta(); - pm.setBasePotionData(new PotionData(PotionType.SPEED)); - speedPotion.setItemMeta(pm); - } else { - speedPotion = new ItemStack(Material.POTION, 1, (short) 8194); - } - - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Speed).get(0); - nInv.addItem(nInv.createItem(speedPotion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Speed.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Speed.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", getStatus(upgrade)) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 1); - - if (NMSVersion > 12) { - PotionMeta pm = (PotionMeta) jumpPotion.getItemMeta(); - pm.setBasePotionData(new PotionData(PotionType.JUMP)); - jumpPotion.setItemMeta(pm); - } else { - jumpPotion = new ItemStack(Material.POTION, 1, (short) 8203); - } - - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Jump).get(0); - nInv.addItem(nInv.createItem(jumpPotion, - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Jump.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Jump.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", getStatus(upgrade)) }, - null, new ItemFlag[] { ItemFlag.HIDE_POTION_EFFECTS }), 2); - - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Crop).get(0); - nInv.addItem(nInv.createItem(Materials.WHEAT_SEEDS.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Crop.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Crop.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", getStatus(upgrade)) }, - null, null), 3); - - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Fly).get(0); - nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Fly.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Fly.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", getStatus(upgrade)) }, - null, null), 4); - - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops).get(0); - nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Drops.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Drops.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", getStatus(upgrade)) }, - null, null), 5); - - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); - int upgradeTiers = 0; - - if (upgrades != null) { - upgradeTiers = upgrades.size(); - } - - nInv.addItem(nInv.createItem(new ItemStack(Material.BEACON), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Size.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Size.Lore"), - new Placeholder[] { new Placeholder("%tiers", "" + upgradeTiers) }, null, null), 6); - - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Spawner).get(0); - nInv.addItem(nInv.createItem(Materials.SPAWNER.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Spawner.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Spawner.Lore"), - new Placeholder[] { - new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())), - new Placeholder("%status", getStatus(upgrade)) }, - null, null), 7); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Exit.Displayname")), - null, null, null, null), 0, 8); - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Upgrades.Title"))); - nInv.setRows(1); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } else if (viewer.getType() == Upgrade.Viewer.Type.Size) { - nInventoryUtil nInv = new nInventoryUtil(player, event -> { - if (!(player.hasPermission("fabledskyblock.admin.upgrade") || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Upgrade.Permission.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - return; - } - - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); - ItemStack is = event.getItem(); - - if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Admin.Upgrade.Size.Item.Return.Displayname"))))) { - playerData.setViewer(new Viewer(Viewer.Type.Upgrades, null)); - soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta() - .getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Admin.Upgrade.Size.Item.Information.Displayname"))))) { - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); - - if (upgrades != null && upgrades.size() >= 5) { - messageManager.sendMessage(player, - configLoad.getString("Island.Admin.Upgrade.Tier.Limit.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (playerDataManager.hasPlayerData(player) - && playerDataManager - .getPlayerData(player) != null) { - if (!event1.getName().matches("[0-9]+")) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Numerical.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event1.setWillClose(false); - event1.setWillDestroy(false); - - return; - } else { - List upgrades1 = upgradeManager - .getUpgrades( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); - - if (upgrades1 != null && upgrades1.size() >= 5) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Tier.Limit.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } - } - - int size = Integer.valueOf(event1.getName()); - - if (size > 1000) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Tier.Size.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } else if (upgradeManager.hasUpgrade( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size, - size)) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Tier.Exist.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event1.setWillClose(false); - event1.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, - Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - upgradeManager.addUpgrade( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size, - size); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is12 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is12.getItemMeta(); - im.setDisplayName(configLoad - .getString("Menu.Admin.Upgrade.Size.Item.Word.Size.Enter")); - is12.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is12); - gui.open(); - }, 1L); - } - } else if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) - && (is.hasItemMeta()) - && (is.getItemMeta().getDisplayName() - .equals(ChatColor.translateAlternateColorCodes('&', configLoad - .getString("Menu.Admin.Upgrade.Size.Item.Barrier.Displayname"))))) { - soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - } else if ((is.getType() == Material.PAPER) && (is.hasItemMeta())) { - int slot = event.getSlot(); - int tier = slot - 3; - - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size).get(tier); - - if (upgrade != null) { - if (event.getClick() == ClickType.LEFT) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.upgrade") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Permission.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - return; - } - - if (playerDataManager.hasPlayerData(player) - && playerDataManager - .getPlayerData(player) != null) { - if (!event1.getName().matches("[0-9]+")) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Numerical.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event1.setWillClose(false); - event1.setWillDestroy(false); - - return; - } else if (upgradeManager.getUpgrades( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size) - .get(tier) == null) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Tier.Selected.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } - - int size = Integer.valueOf(event1.getName()); - - if (size > 1000) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Tier.Size.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } else if (upgradeManager.hasUpgrade( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size, - size)) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Tier.Exist.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - - soundManager.playSound(player, - Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - upgradeManager.getUpgrades( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size) - .get(tier).setValue(size); - fileManager - .getConfig( - new File(skyblock.getDataFolder(), - "upgrades.yml")) - .getFileConfiguration() - .set("Upgrades.Size." + tier + ".Value", - size); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is13 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is13.getItemMeta(); - im.setDisplayName(configLoad.getString( - "Menu.Admin.Upgrade.Size.Item.Word.Size.Enter")); - is13.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is13); - gui.open(); - }, 1L); - - return; - } else if (event.getClick() == ClickType.MIDDLE) { - soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F); - upgradeManager.removeUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size, - upgrade.getCost(), upgrade.getValue()); - } else if (event.getClick() == ClickType.RIGHT) { - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, - () -> { - AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> { - if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) { - if (!(player.hasPermission("fabledskyblock.admin.upgrade") - || player.hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*"))) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Permission.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - return; - } - - if (playerDataManager.hasPlayerData(player) - && playerDataManager - .getPlayerData(player) != null) { - if (!(event1.getName().matches("[0-9]+") - || event1.getName().matches( - "([0-9]*)\\.([0-9]{2}$)"))) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Numerical.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - event1.setWillClose(false); - event1.setWillDestroy(false); - - return; - } else if (upgradeManager.getUpgrades( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size) - .get(tier) == null) { - messageManager.sendMessage(player, - configLoad.getString( - "Island.Admin.Upgrade.Tier.Selected.Message")); - soundManager.playSound(player, - Sounds.ANVIL_LAND.bukkitSound(), 1.0F, - 1.0F); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player), 1L); - - return; - } - - double cost = Double.valueOf(event1.getName()); - - soundManager.playSound(player, - Sounds.ANVIL_USE.bukkitSound(), 1.0F, 1.0F); - upgradeManager.getUpgrades( - me.goodandevil.skyblock.upgrade.Upgrade.Type.Size) - .get(tier).setCost(cost); - fileManager - .getConfig( - new File(skyblock.getDataFolder(), - "upgrades.yml")) - .getFileConfiguration() - .set("Upgrades.Size." + tier + ".Cost", - cost); - - Bukkit.getServer().getScheduler() - .runTaskLater(skyblock, - () -> open(player), 1L); - } - - event1.setWillClose(true); - event1.setWillDestroy(true); - } else { - event1.setWillClose(false); - event1.setWillDestroy(false); - } - }); - - ItemStack is14 = new ItemStack(Material.NAME_TAG); - ItemMeta im = is14.getItemMeta(); - im.setDisplayName(configLoad.getString( - "Menu.Admin.Upgrade.Size.Item.Word.Cost.Enter")); - is14.setItemMeta(im); - - gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is14); - gui.open(); - }, 1L); - - return; - } else { - event.setWillClose(false); - event.setWillDestroy(false); - - return; - } - } - - Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L); - } - } - }); - - nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Size.Item.Return.Displayname")), - null, null, null, null), 0); - nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Size.Item.Information.Displayname")), - configLoad.getStringList("Menu.Admin.Upgrade.Size.Item.Information.Lore"), null, null, null), - 1); - nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Size.Item.Barrier.Displayname")), - null, null, null, null), 2); - - List upgrades = upgradeManager - .getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); - - if (upgrades != null) { - for (int i = 0; i < 5; i++) { - if (upgrades.size() >= i + 1) { - me.goodandevil.skyblock.upgrade.Upgrade upgrade = upgrades.get(i); - int tier = i + 1; - - if (upgrade != null) { - nInv.addItem(nInv.createItem(new ItemStack(Material.PAPER, tier), - ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Size.Item.Tier.Displayname") - .replace("%tier", "" + tier)), - configLoad.getStringList("Menu.Admin.Upgrade.Size.Item.Tier.Lore"), - new Placeholder[] { new Placeholder("%size", "" + upgrade.getValue()), - new Placeholder("%cost", - NumberUtil.formatNumberByDecimal(upgrade.getCost())) }, - null, null), i + 3); - } - } - } - } - - nInv.setTitle(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Menu.Admin.Upgrade.Size.Title"))); - nInv.setRows(1); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open()); - } - } - } - - private String getStatus(me.goodandevil.skyblock.upgrade.Upgrade upgrade) { - SkyBlock skyblock = SkyBlock.getInstance(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); - - if (upgrade.isEnabled()) { - return configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Word.Disable"); - } else { - return configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Word.Enable"); - } - } - - public static class Viewer { - - private Type type; - private me.goodandevil.skyblock.upgrade.Upgrade.Type upgrade; - - public Viewer(Type type, me.goodandevil.skyblock.upgrade.Upgrade.Type upgrade) { - this.type = type; - this.upgrade = upgrade; - } - - public Type getType() { - return type; - } - - public void setType(Type type) { - this.type = type; - } - - public me.goodandevil.skyblock.upgrade.Upgrade.Type getUpgrade() { - return upgrade; - } - - public void setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type upgrade) { - this.upgrade = upgrade; - } - - public enum Type { - - Upgrades, Size; - - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/message/MessageManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/message/MessageManager.java deleted file mode 100644 index 50a31495..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/message/MessageManager.java +++ /dev/null @@ -1,71 +0,0 @@ -package me.goodandevil.skyblock.message; - -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.placeholder.PlaceholderManager; - -public class MessageManager { - - private final SkyBlock skyblock; - - public MessageManager(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - public void sendMessage(CommandSender sender, String message) { - if (sender instanceof Player) { - PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); - Player player = (Player) sender; - - if (placeholderManager.isPlaceholderAPIEnabled()) { - message = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, message.replace("&", "clr")) - .replace("clr", "&"); - } - - if (message.contains("\n") || message.contains("\\n")) { - List messages = new ArrayList<>(); - - message = message.replace("\\n", "\n"); - - for (String messageList : message.split("\n")) { - messages.add(ChatColor.translateAlternateColorCodes('&', messageList)); - } - - sender.sendMessage(messages.toArray(new String[0])); - } else { - sender.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); - } - } else { - if (message.contains("\n") || message.contains("\\n")) { - List messages = new ArrayList<>(); - - message = message.replace("\\n", "\n"); - - for (String messageList : message.split("\n")) { - messages.add(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', messageList))); - } - - sender.sendMessage(messages.toArray(new String[0])); - } else { - sender.sendMessage(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message))); - } - } - } - - public String replaceMessage(Player player, String message) { - PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); - - if (placeholderManager.isPlaceholderAPIEnabled()) { - message = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, message.replace("&", "clr")) - .replace("clr", "&"); - } - - return message; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/EZPlaceholder.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/EZPlaceholder.java deleted file mode 100644 index 2394fc39..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/EZPlaceholder.java +++ /dev/null @@ -1,148 +0,0 @@ -package me.goodandevil.skyblock.placeholder; - -import java.io.File; -import java.util.List; - -import me.clip.placeholderapi.events.ExpansionUnregisterEvent; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import me.clip.placeholderapi.expansion.PlaceholderExpansion; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.leaderboard.Leaderboard; -import me.goodandevil.skyblock.leaderboard.LeaderboardManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.visit.Visit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -public class EZPlaceholder extends PlaceholderExpansion implements Listener { - - private final SkyBlock skyblock; - - public EZPlaceholder(SkyBlock skyblock) { - this.skyblock = skyblock; - Bukkit.getPluginManager().registerEvents(this, skyblock); - } - - public String getIdentifier() { - return "fabledskyblock"; - } - - public String getPlugin() { - return null; - } - - public String getAuthor() { - return skyblock.getDescription().getAuthors().get(0); - } - - public String getVersion() { - return skyblock.getDescription().getVersion(); - } - - public boolean persist() { return true; } - - public String onPlaceholderRequest(Player player, String identifier) { - PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - List leaderboardLevelPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Level); - List leaderboardBankPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Bank); - List 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("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.fabledskyblock_leaderboard_votes.Non-empty.Message") - .replace("%position", "" + (i + 1)).replace("%player", islandOwnerName) - .replace("%votes", NumberUtil.formatNumberByDecimal(visit.getVoters().size()))); - } - - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_leaderboard_votes.Empty.Message")); - } else if (identifier.equalsIgnoreCase("leaderboard_bank_" + (i + 1))) { - if (i < leaderboardBankPlayers.size()) { - Leaderboard leaderboard = leaderboardBankPlayers.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.fabledskyblock_leaderboard_bank.Non-empty.Message") - .replace("%position", "" + (i + 1)).replace("%player", islandOwnerName) - .replace("%balance", NumberUtil.formatNumberByDecimal(visit.getBankBalance()))); - } - - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_leaderboard_bank.Empty.Message")); - } else if (identifier.equalsIgnoreCase("leaderboard_level_" + (i + 1))) { - if (i < leaderboardLevelPlayers.size()) { - Leaderboard leaderboard = leaderboardLevelPlayers.get(i); - Visit visit = leaderboard.getVisit(); - IslandLevel 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.fabledskyblock_leaderboard_level.Non-empty.Message") - .replace("%position", "" + (i + 1)).replace("%player", islandOwnerName) - .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints()))); - } - - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_leaderboard_level.Empty.Message")); - } - } - } - - if (player == null) { - return ""; - } - - return placeholderManager.getPlaceholder(player, "fabledskyblock_" + identifier); - } - -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java deleted file mode 100644 index 6dc9a2ed..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java +++ /dev/null @@ -1,144 +0,0 @@ -package me.goodandevil.skyblock.placeholder; - -import java.io.File; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import be.maximvdw.placeholderapi.PlaceholderAPI; -import be.maximvdw.placeholderapi.PlaceholderReplaceEvent; -import be.maximvdw.placeholderapi.PlaceholderReplacer; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.leaderboard.Leaderboard; -import me.goodandevil.skyblock.leaderboard.LeaderboardManager; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.visit.Visit; - -public class MVdWPlaceholder { - - private final SkyBlock skyblock; - - public MVdWPlaceholder(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - public void register() { - PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - List leaderboardLevelPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Level); - List leaderboardBankPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Bank); - List leaderboardVotesPlayers = leaderboardManager.getLeaderboard(Leaderboard.Type.Votes); - - PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_islands", event -> "" + skyblock.getVisitManager().getIslands().size()); - - for (int i = 0; i < 10; i++) { - PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_leaderboard_votes_" + (i + 1), - event -> { - int index = Integer.valueOf(event.getPlaceholder().replace("fabledskyblock_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.fabledskyblock_leaderboard_votes.Non-empty.Message") - .replace("%position", "" + (index + 1)) - .replace("%player", islandOwnerName) - .replace("%votes", NumberUtil.formatNumberByDecimal(visit.getVoters().size()))); - } - - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_leaderboard_votes.Empty.Message")); - }); - - PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_leaderboard_bank_" + (i + 1), - event -> { - int index = Integer.valueOf(event.getPlaceholder().replace("fabledskyblock_leaderboard_bank_", "")); - - if (index < leaderboardBankPlayers.size()) { - Leaderboard leaderboard = leaderboardBankPlayers.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.fabledskyblock_leaderboard_bank.Non-empty.Message") - .replace("%position", "" + (index + 1)) - .replace("%player", islandOwnerName) - .replace("%balance", NumberUtil.formatNumberByDecimal(visit.getBankBalance()))); - } - - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_leaderboard_bank.Empty.Message")); - }); - - PlaceholderAPI.registerPlaceholder(skyblock, "fabledskyblock_leaderboard_level_" + (i + 1), - event -> { - int index = Integer.valueOf(event.getPlaceholder().replace("fabledskyblock_leaderboard_level_", "")); - - if (index < leaderboardLevelPlayers.size()) { - Leaderboard leaderboard = leaderboardLevelPlayers.get(index); - Visit visit = leaderboard.getVisit(); - IslandLevel 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.fabledskyblock_leaderboard_level.Non-empty.Message") - .replace("%position", "" + (index + 1)).replace("%player", islandOwnerName) - .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints()))); - } - - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_leaderboard_level.Empty.Message")); - }); - } - - for (String placeholderList : placeholderManager.getPlaceholders()) { - PlaceholderAPI.registerPlaceholder(skyblock, placeholderList, event -> { - Player player = event.getPlayer(); - - if (player == null) { - return null; - } - - return placeholderManager.getPlaceholder(player, event.getPlaceholder()); - }); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/Placeholder.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/Placeholder.java deleted file mode 100644 index f21a05cc..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/Placeholder.java +++ /dev/null @@ -1,20 +0,0 @@ -package me.goodandevil.skyblock.placeholder; - -public class Placeholder { - - private String placeholder; - private String result; - - public Placeholder(String placeholder, String result) { - this.placeholder = placeholder; - this.result = result; - } - - public String getPlaceholder() { - return placeholder; - } - - public String getResult() { - return result; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java deleted file mode 100644 index d00106e7..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java +++ /dev/null @@ -1,436 +0,0 @@ -package me.goodandevil.skyblock.placeholder; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.invite.Invite; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.leaderboard.Leaderboard; -import me.goodandevil.skyblock.leaderboard.LeaderboardManager; -import me.goodandevil.skyblock.levelling.LevellingManager; -import me.goodandevil.skyblock.levelling.LevellingMaterial; -import me.goodandevil.skyblock.utils.NumberUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.visit.VisitManager; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.plugin.PluginManager; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -public class PlaceholderManager { - - private final SkyBlock skyblock; - - private boolean PlaceholderAPI = false; - private boolean MVdWPlaceholderAPI = false; - - public PlaceholderManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - PluginManager pluginManager = skyblock.getServer().getPluginManager(); - - if (pluginManager.getPlugin("PlaceholderAPI") != null) { - PlaceholderAPI = true; - } - - if (pluginManager.getPlugin("MVdWPlaceholderAPI") != null) { - MVdWPlaceholderAPI = true; - } - } - - public void registerPlaceholders() { - if (PlaceholderAPI) { - new EZPlaceholder(skyblock).register(); - } - - if (MVdWPlaceholderAPI) { - new MVdWPlaceholder(skyblock).register(); - } - } - - public boolean isPlaceholderAPIEnabled() { - return PlaceholderAPI; - } - - public boolean isMVdWPlaceholderAPIEnabled() { - return MVdWPlaceholderAPI; - } - - public String getPlaceholder(Player player, String placeholder) { - IslandManager islandManager = skyblock.getIslandManager(); - VisitManager visitManager = skyblock.getVisitManager(); - LevellingManager levellingManager = skyblock.getLevellingManager(); - - Island island = islandManager.getIsland(player); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (placeholder.equalsIgnoreCase("fabledskyblock_island_exists")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_exists.Not-exists.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_exists.Exists.Message")); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_isopen")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_isopen.Empty.Message")); - } else { - if (island.isOpen()) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_isopen.Open.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_isopen.Closed.Message")); - } - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_size")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_size.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_size.Non-empty.Message") - .replace("%placeholder", "" + island.getSize())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_radius")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_radius.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_radius.Non-empty.Message") - .replace("%placeholder", "" + island.getRadius())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_level")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level.Non-empty.Message") - .replace("%placeholder", "" + island.getLevel().getLevel())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_level_formatted")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_formatted.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_formatted.Non-empty.Message").replace( - "%placeholder", "" + NumberUtil.formatNumberBySuffix(island.getLevel().getLevel()))); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_points")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_points.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_points.Non-empty.Message") - .replace("%placeholder", "" + island.getLevel().getPoints())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_votes")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_votes.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_votes.Non-empty.Message") - .replace("%placeholder", "" + visitManager.getIslands().get(player.getUniqueId()).getVoters().size())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_role")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_role.Empty.Message")); - } else { - for (IslandRole roleList : IslandRole.values()) { - if (island.hasRole(roleList, player.getUniqueId())) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_role.Non-empty.Message") - .replace("%placeholder", roleList.name())); - } - } - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_owner")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_owner.Empty.Message")); - } else { - UUID islandOwnerUUID = island.getOwnerUUID(); - Player targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID); - - if (targetPlayer == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_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.fabledskyblock_island_owner.Non-empty.Yourself.Message") - .replace("%placeholder", targetPlayer.getName())); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_owner.Non-empty.Other.Message") - .replace("%placeholder", targetPlayer.getName())); - } - } - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_biome")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_biome.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_biome.Non-empty.Message") - .replace("%placeholder", island.getBiomeName())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_time")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_time.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_time.Non-empty.Message") - .replace("%placeholder", "" + island.getTime())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_weather")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_weather.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_weather.Non-empty.Message") - .replace("%placeholder", "" + island.getWeatherName())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_bans")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_bans.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_bans.Non-empty.Message") - .replace("%placeholder", "" + island.getBan().getBans().size())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_members_total")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_members_total.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_members_total.Non-empty.Message") - .replace("%placeholder", "" + (island.getRole(IslandRole.Member).size() - + island.getRole(IslandRole.Operator).size() + 1))); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_members")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_members.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_members.Non-empty.Message") - .replace("%placeholder", "" + island.getRole(IslandRole.Member).size())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_operators")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_operators.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_operators.Non-empty.Message") - .replace("%placeholder", "" + island.getRole(IslandRole.Operator).size())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_coops")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_coops.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_coops.Non-empty.Message") - .replace("%placeholder", "" + islandManager.getCoopPlayersAtIsland(island).size())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_coops_total")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_coops_total.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_coops_total.Non-empty.Message") - .replace("%placeholder", "" + island.getCoopPlayers().size())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_visitors")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_visitors.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_visitors.Non-empty.Message") - .replace("%placeholder", "" + islandManager.getVisitorsAtIsland(island).size())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_invites")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_invites.Empty.Message")); - } else { - Map invites = skyblock.getInviteManager().getInvites(); - int invitedPlayers = 0; - - for (int i = 0; i < invites.size(); i++) { - UUID uuid = (UUID) invites.keySet().toArray()[i]; - Invite invite = invites.get(uuid); - - if (invite.getOwnerUUID().equals(island.getOwnerUUID())) { - invitedPlayers++; - } - } - - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_invites.Non-empty.Message") - .replace("%placeholder", "" + invitedPlayers)); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_bank_balance")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_bank_balance.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_bank_balance.Non-empty.Message")) - .replace("%placeholder", "" + NumberUtil.formatNumberByDecimal(island.getBankBalance())); - } - } else if (placeholder.equalsIgnoreCase("fabledskyblock_island_bank_balance_formatted")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_bank_balance_formatted.Empty.Message")); - } else { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_bank_balance_formatted.Non-empty.Message")) - .replace("%placeholder", "" + NumberUtil.formatNumberBySuffix((long) island.getBankBalance())); - } - } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_leaderboard_level_rank")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_level_rank.Empty.Message")); - } else { - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - int rank = leaderboardManager.getPlayerIslandLeaderboardPosition(player, Leaderboard.Type.Level); - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_level_rank.Non-empty.Message") - .replace("%placeholder", "" + rank)); - } - } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_leaderboard_bank_rank")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_bank_rank.Empty.Message")); - } else { - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - int rank = leaderboardManager.getPlayerIslandLeaderboardPosition(player, Leaderboard.Type.Bank); - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_bank_rank.Non-empty.Message") - .replace("%placeholder", "" + rank)); - } - } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_leaderboard_votes_rank")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_votes_rank.Empty.Message")); - } else { - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - int rank = leaderboardManager.getPlayerIslandLeaderboardPosition(player, Leaderboard.Type.Votes); - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_leaderboard_votes_rank.Non-empty.Message") - .replace("%placeholder", "" + rank)); - } - } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_level_block_count_")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_block_count.Empty.Message")); - } else { - String materialName = placeholder.replace("fabledskyblock_island_level_block_count_", "").toUpperCase(); - Materials materials = Materials.fromString(materialName); - if (materials == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_block_count.Invalid.Message")); - } else { - long blockCount = island.getLevel().getMaterialAmount(materials.name()); - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_block_count.Non-empty.Message") - .replace("%placeholder", NumberUtil.formatNumberByDecimal(blockCount))); - } - } - } else if (placeholder.toLowerCase().startsWith("fabledskyblock_island_level_block_points_")) { - if (island == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_block_points.Empty.Message")); - } else { - String materialName = placeholder.replace("fabledskyblock_island_level_block_points_", "").toUpperCase(); - Materials materials = Materials.fromString(materialName); - if (materials == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_block_points.Invalid.Message")); - } else { - long blockPoints = island.getLevel().getMaterialPoints(materials.name()); - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_island_level_block_points.Non-empty.Message") - .replace("%placeholder", NumberUtil.formatNumberByDecimal(blockPoints))); - } - } - } else if (placeholder.toLowerCase().startsWith("fabledskyblock_level_block_value_")) { - String materialName = placeholder.replace("fabledskyblock_level_block_value_", "").toUpperCase(); - Materials materials = Materials.fromString(materialName); - if (materials == null) { - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_level_block_value.Invalid.Message")); - } else { - long blockValue = levellingManager.getMaterial(materials).getPoints(); - return ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Placeholder.fabledskyblock_level_block_value.Non-empty.Message") - .replace("%placeholder", NumberUtil.formatNumberByDecimal(blockValue))); - } - } - - return ""; - } - - public List getPlaceholders() { - List placeholders = new ArrayList<>(); - placeholders.add("fabledskyblock_island_exists"); - placeholders.add("fabledskyblock_island_isopen"); - placeholders.add("fabledskyblock_island_size"); - placeholders.add("fabledskyblock_island_radius"); - placeholders.add("fabledskyblock_island_level"); - placeholders.add("fabledskyblock_island_level_formatted"); - placeholders.add("fabledskyblock_island_points"); - placeholders.add("fabledskyblock_island_votes"); - placeholders.add("fabledskyblock_island_role"); - placeholders.add("fabledskyblock_island_owner"); - placeholders.add("fabledskyblock_island_biome"); - placeholders.add("fabledskyblock_island_time"); - placeholders.add("fabledskyblock_island_weather"); - placeholders.add("fabledskyblock_island_bans"); - placeholders.add("fabledskyblock_island_members_total"); - placeholders.add("fabledskyblock_island_members"); - placeholders.add("fabledskyblock_island_operators"); - placeholders.add("fabledskyblock_island_coops"); - placeholders.add("fabledskyblock_island_coops_total"); - placeholders.add("fabledskyblock_island_visitors"); - placeholders.add("fabledskyblock_island_invites"); - placeholders.add("fabledskyblock_island_bank_balance"); - placeholders.add("fabledskyblock_island_leaderboard_level_rank"); - placeholders.add("fabledskyblock_island_leaderboard_bank_rank"); - placeholders.add("fabledskyblock_island_leaderboard_votes_rank"); - //placeholders.add("fabledskyblock_island_level_block_count_"); - //placeholders.add("fabledskyblock_island_level_block_points_"); - //placeholders.add("fabledskyblock_level_block_value_"); - - return placeholders; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playerdata/PlayerData.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playerdata/PlayerData.java deleted file mode 100644 index 8d1345e8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playerdata/PlayerData.java +++ /dev/null @@ -1,204 +0,0 @@ -package me.goodandevil.skyblock.playerdata; - -import java.io.File; -import java.io.IOException; -import java.util.UUID; - -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.confirmation.Confirmation; -import me.goodandevil.skyblock.utils.structure.Area; - -public class PlayerData { - - private UUID uuid; - private UUID islandOwnerUUID; - private UUID ownershipUUID; - - private int page; - private int playTime; - private int visitTime; - private int confirmationTime; - - private Confirmation confirmation; - - private Object type; - private Object sort; - - private Area area; - - private boolean chat; - - private Object viewer; - - public PlayerData(Player player) { - uuid = player.getUniqueId(); - islandOwnerUUID = null; - - page = 1; - confirmationTime = 0; - playTime = getConfig().getFileConfiguration().getInt("Statistics.Island.Playtime"); - - area = new Area(); - - chat = false; - } - - public void setPage(int page) { - this.page = page; - } - - public int getPage() { - return page; - } - - public void setType(Object type) { - this.type = type; - } - - public Object getType() { - return type; - } - - public void setSort(Object sort) { - this.sort = sort; - } - - public Object getSort() { - return sort; - } - - public void setIsland(UUID islandOwnerUUID) { - this.islandOwnerUUID = islandOwnerUUID; - } - - public UUID getIsland() { - return islandOwnerUUID; - } - - public void setOwnership(UUID ownershipUUID) { - this.ownershipUUID = ownershipUUID; - } - - public UUID getOwnership() { - return ownershipUUID; - } - - public void setConfirmationTime(int confirmationTime) { - this.confirmationTime = confirmationTime; - } - - public int getConfirmationTime() { - return confirmationTime; - } - - public void setConfirmation(Confirmation confirmation) { - this.confirmation = confirmation; - } - - public Confirmation getConfirmation() { - return confirmation; - } - - public boolean hasConfirmation() { - return confirmationTime > 0; - } - - public void setPlaytime(int playTime) { - this.playTime = playTime; - } - - public int getPlaytime() { - return playTime; - } - - public void setVisitTime(int visitTime) { - this.visitTime = visitTime; - } - - public int getVisitTime() { - return visitTime; - } - - public String getMemberSince() { - return getConfig().getFileConfiguration().getString("Statistics.Island.Join"); - } - - public void setMemberSince(String date) { - getConfig().getFileConfiguration().set("Statistics.Island.Join", date); - } - - public UUID getOwner() { - String islandOwnerUUID = getConfig().getFileConfiguration().getString("Island.Owner"); - return (islandOwnerUUID == null) ? null : UUID.fromString(islandOwnerUUID); - } - - public void setOwner(UUID islandOwnerUUID) { - if (islandOwnerUUID == null) { - getConfig().getFileConfiguration().set("Island.Owner", null); - } else { - getConfig().getFileConfiguration().set("Island.Owner", islandOwnerUUID.toString()); - } - } - - public String[] getTexture() { - FileConfiguration configLoad = getConfig().getFileConfiguration(); - - return new String[] { configLoad.getString("Texture.Signature"), configLoad.getString("Texture.Value") }; - } - - public void setTexture(String signature, String value) { - getConfig().getFileConfiguration().set("Texture.Signature", signature); - getConfig().getFileConfiguration().set("Texture.Value", value); - } - - public String getLastOnline() { - return getConfig().getFileConfiguration().getString("Statistics.Island.LastOnline"); - } - - public void setLastOnline(String date) { - getConfig().getFileConfiguration().set("Statistics.Island.LastOnline", date); - } - - public Area getArea() { - return area; - } - - public boolean isChat() { - return chat; - } - - public void setChat(boolean chat) { - this.chat = chat; - } - - public Object getViewer() { - return viewer; - } - - public void setViewer(Object viewer) { - this.viewer = viewer; - } - - public void save() { - Config config = getConfig(); - FileConfiguration configLoad = config.getFileConfiguration(); - configLoad.set("Statistics.Island.Playtime", getPlaytime()); - - try { - configLoad.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private Config getConfig() { - SkyBlock skyblock = SkyBlock.getInstance(); - - return skyblock.getFileManager().getConfig( - new File(new File(skyblock.getDataFolder().toString() + "/player-data"), uuid.toString() + ".yml")); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playerdata/PlayerDataManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playerdata/PlayerDataManager.java deleted file mode 100644 index a04570f8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playerdata/PlayerDataManager.java +++ /dev/null @@ -1,331 +0,0 @@ -package me.goodandevil.skyblock.playerdata; - -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.ban.BanManager; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.*; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.scoreboard.Scoreboard; -import me.goodandevil.skyblock.scoreboard.ScoreboardManager; -import me.goodandevil.skyblock.utils.player.OfflinePlayer; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.visit.Visit; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -public class PlayerDataManager { - - private final SkyBlock skyblock; - private Map playerDataStorage = new HashMap<>(); - - public PlayerDataManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - for (Player all : Bukkit.getOnlinePlayers()) { - loadPlayerData(all); - - if (!hasPlayerData(all)) { - createPlayerData(all); - loadPlayerData(all); - } - - storeIsland(all); - } - } - - public void onDisable() { - for (UUID playerDataStorageList : playerDataStorage.keySet()) { - playerDataStorage.get(playerDataStorageList).save(); - } - } - - public void createPlayerData(Player player) { - Config config = skyblock.getFileManager().getConfig(new File( - new File(skyblock.getDataFolder().toString() + "/player-data"), player.getUniqueId() + ".yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - String[] playerTexture; - - try { - Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player); - Method getProfileMethod = entityPlayer.getClass().getMethod("getProfile", new Class[0]); - GameProfile gameProfile = (GameProfile) getProfileMethod.invoke(entityPlayer); - Property property = gameProfile.getProperties().get("textures").iterator().next(); - playerTexture = new String[] { property.getSignature(), property.getValue() }; - } catch (Exception e) { - playerTexture = new String[] { - "K9P4tCIENYbNpDuEuuY0shs1x7iIvwXi4jUUVsATJfwsAIZGS+9OZ5T2HB0tWBoxRvZNi73Vr+syRdvTLUWPusVXIg+2fhXmQoaNEtnQvQVGQpjdQP0TkZtYG8PbvRxE6Z75ddq+DVx/65OSNHLWIB/D+Rg4vINh4ukXNYttn9QvauDHh1aW7/IkIb1Bc0tLcQyqxZQ3mdglxJfgIerqnlA++Lt7TxaLdag4y1NhdZyd3OhklF5B0+B9zw/qP8QCzsZU7VzJIcds1+wDWKiMUO7+60OSrIwgE9FPamxOQDFoDvz5BOULQEeNx7iFMB+eBYsapCXpZx0zf1bduppBUbbVC9wVhto/J4tc0iNyUq06/esHUUB5MHzdJ0Y6IZJAD/xIw15OLCUH2ntvs8V9/cy5/n8u3JqPUM2zhUGeQ2p9FubUGk4Q928L56l3omRpKV+5QYTrvF+AxFkuj2hcfGQG3VE2iYZO6omXe7nRPpbJlHkMKhE8Xvd1HP4PKpgivSkHBoZ92QEUAmRzZydJkp8CNomQrZJf+MtPiNsl/Q5RQM+8CQThg3+4uWptUfP5dDFWOgTnMdA0nIODyrjpp+bvIJnsohraIKJ7ZDnj4tIp4ObTNKDFC/8j8JHz4VCrtr45mbnzvB2DcK8EIB3JYT7ElJTHnc5BKMyLy5SKzuw=", - "eyJ0aW1lc3RhbXAiOjE1MjkyNTg0MTE4NDksInByb2ZpbGVJZCI6Ijg2NjdiYTcxYjg1YTQwMDRhZjU0NDU3YTk3MzRlZWQ3IiwicHJvZmlsZU5hbWUiOiJTdGV2ZSIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGMxYzc3Y2U4ZTU0OTI1YWI1ODEyNTQ0NmVjNTNiMGNkZDNkMGNhM2RiMjczZWI5MDhkNTQ4Mjc4N2VmNDAxNiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjc2N2Q0ODMyNWVhNTMyNDU2MTQwNmI4YzgyYWJiZDRlMjc1NWYxMTE1M2NkODVhYjA1NDVjYzIifX19" }; - } - - configLoad.set("Texture.Signature", playerTexture[0]); - configLoad.set("Texture.Value", playerTexture[1]); - configLoad.set("Statistics.Island.Playtime", 0); - - try { - configLoad.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void loadPlayerData(Player player) { - if (skyblock.getFileManager().isFileExist(new File(skyblock.getDataFolder().toString() + "/player-data", - player.getUniqueId().toString() + ".yml"))) { - PlayerData playerData = new PlayerData(player); - playerDataStorage.put(player.getUniqueId(), playerData); - } - } - - public void unloadPlayerData(Player player) { - if (hasPlayerData(player)) { - skyblock.getFileManager() - .unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - player.getUniqueId().toString() + ".yml")); - playerDataStorage.remove(player.getUniqueId()); - } - } - - public void savePlayerData(Player player) { - if (hasPlayerData(player)) { - Config config = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), - player.getUniqueId().toString() + ".yml")); - - try { - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - public Map getPlayerData() { - return playerDataStorage; - } - - public PlayerData getPlayerData(Player player) { - if (hasPlayerData(player)) { - return playerDataStorage.get(player.getUniqueId()); - } - - return null; - } - - public boolean hasPlayerData(Player player) { - return playerDataStorage.containsKey(player.getUniqueId()); - } - - public void storeIsland(Player player) { - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - WorldManager worldManager = skyblock.getWorldManager(); - FileManager fileManager = skyblock.getFileManager(); - BanManager banManager = skyblock.getBanManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (hasPlayerData(player)) { - if (worldManager.isIslandWorld(player.getWorld())) { - IslandWorld world = worldManager.getIslandWorld(player.getWorld()); - Island island = islandManager.getIslandAtLocation(player.getLocation()); - - if (island != null) { - Player targetPlayer = Bukkit.getServer().getPlayer(island.getOwnerUUID()); - String targetPlayerName; - - if (targetPlayer == null) { - targetPlayerName = new OfflinePlayer(island.getOwnerUUID()).getName(); - } else { - targetPlayerName = targetPlayer.getName(); - } - - if (banManager.hasIsland(island.getOwnerUUID()) - && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Banning") - && banManager.getIsland(island.getOwnerUUID()).isBanned(player.getUniqueId())) { - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Teleport.Island.Message") - .replace("%player", targetPlayerName)); - } else { - if (island.hasRole(IslandRole.Member, player.getUniqueId()) - || island.hasRole(IslandRole.Operator, player.getUniqueId()) - || island.hasRole(IslandRole.Owner, player.getUniqueId())) { - PlayerData playerData = getPlayerData(player); - playerData.setIsland(island.getOwnerUUID()); - - if (world == IslandWorld.Normal) { - if (!island.isWeatherSynchronized()) { - player.setPlayerTime(island.getTime(), - fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); - player.setPlayerWeather(island.getWeather()); - } - } - - islandManager.updateFlight(player); - - return; - } else if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) { - if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) { - if (islandManager.removeCoopPlayers(island, null)) { - return; - } - } - - PlayerData playerData = getPlayerData(player); - playerData.setIsland(island.getOwnerUUID()); - - if (world == IslandWorld.Normal) { - if (!island.isWeatherSynchronized()) { - player.setPlayerTime(island.getTime(), - fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); - player.setPlayerWeather(island.getWeather()); - } - } - - islandManager.updateFlight(player); - - ScoreboardManager scoreboardManager = skyblock.getScoreboardManager(); - - if (scoreboardManager != null) { - for (Player all : Bukkit.getOnlinePlayers()) { - PlayerData targetPlayerData = getPlayerData(all); - - if (targetPlayerData.getOwner() != null - && targetPlayerData.getOwner().equals(island.getOwnerUUID())) { - Scoreboard scoreboard = scoreboardManager.getScoreboard(all); - scoreboard.cancel(); - - if ((island.getRole(IslandRole.Member).size() - + island.getRole(IslandRole.Operator).size() + 1) == 1) { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Scoreboard.Island.Solo.Displayname"))); - scoreboard.setDisplayList(configLoad - .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); - } else { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Scoreboard.Island.Team.Displayname"))); - scoreboard.setDisplayList(configLoad - .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); - - Map displayVariables = new HashMap<>(); - displayVariables.put("%owner", - configLoad.getString("Scoreboard.Island.Team.Word.Owner")); - displayVariables.put("%operator", - configLoad.getString("Scoreboard.Island.Team.Word.Operator")); - displayVariables.put("%member", - configLoad.getString("Scoreboard.Island.Team.Word.Member")); - - scoreboard.setDisplayVariables(displayVariables); - } - - scoreboard.run(); - } - } - } - - return; - } else { - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", - targetPlayerName)); - } - } - - LocationUtil.teleportPlayerToSpawn(player); - - return; - } - - HashMap visitIslands = skyblock.getVisitManager().getIslands(); - - for (UUID visitIslandList : visitIslands.keySet()) { - Visit visit = visitIslands.get(visitIslandList); - IslandLocation location = visit.getLocation(world); - - if (location != null && LocationUtil.isLocationAtLocationRadius(player.getLocation(), - location.getLocation(), visit.getRadius())) { - Player targetPlayer = Bukkit.getServer().getPlayer(visitIslandList); - String targetPlayerName; - - if (targetPlayer == null) { - targetPlayerName = new OfflinePlayer(visitIslandList).getName(); - } else { - targetPlayerName = targetPlayer.getName(); - } - - if (banManager.hasIsland(visitIslandList) - && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Banning") - && banManager.getIsland(visitIslandList).isBanned(player.getUniqueId())) { - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Teleport.Island.Message").replace("%player", - targetPlayerName)); - } else { - org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer() - .getOfflinePlayer(visitIslandList); - - islandManager.loadIsland(offlinePlayer); - island = islandManager.getIsland(offlinePlayer); - - if (island != null) { - if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) { - if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) { - if (islandManager.removeCoopPlayers(island, null)) { - islandManager.unloadIsland(island, - Bukkit.getServer().getOfflinePlayer(visitIslandList)); - - return; - } - } - - PlayerData playerData = getPlayerData(player); - playerData.setIsland(visitIslandList); - - if (world == IslandWorld.Normal) { - if (!island.isWeatherSynchronized()) { - player.setPlayerTime(island.getTime(), fileManager - .getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration() - .getBoolean("Island.Weather.Time.Cycle")); - player.setPlayerWeather(island.getWeather()); - } - } - - islandManager.updateFlight(player); - - return; - } else { - islandManager.unloadIsland(island, - Bukkit.getServer().getOfflinePlayer(visitIslandList)); - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Closed.Island.Message") - .replace("%player", targetPlayerName)); - } - } - } - - LocationUtil.teleportPlayerToSpawn(player); - - return; - } - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playtime/PlaytimeTask.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playtime/PlaytimeTask.java deleted file mode 100644 index a986f99e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/playtime/PlaytimeTask.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.goodandevil.skyblock.playtime; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; - -public class PlaytimeTask extends BukkitRunnable { - - private final PlayerDataManager playerDataManager; - private final IslandManager islandManager; - - public PlaytimeTask(PlayerDataManager playerDataManager, IslandManager islandManager) { - this.playerDataManager = playerDataManager; - this.islandManager = islandManager; - } - - @Override - public void run() { - for (Player all : Bukkit.getOnlinePlayers()) { - if (playerDataManager.hasPlayerData(all) && islandManager.getIsland(all) != null) { - PlayerData playerData = playerDataManager.getPlayerData(all); - playerData.setPlaytime(playerData.getPlaytime() + 1); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/scoreboard/Scoreboard.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/scoreboard/Scoreboard.java deleted file mode 100644 index c88f7915..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/scoreboard/Scoreboard.java +++ /dev/null @@ -1,253 +0,0 @@ -package me.goodandevil.skyblock.scoreboard; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; -import org.bukkit.scheduler.BukkitTask; -import org.bukkit.scoreboard.DisplaySlot; -import org.bukkit.scoreboard.Objective; -import org.bukkit.scoreboard.Team; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; -import me.goodandevil.skyblock.placeholder.PlaceholderManager; -import me.goodandevil.skyblock.utils.NumberUtil; - -public class Scoreboard { - - private Player player; - private String displayName; - private List displayList; - private Map displayVariables; - private BukkitTask scheduler; - - public Scoreboard(Player player) { - this.player = player; - displayList = new ArrayList<>(); - displayVariables = new HashMap<>(); - } - - public void setDisplayName(String displayName) { - this.displayName = displayName; - } - - public void setDisplayList(List displayList) { - this.displayList = displayList; - } - - public void setDisplayVariables(Map displayVariables) { - this.displayVariables = displayVariables; - } - - public void run() { - SkyBlock skyblock = SkyBlock.getInstance(); - - new BukkitRunnable() { - @Override - public void run() { - final org.bukkit.scoreboard.Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); - - new BukkitRunnable() { - @Override - @SuppressWarnings("deprecation") - public void run() { - String ranStr = UUID.randomUUID().toString().split("-")[0]; - Objective obj; - - if (scoreboard.getObjective(player.getName()) != null) { - obj = scoreboard.getObjective(player.getName()); - } else { - obj = scoreboard.registerNewObjective(player.getName(), "dummy"); - } - - obj.setDisplaySlot(DisplaySlot.SIDEBAR); - - String formattedDisplayName = ChatColor.translateAlternateColorCodes('&', - replaceDisplayName(displayName)); - - if (formattedDisplayName.length() > 32) { - obj.setDisplayName(ChatColor.RED + "Too long..."); - } else { - obj.setDisplayName(formattedDisplayName); - } - - for (int i = 0; i < ChatColor.values().length; i++) { - if (i == displayList.size()) { - break; - } - - ChatColor chatColor = ChatColor.values()[i]; - Team team = scoreboard.registerNewTeam(ranStr + i); - team.addEntry(chatColor.toString()); - obj.getScore(chatColor.toString()).setScore(i); - } - - scheduler = new BukkitRunnable() { - int i1 = displayList.size(); - - @Override - public void run() { - if (player.isOnline()) { - try { - String formattedDisplayName = ChatColor.translateAlternateColorCodes('&', - replaceDisplayName(displayName)); - - if (formattedDisplayName.length() > 32) { - obj.setDisplayName(ChatColor.RED + "Too long..."); - } else { - obj.setDisplayName(formattedDisplayName); - } - - for (String displayLine : displayList) { - i1--; - - displayLine = replaceDisplayLine(displayLine); - - if (displayLine.length() > 32) { - displayLine = "&cLine too long..."; - } - - if (displayLine.length() >= 16) { - String prefixLine = displayLine.substring(0, - Math.min(displayLine.length(), 16)); - String suffixLine = displayLine.substring(16, - Math.min(displayLine.length(), displayLine.length())); - - if (prefixLine.substring(prefixLine.length() - 1).equals("&")) { - prefixLine = ChatColor.translateAlternateColorCodes('&', - prefixLine.substring(0, prefixLine.length() - 1)); - suffixLine = ChatColor.translateAlternateColorCodes('&', - "&" + suffixLine); - } else { - String lastColorCodes; - - if (prefixLine.contains("&")) { - String[] colorCodes = prefixLine.split("&"); - String lastColorCodeText = colorCodes[colorCodes.length - 1]; - lastColorCodes = "&" + lastColorCodeText.substring(0, - Math.min(lastColorCodeText.length(), 1)); - - if ((colorCodes.length >= 2) && (lastColorCodes.equals("&l") - || lastColorCodes.equals("&m") - || lastColorCodes.equals("&n") - || lastColorCodes.equals("&o"))) { - lastColorCodeText = colorCodes[colorCodes.length - 2]; - lastColorCodes = "&" - + lastColorCodeText.substring(0, - Math.min(lastColorCodeText.length(), 1)) - + lastColorCodes; - } - } else { - lastColorCodes = "&f"; - } - - prefixLine = ChatColor.translateAlternateColorCodes('&', - prefixLine); - suffixLine = ChatColor.translateAlternateColorCodes('&', - lastColorCodes + suffixLine); - } - - scoreboard.getTeam(ranStr + i1).setPrefix(prefixLine); - scoreboard.getTeam(ranStr + i1).setSuffix(suffixLine); - } else { - scoreboard.getTeam(ranStr + i1).setPrefix( - ChatColor.translateAlternateColorCodes('&', displayLine)); - } - } - - i1 = displayList.size(); - } catch (Exception e) { - cancel(); - } - } else { - cancel(); - } - } - }.runTaskTimerAsynchronously(skyblock, 0L, 20L); - - player.setScoreboard(scoreboard); - } - }.runTaskAsynchronously(skyblock); - } - }.runTask(skyblock); - } - - private String replaceDisplayName(String displayName) { - displayName = displayName.replace("%players_online", "" + Bukkit.getServer().getOnlinePlayers().size()) - .replace("%players_max", "" + Bukkit.getServer().getMaxPlayers()); - - return displayName; - } - - private String replaceDisplayLine(String displayLine) { - SkyBlock skyblock = SkyBlock.getInstance(); - - IslandManager islandManager = skyblock.getIslandManager(); - - displayLine = displayLine.replace("%players_online", "" + Bukkit.getServer().getOnlinePlayers().size()) - .replace("%players_max", "" + Bukkit.getServer().getMaxPlayers()); - - Island island = islandManager.getIsland(player); - - if (island != null) { - IslandLevel level = island.getLevel(); - - if (island.getRole(IslandRole.Member).size() == 0 && island.getRole(IslandRole.Operator).size() == 0) { - displayLine = displayLine - .replace("%island_level", "" + NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%island_members", ChatColor.RED + "0").replace("%island_role", ChatColor.RED + "null") - .replace("%island_visitors", "" + islandManager.getVisitorsAtIsland(island).size()) - .replace("%island_size", "" + island.getSize()) - .replace("%island_radius", "" + island.getRadius()); - } else { - int islandMembers = 1 + island.getRole(IslandRole.Member).size() - + island.getRole(IslandRole.Operator).size(); - String islandRole = ""; - - if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { - islandRole = displayVariables.get("%owner"); - } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { - islandRole = displayVariables.get("%operator"); - } else if (island.hasRole(IslandRole.Member, player.getUniqueId())) { - islandRole = displayVariables.get("%member"); - } - - displayLine = displayLine - .replace("%island_points", "" + NumberUtil.formatNumberByDecimal(level.getPoints())) - .replace("%island_level", "" + NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%island_members", "" + islandMembers).replace("%island_role", islandRole) - .replace("%island_visitors", "" + islandManager.getVisitorsAtIsland(island).size()) - .replace("%island_size", "" + island.getSize()) - .replace("%island_radius", "" + island.getRadius()); - } - } else { - displayLine = displayLine.replace("%island_points", ChatColor.RED + "0") - .replace("%island_level", ChatColor.RED + "0").replace("%island_members", ChatColor.RED + "0") - .replace("%island_role", ChatColor.RED + "null").replace("%island_size", ChatColor.RED + "0") - .replace("%island_radius", ChatColor.RED + "0"); - } - - PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); - - if (placeholderManager.isPlaceholderAPIEnabled()) { - displayLine = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, displayLine.replace("&", "clr")) - .replace("clr", "&"); - } - - return displayLine; - } - - public void cancel() { - scheduler.cancel(); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/scoreboard/ScoreboardManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/scoreboard/ScoreboardManager.java deleted file mode 100644 index c81f382b..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/scoreboard/ScoreboardManager.java +++ /dev/null @@ -1,176 +0,0 @@ -package me.goodandevil.skyblock.scoreboard; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandRole; - -public class ScoreboardManager { - - private final SkyBlock skyblock; - private Map scoreboardStorage = new HashMap<>(); - - public ScoreboardManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - new BukkitRunnable() { - @Override - public void run() { - IslandManager islandManager = skyblock.getIslandManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Scoreboard.Enable")) { - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - - for (Player all : Bukkit.getOnlinePlayers()) { - Scoreboard scoreboard = new Scoreboard(all); - Island island = islandManager.getIsland(all); - - if (island == null) { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); - scoreboard.setDisplayList( - config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); - } else { - if (island.getRole(IslandRole.Member).size() == 0 - && island.getRole(IslandRole.Operator).size() == 0) { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); - } - } else { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Team.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); - } - - Map displayVariables = new HashMap<>(); - displayVariables.put("%owner", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Owner")); - displayVariables.put("%operator", config.getFileConfiguration() - .getString("Scoreboard.Island.Team.Word.Operator")); - displayVariables.put("%member", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Member")); - - scoreboard.setDisplayVariables(displayVariables); - } - } - - scoreboard.run(); - storeScoreboard(all, scoreboard); - } - } - } - }.runTaskLater(skyblock, 20L); - } - - public void resendScoreboard() { - IslandManager islandManager = skyblock.getIslandManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Scoreboard.Enable")) { - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - - for (Player all : Bukkit.getOnlinePlayers()) { - if (hasScoreboard(all)) { - Scoreboard scoreboard = getScoreboard(all); - scoreboard.cancel(); - - Island island = islandManager.getIsland(all); - - if (island == null) { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname"))); - scoreboard.setDisplayList( - config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines")); - } else { - if (island.getRole(IslandRole.Member).size() == 0 - && island.getRole(IslandRole.Operator).size() == 0) { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Solo.Occupied.Displaylines")); - } - } else { - scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', - config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname"))); - - if (islandManager.getVisitorsAtIsland(island).size() == 0) { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Team.Empty.Displaylines")); - } else { - scoreboard.setDisplayList(config.getFileConfiguration() - .getStringList("Scoreboard.Island.Team.Occupied.Displaylines")); - } - - Map displayVariables = new HashMap<>(); - displayVariables.put("%owner", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Owner")); - displayVariables.put("%operator", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Operator")); - displayVariables.put("%member", - config.getFileConfiguration().getString("Scoreboard.Island.Team.Word.Member")); - - scoreboard.setDisplayVariables(displayVariables); - } - } - - scoreboard.run(); - } - } - } - } - - public void storeScoreboard(Player player, Scoreboard scoreboard) { - scoreboardStorage.put(player.getUniqueId(), scoreboard); - } - - public void unloadPlayer(Player player) { - if (scoreboardStorage.containsKey(player.getUniqueId())) { - scoreboardStorage.remove(player.getUniqueId()); - } - } - - public Scoreboard getScoreboard(Player player) { - if (scoreboardStorage.containsKey(player.getUniqueId())) { - return scoreboardStorage.get(player.getUniqueId()); - } - - return null; - } - - public boolean hasScoreboard(Player player) { - return scoreboardStorage.containsKey(player.getUniqueId()); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/sound/SoundManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/sound/SoundManager.java deleted file mode 100644 index c8715c36..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/sound/SoundManager.java +++ /dev/null @@ -1,42 +0,0 @@ -package me.goodandevil.skyblock.sound; - -import java.io.File; - -import org.bukkit.Location; -import org.bukkit.Sound; -import org.bukkit.command.CommandSender; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; - -public class SoundManager { - - private final SkyBlock skyblock; - - public SoundManager(SkyBlock skyblock) { - this.skyblock = skyblock; - } - - public void playSound(CommandSender sender, Sound sound, float volume, float pitch) { - if (sender instanceof Player) { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getBoolean("Sound.Enable")) { - Player player = (Player) sender; - player.playSound(player.getLocation(), sound, volume, pitch); - } - } - } - - public void playSound(Location location, Sound sound, float volume, float pitch) { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getBoolean("Sound.Enable")) { - location.getWorld().playSound(location, sound, volume, pitch); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/structure/Structure.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/structure/Structure.java deleted file mode 100644 index 8f13ae89..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/structure/Structure.java +++ /dev/null @@ -1,127 +0,0 @@ -package me.goodandevil.skyblock.structure; - -import java.util.ArrayList; -import java.util.List; - -import me.goodandevil.skyblock.utils.version.Materials; - -public class Structure implements me.goodandevil.skyblock.api.structure.Structure { - - private Materials materials; - - private String name; - private String overworldFile; - private String netherFile; - private String endFile; - private String displayName; - - private boolean permission; - - private List description = new ArrayList<>(); - private List commands = new ArrayList<>(); - - private double deletionCost; - - public Structure(String name, Materials materials, String overworldFile, String netherFile, String endFile, - String displayName, boolean permission, List description, List commands, - double deletionCost) { - this.name = name; - this.materials = materials; - this.overworldFile = overworldFile; - this.netherFile = netherFile; - this.endFile = endFile; - this.displayName = displayName; - this.permission = permission; - this.description = description; - this.commands = commands; - this.deletionCost = deletionCost; - } - - public String getName() { - return name; - } - - public Materials getMaterials() { - return materials; - } - - public void setMaterials(Materials materials) { - this.materials = materials; - } - - public String getOverworldFile() { - return overworldFile; - } - - public void setOverworldFile(String file) { - this.overworldFile = file; - } - - public String getNetherFile() { - return netherFile; - } - - public void setNetherFile(String file) { - this.netherFile = file; - } - - public String getEndFile() { - return endFile; - } - - public void setEndFile(String file) { - this.endFile = file; - } - - public String getDisplayname() { - return displayName; - } - - public void setDisplayname(String displayName) { - this.displayName = displayName; - } - - public boolean isPermission() { - return permission; - } - - public String getPermission() { - return "fabledskyblock.island." + name.toLowerCase().replace(" ", "_"); - } - - public void setPermission(boolean permission) { - this.permission = permission; - } - - public List getDescription() { - return description; - } - - public void addLine(String line) { - description.add(line); - } - - public void removeLine(int index) { - description.remove(index); - } - - public List getCommands() { - return commands; - } - - public void addCommand(String command) { - commands.add(command); - } - - public void removeCommand(int index) { - commands.remove(index); - } - - public double getDeletionCost() { - return deletionCost; - } - - public void setDeletionCost(double deletionCost) { - this.deletionCost = deletionCost; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/structure/StructureManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/structure/StructureManager.java deleted file mode 100644 index 93a33bc1..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/structure/StructureManager.java +++ /dev/null @@ -1,128 +0,0 @@ -package me.goodandevil.skyblock.structure; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.configuration.file.FileConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.utils.version.Materials; - -public class StructureManager { - - private List structureStorage = new ArrayList<>(); - - public StructureManager(SkyBlock skyblock) { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "structures.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString("Structures") != null) { - for (String structureList : configLoad.getConfigurationSection("Structures").getKeys(false)) { - Materials materials = null; - - if (configLoad.getString("Structures." + structureList + ".Item.Material") == null) { - materials = Materials.GRASS_BLOCK; - } else { - materials = Materials - .fromString(configLoad.getString("Structures." + structureList + ".Item.Material")); - - if (materials == null) { - materials = Materials.GRASS_BLOCK; - } - } - - String structureFile = null, overworldFile = null, netherFile = null, endFile = null; - - if (configLoad.getString("Structures." + structureList + ".File.Overworld") == null - && configLoad.getString("Structures." + structureList + ".File.Nether") == null - && configLoad.getString("Structures." + structureList + ".File.End") == null) { - if (configLoad.getString("Structures." + structureList + ".File") != null) { - structureFile = configLoad.getString("Structures." + structureList + ".File"); - overworldFile = structureFile; - netherFile = structureFile; - endFile = structureFile; - } - } else { - if (configLoad.getString("Structures." + structureList + ".File.Overworld") != null) { - overworldFile = configLoad.getString("Structures." + structureList + ".File.Overworld"); - } - - if (configLoad.getString("Structures." + structureList + ".File.Nether") == null - && overworldFile != null) { - netherFile = overworldFile; - } else { - netherFile = configLoad.getString("Structures." + structureList + ".File.Nether"); - } - - if (configLoad.getString("Structures." + structureList + ".File.End") == null - && overworldFile != null) { - endFile = overworldFile; - } else { - endFile = configLoad.getString("Structures." + structureList + ".File.End"); - } - - if (overworldFile == null && netherFile != null) { - overworldFile = netherFile; - } else if (overworldFile == null && endFile != null) { - overworldFile = endFile; - } - - if (netherFile == null && endFile != null) { - netherFile = endFile; - } - - if (endFile == null && overworldFile != null) { - endFile = overworldFile; - } else if (endFile == null && netherFile != null) { - endFile = netherFile; - } - } - - structureStorage.add(new Structure(configLoad.getString("Structures." + structureList + ".Name"), - materials, overworldFile, netherFile, endFile, - configLoad.getString("Structures." + structureList + ".Displayname"), - configLoad.getBoolean("Structures." + structureList + ".Permission"), - configLoad.getStringList("Structures." + structureList + ".Description"), - configLoad.getStringList("Structures." + structureList + ".Commands"), - configLoad.getDouble("Structures." + structureList + ".Deletion.Cost"))); - } - } - } - - public void addStructure(String name, Materials materials, String overworldFile, String netherFile, String endFile, - String displayName, boolean permission, List description, List commands, - double deletionCost) { - structureStorage.add(new Structure(name, materials, overworldFile, netherFile, endFile, displayName, permission, - description, commands, deletionCost)); - } - - public void removeStructure(Structure structure) { - structureStorage.remove(structure); - } - - public Structure getStructure(String name) { - for (Structure structureList : structureStorage) { - if (structureList.getName().equalsIgnoreCase(name)) { - return structureList; - } - } - - return null; - } - - public boolean containsStructure(String name) { - for (Structure structureList : structureStorage) { - if (structureList.getName().equalsIgnoreCase(name)) { - return true; - } - } - - return false; - } - - public List getStructures() { - return structureStorage; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/upgrade/Upgrade.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/upgrade/Upgrade.java deleted file mode 100644 index ca96bde2..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/upgrade/Upgrade.java +++ /dev/null @@ -1,47 +0,0 @@ -package me.goodandevil.skyblock.upgrade; - -public class Upgrade { - - private double cost; - private int value; - private boolean enabled = true; - - public Upgrade(double cost) { - this.cost = cost; - } - - public Upgrade(double cost, int value) { - this.cost = cost; - this.value = value; - } - - public double getCost() { - return cost; - } - - public void setCost(double cost) { - this.cost = cost; - } - - public int getValue() { - return value; - } - - public void setValue(int value) { - this.value = value; - } - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public enum Type { - - Crop, Spawner, Fly, Drops, Size, Speed, Jump; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/upgrade/UpgradeManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/upgrade/UpgradeManager.java deleted file mode 100644 index 18a1c0c7..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/upgrade/UpgradeManager.java +++ /dev/null @@ -1,183 +0,0 @@ -package me.goodandevil.skyblock.upgrade; - -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 org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; - -import java.io.File; -import java.io.IOException; -import java.util.*; - -public class UpgradeManager { - - private SkyBlock skyblock; - private Map> upgradeStorage = new HashMap<>(); - - public UpgradeManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "upgrades.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - for (Upgrade.Type typeList : Upgrade.Type.values()) { - if (typeList != Upgrade.Type.Size) { - List upgrades = new ArrayList<>(); - - Upgrade upgrade = new Upgrade(configLoad.getDouble("Upgrades." + typeList.name() + ".Cost")); - upgrade.setEnabled(configLoad.getBoolean("Upgrades." + typeList.name() + ".Enable")); - upgrades.add(upgrade); - - upgradeStorage.put(typeList, upgrades); - } - } - - if (configLoad.getString("Upgrades.Size") != null) { - List upgrades = new ArrayList<>(); - - for (String tierList : configLoad.getConfigurationSection("Upgrades.Size").getKeys(false)) { - if (configLoad.getString("Upgrades.Size." + tierList + ".Value") != null) { - if (configLoad.getInt("Upgrades.Size." + tierList + ".Value") > 1000) { - continue; - } - } - - upgrades.add(new Upgrade(configLoad.getDouble("Upgrades.Size." + tierList + ".Cost"), - configLoad.getInt("Upgrades.Size." + tierList + ".Value"))); - } - - upgradeStorage.put(Upgrade.Type.Size, upgrades); - } - - // Task for applying the speed & jump boost upgrades if the player is on an island that has them - Bukkit.getScheduler().scheduleSyncRepeatingTask(SkyBlock.getInstance(), this::applyUpgrades, 5L, 20L); - } - - public List getUpgrades(Upgrade.Type type) { - if (upgradeStorage.containsKey(type)) { - return upgradeStorage.get(type); - } - - return null; - } - - public void addUpgrade(Upgrade.Type type, int value) { - List upgrades = new ArrayList<>(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "upgrades.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString("Upgrades.Size") != null) { - for (String tierList : configLoad.getConfigurationSection("Upgrades.Size").getKeys(false)) { - upgrades.add(new Upgrade(configLoad.getDouble("Upgrades.Size." + tierList + ".Cost"), - configLoad.getInt("Upgrades.Size." + tierList + ".Value"))); - } - } - - upgrades.add(new Upgrade(0, value)); - configLoad.set("Upgrades.Size", null); - - for (int i = 0; i < upgrades.size(); i++) { - Upgrade upgrade = upgrades.get(i); - configLoad.set("Upgrades.Size." + i + ".Value", upgrade.getValue()); - configLoad.set("Upgrades.Size." + i + ".Cost", upgrade.getCost()); - } - - upgradeStorage.put(type, upgrades); - - try { - configLoad.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void removeUpgrade(Upgrade.Type type, double cost, int value) { - for (Upgrade upgradeList : upgradeStorage.get(type)) { - if (upgradeList.getCost() == cost && upgradeList.getValue() == value) { - List upgrades = upgradeStorage.get(type); - upgrades.remove(upgradeList); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "upgrades.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - configLoad.set("Upgrades.Size", null); - - for (int i = 0; i < upgrades.size(); i++) { - Upgrade upgrade = upgrades.get(i); - configLoad.set("Upgrades.Size." + i + ".Value", upgrade.getValue()); - configLoad.set("Upgrades.Size." + i + ".Cost", upgrade.getCost()); - } - - try { - configLoad.save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - - return; - } - } - } - - public boolean hasUpgrade(Upgrade.Type type, int value) { - if (upgradeStorage.containsKey(type)) { - for (Upgrade upgradeList : upgradeStorage.get(type)) { - if (upgradeList.getValue() == value) { - return true; - } - } - } - - return false; - } - - private void applyUpgrades() { - IslandManager islandManager = skyblock.getIslandManager(); - UpgradeManager upgradeManager = skyblock.getUpgradeManager(); - - for (Player player : Bukkit.getOnlinePlayers()) { - Island island = islandManager.getIslandAtLocation(player.getLocation()); - if (island == null) continue; - - // Apply potion effect upgrades - Collection potionEffects = player.getActivePotionEffects(); - PotionEffect speed = null, jump = null; - for (PotionEffect potionEffect : potionEffects) { - if (potionEffect.getType().equals(PotionEffectType.SPEED)) { - speed = potionEffect; - } else if (potionEffect.getType().equals(PotionEffectType.JUMP)) { - jump = potionEffect; - } - if (speed != null && jump != null) break; - } - - // Speed - List speedUpgrades = upgradeManager.getUpgrades(Upgrade.Type.Speed); - if (speedUpgrades != null && speedUpgrades.size() > 0 && speedUpgrades.get(0).isEnabled() && island.isUpgrade(Upgrade.Type.Speed)) { - if (speed == null) { - speed = new PotionEffect(PotionEffectType.SPEED, 60, 1); - } else if (speed.getAmplifier() == 1 && speed.getDuration() < 60) { - speed = new PotionEffect(PotionEffectType.SPEED, speed.getDuration() + 21, 1); - } - player.addPotionEffect(speed, true); - } - - // Jump boost - List jumpUpgrades = upgradeManager.getUpgrades(Upgrade.Type.Jump); - if (jumpUpgrades != null && jumpUpgrades.size() > 0 && jumpUpgrades.get(0).isEnabled() && island.isUpgrade(Upgrade.Type.Jump)) { - if (jump == null) { - jump = new PotionEffect(PotionEffectType.JUMP, 60, 1); - } else if (jump.getAmplifier() == 1 && jump.getDuration() < 60) { - jump = new PotionEffect(PotionEffectType.JUMP, jump.getDuration() + 21, 1); - } - player.addPotionEffect(jump, true); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/usercache/UserCacheManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/usercache/UserCacheManager.java deleted file mode 100644 index 7c9b75ae..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/usercache/UserCacheManager.java +++ /dev/null @@ -1,162 +0,0 @@ -package me.goodandevil.skyblock.usercache; - -import java.io.File; -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; -import java.util.logging.Level; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.utils.player.NameFetcher; -import me.goodandevil.skyblock.utils.player.NameFetcher.Names; - -public class UserCacheManager { - - private final SkyBlock skyblock; - private final Config config; - - public UserCacheManager(SkyBlock skyblock) { - this.skyblock = skyblock; - this.config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "usercache.yml")); - - FileManager fileManager = skyblock.getFileManager(); - File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); - - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> { - if (configFile.exists()) { - int usersIgnored = 0; - - Bukkit.getServer().getLogger().log(Level.INFO, - "SkyBlock | Info: Fetching user information from island data. This may take a while..."); - - for (File fileList : configFile.listFiles()) { - if (fileList != null && fileList.getName().contains(".yml") - && fileList.getName().length() > 35) { - UUID islandOwnerUUID = null; - - try { - Config config = new Config(fileManager, fileList); - FileConfiguration configLoad = config.getFileConfiguration(); - - islandOwnerUUID = UUID.fromString(fileList.getName().replace(".yml", "")); - - if (islandOwnerUUID == null) { - islandOwnerUUID = UUID.fromString(fileList.getName().replaceFirst("[.][^.]+$", "")); - - if (islandOwnerUUID == null) { - continue; - } - } - - Set islandMembers = new HashSet<>(); - islandMembers.add(islandOwnerUUID); - - if (configLoad.getString("Members") != null) { - for (String memberList : configLoad.getStringList("Members")) { - islandMembers.add(UUID.fromString(memberList)); - } - } - - if (configLoad.getString("Operators") != null) { - for (String operatorList : configLoad.getStringList("Operators")) { - islandMembers.add(UUID.fromString(operatorList)); - } - } - - for (UUID islandMemberList : islandMembers) { - if (!hasUser(islandMemberList)) { - Names[] names = NameFetcher.getNames(islandMemberList); - - if (names.length >= 1) { - addUser(islandMemberList, names[0].getName()); - } - } - } - } catch (Exception e) { - usersIgnored++; - } - } - } - - save(); - - if (usersIgnored != 0) { - Bukkit.getServer().getLogger().log(Level.INFO, - "SkyBlock | Info: Finished fetching user information from island data. There were " - + usersIgnored + " users that were skipped."); - } else { - Bukkit.getServer().getLogger().log(Level.INFO, - "SkyBlock | Info: Finished fetching user information from island data."); - } - } - }); - } - - public void onDisable() { - save(); - } - - public void addUser(UUID uuid, String name) { - config.getFileConfiguration().set(uuid.toString(), name); - } - - public String getUser(UUID uuid) { - FileConfiguration configLoad = config.getFileConfiguration(); - - if (configLoad.getString(uuid.toString()) != null) { - return configLoad.getString(uuid.toString()); - } - - return null; - } - - public UUID getUser(String name) { - FileConfiguration configLoad = config.getFileConfiguration(); - - for (String userList : configLoad.getConfigurationSection("").getKeys(false)) { - if (configLoad.getString(userList).equalsIgnoreCase(name)) { - return UUID.fromString(userList); - } - } - - return null; - } - - public boolean hasUser(UUID uuid) { - if (config.getFileConfiguration().getString(uuid.toString()) == null) { - return false; - } - - return true; - } - - public boolean hasUser(String name) { - FileConfiguration configLoad = config.getFileConfiguration(); - - for (String userList : configLoad.getConfigurationSection("").getKeys(false)) { - if (configLoad.getString(userList).equalsIgnoreCase(name)) { - return true; - } - } - - return false; - } - - public void saveAsync() { - Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, () -> save()); - } - - public void save() { - try { - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/ChatComponent.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/ChatComponent.java deleted file mode 100644 index 92e97824..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/ChatComponent.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.goodandevil.skyblock.utils; - -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; - -public class ChatComponent { - - private TextComponent textComponent; - - public ChatComponent(String text, boolean bold, ChatColor color, ClickEvent clickEvent, HoverEvent hoverEvent) { - textComponent = new TextComponent(ChatColor.translateAlternateColorCodes('&', text)); - textComponent.setBold(bold); - - if (color != null) { - textComponent.setColor(color); - } - - if (clickEvent != null) { - textComponent.setClickEvent(clickEvent); - } - - if (hoverEvent != null) { - textComponent.setHoverEvent(hoverEvent); - } - } - - public TextComponent addExtra(ChatComponent chatComponent) { - textComponent.addExtra(chatComponent.getTextComponent()); - - return textComponent; - } - - public ChatComponent addExtra(TextComponent textComponent) { - this.textComponent.addExtra(textComponent); - - return this; - } - - public ChatComponent addExtraChatComponent(ChatComponent chatComponent) { - textComponent.addExtra(chatComponent.getTextComponent()); - - return this; - } - - public TextComponent getTextComponent() { - return textComponent; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/GZipUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/GZipUtil.java deleted file mode 100644 index ae7a5ad1..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/GZipUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.goodandevil.skyblock.utils; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; - -import org.apache.commons.io.IOUtils; - -public final class GZipUtil { - - public static byte[] compress(byte[] data) throws IOException { - ByteArrayOutputStream obj = new ByteArrayOutputStream(); - GZIPOutputStream gzip = new GZIPOutputStream(obj); - gzip.write(data); - gzip.flush(); - gzip.close(); - - return obj.toByteArray(); - } - - public static byte[] decompress(final byte[] compressedData) throws IOException { - if (isCompressed(compressedData)) { - GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(compressedData)); - return IOUtils.toByteArray(gis); - } - - return new byte[512]; - } - - public static boolean isCompressed(final byte[] compressedData) { - return (compressedData[0] == (byte) (GZIPInputStream.GZIP_MAGIC)) - && (compressedData[1] == (byte) (GZIPInputStream.GZIP_MAGIC >> 8)); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/NumberUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/NumberUtil.java deleted file mode 100644 index c9fe5d49..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/NumberUtil.java +++ /dev/null @@ -1,70 +0,0 @@ -package me.goodandevil.skyblock.utils; - -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.util.Date; - -public final class NumberUtil { - - public static String formatNumber(long number) { - return String.format("%,d", number); - } - - public static String formatNumberByDecimal(double number) { - String withoutDecimal = new DecimalFormat("0.#").format(number).replace(",", "."), withDecimal = ""; - - if (withoutDecimal.contains(".")) { - withDecimal = "." + withoutDecimal.split("\\.")[1]; - withoutDecimal = withoutDecimal.replace(withDecimal, ""); - } - - if (withDecimal.equals(".0")) { - withDecimal = ""; - } - - long itemCostWithoutDecimalValue = Long.valueOf(withoutDecimal); - - return formatNumber(itemCostWithoutDecimalValue) + withDecimal; - - } - - public static String formatNumberBySuffix(long number) { - if (number < 1000) { - return "" + number; - } - - int exp = (int) (Math.log(number) / Math.log(1000)); - - return String.format("%.1f%c", number / Math.pow(1000, exp), "kMGTPE".charAt(exp - 1)); - } - - public static long[] getDuration(int time) { - long seconds = time % 60; - long minutes = time % 3600 / 60; - long hours = time % 86400 / 3600; - long days = time / 86400; - - return new long[] { days, hours, minutes, seconds }; - } - - public static long[] getDuration(Date startDate, Date endDate) { - long different = endDate.getTime() - startDate.getTime(); - long secondsInMilli = 1000; - long minutesInMilli = secondsInMilli * 60; - long hoursInMilli = minutesInMilli * 60; - long daysInMilli = hoursInMilli * 24; - - long elapsedDays = different / daysInMilli; - different = different % daysInMilli; - - long elapsedHours = different / hoursInMilli; - different = different % hoursInMilli; - - long elapsedMinutes = different / minutesInMilli; - different = different % minutesInMilli; - - long elapsedSeconds = different / secondsInMilli; - - return new long[] { elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds }; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/StringUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/StringUtil.java deleted file mode 100644 index d3444128..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/StringUtil.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.goodandevil.skyblock.utils; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public final class StringUtil { - - public static String capatilizeUppercaseLetters(String string) { - StringBuilder stringBuilder = new StringBuilder(string); - Matcher matcher = Pattern.compile("[A-Z]").matcher(string); - int extraFeed = 0; - - while (matcher.find()) { - if (matcher.start() != 0) { - stringBuilder = stringBuilder.insert(matcher.start() + extraFeed, " "); - extraFeed++; - } - } - - return stringBuilder.toString(); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/InventoryUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/InventoryUtil.java deleted file mode 100644 index 480d17aa..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/InventoryUtil.java +++ /dev/null @@ -1,90 +0,0 @@ -package me.goodandevil.skyblock.utils.item; - -import java.util.Map; - -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.*; - -import me.goodandevil.skyblock.utils.version.NMSUtil; - -public class InventoryUtil { - - @SuppressWarnings("deprecation") - public static void removeItem(Inventory inv, int amount, boolean hasDisplayname, Material material) { - Map ammo = inv.all(material); - - for (Integer index : ammo.keySet()) { - ItemStack is = ammo.get(index); - ItemMeta im = is.getItemMeta(); - - if (NMSUtil.getVersionNumber() > 12) { - if (((Damageable) im).getDamage() != 0) { - continue; - } - } else { - if (is.getDurability() != 0) { - continue; - } - } - - int removed = Math.min(amount, is.getAmount()); - amount -= removed; - - if (is.getAmount() == removed) { - inv.setItem(index, null); - } else { - is.setAmount(is.getAmount() - removed); - } - - if (amount <= 0) { - break; - } - } - } - - @SuppressWarnings("deprecation") - public static boolean isInventoryFull(Inventory inv, int subtract, int amount, Material material) { - for (int i = 0; i < inv.getSize() - subtract; i++) { - ItemStack is = inv.getItem(i); - - if (is == null) { - return false; - } else if (is.getType() == material) { - ItemMeta im = is.getItemMeta(); - - if (!im.hasDisplayName()) { - if (NMSUtil.getVersionNumber() > 12) { - if (((Damageable) im).getDamage() != 0) { - continue; - } - } else { - if (is.getDurability() != 0) { - continue; - } - } - - if (is.getAmount() < is.getMaxStackSize() && (is.getAmount() + amount) <= is.getMaxStackSize()) { - return false; - } - } - } - } - - return true; - } - public static void takeItem(Player player, int amount) { - if (player.getGameMode() == GameMode.CREATIVE) return; - - ItemStack item = player.getInventory().getItemInHand(); - if (item == null) return; - - int result = item.getAmount() - amount; - item.setAmount(result); - - player.setItemInHand(result > 0 ? item : null); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/ItemStackUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/ItemStackUtil.java deleted file mode 100644 index 57f07295..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/ItemStackUtil.java +++ /dev/null @@ -1,82 +0,0 @@ -package me.goodandevil.skyblock.utils.item; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.DataOutput; -import java.io.DataOutputStream; -import java.lang.reflect.Constructor; -import java.math.BigInteger; - -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; - -public final class ItemStackUtil { - - public static ItemStack deserializeItemStack(String data) { - ByteArrayInputStream inputStream = new ByteArrayInputStream(new BigInteger(data, 32).toByteArray()); - DataInputStream dataInputStream = new DataInputStream(inputStream); - - ItemStack itemStack = null; - - try { - Class NBTTagCompoundClass = NMSUtil.getNMSClass("NBTTagCompound"); - Class NMSItemStackClass = NMSUtil.getNMSClass("ItemStack"); - Object NBTTagCompound = NMSUtil.getNMSClass("NBTCompressedStreamTools") - .getMethod("a", DataInputStream.class).invoke(null, dataInputStream); - Object craftItemStack; - - if (NMSUtil.getVersionNumber() > 12) { - craftItemStack = NMSItemStackClass.getMethod("a", NBTTagCompoundClass).invoke(null, NBTTagCompound); - } else if (NMSUtil.getVersionNumber() > 10) { - craftItemStack = NMSItemStackClass.getConstructor(NBTTagCompoundClass).newInstance(NBTTagCompound); - } else { - craftItemStack = NMSItemStackClass.getMethod("createStack", NBTTagCompoundClass).invoke(null, - NBTTagCompound); - } - - itemStack = (ItemStack) NMSUtil.getCraftClass("inventory.CraftItemStack") - .getMethod("asBukkitCopy", NMSItemStackClass).invoke(null, craftItemStack); - - // TODO: This method of serialization has some issues. Not all the names are the same between versions - // Make an exception for reeds/melon, they NEED to load in the island chest - // This code is here SPECIFICALLY to get the default.structure to load properly in all versions - // Other structures people make NEED to be saved from the version that they will be using so everything loads properly - if (itemStack.getType() == Material.AIR) { - if (NBTTagCompound.toString().equals("{id:\"minecraft:sugar_cane\",Count:1b}")) { - itemStack = new ItemStack(Materials.SUGAR_CANE.parseMaterial(), 1); - } else if (NBTTagCompound.toString().equals("{id:\"minecraft:melon_slice\",Count:1b}")) { - itemStack = new ItemStack(Materials.MELON_SLICE.parseMaterial(), 1); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - return itemStack; - } - - public static String serializeItemStack(ItemStack item) { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - DataOutputStream dataOutput = new DataOutputStream(outputStream); - - try { - Class NBTTagCompoundClass = NMSUtil.getNMSClass("NBTTagCompound"); - Constructor nbtTagCompoundConstructor = NBTTagCompoundClass.getConstructor(); - Object NBTTagCompound = nbtTagCompoundConstructor.newInstance(); - Object NMSItemStackClass = NMSUtil.getCraftClass("inventory.CraftItemStack") - .getMethod("asNMSCopy", ItemStack.class).invoke(null, item); - NMSUtil.getNMSClass("ItemStack").getMethod("save", NBTTagCompoundClass).invoke(NMSItemStackClass, - NBTTagCompound); - NMSUtil.getNMSClass("NBTCompressedStreamTools").getMethod("a", NBTTagCompoundClass, DataOutput.class) - .invoke(null, NBTTagCompound, dataOutput); - } catch (Exception e) { - e.printStackTrace(); - } - - return new BigInteger(1, outputStream.toByteArray()).toString(32); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/MaterialUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/MaterialUtil.java deleted file mode 100644 index 0a28f7d3..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/MaterialUtil.java +++ /dev/null @@ -1,74 +0,0 @@ -package me.goodandevil.skyblock.utils.item; - -import org.bukkit.Material; - -import me.goodandevil.skyblock.utils.version.Materials; - -public class MaterialUtil { - - public static Material correctMaterial(Material material) { - if (material == Material.REDSTONE_WIRE) { - material = Material.REDSTONE; - } else if (material == Materials.LEGACY_DOUBLE_SLAB.getPostMaterial()) { - material = Materials.SMOOTH_STONE.parseMaterial(); - } else if (material == Materials.FERN.parseMaterial()) { - material = Material.GRASS; - } else if (material == Materials.LEGACY_NETHER_WARTS.getPostMaterial()) { - material = Materials.LEGACY_NETHER_STALK.getPostMaterial(); - } else if (material == Materials.LEGACY_SIGN_POST.getPostMaterial() || material == Materials.OAK_WALL_SIGN.parseMaterial()) { - material = Materials.OAK_SIGN.parseMaterial(); - } else if (material == Materials.BIRCH_WALL_SIGN.parseMaterial()) { - material = Materials.BIRCH_SIGN.parseMaterial(); - } else if (material == Materials.SPRUCE_WALL_SIGN.parseMaterial()) { - material = Materials.SPRUCE_SIGN.parseMaterial(); - } else if (material == Materials.JUNGLE_WALL_SIGN.parseMaterial()) { - material = Materials.JUNGLE_SIGN.parseMaterial(); - } else if (material == Materials.ACACIA_WALL_SIGN.parseMaterial()) { - material = Materials.ACACIA_SIGN.parseMaterial(); - } else if (material == Materials.DARK_OAK_WALL_SIGN.parseMaterial()) { - material = Materials.DARK_OAK_SIGN.parseMaterial(); - } else if (material == Materials.LEGACY_SUGAR_CANE_BLOCK.getPostMaterial()) { - material = Material.SUGAR_CANE; - } else if (material == Material.TRIPWIRE) { - material = Material.STRING; - } else if (material == Material.FLOWER_POT) { - material = Materials.LEGACY_FLOWER_POT_ITEM.getPostMaterial(); - } else if (material.name().startsWith("POTTED_")) { - material = Material.FLOWER_POT; - } else if (material == Materials.LEGACY_IRON_DOOR_BLOCK.getPostMaterial()) { - material = Material.IRON_DOOR; - } else if (material == Material.CAULDRON) { - material = Materials.LEGACY_CAULDRON_ITEM.getPostMaterial(); - } else if (material == Material.BREWING_STAND) { - material = Materials.LEGACY_BREWING_STAND.getPostMaterial(); - } else if (material.name().equals("BED_BLOCK")) { - material = Materials.RED_BED.getPostMaterial(); - } else if (material == Materials.SWEET_BERRY_BUSH.parseMaterial()) { - material = Materials.SWEET_BERRIES.parseMaterial(); - } else if (material == Materials.BAMBOO_SAPLING.parseMaterial()) { - material = Materials.BAMBOO.parseMaterial(); - } - - return material; - } - - public static Material getMaterial(int NMSVersion, int blockVersion, String material, int data) { - if (NMSVersion > 12) { - if (blockVersion > 12) { - return Material.valueOf(material); - } else { - return Materials.requestMaterials(material, (byte) data).getPostMaterial(); - } - } else { - try { - if (blockVersion > 12) { - return Materials.fromString(material).parseMaterial(); - } else { - return Material.valueOf(material); - } - } catch (Exception e) { - return Material.STONE; - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/SkullUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/SkullUtil.java deleted file mode 100644 index 9fd1e18d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/SkullUtil.java +++ /dev/null @@ -1,82 +0,0 @@ -package me.goodandevil.skyblock.utils.item; - -import java.lang.reflect.Field; -import java.util.Base64; -import java.util.UUID; - -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.SkullMeta; - -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; - -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; - -public final class SkullUtil { - - public static ItemStack create(String skinTexture) { - ItemStack is = createItemStack(); - SkullMeta sm = (SkullMeta) is.getItemMeta(); - - GameProfile gameProfile = new GameProfile(UUID.randomUUID(), null); - - byte[] encodedData = Base64.getEncoder() - .encode(String.format("{textures:{SKIN:{url:\"%s\"}}}", skinTexture).getBytes()); - gameProfile.getProperties().put("textures", new Property("textures", new String(encodedData))); - - Field profileField = null; - - try { - profileField = sm.getClass().getDeclaredField("profile"); - profileField.setAccessible(true); - profileField.set(sm, gameProfile); - } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) { - e1.printStackTrace(); - } - - is.setItemMeta(sm); - - return is; - } - - public static ItemStack create(String signature, String value) { - if (signature == null || signature.isEmpty() || value == null || value.isEmpty()) { - signature = "K9P4tCIENYbNpDuEuuY0shs1x7iIvwXi4jUUVsATJfwsAIZGS+9OZ5T2HB0tWBoxRvZNi73Vr+syRdvTLUWPusVXIg+2fhXmQoaNEtnQvQVGQpjdQP0TkZtYG8PbvRxE6Z75ddq+DVx/65OSNHLWIB/D+Rg4vINh4ukXNYttn9QvauDHh1aW7/IkIb1Bc0tLcQyqxZQ3mdglxJfgIerqnlA++Lt7TxaLdag4y1NhdZyd3OhklF5B0+B9zw/qP8QCzsZU7VzJIcds1+wDWKiMUO7+60OSrIwgE9FPamxOQDFoDvz5BOULQEeNx7iFMB+eBYsapCXpZx0zf1bduppBUbbVC9wVhto/J4tc0iNyUq06/esHUUB5MHzdJ0Y6IZJAD/xIw15OLCUH2ntvs8V9/cy5/n8u3JqPUM2zhUGeQ2p9FubUGk4Q928L56l3omRpKV+5QYTrvF+AxFkuj2hcfGQG3VE2iYZO6omXe7nRPpbJlHkMKhE8Xvd1HP4PKpgivSkHBoZ92QEUAmRzZydJkp8CNomQrZJf+MtPiNsl/Q5RQM+8CQThg3+4uWptUfP5dDFWOgTnMdA0nIODyrjpp+bvIJnsohraIKJ7ZDnj4tIp4ObTNKDFC/8j8JHz4VCrtr45mbnzvB2DcK8EIB3JYT7ElJTHnc5BKMyLy5SKzuw="; - value = "eyJ0aW1lc3RhbXAiOjE1MjkyNTg0MTE4NDksInByb2ZpbGVJZCI6Ijg2NjdiYTcxYjg1YTQwMDRhZjU0NDU3YTk3MzRlZWQ3IiwicHJvZmlsZU5hbWUiOiJTdGV2ZSIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGMxYzc3Y2U4ZTU0OTI1YWI1ODEyNTQ0NmVjNTNiMGNkZDNkMGNhM2RiMjczZWI5MDhkNTQ4Mjc4N2VmNDAxNiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjc2N2Q0ODMyNWVhNTMyNDU2MTQwNmI4YzgyYWJiZDRlMjc1NWYxMTE1M2NkODVhYjA1NDVjYzIifX19"; - } - - ItemStack is = createItemStack(); - SkullMeta sm = (SkullMeta) is.getItemMeta(); - - GameProfile gameProfile = new GameProfile(UUID.randomUUID(), null); - gameProfile.getProperties().put("textures", new Property("textures", value, signature)); - - Field profileField = null; - - try { - profileField = sm.getClass().getDeclaredField("profile"); - profileField.setAccessible(true); - profileField.set(sm, gameProfile); - } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) { - e1.printStackTrace(); - } - - is.setItemMeta(sm); - - return is; - } - - public static ItemStack createItemStack() { - ItemStack is; - - if (NMSUtil.getVersionNumber() > 12) { - is = new ItemStack(Material.valueOf("PLAYER_HEAD")); - } else { - is = Materials.LEGACY_SKULL_ITEM.getPostItem(); - } - - return is; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/nInventoryUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/nInventoryUtil.java deleted file mode 100644 index 792d8ccd..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/item/nInventoryUtil.java +++ /dev/null @@ -1,316 +0,0 @@ -package me.goodandevil.skyblock.utils.item; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.placeholder.Placeholder; - -public class nInventoryUtil { - - private Player player; - private Listener listener; - - private Inventory inv; - - private String title; - private int size = 9; - private InventoryType type; - private Map items = new HashMap<>(); - - public nInventoryUtil(Player player, final ClickEventHandler handler) { - this.player = player; - - if (handler != null) { - this.listener = new Listener() { - @EventHandler - public void onInventoryClick(InventoryClickEvent event) { - if (!(event.getWhoClicked() instanceof Player)) { - return; - } - - if (inv != null && event.getInventory().equals(inv)) { - event.setCancelled(true); - - if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR) { - return; - } - - ClickEvent clickEvent = new ClickEvent(event.getClick(), event.getSlot(), - event.getCurrentItem()); - handler.onClick(clickEvent); - - if (!clickEvent.getCancelled()) { - event.setCancelled(false); - } - - if (clickEvent.getWillClose()) { - event.getWhoClicked().closeInventory(); - } - - if (clickEvent.getWillDestroy()) { - destroy(); - } - } - } - - @EventHandler - public void onInventoryClose(InventoryCloseEvent event) { - if (!(event.getPlayer() instanceof Player)) { - return; - } - - Inventory inv = event.getInventory(); - - if (inv.equals(nInventoryUtil.this.inv)) { - inv.clear(); - destroy(); - } - } - - @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) { - if (event.getPlayer().getUniqueId().equals(player.getUniqueId())) { - destroy(); - } - } - }; - - Bukkit.getPluginManager().registerEvents(listener, SkyBlock.getInstance()); - } - } - - public void addItem(Item item, int... slots) { - for (int slotList : slots) { - items.put(slotList, item.prepareItem()); - } - } - - public void addItemStack(ItemStack is, int... slots) { - for (int slotList : slots) { - items.put(slotList, is); - } - } - - public Map getItems() { - return items; - } - - public Item createItem(ItemStack is, String itemDisplayname, List itemLore, Placeholder[] placeholders, - Enchantment[] itemEnchantments, ItemFlag[] itemFlags) { - return new Item(is, itemDisplayname, itemLore, placeholders, itemEnchantments, itemFlags); - } - - public void open() { - createInventory(); - player.openInventory(inv); - } - - public void setTitle(String title) { - this.title = title; - } - - public void setType(InventoryType type) { - this.type = type; - } - - public void setRows(int rows) { - if (rows > 6 || rows < 0) { - size = 9; - - return; - } - - this.size = rows * 9; - } - - public void setSize(int size) { - this.size = size; - } - - public void createInventory() { - if (type == null) { - if (title == null) { - inv = Bukkit.createInventory(null, size); - } else { - inv = Bukkit.createInventory(null, size, title); - } - } else { - if (title == null) { - inv = Bukkit.createInventory(null, type); - } else { - inv = Bukkit.createInventory(null, type, title); - } - } - - for (int i = 0; i < items.size(); i++) { - int slot = (int) items.keySet().toArray()[i]; - inv.setItem(slot, items.get(slot)); - } - } - - public void setInventory(Inventory inv) { - this.inv = inv; - } - - public Inventory getInventory() { - return inv; - } - - public class Item { - - private ItemStack is; - private String itemDisplayname; - private List itemLore; - private Placeholder[] placeholders; - private Enchantment[] itemEnchantments; - private ItemFlag[] itemFlags; - - public Item(ItemStack is, String itemDisplayname, List itemLore, Placeholder[] placeholders, - Enchantment[] itemEnchantments, ItemFlag[] itemFlags) { - this.is = is; - this.itemDisplayname = ChatColor.translateAlternateColorCodes('&', itemDisplayname); - this.itemLore = itemLore; - this.placeholders = placeholders; - this.itemEnchantments = itemEnchantments; - this.itemFlags = itemFlags; - } - - public void setLore() { - if (itemLore != null) { - ArrayList formattedItemLore = new ArrayList<>(); - - for (String itemLoreList : itemLore) { - if (placeholders != null) { - for (Placeholder placeholderList : placeholders) { - if (itemLoreList.contains(placeholderList.getPlaceholder())) { - itemLoreList = ChatColor.translateAlternateColorCodes('&', itemLoreList - .replace(placeholderList.getPlaceholder(), placeholderList.getResult())); - } - } - } - - formattedItemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - - itemLore.clear(); - itemLore = formattedItemLore; - } - } - - public void setItemMeta() { - ItemMeta im = is.hasItemMeta() ? is.getItemMeta() : Bukkit.getItemFactory().getItemMeta(is.getType()); - im.setDisplayName(itemDisplayname); - im.setLore(itemLore); - - if (itemFlags != null) { - im.addItemFlags(itemFlags); - } - - if (itemEnchantments != null) { - for (Enchantment itemEnchantmentList : itemEnchantments) { - im.addEnchant(itemEnchantmentList, 1, true); - } - } - - is.setItemMeta(im); - } - - public ItemStack prepareItem() { - setLore(); - setItemMeta(); - - return is; - } - } - - public void destroy() { - if (listener != null) { - HandlerList.unregisterAll(listener); - } - - title = null; - type = null; - inv = null; - items.clear(); - - listener = null; - } - - public interface ClickEventHandler { - void onClick(ClickEvent event); - } - - public class ClickEvent { - - private ClickType click; - private int slot; - private ItemStack is; - - private boolean close = true; - private boolean destroy = true; - private boolean cancelled = true; - - public ClickEvent(ClickType click, int slot, ItemStack is) { - this.click = click; - this.slot = slot; - this.is = is; - } - - public ClickType getClick() { - return click; - } - - public int getSlot() { - return slot; - } - - public ItemStack getItem() { - return is; - } - - public boolean getWillClose() { - return close; - } - - public void setWillClose(boolean close) { - this.close = close; - } - - public boolean getWillDestroy() { - return destroy; - } - - public void setWillDestroy(boolean destroy) { - this.destroy = destroy; - } - - public boolean getCancelled() { - return cancelled; - } - - public void setCancelled(boolean cancelled) { - this.cancelled = cancelled; - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/math/VectorUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/math/VectorUtil.java deleted file mode 100644 index 03a09f2e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/math/VectorUtil.java +++ /dev/null @@ -1,49 +0,0 @@ -package me.goodandevil.skyblock.utils.math; - -import org.bukkit.util.Vector; - -public final class VectorUtil { - - public static Vector rotateAroundAxisX(Vector v, double angle) { - angle = Math.toRadians(angle); - - double y, z, cos, sin; - - cos = Math.cos(angle); - sin = Math.sin(angle); - - y = v.getY() * cos - v.getZ() * sin; - z = v.getY() * sin + v.getZ() * cos; - - return v.setY(y).setZ(z); - } - - public static Vector rotateAroundAxisY(Vector v, double angle) { - angle = -angle; - angle = Math.toRadians(angle); - - double x, z, cos, sin; - - cos = Math.cos(angle); - sin = Math.sin(angle); - - x = v.getX() * cos + v.getZ() * sin; - z = v.getX() * -sin + v.getZ() * cos; - - return v.setX(x).setZ(z); - } - - public static Vector rotateAroundAxisZ(Vector v, double angle) { - angle = Math.toRadians(angle); - - double x, y, cos, sin; - - cos = Math.cos(angle); - sin = Math.sin(angle); - - x = v.getX() * cos - v.getY() * sin; - y = v.getX() * sin + v.getY() * cos; - - return v.setX(x).setY(y); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/player/NameFetcher.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/player/NameFetcher.java deleted file mode 100644 index 3308e31f..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/player/NameFetcher.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.goodandevil.skyblock.utils.player; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Date; -import java.util.Scanner; -import java.util.UUID; - -import com.google.gson.Gson; - -public class NameFetcher { - - public static Names[] getNames(UUID uuid) throws MalformedURLException, IOException { - if (uuid == null) { - return null; - } - - Names[] names = null; - - Scanner jsonScanner = new Scanner( - (new URL("https://api.mojang.com/user/profiles/" + uuid.toString().replaceAll("-", "") + "/names")) - .openConnection().getInputStream(), - "UTF-8"); - names = new Gson().fromJson(jsonScanner.next(), Names[].class); - jsonScanner.close(); - - return names; - } - - public class Names { - - public String name; - public long changedToAt; - - public String getName() { - return name; - } - - public Date getChangeDate() { - return new Date(changedToAt); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/player/OfflinePlayer.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/player/OfflinePlayer.java deleted file mode 100644 index dd751113..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/player/OfflinePlayer.java +++ /dev/null @@ -1,107 +0,0 @@ -package me.goodandevil.skyblock.utils.player; - -import java.io.File; -import java.util.UUID; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.usercache.UserCacheManager; - -public class OfflinePlayer { - - private UUID uuid; - - private String name; - private String memberSince; - private String lastOnline; - private UUID owner = null; - private String[] texture; - - private int playtime; - - public OfflinePlayer(String name) { - SkyBlock skyblock = SkyBlock.getInstance(); - UserCacheManager userCacheManager = skyblock.getUserCacheManager(); - - @SuppressWarnings("deprecation") - org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(name); - - this.name = offlinePlayer.getName(); - this.uuid = offlinePlayer.getUniqueId(); - - if (this.uuid == null && userCacheManager.hasUser(name)) { - this.uuid = userCacheManager.getUser(name); - } - - FileConfiguration configLoad = YamlConfiguration.loadConfiguration( - new File(new File(skyblock.getDataFolder().toString() + "/player-data"), uuid.toString() + ".yml")); - texture = new String[] { configLoad.getString("Texture.Signature"), configLoad.getString("Texture.Value") }; - playtime = configLoad.getInt("Statistics.Island.Playtime"); - memberSince = configLoad.getString("Statistics.Island.Join"); - lastOnline = configLoad.getString("Statistics.Island.LastOnline"); - - if (!(configLoad.getString("Island.Owner") == null || configLoad.getString("Island.Owner").isEmpty())) { - owner = UUID.fromString(configLoad.getString("Island.Owner")); - } - } - - public OfflinePlayer(UUID uuid) { - SkyBlock skyblock = SkyBlock.getInstance(); - UserCacheManager userCacheManager = skyblock.getUserCacheManager(); - - org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(uuid); - - this.name = offlinePlayer.getName(); - this.uuid = uuid; - - if (this.name == null && userCacheManager.hasUser(uuid)) { - this.name = userCacheManager.getUser(uuid); - } - - FileConfiguration configLoad = YamlConfiguration.loadConfiguration( - new File(new File(skyblock.getDataFolder().toString() + "/player-data"), uuid.toString() + ".yml")); - texture = new String[] { configLoad.getString("Texture.Signature"), configLoad.getString("Texture.Value") }; - playtime = configLoad.getInt("Statistics.Island.Playtime"); - memberSince = configLoad.getString("Statistics.Island.Join"); - lastOnline = configLoad.getString("Statistics.Island.LastOnline"); - - if (!(configLoad.getString("Island.Owner") == null || configLoad.getString("Island.Owner").isEmpty())) { - owner = UUID.fromString(configLoad.getString("Island.Owner")); - } - } - - public UUID getUUID() { - return uuid; - } - - public UUID getUniqueId() { - return uuid; - } - - public String getName() { - return name; - } - - public String getMemberSince() { - return memberSince; - } - - public String getLastOnline() { - return lastOnline; - } - - public UUID getOwner() { - return owner; - } - - public String[] getTexture() { - return texture; - } - - public int getPlaytime() { - return playtime; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Area.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Area.java deleted file mode 100644 index a06d5408..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Area.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.goodandevil.skyblock.utils.structure; - -import java.util.HashMap; -import java.util.Map; - -import org.bukkit.Location; - -public class Area { - - private Map positions; - - public Area() { - positions = new HashMap<>(); - } - - public Location getPosition(int position) { - if (positions.containsKey(position)) { - return positions.get(position); - } - - return null; - } - - public void setPosition(int position, Location location) { - positions.put(position, location); - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Location.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Location.java deleted file mode 100644 index deeb1c8c..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Location.java +++ /dev/null @@ -1,33 +0,0 @@ -package me.goodandevil.skyblock.utils.structure; - -public class Location { - - private int x; - private int y; - private int z; - - private boolean originLocation; - - public Location(int x, int y, int z, boolean originLocation) { - this.x = x; - this.y = y; - this.z = z; - this.originLocation = originLocation; - } - - public int getX() { - return this.x; - } - - public int getY() { - return this.y; - } - - public int getZ() { - return this.z; - } - - public boolean isOriginLocation() { - return originLocation; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/SelectionLocation.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/SelectionLocation.java deleted file mode 100644 index 51589530..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/SelectionLocation.java +++ /dev/null @@ -1,84 +0,0 @@ -package me.goodandevil.skyblock.utils.structure; - -import java.util.LinkedHashMap; - -import org.bukkit.block.Block; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Hanging; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Vehicle; - -public final class SelectionLocation { - - public static LinkedHashMap getEntities(org.bukkit.Location originLocation, - org.bukkit.Location location1, org.bukkit.Location location2) throws Exception { - LinkedHashMap locations = getLocations(originLocation, location1, location2); - LinkedHashMap entities = new LinkedHashMap<>(); - - for (Entity entityList : location2.getWorld().getEntities()) { - for (org.bukkit.Location locationList : locations.keySet()) { - if (locationList.getBlockX() == entityList.getLocation().getBlockX() - && locationList.getBlockY() == entityList.getLocation().getBlockY() - && locationList.getBlockZ() == entityList.getLocation().getBlockZ()) { - if (entityList instanceof Player || !(entityList instanceof LivingEntity - || entityList instanceof Vehicle || entityList instanceof Hanging)) { - continue; - } - - entities.put(entityList, locations.get(locationList)); - } - } - } - - return entities; - } - - public static LinkedHashMap getBlocks(org.bukkit.Location originLocation, - org.bukkit.Location location1, org.bukkit.Location location2) throws Exception { - LinkedHashMap locations = getLocations(originLocation, location1, location2); - LinkedHashMap blocks = new LinkedHashMap<>(); - - for (org.bukkit.Location locationList : locations.keySet()) { - blocks.put(locationList.getBlock(), locations.get(locationList)); - } - - return blocks; - } - - private static LinkedHashMap getLocations(org.bukkit.Location originLocation, - org.bukkit.Location location1, org.bukkit.Location location2) throws Exception { - LinkedHashMap locations = new LinkedHashMap<>(); - - int MinX = Math.min(location2.getBlockX(), location1.getBlockX()); - int MinY = Math.min(location2.getBlockY(), location1.getBlockY()); - int MinZ = Math.min(location2.getBlockZ(), location1.getBlockZ()); - - int MaxX = Math.max(location2.getBlockX(), location1.getBlockX()); - int MaxY = Math.max(location2.getBlockY(), location1.getBlockY()); - int MaxZ = Math.max(location2.getBlockZ(), location1.getBlockZ()); - - for (int x = MinX; x <= MaxX; x++) { - for (int y = MinY; y <= MaxY; y++) { - for (int z = MinZ; z <= MaxZ; z++) { - Block block = location1.getWorld().getBlockAt(x, y, z); - - int offsetX = x - (int) location1.getX(); - int offsetY = y - (int) location1.getY(); - int offsetZ = z - (int) location1.getZ(); - - boolean isOriginLocation = false; - - if (block.getX() == originLocation.getBlockX() && block.getY() == originLocation.getBlockY() - && block.getZ() == originLocation.getBlockZ()) { - isOriginLocation = true; - } - - locations.put(block.getLocation(), new Location(offsetX, offsetY, offsetZ, isOriginLocation)); - } - } - } - - return locations; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Storage.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Storage.java deleted file mode 100644 index d8f4d90d..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Storage.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.goodandevil.skyblock.utils.structure; - -public class Storage { - - private String blocks; - private String entities; - private String originLocation; - - private long time; - - private int version; - - public Storage(String blocks, String entities, String originLocation, long time, int version) { - this.blocks = blocks; - this.entities = entities; - this.originLocation = originLocation; - this.time = time; - this.version = version; - } - - public int getVersion() { - return version; - } - - public String getBlocks() { - return blocks; - } - - public String getEntities() { - return entities; - } - - public String getOriginLocation() { - return originLocation; - } - - public long getTime() { - return time; - } -} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Structure.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Structure.java deleted file mode 100644 index a591a1a8..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/Structure.java +++ /dev/null @@ -1,20 +0,0 @@ -package me.goodandevil.skyblock.utils.structure; - -public class Structure { - - private Storage storage; - private String file; - - public Structure(Storage storage, String file) { - this.storage = storage; - this.file = file; - } - - public Storage getStructureStorage() { - return storage; - } - - public String getStructureFile() { - return this.file; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/StructureUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/StructureUtil.java deleted file mode 100644 index 74c1a856..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/structure/StructureUtil.java +++ /dev/null @@ -1,228 +0,0 @@ -package me.goodandevil.skyblock.utils.structure; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.utils.GZipUtil; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.utils.world.block.BlockData; -import me.goodandevil.skyblock.utils.world.block.BlockDegreesType; -import me.goodandevil.skyblock.utils.world.block.BlockUtil; -import me.goodandevil.skyblock.utils.world.entity.EntityData; -import me.goodandevil.skyblock.utils.world.entity.EntityUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.block.Block; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; - -public final class StructureUtil { - - public static void saveStructure(File configFile, org.bukkit.Location originLocation, - org.bukkit.Location[] positions) throws Exception { - if (!configFile.exists()) { - configFile.createNewFile(); - } - - LinkedHashMap blocks = SelectionLocation.getBlocks(originLocation, positions[0], positions[1]); - LinkedHashMap entities = SelectionLocation.getEntities(originLocation, positions[0], - positions[1]); - - List blockData = new ArrayList<>(); - List entityData = new ArrayList<>(); - - String originBlockLocation = ""; - - for (Block blockList : blocks.keySet()) { - Location location = blocks.get(blockList); - - if (location.isOriginLocation()) { - originBlockLocation = location.getX() + ":" + location.getY() + ":" + location.getZ() + ":" - + positions[0].getWorld().getName(); - - if (blockList.getType() == Material.AIR) { - blockData.add(BlockUtil.convertBlockToBlockData(blockList, location.getX(), location.getY(), - location.getZ())); - } - } - - if (blockList.getType() == Material.AIR) { - continue; - } - - blockData.add( - BlockUtil.convertBlockToBlockData(blockList, location.getX(), location.getY(), location.getZ())); - } - - for (Entity entityList : entities.keySet()) { - if (entityList.getType() == EntityType.PLAYER) { - continue; - } - - Location location = entities.get(entityList); - entityData.add(EntityUtil.convertEntityToEntityData(entityList, location.getX(), location.getY(), - location.getZ())); - } - - if (!originBlockLocation.isEmpty()) { - originBlockLocation = originBlockLocation + ":" + originLocation.getYaw() + ":" + originLocation.getPitch(); - } - - String JSONString = new Gson().toJson(new Storage(new Gson().toJson(blockData), new Gson().toJson(entityData), - originBlockLocation, System.currentTimeMillis(), NMSUtil.getVersionNumber()), new TypeToken() { - }.getType()); - - FileOutputStream fileOutputStream = new FileOutputStream(configFile, false); - fileOutputStream.write(GZipUtil.compress(JSONString.getBytes(StandardCharsets.UTF_8))); - fileOutputStream.flush(); - fileOutputStream.close(); - } - - public static Structure loadStructure(File configFile) throws IOException { - if (!configFile.exists()) { - return null; - } - - byte[] content = new byte[(int) configFile.length()]; - - FileInputStream fileInputStream = new FileInputStream(configFile); - fileInputStream.read(content); - fileInputStream.close(); - - String JSONString = new String(GZipUtil.decompress(content)); - Storage storage = new Gson().fromJson(JSONString, new TypeToken() { - }.getType()); - - return new Structure(storage, configFile.getName()); - } - - @SuppressWarnings("unchecked") - public static Float[] pasteStructure(Structure structure, org.bukkit.Location location, BlockDegreesType type) { - Storage storage = structure.getStructureStorage(); - - String[] originLocationPositions = null; - - if (!storage.getOriginLocation().isEmpty()) { - originLocationPositions = storage.getOriginLocation().split(":"); - } - - float yaw = 0.0F, pitch = 0.0F; - - if (originLocationPositions.length == 6) { - yaw = Float.valueOf(originLocationPositions[4]); - pitch = Float.valueOf(originLocationPositions[5]); - } - - List blockData = new Gson().fromJson(storage.getBlocks(), - new TypeToken>() { - }.getType()); - - for (BlockData blockDataList : blockData) { - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(SkyBlock.getInstance(), () -> { - try { - org.bukkit.Location blockRotationLocation = LocationUtil - .rotateLocation(new org.bukkit.Location(location.getWorld(), blockDataList.getX(), - blockDataList.getY(), blockDataList.getZ()), type); - org.bukkit.Location blockLocation = new org.bukkit.Location(location.getWorld(), - location.getX() - Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[0])), - location.getY() - Integer.valueOf(storage.getOriginLocation().split(":")[1]), - location.getZ() + Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[2]))); - blockLocation.add(blockRotationLocation); - BlockUtil.convertBlockDataToBlock(blockLocation.getBlock(), blockDataList); - } catch (Exception e) { - SkyBlock.getInstance().getLogger().warning("Unable to convert BlockData to Block for type {" + blockDataList.getMaterial() + - ":" + blockDataList.getData() + "} in structure {" + structure.getStructureFile() + "}"); - } - }); - } - - Bukkit.getScheduler().scheduleSyncDelayedTask(SkyBlock.getInstance(), () -> { - for (EntityData entityDataList : (List) new Gson().fromJson(storage.getEntities(), - new TypeToken>() { - }.getType())) { - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(SkyBlock.getInstance(), () -> { - try { - org.bukkit.Location blockRotationLocation = LocationUtil - .rotateLocation(new org.bukkit.Location(location.getWorld(), entityDataList.getX(), - entityDataList.getY(), entityDataList.getZ()), type); - org.bukkit.Location blockLocation = new org.bukkit.Location(location.getWorld(), - location.getX() - Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[0])), - location.getY() - Integer.valueOf(storage.getOriginLocation().split(":")[1]), - location.getZ() + Math.abs(Integer.valueOf(storage.getOriginLocation().split(":")[2]))); - blockLocation.add(blockRotationLocation); - EntityUtil.convertEntityDataToEntity(entityDataList, blockLocation, type); - } catch (Exception e) { - SkyBlock.getInstance().getLogger().warning("Unable to convert EntityData to Entity for type {" + entityDataList.getEntityType() + - "} in structure {" + structure.getStructureFile() + "}"); - } - }); - } - }, 60L); - - return new Float[] { yaw, pitch }; - } - - public static ItemStack getTool() throws Exception { - SkyBlock skyblock = SkyBlock.getInstance(); - - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - ItemStack is = new ItemStack( - Material.valueOf(fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getString("Island.Admin.Structure.Selector"))); - ItemMeta im = is.getItemMeta(); - im.setDisplayName(ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Island.Structure.Tool.Item.Displayname"))); - - List itemLore = new ArrayList<>(); - - for (String itemLoreList : configLoad.getStringList("Island.Structure.Tool.Item.Lore")) { - itemLore.add(ChatColor.translateAlternateColorCodes('&', itemLoreList)); - } - - im.setLore(itemLore); - is.setItemMeta(im); - - return is; - } - - public static org.bukkit.Location[] getFixedLocations(org.bukkit.Location location1, - org.bukkit.Location location2) { - org.bukkit.Location location1Fixed = location1.clone(); - org.bukkit.Location location2Fixed = location2.clone(); - - if (location1.getX() > location2.getX()) { - location1Fixed.setX(location2.getX()); - location2Fixed.setX(location1.getX()); - } - - if (location1.getZ() < location2.getZ()) { - location1Fixed.setZ(location2.getZ()); - location2Fixed.setZ(location1.getZ()); - } - - return new org.bukkit.Location[] { location1Fixed, location2Fixed }; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/NMSUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/NMSUtil.java deleted file mode 100644 index 65205a20..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/NMSUtil.java +++ /dev/null @@ -1,100 +0,0 @@ -package me.goodandevil.skyblock.utils.version; - -import java.lang.reflect.Field; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -public class NMSUtil { - - public static String getVersion() { - String name = Bukkit.getServer().getClass().getPackage().getName(); - return name.substring(name.lastIndexOf('.') + 1) + "."; - } - - public static int getVersionNumber() { - String name = getVersion().substring(3); - return Integer.valueOf(name.substring(0, name.length() - 4)); - } - - public static int getVersionReleaseNumber() { - String NMSVersion = getVersion(); - return Integer.valueOf(NMSVersion.substring(NMSVersion.length() - 2).replace(".", "")); - } - - public static Class getNMSClass(String className) { - try { - String fullName = "net.minecraft.server." + getVersion() + className; - Class clazz = Class.forName(fullName); - return clazz; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static Class getCraftClass(String className) { - try { - String fullName = "org.bukkit.craftbukkit." + getVersion() + className; - Class clazz = Class.forName(fullName); - return clazz; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static Field getField(Class clazz, String name, boolean declared) { - try { - Field field; - - if (declared) { - field = clazz.getDeclaredField(name); - } else { - field = clazz.getField(name); - } - - field.setAccessible(true); - return field; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static Object getFieldObject(Object object, Field field) { - try { - return field.get(object); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static void setField(Object object, String fieldName, Object fieldValue, boolean declared) { - try { - Field field; - - if (declared) { - field = object.getClass().getDeclaredField(fieldName); - } else { - field = object.getClass().getField(fieldName); - } - - field.setAccessible(true); - field.set(object, fieldValue); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void sendPacket(Player player, Object packet) { - try { - Object handle = player.getClass().getMethod("getHandle").invoke(player); - Object playerConnection = handle.getClass().getField("playerConnection").get(handle); - playerConnection.getClass().getMethod("sendPacket", getNMSClass("Packet")).invoke(playerConnection, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/Sounds.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/Sounds.java deleted file mode 100644 index 61d3333a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/version/Sounds.java +++ /dev/null @@ -1,224 +0,0 @@ -package me.goodandevil.skyblock.utils.version; - -import org.bukkit.Sound; - -public enum Sounds { - - AMBIENCE_CAVE("AMBIENCE_CAVE", "AMBIENT_CAVE", "AMBIENT_CAVE"), - AMBIENCE_RAIN("AMBIENCE_RAIN", "WEATHER_RAIN", "WEATHER_RAIN"), - AMBIENCE_THUNDER("AMBIENCE_THUNDER", "ENTITY_LIGHTNING_THUNDER", "ENTITY_LIGHTNING_BOLT_THUNDER"), - ANVIL_BREAK("ANVIL_BREAK", "BLOCK_ANVIL_BREAK", "BLOCK_ANVIL_BREAK"), - ANVIL_LAND("ANVIL_LAND", "BLOCK_ANVIL_LAND", "BLOCK_ANVIL_LAND"), - ANVIL_USE("ANVIL_USE", "BLOCK_ANVIL_USE", "BLOCK_ANVIL_USE"), - ARROW_HIT("ARROW_HIT", "ENTITY_ARROW_HIT", "ENTITY_ARROW_HIT"), - BURP("BURP", "ENTITY_PLAYER_BURP", "ENTITY_PLAYER_BURP"), - CHEST_CLOSE("CHEST_CLOSE", "BLOCK_CHEST_CLOSE", "BLOCK_CHEST_CLOSE"), - CHEST_OPEN("CHEST_OPEN", "BLOCK_CHEST_OPEN", "BLOCK_CHEST_OPEN"), - CLICK("CLICK", "UI_BUTTON_CLICK", "UI_BUTTON_CLICK"), - DOOR_CLOSE("DOOR_CLOSE", "BLOCK_WOODEN_DOOR_CLOSE", "BLOCK_WOODEN_DOOR_CLOSE"), - DOOR_OPEN("DOOR_OPEN", "BLOCK_WOODEN_DOOR_OPEN", "BLOCK_WOODEN_DOOR_OPEN"), - DRINK("DRINK", "ENTITY_GENERIC_DRINK", "ENTITY_GENERIC_DRINK"), - EAT("EAT", "ENTITY_GENERIC_EAT", "ENTITY_GENERIC_EAT"), - EXPLODE("EXPLODE", "ENTITY_GENERIC_EXPLODE", "ENTITY_GENERIC_EXPLODE"), - FALL_BIG("FALL_BIG", "ENTITY_GENERIC_BIG_FALL", "ENTITY_GENERIC_BIG_FALL"), - FALL_SMALL("FALL_SMALL", "ENTITY_GENERIC_SMALL_FALL", "ENTITY_GENERIC_SMALL_FALL"), - FIRE("FIRE", "BLOCK_FIRE_AMBIENT", "BLOCK_FIRE_AMBIENT"), - FIRE_IGNITE("FIRE_IGNITE", "ITEM_FLINTANDSTEEL_USE", "ITEM_FLINTANDSTEEL_USE"), - FIZZ("FIZZ", "BLOCK_FIRE_EXTINGUISH", "BLOCK_FIRE_EXTINGUISH"), - FUSE("FUSE", "ENTITY_TNT_PRIMED", "ENTITY_TNT_PRIMED"), GLASS("GLASS", "BLOCK_GLASS_BREAK", "BLOCK_GLASS_BREAK"), - HURT_FLESH("HURT_FLESH", "ENTITY_PLAYER_HURT", "ENTITY_PLAYER_HURT"), - ITEM_BREAK("ITEM_BREAK", "ENTITY_ITEM_BREAK", "ENTITY_ITEM_BREAK"), - ITEM_PICKUP("ITEM_PICKUP", "ENTITY_ITEM_PICKUP", "ENTITY_ITEM_PICKUP"), - LAVA("LAVA", "BLOCK_LAVA_AMBIENT", "BLOCK_LAVA_AMBIENT"), LAVA_POP("LAVA_POP", "BLOCK_LAVA_POP", "BLOCK_LAVA_POP"), - LEVEL_UP("LEVEL_UP", "ENTITY_PLAYER_LEVELUP", "ENTITY_PLAYER_LEVELUP"), - MINECART_BASE("MINECART_BASE", "ENTITY_MINECART_RIDING", "ENTITY_MINECART_RIDING"), - MINECART_INSIDE("MINECART_INSIDE", "ENTITY_MINECART_RIDING", "ENTITY_MINECART_RIDING"), - NOTE_BASS("NOTE_BASS", "BLOCK_NOTE_BASS", "BLOCK_NOTE_BLOCK_BASS"), - NOTE_PIANO("NOTE_PIANO", "BLOCK_NOTE_HARP", "BLOCK_NOTE_BLOCK_HARP"), - NOTE_BASS_DRUM("NOTE_BASS_DRUM", "BLOCK_NOTE_BASEDRUM", "BLOCK_NOTE_BLOCK_BASEDRUM"), - NOTE_STICKS("NOTE_STICKS", "BLOCK_NOTE_HAT", "BLOCK_NOTE_BLOCK_HAT"), - NOTE_BASS_GUITAR("NOTE_BASS_GUITAR", "BLOCK_NOTE_BASS", "BLOCK_NOTE_BLOCK_BASS"), - NOTE_SNARE_DRUM("NOTE_SNARE_DRUM", "BLOCK_NOTE_SNARE", "BLOCK_NOTE_BLOCK_SNARE"), - NOTE_PLING("NOTE_PLING", "BLOCK_NOTE_PLING", "BLOCK_NOTE_BLOCK_PLING"), - ORB_PICKUP("ORB_PICKUP", "ENTITY_EXPERIENCE_ORB_PICKUP", "ENTITY_EXPERIENCE_ORB_PICKUP"), - PISTON_EXTEND("PISTON_EXTEND", "BLOCK_PISTON_EXTEND", "BLOCK_PISTON_EXTEND"), - PISTON_RETRACT("PISTON_RETRACT", "BLOCK_PISTON_CONTRACT", "BLOCK_PISTON_CONTRACT"), - PORTAL("PORTAL", "BLOCK_PORTAL_AMBIENT", "BLOCK_PORTAL_AMBIENT"), - PORTAL_TRAVEL("PORTAL_TRAVEL", "BLOCK_PORTAL_TRAVEL", "BLOCK_PORTAL_TRAVEL"), - PORTAL_TRIGGER("PORTAL_TRIGGER", "BLOCK_PORTAL_TRIGGER", "BLOCK_PORTAL_TRIGGER"), - SHOOT_ARROW("SHOOT_ARROW", "ENTITY_ARROW_SHOOT", "ENTITY_ARROW_SHOOT"), - SPLASH("SPLASH", "ENTITY_GENERIC_SPLASH", "ENTITY_GENERIC_SPLASH"), - SPLASH2("SPLASH2", "ENTITY_BOBBER_SPLASH", "ENTITY_FISHING_BOBBER_SPLASH"), - STEP_GRASS("STEP_GRASS", "BLOCK_GRASS_STEP", "BLOCK_GRASS_STEP"), - STEP_GRAVEL("STEP_GRAVEL", "BLOCK_GRAVEL_STEP", "BLOCK_GRAVEL_STEP"), - STEP_LADDER("STEP_LADDER", "BLOCK_LADDER_STEP", "BLOCK_LADDER_STEP"), - STEP_SAND("STEP_SAND", "BLOCK_SAND_STEP", "BLOCK_SAND_STEP"), - STEP_SNOW("STEP_SNOW", "BLOCK_SNOW_STEP", "BLOCK_SNOW_STEP"), - STEP_STONE("STEP_STONE", "BLOCK_STONE_STEP", "BLOCK_STONE_STEP"), - STEP_WOOD("STEP_WOOD", "BLOCK_WOOD_STEP", "BLOCK_WOOD_STEP"), - STEP_WOOL("STEP_WOOL", "BLOCK_CLOTH_STEP", "BLOCK_WOOL_STEP"), - SWIM("SWIM", "ENTITY_GENERIC_SWIM", "ENTITY_GENERIC_SWIM"), - WATER("WATER", "BLOCK_WATER_AMBIENT", "BLOCK_WATER_AMBIENT"), - WOOD_CLICK("WOOD_CLICK", "BLOCK_WOOD_BUTTON_CLICK_ON", "BLOCK_WOODEN_BUTTON_CLICK_ON"), - BAT_DEATH("BAT_DEATH", "ENTITY_BAT_DEATH", "ENTITY_BAT_DEATH"), - BAT_HURT("BAT_HURT", "ENTITY_BAT_HURT", "ENTITY_BAT_HURT"), - BAT_IDLE("BAT_IDLE", "ENTITY_BAT_AMBIENT", "ENTITY_BAT_AMBIENT"), - BAT_LOOP("BAT_LOOP", "ENTITY_BAT_LOOP", "ENTITY_BAT_LOOP"), - BAT_TAKEOFF("BAT_TAKEOFF", "ENTITY_BAT_TAKEOFF", "ENTITY_BAT_TAKEOFF"), - BLAZE_BREATH("BLAZE_BREATH", "ENTITY_BLAZE_AMBIENT", "ENTITY_BLAZE_AMBIENT"), - BLAZE_DEATH("BLAZE_DEATH", "ENTITY_BLAZE_DEATH", "ENTITY_BLAZE_DEATH"), - BLAZE_HIT("BLAZE_HIT", "ENTITY_BLAZE_HURT", "ENTITY_BLAZE_HURT"), - CAT_HISS("CAT_HISS", "ENTITY_CAT_HISS", "ENTITY_CAT_HISS"), - CAT_HIT("CAT_HIT", "ENTITY_CAT_HURT", "ENTITY_CAT_HURT"), - CAT_MEOW("CAT_MEOW", "ENTITY_CAT_AMBIENT", "ENTITY_CAT_AMBIENT"), - CAT_PURR("CAT_PURR", "ENTITY_CAT_PURR", "ENTITY_CAT_PURR"), - CAT_PURREOW("CAT_PURREOW", "ENTITY_CAT_PURREOW", "ENTITY_CAT_PURREOW"), - CHICKEN_IDLE("CHICKEN_IDLE", "ENTITY_CHICKEN_AMBIENT", "ENTITY_CHICKEN_AMBIENT"), - CHICKEN_HURT("CHICKEN_HURT", "ENTITY_CHICKEN_HURT", "ENTITY_CHICKEN_HURT"), - CHICKEN_EGG_POP("CHICKEN_EGG_POP", "ENTITY_CHICKEN_EGG", "ENTITY_CHICKEN_EGG"), - CHICKEN_WALK("CHICKEN_WALK", "ENTITY_CHICKEN_STEP", "ENTITY_CHICKEN_STEP"), - COW_IDLE("COW_IDLE", "ENTITY_COW_AMBIENT", "ENTITY_COW_AMBIENT"), - COW_HURT("COW_HURT", "ENTITY_COW_HURT", "ENTITY_COW_HURT"), - COW_WALK("COW_WALK", "ENTITY_COW_STEP", "ENTITY_COW_STEP"), - CREEPER_HISS("CREEPER_HISS", "ENTITY_CREEPER_PRIMED", "ENTITY_CREEPER_PRIMED"), - CREEPER_DEATH("CREEPER_DEATH", "ENTITY_CREEPER_DEATH", "ENTITY_CREEPER_DEATH"), - ENDERDRAGON_DEATH("ENDERDRAGON_DEATH", "ENTITY_ENDERDRAGON_DEATH", "ENTITY_ENDER_DRAGON_DEATH"), - ENDERDRAGON_GROWL("ENDERDRAGON_GROWL", "ENTITY_ENDERDRAGON_GROWL", "ENTITY_ENDER_DRAGON_GROWL"), - ENDERDRAGON_HIT("ENDERDRAGON_HIT", "ENTITY_ENDERDRAGON_HURT", "ENTITY_ENDER_DRAGON_HURT"), - ENDERDRAGON_WINGS("ENDERDRAGON_WINGS", "ENTITY_ENDERDRAGON_FLAP", "ENTITY_ENDER_DRAGON_FLAP"), - ENDERMAN_DEATH("ENDERMAN_DEATH", "ENTITY_ENDERMEN_DEATH", "ENTITY_ENDERMAN_DEATH"), - ENDERMAN_HIT("ENDERMAN_HIT", "ENTITY_ENDERMEN_HURT", "ENTITY_ENDERMAN_HURT"), - ENDERMAN_IDLE("ENDERMAN_IDLE", "ENTITY_ENDERMEN_AMBIENT", "ENTITY_ENDERMAN_AMBIENT"), - ENDERMAN_TELEPORT("ENDERMAN_TELEPORT", "ENTITY_ENDERMEN_TELEPORT", "ENTITY_ENDERMAN_TELEPORT"), - ENDERMAN_SCREAM("ENDERMAN_SCREAM", "ENTITY_ENDERMEN_SCREAM", "ENTITY_ENDERMAN_SCREAM"), - ENDERMAN_STARE("ENDERMAN_STARE", "ENTITY_ENDERMEN_STARE", "ENTITY_ENDERMAN_STARE"), - GHAST_SCREAM("GHAST_SCREAM", "ENTITY_GHAST_SCREAM", "ENTITY_GHAST_SCREAM"), - GHAST_SCREAM2("GHAST_SCREAM2", "ENTITY_GHAST_HURT", "ENTITY_GHAST_HURT"), - GHAST_CHARGE("GHAST_CHARGE", "ENTITY_GHAST_WARN", "ENTITY_GHAST_WARN"), - GHAST_DEATH("GHAST_DEATH", "ENTITY_GHAST_DEATH", "ENTITY_GHAST_DEATH"), - GHAST_FIREBALL("GHAST_FIREBALL", "ENTITY_GHAST_SHOOT", "ENTITY_GHAST_SHOOT"), - GHAST_MOAN("GHAST_MOAN", "ENTITY_GHAST_AMBIENT", "ENTITY_GHAST_AMBIENT"), - IRONGOLEM_DEATH("IRONGOLEM_DEATH", "ENTITY_IRONGOLEM_DEATH", "ENTITY_IRON_GOLEM_DEATH"), - IRONGOLEM_HIT("IRONGOLEM_HIT", "ENTITY_IRONGOLEM_HURT", "ENTITY_IRON_GOLEM_HURT"), - IRONGOLEM_THROW("IRONGOLEM_THROW", "ENTITY_IRONGOLEM_ATTACK", "ENTITY_IRON_GOLEM_ATTACK"), - IRONGOLEM_WALK("IRONGOLEM_WALK", "ENTITY_IRONGOLEM_STEP", "ENTITY_IRON_GOLEM_STEP"), - MAGMACUBE_WALK("MAGMACUBE_WALK", "ENTITY_MAGMACUBE_SQUISH", "ENTITY_MAGMA_CUBE_SQUISH"), - MAGMACUBE_WALK2("MAGMACUBE_WALK2", "ENTITY_MAGMACUBE_SQUISH", "ENTITY_MAGMA_CUBE_SQUISH"), - MAGMACUBE_JUMP("MAGMACUBE_JUMP", "ENTITY_MAGMACUBE_JUMP", "ENTITY_MAGMA_CUBE_JUMP"), - PIG_IDLE("PIG_IDLE", "ENTITY_PIG_AMBIENT", "ENTITY_PIG_AMBIENT"), - PIG_DEATH("PIG_DEATH", "ENTITY_PIG_DEATH", "ENTITY_PIG_DEATH"), - PIG_WALK("PIG_WALK", "ENTITY_PIG_STEP", "ENTITY_PIG_STEP"), - SHEEP_IDLE("SHEEP_IDLE", "ENTITY_SHEEP_AMBIENT", "ENTITY_SHEEP_AMBIENT"), - SHEEP_SHEAR("SHEEP_SHEAR", "ENTITY_SHEEP_SHEAR", "ENTITY_SHEEP_SHEAR"), - SHEEP_WALK("SHEEP_WALK", "ENTITY_SHEEP_STEP", "ENTITY_SHEEP_STEP"), - SILVERFISH_HIT("SILVERFISH_HIT", "ENTITY_SILVERFISH_HURT", "ENTITY_SILVERFISH_HURT"), - SILVERFISH_KILL("SILVERFISH_KILL", "ENTITY_SILVERFISH_DEATH", "ENTITY_SILVERFISH_DEATH"), - SILVERFISH_IDLE("SILVERFISH_IDLE", "ENTITY_SILVERFISH_AMBIENT", "ENTITY_SILVERFISH_AMBIENT"), - SILVERFISH_WALK("SILVERFISH_WALK", "ENTITY_SILVERFISH_STEP", "ENTITY_SILVERFISH_STEP"), - SKELETON_IDLE("SKELETON_IDLE", "ENTITY_SKELETON_AMBIENT", "ENTITY_SKELETON_AMBIENT"), - SKELETON_DEATH("SKELETON_DEATH", "ENTITY_SKELETON_DEATH", "ENTITY_SKELETON_DEATH"), - SKELETON_HURT("SKELETON_HURT", "ENTITY_SKELETON_HURT", "ENTITY_SKELETON_HURT"), - SKELETON_WALK("SKELETON_WALK", "ENTITY_SKELETON_STEP", "ENTITY_SKELETON_STEP"), - SLIME_ATTACK("SLIME_ATTACK", "ENTITY_SLIME_ATTACK", "ENTITY_SLIME_ATTACK"), - SLIME_WALK("SLIME_WALK", "ENTITY_SLIME_JUMP", "ENTITY_SLIME_JUMP"), - SLIME_WALK2("SLIME_WALK2", "ENTITY_SLIME_SQUISH", "ENTITY_SLIME_SQUISH"), - SPIDER_IDLE("SPIDER_IDLE", "ENTITY_SPIDER_AMBIENT", "ENTITY_SPIDER_AMBIENT"), - SPIDER_DEATH("SPIDER_DEATH", "ENTITY_SPIDER_DEATH", "ENTITY_SPIDER_DEATH"), - SPIDER_WALK("SPIDER_WALK", "ENTITY_SPIDER_STEP", "ENTITY_SPIDER_STEP"), - WITHER_DEATH("WITHER_DEATH", "ENTITY_WITHER_DEATH", "ENTITY_WITHER_DEATH"), - WITHER_HURT("WITHER_HURT", "ENTITY_WITHER_HURT", "ENTITY_WITHER_HURT"), - WITHER_IDLE("WITHER_IDLE", "ENTITY_WITHER_AMBIENT", "ENTITY_WITHER_AMBIENT"), - WITHER_SHOOT("WITHER_SHOOT", "ENTITY_WITHER_SHOOT", "ENTITY_WITHER_SHOOT"), - WITHER_SPAWN("WITHER_SPAWN", "ENTITY_WITHER_SPAWN", "ENTITY_WITHER_SPAWN"), - WOLF_BARK("WOLF_BARK", "ENTITY_WOLF_AMBIENT", "ENTITY_WOLF_AMBIENT"), - WOLF_DEATH("WOLF_DEATH", "ENTITY_WOLF_DEATH", "ENTITY_WOLF_DEATH"), - WOLF_GROWL("WOLF_GROWL", "ENTITY_WOLF_GROWL", "ENTITY_WOLF_GROWL"), - WOLF_HOWL("WOLF_HOWL", "ENTITY_WOLF_HOWL", "ENTITY_WOLF_HOWL"), - WOLF_HURT("WOLF_HURT", "ENTITY_WOLF_HURT", "ENTITY_WOLF_HURT"), - WOLF_PANT("WOLF_PANT", "ENTITY_WOLF_PANT", "ENTITY_WOLF_PANT"), - WOLF_SHAKE("WOLF_SHAKE", "ENTITY_WOLF_SHAKE", "ENTITY_WOLF_SHAKE"), - WOLF_WALK("WOLF_WALK", "ENTITY_WOLF_STEP", "ENTITY_WOLF_STEP"), - WOLF_WHINE("WOLF_WHINE", "ENTITY_WOLF_WHINE", "ENTITY_WOLF_WHINE"), - ZOMBIE_METAL("ZOMBIE_METAL", "ENTITY_ZOMBIE_ATTACK_IRON_DOOR", "ENTITY_ZOMBIE_ATTACK_IRON_DOOR"), - ZOMBIE_WOOD("ZOMBIE_WOOD", "ENTITY_ZOMBIE_ATTACK_DOOR_WOOD", "ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR"), - ZOMBIE_WOODBREAK("ZOMBIE_WOODBREAK", "ENTITY_ZOMBIE_BREAK_DOOR_WOOD", "ENTITY_ZOMBIE_BREAK_WOODEN_DOOR"), - ZOMBIE_IDLE("ZOMBIE_IDLE", "ENTITY_ZOMBIE_AMBIENT", "ENTITY_ZOMBIE_AMBIENT"), - ZOMBIE_DEATH("ZOMBIE_DEATH", "ENTITY_ZOMBIE_DEATH", "ENTITY_ZOMBIE_DEATH"), - ZOMBIE_HURT("ZOMBIE_HURT", "ENTITY_ZOMBIE_HURT", "ENTITY_ZOMBIE_HURT"), - ZOMBIE_INFECT("ZOMBIE_INFECT", "ENTITY_ZOMBIE_INFECT", "ENTITY_ZOMBIE_INFECT"), - ZOMBIE_UNFECT("ZOMBIE_UNFECT", "ENTITY_ZOMBIE_VILLAGER_CONVERTED", "ENTITY_ZOMBIE_VILLAGER_CONVERTED"), - ZOMBIE_REMEDY("ZOMBIE_REMEDY", "ENTITY_ZOMBIE_VILLAGER_CURE", "ENTITY_ZOMBIE_VILLAGER_CURE"), - ZOMBIE_WALK("ZOMBIE_WALK", "ENTITY_ZOMBIE_STEP", "ENTITY_ZOMBIE_STEP"), - ZOMBIE_PIG_IDLE("ZOMBIE_PIG_IDLE", "ENTITY_ZOMBIE_PIG_AMBIENT", "ENTITY_ZOMBIE_PIGMAN_AMBIENT"), - ZOMBIE_PIG_ANGRY("ZOMBIE_PIG_ANGRY", "ENTITY_ZOMBIE_PIG_ANGRY", "ENTITY_ZOMBIE_PIGMAN_ANGRY"), - ZOMBIE_PIG_DEATH("ZOMBIE_PIG_DEATH", "ENTITY_ZOMBIE_PIG_DEATH", "ENTITY_ZOMBIE_PIGMAN_DEATH"), - ZOMBIE_PIG_HURT("ZOMBIE_PIG_HURT", "ENTITY_ZOMBIE_PIG_HURT", "ENTITY_ZOMBIE_PIGMAN_HURT"), - DIG_WOOL("DIG_WOOL", "BLOCK_CLOTH_BREAK", "BLOCK_WOOL_BREAK"), - DIG_GRASS("DIG_GRASS", "BLOCK_GRASS_BREAK", "BLOCK_GRASS_BREAK"), - DIG_GRAVEL("DIG_GRAVEL", "BLOCK_GRAVEL_BREAK", "BLOCK_GRAVEL_BREAK"), - DIG_SAND("DIG_SAND", "BLOCK_SAND_BREAK", "BLOCK_SAND_BREAK"), - DIG_SNOW("DIG_SNOW", "BLOCK_SNOW_BREAK", "BLOCK_SNOW_BREAK"), - DIG_STONE("DIG_STONE", "BLOCK_STONE_BREAK", "BLOCK_STONE_BREAK"), - DIG_WOOD("DIG_WOOD", "BLOCK_WOOD_BREAK", "BLOCK_WOOD_BREAK"), - FIREWORK_BLAST("FIREWORK_BLAST", "ENTITY_FIREWORK_BLAST", "ENTITY_FIREWORK_ROCKET_BLAST"), - FIREWORK_BLAST2("FIREWORK_BLAST2", "ENTITY_FIREWORK_BLAST_FAR", "ENTITY_FIREWORK_ROCKET_BLAST_FAR"), - FIREWORK_LARGE_BLAST("FIREWORK_LARGE_BLAST", "ENTITY_FIREWORK_LARGE_BLAST", "ENTITY_FIREWORK_ROCKET_LARGE_BLAST"), - FIREWORK_LARGE_BLAST2("FIREWORK_LARGE_BLAST2", "ENTITY_FIREWORK_LARGE_BLAST_FAR", - "ENTITY_FIREWORK_ROCKET_LARGE_BLAST_FAR"), - FIREWORK_TWINKLE("FIREWORK_TWINKLE", "ENTITY_FIREWORK_TWINKLE", "ENTITY_FIREWORK_ROCKET_TWINKLE"), - FIREWORK_TWINKLE2("FIREWORK_TWINKLE2", "ENTITY_FIREWORK_TWINKLE_FAR", "ENTITY_FIREWORK_ROCKET_TWINKLE_FAR"), - FIREWORK_LAUNCH("FIREWORK_LAUNCH", "ENTITY_FIREWORK_LAUNCH", "ENTITY_FIREWORK_ROCKET_LAUNCH"), - SUCCESSFUL_HIT("SUCCESSFUL_HIT", "ENTITY_PLAYER_ATTACK_STRONG", "ENTITY_PLAYER_ATTACK_STRONG"), - HORSE_ANGRY("HORSE_ANGRY", "ENTITY_HORSE_ANGRY", "ENTITY_HORSE_ANGRY"), - HORSE_ARMOR("HORSE_ARMOR", "ENTITY_HORSE_ARMOR", "ENTITY_HORSE_ARMOR"), - HORSE_BREATHE("HORSE_BREATHE", "ENTITY_HORSE_BREATHE", "ENTITY_HORSE_BREATHE"), - HORSE_DEATH("HORSE_DEATH", "ENTITY_HORSE_DEATH", "ENTITY_HORSE_DEATH"), - HORSE_GALLOP("HORSE_GALLOP", "ENTITY_HORSE_GALLOP", "ENTITY_HORSE_GALLOP"), - HORSE_HIT("HORSE_HIT", "ENTITY_HORSE_HURT", "ENTITY_HORSE_HURT"), - HORSE_IDLE("HORSE_IDLE", "ENTITY_HORSE_AMBIENT", "ENTITY_HORSE_AMBIENT"), - HORSE_JUMP("HORSE_JUMP", "ENTITY_HORSE_JUMP", "ENTITY_HORSE_JUMP"), - HORSE_LAND("HORSE_LAND", "ENTITY_HORSE_LAND", "ENTITY_HORSE_LAND"), - HORSE_SADDLE("HORSE_SADDLE", "ENTITY_HORSE_SADDLE", "ENTITY_HORSE_SADDLE"), - HORSE_SOFT("HORSE_SOFT", "ENTITY_HORSE_STEP", "ENTITY_HORSE_STEP"), - HORSE_WOOD("HORSE_WOOD", "ENTITY_HORSE_STEP_WOOD", "ENTITY_HORSE_STEP_WOOD"), - DONKEY_ANGRY("DONKEY_ANGRY", "ENTITY_DONKEY_ANGRY", "ENTITY_DONKEY_ANGRY"), - DONKEY_DEATH("DONKEY_DEATH", "ENTITY_DONKEY_DEATH", "ENTITY_DONKEY_DEATH"), - DONKEY_HIT("DONKEY_HIT", "ENTITY_DONKEY_HURT", "ENTITY_DONKEY_HURT"), - DONKEY_IDLE("DONKEY_IDLE", "ENTITY_DONKEY_AMBIENT", "ENTITY_DONKEY_AMBIENT"), - HORSE_SKELETON_DEATH("HORSE_SKELETON_DEATH", "ENTITY_SKELETON_HORSE_DEATH", "ENTITY_SKELETON_HORSE_DEATH"), - HORSE_SKELETON_HIT("HORSE_SKELETON_HIT", "ENTITY_SKELETON_HORSE_HURT", "ENTITY_SKELETON_HORSE_HURT"), - HORSE_SKELETON_IDLE("HORSE_SKELETON_IDLE", "ENTITY_SKELETON_HORSE_AMBIENT", "ENTITY_SKELETON_HORSE_AMBIENT"), - HORSE_ZOMBIE_DEATH("HORSE_ZOMBIE_DEATH", "ENTITY_ZOMBIE_HORSE_DEATH", "ENTITY_ZOMBIE_HORSE_DEATH"), - HORSE_ZOMBIE_HIT("HORSE_ZOMBIE_HIT", "ENTITY_ZOMBIE_HORSE_HURT", "ENTITY_ZOMBIE_HORSE_HURT"), - HORSE_ZOMBIE_IDLE("HORSE_ZOMBIE_IDLE", "ENTITY_ZOMBIE_HORSE_AMBIENT", "ENTITY_ZOMBIE_HORSE_AMBIENT"), - VILLAGER_DEATH("VILLAGER_DEATH", "ENTITY_VILLAGER_DEATH", "ENTITY_VILLAGER_DEATH"), - VILLAGER_HAGGLE("VILLAGER_HAGGLE", "ENTITY_VILLAGER_TRADING", "ENTITY_VILLAGER_TRADE"), - VILLAGER_HIT("VILLAGER_HIT", "ENTITY_VILLAGER_HURT", "ENTITY_VILLAGER_HURT"), - VILLAGER_IDLE("VILLAGER_IDLE", "ENTITY_VILLAGER_AMBIENT", "ENTITY_VILLAGER_AMBIENT"), - VILLAGER_NO("VILLAGER_NO", "ENTITY_VILLAGER_NO", "ENTITY_VILLAGER_NO"), - VILLAGER_YES("VILLAGER_YES", "ENTITY_VILLAGER_YES", "ENTITY_VILLAGER_YES"); - - private String v18sound; - private String v19sound; - private String v113sound; - - Sounds(String v18sound, String v19sound, String v113sound) { - this.v18sound = v18sound; - this.v19sound = v19sound; - this.v113sound = v113sound; - } - - public Sound bukkitSound() { - int NMSVersion = NMSUtil.getVersionNumber(); - - if (NMSVersion < 9) { - return Sound.valueOf(v18sound); - } else if (NMSVersion < 13) { - return Sound.valueOf(v19sound); - } else if (NMSVersion > 12) { - return Sound.valueOf(v113sound); - } - - return null; - } -} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/LocationUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/LocationUtil.java deleted file mode 100644 index bd9671f3..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/LocationUtil.java +++ /dev/null @@ -1,285 +0,0 @@ -package me.goodandevil.skyblock.utils.world; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandEnvironment; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.utils.math.VectorUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.world.block.BlockDegreesType; -import me.goodandevil.skyblock.world.WorldManager; -import org.bukkit.*; -import org.bukkit.World.Environment; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.Player; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import java.util.logging.Level; - -public final class LocationUtil { - - public static boolean isLocationLocation(Location location1, Location location2) { - if (location1.getBlockX() == location2.getBlockX() && location1.getBlockY() == location2.getBlockY() - && location1.getBlockZ() == location2.getBlockZ()) { - return true; - } - - return false; - } - - public static boolean isLocationAffectingIslandSpawn(Location location, Island island, IslandWorld world) { - return isLocationAffectingLocation(location, island.getLocation(world, IslandEnvironment.Main)) - || isLocationAffectingLocation(location, island.getLocation(world, IslandEnvironment.Visitor)); - } - - private static boolean isLocationAffectingLocation(Location location1, Location location2) { - Location headHeight = location2.clone().add(0, 1, 0); - Location feetHeight = location2.clone(); - Location groundHeight = location2.clone().add(0, -1, 0); - - return isLocationLocation(headHeight, location1) - || isLocationLocation(feetHeight, location1) - || isLocationLocation(groundHeight, location1); - } - - public static boolean isLocationAtLocationRadius(Location location1, Location location2, double radius) { - if (location1 == null || location2 == null || location1.getWorld() == null || location2.getWorld() == null - || !location1.getWorld().getName().equals(location2.getWorld().getName())) { - return false; - } - - double x = Math.abs(location1.getX() - location2.getX()); - double z = Math.abs(location1.getZ() - location2.getZ()); - - return x <= radius && z <= radius; - } - - public static List getLocations(Location minLocation, Location maxLocation) { - List locations = new ArrayList<>(); - - int MinX = Math.min(maxLocation.getBlockX(), minLocation.getBlockX()); - int MinY = Math.min(maxLocation.getBlockY(), minLocation.getBlockY()); - int MinZ = Math.min(maxLocation.getBlockZ(), minLocation.getBlockZ()); - - int MaxX = Math.max(maxLocation.getBlockX(), minLocation.getBlockX()); - int MaxY = Math.max(maxLocation.getBlockY(), minLocation.getBlockY()); - int MaxZ = Math.max(maxLocation.getBlockZ(), minLocation.getBlockZ()); - - for (int x = MinX; x <= MaxX; x++) { - for (int y = MinY; y <= MaxY; y++) { - for (int z = MinZ; z <= MaxZ; z++) { - locations.add(new Location(minLocation.getWorld(), x, y, z)); - } - } - } - - return locations; - } - - public static boolean isInsideArea(Location targetLocation, Location minLocation, Location maxLocation) { - int MinX = Math.min(maxLocation.getBlockX(), minLocation.getBlockX()); - int MinY = Math.min(maxLocation.getBlockY(), minLocation.getBlockY()); - int MinZ = Math.min(maxLocation.getBlockZ(), minLocation.getBlockZ()); - - int MaxX = Math.max(maxLocation.getBlockX(), minLocation.getBlockX()); - int MaxY = Math.max(maxLocation.getBlockY(), minLocation.getBlockY()); - int MaxZ = Math.max(maxLocation.getBlockZ(), minLocation.getBlockZ()); - - if (MinX < targetLocation.getX() && MaxX > targetLocation.getX() && MinY < targetLocation.getY() - && MaxY > targetLocation.getY() && MinZ < targetLocation.getZ() && MaxZ > targetLocation.getZ()) { - return true; - } else { - return false; - } - } - - public static Location getHighestBlock(Location location) { - for (int y = location.getWorld().getMaxHeight(); y > 0; y--) { - location.setY(y); - - Block block = location.getBlock(); - - if (!(block.getType() == Material.AIR)) { - return location; - } - } - - return location; - } - - public static int getYSurface(Location location, boolean isNether) { - int maxY = 0; - boolean followY = false; - - for (int y = 0; y < location.getWorld().getMaxHeight(); y++) { - Location loc = new Location(location.getWorld(), location.getBlockX(), y, location.getBlockZ()); - Block block = loc.getBlock().getRelative(BlockFace.UP); - - if (isNether) { - if (y < 127 && (block.getType() == Material.LAVA - || block.getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() - || block.getType() == Material.AIR)) { - maxY = y; - break; - } - } else { - if (block.getType() == Materials.OAK_LEAVES.parseMaterial() - || block.getType() == Materials.ACACIA_LEAVES.parseMaterial()) { - break; - } - - if (block.getType() == Material.AIR - || block.getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() - || block.getType() == Material.WATER - || block.getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() - || block.getType() == Material.LAVA) { - if (!followY) { - maxY = y; - followY = true; - } - } else { - followY = false; - maxY = 0; - } - } - } - - return maxY; - } - - public static double rotateYaw(double a, double b) throws Exception { - if (a < -180 || a > 180) { - throw new Exception(); - } - - double c = a + b; - return (c > 180) ? -(c - 180) : 180 - c; - } - - public static double rotatePitch(double a, double b) throws Exception { - if (a < -90 || a > 90) { - throw new Exception(); - } - - double c = a + b; - return (c > 90) ? -(c - 90) : 90 - c; - } - - public static Location rotateLocation(Location location, BlockDegreesType blockTypeDegrees) { - if (blockTypeDegrees == BlockDegreesType.ROTATE_90) { - return VectorUtil.rotateAroundAxisY(location.toVector(), 90).toLocation(location.getWorld()); - } else if (blockTypeDegrees == BlockDegreesType.ROTATE_180) { - return VectorUtil.rotateAroundAxisY(location.toVector(), 180).toLocation(location.getWorld()); - } else if (blockTypeDegrees == BlockDegreesType.ROTATE_270) { - return VectorUtil.rotateAroundAxisY(location.toVector(), 270).toLocation(location.getWorld()); - } else { - return location; - } - } - - public static void teleportPlayerToSpawn(Player player) { - SkyBlock skyblock = SkyBlock.getInstance(); - - IslandManager islandManager = skyblock.getIslandManager(); - WorldManager worldManager = skyblock.getWorldManager(); - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); - - if (config.getFileConfiguration().getString("Location.Spawn") == null) { - Bukkit.getServer().getLogger().log(Level.WARNING, "SkyBlock | Error: A spawn point hasn't been set."); - } else { - Location spawnLocation = getSpawnLocation(); - - if (spawnLocation == null) { - Bukkit.getServer().getLogger().log(Level.WARNING, - "SkyBlock | Error: The location for the spawn point could not be found."); - - return; - } - - // If the spawn point is at an island, load that island - if (worldManager.isIslandWorld(spawnLocation.getWorld())) { - Island island = islandManager.getIslandAtLocation(spawnLocation); - if (island == null) { - islandManager.loadIslandAtLocation(spawnLocation); - } - } - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> { - player.teleport(spawnLocation); - player.setFallDistance(0.0F); - }); - } - } - - public static Location getSpawnLocation() { - SkyBlock skyblock = SkyBlock.getInstance(); - - FileManager fileManager = skyblock.getFileManager(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); - - if (config.getFileConfiguration().getString("Location.Spawn") != null) { - Location location = fileManager.getLocation(config, "Location.Spawn", true); - - if (location != null && location.getWorld() != null) { - return location; - } - } - - return null; - } - - public static Location getRandomLocation(World world, int xRange, int zRange, boolean loadChunk, - boolean ignoreLiquid) { - Random rnd = new Random(); - - int rndX = (int) rnd.nextInt(xRange); - int rndZ = (int) rnd.nextInt(zRange); - - if (loadChunk) { - Chunk chunk = world.getChunkAt(new Location(world, rndX, 10, rndZ)); - world.loadChunk(chunk); - } - - double rndY = -1; - - if (world.getEnvironment() == Environment.NETHER) { - for (int i = 120; i > 0; i--) { - Location rndLoc = new Location(world, rndX, i, rndZ); - - if (rndLoc.getBlock().getType() != Material.AIR - && rndLoc.clone().add(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.AIR - && rndLoc.clone().add(0.0D, 2.0D, 0.0D).getBlock().getType() == Material.AIR - && rndLoc.clone().add(0.0D, 3.0D, 0.0D).getBlock().getType() == Material.AIR - && rndLoc.clone().add(0.0D, 4.0D, 0.0D).getBlock().getType() == Material.AIR) { - rndY = i; - - break; - } - } - - if (rndY == -1) { - return getRandomLocation(world, xRange, zRange, loadChunk, ignoreLiquid); - } - } else { - rndY = world.getHighestBlockYAt(rndX, rndZ); - } - - Location rndLoc = new Location(world, rndX, rndY, rndZ); - - if (ignoreLiquid && rndLoc.getBlock().isLiquid() || rndLoc.getBlock().getRelative(BlockFace.DOWN).isLiquid()) { - return getRandomLocation(world, xRange, zRange, loadChunk, ignoreLiquid); - } else { - return rndLoc; - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/WorldBorder.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/WorldBorder.java deleted file mode 100644 index 6a8410d2..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/WorldBorder.java +++ /dev/null @@ -1,90 +0,0 @@ -package me.goodandevil.skyblock.utils.world; - -import me.goodandevil.skyblock.utils.version.NMSUtil; -import org.bukkit.Location; -import org.bukkit.entity.Player; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class WorldBorder { - - private static Class packetPlayOutWorldBorder, packetPlayOutWorldBorderEnumClass, worldBorderClass, - craftWorldClass; - private static Constructor packetPlayOutWorldBorderConstructor; - - static { - try { - packetPlayOutWorldBorder = NMSUtil.getNMSClass("PacketPlayOutWorldBorder"); - - if (NMSUtil.getVersionNumber() > 10) { - packetPlayOutWorldBorderEnumClass = packetPlayOutWorldBorder.getDeclaredClasses()[0]; - } else { - packetPlayOutWorldBorderEnumClass = packetPlayOutWorldBorder.getDeclaredClasses()[1]; - } - - worldBorderClass = NMSUtil.getNMSClass("WorldBorder"); - craftWorldClass = NMSUtil.getCraftClass("CraftWorld"); - - packetPlayOutWorldBorderConstructor = packetPlayOutWorldBorder.getConstructor(worldBorderClass, - packetPlayOutWorldBorderEnumClass); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void send(Player player, Color color, double size, Location centerLocation) { - try { - if (centerLocation == null || centerLocation.getWorld() == null) - return; - - if (size % 2 == 1) - size++; - - Object worldBorder = worldBorderClass.getConstructor().newInstance(); - - if (NMSUtil.getVersionNumber() < 9) { - Field borderSize = worldBorder.getClass().getDeclaredField("d"); - borderSize.setAccessible(true); - borderSize.set(worldBorder, size); - } else { - Object craftWorld = craftWorldClass.cast(centerLocation.getWorld()); - Method getHandleMethod = craftWorld.getClass().getMethod("getHandle", new Class[0]); - Object worldServer = getHandleMethod.invoke(craftWorld, new Object[0]); - NMSUtil.setField(worldBorder, "world", worldServer, false); - } - - Method setCenter = worldBorder.getClass().getMethod("setCenter", double.class, double.class); - setCenter.invoke(worldBorder, centerLocation.getBlockX(), centerLocation.getBlockZ()); - - Method setSize = worldBorder.getClass().getMethod("setSize", double.class); - setSize.invoke(worldBorder, size); - - Method setWarningTime = worldBorder.getClass().getMethod("setWarningTime", int.class); - setWarningTime.invoke(worldBorder, 0); - - Method transitionSizeBetween = worldBorder.getClass().getMethod("transitionSizeBetween", double.class, - double.class, long.class); - - if (color == Color.Green) { - transitionSizeBetween.invoke(worldBorder, size - 0.1D, size, 20000000L); - } else if (color == Color.Red) { - transitionSizeBetween.invoke(worldBorder, size, size - 1.0D, 20000000L); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - Object packet = packetPlayOutWorldBorderConstructor.newInstance(worldBorder, - Enum.valueOf((Class) packetPlayOutWorldBorderEnumClass, "INITIALIZE")); - NMSUtil.sendPacket(player, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public enum Color { - - Blue, Green, Red; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockData.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockData.java deleted file mode 100644 index 4fa58411..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockData.java +++ /dev/null @@ -1,317 +0,0 @@ -package me.goodandevil.skyblock.utils.world.block; - -import org.bukkit.Color; -import org.bukkit.Material; -import org.bukkit.SkullType; -import org.bukkit.block.Biome; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.EntityType; -import org.bukkit.potion.PotionEffectType; - -import me.goodandevil.skyblock.utils.version.Materials; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("deprecation") -public class BlockData { - - private String material = Material.AIR.toString(); - private String blockData = ""; - private String biome = Biome.PLAINS.toString(); - private String stateType = BlockStateType.NORMAL.toString(); - private String dataType = BlockDataType.NORMAL.toString(); - private String baseColor = Color.WHITE.toString(); - private String potionEffect = PotionEffectType.SPEED.toString(); - private String command = ""; - private String commandBlockName = ""; - private String entity = EntityType.COW.toString(); - private String exitLocation = ""; - private String flower = Materials.RED_DYE.parseMaterial().toString() + ":0"; - private String playing = Materials.MUSIC_DISC_CHIRP.parseMaterial().toString(); - private String[] signLines = {}; - private String rotateFace = BlockFace.NORTH.toString(); - private String skullOwner = "Notch"; - private String skullType = SkullType.PLAYER.toString(); - private String facing; - - private Map inventory = new HashMap<>(); - - private int version; - private int x = 0; - private int y = 0; - private int z = 0; - private int brewingTime = 0; - private int fuelLevel = 0; - private int delay = 0; - - private byte data = (byte) 0; - - private short burnTime = (short) 0; - private short cookTime = (short) 0; - - private List patterns = new ArrayList<>(); - - private boolean exactTeleport = true; - - public BlockData(String material, byte data, int x, int y, int z, String biome) { - this.material = material; - this.data = data; - - this.x = x; - this.y = y; - this.z = z; - - this.biome = biome; - } - - public String getMaterial() { - return this.material; - } - - public void setMaterial(String material) { - this.material = material; - } - - public String getBlockData() { - return blockData; - } - - public void setBlockData(String blockData) { - this.blockData = blockData; - } - - public String getBiome() { - return this.biome; - } - - public void setBiome(String biome) { - this.biome = biome; - } - - public String getStateType() { - return this.stateType; - } - - public void setStateType(String stateType) { - this.stateType = stateType; - } - - public String getDataType() { - return this.dataType; - } - - public void setDataType(String dataType) { - this.dataType = dataType; - } - - public String getBaseColor() { - return this.baseColor; - } - - public void setBaseColor(String baseColor) { - this.baseColor = baseColor; - } - - public String getPotionEffect() { - return this.potionEffect; - } - - public void setPotionEffect(String potionEffect) { - this.potionEffect = potionEffect; - } - - public Map getInventory() { - return this.inventory; - } - - public void addItem(int slot, String is) { - this.inventory.put(slot, is); - } - - public String getCommand() { - return this.command; - } - - public void setCommand(String command) { - this.command = command; - } - - public String getCommandBlockName() { - return this.commandBlockName; - } - - public void setCommandBlockName(String commandBlockName) { - this.commandBlockName = commandBlockName; - } - - public String getEntity() { - return this.entity; - } - - public void setEntity(String entity) { - this.entity = entity; - } - - public String getExitLocation() { - return this.exitLocation; - } - - public void setExitLocation(String exitLocation) { - this.exitLocation = exitLocation; - } - - public String getFlower() { - return this.flower; - } - - public void setFlower(String flower) { - this.flower = flower; - } - - public String getPlaying() { - return this.playing; - } - - public void setPlaying(String playing) { - this.playing = playing; - } - - public String[] getSignLines() { - return this.signLines; - } - - public void setSignLines(String[] signLines) { - this.signLines = signLines; - } - - public String getRotateFace() { - return this.rotateFace; - } - - public void setRotateFace(String rotateFace) { - this.rotateFace = rotateFace; - } - - public String getSkullOwner() { - return this.skullOwner; - } - - public void setSkullOwner(String skullOwner) { - this.skullOwner = skullOwner; - } - - public String getSkullType() { - return this.skullType; - } - - public void setSkullType(String skullType) { - this.skullType = skullType; - } - - public String getFacing() { - return this.facing; - } - - public void setFacing(String facing) { - this.facing = facing; - } - - public int getVersion() { - return version; - } - - public void setVersion(int version) { - this.version = version; - } - - public int getX() { - return this.x; - } - - public void setX(int x) { - this.x = x; - } - - public int getY() { - return this.y; - } - - public void setY(int y) { - this.y = y; - } - - public int getZ() { - return this.z; - } - - public void setZ(int z) { - this.z = z; - } - - public int getBrewingTime() { - return this.brewingTime; - } - - public void setBrewingTime(int brewingTime) { - this.brewingTime = brewingTime; - } - - public int getFuelLevel() { - return this.fuelLevel; - } - - public void setFuelLevel(int fuelLevel) { - this.fuelLevel = fuelLevel; - } - - public int getDelay() { - return this.delay; - } - - public void setDelay(int delay) { - this.delay = delay; - } - - public byte getData() { - return this.data; - } - - public void setData(byte data) { - this.data = data; - } - - public short getBurnTime() { - return this.burnTime; - } - - public void setBurnTime(short burnTime) { - this.burnTime = burnTime; - } - - public short getCookTime() { - return this.cookTime; - } - - public void setCookTime(short cookTime) { - this.cookTime = cookTime; - } - - public List getPatterns() { - return patterns; - } - - public void setPatterns(List patterns) { - this.patterns = patterns; - } - - public boolean isExactTeleport() { - return this.exactTeleport; - } - - public void setExactTeleport(boolean exactTeleport) { - this.exactTeleport = exactTeleport; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockDataType.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockDataType.java deleted file mode 100644 index dc8ff947..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockDataType.java +++ /dev/null @@ -1,6 +0,0 @@ -package me.goodandevil.skyblock.utils.world.block; - -public enum BlockDataType { - - NORMAL, STAIRS, FLOWERPOT; -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockDegreesType.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockDegreesType.java deleted file mode 100644 index 0c6f9c11..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockDegreesType.java +++ /dev/null @@ -1,16 +0,0 @@ -package me.goodandevil.skyblock.utils.world.block; - -public enum BlockDegreesType { - - ROTATE_90(90F), ROTATE_180(180F), ROTATE_270(270F), ROTATE_360(360F); - - private float angle; - - BlockDegreesType(float angle) { - this.angle = angle; - } - - public float getAngle() { - return angle; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockStateType.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockStateType.java deleted file mode 100644 index 35150daf..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockStateType.java +++ /dev/null @@ -1,8 +0,0 @@ -package me.goodandevil.skyblock.utils.world.block; - -public enum BlockStateType { - - NORMAL, BANNER, BEACON, BREWINGSTAND, COMMANDBLOCK, CHEST, DISPENSER, DROPPER, HOPPER, SHULKERBOX, CREATURESPAWNER, - ENDGATEWAY, FURNACE, JUKEBOX, SIGN, SKULL, DOUBLECHEST - -} \ No newline at end of file diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockUtil.java deleted file mode 100644 index 5518863a..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/block/BlockUtil.java +++ /dev/null @@ -1,572 +0,0 @@ -package me.goodandevil.skyblock.utils.world.block; - -import java.lang.reflect.Field; -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; -import org.bukkit.SkullType; -import org.bukkit.World; -import org.bukkit.block.*; -import org.bukkit.block.Banner; -import org.bukkit.block.banner.Pattern; -import org.bukkit.block.banner.PatternType; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.bukkit.material.MaterialData; -import org.bukkit.material.Stairs; -import org.bukkit.potion.PotionEffectType; - -import me.goodandevil.skyblock.utils.item.ItemStackUtil; -import me.goodandevil.skyblock.utils.version.Materials; -import me.goodandevil.skyblock.utils.version.NMSUtil; - -@SuppressWarnings("deprecation") -public final class BlockUtil { - - public static BlockData convertBlockToBlockData(Block block, int x, int y, int z) { - BlockData blockData = new BlockData(block.getType().toString(), block.getData(), x, y, z, - block.getBiome().toString()); - - int NMSVersion = NMSUtil.getVersionNumber(); - blockData.setVersion(NMSVersion); - - if (NMSVersion > 12) { - blockData.setBlockData(block.getBlockData().getAsString()); - } - - BlockState blockState = block.getState(); - MaterialData materialData = blockState.getData(); - - if (blockState instanceof Banner) { - Banner banner = (Banner) blockState; - blockData.setBaseColor(banner.getBaseColor().toString()); - - List patterns = new ArrayList<>(); - - for (Pattern patternList : banner.getPatterns()) { - patterns.add(patternList.getPattern().toString() + ":" + patternList.getColor().toString()); - } - - blockData.setPatterns(patterns); - blockData.setStateType(BlockStateType.BANNER.toString()); - } else if (blockState instanceof Beacon) { - Beacon beacon = (Beacon) blockState; - String primaryEffectName = beacon.getPrimaryEffect() != null ? beacon.getPrimaryEffect().toString() : "null"; - String secondaryEffectName = beacon.getSecondaryEffect() != null ? beacon.getSecondaryEffect().toString() : "null"; - - blockData.setPotionEffect(primaryEffectName + ":" + secondaryEffectName); - blockData.setStateType(BlockStateType.BEACON.toString()); - } else if (blockState instanceof BrewingStand) { - BrewingStand brewingStand = (BrewingStand) blockState; - blockData.setBrewingTime(brewingStand.getBrewingTime()); - blockData.setFuelLevel(brewingStand.getFuelLevel()); - blockData.setStateType(BlockStateType.BREWINGSTAND.toString()); - } else if (blockState instanceof Furnace) { - Furnace furnace = (Furnace) blockState; - blockData.setBurnTime(furnace.getBurnTime()); - blockData.setCookTime(furnace.getCookTime()); - - for (int i = 0; i < furnace.getInventory().getSize(); i++) { - ItemStack is = furnace.getInventory().getItem(i); - - if (is != null && is.getType() != Material.AIR) { - blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); - } - } - - blockData.setStateType(BlockStateType.FURNACE.toString()); - } else if (blockState instanceof Chest) { - Chest chest = (Chest) blockState; - - for (int i = 0; i < chest.getInventory().getSize(); i++) { - ItemStack is = chest.getInventory().getItem(i); - - if (is != null && is.getType() != Material.AIR) { - blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); - } - } - - blockData.setStateType(BlockStateType.CHEST.toString()); - } else if (blockState instanceof Dispenser) { - Dispenser dispenser = (Dispenser) blockState; - - for (int i = 0; i < dispenser.getInventory().getSize(); i++) { - ItemStack is = dispenser.getInventory().getItem(i); - - if (is != null && is.getType() != Material.AIR) { - blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); - } - } - - blockData.setStateType(BlockStateType.DISPENSER.toString()); - } else if (blockState instanceof Dropper) { - Dropper dropper = (Dropper) blockState; - - for (int i = 0; i < dropper.getInventory().getSize(); i++) { - ItemStack is = dropper.getInventory().getItem(i); - - if (is != null && is.getType() != Material.AIR) { - blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); - } - } - - blockData.setStateType(BlockStateType.DROPPER.toString()); - } else if (blockState instanceof Hopper) { - Hopper hopper = (Hopper) blockState; - - for (int i = 0; i < hopper.getInventory().getSize(); i++) { - ItemStack is = hopper.getInventory().getItem(i); - - if (is != null && is.getType() != Material.AIR) { - blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); - } - } - - blockData.setStateType(BlockStateType.HOPPER.toString()); - } else if (blockState instanceof CommandBlock) { - CommandBlock commandBlock = (CommandBlock) blockState; - blockData.setCommand(commandBlock.getCommand()); - blockData.setCommandBlockName(commandBlock.getName()); - blockData.setStateType(BlockStateType.COMMANDBLOCK.toString()); - } else if (blockState instanceof CreatureSpawner) { - CreatureSpawner creatureSpawner = (CreatureSpawner) blockState; - - if (creatureSpawner.getSpawnedType() != null) { - blockData.setEntity(creatureSpawner.getSpawnedType().toString()); - } - - blockData.setDelay(creatureSpawner.getDelay()); - blockData.setStateType(BlockStateType.CREATURESPAWNER.toString()); - } else if (blockState instanceof Jukebox) { - Jukebox jukebox = (Jukebox) blockState; - - if (jukebox.getPlaying() != null) { - blockData.setPlaying(jukebox.getPlaying().toString()); - } - - blockData.setStateType(BlockStateType.JUKEBOX.toString()); - } else if (blockState instanceof Sign) { - Sign sign = (Sign) blockState; - - String[] signLines = sign.getLines(); - - if (signLines != null) { - List 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; - blockData.setSkullOwner(skull.getOwner()); - blockData.setSkullType(skull.getSkullType().toString()); - blockData.setRotateFace(skull.getRotation().toString()); - blockData.setStateType(BlockStateType.SKULL.toString()); - } else { - if (NMSVersion > 8) { - if (blockState instanceof EndGateway) { - EndGateway endGateway = (EndGateway) blockState; - blockData.setExactTeleport(endGateway.isExactTeleport()); - - Location location = endGateway.getExitLocation(); - blockData.setExitLocation(location.getX() + ":" + location.getY() + ":" + location.getZ() + ":" - + location.getWorld().getName()); - blockData.setStateType(BlockStateType.ENDGATEWAY.toString()); - } - - if (NMSVersion > 10) { - if (blockState instanceof ShulkerBox) { - ShulkerBox shulkerBox = (ShulkerBox) blockState; - - for (int i = 0; i < shulkerBox.getInventory().getSize(); i++) { - ItemStack is = shulkerBox.getInventory().getItem(i); - - if (is != null && is.getType() != Material.AIR) { - blockData.addItem(i, ItemStackUtil.serializeItemStack(is)); - } - } - - blockData.setStateType(BlockStateType.SHULKERBOX.toString()); - } - } - } - } - - if (materialData instanceof Stairs) { - blockData.setFacing(((Stairs) materialData).getFacing().toString()); - blockData.setDataType(BlockDataType.STAIRS.toString()); - } else if (materialData instanceof org.bukkit.material.FlowerPot) { - if (NMSVersion >= 8 && NMSVersion <= 12) { - try { - World world = block.getWorld(); - - Class blockPositionClass = NMSUtil.getNMSClass("BlockPosition"); - - Object worldHandle = world.getClass().getMethod("getHandle").invoke(world); - Object blockPosition = blockPositionClass.getConstructor(int.class, int.class, int.class) - .newInstance(block.getX(), block.getY(), block.getZ()); - Object tileEntity = worldHandle.getClass().getMethod("getTileEntity", blockPositionClass) - .invoke(worldHandle, blockPosition); - - Field aField = tileEntity.getClass().getDeclaredField("a"); - aField.setAccessible(true); - - Object item = aField.get(tileEntity); - - if (item != null) { - Object itemStackNMS = NMSUtil.getNMSClass("ItemStack") - .getConstructor(NMSUtil.getNMSClass("Item")).newInstance(item); - - ItemStack itemStack = (ItemStack) NMSUtil.getCraftClass("inventory.CraftItemStack") - .getMethod("asBukkitCopy", itemStackNMS.getClass()).invoke(null, itemStackNMS); - - Field fField = tileEntity.getClass().getDeclaredField("f"); - fField.setAccessible(true); - - int data = (int) fField.get(tileEntity); - - blockData.setFlower(itemStack.getType().name() + ":" + data); - } - } catch (Exception e) { - e.printStackTrace(); - } - } else { - org.bukkit.material.FlowerPot flowerPot = (org.bukkit.material.FlowerPot) materialData; - - if (flowerPot.getContents() != null && flowerPot.getContents().getItemType() != Material.AIR) { - blockData.setFlower( - flowerPot.getContents().getItemType().toString() + ":" + flowerPot.getContents().getData()); - } - } - - blockData.setDataType(BlockDataType.FLOWERPOT.toString()); - } - - return blockData; - } - - public static void convertBlockDataToBlock(Block block, BlockData blockData) { - int NMSVersion = NMSUtil.getVersionNumber(); - - Material material = null; - - if (NMSVersion > 12 && blockData.getVersion() > 12 && blockData.getBlockData() != null) { - block.setBlockData(Bukkit.getServer().createBlockData(blockData.getBlockData())); - } else { - material = me.goodandevil.skyblock.utils.item.MaterialUtil.getMaterial(NMSVersion, blockData.getVersion(), - blockData.getMaterial(), block.getData()); - setBlockFast(block.getWorld(), block.getX(), block.getY(), block.getZ(), material, blockData.getData()); - } - - // TODO Create a class to support biome changes - // block.setBiome(Biome.valueOf(blockData.getBiome().toUpperCase())); - - BlockStateType blockTypeState = BlockStateType.valueOf(blockData.getStateType()); - - if (blockTypeState == BlockStateType.BANNER) { - Banner banner = (Banner) block.getState(); - banner.setBaseColor(DyeColor.valueOf(blockData.getBaseColor().toUpperCase())); - - for (String patternList : blockData.getPatterns()) { - String[] pattern = patternList.split(":"); - banner.addPattern(new Pattern(DyeColor.valueOf(pattern[1].toUpperCase()), - PatternType.valueOf(pattern[0].toUpperCase()))); - } - } else if (blockTypeState == BlockStateType.BEACON) { - Beacon beacon = (Beacon) block.getState(); - String[] potionEffect = blockData.getPotionEffect().split(":"); - if (!potionEffect[0].equals("null")) { - beacon.setPrimaryEffect(PotionEffectType.getByName(potionEffect[0].toUpperCase())); - } - - if (!potionEffect[1].equals("null")) { - beacon.setSecondaryEffect(PotionEffectType.getByName(potionEffect[1].toUpperCase())); - } - } else if (blockTypeState == BlockStateType.BREWINGSTAND) { - BrewingStand brewingStand = (BrewingStand) block.getState(); - brewingStand.setBrewingTime(blockData.getBrewingTime()); - brewingStand.setFuelLevel(blockData.getFuelLevel()); - } else if (blockTypeState == BlockStateType.COMMANDBLOCK) { - CommandBlock commandBlock = (CommandBlock) block.getState(); - commandBlock.setCommand(blockData.getCommand()); - commandBlock.setName(blockData.getCommandBlockName()); - } else if (blockTypeState == BlockStateType.CHEST) { - Chest chest = (Chest) block.getState(); - - for (Integer slotList : blockData.getInventory().keySet()) { - if (slotList < chest.getInventory().getSize()) { - ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); - chest.getInventory().setItem(slotList, is); - } - } - } else if (blockTypeState == BlockStateType.DISPENSER) { - Dispenser dispenser = (Dispenser) block.getState(); - - for (Integer slotList : blockData.getInventory().keySet()) { - if (slotList < dispenser.getInventory().getSize()) { - ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); - dispenser.getInventory().setItem(slotList, is); - } - } - } else if (blockTypeState == BlockStateType.DROPPER) { - Dropper dropper = (Dropper) block.getState(); - - for (Integer slotList : blockData.getInventory().keySet()) { - if (slotList < dropper.getInventory().getSize()) { - ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); - dropper.getInventory().setItem(slotList, is); - } - } - } else if (blockTypeState == BlockStateType.HOPPER) { - Hopper hopper = (Hopper) block.getState(); - - for (Integer slotList : blockData.getInventory().keySet()) { - if (slotList < hopper.getInventory().getSize()) { - ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); - hopper.getInventory().setItem(slotList, is); - } - } - } else if (blockTypeState == BlockStateType.CREATURESPAWNER) { - CreatureSpawner creatureSpawner = (CreatureSpawner) block.getState(); - - if (blockData.getEntity() != null) { - creatureSpawner.setSpawnedType(EntityType.valueOf(blockData.getEntity().toUpperCase())); - } - - creatureSpawner.setDelay(blockData.getDelay()); - } else if (blockTypeState == BlockStateType.FURNACE) { - Furnace furnace = (Furnace) block.getState(); - furnace.setBurnTime(blockData.getBurnTime()); - furnace.setCookTime(blockData.getCookTime()); - - for (Integer slotList : blockData.getInventory().keySet()) { - if (slotList < furnace.getInventory().getSize()) { - ItemStack is = ItemStackUtil.deserializeItemStack(blockData.getInventory().get(slotList)); - furnace.getInventory().setItem(slotList, is); - } - } - } else if (blockTypeState == BlockStateType.JUKEBOX) { - Jukebox jukebox = (Jukebox) block.getState(); - - if (blockData.getPlaying() != null) { - jukebox.setPlaying(Material.valueOf(blockData.getPlaying().toUpperCase())); - } - } else if (blockTypeState == BlockStateType.SIGN) { - Sign sign = (Sign) block.getState(); - - for (int i = 0; i < blockData.getSignLines().length; i++) { - sign.setLine(i, ChatColor.translateAlternateColorCodes('&', blockData.getSignLines()[i])); - } - } else if (blockTypeState == BlockStateType.SKULL) { - Skull skull = (Skull) block.getState(); - - skull.setRotation(BlockFace.valueOf(blockData.getRotateFace().toUpperCase())); - skull.setSkullType(SkullType.valueOf(blockData.getSkullType().toUpperCase())); - - if (NMSVersion > 9) { - skull.setOwningPlayer(Bukkit.getServer().getOfflinePlayer(blockData.getSkullOwner())); - } else { - skull.setOwner(blockData.getSkullOwner()); - } - } else { - if (NMSVersion > 8) { - if (blockTypeState == BlockStateType.ENDGATEWAY) { - EndGateway endGateway = (EndGateway) block.getState(); - endGateway.setExactTeleport(blockData.isExactTeleport()); - - String[] exitLocation = blockData.getExitLocation().split(":"); - World exitLocationWorld = Bukkit.getServer().getWorld(exitLocation[3]); - - double exitLocationX = Double.parseDouble(exitLocation[0]); - double exitLocationY = Double.parseDouble(exitLocation[1]); - double exitLocationZ = Double.parseDouble(exitLocation[2]); - - endGateway.setExitLocation( - new Location(exitLocationWorld, exitLocationX, exitLocationY, exitLocationZ)); - } - - if (NMSVersion > 9) { - if (NMSVersion > 10) { - if (blockTypeState == BlockStateType.SHULKERBOX) { - ShulkerBox shulkerBox = (ShulkerBox) block.getState(); - - for (Integer slotList : blockData.getInventory().keySet()) { - if (slotList < shulkerBox.getInventory().getSize()) { - ItemStack is = ItemStackUtil - .deserializeItemStack(blockData.getInventory().get(slotList)); - shulkerBox.getInventory().setItem(slotList, is); - } - } - } - } - } - } - } - - BlockDataType blockDataType = BlockDataType.valueOf(blockData.getDataType()); - - if (blockDataType == BlockDataType.STAIRS) { - Stairs stairs = (Stairs) block.getState().getData(); - stairs.setFacingDirection(BlockFace.valueOf(blockData.getFacing())); - block.getState().setData(stairs); - } else if (blockDataType == BlockDataType.FLOWERPOT) { - if (NMSVersion >= 8 && NMSVersion <= 12) { - if (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.AIR) { - setBlockFast(block.getWorld(), block.getX(), block.getY() - 1, block.getZ(), Material.STONE, - (byte) 0); - } - - if (blockData.getFlower() != null && !blockData.getFlower().isEmpty()) { - try { - String[] flower = blockData.getFlower().split(":"); - int materialData = Integer.parseInt(flower[1]); - - material = me.goodandevil.skyblock.utils.item.MaterialUtil.getMaterial(NMSVersion, - blockData.getVersion(), flower[0].toUpperCase(), materialData); - - if (material != null) { - ItemStack is = new ItemStack(material, 1, (byte) materialData); - - World world = block.getWorld(); - - Class blockPositionClass = NMSUtil.getNMSClass("BlockPosition"); - - Object worldHandle = world.getClass().getMethod("getHandle").invoke(world); - Object blockPosition = blockPositionClass.getConstructor(int.class, int.class, int.class) - .newInstance(block.getX(), block.getY(), block.getZ()); - Object tileEntity = worldHandle.getClass().getMethod("getTileEntity", blockPositionClass) - .invoke(worldHandle, blockPosition); - Object itemStack = NMSUtil.getCraftClass("inventory.CraftItemStack") - .getMethod("asNMSCopy", is.getClass()).invoke(null, is); - Object item = itemStack.getClass().getMethod("getItem").invoke(itemStack); - Object data = itemStack.getClass().getMethod("getData").invoke(itemStack); - - Field aField = tileEntity.getClass().getDeclaredField("a"); - aField.setAccessible(true); - aField.set(tileEntity, item); - - Field fField = tileEntity.getClass().getDeclaredField("f"); - fField.setAccessible(true); - fField.set(tileEntity, data); - - tileEntity.getClass().getMethod("update").invoke(tileEntity); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } else { - if (blockData.getFlower() != null && !blockData.getFlower().isEmpty()) { - org.bukkit.material.FlowerPot flowerPot = (org.bukkit.material.FlowerPot) block.getState() - .getData(); - String[] flower = blockData.getFlower().split(":"); - material = null; - - if (blockData.getVersion() > 12) { - if (NMSVersion > 12) { - material = Material.valueOf(flower[0].toUpperCase()); - } - } else { - if (NMSVersion < 13) { - material = Material.valueOf(flower[0].toUpperCase()); - } - } - - if (material != null) { - flowerPot.setContents(new MaterialData(material, (byte) Integer.parseInt(flower[1]))); - } - - block.getState().setData(flowerPot); - } - } - } - - if (NMSVersion < 13) { - block.getState().update(); - } - - if (blockData.getMaterial().equals("DOUBLE_PLANT")) { - Block topBlock = block.getLocation().clone().add(0.0D, 1.0D, 0.0D).getBlock(); - Block bottomBlock = block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock(); - - if (bottomBlock.getType() == Material.AIR && !topBlock.getType().name().equals("DOUBLE_PLANT")) { - bottomBlock.setType(Materials.LEGACY_DOUBLE_PLANT.getPostMaterial()); - - if (NMSVersion < 13) { - try { - bottomBlock.getClass().getMethod("setData", byte.class).invoke(bottomBlock, (byte) 2); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - } - - public static List getNearbyBlocks(Location loc, int rx, int ry, int rz) { - List nearbyBlocks = new ArrayList<>(); - - for (int x = -(rx); x <= rx; x++) { - for (int y = -(ry); y <= ry; y++) { - for (int z = -(rz); z <= rz; z++) { - nearbyBlocks.add( - new Location(loc.getWorld(), loc.getX() + x, loc.getY() + y, loc.getZ() + z).getBlock()); - } - } - } - - return nearbyBlocks; - } - - private static void setBlockFast(World world, int x, int y, int z, Material material, byte data) { - try { - Class IBlockDataClass = NMSUtil.getNMSClass("IBlockData"); - - Object worldHandle = world.getClass().getMethod("getHandle").invoke(world); - Object chunk = worldHandle.getClass().getMethod("getChunkAt", int.class, int.class).invoke(worldHandle, - x >> 4, z >> 4); - Object blockPosition = NMSUtil.getNMSClass("BlockPosition").getConstructor(int.class, int.class, int.class) - .newInstance(x & 0xF, y, z & 0xF); - - if (NMSUtil.getVersionNumber() > 12) { - Object block = NMSUtil.getNMSClass("Blocks").getField(material.name()).get(null); - Object IBlockData = block.getClass().getMethod("getBlockData").invoke(block); - worldHandle.getClass().getMethod("setTypeAndData", blockPosition.getClass(), IBlockDataClass, int.class) - .invoke(worldHandle, blockPosition, IBlockData, 2); - - try { - chunk.getClass().getMethod("a", blockPosition.getClass(), IBlockDataClass, boolean.class) - .invoke(chunk, blockPosition, IBlockData, true); - } catch (Exception e) { - chunk.getClass().getMethod("setType", blockPosition.getClass(), IBlockDataClass, boolean.class) - .invoke(chunk, blockPosition, IBlockData, true); - } - } else { - Object IBlockData = NMSUtil.getNMSClass("Block").getMethod("getByCombinedId", int.class).invoke(null, - material.getId() + (data << 12)); - worldHandle.getClass().getMethod("setTypeAndData", blockPosition.getClass(), IBlockDataClass, int.class) - .invoke(worldHandle, blockPosition, IBlockData, 3); - chunk.getClass().getMethod("a", blockPosition.getClass(), IBlockDataClass).invoke(chunk, blockPosition, - IBlockData); - } - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/entity/EntityData.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/entity/EntityData.java deleted file mode 100644 index 6a68819e..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/entity/EntityData.java +++ /dev/null @@ -1,594 +0,0 @@ -package me.goodandevil.skyblock.utils.world.entity; - -public class EntityData { - - private String entityType; - private String hand; - private String helmet; - private String chestplate; - private String leggings; - private String boots; - private String bodyPose; - private String headPose; - private String leftArmPose; - private String leftLegPose; - private String rightArmPose; - private String rightLegPose; - private String offHand; - private String woodType; - private String carryBlock; - private String customName; - private String horseColor; - private String horseStyle; - private String item; - private String rotate; - private String llamaColor; - private String ocelotType; - private String art; - private String parrotVariant; - private String rabbitType; - private String profession; - private String color; - - private String[] inventory; - - private double x; - private double y; - private double z; - - private float handChance; - private float offHandChance; - private float helmetChance; - private float chestplateChance; - private float leggingsChance; - private float bootsChance; - private float yaw = 0; - private float pitch = 0; - - private int version; - private int fireTicks; - private int ticksLived; - private int llamaStrength; - private int angerLevel; - private int slimeSize; - private int age; - - private boolean arms; - private boolean basePlate; - private boolean visible; - private boolean small; - private boolean marker; - private boolean awake; - private boolean powered; - private boolean customNameVisible; - private boolean createdByPlayer; - private boolean saddle; - private boolean angry; - private boolean sheared; - private boolean derp; - private boolean ageLock; - private boolean breed; - private boolean ai; - private boolean baby; - - public EntityData(String entityType, double x, double y, double z, String customName, boolean customNameVisible, - int fireTicks, int ticksLived) { - this.entityType = entityType; - - this.x = x; - this.y = y; - this.z = z; - - this.customName = customName; - this.customNameVisible = customNameVisible; - - this.fireTicks = fireTicks; - this.ticksLived = ticksLived; - - this.ai = true; - } - - public String getEntityType() { - return entityType; - } - - public void setEntityType(String entityType) { - this.entityType = entityType; - } - - public String getHand() { - return this.hand; - } - - public void setHand(String hand) { - this.hand = hand; - } - - public String getHelmet() { - return this.helmet; - } - - public void setHelmet(String helmet) { - this.helmet = helmet; - } - - public String getChestplate() { - return this.chestplate; - } - - public void setChestplate(String chestplate) { - this.chestplate = chestplate; - } - - public String getLeggings() { - return this.leggings; - } - - public void setLeggings(String leggings) { - this.leggings = leggings; - } - - public String getBoots() { - return this.boots; - } - - public void setBoots(String boots) { - this.boots = boots; - } - - public String getBodyPose() { - return this.bodyPose; - } - - public void setBodyPose(String bodyPose) { - this.bodyPose = bodyPose; - } - - public String getHeadPose() { - return this.headPose; - } - - public void setHeadPose(String headPose) { - this.headPose = headPose; - } - - public String getLeftArmPose() { - return this.leftArmPose; - } - - public void setLeftArmPose(String leftArmPose) { - this.leftArmPose = leftArmPose; - } - - public String getLeftLegPose() { - return this.leftLegPose; - } - - public void setLeftLegPose(String leftLegPose) { - this.leftLegPose = leftLegPose; - } - - public String getRightArmPose() { - return this.rightArmPose; - } - - public void setRightArmPose(String rightArmPose) { - this.rightArmPose = rightArmPose; - } - - public String getRightLegPose() { - return this.rightLegPose; - } - - public void setRightLegPose(String rightLegPose) { - this.rightLegPose = rightLegPose; - } - - public String getOffHand() { - return this.offHand; - } - - public void setOffHand(String offHand) { - this.offHand = offHand; - } - - public String getWoodType() { - return this.woodType; - } - - public void setWoodType(String woodType) { - this.woodType = woodType; - } - - public String getCarryBlock() { - return this.carryBlock; - } - - public void setCarryBlock(String carryBlock) { - this.carryBlock = carryBlock; - } - - public String getCustomName() { - return this.customName; - } - - public void setCustomName(String customName) { - this.customName = customName; - } - - public String getHorseColor() { - return this.horseColor; - } - - public void setHorseColor(String horseColor) { - this.horseColor = horseColor; - } - - public String getHorseStyle() { - return this.horseStyle; - } - - public void setHorseStyle(String horseStyle) { - this.horseStyle = horseStyle; - } - - public String getItem() { - return this.item; - } - - public void setItem(String item) { - this.item = item; - } - - public String getRotate() { - return this.rotate; - } - - public void setRotate(String rotate) { - this.rotate = rotate; - } - - public String getLlamaColor() { - return this.llamaColor; - } - - public void setLlamaColor(String llamaColor) { - this.llamaColor = llamaColor; - } - - public String getOcelotType() { - return this.ocelotType; - } - - public void setOcelotType(String ocelotType) { - this.ocelotType = ocelotType; - } - - public String getArt() { - return this.art; - } - - public void setArt(String art) { - this.art = art; - } - - public String getParrotVariant() { - return this.parrotVariant; - } - - public void setParrotVariant(String parrotVariant) { - this.parrotVariant = parrotVariant; - } - - public String getRabbitType() { - return this.rabbitType; - } - - public void setRabbitType(String rabbitType) { - this.rabbitType = rabbitType; - } - - public String getProfession() { - return this.profession; - } - - public void setProfession(String profession) { - this.profession = profession; - } - - public String getColor() { - return this.color; - } - - public void setColor(String color) { - this.color = color; - } - - public String[] getInventory() { - return this.inventory; - } - - public void setInventory(String[] inventory) { - this.inventory = inventory; - } - - public double getX() { - return this.x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return this.y; - } - - public void setY(double y) { - this.y = y; - } - - public double getZ() { - return z; - } - - public void setZ(double z) { - this.z = z; - } - - public float getHandChance() { - return this.handChance; - } - - public void setHandChance(float handChance) { - this.handChance = handChance; - } - - public float getOffHandChance() { - return this.offHandChance; - } - - public void setOffHandChange(float offHandChange) { - this.offHandChance = offHandChange; - } - - public float getHelmetChance() { - return this.helmetChance; - } - - public void setHelmetChance(float helmetChance) { - this.helmetChance = helmetChance; - } - - public float getChestplateChance() { - return this.chestplateChance; - } - - public void setChestplateChance(float chestplateChance) { - this.chestplateChance = chestplateChance; - } - - public float getLeggingsChance() { - return this.leggingsChance; - } - - public void setLeggingsChance(float leggingsChance) { - this.leggingsChance = leggingsChance; - } - - public float getBootsChance() { - return this.bootsChance; - } - - public void setBootsChance(float bootsChance) { - this.bootsChance = bootsChance; - } - - public float getYaw() { - return this.yaw; - } - - public void setYaw(float yaw) { - this.yaw = yaw; - } - - public float getPitch() { - return this.pitch; - } - - public void setPitch(float pitch) { - this.pitch = pitch; - } - - public int getVersion() { - return this.version; - } - - public void setVersion(int version) { - this.version = version; - } - - public int getFireTicks() { - return this.fireTicks; - } - - public void setFireTicks(int fireTicks) { - this.fireTicks = fireTicks; - } - - public int getTicksLived() { - return this.ticksLived; - } - - public void setTicksLived(int ticksLived) { - this.ticksLived = ticksLived; - } - - public int getLlamaStrength() { - return this.llamaStrength; - } - - public void setLlamaStrength(int llamaStrength) { - this.llamaStrength = llamaStrength; - } - - public int getAngerLevel() { - return this.angerLevel; - } - - public void setAngerLevel(int angerLevel) { - this.angerLevel = angerLevel; - } - - public int getSlimeSize() { - return this.slimeSize; - } - - public void setSlimeSize(int slimeSize) { - this.slimeSize = slimeSize; - } - - public int getAge() { - return this.age; - } - - public void setAge(int age) { - this.age = age; - } - - public boolean hasArms() { - return this.arms; - } - - public void setArms(boolean arms) { - this.arms = arms; - } - - public boolean hasBasePlate() { - return this.basePlate; - } - - public void setBasePlate(boolean basePlate) { - this.basePlate = basePlate; - } - - public boolean isVisible() { - return this.visible; - } - - public void setVisible(boolean visible) { - this.visible = visible; - } - - public boolean isSmall() { - return this.small; - } - - public void setSmall(boolean small) { - this.small = small; - } - - public boolean isMarker() { - return this.marker; - } - - public void setMarker(boolean marker) { - this.marker = marker; - } - - public boolean isAwake() { - return this.awake; - } - - public void setAwake(boolean awake) { - this.awake = awake; - } - - public boolean isPowered() { - return this.powered; - } - - public void setPowered(boolean powered) { - this.powered = powered; - } - - public boolean isCustomNameVisible() { - return this.customNameVisible; - } - - public void setCustomNameVisible(boolean customNameVisible) { - this.customNameVisible = customNameVisible; - } - - public boolean isCreatedByPlayer() { - return this.createdByPlayer; - } - - public void setCreatedByPlayer(boolean createdByPlayer) { - this.createdByPlayer = createdByPlayer; - } - - public boolean hasSaddle() { - return this.saddle; - } - - public void setSaddle(boolean saddle) { - this.saddle = saddle; - } - - public boolean isAngry() { - return this.angry; - } - - public void setAngry(boolean angry) { - this.angry = angry; - } - - public boolean isSheared() { - return this.sheared; - } - - public void setSheared(boolean sheared) { - this.sheared = sheared; - } - - public boolean isDerp() { - return this.derp; - } - - public void setDerp(boolean derp) { - this.derp = derp; - } - - public boolean isAgeLock() { - return this.ageLock; - } - - public void setAgeLock(boolean ageLock) { - this.ageLock = ageLock; - } - - public boolean canBreed() { - return this.breed; - } - - public void setBreed(boolean breed) { - this.breed = breed; - } - - public boolean hasAI() { - return this.ai; - } - - public void setAI(boolean ai) { - this.ai = ai; - } - - public boolean isBaby() { - return this.baby; - } - - public void setBaby(boolean baby) { - this.baby = baby; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/entity/EntityUtil.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/entity/EntityUtil.java deleted file mode 100644 index 1a1e9119..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/utils/world/entity/EntityUtil.java +++ /dev/null @@ -1,531 +0,0 @@ -package me.goodandevil.skyblock.utils.world.entity; - -import me.goodandevil.skyblock.utils.item.ItemStackUtil; -import me.goodandevil.skyblock.utils.item.MaterialUtil; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.world.block.BlockDegreesType; -import org.bukkit.Art; -import org.bukkit.Bukkit; -import org.bukkit.DyeColor; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.Rotation; -import org.bukkit.TreeSpecies; -import org.bukkit.entity.Ageable; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Bat; -import org.bukkit.entity.Boat; -import org.bukkit.entity.Creeper; -import org.bukkit.entity.Enderman; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Hanging; -import org.bukkit.entity.Horse; -import org.bukkit.entity.IronGolem; -import org.bukkit.entity.ItemFrame; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Llama; -import org.bukkit.entity.Ocelot; -import org.bukkit.entity.Painting; -import org.bukkit.entity.Parrot; -import org.bukkit.entity.Pig; -import org.bukkit.entity.PigZombie; -import org.bukkit.entity.Rabbit; -import org.bukkit.entity.Sheep; -import org.bukkit.entity.Slime; -import org.bukkit.entity.Snowman; -import org.bukkit.entity.Vehicle; -import org.bukkit.entity.Villager; -import org.bukkit.entity.Zombie; -import org.bukkit.entity.minecart.HopperMinecart; -import org.bukkit.entity.minecart.StorageMinecart; -import org.bukkit.inventory.EntityEquipment; -import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.ItemStack; -import org.bukkit.material.Colorable; -import org.bukkit.material.MaterialData; -import org.bukkit.util.EulerAngle; - -import java.util.ArrayList; -import java.util.List; - -@SuppressWarnings("deprecation") -public final class EntityUtil { - - public static EntityData convertEntityToEntityData(Entity entity, int x, int y, int z) { - EntityData entityData = new EntityData(entity.getType().toString(), x, y, z, entity.getCustomName(), - entity.isCustomNameVisible(), entity.getFireTicks(), entity.getTicksLived()); - entityData.setVersion(NMSUtil.getVersionNumber()); - - if (entity instanceof ArmorStand) { - ArmorStand armorStand = (ArmorStand) entity; - entityData.setArms(armorStand.hasArms()); - - if (armorStand.getItemInHand() != null && armorStand.getItemInHand().getType() != Material.AIR) { - entityData.setHand(ItemStackUtil.serializeItemStack(armorStand.getItemInHand())); - } - - if (armorStand.getHelmet() != null && armorStand.getHelmet().getType() != Material.AIR) { - entityData.setHelmet(ItemStackUtil.serializeItemStack(armorStand.getHelmet())); - } - - if (armorStand.getChestplate() != null && armorStand.getChestplate().getType() != Material.AIR) { - entityData.setChestplate(ItemStackUtil.serializeItemStack(armorStand.getChestplate())); - } - - if (armorStand.getLeggings() != null && armorStand.getLeggings().getType() != Material.AIR) { - entityData.setLeggings(ItemStackUtil.serializeItemStack(armorStand.getLeggings())); - } - - if (armorStand.getBoots() != null && armorStand.getBoots().getType() != Material.AIR) { - entityData.setBoots(ItemStackUtil.serializeItemStack(armorStand.getBoots())); - } - - entityData.setBasePlate(armorStand.hasBasePlate()); - entityData.setVisible(armorStand.isVisible()); - entityData.setSmall(armorStand.isSmall()); - entityData.setMarker(armorStand.isMarker()); - entityData.setBodyPose(armorStand.getBodyPose().getX() + " " + armorStand.getBodyPose().getY() + " " - + armorStand.getBodyPose().getZ()); - entityData.setHeadPose(armorStand.getHeadPose().getX() + " " + armorStand.getHeadPose().getY() + " " - + armorStand.getHeadPose().getZ()); - entityData.setLeftArmPose(armorStand.getLeftArmPose().getX() + " " + armorStand.getLeftArmPose().getY() - + " " + armorStand.getLeftArmPose().getZ()); - entityData.setLeftLegPose(armorStand.getLeftLegPose().getX() + " " + armorStand.getLeftLegPose().getY() - + " " + armorStand.getLeftLegPose().getZ()); - entityData.setRightArmPose(armorStand.getRightArmPose().getX() + " " + armorStand.getRightArmPose().getY() - + " " + armorStand.getRightArmPose().getZ()); - entityData.setRightLegPose(armorStand.getRightLegPose().getX() + " " + armorStand.getRightLegPose().getY() - + " " + armorStand.getRightLegPose().getZ()); - - return entityData; - } - - int NMSVersion = NMSUtil.getVersionNumber(); - - if (entity instanceof LivingEntity) { - LivingEntity livingEntity = (LivingEntity) entity; - EntityEquipment entityEquipment = livingEntity.getEquipment(); - - if (NMSVersion > 8) { - if (NMSVersion > 9) { - entityData.setAI(livingEntity.hasAI()); - } - - if (entityEquipment.getItemInMainHand() != null - && entityEquipment.getItemInMainHand().getType() != Material.AIR) { - entityData.setHand(ItemStackUtil.serializeItemStack(entityEquipment.getItemInMainHand())); - } - - entityData.setHandChance(entityEquipment.getItemInMainHandDropChance()); - - if (entityEquipment.getItemInOffHand() != null - && entityEquipment.getItemInOffHand().getType() != Material.AIR) { - entityData.setOffHand(ItemStackUtil.serializeItemStack(entityEquipment.getItemInOffHand())); - } - - entityData.setOffHandChange(entityEquipment.getItemInOffHandDropChance()); - } else { - if (entityEquipment.getItemInHand() != null - && entityEquipment.getItemInHand().getType() != Material.AIR) { - entityData.setHand(ItemStackUtil.serializeItemStack(entityEquipment.getItemInHand())); - } - - entityData.setHandChance(entityEquipment.getItemInHandDropChance()); - } - - if (entityEquipment.getHelmet() != null && entityEquipment.getHelmet().getType() != Material.AIR) { - entityData.setHelmet(ItemStackUtil.serializeItemStack(entityEquipment.getHelmet())); - } - - if (entityEquipment.getChestplate() != null && entityEquipment.getChestplate().getType() != Material.AIR) { - entityData.setChestplate(ItemStackUtil.serializeItemStack(entityEquipment.getChestplate())); - } - - if (entityEquipment.getLeggings() != null && entityEquipment.getLeggings().getType() != Material.AIR) { - entityData.setLeggings(ItemStackUtil.serializeItemStack(entityEquipment.getLeggings())); - } - - if (entityEquipment.getBoots() != null && entityEquipment.getBoots().getType() != Material.AIR) { - entityData.setBoots(ItemStackUtil.serializeItemStack(entityEquipment.getBoots())); - } - - entityData.setHelmetChance(entityEquipment.getHelmetDropChance()); - entityData.setChestplateChance(entityEquipment.getChestplateDropChance()); - entityData.setLeggingsChance(entityEquipment.getLeggingsDropChance()); - entityData.setBootsChance(entityEquipment.getBootsDropChance()); - - if (entity instanceof Bat) { - entityData.setAwake(((Bat) entityData).isAwake()); - } else if (entity instanceof Creeper) { - entityData.setPowered(((Creeper) entity).isPowered()); - } else if (entity instanceof Enderman) { - Enderman enderman = ((Enderman) entity); - - if (NMSVersion > 12) { - if (enderman.getCarriedBlock() == null) { - entityData.setCarryBlock(""); - } else { - entityData.setCarryBlock(enderman.getCarriedBlock().getMaterial().name() + ":0"); - } - } else { - MaterialData materialData = enderman.getCarriedMaterial(); - - if (materialData == null) { - entityData.setCarryBlock(""); - } else { - entityData.setCarryBlock(materialData.getItemType().toString() + ":" + materialData.getData()); - } - } - } else if (entity instanceof Horse) { - Horse horse = ((Horse) entity); - entityData.setHorseColor(horse.getColor().toString()); - entityData.setHorseStyle(horse.getStyle().toString()); - - List items = new ArrayList<>(); - - for (ItemStack itemList : horse.getInventory().getContents()) { - if (itemList != null && itemList.getType() != Material.AIR) { - items.add(ItemStackUtil.serializeItemStack(itemList)); - } - } - - entityData.setInventory(items.toArray(new String[0])); - } else if (entity instanceof IronGolem) { - entityData.setCreatedByPlayer(((IronGolem) entity).isPlayerCreated()); - } else if (entity instanceof Ocelot) { - entityData.setOcelotType(((Ocelot) entity).getCatType().toString()); - } else if (entity instanceof Pig) { - entityData.setSaddle(((Pig) entity).hasSaddle()); - } else if (entity instanceof Zombie) { - entityData.setBaby(((Zombie) entity).isBaby()); - } else if (entity instanceof PigZombie) { - PigZombie pigZombie = ((PigZombie) entity); - entityData.setAngry(pigZombie.isAngry()); - entityData.setAngerLevel(pigZombie.getAnger()); - } else if (entity instanceof Rabbit) { - entityData.setRabbitType(((Rabbit) entity).getRabbitType().toString()); - } else if (entity instanceof Sheep) { - entityData.setSheared(((Sheep) entity).isSheared()); - entityData.setColor(((Colorable) entity).getColor().toString()); - } else if (entity instanceof Slime) { - entityData.setSlimeSize(((Slime) entity).getSize()); - } else if (entity instanceof Snowman) { - entityData.setDerp(((Snowman) entity).isDerp()); - } else if (entity instanceof Villager) { - Villager villager = ((Villager) entity); - entityData.setProfession(villager.getProfession().toString()); - - List items = new ArrayList<>(); - - for (ItemStack itemList : villager.getInventory().getContents()) { - if (itemList != null && itemList.getType() != Material.AIR) { - items.add(ItemStackUtil.serializeItemStack(itemList)); - } - } - - entityData.setInventory(items.toArray(new String[0])); - } - - if (NMSVersion > 10) { - if (entity instanceof Llama) { - Llama llama = ((Llama) entity); - entityData.setLlamaColor(llama.getColor().toString()); - entityData.setLlamaStrength(llama.getStrength()); - - List items = new ArrayList<>(); - - for (ItemStack itemList : llama.getInventory().getContents()) { - if (itemList != null && itemList.getType() != Material.AIR) { - items.add(ItemStackUtil.serializeItemStack(itemList)); - } - } - } - - if (NMSVersion > 11) { - if (entity instanceof Parrot) { - entityData.setParrotVariant(((Parrot) entity).getVariant().toString()); - } - } - } - } - - if (entity instanceof Ageable) { - Ageable ageable = ((Ageable) entity); - entityData.setBreed(ageable.canBreed()); - entityData.setAge(ageable.getAge()); - entityData.setAgeLock(ageable.getAgeLock()); - entityData.setBaby(!ageable.isAdult()); - } else if (entity instanceof Vehicle) { - if (entity instanceof Boat) { - entityData.setWoodType(((Boat) entity).getWoodType().toString()); - } else if (entity instanceof StorageMinecart || entity instanceof HopperMinecart) { - List items = new ArrayList<>(); - - for (ItemStack itemList : ((InventoryHolder) entity).getInventory().getContents()) { - if (itemList != null && itemList.getType() != Material.AIR) { - items.add(ItemStackUtil.serializeItemStack(itemList)); - } - } - - entityData.setInventory(items.toArray(new String[0])); - } - } else if (entity instanceof Hanging) { - if (entity instanceof ItemFrame) { - ItemFrame itemFrame = ((ItemFrame) entity); - ItemStack is = itemFrame.getItem(); - - if (is == null) { - entityData.setItem(""); - } else { - entityData.setItem(ItemStackUtil.serializeItemStack(is)); - } - - entityData.setRotate(itemFrame.getRotation().toString()); - } else if (entity instanceof Painting) { - entityData.setArt(((Painting) entity).getArt().toString()); - } - } - - return entityData; - } - - public static void convertEntityDataToEntity(EntityData entityData, Location loc, BlockDegreesType type) { - Entity entity = loc.getWorld().spawnEntity(loc, EntityType.valueOf(entityData.getEntityType().toUpperCase())); - entity.setCustomName(entityData.getCustomName()); - entity.setCustomNameVisible(entityData.isCustomNameVisible()); - entity.setFireTicks(entityData.getFireTicks()); - entity.setTicksLived(entityData.getTicksLived()); - - if (entity instanceof ArmorStand) { - ArmorStand armorStand = (ArmorStand) entity; - armorStand.setArms(entityData.hasArms()); - - if (entityData.getHand() != null && !entityData.getHand().isEmpty()) { - armorStand.setItemInHand(ItemStackUtil.deserializeItemStack(entityData.getHand())); - } - - if (entityData.getHelmet() != null && !entityData.getHelmet().isEmpty()) { - armorStand.setHelmet(ItemStackUtil.deserializeItemStack(entityData.getHelmet())); - } - - if (entityData.getChestplate() != null && !entityData.getChestplate().isEmpty()) { - armorStand.setChestplate(ItemStackUtil.deserializeItemStack(entityData.getChestplate())); - } - - if (entityData.getLeggings() != null && !entityData.getLeggings().isEmpty()) { - armorStand.setLeggings(ItemStackUtil.deserializeItemStack(entityData.getLeggings())); - } - - if (entityData.getBoots() != null && !entityData.getBoots().isEmpty()) { - armorStand.setBoots(ItemStackUtil.deserializeItemStack(entityData.getBoots())); - } - - armorStand.setBasePlate(entityData.hasBasePlate()); - armorStand.setVisible(entityData.isVisible()); - armorStand.setSmall(entityData.isSmall()); - armorStand.setMarker(entityData.isMarker()); - - String[] bodyPose = entityData.getBodyPose().split(" "); - armorStand.setBodyPose(new EulerAngle(Double.parseDouble(bodyPose[0]), Double.parseDouble(bodyPose[1]), - Double.parseDouble(bodyPose[2]))); - - String[] headPose = entityData.getHeadPose().split(" "); - armorStand.setHeadPose(new EulerAngle(Double.parseDouble(headPose[0]), Double.parseDouble(headPose[1]), - Double.parseDouble(headPose[2]))); - - String[] leftArmPose = entityData.getLeftArmPose().split(" "); - armorStand.setLeftArmPose(new EulerAngle(Double.parseDouble(leftArmPose[0]), - Double.parseDouble(leftArmPose[1]), Double.parseDouble(leftArmPose[2]))); - - String[] leftLegPose = entityData.getLeftLegPose().split(" "); - armorStand.setLeftLegPose(new EulerAngle(Double.parseDouble(leftLegPose[0]), - Double.parseDouble(leftLegPose[1]), Double.parseDouble(leftLegPose[2]))); - - String[] rightArmPose = entityData.getRightArmPose().split(" "); - armorStand.setRightArmPose(new EulerAngle(Double.parseDouble(rightArmPose[0]), - Double.parseDouble(rightArmPose[1]), Double.parseDouble(rightArmPose[2]))); - - String[] rightLegPose = entityData.getRightLegPose().split(" "); - armorStand.setRightLegPose(new EulerAngle(Double.parseDouble(rightLegPose[0]), - Double.parseDouble(rightLegPose[1]), Double.parseDouble(rightLegPose[2]))); - } - - int NMSVersion = NMSUtil.getVersionNumber(); - - if (entity instanceof LivingEntity) { - LivingEntity livingEntity = (LivingEntity) entity; - EntityEquipment entityEquipment = livingEntity.getEquipment(); - - if (NMSVersion > 8) { - if (NMSVersion > 9) { - livingEntity.setAI(entityData.hasAI()); - } - - if (entityData.getHand() != null && !entityData.getHand().isEmpty()) { - entityEquipment.setItemInMainHand(ItemStackUtil.deserializeItemStack(entityData.getHand())); - } - - if (entityData.getOffHand() != null && !entityData.getOffHand().isEmpty()) { - entityEquipment.setItemInOffHand(ItemStackUtil.deserializeItemStack(entityData.getOffHand())); - } - - entityEquipment.setItemInMainHandDropChance(entityData.getHandChance()); - entityEquipment.setItemInOffHandDropChance(entityData.getOffHandChance()); - } else { - if (entityData.getHand() != null && !entityData.getHand().isEmpty()) { - entityEquipment.setItemInHand(ItemStackUtil.deserializeItemStack(entityData.getHand())); - } - - entityEquipment.setItemInHandDropChance(entityData.getHandChance()); - } - - if (entityData.getHelmet() != null && !entityData.getHelmet().isEmpty()) { - entityEquipment.setHelmet(ItemStackUtil.deserializeItemStack(entityData.getHelmet())); - } - - if (entityData.getChestplate() != null && !entityData.getChestplate().isEmpty()) { - entityEquipment.setChestplate(ItemStackUtil.deserializeItemStack(entityData.getChestplate())); - } - - if (entityData.getLeggings() != null && !entityData.getLeggings().isEmpty()) { - entityEquipment.setLeggings(ItemStackUtil.deserializeItemStack(entityData.getLeggings())); - } - - if (entityData.getBoots() != null && !entityData.getBoots().isEmpty()) { - entityEquipment.setBoots(ItemStackUtil.deserializeItemStack(entityData.getBoots())); - } - - entityEquipment.setHelmetDropChance(entityData.getHelmetChance()); - entityEquipment.setChestplateDropChance(entityData.getChestplateChance()); - entityEquipment.setLeggingsDropChance(entityData.getLeggingsChance()); - entityEquipment.setBootsDropChance(entityData.getBootsChance()); - - if (entity instanceof Bat) { - ((Bat) entity).setAwake(entityData.isAwake()); - } else if (entity instanceof Creeper) { - ((Creeper) entity).setPowered(entityData.isPowered()); - } else if (entity instanceof Enderman) { - if (entityData.getCarryBlock() != null && !entityData.getCarryBlock().isEmpty()) { - String[] materialData = entityData.getCarryBlock().split(":"); - - byte data = Byte.parseByte(materialData[1]); - Material material = MaterialUtil.getMaterial(NMSVersion, entityData.getVersion(), - materialData[0].toUpperCase(), data); - - if (material != null) { - if (NMSVersion > 12) { - ((Enderman) entity).setCarriedBlock(Bukkit.getServer().createBlockData(material)); - } else { - ((Enderman) entity).setCarriedMaterial(new MaterialData(material, data)); - } - } - } - } else if (entity instanceof Horse) { - Horse horse = ((Horse) entity); - horse.setColor(Horse.Color.valueOf(entityData.getHorseColor().toUpperCase())); - horse.setStyle(Horse.Style.valueOf(entityData.getHorseStyle().toUpperCase())); - - List items = new ArrayList<>(); - - for (String inventoryList : entityData.getInventory()) { - items.add(ItemStackUtil.deserializeItemStack(inventoryList)); - } - - horse.getInventory().setContents(items.toArray(new ItemStack[0])); - } else if (entity instanceof IronGolem) { - ((IronGolem) entity).setPlayerCreated(entityData.isCreatedByPlayer()); - } else if (entity instanceof Ocelot) { - ((Ocelot) entity).setCatType(Ocelot.Type.valueOf(entityData.getOcelotType().toUpperCase())); - } else if (entity instanceof Pig) { - ((Pig) entity).setSaddle(entityData.hasSaddle()); - } else if (entity instanceof Zombie) { - ((Zombie) entity).setBaby(entityData.isBaby()); - } else if (entity instanceof PigZombie) { - PigZombie pigZombie = ((PigZombie) entity); - pigZombie.setAngry(entityData.isAngry()); - pigZombie.setAnger(entityData.getAngerLevel()); - } else if (entity instanceof Rabbit) { - ((Rabbit) entity).setRabbitType(Rabbit.Type.valueOf(entityData.getRabbitType().toUpperCase())); - } else if (entity instanceof Sheep) { - Sheep sheep = ((Sheep) entity); - sheep.setSheared(entityData.isSheared()); - sheep.setColor(DyeColor.valueOf(entityData.getColor().toUpperCase())); - } else if (entity instanceof Slime) { - ((Slime) entity).setSize(entityData.getSlimeSize()); - } else if (entity instanceof Snowman) { - ((Snowman) entity).setDerp(entityData.isDerp()); - } else if (entity instanceof Villager) { - Villager villager = ((Villager) entity); - villager.setProfession(Villager.Profession.valueOf(entityData.getProfession().toUpperCase())); - - List items = new ArrayList<>(); - - for (String inventoryList : entityData.getInventory()) { - items.add(ItemStackUtil.deserializeItemStack(inventoryList)); - } - - villager.getInventory().setContents(items.toArray(new ItemStack[0])); - } - - if (NMSVersion > 10) { - if (entity instanceof Llama) { - Llama llama = ((Llama) entity); - llama.setColor(Llama.Color.valueOf(entityData.getLlamaColor().toUpperCase())); - llama.setStrength(entityData.getLlamaStrength()); - - List items = new ArrayList<>(); - - for (String inventoryList : entityData.getInventory()) { - items.add(ItemStackUtil.deserializeItemStack(inventoryList)); - } - - llama.getInventory().setContents(items.toArray(new ItemStack[0])); - } - - if (NMSVersion > 11) { - if (entity instanceof Parrot) { - ((Parrot) entity) - .setVariant(Parrot.Variant.valueOf(entityData.getParrotVariant().toUpperCase())); - } - } - } - } - - if (entity instanceof Ageable) { - Ageable ageable = ((Ageable) entity); - ageable.setBreed(entityData.canBreed()); - ageable.setAge(entityData.getAge()); - ageable.setAgeLock(entityData.isAgeLock()); - - if (!entityData.isBaby()) { - ageable.setAdult(); - } - } else if (entity instanceof Vehicle) { - if (entity instanceof Boat) { - ((Boat) entity).setWoodType(TreeSpecies.valueOf(entityData.getWoodType().toUpperCase())); - } else if (entity instanceof StorageMinecart || entity instanceof HopperMinecart) { - - List items = new ArrayList<>(); - - for (String inventoryList : entityData.getInventory()) { - items.add(ItemStackUtil.deserializeItemStack(inventoryList)); - } - - ((InventoryHolder) entity).getInventory().setContents(items.toArray(new ItemStack[0])); - } - } else if (entity instanceof Hanging) { - if (entity instanceof ItemFrame) { - ItemFrame itemFrame = ((ItemFrame) entity); - - if (0 < entityData.getItem().length()) { - itemFrame.setItem(ItemStackUtil.deserializeItemStack(entityData.getItem())); - } - - itemFrame.setRotation(Rotation.valueOf(entityData.getRotate().toUpperCase())); - } else if (entity instanceof Painting) { - ((Painting) entity).setArt(Art.valueOf(entityData.getArt())); - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/Visit.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/Visit.java deleted file mode 100644 index ef5554ba..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/Visit.java +++ /dev/null @@ -1,241 +0,0 @@ -package me.goodandevil.skyblock.visit; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.configuration.file.FileConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.ban.Ban; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandLocation; -import me.goodandevil.skyblock.island.IslandWorld; - -public class Visit { - - private final SkyBlock skyblock; - - private UUID islandOwnerUUID; - - private String islandOwnerName; - - private IslandLocation[] islandLocations; - - private int islandSize; - private int islandMembers; - private int safeLevel; - private double islandBankBalance; - - private final IslandLevel islandLevel; - - private List islandSignature; - - private boolean open; - - protected Visit(SkyBlock skyblock, UUID islandOwnerUUID, IslandLocation[] islandLocations, int islandSize, - int islandMembers, double islandBankBalance, int safeLevel, IslandLevel islandLevel, List islandSignature, boolean open) { - this.skyblock = skyblock; - this.islandOwnerUUID = islandOwnerUUID; - this.islandLocations = islandLocations; - this.islandSize = islandSize; - this.islandMembers = islandMembers; - this.islandBankBalance = islandBankBalance; - this.safeLevel = safeLevel; - this.islandLevel = islandLevel; - this.islandSignature = islandSignature; - this.open = open; - } - - public UUID getOwnerUUID() { - return islandOwnerUUID; - } - - public void setOwnerUUID(UUID islandOwnerUUID) { - this.islandOwnerUUID = islandOwnerUUID; - } - - public String getOwnerName() { - return islandOwnerName; - } - - public void setOwnerName(String islandOwnerName) { - this.islandOwnerName = islandOwnerName; - } - - public IslandLocation getLocation(IslandWorld world) { - switch (world) { - case End: - return islandLocations[2]; - case Nether: - return islandLocations[1]; - case Normal: - return islandLocations[0]; - } - - return null; - } - - public int getMembers() { - return islandMembers; - } - - public void setMembers(int islandMembers) { - this.islandMembers = islandMembers; - } - - public int getSafeLevel() { - return safeLevel; - } - - public void setSafeLevel(int safeLevel) { - this.safeLevel = safeLevel; - } - - public int getRadius() { - return islandSize; - } - - public void setSize(int islandSize) { - this.islandSize = islandSize; - } - - public double getBankBalance() { - return this.islandBankBalance; - } - - public IslandLevel getLevel() { - return islandLevel; - } - - public boolean isVisitor(UUID uuid) { - return getVisitors().contains(uuid); - } - - public Set getVisitors() { - Set islandVisitors = new HashSet<>(); - - for (String islandVisitorList : skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration().getStringList("Visitors")) { - islandVisitors.add(UUID.fromString(islandVisitorList)); - } - - return islandVisitors; - } - - public void addVisitor(UUID uuid) { - List islandVisitors = new ArrayList<>(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration(); - - for (String islandVisitorList : configLoad.getStringList("Visitors")) { - islandVisitors.add(islandVisitorList); - } - - islandVisitors.add(uuid.toString()); - configLoad.set("Visitors", islandVisitors); - } - - public void removeVisitor(UUID uuid) { - List islandVisitors = new ArrayList<>(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration(); - - for (String islandVisitorList : configLoad.getStringList("Visitors")) { - islandVisitors.add(islandVisitorList); - } - - islandVisitors.remove(uuid.toString()); - configLoad.set("Visitors", islandVisitors); - } - - public boolean isVoter(UUID uuid) { - return getVoters().contains(uuid); - } - - public Set getVoters() { - Set islandVoters = new HashSet<>(); - - for (String islandVisitorList : skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration().getStringList("Voters")) { - islandVoters.add(UUID.fromString(islandVisitorList)); - } - - return islandVoters; - } - - public void addVoter(UUID uuid) { - List islandVoters = new ArrayList<>(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration(); - - for (String islandVoterList : configLoad.getStringList("Voters")) { - islandVoters.add(islandVoterList); - } - - islandVoters.add(uuid.toString()); - configLoad.set("Voters", islandVoters); - } - - public void removeVoter(UUID uuid) { - List islandVoters = new ArrayList<>(); - FileConfiguration configLoad = skyblock.getFileManager() - .getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")) - .getFileConfiguration(); - - for (String islandVoterList : configLoad.getStringList("Voters")) { - if (!uuid.toString().equals(islandVoterList)) { - islandVoters.add(islandVoterList); - } - } - - configLoad.set("Voters", islandVoters); - } - - public List getSiganture() { - return islandSignature; - } - - public void setSignature(List islandSignature) { - this.islandSignature = islandSignature; - } - - public boolean isOpen() { - return open; - } - - public void setOpen(boolean open) { - this.open = open; - } - - public Ban getBan() { - return skyblock.getBanManager().getIsland(getOwnerUUID()); - } - - public void save() { - Config config = skyblock.getFileManager().getConfig(new File( - new File(skyblock.getDataFolder().toString() + "/visit-data"), islandOwnerUUID.toString() + ".yml")); - - try { - config.getFileConfiguration().save(config.getFile()); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/VisitManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/VisitManager.java deleted file mode 100644 index a8a9e926..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/VisitManager.java +++ /dev/null @@ -1,252 +0,0 @@ -package me.goodandevil.skyblock.visit; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; -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.Island; -import me.goodandevil.skyblock.island.IslandLevel; -import me.goodandevil.skyblock.island.IslandLocation; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.utils.world.LocationUtil; -import me.goodandevil.skyblock.world.WorldManager; - -public class VisitManager { - - private final SkyBlock skyblock; - private HashMap visitStorage = new HashMap<>(); - - public VisitManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - loadIslands(); - } - - public void onDisable() { - HashMap visitIslands = getIslands(); - - for (UUID visitIslandList : visitIslands.keySet()) { - Visit visit = visitIslands.get(visitIslandList); - visit.save(); - } - } - - public void loadIslands() { - WorldManager worldManager = skyblock.getWorldManager(); - FileManager fileManager = skyblock.getFileManager(); - - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Unload")) { - File configFile = new File(skyblock.getDataFolder().toString() + "/island-data"); - - if (!configFile.exists()) return; - - for (File fileList : configFile.listFiles()) { - if (fileList != null && fileList.getName().contains(".yml") && fileList.getName().length() > 35) { - try { - Config config = new FileManager.Config(fileManager, fileList); - FileConfiguration configLoad = config.getFileConfiguration(); - - UUID islandOwnerUUID = UUID.fromString(fileList.getName().replace(".yml", "")); - - if (islandOwnerUUID == null) { - islandOwnerUUID = UUID.fromString(fileList.getName().replaceFirst("[.][^.]+$", "")); - - if (islandOwnerUUID == null) { - continue; - } - } - - List islandSignature = new ArrayList<>(); - - if (configLoad.getString("Visitor.Signature.Message") != null) { - islandSignature = configLoad.getStringList("Visitor.Signature.Message"); - } - - int size = 100; - - if (configLoad.getString("Size") != null) { - size = configLoad.getInt("Size"); - } - - createIsland(islandOwnerUUID, - new IslandLocation[] { - new IslandLocation(IslandWorld.Normal, null, - worldManager.getLocation(fileManager.getLocation(config, - "Location.Normal.Island", true), IslandWorld.Normal)), - new IslandLocation(IslandWorld.Nether, null, - worldManager.getLocation(fileManager.getLocation(config, - "Location.Nether.Island", true), IslandWorld.Nether)), - new IslandLocation(IslandWorld.End, null, - worldManager.getLocation(fileManager.getLocation(config, - "Location.Nether.Island", true), IslandWorld.End)) }, - size, - configLoad.getStringList("Members").size() - + configLoad.getStringList("Operators").size() + 1, - configLoad.getDouble("Bank.Balance", 0), - getIslandSafeLevel(islandOwnerUUID), new IslandLevel(islandOwnerUUID, skyblock), - islandSignature, configLoad.getBoolean("Visitor.Open")); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - } - - public void transfer(UUID uuid1, UUID uuid2) { - Visit visit = getIsland(uuid1); - visit.setOwnerUUID(uuid2); - visit.getLevel().setOwnerUUID(uuid2); - visit.save(); - - File oldVisitDataFile = new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - uuid1.toString() + ".yml"); - File newVisitDataFile = new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - uuid2.toString() + ".yml"); - - skyblock.getFileManager().unloadConfig(oldVisitDataFile); - skyblock.getFileManager().unloadConfig(newVisitDataFile); - - oldVisitDataFile.renameTo(newVisitDataFile); - - removeIsland(uuid1); - addIsland(uuid2, visit); - } - - public void removeVisitors(Island island, VisitManager.Removal removal) { - 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(); - - for (UUID visitorList : skyblock.getIslandManager().getVisitorsAtIsland(island)) { - Player targetPlayer = Bukkit.getServer().getPlayer(visitorList); - - LocationUtil.teleportPlayerToSpawn(targetPlayer); - - messageManager.sendMessage(targetPlayer, - configLoad.getString("Island.Visit." + removal.name() + ".Message")); - soundManager.playSound(targetPlayer, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); - } - } - - public int getIslandSafeLevel(UUID islandOwnerUUID) { - FileManager fileManager = skyblock.getFileManager(); - - Config settingDataConfig = new FileManager.Config(fileManager, - new File(skyblock.getDataFolder().toString() + "/setting-data", islandOwnerUUID.toString() + ".yml")); - FileConfiguration settingDataConfigLoad = settingDataConfig.getFileConfiguration(); - - Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration(); - - int safeLevel = 0; - - Map settings = new HashMap<>(); - settings.put("KeepItemsOnDeath", false); - settings.put("PvP", true); - settings.put("Damage", true); - - for (String settingList : settings.keySet()) { - if (mainConfigLoad.getBoolean("Island.Settings." + settingList + ".Enable") - && settingDataConfigLoad.getString("Settings.Owner." + settingList) != null - && settingDataConfigLoad.getBoolean("Settings.Owner." + settingList) == settings.get(settingList)) { - safeLevel++; - } - } - - return safeLevel; - } - - public boolean hasIsland(UUID islandOwnerUUID) { - return visitStorage.containsKey(islandOwnerUUID); - } - - public Visit getIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - return visitStorage.get(islandOwnerUUID); - } - - return null; - } - - public HashMap getIslands() { - return visitStorage; - } - - public Map getOpenIslands() { - Map visitIslands = new ConcurrentHashMap<>(); - visitIslands.putAll(visitStorage); - - Iterator it = visitIslands.keySet().iterator(); - - while (it.hasNext()) { - UUID islandOwnerUUID = it.next(); - me.goodandevil.skyblock.visit.Visit visit = visitIslands.get(islandOwnerUUID); - - if (!visit.isOpen()) { - visitIslands.remove(islandOwnerUUID); - } - } - - return visitIslands; - } - - public void createIsland(UUID islandOwnerUUID, IslandLocation[] islandLocations, int islandSize, int islandMembers, - double islandBankBalance, int safeLevel, IslandLevel islandLevel, List islandSignature, boolean open) { - visitStorage.put(islandOwnerUUID, new Visit(skyblock, islandOwnerUUID, islandLocations, islandSize, - islandMembers, islandBankBalance, safeLevel, islandLevel, islandSignature, open)); - } - - public void addIsland(UUID islandOwnerUUID, Visit visit) { - visitStorage.put(islandOwnerUUID, visit); - } - - public void removeIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - visitStorage.remove(islandOwnerUUID); - } - } - - public void unloadIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - skyblock.getFileManager() - .unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")); - visitStorage.remove(islandOwnerUUID); - } - } - - public void deleteIsland(UUID islandOwnerUUID) { - if (hasIsland(islandOwnerUUID)) { - skyblock.getFileManager() - .deleteConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), - islandOwnerUUID.toString() + ".yml")); - visitStorage.remove(islandOwnerUUID); - } - } - - public enum Removal { - - Unloaded, Kicked, Deleted; - - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/VisitTask.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/VisitTask.java deleted file mode 100644 index 39e935cf..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/visit/VisitTask.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.goodandevil.skyblock.visit; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; - -public class VisitTask extends BukkitRunnable { - - private final PlayerDataManager playerDataManager; - - public VisitTask(PlayerDataManager playerManager) { - this.playerDataManager = playerManager; - } - - @Override - public void run() { - for (Player all : Bukkit.getOnlinePlayers()) { - if (playerDataManager.hasPlayerData(all)) { - PlayerData playerData = playerDataManager.getPlayerData(all); - - if (playerData.getIsland() != null) { - playerData.setVisitTime(playerData.getVisitTime() + 1); - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/world/WorldManager.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/world/WorldManager.java deleted file mode 100644 index 6902e626..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/world/WorldManager.java +++ /dev/null @@ -1,140 +0,0 @@ -package me.goodandevil.skyblock.world; - -import java.io.File; -import java.util.logging.Level; - -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.WorldCreator; -import org.bukkit.WorldType; -import org.bukkit.configuration.file.FileConfiguration; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.world.generator.VoidGenerator; - -public class WorldManager { - - private final SkyBlock skyblock; - - private org.bukkit.World normalWorld; - private org.bukkit.World netherWorld; - private org.bukkit.World endWorld; - - public WorldManager(SkyBlock skyblock) { - this.skyblock = skyblock; - - loadWorlds(); - } - - public void loadWorlds() { - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - String normalWorldName = configLoad.getString("Island.World.Normal.Name"); - String netherWorldName = configLoad.getString("Island.World.Nether.Name"); - String endWorldName = configLoad.getString("Island.World.End.Name"); - - boolean netherWorldEnabled = configLoad.getBoolean("Island.World.Nether.Enable"); - boolean endWorldEnabled = configLoad.getBoolean("Island.World.End.Enable"); - - World.Environment normalWorldEnvironment = World.Environment.valueOf(configLoad.getString("Island.World.Normal.Environment")); - World.Environment netherWorldEnvironment = World.Environment.valueOf(configLoad.getString("Island.World.Nether.Environment")); - World.Environment endWorldEnvironment = World.Environment.valueOf(configLoad.getString("Island.World.End.Environment")); - - normalWorld = Bukkit.getServer().getWorld(normalWorldName); - netherWorld = Bukkit.getServer().getWorld(netherWorldName); - endWorld = Bukkit.getServer().getWorld(endWorldName); - - if (normalWorld == null) { - Bukkit.getServer().getLogger().log(Level.INFO, - "SkyBlock | Info: Generating VoidWorld '" + normalWorldName + "'."); - normalWorld = WorldCreator.name(normalWorldName).type(WorldType.FLAT).environment(normalWorldEnvironment) - .generator(new VoidGenerator()).createWorld(); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> registerMultiverse(normalWorldName, normalWorldEnvironment)); - } - - if (netherWorld == null && netherWorldEnabled) { - Bukkit.getServer().getLogger().log(Level.INFO, - "SkyBlock | Info: Generating VoidWorld '" + netherWorldName + "'."); - netherWorld = WorldCreator.name(netherWorldName).type(WorldType.FLAT).environment(netherWorldEnvironment) - .generator(new VoidGenerator()).createWorld(); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> registerMultiverse(netherWorldName, netherWorldEnvironment)); - } - - if (endWorld == null && endWorldEnabled) { - Bukkit.getServer().getLogger().log(Level.INFO, - "SkyBlock | Info: Generating VoidWorld '" + endWorldName + "'."); - endWorld = WorldCreator.name(endWorldName).type(WorldType.FLAT).environment(endWorldEnvironment) - .generator(new VoidGenerator()).createWorld(); - - Bukkit.getServer().getScheduler().runTask(skyblock, () -> registerMultiverse(endWorldName, endWorldEnvironment)); - } - } - - public void registerMultiverse(String worldName, World.Environment environment) { - if (Bukkit.getServer().getPluginManager().getPlugin("Multiverse-Core") != null) { - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - "mv import " + worldName + " " + environment.name().toLowerCase() + " -g " + skyblock.getName()); - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - "mv modify set generator " + skyblock.getName() + " " + worldName); - } - } - - public World getWorld(IslandWorld world) { - if (world == IslandWorld.Normal) { - return normalWorld; - } else if (world == IslandWorld.Nether) { - return netherWorld; - } else if (world == IslandWorld.End) { - return endWorld; - } - - return null; - } - - public IslandWorld getIslandWorld(World world) { - if (world == null) { - return null; - } - - if (normalWorld != null && normalWorld.getName().equals(world.getName())) - return IslandWorld.Normal; - - if (netherWorld != null && netherWorld.getName().equals(world.getName())) - return IslandWorld.Nether; - - if (endWorld != null && endWorld.getName().equals(world.getName())) - return IslandWorld.End; - - return null; - } - - public boolean isIslandWorld(World world) { - if (world == null) - return false; - - if (normalWorld != null && normalWorld.getName().equals(world.getName())) - return true; - - if (netherWorld != null && netherWorld.getName().equals(world.getName())) - return true; - - if (endWorld != null && endWorld.getName().equals(world.getName())) - return true; - - return false; - } - - public Location getLocation(Location location, IslandWorld world) { - if (location != null && location.getWorld() == null) { - location.setWorld(getWorld(world)); - } - - return location; - } -} diff --git a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/world/generator/VoidGenerator.java b/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/world/generator/VoidGenerator.java deleted file mode 100644 index 83b56835..00000000 --- a/FabledSkyBlock/Core/src/main/java/me/goodandevil/skyblock/world/generator/VoidGenerator.java +++ /dev/null @@ -1,72 +0,0 @@ -package me.goodandevil.skyblock.world.generator; - -import java.io.File; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.generator.BlockPopulator; -import org.bukkit.generator.ChunkGenerator; - -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.utils.version.Materials; - -public class VoidGenerator extends ChunkGenerator { - - @Override - public ChunkData generateChunkData(World world, Random random, int chunkX, int chunkZ, BiomeGrid biome) { - ChunkData chunkData = createChunkData(world); - - SkyBlock skyblock = SkyBlock.getInstance(); - - Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - for (IslandWorld worldList : IslandWorld.values()) { - if (world.getEnvironment() == worldList.getUncheckedEnvironment()) { - if (configLoad.getBoolean("Island.World." + worldList.name() + ".Liquid.Enable")) { - if (configLoad.getBoolean("Island.World." + worldList.name() + ".Liquid.Lava")) { - setBlock(chunkData, Materials.LEGACY_STATIONARY_LAVA.parseMaterial(), - configLoad.getInt("Island.World." + worldList.name() + ".Liquid.Height")); - } else { - setBlock(chunkData, Materials.LEGACY_STATIONARY_WATER.parseMaterial(), - configLoad.getInt("Island.World." + worldList.name() + ".Liquid.Height")); - } - } - - break; - } - } - - return chunkData; - } - - @Override - public List getDefaultPopulators(final World world) { - return Arrays.asList(new BlockPopulator[0]); - } - - @Override - public boolean canSpawn(World world, int x, int z) { - return true; - } - - public byte[][] generateBlockSections(World world, Random random, int chunkX, int chunkZ, BiomeGrid biomeGrid) { - return new byte[world.getMaxHeight() / 16][]; - } - - private void setBlock(ChunkData chunkData, Material material, int height) { - for (int x = 0; x < 16; x++) { - for (int z = 0; z < 16; z++) { - for (int y = 0; y < height; y++) { - chunkData.setBlock(x, y, z, material); - } - } - } - } -} diff --git a/FabledSkyBlock/Core/src/main/resources/plugin.yml b/FabledSkyBlock/Core/src/main/resources/plugin.yml index 06c2d9fb..9a4c6596 100644 --- a/FabledSkyBlock/Core/src/main/resources/plugin.yml +++ b/FabledSkyBlock/Core/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: FabledSkyBlock -main: me.goodandevil.skyblock.SkyBlock +main: com.songoda.skyblock.SkyBlock version: @version@ api-version: 1.13 description: A unique SkyBlock plugin diff --git a/FabledSkyBlock/Legacy/src/main/java/me/goodandevil/skyblock/levelling/LegacyChunkSnapshotData.java b/FabledSkyBlock/Legacy/src/main/java/com/songoda/skyblock/levelling/LegacyChunkSnapshotData.java similarity index 90% rename from FabledSkyBlock/Legacy/src/main/java/me/goodandevil/skyblock/levelling/LegacyChunkSnapshotData.java rename to FabledSkyBlock/Legacy/src/main/java/com/songoda/skyblock/levelling/LegacyChunkSnapshotData.java index 4332a628..60014d74 100644 --- a/FabledSkyBlock/Legacy/src/main/java/me/goodandevil/skyblock/levelling/LegacyChunkSnapshotData.java +++ b/FabledSkyBlock/Legacy/src/main/java/com/songoda/skyblock/levelling/LegacyChunkSnapshotData.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.levelling; +package com.songoda.skyblock.levelling; import org.bukkit.Material; diff --git a/FabledSkyBlock/Legacy/src/main/java/me/goodandevil/skyblock/levelling/LegacyChunkSnapshotFetcher.java b/FabledSkyBlock/Legacy/src/main/java/com/songoda/skyblock/levelling/LegacyChunkSnapshotFetcher.java similarity index 91% rename from FabledSkyBlock/Legacy/src/main/java/me/goodandevil/skyblock/levelling/LegacyChunkSnapshotFetcher.java rename to FabledSkyBlock/Legacy/src/main/java/com/songoda/skyblock/levelling/LegacyChunkSnapshotFetcher.java index e393508b..80c1eb24 100644 --- a/FabledSkyBlock/Legacy/src/main/java/me/goodandevil/skyblock/levelling/LegacyChunkSnapshotFetcher.java +++ b/FabledSkyBlock/Legacy/src/main/java/com/songoda/skyblock/levelling/LegacyChunkSnapshotFetcher.java @@ -1,4 +1,4 @@ -package me.goodandevil.skyblock.levelling; +package com.songoda.skyblock.levelling; import org.bukkit.ChunkSnapshot; import org.bukkit.Material; diff --git a/build.gradle b/build.gradle index 68c146e9..ccabebfa 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ allprojects { apply plugin: 'java' group = 'com.goodandevil.skyblock' - version = 'Build-78.5' + version = 'maven-version-number' } subprojects {