mirror of
https://github.com/BentoBoxWorld/Level.git
synced 2024-11-22 10:36:08 +01:00
Shifted to separate block and config settings.
This commit is contained in:
parent
5f5d2542d2
commit
6e64d274e8
@ -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<ConfigSettings> configObject = new Config<>(this, ConfigSettings.class);
|
||||
|
||||
// Database handler for level data
|
||||
private Database<LevelsData> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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<BigInteger, String> stage = LEVELS.floorEntry(levelValue);
|
||||
|
@ -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<Entry<Material>> it = entriesSortedByCount.iterator();
|
||||
while (it.hasNext()) {
|
||||
Entry<Material> 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);
|
||||
|
102
src/main/java/world/bentobox/level/config/BlockConfig.java
Normal file
102
src/main/java/world/bentobox/level/config/BlockConfig.java
Normal file
@ -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<Material, Integer> blockLimits = new HashMap<>();
|
||||
private Map<Material, Integer> blockValues = new HashMap<>();
|
||||
private final Map<World, Map<Material, Integer>> worldBlockValues = new HashMap<>();
|
||||
|
||||
public BlockConfig(Level level, YamlConfiguration blockValues) {
|
||||
|
||||
if (blockValues.isSet("limits")) {
|
||||
HashMap<Material, Integer> 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<Material, Integer> 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<Material, Integer> 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<Material, Integer> getBlockLimits() {
|
||||
return blockLimits;
|
||||
}
|
||||
/**
|
||||
* @param blockLimits2 the blockLimits to set
|
||||
*/
|
||||
private void setBlockLimits(HashMap<Material, Integer> blockLimits2) {
|
||||
this.blockLimits = blockLimits2;
|
||||
}
|
||||
/**
|
||||
* @return the blockValues
|
||||
*/
|
||||
public final Map<Material, Integer> getBlockValues() {
|
||||
return blockValues;
|
||||
}
|
||||
/**
|
||||
* @param blockValues2 the blockValues to set
|
||||
*/
|
||||
private void setBlockValues(Map<Material, Integer> blockValues2) {
|
||||
this.blockValues = blockValues2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the worldBlockValues
|
||||
*/
|
||||
public Map<World, Map<Material, Integer>> getWorldBlockValues() {
|
||||
return worldBlockValues;
|
||||
}
|
||||
}
|
330
src/main/java/world/bentobox/level/config/ConfigSettings.java
Normal file
330
src/main/java/world/bentobox/level/config/ConfigSettings.java
Normal file
@ -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<String> 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<String> getGameModes() {
|
||||
return gameModes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param gameModes the gameModes to set
|
||||
*/
|
||||
public void setGameModes(List<String> 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -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<Material, Integer> blockLimits = new HashMap<>();
|
||||
private Map<Material, Integer> blockValues = new HashMap<>();
|
||||
private final Map<World, Map<Material, Integer>> worldBlockValues = new HashMap<>();
|
||||
private double underWaterMultiplier;
|
||||
private int deathpenalty;
|
||||
private long levelCost;
|
||||
private int levelWait;
|
||||
private int chunks;
|
||||
private long taskDelay;
|
||||
|
||||
private List<String> 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<Material, Integer> 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<Material, Integer> 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<Material, Integer> 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<Material, Integer> getBlockLimits() {
|
||||
return blockLimits;
|
||||
}
|
||||
/**
|
||||
* @param blockLimits2 the blockLimits to set
|
||||
*/
|
||||
private void setBlockLimits(HashMap<Material, Integer> blockLimits2) {
|
||||
this.blockLimits = blockLimits2;
|
||||
}
|
||||
/**
|
||||
* @return the blockValues
|
||||
*/
|
||||
public final Map<Material, Integer> getBlockValues() {
|
||||
return blockValues;
|
||||
}
|
||||
/**
|
||||
* @param blockValues2 the blockValues to set
|
||||
*/
|
||||
private void setBlockValues(Map<Material, Integer> 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<World, Map<Material, Integer>> getWorldBlockValues() {
|
||||
return worldBlockValues;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the gameModes
|
||||
*/
|
||||
public List<String> 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;
|
||||
}
|
||||
|
||||
}
|
@ -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()));
|
||||
|
691
src/main/resources/blockconfig.yml
Normal file
691
src/main/resources/blockconfig.yml
Normal file
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user