From 6e64d274e8a120e4acfeb31402465532f4e8438d Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 19 Apr 2020 10:46:41 -0700 Subject: [PATCH] Shifted to separate block and config settings. --- src/main/java/world/bentobox/level/Level.java | 69 +- .../world/bentobox/level/LevelPresenter.java | 2 +- .../level/calculators/CalcIslandLevel.java | 16 +- .../bentobox/level/config/BlockConfig.java | 102 +++ .../bentobox/level/config/ConfigSettings.java | 330 +++++++++ .../world/bentobox/level/config/Settings.java | 274 ------- .../level/listeners/JoinLeaveListener.java | 2 +- src/main/resources/blockconfig.yml | 691 +++++++++++++++++ src/main/resources/config.yml | 693 +----------------- .../bentobox/level/LevelPresenterTest.java | 4 +- .../java/world/bentobox/level/LevelTest.java | 7 +- .../java/world/bentobox/level/TopTenTest.java | 4 +- 12 files changed, 1203 insertions(+), 991 deletions(-) create mode 100644 src/main/java/world/bentobox/level/config/BlockConfig.java create mode 100644 src/main/java/world/bentobox/level/config/ConfigSettings.java delete mode 100644 src/main/java/world/bentobox/level/config/Settings.java create mode 100644 src/main/resources/blockconfig.yml diff --git a/src/main/java/world/bentobox/level/Level.java b/src/main/java/world/bentobox/level/Level.java index fd2bfde..d45d86d 100644 --- a/src/main/java/world/bentobox/level/Level.java +++ b/src/main/java/world/bentobox/level/Level.java @@ -1,5 +1,7 @@ package world.bentobox.level; +import java.io.File; +import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -8,10 +10,13 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.World; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import world.bentobox.bentobox.api.addons.Addon; +import world.bentobox.bentobox.api.configuration.Config; import world.bentobox.bentobox.api.user.User; import world.bentobox.bentobox.database.Database; import world.bentobox.bentobox.database.objects.Island; @@ -21,7 +26,8 @@ import world.bentobox.level.commands.admin.AdminTopCommand; import world.bentobox.level.commands.island.IslandLevelCommand; import world.bentobox.level.commands.island.IslandTopCommand; import world.bentobox.level.commands.island.IslandValueCommand; -import world.bentobox.level.config.Settings; +import world.bentobox.level.config.BlockConfig; +import world.bentobox.level.config.ConfigSettings; import world.bentobox.level.listeners.IslandTeamListeners; import world.bentobox.level.listeners.JoinLeaveListener; import world.bentobox.level.objects.LevelsData; @@ -35,8 +41,11 @@ import world.bentobox.level.requests.TopTenRequestHandler; */ public class Level extends Addon { + private static Addon addon; + // Settings - private Settings settings; + private ConfigSettings settings; + private Config configObject = new Config<>(this, ConfigSettings.class); // Database handler for level data private Database handler; @@ -50,6 +59,10 @@ public class Level extends Addon { // Level calculator private LevelPresenter levelPresenter; + + + private BlockConfig blockConfig; + /** * Calculates a user's island * @param world - the world where this island is @@ -93,7 +106,7 @@ public class Level extends Addon { /** * @return the settings */ - public Settings getSettings() { + public ConfigSettings getSettings() { return settings; } @@ -119,10 +132,45 @@ public class Level extends Addon { } } + @Override + public void onLoad() { + // Save the default config from config.yml + saveDefaultConfig(); + // Load settings from config.yml. This will check if there are any issues with it too. + loadSettings(); + } + + private void loadSettings() { + // Load settings again to get worlds + settings = configObject.loadConfigObject(); + if (settings == null) { + // Disable + logError("Level settings could not load! Addon disabled."); + setState(State.DISABLED); + } + } + + private void loadBlockSettings() { + // Save the default blockconfig.yml + this.saveResource("blockconfig.yml", false); + + YamlConfiguration blockValues = new YamlConfiguration(); + try { + blockValues.load(new File(this.getDataFolder(), "blockconfig.yml")); + } catch (IOException | InvalidConfigurationException e) { + // Disable + logError("Level blockconfig.yml settings could not load! Addon disabled."); + setState(State.DISABLED); + return; + } + // Load the block config class + blockConfig = new BlockConfig(this, blockValues); + } + @Override public void onEnable() { - // Load the plugin's config - settings = new Settings(this); + addon = this; + loadBlockSettings(); // Get the BSkyBlock database // Set up the database handler to store and retrieve Island classes // Note that these are saved by the BSkyBlock database @@ -275,4 +323,15 @@ public class Level extends Addon { levelsCache.remove(uniqueId); } + public static Addon getInstance() { + return addon; + } + + /** + * @return the blockConfig + */ + public BlockConfig getBlockConfig() { + return blockConfig; + } + } diff --git a/src/main/java/world/bentobox/level/LevelPresenter.java b/src/main/java/world/bentobox/level/LevelPresenter.java index 4c3c304..f375f66 100644 --- a/src/main/java/world/bentobox/level/LevelPresenter.java +++ b/src/main/java/world/bentobox/level/LevelPresenter.java @@ -89,7 +89,7 @@ public class LevelPresenter { public String getLevelString(long lvl) { String level = String.valueOf(lvl); // Asking for the level of another player - if(addon.getSettings().isShortHand()) { + if(addon.getSettings().isShorthand()) { BigInteger levelValue = BigInteger.valueOf(lvl); Map.Entry stage = LEVELS.floorEntry(levelValue); diff --git a/src/main/java/world/bentobox/level/calculators/CalcIslandLevel.java b/src/main/java/world/bentobox/level/calculators/CalcIslandLevel.java index f21e1b6..89f1666 100644 --- a/src/main/java/world/bentobox/level/calculators/CalcIslandLevel.java +++ b/src/main/java/world/bentobox/level/calculators/CalcIslandLevel.java @@ -72,7 +72,7 @@ public class CalcIslandLevel { this.addon = addon; this.island = island; this.world = island.getWorld(); - this.limitCount = new HashMap<>(addon.getSettings().getBlockLimits()); + this.limitCount = new HashMap<>(addon.getBlockConfig().getBlockLimits()); this.onExit = onExit; this.worlds = new ArrayList<>(); this.worlds.add(world); @@ -113,7 +113,7 @@ public class CalcIslandLevel { Chunk c = q.remove(); getChunk(c); } - }, addon.getSettings().getTickDelay(), addon.getSettings().getTickDelay()); + }, addon.getSettings().getTaskDelay(), addon.getSettings().getTaskDelay()); chunksToScan.forEach(c -> worlds.forEach(w -> Util.getChunkAtAsync(w, c.x, c.z).thenAccept(this::addChunkQueue))); } @@ -220,12 +220,12 @@ public class CalcIslandLevel { */ private int getValue(Material md) { // Check world settings - if (addon.getSettings().getWorldBlockValues().containsKey(world) && addon.getSettings().getWorldBlockValues().get(world).containsKey(md)) { - return addon.getSettings().getWorldBlockValues().get(world).get(md); + if (addon.getBlockConfig().getWorldBlockValues().containsKey(world) && addon.getBlockConfig().getWorldBlockValues().get(world).containsKey(md)) { + return addon.getBlockConfig().getWorldBlockValues().get(world).get(md); } // Check baseline - if (addon.getSettings().getBlockValues().containsKey(md)) { - return addon.getSettings().getBlockValues().get(md); + if (addon.getBlockConfig().getBlockValues().containsKey(md)) { + return addon.getBlockConfig().getBlockValues().get(md); } // Not in config result.ncCount.add(md); @@ -325,11 +325,11 @@ public class CalcIslandLevel { Iterator> it = entriesSortedByCount.iterator(); while (it.hasNext()) { Entry type = it.next(); - Integer limit = addon.getSettings().getBlockLimits().get(type.getElement()); + Integer limit = addon.getBlockConfig().getBlockLimits().get(type.getElement()); String explain = ")"; if (limit == null) { Material generic = type.getElement(); - limit = addon.getSettings().getBlockLimits().get(generic); + limit = addon.getBlockConfig().getBlockLimits().get(generic); explain = " - All types)"; } reportLines.add(type.getElement().toString() + ": " + String.format("%,d",type.getCount()) + " blocks (max " + limit + explain); diff --git a/src/main/java/world/bentobox/level/config/BlockConfig.java b/src/main/java/world/bentobox/level/config/BlockConfig.java new file mode 100644 index 0000000..0f84aa5 --- /dev/null +++ b/src/main/java/world/bentobox/level/config/BlockConfig.java @@ -0,0 +1,102 @@ +package world.bentobox.level.config; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +import world.bentobox.level.Level; + +public class BlockConfig { + + private Map blockLimits = new HashMap<>(); + private Map blockValues = new HashMap<>(); + private final Map> worldBlockValues = new HashMap<>(); + + public BlockConfig(Level level, YamlConfiguration blockValues) { + + if (blockValues.isSet("limits")) { + HashMap bl = new HashMap<>(); + for (String material : Objects.requireNonNull(blockValues.getConfigurationSection("limits")).getKeys(false)) { + try { + Material mat = Material.valueOf(material); + bl.put(mat, blockValues.getInt("limits." + material, 0)); + } catch (Exception e) { + level.logWarning("Unknown material (" + material + ") in blockconfig.yml Limits section. Skipping..."); + } + } + setBlockLimits(bl); + } + if (blockValues.isSet("blocks")) { + Map bv = new HashMap<>(); + for (String material : Objects.requireNonNull(blockValues.getConfigurationSection("blocks")).getKeys(false)) { + + try { + Material mat = Material.valueOf(material); + bv.put(mat, blockValues.getInt("blocks." + material, 0)); + } catch (Exception e) { + level.logWarning("Unknown material (" + material + ") in blockconfig.yml blocks section. Skipping..."); + } + } + setBlockValues(bv); + } else { + level.logWarning("No block values in blockconfig.yml! All island levels will be zero!"); + } + // Worlds + if (blockValues.isSet("worlds")) { + ConfigurationSection worlds = blockValues.getConfigurationSection("worlds"); + for (String world : Objects.requireNonNull(worlds).getKeys(false)) { + World bWorld = Bukkit.getWorld(world); + if (bWorld != null) { + ConfigurationSection worldValues = worlds.getConfigurationSection(world); + for (String material : Objects.requireNonNull(worldValues).getKeys(false)) { + Material mat = Material.valueOf(material); + Map values = worldBlockValues.getOrDefault(bWorld, new HashMap<>()); + values.put(mat, worldValues.getInt(material)); + worldBlockValues.put(bWorld, values); + } + } else { + level.logWarning("Level Addon: No such world in blockconfig.yml : " + world); + } + } + } + // All done + } + + /** + * @return the blockLimits + */ + public final Map getBlockLimits() { + return blockLimits; + } + /** + * @param blockLimits2 the blockLimits to set + */ + private void setBlockLimits(HashMap blockLimits2) { + this.blockLimits = blockLimits2; + } + /** + * @return the blockValues + */ + public final Map getBlockValues() { + return blockValues; + } + /** + * @param blockValues2 the blockValues to set + */ + private void setBlockValues(Map blockValues2) { + this.blockValues = blockValues2; + } + + /** + * @return the worldBlockValues + */ + public Map> getWorldBlockValues() { + return worldBlockValues; + } +} diff --git a/src/main/java/world/bentobox/level/config/ConfigSettings.java b/src/main/java/world/bentobox/level/config/ConfigSettings.java new file mode 100644 index 0000000..a886021 --- /dev/null +++ b/src/main/java/world/bentobox/level/config/ConfigSettings.java @@ -0,0 +1,330 @@ +package world.bentobox.level.config; + +import java.util.Arrays; +import java.util.List; + +import world.bentobox.bentobox.api.configuration.ConfigComment; +import world.bentobox.bentobox.api.configuration.ConfigEntry; +import world.bentobox.bentobox.api.configuration.ConfigObject; +import world.bentobox.bentobox.api.configuration.StoreAt; +import world.bentobox.level.Level; + +@StoreAt(filename="config.yml", path="addons/Level") +@ConfigComment("Level Configuration [version]") +@ConfigComment("") +public class ConfigSettings implements ConfigObject { + @ConfigComment("") + @ConfigComment("Game Mode Addons") + @ConfigComment("Level will hook into these game mode addons. Don't forget to set any world-specific") + @ConfigComment("block values below!") + @ConfigEntry(path = "game-modes") + private List gameModes = Arrays.asList("BSkyBlock","AcidIsland","CaveBlock"); + + @ConfigComment("") + @ConfigComment("Performance settings") + @ConfigComment("Level is very processor-intensive, so these settings may need to be tweaked to optimize for your server") + @ConfigComment("Delay between each task that loads chunks for calculating levels") + @ConfigComment("Increasing this will slow down level calculations but reduce average load") + @ConfigEntry(path = "task-delay") + private long taskDelay = 1; + + @ConfigComment("") + @ConfigComment("Number of chunks that will be processed per task") + @ConfigEntry(path = "chunks") + private int chunks = 10; + + @ConfigComment("") + @ConfigComment("Calculate island level on login") + @ConfigComment("This silently calculates the player's island level when they login") + @ConfigComment("This applies to all islands the player has on the server, e.g., BSkyBlock, AcidIsland") + @ConfigEntry(path = "login") + private boolean calcOnLogin = false; + + @ConfigComment("") + @ConfigComment("Include nether island in level calculations.") + @ConfigComment("Warning: Enabling this mid-game will give players with an island a jump in") + @ConfigComment("island level. New islands will be correctly zeroed.") + @ConfigEntry(path = "nether") + private boolean nether = false; + + @ConfigComment("") + @ConfigComment("Include end island in level calculations.") + @ConfigComment("Warning: Enabling this mid-game will give players with an island a jump in") + @ConfigComment("island level. New islands will be correctly zeroed.") + @ConfigEntry(path = "end") + private boolean end = false; + + @ConfigComment("") + @ConfigComment("Underwater block multiplier") + @ConfigComment("If blocks are below sea-level, they can have a higher value. e.g. 2x") + @ConfigComment("Promotes under-water development if there is a sea. Value can be fractional.") + @ConfigEntry(path = "underwater") + private double underWaterMultiplier = 1.0; + + @ConfigComment("") + @ConfigComment("Value of one island level. Default 100. Minimum value is 1.") + @ConfigEntry(path = "levelcost") + private long levelCost = 100; + + @ConfigComment("") + @ConfigComment("Island level calculation formula") + @ConfigComment("blocks - the sum total of all block values, less any death penalty") + @ConfigComment("level_cost - in a linear equation, the value of one level") + @ConfigComment("This formula can include +,=,*,/,sqrt,^,sin,cos,tan. Result will always be rounded to a long integer") + @ConfigComment("for example, an alternative non-linear option could be: 3 * sqrt(blocks / level_cost)") + @ConfigEntry(path = "level-calc") + private String levelCalc = "blocks / level_cost"; + + @ConfigComment("") + @ConfigComment("Cooldown between level requests in seconds") + @ConfigEntry(path = "levelwait") + private int levelWait = 60; + + @ConfigComment("") + @ConfigComment("Death penalty") + @ConfigComment("How many block values a player will lose per death.") + @ConfigComment("Default value of 100 means that for every death, the player will lose 1 level (if levelcost is 100)") + @ConfigComment("Set to zero to not use this feature") + @ConfigEntry(path = "deathpenalty") + private int deathPenalty = 100; + + @ConfigComment("Sum team deaths - if true, all the teams deaths are summed") + @ConfigComment("If false, only the leader's deaths counts") + @ConfigComment("For other death related settings, see the GameModeAddon's config.yml settings.") + @ConfigEntry(path = "sumteamdeaths") + private boolean sumTeamDeaths = false; + + + @ConfigComment("Shorthand island level") + @ConfigComment("Shows large level values rounded down, e.g., 10,345 -> 10k") + @ConfigEntry(path = "shorthand") + private boolean shorthand = false; + + + /** + * @return the gameModes + */ + public List getGameModes() { + return gameModes; + } + + + /** + * @param gameModes the gameModes to set + */ + public void setGameModes(List gameModes) { + this.gameModes = gameModes; + } + + + /** + * @return the taskDelay + */ + public long getTaskDelay() { + if (taskDelay < 1L) { + Level.getInstance().logError("task-delay must be at least 1"); + taskDelay = 1; + } + return taskDelay; + } + + + /** + * @param taskDelay the taskDelay to set + */ + public void setTaskDelay(long taskDelay) { + this.taskDelay = taskDelay; + } + + + /** + * @return the chunks + */ + public int getChunks() { + if (chunks < 1) { + Level.getInstance().logError("chunks must be at least 1"); + chunks = 1; + } + + return chunks; + } + + + /** + * @param chunks the chunks to set + */ + public void setChunks(int chunks) { + this.chunks = chunks; + } + + + /** + * @return the calcOnLogin + */ + public boolean isCalcOnLogin() { + return calcOnLogin; + } + + + /** + * @param calcOnLogin the calcOnLogin to set + */ + public void setCalcOnLogin(boolean calcOnLogin) { + this.calcOnLogin = calcOnLogin; + } + + + /** + * @return the nether + */ + public boolean isNether() { + return nether; + } + + + /** + * @param nether the nether to set + */ + public void setNether(boolean nether) { + this.nether = nether; + } + + + /** + * @return the end + */ + public boolean isEnd() { + return end; + } + + + /** + * @param end the end to set + */ + public void setEnd(boolean end) { + this.end = end; + } + + + /** + * @return the underWaterMultiplier + */ + public double getUnderWaterMultiplier() { + return underWaterMultiplier; + } + + + /** + * @param underWaterMultiplier the underWaterMultiplier to set + */ + public void setUnderWaterMultiplier(double underWaterMultiplier) { + this.underWaterMultiplier = underWaterMultiplier; + } + + + /** + * @return the levelCost + */ + public long getLevelCost() { + if (levelCost < 1) { + levelCost = 1; + Level.getInstance().logError("levelcost in config.yml cannot be less than 1. Setting to 1."); + } + return levelCost; + } + + + /** + * @param levelCost the levelCost to set + */ + public void setLevelCost(long levelCost) { + this.levelCost = levelCost; + } + + + /** + * @return the levelCalc + */ + public String getLevelCalc() { + return levelCalc; + } + + + /** + * @param levelCalc the levelCalc to set + */ + public void setLevelCalc(String levelCalc) { + this.levelCalc = levelCalc; + } + + + /** + * @return the levelWait + */ + public int getLevelWait() { + if (levelWait < 0) { + Level.getInstance().logError("levelwait must be at least 0"); + levelWait = 0; + } + return levelWait; + } + + + /** + * @param levelWait the levelWait to set + */ + public void setLevelWait(int levelWait) { + this.levelWait = levelWait; + } + + + /** + * @return the deathPenalty + */ + public int getDeathPenalty() { + return deathPenalty; + } + + + /** + * @param deathPenalty the deathPenalty to set + */ + public void setDeathPenalty(int deathPenalty) { + this.deathPenalty = deathPenalty; + } + + + /** + * @return the sumTeamDeaths + */ + public boolean isSumTeamDeaths() { + return sumTeamDeaths; + } + + + /** + * @param sumTeamDeaths the sumTeamDeaths to set + */ + public void setSumTeamDeaths(boolean sumTeamDeaths) { + this.sumTeamDeaths = sumTeamDeaths; + } + + + /** + * @return the shorthand + */ + public boolean isShorthand() { + return shorthand; + } + + + /** + * @param shorthand the shorthand to set + */ + public void setShorthand(boolean shorthand) { + this.shorthand = shorthand; + } + + + +} diff --git a/src/main/java/world/bentobox/level/config/Settings.java b/src/main/java/world/bentobox/level/config/Settings.java deleted file mode 100644 index 9beeef9..0000000 --- a/src/main/java/world/bentobox/level/config/Settings.java +++ /dev/null @@ -1,274 +0,0 @@ -package world.bentobox.level.config; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.configuration.ConfigurationSection; - -import world.bentobox.level.Level; - -public class Settings { - - private final Level level; - private boolean sumTeamDeaths; - private Map blockLimits = new HashMap<>(); - private Map blockValues = new HashMap<>(); - private final Map> worldBlockValues = new HashMap<>(); - private double underWaterMultiplier; - private int deathpenalty; - private long levelCost; - private int levelWait; - private int chunks; - private long taskDelay; - - private List gameModes; - - - public Settings(Level level) { - this.level = level; - level.saveDefaultConfig(); - - // GameModes - gameModes = level.getConfig().getStringList("game-modes"); - - // Performance - setTickDelay(level.getConfig().getLong("task-delay",1)); - if (taskDelay < 1L) { - level.logError("task-delay must be at least 1"); - setTickDelay(1L); - } - setChunks(level.getConfig().getInt("chunks", 10)); - if (chunks < 1) { - level.logError("chunks must be at least 1"); - setChunks(1); - } - - setLevelWait(level.getConfig().getInt("levelwait", 60)); - if (getLevelWait() < 0) { - level.logError("levelwait must be at least 0"); - setLevelWait(0); - } - setDeathpenalty(level.getConfig().getInt("deathpenalty", 0)); - setSumTeamDeaths(level.getConfig().getBoolean("sumteamdeaths")); - setUnderWaterMultiplier(level.getConfig().getDouble("underwater", 1D)); - setLevelCost(level.getConfig().getInt("levelcost", 100)); - if (getLevelCost() < 1) { - setLevelCost(1); - level.logWarning("levelcost in blockvalues.yml cannot be less than 1. Setting to 1."); - } - - if (level.getConfig().isSet("limits")) { - HashMap bl = new HashMap<>(); - for (String material : Objects.requireNonNull(level.getConfig().getConfigurationSection("limits")).getKeys(false)) { - try { - Material mat = Material.valueOf(material); - bl.put(mat, level.getConfig().getInt("limits." + material, 0)); - } catch (Exception e) { - level.logWarning("Unknown material (" + material + ") in blockvalues.yml Limits section. Skipping..."); - } - } - setBlockLimits(bl); - } - if (level.getConfig().isSet("blocks")) { - Map bv = new HashMap<>(); - for (String material : Objects.requireNonNull(level.getConfig().getConfigurationSection("blocks")).getKeys(false)) { - - try { - Material mat = Material.valueOf(material); - bv.put(mat, level.getConfig().getInt("blocks." + material, 0)); - } catch (Exception e) { - level.logWarning("Unknown material (" + material + ") in config.yml blocks section. Skipping..."); - } - } - setBlockValues(bv); - } else { - level.logWarning("No block values in config.yml! All island levels will be zero!"); - } - // Worlds - if (level.getConfig().isSet("worlds")) { - ConfigurationSection worlds = level.getConfig().getConfigurationSection("worlds"); - for (String world : Objects.requireNonNull(worlds).getKeys(false)) { - World bWorld = Bukkit.getWorld(world); - if (bWorld != null) { - ConfigurationSection worldValues = worlds.getConfigurationSection(world); - for (String material : Objects.requireNonNull(worldValues).getKeys(false)) { - Material mat = Material.valueOf(material); - Map values = worldBlockValues.getOrDefault(bWorld, new HashMap<>()); - values.put(mat, worldValues.getInt(material)); - worldBlockValues.put(bWorld, values); - } - } else { - level.logWarning("Level Addon: No such world in config.yml : " + world); - } - } - } - // All done - } - - /** - * @return the sumTeamDeaths - */ - public final boolean isSumTeamDeaths() { - return sumTeamDeaths; - } - /** - * @param sumTeamDeaths the sumTeamDeaths to set - */ - private void setSumTeamDeaths(boolean sumTeamDeaths) { - this.sumTeamDeaths = sumTeamDeaths; - } - /** - * @return the blockLimits - */ - public final Map getBlockLimits() { - return blockLimits; - } - /** - * @param blockLimits2 the blockLimits to set - */ - private void setBlockLimits(HashMap blockLimits2) { - this.blockLimits = blockLimits2; - } - /** - * @return the blockValues - */ - public final Map getBlockValues() { - return blockValues; - } - /** - * @param blockValues2 the blockValues to set - */ - private void setBlockValues(Map blockValues2) { - this.blockValues = blockValues2; - } - /** - * @return the underWaterMultiplier - */ - public final double getUnderWaterMultiplier() { - return underWaterMultiplier; - } - /** - * @param underWaterMultiplier the underWaterMultiplier to set - */ - private void setUnderWaterMultiplier(double underWaterMultiplier) { - this.underWaterMultiplier = underWaterMultiplier; - } - /** - * @return the deathpenalty - */ - public final int getDeathPenalty() { - return deathpenalty; - } - /** - * @param deathpenalty the deathpenalty to set - */ - private void setDeathpenalty(int deathpenalty) { - this.deathpenalty = deathpenalty; - } - /** - * @return the levelCost - */ - public final long getLevelCost() { - return levelCost; - } - /** - * @param levelCost the levelCost to set - */ - private void setLevelCost(long levelCost) { - this.levelCost = levelCost; - } - /** - * @return the levelWait - */ - public final int getLevelWait() { - return levelWait; - } - /** - * @param levelWait the levelWait to set - */ - private void setLevelWait(int levelWait) { - this.levelWait = levelWait; - } - /** - * @return the worldBlockValues - */ - public Map> getWorldBlockValues() { - return worldBlockValues; - } - - /** - * @return the gameModes - */ - public List getGameModes() { - return gameModes; - } - - /** - * @return if the nether island should be included in the level calc or not - */ - public boolean isNether() { - return level.getConfig().getBoolean("nether"); - } - - /** - * @return if the end island should be included in the level calc or not - */ - public boolean isEnd() { - return level.getConfig().getBoolean("end"); - } - - /** - * @return true if level should be calculated on login - */ - public boolean isLogin() { - return level.getConfig().getBoolean("login"); - } - - /** - * @return true if levels should be shown in shorthand notation, e.g., 10,234 = 10k - */ - public boolean isShortHand() { - return level.getConfig().getBoolean("shorthand"); - } - - /** - * @return the formula to calculate island levels - */ - public String getLevelCalc() { - return level.getConfig().getString("level-calc", "blocks / level_cost"); - } - - /** - * @return the chunks - */ - public int getChunks() { - return chunks; - } - - /** - * @param chunks the chunks to set - */ - public void setChunks(int chunks) { - this.chunks = chunks; - } - - /** - * @return the tickDelay - */ - public long getTickDelay() { - return taskDelay; - } - - /** - * @param tickDelay the tickDelay to set - */ - public void setTickDelay(long tickDelay) { - this.taskDelay = tickDelay; - } - -} diff --git a/src/main/java/world/bentobox/level/listeners/JoinLeaveListener.java b/src/main/java/world/bentobox/level/listeners/JoinLeaveListener.java index 9e5277c..ca6d170 100644 --- a/src/main/java/world/bentobox/level/listeners/JoinLeaveListener.java +++ b/src/main/java/world/bentobox/level/listeners/JoinLeaveListener.java @@ -29,7 +29,7 @@ public class JoinLeaveListener implements Listener { // Load player into cache addon.getLevelsData(e.getPlayer().getUniqueId()); // If level calc on login is enabled, run through all the worlds and calculate the level - if (addon.getSettings().isLogin()) { + if (addon.getSettings().isCalcOnLogin()) { addon.getPlugin().getAddonsManager().getGameModeAddons().stream() .filter(gm -> addon.getSettings().getGameModes().contains(gm.getDescription().getName())) .forEach(gm -> addon.calculateIslandLevel(gm.getOverWorld(), null, e.getPlayer().getUniqueId())); diff --git a/src/main/resources/blockconfig.yml b/src/main/resources/blockconfig.yml new file mode 100644 index 0000000..58403b7 --- /dev/null +++ b/src/main/resources/blockconfig.yml @@ -0,0 +1,691 @@ +# Block Config file for Level add-on Version ${version} + +# This file lists the values for various blocks that are used to calculate the +# island level. + +# This section lists the limits for any particular block. Blocks over this amount +# are not counted. +# Format: +# MATERIAL: limit +limits: + COBBLESTONE: 10000 + NETHERRACK: 1000 + +# This section lists the value of a block. Value must be an integer. +# Any blocks not listed will have a value of 0. AIR is always zero. +# Format is MATERIAL: value + +blocks: + ACACIA_BUTTON: 1 + ACACIA_DOOR: 2 + ACACIA_FENCE: 2 + ACACIA_FENCE_GATE: 4 + ACACIA_LEAVES: 0 + ACACIA_LOG: 0 + ACACIA_PLANKS: 1 + ACACIA_PRESSURE_PLATE: 2 + ACACIA_SAPLING: 1 + ACACIA_SIGN: 6 + ACACIA_SLAB: 1 + ACACIA_STAIRS: 2 + ACACIA_TRAPDOOR: 3 + ACACIA_WALL_SIGN: 6 + ACACIA_WOOD: 1 + ACTIVATOR_RAIL: 1 + ALLIUM: 1 + ANDESITE: 1 + ANDESITE_SLAB: 1 + ANDESITE_STAIRS: 1 + ANDESITE_WALL: 1 + ANVIL: 10 + ATTACHED_MELON_STEM: 1 + ATTACHED_PUMPKIN_STEM: 1 + AZURE_BLUET: 1 + BAMBOO: 1 + BAMBOO_SAPLING: 1 + BARREL: 2 + BARRIER: 0 + BEACON: 500 + BEDROCK: 0 + BEETROOTS: 1 + BELL: 100 + BIRCH_BUTTON: 1 + BIRCH_DOOR: 2 + BIRCH_FENCE: 2 + BIRCH_FENCE_GATE: 4 + BIRCH_LEAVES: 0 + BIRCH_LOG: 0 + BIRCH_PLANKS: 1 + BIRCH_PRESSURE_PLATE: 2 + BIRCH_SAPLING: 1 + BIRCH_SIGN: 6 + BIRCH_SLAB: 1 + BIRCH_STAIRS: 2 + BIRCH_TRAPDOOR: 3 + BIRCH_WALL_SIGN: 6 + BIRCH_WOOD: 1 + BLACK_BANNER: 2 + BLACK_BED: 6 + BLACK_CARPET: 1 + BLACK_CONCRETE: 3 + BLACK_CONCRETE_POWDER: 2 + BLACK_GLAZED_TERRACOTTA: 5 + BLACK_SHULKER_BOX: 11 + BLACK_STAINED_GLASS: 2 + BLACK_STAINED_GLASS_PANE: 1 + BLACK_TERRACOTTA: 2 + BLACK_WALL_BANNER: 2 + BLACK_WOOL: 2 + BLAST_FURNACE: 150 + BLUE_BANNER: 2 + BLUE_BED: 6 + BLUE_CARPET: 1 + BLUE_CONCRETE: 3 + BLUE_CONCRETE_POWDER: 2 + BLUE_GLAZED_TERRACOTTA: 5 + BLUE_ICE: 1 + BLUE_ORCHID: 1 + BLUE_SHULKER_BOX: 11 + BLUE_STAINED_GLASS: 2 + BLUE_STAINED_GLASS_PANE: 1 + BLUE_TERRACOTTA: 2 + BLUE_WALL_BANNER: 2 + BLUE_WOOL: 2 + BONE_BLOCK: 1 + BOOKSHELF: 5 + BRAIN_CORAL: 1 + BRAIN_CORAL_BLOCK: 1 + BRAIN_CORAL_FAN: 1 + BRAIN_CORAL_WALL_FAN: 1 + BREWING_STAND: 20 + BRICKS: 5 + BRICK_SLAB: 3 + BRICK_STAIRS: 5 + BRICK_WALL: 5 + BROWN_BANNER: 2 + BROWN_BED: 6 + BROWN_CARPET: 1 + BROWN_CONCRETE: 3 + BROWN_CONCRETE_POWDER: 2 + BROWN_GLAZED_TERRACOTTA: 5 + BROWN_MUSHROOM: 1 + BROWN_MUSHROOM_BLOCK: 1 + BROWN_SHULKER_BOX: 11 + BROWN_STAINED_GLASS: 2 + BROWN_STAINED_GLASS_PANE: 1 + BROWN_TERRACOTTA: 2 + BROWN_WALL_BANNER: 2 + BROWN_WOOL: 2 + BUBBLE_COLUMN: 1 + BUBBLE_CORAL: 1 + BUBBLE_CORAL_BLOCK: 1 + BUBBLE_CORAL_FAN: 1 + BUBBLE_CORAL_WALL_FAN: 1 + CACTUS: 1 + CAKE: 9 + CAMPFIRE: 5 + CARROTS: 1 + CARTOGRAPHY_TABLE: 6 + CARVED_PUMPKIN: 2 + CAULDRON: 10 + CAVE_AIR: 0 + CHAIN_COMMAND_BLOCK: 0 + CHEST: 8 + CHIPPED_ANVIL: 9 + CHISELED_QUARTZ_BLOCK: 2 + CHISELED_RED_SANDSTONE: 2 + CHISELED_SANDSTONE: 2 + CHISELED_STONE_BRICKS: 2 + CHORUS_FLOWER: 1 + CHORUS_PLANT: 1 + CLAY: 2 + COAL_BLOCK: 9 + COAL_ORE: 1 + COARSE_DIRT: 2 + COBBLESTONE: 1 + COBBLESTONE_SLAB: 1 + COBBLESTONE_STAIRS: 2 + COBBLESTONE_WALL: 1 + COBWEB: 10 + COCOA: 1 + COMMAND_BLOCK: 0 + COMPARATOR: 10 + COMPOSTER: 9 + CONDUIT: 1 + CORNFLOWER: 1 + CRACKED_STONE_BRICKS: 2 + CRAFTING_TABLE: 1 + CREEPER_HEAD: 1 + CREEPER_WALL_HEAD: 1 + CUT_RED_SANDSTONE: 1 + CUT_RED_SANDSTONE_SLAB: 1 + CUT_SANDSTONE: 1 + CUT_SANDSTONE_SLAB: 1 + CYAN_BANNER: 2 + CYAN_BED: 6 + CYAN_CARPET: 1 + CYAN_CONCRETE: 3 + CYAN_CONCRETE_POWDER: 2 + CYAN_GLAZED_TERRACOTTA: 5 + CYAN_SHULKER_BOX: 11 + CYAN_STAINED_GLASS: 2 + CYAN_STAINED_GLASS_PANE: 1 + CYAN_TERRACOTTA: 2 + CYAN_WALL_BANNER: 2 + CYAN_WOOL: 2 + DAMAGED_ANVIL: 5 + DANDELION: 1 + DARK_OAK_BUTTON: 1 + DARK_OAK_DOOR: 2 + DARK_OAK_FENCE: 2 + DARK_OAK_FENCE_GATE: 4 + DARK_OAK_LEAVES: 0 + DARK_OAK_LOG: 0 + DARK_OAK_PLANKS: 1 + DARK_OAK_PRESSURE_PLATE: 2 + DARK_OAK_SAPLING: 1 + DARK_OAK_SIGN: 6 + DARK_OAK_SLAB: 1 + DARK_OAK_STAIRS: 2 + DARK_OAK_TRAPDOOR: 3 + DARK_OAK_WOOD: 1 + DARK_OAK_WALL_SIGN: 6 + DARK_PRISMARINE: 1 + DARK_PRISMARINE_SLAB: 1 + DARK_PRISMARINE_STAIRS: 2 + DAYLIGHT_DETECTOR: 10 + DEAD_BRAIN_CORAL_BLOCK: 1 + DEAD_BRAIN_CORAL_FAN: 1 + DEAD_BRAIN_CORAL_WALL_FAN: 1 + DEAD_BUBBLE_CORAL_BLOCK: 1 + DEAD_BUBBLE_CORAL_FAN: 1 + DEAD_BUBBLE_CORAL_WALL_FAN: 1 + DEAD_BUSH: 1 + DEAD_FIRE_CORAL_BLOCK: 1 + DEAD_FIRE_CORAL_FAN: 1 + DEAD_FIRE_CORAL_WALL_FAN: 1 + DEAD_HORN_CORAL_BLOCK: 1 + DEAD_HORN_CORAL_FAN: 1 + DEAD_HORN_CORAL_WALL_FAN: 1 + DEAD_TUBE_CORAL_BLOCK: 1 + DEAD_TUBE_CORAL_FAN: 1 + DEAD_TUBE_CORAL_WALL_FAN: 1 + DETECTOR_RAIL: 10 + DIAMOND_BLOCK: 300 + DIAMOND_ORE: 1 + DIORITE: 1 + DIORITE_SLAB: 1 + DIORITE_STAIRS: 1 + DIORITE_WALL: 1 + DIRT: 3 + DISPENSER: 5 + DRAGON_EGG: 150 + DRAGON_HEAD: 1 + DRAGON_WALL_HEAD: 1 + DRIED_KELP_BLOCK: 1 + DROPPER: 5 + EMERALD_BLOCK: 150 + EMERALD_ORE: 1 + ENCHANTING_TABLE: 150 + ENDER_CHEST: 150 + END_GATEWAY: 0 + END_PORTAL: 0 + END_PORTAL_FRAME: 0 + END_ROD: 1 + END_STONE: 1 + END_STONE_BRICKS: 2 + END_STONE_BRICK_SLAB: 2 + END_STONE_BRICK_STAIRS: 2 + END_STONE_BRICK_WALL: 2 + FARMLAND: 1 + FERN: 1 + FIRE: 0 + FIRE_CORAL: 1 + FIRE_CORAL_BLOCK: 1 + FIRE_CORAL_FAN: 1 + FIRE_CORAL_WALL_FAN: 1 + FLETCHING_TABLE: 8 + FLOWER_POT: 1 + FROSTED_ICE: 1 + FURNACE: 8 + GLASS: 2 + GLASS_PANE: 1 + GLOWSTONE: 1 + GOLD_BLOCK: 150 + GOLD_ORE: 1 + GRANITE: 1 + GRANITE_SLAB: 1 + GRANITE_STAIRS: 1 + GRANITE_WALL: 1 + GRASS: 4 + GRASS_BLOCK: 4 + GRASS_PATH: 4 + GRAVEL: 1 + GRAY_BANNER: 2 + GRAY_BED: 6 + GRAY_CARPET: 1 + GRAY_CONCRETE: 3 + GRAY_CONCRETE_POWDER: 2 + GRAY_GLAZED_TERRACOTTA: 5 + GRAY_SHULKER_BOX: 11 + GRAY_STAINED_GLASS: 2 + GRAY_STAINED_GLASS_PANE: 1 + GRAY_TERRACOTTA: 2 + GRAY_WALL_BANNER: 2 + GRAY_WOOL: 2 + GREEN_BANNER: 2 + GREEN_BED: 6 + GREEN_CARPET: 1 + GREEN_CONCRETE: 3 + GREEN_CONCRETE_POWDER: 2 + GREEN_GLAZED_TERRACOTTA: 5 + GREEN_SHULKER_BOX: 11 + GREEN_STAINED_GLASS: 2 + GREEN_STAINED_GLASS_PANE: 1 + GREEN_TERRACOTTA: 2 + GREEN_WALL_BANNER: 2 + GREEN_WOOL: 2 + GRINDSTONE: 8 + HAY_BLOCK: 2 + HEART_OF_THE_SEA: 3 + HEAVY_WEIGHTED_PRESSURE_PLATE: 2 + HOPPER: -10 + HORN_CORAL_BLOCK: 1 + HORN_CORAL_FAN: 1 + HORN_CORAL_WALL_FAN: 1 + ICE: 5 + INFESTED_CHISELED_STONE_BRICKS: 2 + INFESTED_COBBLESTONE: 1 + INFESTED_CRACKED_STONE_BRICKS: 2 + INFESTED_MOSSY_STONE_BRICKS: 2 + INFESTED_STONE: 1 + INFESTED_STONE_BRICKS: 2 + IRON_BARS: 2 + IRON_BLOCK: 10 + IRON_DOOR: 5 + IRON_ORE: 1 + IRON_TRAPDOOR: 4 + JACK_O_LANTERN: 2 + JUKEBOX: 10 + JUNGLE_BUTTON: 1 + JUNGLE_DOOR: 2 + JUNGLE_FENCE: 2 + JUNGLE_FENCE_GATE: 4 + JUNGLE_LEAVES: 0 + JUNGLE_LOG: 0 + JUNGLE_PLANKS: 1 + JUNGLE_PRESSURE_PLATE: 2 + JUNGLE_SAPLING: 1 + JUNGLE_SIGN: 6 + JUNGLE_SLAB: 1 + JUNGLE_STAIRS: 2 + JUNGLE_TRAPDOOR: 3 + JUNGLE_WALL_SIGN: 6 + JUNGLE_WOOD: 1 + KELP: 1 + KELP_PLANT: 1 + LADDER: 2 + LANTERN: 3 + LAPIS_BLOCK: 10 + LAPIS_ORE: 1 + LARGE_FERN: 1 + LAVA: 0 + LECTERN: 8 + LEVER: 1 + LIGHT_BLUE_BANNER: 2 + LIGHT_BLUE_BED: 6 + LIGHT_BLUE_CARPET: 1 + LIGHT_BLUE_CONCRETE: 3 + LIGHT_BLUE_CONCRETE_POWDER: 2 + LIGHT_BLUE_GLAZED_TERRACOTTA: 5 + LIGHT_BLUE_SHULKER_BOX: 11 + LIGHT_BLUE_STAINED_GLASS: 2 + LIGHT_BLUE_STAINED_GLASS_PANE: 1 + LIGHT_BLUE_TERRACOTTA: 2 + LIGHT_BLUE_WALL_BANNER: 2 + LIGHT_BLUE_WOOL: 2 + LIGHT_GRAY_BANNER: 2 + LIGHT_GRAY_BED: 6 + LIGHT_GRAY_CARPET: 1 + LIGHT_GRAY_CONCRETE: 3 + LIGHT_GRAY_CONCRETE_POWDER: 2 + LIGHT_GRAY_GLAZED_TERRACOTTA: 5 + LIGHT_GRAY_SHULKER_BOX: 11 + LIGHT_GRAY_STAINED_GLASS: 2 + LIGHT_GRAY_STAINED_GLASS_PANE: 1 + LIGHT_GRAY_TERRACOTTA: 2 + LIGHT_GRAY_WALL_BANNER: 2 + LIGHT_GRAY_WOOL: 2 + LIGHT_WEIGHTED_PRESSURE_PLATE: 3 + LILAC: 1 + LILY_OF_THE_VALLEY: 1 + LILY_PAD: 5 + LIME_BANNER: 2 + LIME_BED: 6 + LIME_CARPET: 1 + LIME_CONCRETE: 3 + LIME_CONCRETE_POWDER: 2 + LIME_GLAZED_TERRACOTTA: 5 + LIME_SHULKER_BOX: 11 + LIME_STAINED_GLASS: 2 + LIME_STAINED_GLASS_PANE: 1 + LIME_TERRACOTTA: 2 + LIME_WALL_BANNER: 2 + LIME_WOOL: 2 + LOOM: 5 + MAGENTA_BANNER: 2 + MAGENTA_BED: 6 + MAGENTA_CARPET: 1 + MAGENTA_CONCRETE: 3 + MAGENTA_CONCRETE_POWDER: 2 + MAGENTA_GLAZED_TERRACOTTA: 5 + MAGENTA_SHULKER_BOX: 11 + MAGENTA_STAINED_GLASS: 2 + MAGENTA_STAINED_GLASS_PANE: 1 + MAGENTA_TERRACOTTA: 2 + MAGENTA_WALL_BANNER: 2 + MAGENTA_WOOL: 2 + MAGMA_BLOCK: 1 + MELON: 1 + MELON_STEM: 1 + MOSSY_COBBLESTONE: 1 + MOSSY_COBBLESTONE_SLAB: 1 + MOSSY_COBBLESTONE_STAIRS: 1 + MOSSY_COBBLESTONE_WALL: 1 + MOSSY_STONE_BRICKS: 2 + MOSSY_STONE_BRICK_SLAB: 2 + MOSSY_STONE_BRICK_STAIRS: 2 + MOSSY_STONE_BRICK_WALL: 2 + MYCELIUM: 5 + NETHERRACK: 1 + NETHER_BRICKS: 2 + NETHER_BRICK_FENCE: 2 + NETHER_BRICK_SLAB: 1 + NETHER_BRICK_STAIRS: 2 + NETHER_BRICK_WALL: 2 + NETHER_PORTAL: 1 + NETHER_QUARTZ_ORE: 1 + NETHER_WART_BLOCK: 2 + NOTE_BLOCK: 10 + OAK_BUTTON: 1 + OAK_DOOR: 2 + OAK_FENCE: 2 + OAK_FENCE_GATE: 4 + OAK_LEAVES: 0 + OAK_LOG: 0 + OAK_PLANKS: 1 + OAK_PRESSURE_PLATE: 2 + OAK_SAPLING: 1 + OAK_SIGN: 6 + OAK_SLAB: 1 + OAK_STAIRS: 2 + OAK_TRAPDOOR: 3 + OAK_WALL_SIGN: 6 + OAK_WOOD: 1 + OBSERVER: 1 + OBSIDIAN: 10 + ORANGE_BANNER: 2 + ORANGE_BED: 6 + ORANGE_CARPET: 1 + ORANGE_CONCRETE: 3 + ORANGE_CONCRETE_POWDER: 2 + ORANGE_GLAZED_TERRACOTTA: 5 + ORANGE_SHULKER_BOX: 11 + ORANGE_STAINED_GLASS: 2 + ORANGE_STAINED_GLASS_PANE: 1 + ORANGE_TERRACOTTA: 2 + ORANGE_TULIP: 1 + ORANGE_WALL_BANNER: 2 + ORANGE_WOOL: 2 + OXEYE_DAISY: 1 + PACKED_ICE: 5 + PEONY: 1 + PETRIFIED_OAK_SLAB: 1 + PINK_BANNER: 2 + PINK_BED: 6 + PINK_CARPET: 1 + PINK_CONCRETE: 3 + PINK_CONCRETE_POWDER: 2 + PINK_GLAZED_TERRACOTTA: 5 + PINK_SHULKER_BOX: 11 + PINK_STAINED_GLASS: 2 + PINK_STAINED_GLASS_PANE: 1 + PINK_TERRACOTTA: 2 + PINK_TULIP: 1 + PINK_WALL_BANNER: 2 + PINK_WOOL: 2 + PISTON: 2 + PLAYER_HEAD: 1 + PLAYER_WALL_HEAD: 1 + PODZOL: 2 + POLISHED_ANDESITE: 1 + POLISHED_ANDESITE_SLAB: 1 + POLISHED_ANDESITE_STAIRS: 1 + POLISHED_DIORITE: 1 + POLISHED_DIORITE_SLAB: 1 + POLISHED_DIORITE_STAIRS: 1 + POLISHED_GRANITE: 1 + POLISHED_GRANITE_SLAB: 1 + POLISHED_GRANITE_STAIRS: 1 + POPPY: 1 + POTATOES: 1 + POTTED_ACACIA_SAPLING: 1 + POTTED_ALLIUM: 1 + POTTED_AZURE_BLUET: 1 + POTTED_BAMBOO: 1 + POTTED_BIRCH_SAPLING: 1 + POTTED_BLUE_ORCHID: 1 + POTTED_BROWN_MUSHROOM: 1 + POTTED_CACTUS: 1 + POTTED_CORNFLOWER: 1 + POTTED_DANDELION: 1 + POTTED_DARK_OAK_SAPLING: 1 + POTTED_DEAD_BUSH: 1 + POTTED_FERN: 1 + POTTED_JUNGLE_SAPLING: 1 + POTTED_LILY_OF_THE_VALLEY: 1 + POTTED_OAK_SAPLING: 1 + POTTED_ORANGE_TULIP: 1 + POTTED_OXEYE_DAISY: 1 + POTTED_PINK_TULIP: 1 + POTTED_POPPY: 1 + POTTED_RED_MUSHROOM: 1 + POTTED_RED_TULIP: 1 + POTTED_SPRUCE_SAPLING: 1 + POTTED_WHITE_TULIP: 1 + POTTED_WITHER_ROSE: 1 + POWERED_RAIL: 2 + PRISMARINE: 1 + PRISMARINE_BRICKS: 2 + PRISMARINE_BRICK_SLAB: 1 + PRISMARINE_BRICK_STAIRS: 2 + PRISMARINE_SLAB: 1 + PRISMARINE_STAIRS: 2 + PRISMARINE_WALL: 2 + PUMPKIN: 1 + PUMPKIN_STEM: 1 + PURPLE_BANNER: 2 + PURPLE_BED: 6 + PURPLE_CARPET: 1 + PURPLE_CONCRETE: 3 + PURPLE_CONCRETE_POWDER: 2 + PURPLE_GLAZED_TERRACOTTA: 5 + PURPLE_SHULKER_BOX: 11 + PURPLE_STAINED_GLASS: 2 + PURPLE_STAINED_GLASS_PANE: 1 + PURPLE_TERRACOTTA: 2 + PURPLE_WALL_BANNER: 2 + PURPLE_WOOL: 2 + PURPUR_BLOCK: 1 + PURPUR_PILLAR: 1 + PURPUR_SLAB: 1 + PURPUR_STAIRS: 2 + QUARTZ_BLOCK: 1 + QUARTZ_PILLAR: 1 + QUARTZ_SLAB: 1 + QUARTZ_STAIRS: 2 + RAIL: 1 + REDSTONE_BLOCK: 10 + REDSTONE_LAMP: 10 + REDSTONE_ORE: 1 + REDSTONE_TORCH: 5 + REDSTONE_WALL_TORCH: 5 + REDSTONE_WIRE: 1 + RED_BANNER: 2 + RED_BED: 6 + RED_CARPET: 1 + RED_CONCRETE: 3 + RED_CONCRETE_POWDER: 2 + RED_GLAZED_TERRACOTTA: 5 + RED_MUSHROOM: 1 + RED_MUSHROOM_BLOCK: 1 + RED_NETHER_BRICKS: 2 + RED_NETHER_BRICK_SLAB: 2 + RED_NETHER_BRICK_STAIRS: 2 + RED_NETHER_BRICK_WALL: 2 + RED_SAND: 1 + RED_SANDSTONE: 1 + RED_SANDSTONE_SLAB: 1 + RED_SANDSTONE_STAIRS: 2 + RED_SANDSTONE_WALL: 2 + RED_SHULKER_BOX: 11 + RED_STAINED_GLASS: 2 + RED_STAINED_GLASS_PANE: 1 + RED_TERRACOTTA: 2 + RED_TULIP: 1 + RED_WALL_BANNER: 2 + RED_WOOL: 2 + REPEATER: 6 + REPEATING_COMMAND_BLOCK: 0 + ROSE_BUSH: 1 + SAND: 1 + SANDSTONE: 1 + SANDSTONE_SLAB: 1 + SANDSTONE_STAIRS: 2 + SANDSTONE_WALL: 2 + SCAFFOLDING: 1 + SEAGRASS: 1 + SEA_LANTERN: 9 + SEA_PICKLE: 1 + SHULKER_BOX: 10 + SKELETON_SKULL: 10 + SKELETON_WALL_SKULL: 100 + SLIME_BLOCK: 10 + SMITHING_TABLE: 6 + SMOKER: 10 + SMOOTH_QUARTZ: 1 + SMOOTH_QUARTZ_SLAB: 1 + SMOOTH_QUARTZ_STAIRS: 1 + SMOOTH_RED_SANDSTONE: 1 + SMOOTH_RED_SANDSTONE_SLAB: 1 + SMOOTH_RED_SANDSTONE_STAIRS: 1 + SMOOTH_SANDSTONE: 1 + SMOOTH_SANDSTONE_SLAB: 1 + SMOOTH_SANDSTONE_STAIRS: 1 + SMOOTH_STONE: 1 + SMOOTH_STONE_SLAB: 1 + SNOW: 1 + SNOW_BLOCK: 1 + SOUL_SAND: 2 + SPAWNER: 1 + SPONGE: 10 + SPRUCE_BUTTON: 1 + SPRUCE_DOOR: 2 + SPRUCE_FENCE: 2 + SPRUCE_FENCE_GATE: 4 + SPRUCE_LEAVES: 0 + SPRUCE_LOG: 0 + SPRUCE_PLANKS: 1 + SPRUCE_PRESSURE_PLATE: 2 + SPRUCE_SAPLING: 1 + SPRUCE_SIGN: 6 + SPRUCE_SLAB: 1 + SPRUCE_STAIRS: 2 + SPRUCE_TRAPDOOR: 3 + SPRUCE_WALL_SIGN: 6 + SPRUCE_WOOD: 1 + STICKY_PISTON: 1 + STONE: 1 + STONECUTTER: 4 + STONE_BRICKS: 2 + STONE_BRICK_SLAB: 1 + STONE_BRICK_STAIRS: 2 + STONE_BRICK_WALL: 2 + STONE_BUTTON: 1 + STONE_PRESSURE_PLATE: 2 + STONE_SLAB: 1 + STONE_STAIRS: 1 + STRIPPED_ACACIA_LOG: 0 + STRIPPED_ACACIA_WOOD: 1 + STRIPPED_BIRCH_LOG: 0 + STRIPPED_BIRCH_WOOD: 1 + STRIPPED_DARK_OAK_LOG: 0 + STRIPPED_DARK_OAK_WOOD: 1 + STRIPPED_JUNGLE_LOG: 0 + STRIPPED_JUNGLE_WOOD: 1 + STRIPPED_OAK_LOG: 0 + STRIPPED_OAK_WOOD: 1 + STRIPPED_SPRUCE_LOG: 0 + STRIPPED_SPRUCE_WOOD: 1 + SUGAR_CANE: 1 + SUNFLOWER: 1 + SWEET_BERRY_BUSH: 1 + TALL_GRASS: 1 + TALL_SEAGRASS: 1 + TERRACOTTA: 2 + TNT: 5 + TORCH: 1 + TRAPPED_CHEST: 10 + TRIPWIRE: 2 + TRIPWIRE_HOOK: 2 + TUBE_CORAL_BLOCK: 1 + TUBE_CORAL_FAN: 1 + TUBE_CORAL_WALL_FAN: 1 + TURTLE_EGG: 1 + VINE: 1 + VOID_AIR: 0 + WALL_TORCH: 1 + WATER: 0 + WET_SPONGE: 10 + WHEAT: 1 + WHITE_BANNER: 2 + WHITE_BED: 6 + WHITE_CARPET: 1 + WHITE_CONCRETE: 3 + WHITE_CONCRETE_POWDER: 2 + WHITE_GLAZED_TERRACOTTA: 5 + WHITE_SHULKER_BOX: 11 + WHITE_STAINED_GLASS: 2 + WHITE_STAINED_GLASS_PANE: 1 + WHITE_TERRACOTTA: 2 + WHITE_TULIP: 1 + WHITE_WALL_BANNER: 2 + WHITE_WOOL: 2 + WITHER_ROSE: 1 + WITHER_SKELETON_SKULL: 10 + WITHER_SKELETON_WALL_SKULL: 10 + YELLOW_BANNER: 2 + YELLOW_BED: 6 + YELLOW_CARPET: 1 + YELLOW_CONCRETE: 3 + YELLOW_CONCRETE_POWDER: 2 + YELLOW_GLAZED_TERRACOTTA: 5 + YELLOW_SHULKER_BOX: 11 + YELLOW_STAINED_GLASS: 2 + YELLOW_STAINED_GLASS_PANE: 1 + YELLOW_TERRACOTTA: 2 + YELLOW_WALL_BANNER: 2 + YELLOW_WOOL: 2 + ZOMBIE_HEAD: 1 + ZOMBIE_WALL_HEAD: 1 + +# World differences +# List any blocks that have a different value in a specific world +# If a block is not listed, the default value will be used +# Prefix with world name +worlds: + acidisland_world: + SAND: 0 + SANDSTONE: 0 + ICE: 0 + \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 38764e6..e93fd6a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -8,6 +8,7 @@ game-modes: - BSkyBlock - CaveBlock #- SkyGrid +#- AOneBlock # Performance settings # Level is very processor-intensive, so these settings may need to be tweaked to optimize for your server @@ -18,11 +19,6 @@ task-delay: 1 # Number of chunks that will be processed per task chunks: 10 -# This file lists the values for various blocks that are used to calculate the -# island level. Level = total of all blocks in island boundary / 100. -# Players with the permission askyblock.island.multiplier.# will have their blocks -# multiplied in value by that amount. - # Calculate island level on login # This silently calculates the player's island level when they login # This applies to all islands the player has on the server, e.g., BSkyBlock, AcidIsland @@ -70,690 +66,3 @@ sumteamdeaths: false # Shorthand island level # Shows large level values rounded down, e.g., 10,345 -> 10k shorthand: false - -# This section lists the limits for any particular block. Blocks over this amount -# are not counted. -# Format: -# MATERIAL: limit -limits: - COBBLESTONE: 10000 - NETHERRACK: 1000 - -# This section lists the value of a block. Value must be an integer. -# Any blocks not listed will have a value of 0. AIR is always zero. -# Format is MATERIAL: value - -blocks: - ACACIA_BUTTON: 1 - ACACIA_DOOR: 2 - ACACIA_FENCE: 2 - ACACIA_FENCE_GATE: 4 - ACACIA_LEAVES: 0 - ACACIA_LOG: 0 - ACACIA_PLANKS: 1 - ACACIA_PRESSURE_PLATE: 2 - ACACIA_SAPLING: 1 - ACACIA_SIGN: 6 - ACACIA_SLAB: 1 - ACACIA_STAIRS: 2 - ACACIA_TRAPDOOR: 3 - ACACIA_WALL_SIGN: 6 - ACACIA_WOOD: 1 - ACTIVATOR_RAIL: 1 - ALLIUM: 1 - ANDESITE: 1 - ANDESITE_SLAB: 1 - ANDESITE_STAIRS: 1 - ANDESITE_WALL: 1 - ANVIL: 10 - ATTACHED_MELON_STEM: 1 - ATTACHED_PUMPKIN_STEM: 1 - AZURE_BLUET: 1 - BAMBOO: 1 - BAMBOO_SAPLING: 1 - BARREL: 2 - BARRIER: 0 - BEACON: 500 - BEDROCK: 0 - BEETROOTS: 1 - BELL: 100 - BIRCH_BUTTON: 1 - BIRCH_DOOR: 2 - BIRCH_FENCE: 2 - BIRCH_FENCE_GATE: 4 - BIRCH_LEAVES: 0 - BIRCH_LOG: 0 - BIRCH_PLANKS: 1 - BIRCH_PRESSURE_PLATE: 2 - BIRCH_SAPLING: 1 - BIRCH_SIGN: 6 - BIRCH_SLAB: 1 - BIRCH_STAIRS: 2 - BIRCH_TRAPDOOR: 3 - BIRCH_WALL_SIGN: 6 - BIRCH_WOOD: 1 - BLACK_BANNER: 2 - BLACK_BED: 6 - BLACK_CARPET: 1 - BLACK_CONCRETE: 3 - BLACK_CONCRETE_POWDER: 2 - BLACK_GLAZED_TERRACOTTA: 5 - BLACK_SHULKER_BOX: 11 - BLACK_STAINED_GLASS: 2 - BLACK_STAINED_GLASS_PANE: 1 - BLACK_TERRACOTTA: 2 - BLACK_WALL_BANNER: 2 - BLACK_WOOL: 2 - BLAST_FURNACE: 150 - BLUE_BANNER: 2 - BLUE_BED: 6 - BLUE_CARPET: 1 - BLUE_CONCRETE: 3 - BLUE_CONCRETE_POWDER: 2 - BLUE_GLAZED_TERRACOTTA: 5 - BLUE_ICE: 1 - BLUE_ORCHID: 1 - BLUE_SHULKER_BOX: 11 - BLUE_STAINED_GLASS: 2 - BLUE_STAINED_GLASS_PANE: 1 - BLUE_TERRACOTTA: 2 - BLUE_WALL_BANNER: 2 - BLUE_WOOL: 2 - BONE_BLOCK: 1 - BOOKSHELF: 5 - BRAIN_CORAL: 1 - BRAIN_CORAL_BLOCK: 1 - BRAIN_CORAL_FAN: 1 - BRAIN_CORAL_WALL_FAN: 1 - BREWING_STAND: 20 - BRICKS: 5 - BRICK_SLAB: 3 - BRICK_STAIRS: 5 - BRICK_WALL: 5 - BROWN_BANNER: 2 - BROWN_BED: 6 - BROWN_CARPET: 1 - BROWN_CONCRETE: 3 - BROWN_CONCRETE_POWDER: 2 - BROWN_GLAZED_TERRACOTTA: 5 - BROWN_MUSHROOM: 1 - BROWN_MUSHROOM_BLOCK: 1 - BROWN_SHULKER_BOX: 11 - BROWN_STAINED_GLASS: 2 - BROWN_STAINED_GLASS_PANE: 1 - BROWN_TERRACOTTA: 2 - BROWN_WALL_BANNER: 2 - BROWN_WOOL: 2 - BUBBLE_COLUMN: 1 - BUBBLE_CORAL: 1 - BUBBLE_CORAL_BLOCK: 1 - BUBBLE_CORAL_FAN: 1 - BUBBLE_CORAL_WALL_FAN: 1 - CACTUS: 1 - CAKE: 9 - CAMPFIRE: 5 - CARROTS: 1 - CARTOGRAPHY_TABLE: 6 - CARVED_PUMPKIN: 2 - CAULDRON: 10 - CAVE_AIR: 0 - CHAIN_COMMAND_BLOCK: 0 - CHEST: 8 - CHIPPED_ANVIL: 9 - CHISELED_QUARTZ_BLOCK: 2 - CHISELED_RED_SANDSTONE: 2 - CHISELED_SANDSTONE: 2 - CHISELED_STONE_BRICKS: 2 - CHORUS_FLOWER: 1 - CHORUS_PLANT: 1 - CLAY: 2 - COAL_BLOCK: 9 - COAL_ORE: 1 - COARSE_DIRT: 2 - COBBLESTONE: 1 - COBBLESTONE_SLAB: 1 - COBBLESTONE_STAIRS: 2 - COBBLESTONE_WALL: 1 - COBWEB: 10 - COCOA: 1 - COMMAND_BLOCK: 0 - COMPARATOR: 10 - COMPOSTER: 9 - CONDUIT: 1 - CORNFLOWER: 1 - CRACKED_STONE_BRICKS: 2 - CRAFTING_TABLE: 1 - CREEPER_HEAD: 1 - CREEPER_WALL_HEAD: 1 - CUT_RED_SANDSTONE: 1 - CUT_RED_SANDSTONE_SLAB: 1 - CUT_SANDSTONE: 1 - CUT_SANDSTONE_SLAB: 1 - CYAN_BANNER: 2 - CYAN_BED: 6 - CYAN_CARPET: 1 - CYAN_CONCRETE: 3 - CYAN_CONCRETE_POWDER: 2 - CYAN_GLAZED_TERRACOTTA: 5 - CYAN_SHULKER_BOX: 11 - CYAN_STAINED_GLASS: 2 - CYAN_STAINED_GLASS_PANE: 1 - CYAN_TERRACOTTA: 2 - CYAN_WALL_BANNER: 2 - CYAN_WOOL: 2 - DAMAGED_ANVIL: 5 - DANDELION: 1 - DARK_OAK_BUTTON: 1 - DARK_OAK_DOOR: 2 - DARK_OAK_FENCE: 2 - DARK_OAK_FENCE_GATE: 4 - DARK_OAK_LEAVES: 0 - DARK_OAK_LOG: 0 - DARK_OAK_PLANKS: 1 - DARK_OAK_PRESSURE_PLATE: 2 - DARK_OAK_SAPLING: 1 - DARK_OAK_SIGN: 6 - DARK_OAK_SLAB: 1 - DARK_OAK_STAIRS: 2 - DARK_OAK_TRAPDOOR: 3 - DARK_OAK_WOOD: 1 - DARK_OAK_WALL_SIGN: 6 - DARK_PRISMARINE: 1 - DARK_PRISMARINE_SLAB: 1 - DARK_PRISMARINE_STAIRS: 2 - DAYLIGHT_DETECTOR: 10 - DEAD_BRAIN_CORAL_BLOCK: 1 - DEAD_BRAIN_CORAL_FAN: 1 - DEAD_BRAIN_CORAL_WALL_FAN: 1 - DEAD_BUBBLE_CORAL_BLOCK: 1 - DEAD_BUBBLE_CORAL_FAN: 1 - DEAD_BUBBLE_CORAL_WALL_FAN: 1 - DEAD_BUSH: 1 - DEAD_FIRE_CORAL_BLOCK: 1 - DEAD_FIRE_CORAL_FAN: 1 - DEAD_FIRE_CORAL_WALL_FAN: 1 - DEAD_HORN_CORAL_BLOCK: 1 - DEAD_HORN_CORAL_FAN: 1 - DEAD_HORN_CORAL_WALL_FAN: 1 - DEAD_TUBE_CORAL_BLOCK: 1 - DEAD_TUBE_CORAL_FAN: 1 - DEAD_TUBE_CORAL_WALL_FAN: 1 - DETECTOR_RAIL: 10 - DIAMOND_BLOCK: 300 - DIAMOND_ORE: 1 - DIORITE: 1 - DIORITE_SLAB: 1 - DIORITE_STAIRS: 1 - DIORITE_WALL: 1 - DIRT: 3 - DISPENSER: 5 - DRAGON_EGG: 150 - DRAGON_HEAD: 1 - DRAGON_WALL_HEAD: 1 - DRIED_KELP_BLOCK: 1 - DROPPER: 5 - EMERALD_BLOCK: 150 - EMERALD_ORE: 1 - ENCHANTING_TABLE: 150 - ENDER_CHEST: 150 - END_GATEWAY: 0 - END_PORTAL: 0 - END_PORTAL_FRAME: 0 - END_ROD: 1 - END_STONE: 1 - END_STONE_BRICKS: 2 - END_STONE_BRICK_SLAB: 2 - END_STONE_BRICK_STAIRS: 2 - END_STONE_BRICK_WALL: 2 - FARMLAND: 1 - FERN: 1 - FIRE: 0 - FIRE_CORAL: 1 - FIRE_CORAL_BLOCK: 1 - FIRE_CORAL_FAN: 1 - FIRE_CORAL_WALL_FAN: 1 - FLETCHING_TABLE: 8 - FLOWER_POT: 1 - FROSTED_ICE: 1 - FURNACE: 8 - GLASS: 2 - GLASS_PANE: 1 - GLOWSTONE: 1 - GOLD_BLOCK: 150 - GOLD_ORE: 1 - GRANITE: 1 - GRANITE_SLAB: 1 - GRANITE_STAIRS: 1 - GRANITE_WALL: 1 - GRASS: 4 - GRASS_BLOCK: 4 - GRASS_PATH: 4 - GRAVEL: 1 - GRAY_BANNER: 2 - GRAY_BED: 6 - GRAY_CARPET: 1 - GRAY_CONCRETE: 3 - GRAY_CONCRETE_POWDER: 2 - GRAY_GLAZED_TERRACOTTA: 5 - GRAY_SHULKER_BOX: 11 - GRAY_STAINED_GLASS: 2 - GRAY_STAINED_GLASS_PANE: 1 - GRAY_TERRACOTTA: 2 - GRAY_WALL_BANNER: 2 - GRAY_WOOL: 2 - GREEN_BANNER: 2 - GREEN_BED: 6 - GREEN_CARPET: 1 - GREEN_CONCRETE: 3 - GREEN_CONCRETE_POWDER: 2 - GREEN_GLAZED_TERRACOTTA: 5 - GREEN_SHULKER_BOX: 11 - GREEN_STAINED_GLASS: 2 - GREEN_STAINED_GLASS_PANE: 1 - GREEN_TERRACOTTA: 2 - GREEN_WALL_BANNER: 2 - GREEN_WOOL: 2 - GRINDSTONE: 8 - HAY_BLOCK: 2 - HEART_OF_THE_SEA: 3 - HEAVY_WEIGHTED_PRESSURE_PLATE: 2 - HOPPER: -10 - HORN_CORAL_BLOCK: 1 - HORN_CORAL_FAN: 1 - HORN_CORAL_WALL_FAN: 1 - ICE: 5 - INFESTED_CHISELED_STONE_BRICKS: 2 - INFESTED_COBBLESTONE: 1 - INFESTED_CRACKED_STONE_BRICKS: 2 - INFESTED_MOSSY_STONE_BRICKS: 2 - INFESTED_STONE: 1 - INFESTED_STONE_BRICKS: 2 - IRON_BARS: 2 - IRON_BLOCK: 10 - IRON_DOOR: 5 - IRON_ORE: 1 - IRON_TRAPDOOR: 4 - JACK_O_LANTERN: 2 - JUKEBOX: 10 - JUNGLE_BUTTON: 1 - JUNGLE_DOOR: 2 - JUNGLE_FENCE: 2 - JUNGLE_FENCE_GATE: 4 - JUNGLE_LEAVES: 0 - JUNGLE_LOG: 0 - JUNGLE_PLANKS: 1 - JUNGLE_PRESSURE_PLATE: 2 - JUNGLE_SAPLING: 1 - JUNGLE_SIGN: 6 - JUNGLE_SLAB: 1 - JUNGLE_STAIRS: 2 - JUNGLE_TRAPDOOR: 3 - JUNGLE_WALL_SIGN: 6 - JUNGLE_WOOD: 1 - KELP: 1 - KELP_PLANT: 1 - LADDER: 2 - LANTERN: 3 - LAPIS_BLOCK: 10 - LAPIS_ORE: 1 - LARGE_FERN: 1 - LAVA: 0 - LECTERN: 8 - LEVER: 1 - LIGHT_BLUE_BANNER: 2 - LIGHT_BLUE_BED: 6 - LIGHT_BLUE_CARPET: 1 - LIGHT_BLUE_CONCRETE: 3 - LIGHT_BLUE_CONCRETE_POWDER: 2 - LIGHT_BLUE_GLAZED_TERRACOTTA: 5 - LIGHT_BLUE_SHULKER_BOX: 11 - LIGHT_BLUE_STAINED_GLASS: 2 - LIGHT_BLUE_STAINED_GLASS_PANE: 1 - LIGHT_BLUE_TERRACOTTA: 2 - LIGHT_BLUE_WALL_BANNER: 2 - LIGHT_BLUE_WOOL: 2 - LIGHT_GRAY_BANNER: 2 - LIGHT_GRAY_BED: 6 - LIGHT_GRAY_CARPET: 1 - LIGHT_GRAY_CONCRETE: 3 - LIGHT_GRAY_CONCRETE_POWDER: 2 - LIGHT_GRAY_GLAZED_TERRACOTTA: 5 - LIGHT_GRAY_SHULKER_BOX: 11 - LIGHT_GRAY_STAINED_GLASS: 2 - LIGHT_GRAY_STAINED_GLASS_PANE: 1 - LIGHT_GRAY_TERRACOTTA: 2 - LIGHT_GRAY_WALL_BANNER: 2 - LIGHT_GRAY_WOOL: 2 - LIGHT_WEIGHTED_PRESSURE_PLATE: 3 - LILAC: 1 - LILY_OF_THE_VALLEY: 1 - LILY_PAD: 5 - LIME_BANNER: 2 - LIME_BED: 6 - LIME_CARPET: 1 - LIME_CONCRETE: 3 - LIME_CONCRETE_POWDER: 2 - LIME_GLAZED_TERRACOTTA: 5 - LIME_SHULKER_BOX: 11 - LIME_STAINED_GLASS: 2 - LIME_STAINED_GLASS_PANE: 1 - LIME_TERRACOTTA: 2 - LIME_WALL_BANNER: 2 - LIME_WOOL: 2 - LOOM: 5 - MAGENTA_BANNER: 2 - MAGENTA_BED: 6 - MAGENTA_CARPET: 1 - MAGENTA_CONCRETE: 3 - MAGENTA_CONCRETE_POWDER: 2 - MAGENTA_GLAZED_TERRACOTTA: 5 - MAGENTA_SHULKER_BOX: 11 - MAGENTA_STAINED_GLASS: 2 - MAGENTA_STAINED_GLASS_PANE: 1 - MAGENTA_TERRACOTTA: 2 - MAGENTA_WALL_BANNER: 2 - MAGENTA_WOOL: 2 - MAGMA_BLOCK: 1 - MELON: 1 - MELON_STEM: 1 - MOSSY_COBBLESTONE: 1 - MOSSY_COBBLESTONE_SLAB: 1 - MOSSY_COBBLESTONE_STAIRS: 1 - MOSSY_COBBLESTONE_WALL: 1 - MOSSY_STONE_BRICKS: 2 - MOSSY_STONE_BRICK_SLAB: 2 - MOSSY_STONE_BRICK_STAIRS: 2 - MOSSY_STONE_BRICK_WALL: 2 - MYCELIUM: 5 - NETHERRACK: 1 - NETHER_BRICKS: 2 - NETHER_BRICK_FENCE: 2 - NETHER_BRICK_SLAB: 1 - NETHER_BRICK_STAIRS: 2 - NETHER_BRICK_WALL: 2 - NETHER_PORTAL: 1 - NETHER_QUARTZ_ORE: 1 - NETHER_WART_BLOCK: 2 - NOTE_BLOCK: 10 - OAK_BUTTON: 1 - OAK_DOOR: 2 - OAK_FENCE: 2 - OAK_FENCE_GATE: 4 - OAK_LEAVES: 0 - OAK_LOG: 0 - OAK_PLANKS: 1 - OAK_PRESSURE_PLATE: 2 - OAK_SAPLING: 1 - OAK_SIGN: 6 - OAK_SLAB: 1 - OAK_STAIRS: 2 - OAK_TRAPDOOR: 3 - OAK_WALL_SIGN: 6 - OAK_WOOD: 1 - OBSERVER: 1 - OBSIDIAN: 10 - ORANGE_BANNER: 2 - ORANGE_BED: 6 - ORANGE_CARPET: 1 - ORANGE_CONCRETE: 3 - ORANGE_CONCRETE_POWDER: 2 - ORANGE_GLAZED_TERRACOTTA: 5 - ORANGE_SHULKER_BOX: 11 - ORANGE_STAINED_GLASS: 2 - ORANGE_STAINED_GLASS_PANE: 1 - ORANGE_TERRACOTTA: 2 - ORANGE_TULIP: 1 - ORANGE_WALL_BANNER: 2 - ORANGE_WOOL: 2 - OXEYE_DAISY: 1 - PACKED_ICE: 5 - PEONY: 1 - PETRIFIED_OAK_SLAB: 1 - PINK_BANNER: 2 - PINK_BED: 6 - PINK_CARPET: 1 - PINK_CONCRETE: 3 - PINK_CONCRETE_POWDER: 2 - PINK_GLAZED_TERRACOTTA: 5 - PINK_SHULKER_BOX: 11 - PINK_STAINED_GLASS: 2 - PINK_STAINED_GLASS_PANE: 1 - PINK_TERRACOTTA: 2 - PINK_TULIP: 1 - PINK_WALL_BANNER: 2 - PINK_WOOL: 2 - PISTON: 2 - PLAYER_HEAD: 1 - PLAYER_WALL_HEAD: 1 - PODZOL: 2 - POLISHED_ANDESITE: 1 - POLISHED_ANDESITE_SLAB: 1 - POLISHED_ANDESITE_STAIRS: 1 - POLISHED_DIORITE: 1 - POLISHED_DIORITE_SLAB: 1 - POLISHED_DIORITE_STAIRS: 1 - POLISHED_GRANITE: 1 - POLISHED_GRANITE_SLAB: 1 - POLISHED_GRANITE_STAIRS: 1 - POPPY: 1 - POTATOES: 1 - POTTED_ACACIA_SAPLING: 1 - POTTED_ALLIUM: 1 - POTTED_AZURE_BLUET: 1 - POTTED_BAMBOO: 1 - POTTED_BIRCH_SAPLING: 1 - POTTED_BLUE_ORCHID: 1 - POTTED_BROWN_MUSHROOM: 1 - POTTED_CACTUS: 1 - POTTED_CORNFLOWER: 1 - POTTED_DANDELION: 1 - POTTED_DARK_OAK_SAPLING: 1 - POTTED_DEAD_BUSH: 1 - POTTED_FERN: 1 - POTTED_JUNGLE_SAPLING: 1 - POTTED_LILY_OF_THE_VALLEY: 1 - POTTED_OAK_SAPLING: 1 - POTTED_ORANGE_TULIP: 1 - POTTED_OXEYE_DAISY: 1 - POTTED_PINK_TULIP: 1 - POTTED_POPPY: 1 - POTTED_RED_MUSHROOM: 1 - POTTED_RED_TULIP: 1 - POTTED_SPRUCE_SAPLING: 1 - POTTED_WHITE_TULIP: 1 - POTTED_WITHER_ROSE: 1 - POWERED_RAIL: 2 - PRISMARINE: 1 - PRISMARINE_BRICKS: 2 - PRISMARINE_BRICK_SLAB: 1 - PRISMARINE_BRICK_STAIRS: 2 - PRISMARINE_SLAB: 1 - PRISMARINE_STAIRS: 2 - PRISMARINE_WALL: 2 - PUMPKIN: 1 - PUMPKIN_STEM: 1 - PURPLE_BANNER: 2 - PURPLE_BED: 6 - PURPLE_CARPET: 1 - PURPLE_CONCRETE: 3 - PURPLE_CONCRETE_POWDER: 2 - PURPLE_GLAZED_TERRACOTTA: 5 - PURPLE_SHULKER_BOX: 11 - PURPLE_STAINED_GLASS: 2 - PURPLE_STAINED_GLASS_PANE: 1 - PURPLE_TERRACOTTA: 2 - PURPLE_WALL_BANNER: 2 - PURPLE_WOOL: 2 - PURPUR_BLOCK: 1 - PURPUR_PILLAR: 1 - PURPUR_SLAB: 1 - PURPUR_STAIRS: 2 - QUARTZ_BLOCK: 1 - QUARTZ_PILLAR: 1 - QUARTZ_SLAB: 1 - QUARTZ_STAIRS: 2 - RAIL: 1 - REDSTONE_BLOCK: 10 - REDSTONE_LAMP: 10 - REDSTONE_ORE: 1 - REDSTONE_TORCH: 5 - REDSTONE_WALL_TORCH: 5 - REDSTONE_WIRE: 1 - RED_BANNER: 2 - RED_BED: 6 - RED_CARPET: 1 - RED_CONCRETE: 3 - RED_CONCRETE_POWDER: 2 - RED_GLAZED_TERRACOTTA: 5 - RED_MUSHROOM: 1 - RED_MUSHROOM_BLOCK: 1 - RED_NETHER_BRICKS: 2 - RED_NETHER_BRICK_SLAB: 2 - RED_NETHER_BRICK_STAIRS: 2 - RED_NETHER_BRICK_WALL: 2 - RED_SAND: 1 - RED_SANDSTONE: 1 - RED_SANDSTONE_SLAB: 1 - RED_SANDSTONE_STAIRS: 2 - RED_SANDSTONE_WALL: 2 - RED_SHULKER_BOX: 11 - RED_STAINED_GLASS: 2 - RED_STAINED_GLASS_PANE: 1 - RED_TERRACOTTA: 2 - RED_TULIP: 1 - RED_WALL_BANNER: 2 - RED_WOOL: 2 - REPEATER: 6 - REPEATING_COMMAND_BLOCK: 0 - ROSE_BUSH: 1 - SAND: 1 - SANDSTONE: 1 - SANDSTONE_SLAB: 1 - SANDSTONE_STAIRS: 2 - SANDSTONE_WALL: 2 - SCAFFOLDING: 1 - SEAGRASS: 1 - SEA_LANTERN: 9 - SEA_PICKLE: 1 - SHULKER_BOX: 10 - SKELETON_SKULL: 10 - SKELETON_WALL_SKULL: 100 - SLIME_BLOCK: 10 - SMITHING_TABLE: 6 - SMOKER: 10 - SMOOTH_QUARTZ: 1 - SMOOTH_QUARTZ_SLAB: 1 - SMOOTH_QUARTZ_STAIRS: 1 - SMOOTH_RED_SANDSTONE: 1 - SMOOTH_RED_SANDSTONE_SLAB: 1 - SMOOTH_RED_SANDSTONE_STAIRS: 1 - SMOOTH_SANDSTONE: 1 - SMOOTH_SANDSTONE_SLAB: 1 - SMOOTH_SANDSTONE_STAIRS: 1 - SMOOTH_STONE: 1 - SMOOTH_STONE_SLAB: 1 - SNOW: 1 - SNOW_BLOCK: 1 - SOUL_SAND: 2 - SPAWNER: 1 - SPONGE: 10 - SPRUCE_BUTTON: 1 - SPRUCE_DOOR: 2 - SPRUCE_FENCE: 2 - SPRUCE_FENCE_GATE: 4 - SPRUCE_LEAVES: 0 - SPRUCE_LOG: 0 - SPRUCE_PLANKS: 1 - SPRUCE_PRESSURE_PLATE: 2 - SPRUCE_SAPLING: 1 - SPRUCE_SIGN: 6 - SPRUCE_SLAB: 1 - SPRUCE_STAIRS: 2 - SPRUCE_TRAPDOOR: 3 - SPRUCE_WALL_SIGN: 6 - SPRUCE_WOOD: 1 - STICKY_PISTON: 1 - STONE: 1 - STONECUTTER: 4 - STONE_BRICKS: 2 - STONE_BRICK_SLAB: 1 - STONE_BRICK_STAIRS: 2 - STONE_BRICK_WALL: 2 - STONE_BUTTON: 1 - STONE_PRESSURE_PLATE: 2 - STONE_SLAB: 1 - STONE_STAIRS: 1 - STRIPPED_ACACIA_LOG: 0 - STRIPPED_ACACIA_WOOD: 1 - STRIPPED_BIRCH_LOG: 0 - STRIPPED_BIRCH_WOOD: 1 - STRIPPED_DARK_OAK_LOG: 0 - STRIPPED_DARK_OAK_WOOD: 1 - STRIPPED_JUNGLE_LOG: 0 - STRIPPED_JUNGLE_WOOD: 1 - STRIPPED_OAK_LOG: 0 - STRIPPED_OAK_WOOD: 1 - STRIPPED_SPRUCE_LOG: 0 - STRIPPED_SPRUCE_WOOD: 1 - SUGAR_CANE: 1 - SUNFLOWER: 1 - SWEET_BERRY_BUSH: 1 - TALL_GRASS: 1 - TALL_SEAGRASS: 1 - TERRACOTTA: 2 - TNT: 5 - TORCH: 1 - TRAPPED_CHEST: 10 - TRIPWIRE: 2 - TRIPWIRE_HOOK: 2 - TUBE_CORAL_BLOCK: 1 - TUBE_CORAL_FAN: 1 - TUBE_CORAL_WALL_FAN: 1 - TURTLE_EGG: 1 - VINE: 1 - VOID_AIR: 0 - WALL_TORCH: 1 - WATER: 0 - WET_SPONGE: 10 - WHEAT: 1 - WHITE_BANNER: 2 - WHITE_BED: 6 - WHITE_CARPET: 1 - WHITE_CONCRETE: 3 - WHITE_CONCRETE_POWDER: 2 - WHITE_GLAZED_TERRACOTTA: 5 - WHITE_SHULKER_BOX: 11 - WHITE_STAINED_GLASS: 2 - WHITE_STAINED_GLASS_PANE: 1 - WHITE_TERRACOTTA: 2 - WHITE_TULIP: 1 - WHITE_WALL_BANNER: 2 - WHITE_WOOL: 2 - WITHER_ROSE: 1 - WITHER_SKELETON_SKULL: 10 - WITHER_SKELETON_WALL_SKULL: 10 - YELLOW_BANNER: 2 - YELLOW_BED: 6 - YELLOW_CARPET: 1 - YELLOW_CONCRETE: 3 - YELLOW_CONCRETE_POWDER: 2 - YELLOW_GLAZED_TERRACOTTA: 5 - YELLOW_SHULKER_BOX: 11 - YELLOW_STAINED_GLASS: 2 - YELLOW_STAINED_GLASS_PANE: 1 - YELLOW_TERRACOTTA: 2 - YELLOW_WALL_BANNER: 2 - YELLOW_WOOL: 2 - ZOMBIE_HEAD: 1 - ZOMBIE_WALL_HEAD: 1 - -# World differences -# List any blocks that have a different value in a specific world -# If a block is not listed, the default value will be used -# Prefix with world name -worlds: - acidisland_world: - SAND: 0 - SANDSTONE: 0 - ICE: 0 - \ No newline at end of file diff --git a/src/test/java/world/bentobox/level/LevelPresenterTest.java b/src/test/java/world/bentobox/level/LevelPresenterTest.java index 01e33e6..8e84cdd 100644 --- a/src/test/java/world/bentobox/level/LevelPresenterTest.java +++ b/src/test/java/world/bentobox/level/LevelPresenterTest.java @@ -22,7 +22,7 @@ import world.bentobox.bentobox.api.user.User; import world.bentobox.bentobox.managers.IslandWorldManager; import world.bentobox.bentobox.managers.IslandsManager; import world.bentobox.level.calculators.PlayerLevel; -import world.bentobox.level.config.Settings; +import world.bentobox.level.config.BlockConfig; /** * @author tastybento @@ -39,7 +39,7 @@ public class LevelPresenterTest { @Mock private PlayerLevel pl; @Mock - private Settings settings; + private BlockConfig settings; @Before public void setUp() throws Exception { diff --git a/src/test/java/world/bentobox/level/LevelTest.java b/src/test/java/world/bentobox/level/LevelTest.java index 10a6f3a..5336caa 100644 --- a/src/test/java/world/bentobox/level/LevelTest.java +++ b/src/test/java/world/bentobox/level/LevelTest.java @@ -266,11 +266,6 @@ public class LevelTest { verify(cmd, times(3)).getAddon(); // Three commands verify(adminCmd, times(2)).getAddon(); // Two commands // Placeholders - verify(phm).registerPlaceholder(eq(addon), eq("bskyblock-island-level"), any()); - for (int i = 1; i < 11; i++) { - verify(phm).registerPlaceholder(eq(addon), eq("bskyblock-island-level-top-name-" + i), any()); - verify(phm).registerPlaceholder(eq(addon), eq("bskyblock-island-level-top-value-" + i), any()); - } verify(phm).registerPlaceholder(eq(addon), eq("bskyblock_island_level"), any()); verify(phm).registerPlaceholder(eq(addon), eq("bskyblock_visited_island_level"), any()); for (int i = 1; i < 11; i++) { @@ -316,7 +311,7 @@ public class LevelTest { @Test public void testGetSettings() { addon.onEnable(); - world.bentobox.level.config.Settings s = addon.getSettings(); + world.bentobox.level.config.BlockConfig s = addon.getSettings(); assertEquals(100, s.getDeathPenalty()); } diff --git a/src/test/java/world/bentobox/level/TopTenTest.java b/src/test/java/world/bentobox/level/TopTenTest.java index d0a78d9..1e09d54 100644 --- a/src/test/java/world/bentobox/level/TopTenTest.java +++ b/src/test/java/world/bentobox/level/TopTenTest.java @@ -43,7 +43,7 @@ import world.bentobox.bentobox.database.DatabaseSetup; import world.bentobox.bentobox.managers.IslandWorldManager; import world.bentobox.bentobox.managers.IslandsManager; import world.bentobox.bentobox.managers.PlayersManager; -import world.bentobox.level.config.Settings; +import world.bentobox.level.config.BlockConfig; import world.bentobox.level.objects.TopTenData; @RunWith(PowerMockRunner.class) @@ -73,7 +73,7 @@ public class TopTenTest { @Mock private LevelPresenter lp; @Mock - private Settings settings; + private BlockConfig settings; @SuppressWarnings("unchecked")