# Added tab completion to the commands '/island leaderboard', '/island setspawn', '/island sethologram', and '/island removehologram'.
# Added the placeholder '%safety' to the Visit and Information menu to show if an island is safe for visitors.
# Added the setting 'ExperienceOrbPickup' to the roles Visitor, Member, and Coop.
# Added the option 'Island.Settings.KeepItemsOnDeath' to the configuration file.
# Added the option 'Island.Settings.Damage' to the configuration file.
# Added the option 'Island.Settings.PvP' to the configuration file.
# Added the setting 'Damage' to the 'Island Settings' menu.
# Added coop role to the 'Settings Editor' menu.
# Fixed creation message being sent to the player on island creation when the error message is sent when the main spawn point hasn't been set.
# Fixed new comments not being set in the configuration file (New comments however will appear at the end of a path).
# Fixed the permission note 'skyblock.information' not working for the command '/island information'.
# Fixed projectiles launched by players damaging entities when the setting 'MobHurting' is disabled.
# Fixed players being able to tame entities at an island when the setting 'MobTaming' is disabled.
# Fixed NPE generated by cobblestone generators when the index for the random material is zero.
# Fixed some water problems with the ore generators caused by water physics.
# Fixed '/island chat' enabling chat for other players on the island team.
# Fixed messages not being translated when island chat is enabled.
# Fixed custom entities not spawning in the island worlds.
# Fixed projectiles being under the wrong setting.
# Fixed a few mistakes in the 'language.yml' file.
# Recoded the 'Settings Editor' menu.
This commit is contained in:
Unknown 2018-12-06 20:52:09 +00:00
parent 59774f0e0e
commit fc6dafbe8d
77 changed files with 1257 additions and 582 deletions

View File

@ -2,7 +2,7 @@
<groupId>com.songoda</groupId>
<artifactId>SkyBlock</artifactId>
<modelVersion>4.0.0</modelVersion>
<version>38</version>
<version>39</version>
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>

View File

@ -139,7 +139,6 @@ public class SkyBlock extends JavaPlugin {
pluginManager.registerEvents(new me.goodandevil.skyblock.menus.admin.Levelling(), this);
pluginManager.registerEvents(new me.goodandevil.skyblock.menus.admin.Creator(), this);
pluginManager.registerEvents(new me.goodandevil.skyblock.menus.admin.Settings(), this);
pluginManager.registerEvents(new Generator(), this);
}

View File

@ -323,20 +323,19 @@ public class CommandManager implements CommandExecutor, TabCompleter {
}
}
}
List<String> arguments = getArguments(Type.Default, args[0], args[1]);
if (arguments.size() != 0) {
commandAliases.addAll(arguments);
}
} else if (args.length == 3) {
if (sender.hasPermission("skyblock.admin") || sender.hasPermission("skyblock.admin.*") || sender.hasPermission("skyblock.*")) {
if (args[0].equalsIgnoreCase("admin") && args[1].equalsIgnoreCase("structure")) {
if (args[2] == null || args[2].isEmpty()) {
commandAliases.add("tool");
commandAliases.add("save");
} else {
if ("tool".contains(args[2].toLowerCase())) {
commandAliases.add("tool");
}
if ("save".contains(args[2].toLowerCase())) {
commandAliases.add("save");
}
if (args[0].equalsIgnoreCase("admin")) {
List<String> arguments = getArguments(Type.Admin, args[1], args[2]);
if (arguments.size() != 0) {
commandAliases.addAll(arguments);
}
}
}
@ -350,6 +349,30 @@ public class CommandManager implements CommandExecutor, TabCompleter {
return null;
}
public List<String> getArguments(Type type, String arg1, String arg2) {
List<String> arguments = new ArrayList<>();
for (SubCommand subCommandList : subCommands.get(type)) {
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 sendPlayerHelpCommands(Player player, CommandManager.Type type, int page) {
FileManager fileManager = skyblock.getFileManager();

View File

@ -13,6 +13,7 @@ public abstract class SubCommand {
public abstract SubCommand setInfo(String info);
public abstract String[] getAliases();
public abstract String[] getArguments();
public abstract CommandManager.Type getType();
}

View File

@ -224,6 +224,11 @@ public class AcceptCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {

View File

@ -148,7 +148,12 @@ public class BanCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -84,7 +84,12 @@ public class BansCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "banned" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -78,7 +78,12 @@ public class BiomeCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -109,7 +109,12 @@ public class CancelCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -1,8 +1,6 @@
package me.goodandevil.skyblock.command.commands;
import java.io.File;
import java.util.Map;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.command.ConsoleCommandSender;
@ -50,33 +48,23 @@ public class ChatCommand extends SubCommand {
if ((island.getRole(Role.Member).size() + island.getRole(Role.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 {
Map<UUID, PlayerData> playerDataStorage = playerDataManager.getPlayerData();
for (UUID playerDataStorageList : playerDataStorage.keySet()) {
if (!playerDataStorageList.equals(player.getUniqueId())) {
PlayerData targetPlayerData = playerDataStorage.get(playerDataStorageList);
if (targetPlayerData.getOwner().equals(playerData.getOwner())) {
if (playerData.isChat()) {
Bukkit.getServer().getPluginManager().callEvent(new IslandChatSwitchEvent(player, island, false));
messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Untoggled.Message"));
playerData.setChat(false);
} else {
Bukkit.getServer().getPluginManager().callEvent(new IslandChatSwitchEvent(player, island, true));
messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Toggled.Message"));
playerData.setChat(true);
}
soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
return;
}
}
}
} 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);
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
} else {
if (playerData.isChat()) {
Bukkit.getServer().getPluginManager().callEvent(new IslandChatSwitchEvent(player, island, 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);
} else {
Bukkit.getServer().getPluginManager().callEvent(new IslandChatSwitchEvent(player, island, 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);
}
}
} else {
messageManager.sendMessage(player, configLoad.getString("Command.Island.Chat.Owner.Message"));
@ -110,7 +98,12 @@ public class ChatCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -85,7 +85,12 @@ public class CloseCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -188,7 +188,12 @@ public class ConfirmCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "confirmation" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -66,7 +66,12 @@ public class ControlPanelCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "cp" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -151,7 +151,12 @@ public class CoopCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -80,10 +80,10 @@ public class CreateCommand extends SubCommand {
return;
}
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);
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);
}
}
}
}
@ -114,7 +114,12 @@ public class CreateCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "new" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -133,7 +133,12 @@ public class CurrentCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "cur" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -97,7 +97,12 @@ public class DeleteCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "remove", "disband" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -129,7 +129,12 @@ public class DemoteCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -93,7 +93,12 @@ public class DenyCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -45,7 +45,7 @@ public class InformationCommand extends SubCommand {
UUID islandOwnerUUID = null;
if (args.length == 1) {
if (player.hasPermission("skyblock.teleport") || player.hasPermission("skyblock.*")) {
if (player.hasPermission("skyblock.information") || player.hasPermission("skyblock.*")) {
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
if (targetPlayer == null) {
@ -119,7 +119,12 @@ public class InformationCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "info" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -145,7 +145,12 @@ public class InviteCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -114,7 +114,12 @@ public class KickAllCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -253,7 +253,12 @@ public class KickCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -100,7 +100,12 @@ public class LeaderboardCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "lb", "top" };
}
@Override
public String[] getArguments() {
return new String[] { "level", "votes" };
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -171,7 +171,12 @@ public class LeaveCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -160,7 +160,12 @@ public class LevelCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "levelling" , "points" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -66,7 +66,12 @@ public class MembersCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -85,7 +85,12 @@ public class OpenCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -160,7 +160,12 @@ public class OwnerCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "ownership", "transfer", "makeleader", "makeowner" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -155,7 +155,12 @@ public class PromoteCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -87,7 +87,12 @@ public class PublicCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "pub", "private", "pri" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -78,7 +78,12 @@ public class RollbackCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -168,7 +168,12 @@ public class SetSpawnCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[] { "main", "visitor" };
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -78,12 +78,17 @@ public class SettingsCommand extends SubCommand {
return this;
}
@Override
public String[] getAliases() {
return new String[] { "permissions", "perms", "p" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -154,7 +154,12 @@ public class TeleportCommand extends SubCommand {
public String[] getAliases() {
return new String[] { "tp", "spawn", "home", "go" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -131,7 +131,12 @@ public class UnbanCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -75,7 +75,12 @@ public class UpgradeCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -76,7 +76,12 @@ public class VisitCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -82,7 +82,12 @@ public class VisitorsCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -148,7 +148,12 @@ public class VoteCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -77,7 +77,12 @@ public class WeatherCommand extends SubCommand {
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Default;

View File

@ -75,6 +75,11 @@ public class CreateCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -156,6 +156,11 @@ public class DeleteCommand extends SubCommand {
return new String[] { "remove", "disband" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -80,6 +80,11 @@ public class GeneratorCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -69,6 +69,11 @@ public class LevelCommand extends SubCommand {
return new String[] { "levelling" , "points" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -122,6 +122,11 @@ public class OwnerCommand extends SubCommand {
return new String[] { "ownership", "leader" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -118,6 +118,11 @@ public class ReloadCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -133,6 +133,11 @@ public class RemoveHologramCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[] { "level", "votes" };
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -111,6 +111,11 @@ public class SetHologramCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[] { "level", "votes" };
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -154,6 +154,11 @@ public class SetSizeCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -84,6 +84,11 @@ public class SetSpawnCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -69,6 +69,11 @@ public class SettingsCommand extends SubCommand {
return new String[] { "permissions", "perms", "p" };
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -177,12 +177,17 @@ public class StructureCommand extends SubCommand {
return this;
}
@Override
public String[] getAliases() {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[] { "tool", "save" };
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -79,6 +79,11 @@ public class UpgradeCommand extends SubCommand {
return new String[0];
}
@Override
public String[] getArguments() {
return new String[0];
}
@Override
public Type getType() {
return CommandManager.Type.Admin;

View File

@ -14,20 +14,23 @@ import me.goodandevil.skyblock.SkyBlock;
public class FileChecker {
private final SkyBlock skyblock;
private final FileManager fileManager;
private Map<File.Type, File> loadedFiles;
public FileChecker(SkyBlock skyblock, FileManager fileManager, String configurationFileName) {
this.skyblock = skyblock;
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)));
loadedFiles.put(File.Type.RESOURCE, new File(null, null, YamlConfiguration.loadConfiguration(new InputStreamReader(skyblock.getResource(configurationFileName)))));
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() {
@ -52,10 +55,8 @@ public class FileChecker {
File resourceFile = loadedFiles.get(File.Type.RESOURCE);
for (String configKeyList : file.getKeys().keySet()) {
if (!configKeyList.contains(skyblock.getDescription().getName() + "_COMMENT")) {
if (!resourceFile.getKeys().containsKey(configKeyList)) {
configLoad.set(configKeyList, null);
}
if (!resourceFile.getKeys().containsKey(configKeyList)) {
configLoad.set(configKeyList, null);
}
}
} else if (fileType == File.Type.RESOURCE) {
@ -63,10 +64,8 @@ public class FileChecker {
FileConfiguration createdConfigLoad = createdFile.getFileConfiguration();
for (String configKeyList : file.getKeys().keySet()) {
if (!configKeyList.contains(skyblock.getDescription().getName() + "_COMMENT")) {
if (createdConfigLoad.getString(configKeyList) == null) {
createdConfigLoad.set(configKeyList, file.getKeys().get(configKeyList));
}
if (createdConfigLoad.getString(configKeyList) == null) {
createdConfigLoad.set(configKeyList, file.getKeys().get(configKeyList));
}
}
}

View File

@ -4,6 +4,7 @@ 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;
@ -11,6 +12,7 @@ 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.Map;
@ -60,7 +62,14 @@ public class FileManager {
if (configFile.exists()) {
if (configFileList.equals("config.yml") || configFileList.equals("language.yml") || configFileList.equals("settings.yml")) {
FileChecker fileChecker = new FileChecker(skyblock, this, configFileList);
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();
@ -162,19 +171,15 @@ public class FileManager {
return loadedConfigs.containsKey(configPath.getPath());
}
public InputStream getConfigContent(File configFile) {
if(!configFile.exists()) {
return null;
}
public InputStream getConfigContent(Reader reader) {
try {
String addLine, currentLine, pluginName = skyblock.getDescription().getName();
int commentNum = 0;
StringBuilder whole = new StringBuilder("");
BufferedReader reader = new BufferedReader(new FileReader(configFile));
BufferedReader bufferedReader = new BufferedReader(reader);
while((currentLine = reader.readLine()) != null) {
while((currentLine = bufferedReader.readLine()) != null) {
if(currentLine.contains("#")) {
addLine = currentLine.replace("[!]", "IMPORTANT").replace(":", "-").replaceFirst("#", pluginName + "_COMMENT_" + commentNum + ":");
whole.append(addLine + "\n");
@ -186,7 +191,7 @@ public class FileManager {
String config = whole.toString();
InputStream configStream = new ByteArrayInputStream(config.getBytes(Charset.forName("UTF-8")));
reader.close();
bufferedReader.close();
return configStream;
} catch (IOException e) {
@ -196,6 +201,20 @@ public class FileManager {
}
}
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("");

View File

@ -56,33 +56,83 @@ public class GeneratorManager {
}
}
@SuppressWarnings("deprecation")
public boolean isGenerator(Block block) {
if (block.getRelative(BlockFace.UP).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.UP).getType() != Materials.WATER.parseMaterial()) {
Block flowBlock = null;
if ((block.getRelative(BlockFace.NORTH).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.NORTH).getType() != Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.EAST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.EAST).getType() == Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.SOUTH).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.SOUTH).getType() != Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.WEST).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.WEST).getType() == Materials.LAVA.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.EAST).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.EAST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
if ((block.getRelative(BlockFace.EAST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.EAST).getType() == Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.WEST).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.WEST).getType() == Materials.LAVA.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.EAST).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.EAST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
if (!isFlowingTowardsBlock(block, BlockFace.NORTH, BlockFace.SOUTH)) {
return false;
} else if (!isFlowingTowardsBlock(block, BlockFace.SOUTH, BlockFace.NORTH)) {
return false;
}
flowBlock = block.getRelative(BlockFace.EAST);
} else if ((block.getRelative(BlockFace.NORTH).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.NORTH).getType() != Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.EAST).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.EAST).getType() == Materials.LAVA.parseMaterial()) && (block.getRelative(BlockFace.SOUTH).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.SOUTH).getType() != Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.WEST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.WEST).getType() == Materials.WATER.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.WEST).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.WEST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
} else if ((block.getRelative(BlockFace.EAST).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.EAST).getType() == Materials.LAVA.parseMaterial()) && (block.getRelative(BlockFace.WEST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.WEST).getType() == Materials.WATER.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.WEST).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.WEST).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
if (!isFlowingTowardsBlock(block, BlockFace.NORTH, BlockFace.SOUTH)) {
return false;
} else if (!isFlowingTowardsBlock(block, BlockFace.SOUTH, BlockFace.NORTH)) {
return false;
}
flowBlock = block.getRelative(BlockFace.WEST);
} else if (((block.getRelative(BlockFace.NORTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.NORTH).getType() == Materials.WATER.parseMaterial()) && block.getRelative(BlockFace.EAST).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.EAST).getType() != Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.SOUTH).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.SOUTH).getType() == Materials.LAVA.parseMaterial()) && (block.getRelative(BlockFace.WEST).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.WEST).getType() != Materials.WATER.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.NORTH).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.NORTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
} else if (((block.getRelative(BlockFace.NORTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.NORTH).getType() == Materials.WATER.parseMaterial())) && (block.getRelative(BlockFace.SOUTH).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.SOUTH).getType() == Materials.LAVA.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.NORTH).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.NORTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
if (!isFlowingTowardsBlock(block, BlockFace.WEST, BlockFace.EAST)) {
return false;
} else if (!isFlowingTowardsBlock(block, BlockFace.EAST, BlockFace.WEST)) {
return false;
}
flowBlock = block.getRelative(BlockFace.NORTH);
} else if (((block.getRelative(BlockFace.NORTH).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.NORTH).getType() == Materials.LAVA.parseMaterial()) && block.getRelative(BlockFace.EAST).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.EAST).getType() != Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.SOUTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.SOUTH).getType() == Materials.WATER.parseMaterial()) && (block.getRelative(BlockFace.WEST).getType() != Materials.LEGACY_STATIONARY_WATER.getPostMaterial() && block.getRelative(BlockFace.WEST).getType() != Materials.WATER.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.SOUTH).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.SOUTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
} else if (((block.getRelative(BlockFace.NORTH).getType() == Materials.LEGACY_STATIONARY_LAVA.getPostMaterial() || block.getRelative(BlockFace.NORTH).getType() == Materials.LAVA.parseMaterial())) && (block.getRelative(BlockFace.SOUTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(BlockFace.SOUTH).getType() == Materials.WATER.parseMaterial()) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.SOUTH).getType() == Material.AIR || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(BlockFace.SOUTH).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial())) {
if (!isFlowingTowardsBlock(block, BlockFace.WEST, BlockFace.EAST)) {
return false;
} else if (!isFlowingTowardsBlock(block, BlockFace.EAST, BlockFace.WEST)) {
return false;
}
flowBlock = block.getRelative(BlockFace.SOUTH);
}
if (flowBlock != null) {
if (NMSUtil.getVersionNumber() > 12) {
if (flowBlock.getState().getBlockData() instanceof Levelled) {
if (((Levelled) flowBlock.getState().getBlockData()).getLevel() != 0) {
return true;
}
return isFlowingBlock(flowBlock);
}
}
return false;
}
private boolean isFlowingTowardsBlock(Block block, BlockFace blockFace1, BlockFace blockFace2) {
if (block.getRelative(blockFace1).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(blockFace1).getType() == Materials.WATER.parseMaterial()) {
if (isFlowingBlock(block.getRelative(blockFace1)) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(blockFace1).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(blockFace1).getType() == Materials.WATER.parseMaterial())) {
if (block.getRelative(blockFace2).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getRelative(blockFace2).getType() == Materials.WATER.parseMaterial()) {
if (isFlowingBlock(block.getRelative(blockFace2)) && (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(blockFace2).getType() == Materials.LEGACY_STATIONARY_WATER.getPostMaterial() || block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getRelative(blockFace2).getType() == Materials.WATER.parseMaterial())) {
return true;
} else {
return false;
}
} else {
if (flowBlock.getData() != 0) {
return true;
}
return true;
}
} else {
return false;
}
}
return true;
}
@SuppressWarnings("deprecation")
private boolean isFlowingBlock(Block block) {
if (NMSUtil.getVersionNumber() > 12) {
if (block.getState().getBlockData() instanceof Levelled) {
if (((Levelled) block.getState().getBlockData()).getLevel() != 0) {
return true;
}
}
} else {
if (block.getData() != 0) {
return true;
}
}
@ -148,7 +198,11 @@ public class GeneratorManager {
}
if (chances.size() != 0) {
return generator.getGeneratorMaterials().get(chances.get(new Random().nextInt(chances.size()))).getMaterials();
int rndNum = new Random().nextInt(chances.size());
if (rndNum != 0) {
return generator.getGeneratorMaterials().get(chances.get(rndNum)).getMaterials();
}
}
}

View File

@ -190,7 +190,7 @@ public class Island {
VisitManager visitManager = skyblock.getVisitManager();
if (!visitManager.hasIsland(getOwnerUUID())) {
visitManager.createIsland(getOwnerUUID(), new org.bukkit.Location[] { getLocation(Location.World.Normal, Location.Environment.Island), getLocation(Location.World.Nether, Location.Environment.Island) }, size, getRole(Role.Member).size() + getRole(Role.Operator).size() + 1, level, getMessage(Message.Signature), isOpen());
visitManager.createIsland(getOwnerUUID(), new org.bukkit.Location[] { getLocation(Location.World.Normal, Location.Environment.Island), getLocation(Location.World.Nether, Location.Environment.Island) }, size, getRole(Role.Member).size() + getRole(Role.Operator).size() + 1, visitManager.getIslandSafeLevel(ownerUUID), level, getMessage(Message.Signature), isOpen());
}
BanManager banManager = skyblock.getBanManager();

View File

@ -134,7 +134,7 @@ public class IslandManager {
return null;
}
public void createIsland(Player player, Structure structure) {
public boolean createIsland(Player player, Structure structure) {
ScoreboardManager scoreboardManager = skyblock.getScoreboardManager();
FileManager fileManager = skyblock.getFileManager();
@ -142,7 +142,7 @@ public class IslandManager {
skyblock.getMessageManager().sendMessage(player, fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Creator.Error.Message"));
skyblock.getSoundManager().playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
return;
return false;
}
Island island = new Island(player.getUniqueId(), prepareNextAvailableLocation(Location.World.Normal), prepareNextAvailableLocation(Location.World.Nether));
@ -256,6 +256,8 @@ public class IslandManager {
}
}, 20L);
}
return true;
}
public void giveIslandOwnership(UUID uuid) {
@ -708,6 +710,24 @@ public class IslandManager {
return true;
}
public boolean hasSetting(org.bukkit.Location location, Setting.Role role, String setting) {
for (UUID islandList : getIslands().keySet()) {
Island island = getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(location, island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (island.getSetting(role, setting).getStatus()) {
return true;
}
return false;
}
}
}
return false;
}
public void setSpawnProtection(org.bukkit.Location location) {
location.getBlock().setType(Materials.LEGACY_PISTON_MOVING_PIECE.getPostMaterial());
location.clone().add(0.0D, 1.0D, 0.0D).getBlock().setType(Materials.LEGACY_PISTON_MOVING_PIECE.getPostMaterial());
@ -910,4 +930,24 @@ public class IslandManager {
return true;
}
public int getIslandSafeLevel(Island island) {
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml"));
FileConfiguration configLoad = config.getFileConfiguration();
int safeLevel = 0;
Map<String, Boolean> settings = new HashMap<>();
settings.put("KeepItemsOnDeath", false);
settings.put("PvP", true);
settings.put("Damage", true);
for (String settingList : settings.keySet()) {
if (configLoad.getBoolean("Island.Settings." + settingList + ".Enable") && island.getSetting(Setting.Role.Owner, settingList).getStatus() == settings.get(settingList)) {
safeLevel++;
}
}
return safeLevel;
}
}

View File

@ -278,23 +278,9 @@ public class Block implements Listener {
org.bukkit.block.Block block = event.getBlock();
if (block.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || block.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
IslandManager islandManager = skyblock.getIslandManager();
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(block.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getSetting(Setting.Role.Owner, "FireSpread").getStatus()) {
event.setCancelled(true);
}
return;
}
}
if (!skyblock.getIslandManager().hasSetting(block.getLocation(), Setting.Role.Owner, "FireSpread")) {
event.setCancelled(false);
}
event.setCancelled(true);
}
}
@ -303,23 +289,9 @@ public class Block implements Listener {
org.bukkit.block.Block block = event.getBlock();
if (block.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || block.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
IslandManager islandManager = skyblock.getIslandManager();
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(block.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getSetting(Setting.Role.Owner, "FireSpread").getStatus()) {
event.setCancelled(true);
}
return;
}
}
if (!skyblock.getIslandManager().hasSetting(block.getLocation(), Setting.Role.Owner, "FireSpread")) {
event.setCancelled(false);
}
event.setCancelled(true);
}
}
@ -377,23 +349,9 @@ public class Block implements Listener {
org.bukkit.block.Block block = event.getBlock();
if (block.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || block.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
IslandManager islandManager = skyblock.getIslandManager();
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(block.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getSetting(Setting.Role.Owner, "LeafDecay").getStatus()) {
event.setCancelled(true);
}
return;
}
}
if (!skyblock.getIslandManager().hasSetting(block.getLocation(), Setting.Role.Owner, "LeafDecay")) {
event.setCancelled(false);
}
event.setCancelled(true);
}
}
}

View File

@ -4,6 +4,7 @@ import java.io.File;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -81,7 +82,7 @@ public class Chat implements Listener {
if (!islandChatEvent.isCancelled()) {
for (UUID islandMembersOnlineList : islandManager.getMembersOnline(island)) {
Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList);
targetPlayer.sendMessage(messageManager.replaceMessage(targetPlayer, islandChatEvent.getFormat().replace("%role", islandRole).replace("%player", player.getName())).replace("%message", islandChatEvent.getMessage()));
targetPlayer.sendMessage(ChatColor.translateAlternateColorCodes('&', messageManager.replaceMessage(targetPlayer, islandChatEvent.getFormat().replace("%role", islandRole).replace("%player", player.getName()))).replace("%message", islandChatEvent.getMessage()));
}
}
}

View File

@ -1,7 +1,6 @@
package me.goodandevil.skyblock.listeners;
import java.io.File;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
@ -12,11 +11,8 @@ import org.bukkit.event.entity.PlayerDeathEvent;
import me.goodandevil.skyblock.SkyBlock;
import me.goodandevil.skyblock.config.FileManager.Config;
import me.goodandevil.skyblock.island.Island;
import me.goodandevil.skyblock.island.Location;
import me.goodandevil.skyblock.island.IslandManager;
import me.goodandevil.skyblock.island.Setting;
import me.goodandevil.skyblock.utils.world.LocationUtil;
public class Death implements Listener {
@ -35,20 +31,14 @@ public class Death implements Listener {
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml"));
FileConfiguration configLoad = config.getFileConfiguration();
IslandManager islandManager = skyblock.getIslandManager();
boolean keepInventory = false;
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
if (LocationUtil.isLocationAtLocationRadius(player.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (island.getSetting(Setting.Role.Owner, "KeepItemsOnDeath").getStatus()) {
keepInventory = true;
}
break;
if (configLoad.getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) {
if (skyblock.getIslandManager().hasSetting(player.getLocation(), Setting.Role.Owner, "KeepItemsOnDeath")) {
keepInventory = true;
}
} else {
keepInventory = true;
}
if (keepInventory) {

View File

@ -4,8 +4,8 @@ import java.io.File;
import java.util.List;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.ExperienceOrb;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@ -14,15 +14,19 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityTameEvent;
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.player.PlayerShearEntityEvent;
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.Location;
import me.goodandevil.skyblock.island.IslandManager;
@ -30,6 +34,7 @@ import me.goodandevil.skyblock.island.Setting;
import me.goodandevil.skyblock.message.MessageManager;
import me.goodandevil.skyblock.sound.SoundManager;
import me.goodandevil.skyblock.upgrade.Upgrade;
import me.goodandevil.skyblock.utils.version.NMSUtil;
import me.goodandevil.skyblock.utils.version.Sounds;
import me.goodandevil.skyblock.utils.world.LocationUtil;
@ -40,30 +45,77 @@ public class Entity implements Listener {
public Entity(SkyBlock skyblock) {
this.skyblock = skyblock;
}
@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player)) {
return;
}
Player player = (Player) event.getEntity();
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (event.getCause() != null) {
if (event.getCause() == DamageCause.VOID) {
return;
} else if (event.getCause() == DamageCause.ENTITY_ATTACK) {
EntityDamageByEntityEvent entityDamageByEntityEvent = (EntityDamageByEntityEvent) event;
if (entityDamageByEntityEvent.getDamager() != null && entityDamageByEntityEvent.getDamager() instanceof Player) {
return;
}
} else {
if (NMSUtil.getVersionNumber() > 11) {
if (event.getCause() == DamageCause.valueOf("ENTITY_SWEEP_ATTACK")) {
EntityDamageByEntityEvent entityDamageByEntityEvent = (EntityDamageByEntityEvent) event;
if (entityDamageByEntityEvent.getDamager() != null && entityDamageByEntityEvent.getDamager() instanceof Player) {
return;
}
}
}
}
}
if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) {
if (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Settings.PvP.Enable") || !skyblock.getIslandManager().hasSetting(event.getEntity().getLocation(), Setting.Role.Owner, "Damage")) {
event.setCancelled(true);
}
} else {
event.setCancelled(true);
return;
}
}
}
@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
MessageManager messageManager = skyblock.getMessageManager();
SoundManager soundManager = skyblock.getSoundManager();
FileManager fileManager = skyblock.getFileManager();
if (event.getDamager() instanceof Player) {
Player player = (Player) event.getDamager();
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (event.getEntity() instanceof Player) {
IslandManager islandManager = skyblock.getIslandManager();
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) {
if (!skyblock.getIslandManager().hasSetting(player.getLocation(), Setting.Role.Owner, "PvP")) {
event.setCancelled(true);
}
} else {
event.setCancelled(true);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(event.getEntity().getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getSetting(Setting.Role.Owner, "PvP").getStatus()) {
event.setCancelled(true);
}
return;
}
return;
}
} else if (event.getEntity() instanceof ArmorStand) {
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!skyblock.getIslandManager().hasPermission(player, "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);
}
}
} else {
@ -77,34 +129,43 @@ public class Entity implements Listener {
}
}
}
return;
}
if (event.getEntity() instanceof ArmorStand) {
if (event.getDamager() instanceof Player) {
Player player = (Player) event.getDamager();
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!skyblock.getIslandManager().hasPermission(player, "Destroy")) {
if (event.getDamager() instanceof Projectile && ((Projectile) event.getDamager()).getShooter() instanceof Player) {
Player player = (Player) ((Projectile) event.getDamager()).getShooter();
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (event.getEntity() instanceof Player) {
if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) {
if (!skyblock.getIslandManager().hasSetting(player.getLocation(), Setting.Role.Owner, "PvP")) {
event.setCancelled(true);
}
} else {
event.setCancelled(true);
}
} else {
if (!skyblock.getIslandManager().hasPermission(player, "MobHurting")) {
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);
soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F);
return;
}
}
} else if (event.getDamager() instanceof Projectile) {
Projectile projectile = (Projectile) event.getDamager();
}
} else {
if (event.getEntity() instanceof Player) {
Player player = (Player) event.getEntity();
if (projectile.getShooter() instanceof Player) {
Player player = (Player) projectile.getShooter();
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!skyblock.getIslandManager().hasPermission(player, "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);
}
}
if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Settings.Damage.Enable")) {
if (!skyblock.getIslandManager().hasSetting(player.getLocation(), Setting.Role.Owner, "Damage")) {
event.setCancelled(true);
}
} else {
event.setCancelled(true);
}
}
}
@ -126,16 +187,18 @@ public class Entity implements Listener {
@EventHandler
public void onEntityTaming(EntityTameEvent event) {
if (Bukkit.getServer().getPlayer(event.getOwner().getUniqueId()) != null) {
Player player = Bukkit.getServer().getPlayer(event.getOwner().getUniqueId());
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!skyblock.getIslandManager().hasPermission(player, "MobTaming")) {
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);
}
if (!(event.getOwner() instanceof Player)) {
return;
}
Player player = (Player) event.getOwner();
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!skyblock.getIslandManager().hasPermission(player, "MobTaming")) {
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);
}
}
}
@ -150,24 +213,10 @@ public class Entity implements Listener {
if (!(entity instanceof Player)) {
if (entity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || entity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
IslandManager islandManager = skyblock.getIslandManager();
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(entity.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getSetting(Setting.Role.Owner, "MobGriefing").getStatus()) {
event.setCancelled(true);
}
return;
}
}
}
event.setCancelled(true);
}
if (!skyblock.getIslandManager().hasSetting(entity.getLocation(), Setting.Role.Owner, "MobGriefing")) {
event.setCancelled(true);
}
}
}
}
@ -176,23 +225,9 @@ public class Entity implements Listener {
org.bukkit.entity.Entity entity = event.getEntity();
if (entity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || entity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
IslandManager islandManager = skyblock.getIslandManager();
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(entity.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getSetting(Setting.Role.Owner, "Explosions").getStatus()) {
event.setCancelled(true);
}
return;
}
}
}
event.setCancelled(true);
if (!skyblock.getIslandManager().hasSetting(event.getEntity().getLocation(), Setting.Role.Owner, "Explosions")) {
event.setCancelled(true);
}
}
}
@ -232,9 +267,29 @@ public class Entity implements Listener {
}
}
@EventHandler
public void onEntityTargetLivingEntity(EntityTargetLivingEntityEvent event) {
if (!(event.getTarget() instanceof Player)) {
return;
}
if (!(event.getEntity() instanceof ExperienceOrb)) {
return;
}
Player player = (Player) event.getTarget();
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!skyblock.getIslandManager().hasPermission(player, "ExperienceOrbPickup")) {
event.setTarget(null);
event.setCancelled(true);
}
}
}
@EventHandler
public void onCreatureSpawn(CreatureSpawnEvent event) {
if (event.getSpawnReason() == SpawnReason.CUSTOM || event.getSpawnReason() == SpawnReason.NATURAL) {
if (event.getSpawnReason() == SpawnReason.NATURAL) {
LivingEntity livingEntity = event.getEntity();
if (event.getEntity() instanceof ArmorStand || event.getEntity() instanceof FallingBlock) {
@ -243,23 +298,9 @@ public class Entity implements Listener {
if (livingEntity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || livingEntity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!livingEntity.hasMetadata("SkyBlock")) {
IslandManager islandManager = skyblock.getIslandManager();
for (UUID islandList : islandManager.getIslands().keySet()) {
Island island = islandManager.getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(livingEntity.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getSetting(Setting.Role.Owner, "NaturalMobSpawning").getStatus()) {
livingEntity.remove();
}
return;
}
}
}
livingEntity.remove();
if (!skyblock.getIslandManager().hasSetting(event.getEntity().getLocation(), Setting.Role.Owner, "NaturalMobSpawning")) {
livingEntity.remove();
}
}
}
}

View File

@ -101,9 +101,21 @@ public class Move implements Listener {
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml"));
FileConfiguration configLoad = config.getFileConfiguration();
boolean keepItemsOnDeath;
if (configLoad.getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) {
if (island.getSetting(Setting.Role.Owner, "KeepItemsOnDeath").getStatus()) {
keepItemsOnDeath = true;
} else {
keepItemsOnDeath = false;
}
} else {
keepItemsOnDeath = true;
}
if (configLoad.getBoolean("Island.World." + world.name() + ".Liquid.Enable")) {
if (to.getY() <= configLoad.getInt("Island.World." + world.name() + ".Liquid.Height")) {
if (island.getSetting(Setting.Role.Owner, "KeepItemsOnDeath").getStatus()) {
if (keepItemsOnDeath) {
player.setFallDistance(0.0F);
player.teleport(island.getLocation(world, me.goodandevil.skyblock.island.Location.Environment.Main));
@ -116,7 +128,7 @@ public class Move implements Listener {
if (configLoad.getBoolean("Island.Void.Teleport.Enable")) {
if (to.getY() <= configLoad.getInt("Island.Void.Teleport.Offset")) {
if (!island.getSetting(Setting.Role.Owner, "KeepItemsOnDeath").getStatus()) {
if (!keepItemsOnDeath) {
player.getInventory().clear();
player.setLevel(0);
player.setExp(0.0F);

View File

@ -77,7 +77,7 @@ public class Teleport implements Listener {
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(event.getTo(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (!island.getOwnerUUID().equals(playerData.getOwner())) {
if (!(player.hasPermission("skyblock.bypass") && player.hasPermission("skyblock.bypass.*") && player.hasPermission("skyblock.*"))) {
if (!player.hasPermission("skyblock.bypass") && !player.hasPermission("skyblock.bypass.*") && !player.hasPermission("skyblock.*")) {
if (!island.isOpen() && !island.isCoopPlayer(player.getUniqueId())) {
event.setCancelled(true);

View File

@ -0,0 +1,5 @@
package me.goodandevil.skyblock.menus;
public class Border {
}

View File

@ -145,10 +145,10 @@ public class Creator {
return;
}
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);
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;
}

View File

@ -10,8 +10,6 @@ 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.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;
@ -154,6 +152,14 @@ public class Information {
Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml"));
List<String> 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")) {
@ -175,7 +181,7 @@ public class Information {
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, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%votes#" + visit.getVoters().size(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + mainConfig.getFileConfiguration().getInt("Island.Visitor.Capacity"), "%owner#" + islandOwnerName }), null, null), 2);
nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), configLoad.getString("Menu.Information.Categories.Item.Information.Displayname"), itemLore, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%votes#" + visit.getVoters().size(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + mainConfig.getFileConfiguration().getInt("Island.Visitor.Capacity"), "%owner#" + islandOwnerName, "%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")) {
@ -197,7 +203,7 @@ public class Information {
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, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + mainConfig.getFileConfiguration().getInt("Island.Visitor.Capacity"), "%owner#" + islandOwnerName }), null, null), 2);
nInv.addItem(nInv.createItem(Materials.LEGACY_EMPTY_MAP.getPostItem(), configLoad.getString("Menu.Information.Categories.Item.Information.Displayname"), itemLore, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + mainConfig.getFileConfiguration().getInt("Island.Visitor.Capacity"), "%owner#" + islandOwnerName, "%safety#" + safety }), null, null), 2);
}
nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Information.Categories.Title")));
@ -454,57 +460,6 @@ public class Information {
}
}
}
@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();
PlayerDataManager playerDataManager = skyblock.getPlayerDataManager();
SoundManager soundManager = skyblock.getSoundManager();
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
FileConfiguration configLoad = config.getFileConfiguration();
if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Information.Categories.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Information.Members.Title")))) {
event.setCancelled(true);
PlayerData playerData;
if (playerDataManager.hasPlayerData(player)) {
playerData = playerDataManager.getPlayerData(player);
if (playerData.getViewer() == null) {
return;
}
} else {
return;
}
if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Information.Categories.Title")))) {
if ((event.getCurrentItem().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);
player.closeInventory();
} else if ((event.getCurrentItem().getType() == Materials.ITEM_FRAME.parseMaterial()) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Information.Categories.Item.Members.Displayname"))))) {
playerData.setViewer(new Information.Viewer(((Information.Viewer) playerData.getViewer()).getOwner(), Information.Viewer.Type.Members));
open(player);
soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F);
} else if ((event.getCurrentItem().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);
} else if ((event.getCurrentItem().getType() == Materials.ITEM_FRAME.parseMaterial()) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Information.Categories.Item.Visitors.Displayname"))))) {
playerData.setViewer(new Information.Viewer(((Information.Viewer) playerData.getViewer()).getOwner(), Information.Viewer.Type.Visitors));
open(player);
soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F);
}
} else if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Information.Members.Title")))) {
}
}
}
}
public static class Viewer {

View File

@ -313,6 +313,10 @@ public class Settings {
} else {
settingList.setStatus(true);
}
if (settingList.getName().equals("KeepItemsOnDeath") || settingList.getName().equals("PvP") || settingList.getName().equals("Damage")) {
island.getVisit().setSafeLevel(islandManager.getIslandSafeLevel(island));
}
}
break;
@ -399,9 +403,10 @@ public class Settings {
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, "ArmorStandPlacement", new ItemStack(Material.ARMOR_STAND)), 52);
nInv.addItemStack(createItem(island, role, "Portal", new ItemStack(Material.ENDER_PEARL)), 49);
nInv.addItemStack(createItem(island, role, "Hopper", new ItemStack(Material.HOPPER)), 50);
nInv.addItemStack(createItem(island, role, "ArmorStandPlacement", new ItemStack(Material.ARMOR_STAND)), 51);
nInv.addItemStack(createItem(island, role, "ExperienceOrbPickup", Materials.EXPERIENCE_BOTTLE.parseItem()), 52);
nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Settings." + role.name() + ".Title")));
nInv.setRows(6);
@ -468,13 +473,79 @@ public class Settings {
nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Settings." + role.name() + ".Title")));
} else if (role == me.goodandevil.skyblock.island.Setting.Role.Owner) {
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);
if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.PvP.Enable")) {
if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.KeepItemsOnDeath.Enable")) {
if (mainConfig.getFileConfiguration().getBoolean("Island.Settings.Damage.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, "Damage", Materials.ROSE_RED.parseItem()), 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")) {
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.ROSE_RED.parseItem()), 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")) {
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.ROSE_RED.parseItem()), 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")) {
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.ROSE_RED.parseItem()), 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);

View File

@ -370,6 +370,14 @@ public class Visit {
List<String> 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 = "";
@ -411,7 +419,7 @@ public class Visit {
}
}
nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player", targetPlayerName), itemLore, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%votes#" + visit.getVoters().size(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + playerCapacity, "%action#" + voteAction }), null, null), inventorySlot);
nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player", targetPlayerName), itemLore, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%votes#" + visit.getVoters().size(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + playerCapacity, "%action#" + voteAction, "%safety#" + safety }), null, null), inventorySlot);
} else {
if (signatureEnabled) {
for (String itemLoreList : configLoad.getStringList("Menu.Visit.Item.Island.Vote.Disabled.Signature.Enabled.Lore")) {
@ -433,7 +441,7 @@ public class Visit {
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, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + playerCapacity }), null, null), inventorySlot);
nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player", targetPlayerName), itemLore, nInv.createItemLoreVariable(new String[] { "%level#" + visit.getLevel().getLevel(), "%members#" + visit.getMembers(), "%visits#" + visit.getVisitors().size(), "%players#" + islandManager.getPlayersAtIsland(island).size(), "%player_capacity#" + playerCapacity, "%safety#" + safety }), null, null), inventorySlot);
}
}
}

View File

@ -10,9 +10,6 @@ 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.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@ -20,13 +17,15 @@ 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.message.MessageManager;
import me.goodandevil.skyblock.sound.SoundManager;
import me.goodandevil.skyblock.utils.item.InventoryUtil;
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 implements Listener {
public class Settings {
private static Settings instance;
@ -41,220 +40,133 @@ public class Settings implements Listener {
public void open(Player player, Settings.Type menuType, me.goodandevil.skyblock.island.Setting.Role role) {
SkyBlock skyblock = SkyBlock.getInstance();
Island island = skyblock.getIslandManager().getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner());
InventoryUtil inv = null;
MessageManager messageManager = skyblock.getMessageManager();
SoundManager soundManager = skyblock.getSoundManager();
FileManager fileManager = skyblock.getFileManager();
Config mainConfig = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml"));
Config languageConfig = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
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) {
inv = new InventoryUtil(configLoad.getString("Menu.Admin.Settings.Categories.Title"), null, 1);
inv.addItem(inv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Admin.Settings.Categories.Item.Exit.Displayname"), null, null, null, null), 0, 8);
inv.addItem(inv.createItem(new ItemStack(Material.SIGN), configLoad.getString("Menu.Admin.Settings.Categories.Item.Visitor.Displayname"), configLoad.getStringList("Menu.Admin.Settings.Categories.Item.Visitor.Lore"), null, null, null), 2);
inv.addItem(inv.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);
inv.addItem(inv.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);
inv.addItem(inv.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);
} else if (menuType == Settings.Type.Role) {
if (role == me.goodandevil.skyblock.island.Setting.Role.Visitor || role == me.goodandevil.skyblock.island.Setting.Role.Member) {
inv = new InventoryUtil(configLoad.getString("Menu.Admin.Settings." + role.name() + ".Title"), null, 6);
inv.addItemStack(createItem(island, role, "Destroy", Material.DIAMOND_PICKAXE), 9);
inv.addItemStack(createItem(island, role, "Place", Material.GRASS), 10);
inv.addItemStack(createItem(island, role, "Anvil", Material.ANVIL), 11);
inv.addItemStack(createItem(island, role, "ArmorStand", Material.ARMOR_STAND), 12);
inv.addItemStack(createItem(island, role, "Beacon", Material.BEACON), 13);
inv.addItemStack(createItem(island, role, "Bed", Materials.WHITE_BED.parseMaterial()), 14);
inv.addItemStack(createItem(island, role, "AnimalBreeding", Material.WHEAT), 15);
inv.addItemStack(createItem(island, role, "Brewing", Materials.LEGACY_BREWING_STAND.getPostMaterial()), 16);
inv.addItemStack(createItem(island, role, "Bucket", Material.BUCKET), 17);
inv.addItemStack(createItem(island, role, "WaterCollection", Material.POTION), 18);
inv.addItemStack(createItem(island, role, "Storage", Material.CHEST), 19);
inv.addItemStack(createItem(island, role, "Workbench", Materials.CRAFTING_TABLE.parseMaterial()), 20);
inv.addItemStack(createItem(island, role, "Crop", Materials.WHEAT_SEEDS.parseMaterial()), 21);
inv.addItemStack(createItem(island, role, "Door", Materials.OAK_DOOR.parseMaterial()), 22);
inv.addItemStack(createItem(island, role, "Gate", Materials.OAK_FENCE_GATE.parseMaterial()), 23);
inv.addItemStack(createItem(island, role, "Projectile", Material.ARROW), 24);
inv.addItemStack(createItem(island, role, "Enchant", Materials.ENCHANTING_TABLE.parseMaterial()), 25);
inv.addItemStack(createItem(island, role, "Fire", Material.FLINT_AND_STEEL), 26);
inv.addItemStack(createItem(island, role, "Furnace", Material.FURNACE), 27);
inv.addItemStack(createItem(island, role, "HorseInventory", Materials.CHEST_MINECART.parseMaterial()), 28);
inv.addItemStack(createItem(island, role, "MobRiding", Material.SADDLE), 29);
inv.addItemStack(createItem(island, role, "MobHurting", Materials.WOODEN_SWORD.parseMaterial()), 30);
inv.addItemStack(createItem(island, role, "MobTaming", Materials.POPPY.parseMaterial()), 31);
inv.addItemStack(createItem(island, role, "Leash", Materials.LEAD.parseMaterial()), 32);
inv.addItemStack(createItem(island, role, "LeverButton", Material.LEVER), 33);
inv.addItemStack(createItem(island, role, "Milking", Material.MILK_BUCKET), 34);
inv.addItemStack(createItem(island, role, "Jukebox", Material.JUKEBOX), 35);
inv.addItemStack(createItem(island, role, "PressurePlate", Materials.OAK_PRESSURE_PLATE.parseMaterial()), 37);
inv.addItemStack(createItem(island, role, "Redstone", Material.REDSTONE), 38);
inv.addItemStack(createItem(island, role, "Shearing", Material.SHEARS), 39);
inv.addItemStack(createItem(island, role, "Trading", Material.EMERALD), 40);
inv.addItemStack(createItem(island, role, "ItemDrop", Material.PUMPKIN_SEEDS), 41);
inv.addItemStack(createItem(island, role, "ItemPickup", Material.MELON_SEEDS), 42);
inv.addItemStack(createItem(island, role, "Fishing", Material.FISHING_ROD), 43);
inv.addItemStack(createItem(island, role, "DropperDispenser", Material.DISPENSER), 46);
inv.addItemStack(createItem(island, role, "SpawnEgg", Material.EGG), 47);
inv.addItemStack(createItem(island, role, "Cake", Material.CAKE), 48);
inv.addItemStack(createItem(island, role, "DragonEggUse", Material.DRAGON_EGG), 49);
inv.addItemStack(createItem(island, role, "MinecartBoat", Material.MINECART), 50);
inv.addItemStack(createItem(island, role, "Portal", Material.ENDER_PEARL), 51);
inv.addItemStack(createItem(island, role, "Hopper", Material.HOPPER), 52);
} else if (role == me.goodandevil.skyblock.island.Setting.Role.Operator) {
if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Banning")) {
inv = new InventoryUtil(configLoad.getString("Menu.Admin.Settings." + role.name() + ".Title"), null, 3);
inv.addItemStack(createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseMaterial()), 10);
inv.addItemStack(createItem(island, role, "Kick", Material.IRON_DOOR), 11);
inv.addItemStack(createItem(island, role, "Ban", Material.IRON_AXE), 12);
inv.addItemStack(createItem(island, role, "Unban", Material.NAME_TAG), 13);
inv.addItemStack(createItem(island, role, "Visitor", Material.SIGN), 14);
inv.addItemStack(createItem(island, role, "Member", Material.PAINTING), 15);
inv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseMaterial()), 16);
inv.addItemStack(createItem(island, role, "MainSpawn", Material.EMERALD), 20);
inv.addItemStack(createItem(island, role, "VisitorSpawn", Material.NETHER_STAR), 21);
inv.addItemStack(createItem(island, role, "Biome", Material.MAP), 23);
inv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseMaterial()), 24);
} else {
inv = new InventoryUtil(configLoad.getString("Menu.Admin.Settings." + role.name() + ".Title"), null, 2);
inv.addItemStack(createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseMaterial()), 9);
inv.addItemStack(createItem(island, role, "Kick", Material.IRON_DOOR), 10);
inv.addItemStack(createItem(island, role, "Visitor", Material.SIGN), 11);
inv.addItemStack(createItem(island, role, "Member", Material.PAINTING), 12);
inv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseMaterial()), 13);
inv.addItemStack(createItem(island, role, "MainSpawn", Material.EMERALD), 14);
inv.addItemStack(createItem(island, role, "VisitorSpawn", Material.NETHER_STAR), 15);
inv.addItemStack(createItem(island, role, "Biome", Material.MAP), 16);
inv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseMaterial()), 17);
}
} else if (role == me.goodandevil.skyblock.island.Setting.Role.Owner) {
inv = new InventoryUtil(configLoad.getString("Menu.Admin.Settings." + role.name() + ".Title"), null, 2);
inv.addItemStack(createItem(island, role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseMaterial()), 10);
inv.addItemStack(createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseMaterial()), 11);
inv.addItemStack(createItem(island, role, "PvP", Material.DIAMOND_SWORD), 12);
inv.addItemStack(createItem(island, role, "Explosions", Materials.GUNPOWDER.parseMaterial()), 13);
inv.addItemStack(createItem(island, role, "FireSpread", Material.FLINT_AND_STEEL), 14);
inv.addItemStack(createItem(island, role, "LeafDecay", Materials.OAK_LEAVES.parseMaterial()), 15);
inv.addItemStack(createItem(island, role, "KeepItemsOnDeath", Material.ITEM_FRAME), 16);
}
inv.addItem(inv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Admin.Settings." + role.name() + ".Item.Return.Displayname"), null, null, null, null), 0, 8);
}
player.openInventory(inv.getInventory());
}
private ItemStack createItem(Island island, me.goodandevil.skyblock.island.Setting.Role role, String setting, Material material) {
SkyBlock skyblock = SkyBlock.getInstance();
FileManager fileManager = skyblock.getFileManager();
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
FileConfiguration configLoad = config.getFileConfiguration();
List<String> itemLore = new ArrayList<>();
ItemStack is = new ItemStack(material);
ItemMeta im = is.getItemMeta();
String roleName = role.name();
if (role == me.goodandevil.skyblock.island.Setting.Role.Visitor || role == me.goodandevil.skyblock.island.Setting.Role.Member) {
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(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;
}
@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();
SoundManager soundManager = skyblock.getSoundManager();
FileManager fileManager = skyblock.getFileManager();
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
FileConfiguration configLoad = config.getFileConfiguration();
if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Categories.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Visitor.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Member.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Operator.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Owner.Title")))) {
event.setCancelled(true);
if (!(player.hasPermission("skyblock.admin.settings") || player.hasPermission("skyblock.admin.*") || player.hasPermission("skyblock.*"))) {
skyblock.getMessageManager().sendMessage(player, configLoad.getString("Island.Admin.Settings.Permission.Message"));
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
return;
}
if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Categories.Title")))) {
if ((event.getCurrentItem().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);
player.closeInventory();
} else if ((is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Categories.Item.Visitor.Displayname"))))) {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.Visitor);
soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F);
} else if ((event.getCurrentItem().getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Categories.Item.Member.Displayname"))))) {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.Member);
soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F);
} else if ((event.getCurrentItem().getType() == Material.ITEM_FRAME) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Categories.Item.Operator.Displayname"))))) {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.Operator);
soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F);
} else if ((event.getCurrentItem().getType() == Materials.OAK_SAPLING.parseMaterial()) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Categories.Item.Owner.Displayname"))))) {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.Owner);
soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F);
}
} else if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Visitor.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Member.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Operator.Title"))) || event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Owner.Title")))) {
if ((event.getCurrentItem().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"))))) {
open(player, Settings.Type.Categories, null);
soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F);
} else if (is.hasItemMeta()) {
me.goodandevil.skyblock.island.Setting.Role role = null;
String roleName = null, rolePermissionName = null;
nInventoryUtil nInv = new nInventoryUtil(player, new ClickEventHandler() {
@Override
public void onClick(ClickEvent event) {
if (!(player.hasPermission("skyblock.admin.settings") || player.hasPermission("skyblock.admin.*") || player.hasPermission("skyblock.*"))) {
messageManager.sendMessage(player, configLoad.getString("Island.Admin.Settings.Permission.Message"));
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Visitor.Title")))) {
role = me.goodandevil.skyblock.island.Setting.Role.Visitor;
roleName = "Visitor";
rolePermissionName = "Default";
} else if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Member.Title")))) {
role = me.goodandevil.skyblock.island.Setting.Role.Member;
roleName = "Member";
rolePermissionName = "Default";
} else if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Operator.Title")))) {
role = me.goodandevil.skyblock.island.Setting.Role.Operator;
roleName = role.name();
rolePermissionName = role.name();
} else if (event.getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings.Owner.Title")))) {
role = me.goodandevil.skyblock.island.Setting.Role.Owner;
roleName = role.name();
rolePermissionName = role.name();
}
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().runTaskLaterAsynchronously(skyblock, new Runnable() {
@Override
public void run() {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.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().runTaskLaterAsynchronously(skyblock, new Runnable() {
@Override
public void run() {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.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().runTaskLaterAsynchronously(skyblock, new Runnable() {
@Override
public void run() {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.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().runTaskLaterAsynchronously(skyblock, new Runnable() {
@Override
public void run() {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.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().runTaskLaterAsynchronously(skyblock, new Runnable() {
@Override
public void run() {
open(player, Settings.Type.Role, me.goodandevil.skyblock.island.Setting.Role.Owner);
}
}, 1L);
}
}
});
nInv.addItem(nInv.createItem(new ItemStack(Material.SIGN), 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, new Runnable() {
@Override
public void run() {
nInv.open();
}
});
} else if (menuType == Settings.Type.Role) {
nInventoryUtil nInv = new nInventoryUtil(player, new ClickEventHandler() {
@Override
public void onClick(ClickEvent event) {
if (!(player.hasPermission("skyblock.admin.settings") || player.hasPermission("skyblock.admin.*") || player.hasPermission("skyblock.*"))) {
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().runTaskLaterAsynchronously(skyblock, new Runnable() {
@Override
public void run() {
open(player, Settings.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(roleName).getKeys(false)) {
if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Settings." + rolePermissionName + ".Item.Setting." + settingList + ".Displayname")))) {
if (settingsConfigLoad.getBoolean(roleName + "." + settingList)) {
settingsConfigLoad.set(roleName + "." + settingList, false);
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(roleName + "." + settingList, true);
settingsConfigLoad.set("Settings." + role.name() + "." + settingList, true);
}
Bukkit.getServer().getScheduler().runTaskAsynchronously(skyblock, new Runnable() {
@ -274,11 +186,256 @@ public class Settings implements Listener {
}
soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F);
open(player, Settings.Type.Role, role);
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() {
@Override
public void run() {
open(player, Settings.Type.Role, role);
}
}, 1L);
}
}
});
if (role == me.goodandevil.skyblock.island.Setting.Role.Visitor || role == me.goodandevil.skyblock.island.Setting.Role.Member || role == me.goodandevil.skyblock.island.Setting.Role.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, "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)), 49);
nInv.addItemStack(createItem(role, "Hopper", new ItemStack(Material.HOPPER)), 50);
nInv.addItemStack(createItem(role, "ArmorStandPlacement", new ItemStack(Material.ARMOR_STAND)), 51);
nInv.addItemStack(createItem(role, "ExperienceOrbPickup", Materials.EXPERIENCE_BOTTLE.parseItem()), 52);
nInv.setRows(6);
} else if (role == me.goodandevil.skyblock.island.Setting.Role.Operator) {
if (mainConfig.getFileConfiguration().getBoolean("Island.Visitor.Banning")) {
if (mainConfig.getFileConfiguration().getBoolean("Island.Coop.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.ROSE_RED.parseItem()), 12);
nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Material.SIGN)), 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 {
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.ROSE_RED.parseItem()), 13);
nInv.addItemStack(createItem(role, "Visitor", new ItemStack(Material.SIGN)), 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")) {
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(Material.SIGN)), 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 {
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(Material.SIGN)), 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.Setting.Role.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")) {
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.ROSE_RED.parseItem()), 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")) {
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.ROSE_RED.parseItem()), 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")) {
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.ROSE_RED.parseItem()), 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")) {
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.ROSE_RED.parseItem()), 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, new Runnable() {
@Override
public void run() {
nInv.open();
}
});
}
}
private ItemStack createItem(me.goodandevil.skyblock.island.Setting.Role 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<String> itemLore = new ArrayList<>();
ItemMeta im = is.getItemMeta();
String roleName = role.name();
if (role == me.goodandevil.skyblock.island.Setting.Role.Visitor || role == me.goodandevil.skyblock.island.Setting.Role.Member || role == me.goodandevil.skyblock.island.Setting.Role.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.Setting.Role role) {
if (role == me.goodandevil.skyblock.island.Setting.Role.Visitor || role == me.goodandevil.skyblock.island.Setting.Role.Member || role == me.goodandevil.skyblock.island.Setting.Role.Coop) {
return "Default";
}
return role.name();
}
public enum Type {

View File

@ -26,6 +26,7 @@ public class Visit {
private int islandSize;
private int islandMembers;
private int safeLevel;
private final Level islandLevel;
@ -33,13 +34,14 @@ public class Visit {
private boolean open;
protected Visit(SkyBlock skyblock, UUID islandOwnerUUID, Location[] islandLocations, int islandSize, int islandMembers, Level islandLevel, List<String> islandSignature, boolean open) {
protected Visit(SkyBlock skyblock, UUID islandOwnerUUID, Location[] islandLocations, int islandSize, int islandMembers, int safeLevel, Level islandLevel, List<String> islandSignature, boolean open) {
this.skyblock = skyblock;
this.islandOwnerUUID = islandOwnerUUID;
//this.islandOwnerName = new OfflinePlayer(islandOwnerUUID).getNames()[0].getName();
this.islandLocations = islandLocations;
this.islandSize = islandSize;
this.islandMembers = islandMembers;
this.safeLevel = safeLevel;
this.islandLevel = islandLevel;
this.islandSignature = islandSignature;
this.open = open;
@ -79,6 +81,14 @@ public class Visit {
this.islandMembers = islandMembers;
}
public int getSafeLevel() {
return safeLevel;
}
public void setSafeLevel(int safeLevel) {
this.safeLevel = safeLevel;
}
public int getRadius() {
return islandSize;
}

View File

@ -85,7 +85,7 @@ public class VisitManager {
size = configLoad.getInt("Size");
}
createIsland(islandOwnerUUID, new Location[] { fileManager.getLocation(config, "Location.Normal.Island", true), fileManager.getLocation(config, "Location.Nether.Island", true) }, size, configLoad.getStringList("Members").size() + configLoad.getStringList("Operators").size() + 1, new Level(islandOwnerUUID, skyblock), islandSignature, configLoad.getBoolean("Visitor.Open"));
createIsland(islandOwnerUUID, new Location[] { fileManager.getLocation(config, "Location.Normal.Island", true), fileManager.getLocation(config, "Location.Nether.Island", true) }, size, configLoad.getStringList("Members").size() + configLoad.getStringList("Operators").size() + 1, getIslandSafeLevel(islandOwnerUUID), new Level(islandOwnerUUID, skyblock), islandSignature, configLoad.getBoolean("Visitor.Open"));
} catch (Exception e) {
e.printStackTrace();
}
@ -131,6 +131,31 @@ public class VisitManager {
}
}
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<String, Boolean> 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);
}
@ -165,8 +190,8 @@ public class VisitManager {
return visitIslands;
}
public void createIsland(UUID islandOwnerUUID, Location[] islandLocations, int islandSize, int islandMembers, Level islandLevel, List<String> islandSignature, boolean open) {
visitStorage.put(islandOwnerUUID, new Visit(skyblock, islandOwnerUUID, islandLocations, islandSize, islandMembers, islandLevel, islandSignature, open));
public void createIsland(UUID islandOwnerUUID, Location[] islandLocations, int islandSize, int islandMembers, int safeLevel, Level islandLevel, List<String> islandSignature, boolean open) {
visitStorage.put(islandOwnerUUID, new Visit(skyblock, islandOwnerUUID, islandLocations, islandSize, islandMembers, safeLevel, islandLevel, islandSignature, open));
}
public void addIsland(UUID islandOwnerUUID, Visit visit) {

View File

@ -189,6 +189,20 @@ Island:
# [!] If Enabled Players will respawn at the Island they died at. If Disabled
# Players will respawn at the Spawn location.
Island: true
Settings:
# When disabled, players will not lose their items when they die at an island and
# the setting will be removed from the Island Settings menu.
KeepItemsOnDeath:
Enable: true
# When disabled, players will not take any damage from entities when at an island
# and the setting will be removed from the Island Settings menu.
PvP:
Enable: true
# When disabled, players will not take any damage when at an island and the setting
# will be removed from the Island Settings menu. This setting discludes entity and
# void damage.
Damage:
Enable: true
Admin:
Structure:
# Item Material used to select positions for a structure.

View File

@ -2,7 +2,7 @@ Command:
Island:
Argument:
Unrecognised:
Message: "&bSkyBlock &8| &cError&8: &eThat arugment was not recognised."
Message: "&bSkyBlock &8| &cError&8: &eThat argument was not recognised."
Help:
Lines:
- "&bSkyBlock &7- &e%type Commands&8:"
@ -137,9 +137,9 @@ Command:
Sent:
Message: "&bSkyBlock &8| &aInfo&8: &eYou have invited the player &d%player &eto join your Island. They have &c%time &eto respond."
Expired:
Message: "&bSkyBlock &8| &aInfo&8: &eThe player &c%player's &edidn't respond to your invite in time."
Message: "&bSkyBlock &8| &aInfo&8: &eThe player &c%player &edidn't respond to your invite in time."
Disconnected:
Message: "&bSkyBlock &8| &aInfo&8: &eThe player &c%player's &edisconnected and didn't respond to your invite."
Message: "&bSkyBlock &8| &aInfo&8: &eThe player &c%player &edisconnected and didn't respond to your invite."
Target:
Received:
Message: "&bSkyBlock &8| &aInfo&8: &eYou have been invited to join &d%player's &eIsland. You have &c%time &eto respond."
@ -422,7 +422,7 @@ Command:
Invalid:
Message: "&bSkyBlock &8| &cError&8: &eInvalid: /island information [<player>]"
Permission:
Message: "&bSkyBlock &8| &cError&8: &eYou don't have permission to teleport to other players Islands."
Message: "&bSkyBlock &8| &cError&8: &eYou don't have permission to view information on other players islands."
Owner:
Message: "&bSkyBlock &8| &cError&8: &eYou are not an Island owner."
Island:
@ -1890,6 +1890,8 @@ Menu:
Displayname: "&aLeaf Decay"
KeepItemsOnDeath:
Displayname: "&aKeep Items on Death"
Damage:
Displayname: "&aDamage"
Default:
Item:
Setting:
@ -1984,6 +1986,8 @@ Menu:
Displayname: "&aHopper Use"
ArmorStandPlacement:
Displayname: "&aArmorStand Placement"
ExperienceOrbPickup:
Displayname: "&aExperience Orb Pickup"
Information:
Categories:
Title: "&8Island Information"
@ -2011,6 +2015,8 @@ Menu:
Vote:
Word:
Empty: "&f&oEmpty"
Safe: "&a[Safe]"
Unsafe: "&c[Unsafe]"
Enabled:
Signature:
Word:
@ -2029,6 +2035,8 @@ Menu:
- "&7Members&8: &e%members"
- "&7Visits&8: &e%visits"
- "&7Votes&8: &6%votes"
- ""
- "&7Safety&8: %safety"
Disabled:
Lore:
- "&7Owner&8: &f%owner"
@ -2039,6 +2047,8 @@ Menu:
- "&7Members&8: &e%members"
- "&7Visits&8: &e%visits"
- "&7Votes&8: &6%votes"
- ""
- "&7Safety&8: %safety"
Disabled:
Signature:
Enabled:
@ -2053,6 +2063,8 @@ Menu:
- "&7Level&8: &b%level"
- "&7Members&8: &e%members"
- "&7Visits&8: &e%visits"
- ""
- "&7Safety&8: %safety"
Disabled:
Lore:
- "&7Owner&8: &f%owner"
@ -2062,6 +2074,8 @@ Menu:
- "&7Level&8: &b%level"
- "&7Members&8: &e%members"
- "&7Visits&8: &e%visits"
- ""
- "&7Safety&8: %safety"
Members:
Title: "&8Island Information - Members"
Item:
@ -2344,6 +2358,8 @@ Menu:
Vote:
Word:
Empty: "&f&oEmpty"
Safe: "&a[Safe]"
Unsafe: "&c[Unsafe]"
Enabled:
Signature:
Word:
@ -2362,6 +2378,8 @@ Menu:
- "&7Visits&8: &e%visits"
- "&7Votes&8: &6%votes"
- ""
- "&7Safety&8: %safety"
- ""
- "&eClick to visit Island!"
Visitor:
Lore:
@ -2375,6 +2393,8 @@ Menu:
- "&7Visits&8: &e%visits"
- "&7Votes&8: &6%votes"
- ""
- "&7Safety&8: %safety"
- ""
- "&eLeft-Click to visit Island!"
- "&eRight-Click to %action vote!"
Disabled:
@ -2387,6 +2407,8 @@ Menu:
- "&7Visits&8: &e%visits"
- "&7Votes&8: &6%votes"
- ""
- "&7Safety&8: %safety"
- ""
- "&eClick to visit Island!"
Visitor:
Lore:
@ -2397,6 +2419,8 @@ Menu:
- "&7Visits&8: &e%visits"
- "&7Votes&8: &6%votes"
- ""
- "&7Safety&8: %safety"
- ""
- "&eLeft-Click to visit Island!"
- "&eRight-Click to %action vote!"
Disabled:
@ -2412,6 +2436,8 @@ Menu:
- "&7Members&8: &e%members"
- "&7Visits&8: &e%visits"
- ""
- "&7Safety&8: %safety"
- ""
- "&eClick to visit Island!"
Disabled:
Lore:
@ -2421,6 +2447,8 @@ Menu:
- "&7Members&8: &e%members"
- "&7Visits&8: &e%visits"
- ""
- "&7Safety&8: %safety"
- ""
- "&eClick to visit Island!"
Visitors:
Title: "&8Island Visitors"
@ -2829,6 +2857,14 @@ Menu:
- "&7to be when an Island is created."
- ""
- "&eClick to Edit Settings!"
Coop:
Displayname: "&aCoop Settings"
Lore:
- "&7Edit and decide what you want"
- "&7the default Coop permissions"
- "&7to be when an Island is created."
- ""
- "&eClick to Edit Settings!"
Owner:
Displayname: "&aIsland Settings"
Lore:
@ -2847,6 +2883,11 @@ Menu:
Item:
Return:
Displayname: "&cClick to Return"
Coop:
Title: "&8Settings Editor - Coop"
Item:
Return:
Displayname: "&cClick to Return"
Operator:
Title: "&8Settings Editor - Operator"
Item:
@ -2872,6 +2913,10 @@ Menu:
Displayname: "&aEdit Visitor Settings"
Member:
Displayname: "&aEdit Member Settings"
Coop:
Displayname: "&aEdit Coop Settings"
CoopPlayers:
Displayname: "&aCoop Players"
Island:
Displayname: "&aEdit Island Settings"
MainSpawn:
@ -2911,6 +2956,8 @@ Menu:
Displayname: "&aLeaf Decay"
KeepItemsOnDeath:
Displayname: "&aKeep Items on Death"
Damage:
Displayname: "&aDamage"
Default:
Item:
Setting:
@ -2927,7 +2974,7 @@ Menu:
Displayname: "&aPlace Blocks"
Anvil:
Displayname: "&aAnvil Use"
ArmorStand:
ArmorStandUse:
Displayname: "&aArmorStand Use"
Beacon:
Displayname: "&aBeacon Use"
@ -3002,4 +3049,8 @@ Menu:
Portal:
Displayname: "&aPortal Use"
Hopper:
Displayname: "&aHopper Use"
Displayname: "&aHopper Use"
ArmorStandPlacement:
Displayname: "&aArmorStand Placement"
ExperienceOrbPickup:
Displayname: "&aExperience Orb Pickup"

View File

@ -1,6 +1,6 @@
name: SkyBlock
main: me.goodandevil.skyblock.SkyBlock
version: 38
version: 39
api-version: 1.13
description: A unique SkyBlock plugin
author: GoodAndEvil

View File

@ -42,6 +42,7 @@ Settings:
Portal: false
Hopper: false
ArmorStandPlacement: false
ExperienceOrbPickup: false
Member:
Destroy: true
Place: true
@ -85,6 +86,7 @@ Settings:
Portal: true
Hopper: true
ArmorStandPlacement: true
ExperienceOrbPickup: true
Operator:
Invite: true
Kick: true
@ -142,6 +144,7 @@ Settings:
Portal: true
Hopper: true
ArmorStandPlacement: true
ExperienceOrbPickup: true
Owner:
NaturalMobSpawning: true
MobGriefing: false
@ -149,4 +152,5 @@ Settings:
Explosions: false
FireSpread: true
LeafDecay: true
KeepItemsOnDeath: true
KeepItemsOnDeath: true
Damage: true