Shifted to separate block and config settings.
This commit is contained in:
parent
5f5d2542d2
commit
6e64d274e8
|
@ -1,5 +1,7 @@
|
||||||
package world.bentobox.level;
|
package world.bentobox.level;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -8,10 +10,13 @@ import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
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.NonNull;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.addons.Addon;
|
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.api.user.User;
|
||||||
import world.bentobox.bentobox.database.Database;
|
import world.bentobox.bentobox.database.Database;
|
||||||
import world.bentobox.bentobox.database.objects.Island;
|
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.IslandLevelCommand;
|
||||||
import world.bentobox.level.commands.island.IslandTopCommand;
|
import world.bentobox.level.commands.island.IslandTopCommand;
|
||||||
import world.bentobox.level.commands.island.IslandValueCommand;
|
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.IslandTeamListeners;
|
||||||
import world.bentobox.level.listeners.JoinLeaveListener;
|
import world.bentobox.level.listeners.JoinLeaveListener;
|
||||||
import world.bentobox.level.objects.LevelsData;
|
import world.bentobox.level.objects.LevelsData;
|
||||||
|
@ -35,8 +41,11 @@ import world.bentobox.level.requests.TopTenRequestHandler;
|
||||||
*/
|
*/
|
||||||
public class Level extends Addon {
|
public class Level extends Addon {
|
||||||
|
|
||||||
|
private static Addon addon;
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
private Settings settings;
|
private ConfigSettings settings;
|
||||||
|
private Config<ConfigSettings> configObject = new Config<>(this, ConfigSettings.class);
|
||||||
|
|
||||||
// Database handler for level data
|
// Database handler for level data
|
||||||
private Database<LevelsData> handler;
|
private Database<LevelsData> handler;
|
||||||
|
@ -50,6 +59,10 @@ public class Level extends Addon {
|
||||||
// Level calculator
|
// Level calculator
|
||||||
private LevelPresenter levelPresenter;
|
private LevelPresenter levelPresenter;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private BlockConfig blockConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a user's island
|
* Calculates a user's island
|
||||||
* @param world - the world where this island is
|
* @param world - the world where this island is
|
||||||
|
@ -93,7 +106,7 @@ public class Level extends Addon {
|
||||||
/**
|
/**
|
||||||
* @return the settings
|
* @return the settings
|
||||||
*/
|
*/
|
||||||
public Settings getSettings() {
|
public ConfigSettings getSettings() {
|
||||||
return settings;
|
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
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
// Load the plugin's config
|
addon = this;
|
||||||
settings = new Settings(this);
|
loadBlockSettings();
|
||||||
// Get the BSkyBlock database
|
// Get the BSkyBlock database
|
||||||
// Set up the database handler to store and retrieve Island classes
|
// Set up the database handler to store and retrieve Island classes
|
||||||
// Note that these are saved by the BSkyBlock database
|
// Note that these are saved by the BSkyBlock database
|
||||||
|
@ -275,4 +323,15 @@ public class Level extends Addon {
|
||||||
levelsCache.remove(uniqueId);
|
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) {
|
public String getLevelString(long lvl) {
|
||||||
String level = String.valueOf(lvl);
|
String level = String.valueOf(lvl);
|
||||||
// Asking for the level of another player
|
// Asking for the level of another player
|
||||||
if(addon.getSettings().isShortHand()) {
|
if(addon.getSettings().isShorthand()) {
|
||||||
BigInteger levelValue = BigInteger.valueOf(lvl);
|
BigInteger levelValue = BigInteger.valueOf(lvl);
|
||||||
|
|
||||||
Map.Entry<BigInteger, String> stage = LEVELS.floorEntry(levelValue);
|
Map.Entry<BigInteger, String> stage = LEVELS.floorEntry(levelValue);
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class CalcIslandLevel {
|
||||||
this.addon = addon;
|
this.addon = addon;
|
||||||
this.island = island;
|
this.island = island;
|
||||||
this.world = island.getWorld();
|
this.world = island.getWorld();
|
||||||
this.limitCount = new HashMap<>(addon.getSettings().getBlockLimits());
|
this.limitCount = new HashMap<>(addon.getBlockConfig().getBlockLimits());
|
||||||
this.onExit = onExit;
|
this.onExit = onExit;
|
||||||
this.worlds = new ArrayList<>();
|
this.worlds = new ArrayList<>();
|
||||||
this.worlds.add(world);
|
this.worlds.add(world);
|
||||||
|
@ -113,7 +113,7 @@ public class CalcIslandLevel {
|
||||||
Chunk c = q.remove();
|
Chunk c = q.remove();
|
||||||
getChunk(c);
|
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)));
|
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) {
|
private int getValue(Material md) {
|
||||||
// Check world settings
|
// Check world settings
|
||||||
if (addon.getSettings().getWorldBlockValues().containsKey(world) && addon.getSettings().getWorldBlockValues().get(world).containsKey(md)) {
|
if (addon.getBlockConfig().getWorldBlockValues().containsKey(world) && addon.getBlockConfig().getWorldBlockValues().get(world).containsKey(md)) {
|
||||||
return addon.getSettings().getWorldBlockValues().get(world).get(md);
|
return addon.getBlockConfig().getWorldBlockValues().get(world).get(md);
|
||||||
}
|
}
|
||||||
// Check baseline
|
// Check baseline
|
||||||
if (addon.getSettings().getBlockValues().containsKey(md)) {
|
if (addon.getBlockConfig().getBlockValues().containsKey(md)) {
|
||||||
return addon.getSettings().getBlockValues().get(md);
|
return addon.getBlockConfig().getBlockValues().get(md);
|
||||||
}
|
}
|
||||||
// Not in config
|
// Not in config
|
||||||
result.ncCount.add(md);
|
result.ncCount.add(md);
|
||||||
|
@ -325,11 +325,11 @@ public class CalcIslandLevel {
|
||||||
Iterator<Entry<Material>> it = entriesSortedByCount.iterator();
|
Iterator<Entry<Material>> it = entriesSortedByCount.iterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
Entry<Material> type = it.next();
|
Entry<Material> type = it.next();
|
||||||
Integer limit = addon.getSettings().getBlockLimits().get(type.getElement());
|
Integer limit = addon.getBlockConfig().getBlockLimits().get(type.getElement());
|
||||||
String explain = ")";
|
String explain = ")";
|
||||||
if (limit == null) {
|
if (limit == null) {
|
||||||
Material generic = type.getElement();
|
Material generic = type.getElement();
|
||||||
limit = addon.getSettings().getBlockLimits().get(generic);
|
limit = addon.getBlockConfig().getBlockLimits().get(generic);
|
||||||
explain = " - All types)";
|
explain = " - All types)";
|
||||||
}
|
}
|
||||||
reportLines.add(type.getElement().toString() + ": " + String.format("%,d",type.getCount()) + " blocks (max " + limit + explain);
|
reportLines.add(type.getElement().toString() + ": " + String.format("%,d",type.getCount()) + " blocks (max " + limit + explain);
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
// Load player into cache
|
||||||
addon.getLevelsData(e.getPlayer().getUniqueId());
|
addon.getLevelsData(e.getPlayer().getUniqueId());
|
||||||
// If level calc on login is enabled, run through all the worlds and calculate the level
|
// 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()
|
addon.getPlugin().getAddonsManager().getGameModeAddons().stream()
|
||||||
.filter(gm -> addon.getSettings().getGameModes().contains(gm.getDescription().getName()))
|
.filter(gm -> addon.getSettings().getGameModes().contains(gm.getDescription().getName()))
|
||||||
.forEach(gm -> addon.calculateIslandLevel(gm.getOverWorld(), null, e.getPlayer().getUniqueId()));
|
.forEach(gm -> addon.calculateIslandLevel(gm.getOverWorld(), null, e.getPlayer().getUniqueId()));
|
||||||
|
|
|
@ -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
|
- BSkyBlock
|
||||||
- CaveBlock
|
- CaveBlock
|
||||||
#- SkyGrid
|
#- SkyGrid
|
||||||
|
#- AOneBlock
|
||||||
|
|
||||||
# Performance settings
|
# Performance settings
|
||||||
# Level is very processor-intensive, so these settings may need to be tweaked to optimize for your server
|
# 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
|
# Number of chunks that will be processed per task
|
||||||
chunks: 10
|
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
|
# Calculate island level on login
|
||||||
# This silently calculates the player's island level when they 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
|
# This applies to all islands the player has on the server, e.g., BSkyBlock, AcidIsland
|
||||||
|
@ -70,690 +66,3 @@ sumteamdeaths: false
|
||||||
# Shorthand island level
|
# Shorthand island level
|
||||||
# Shows large level values rounded down, e.g., 10,345 -> 10k
|
# Shows large level values rounded down, e.g., 10,345 -> 10k
|
||||||
shorthand: false
|
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.IslandWorldManager;
|
||||||
import world.bentobox.bentobox.managers.IslandsManager;
|
import world.bentobox.bentobox.managers.IslandsManager;
|
||||||
import world.bentobox.level.calculators.PlayerLevel;
|
import world.bentobox.level.calculators.PlayerLevel;
|
||||||
import world.bentobox.level.config.Settings;
|
import world.bentobox.level.config.BlockConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author tastybento
|
* @author tastybento
|
||||||
|
@ -39,7 +39,7 @@ public class LevelPresenterTest {
|
||||||
@Mock
|
@Mock
|
||||||
private PlayerLevel pl;
|
private PlayerLevel pl;
|
||||||
@Mock
|
@Mock
|
||||||
private Settings settings;
|
private BlockConfig settings;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
|
|
|
@ -266,11 +266,6 @@ public class LevelTest {
|
||||||
verify(cmd, times(3)).getAddon(); // Three commands
|
verify(cmd, times(3)).getAddon(); // Three commands
|
||||||
verify(adminCmd, times(2)).getAddon(); // Two commands
|
verify(adminCmd, times(2)).getAddon(); // Two commands
|
||||||
// Placeholders
|
// 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_island_level"), any());
|
||||||
verify(phm).registerPlaceholder(eq(addon), eq("bskyblock_visited_island_level"), any());
|
verify(phm).registerPlaceholder(eq(addon), eq("bskyblock_visited_island_level"), any());
|
||||||
for (int i = 1; i < 11; i++) {
|
for (int i = 1; i < 11; i++) {
|
||||||
|
@ -316,7 +311,7 @@ public class LevelTest {
|
||||||
@Test
|
@Test
|
||||||
public void testGetSettings() {
|
public void testGetSettings() {
|
||||||
addon.onEnable();
|
addon.onEnable();
|
||||||
world.bentobox.level.config.Settings s = addon.getSettings();
|
world.bentobox.level.config.BlockConfig s = addon.getSettings();
|
||||||
assertEquals(100, s.getDeathPenalty());
|
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.IslandWorldManager;
|
||||||
import world.bentobox.bentobox.managers.IslandsManager;
|
import world.bentobox.bentobox.managers.IslandsManager;
|
||||||
import world.bentobox.bentobox.managers.PlayersManager;
|
import world.bentobox.bentobox.managers.PlayersManager;
|
||||||
import world.bentobox.level.config.Settings;
|
import world.bentobox.level.config.BlockConfig;
|
||||||
import world.bentobox.level.objects.TopTenData;
|
import world.bentobox.level.objects.TopTenData;
|
||||||
|
|
||||||
@RunWith(PowerMockRunner.class)
|
@RunWith(PowerMockRunner.class)
|
||||||
|
@ -73,7 +73,7 @@ public class TopTenTest {
|
||||||
@Mock
|
@Mock
|
||||||
private LevelPresenter lp;
|
private LevelPresenter lp;
|
||||||
@Mock
|
@Mock
|
||||||
private Settings settings;
|
private BlockConfig settings;
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
Loading…
Reference in New Issue