diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6d8a454..0bc21e0 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,22 +11,22 @@ jobs:
name: Build
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- - name: Set up JDK 17
- uses: actions/setup-java@v2
+ - name: Set up JDK 21
+ uses: actions/setup-java@v3
with:
distribution: 'adopt'
- java-version: 17
+ java-version: 21
- name: Cache SonarCloud packages
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Maven packages
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index 4483cd8..0000000
--- a/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Thanks for submitting a pull request. Do not use this form for bug reports!
-Your submission must meet the minimum requirements of a contribution, i.e., add code, refactor code or fix code.
-It takes time and effort to review submissions, so please do not waste our time.
-Note: formating/spacing-only submissions will be rejected!
-For submissions, we want you to use spaces, not tabs (4 spaces) - thank you.
diff --git a/README.md b/README.md
index ae7ac29..22189bc 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,22 @@
# SkyGrid
-Game Mode Add-on for BentoBox the provides a SkyGrid experience
+Welcome to the SkyGrid for Minecraft! This game introduces a unique and challenging gameplay experience where you find yourself navigating a grid of floating blocks high in the sky. Your goal is to survive, gather resources, and conquer the SkyGrid!
+
+This is a Game Mode Add-on that uses the BentoBox library plugin.
+
+
+
+## Features
+
+- **Challenging Gameplay**: SkyGrid presents a challenging environment where you must carefully navigate from block to block to avoid falling.
+- **Randomized Grid**: Each player will have a unique grid layout - a fresh and unpredictable experience every time.
+- **Limited Resources**: Resources are scarce, so you must strategize and prioritize what to gather and when to use them.
+- **Mobs and Dangers**: The SkyGrid is not empty. Beware of hostile mobs and other dangers that lurk in the grid!
+- **Multiplayer Support**: Enjoy the SkyGrid mini game with your friends; form a team or coop.
## Installation
+To play the SkyGrid mini game, follow these steps:
+
1. Place the addon jar in the addons folder of the BentoBox plugin
2. Restart the server
3. The addon will create worlds and a data folder and inside the folder will be a config.yml
@@ -10,4 +24,33 @@ Game Mode Add-on for BentoBox the provides a SkyGrid experience
5. Edit the config.yml how you want.
6. Delete any worlds that were created by default.
7. Restart the server
+9. Launch the game and type /sg to enjoy the SkyGrid!
+
+## How to Play
+
+The objective of the SkyGrid mini game is to survive and complete various challenges in the grid (install the Challenges addon to enable this). Here are some essential gameplay tips:
+
+- **Avoid Falling**: Falling off the grid means certain death. Always be cautious when moving from block to block.
+- **Gather Resources**: Break blocks to collect resources such as wood, stone, and ores. Use these resources wisely to craft tools and equipment.
+- **Complete Challenges**: The SkyGrid mini game may have specific challenges to complete. Pay attention to your objectives and try to achieve them.
+- **Interact with Mobs**: Hostile mobs roam the grid. You can fight them for valuable loot or choose to avoid them altogether. There are also mob spawners that can be used to farm mobs.
+- **Use Your Skills**: Utilize your Minecraft skills to their fullest. Building, crafting, and combat will all play a significant role in your survival.
+
+## Contributing
+
+Contributions to the SkyGrid GitHub project are welcome! If you have ideas, bug fixes, or new features to propose, follow these steps:
+
+1. Fork the repository on GitHub.
+2. Create a new branch with a descriptive name for your changes.
+3. Make your modifications and additions.
+4. Test your changes to ensure they work as intended.
+5. Commit your changes and push them to your forked repository.
+6. Submit a pull request to the main repository, explaining the purpose and details of your changes.
+
+## License
+
+The SkyGrid mini game is released under the [Eclipse Public License 2.0]([LICENSE](https://github.com/BentoBoxWorld/SkyGrid/blob/develop/LICENSE)). Feel free to modify and distribute the game, but remember to credit the original authors.
+
+## Contact
+If you have any questions, suggestions, bug reports, or feedback regarding the SkyGrid mini game, you can file them on [GitHub](https://github.com/BentoBoxWorld/SkyGrid/issues). We would love to hear from you!
diff --git a/pom.xml b/pom.xml
index 039c470..a86217f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,18 +54,18 @@
UTF-8
UTF-8
- 17
+ 21
- 2.0.2
+ 2.0.9
- 1.19.4-R0.1-SNAPSHOT
- 1.23.0
+ 1.21-R0.1-SNAPSHOT
+ 2.4.1-SNAPSHOT
${build.version}-SNAPSHOT
-LOCAL
- 1.19.0
+ 2.1.0
BentoBoxWorld_SkyGrid
bentobox-world
@@ -113,6 +113,14 @@
+
+
+
+ apache.snapshots
+ https://repository.apache.org/snapshots/
+
+
+
@@ -145,7 +153,7 @@
org.mockito
mockito-core
- 3.0.0
+ 3.11.1
test
@@ -219,17 +227,17 @@
org.apache.maven.plugins
maven-resources-plugin
- 3.1.0
+ 3.2.0
- schem
+ blu
org.apache.maven.plugins
maven-compiler-plugin
- 3.7.0
+ 3.8.1
${java.version}
@@ -237,27 +245,56 @@
org.apache.maven.plugins
maven-surefire-plugin
- 2.22.0
+ 3.0.0-M5
+
+
+ ${argLine}
+ --add-opens java.base/java.lang=ALL-UNNAMED
+ --add-opens java.base/java.math=ALL-UNNAMED
+ --add-opens java.base/java.io=ALL-UNNAMED
+ --add-opens java.base/java.util=ALL-UNNAMED
+ --add-opens
+ java.base/java.util.stream=ALL-UNNAMED
+ --add-opens java.base/java.text=ALL-UNNAMED
+ --add-opens
+ java.base/java.util.regex=ALL-UNNAMED
+ --add-opens
+ java.base/java.nio.channels.spi=ALL-UNNAMED
+ --add-opens java.base/sun.nio.ch=ALL-UNNAMED
+ --add-opens java.base/java.net=ALL-UNNAMED
+ --add-opens
+ java.base/java.util.concurrent=ALL-UNNAMED
+ --add-opens java.base/sun.nio.fs=ALL-UNNAMED
+ --add-opens java.base/sun.nio.cs=ALL-UNNAMED
+ --add-opens java.base/java.nio.file=ALL-UNNAMED
+ --add-opens
+ java.base/java.nio.charset=ALL-UNNAMED
+ --add-opens
+ java.base/java.lang.reflect=ALL-UNNAMED
+ --add-opens
+ java.logging/java.util.logging=ALL-UNNAMED
+ --add-opens java.base/java.lang.ref=ALL-UNNAMED
+ --add-opens java.base/java.util.jar=ALL-UNNAMED
+ --add-opens java.base/java.util.zip=ALL-UNNAMED
+
+
org.apache.maven.plugins
maven-jar-plugin
- 3.1.0
+ 3.2.0
-
+
org.apache.maven.plugins
maven-javadoc-plugin
3.3.0
false
-Xdoclint:none
-
- ${java.home}/bin/javadoc
attach-javadocs
- install
jar
@@ -267,7 +304,7 @@
org.apache.maven.plugins
maven-source-plugin
- 3.0.1
+ 3.2.1
attach-sources
@@ -280,23 +317,25 @@
org.apache.maven.plugins
maven-install-plugin
- 2.5.2
+ 3.0.0-M1
org.apache.maven.plugins
maven-deploy-plugin
- 2.8.2
+ 3.0.0-M1
org.jacoco
jacoco-maven-plugin
- 0.8.3
+ 0.8.10
true
**/*Names*
+
+ org/bukkit/Material*
diff --git a/src/main/java/world/bentobox/skygrid/Settings.java b/src/main/java/world/bentobox/skygrid/Settings.java
index b46c5ba..3808aaf 100644
--- a/src/main/java/world/bentobox/skygrid/Settings.java
+++ b/src/main/java/world/bentobox/skygrid/Settings.java
@@ -65,13 +65,15 @@ public class Settings implements WorldSettings {
@ConfigComment("The End chest fill setting")
@ConfigEntry(path = "world.chest-fill.end")
private int chestFillEnd = 5;
- @ConfigComment("Chest items will be taken randomly from this list. All items have an equal chance.")
+ @ConfigComment("Chest items will be taken randomly from this list according to the relative probabilities given")
+ @ConfigComment("Format: Material : Probability")
+ @ConfigComment("Material values can be found at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html")
@ConfigEntry(path = "world.chest-items.overworld")
- private List chestItemsOverworld = new ArrayList<>();
+ private Map chestItemsOverworld = new EnumMap<>(Material.class);
@ConfigEntry(path = "world.chest-items.nether")
- private List chestItemsNether = new ArrayList<>();
+ private Map chestItemsNether = new EnumMap<>(Material.class);
@ConfigEntry(path = "world.chest-items.end")
- private List chestItemsEnd = new ArrayList<>();
+ private Map chestItemsEnd = new EnumMap<>(Material.class);
/* Blocks */
@ConfigComment("World block types. If the material cannot be placed, bedrock will be used.")
@@ -145,10 +147,10 @@ public class Settings implements WorldSettings {
@ConfigEntry(path = "world.skygrid-height")
private int islandHeight = 128;
- @ConfigComment("Spawn height")
- @ConfigComment("Height where players will spawn. Can be less than the grid height")
- @ConfigEntry(path = "world.spawn-height")
- private int spawnHeight = 128;
+ @ConfigComment("End Frame height")
+ @ConfigComment("This is the height where end frames will generate.")
+ @ConfigEntry(path = "world.end-frame-height", since = "1.20.0")
+ private int endFrameHeight = 3;
@ConfigComment("Space around new players in blocks (will be rounded up to nearest 16 blocks)")
@ConfigEntry(path = "world.space-around-players")
@@ -213,15 +215,20 @@ public class Settings implements WorldSettings {
@ConfigComment("Default maximum number of coop rank members per area")
@ConfigComment("Players can have the skygrid.coop.maxsize. permission to be bigger but")
@ConfigComment("permission size cannot be less than the default below. ")
- @ConfigEntry(path = "island.max-coop-size", since = "1.13.0")
+ @ConfigEntry(path = "area.max-coop-size", since = "1.13.0")
private int maxCoopSize = 4;
@ConfigComment("Default maximum number of trusted rank members per area")
@ConfigComment("Players can have the skygrid.trust.maxsize. permission to be bigger but")
@ConfigComment("permission size cannot be less than the default below. ")
- @ConfigEntry(path = "island.max-trusted-size", since = "1.13.0")
+ @ConfigEntry(path = "area.max-trusted-size", since = "1.13.0")
private int maxTrustSize = 4;
+ @ConfigComment("Default maximum number of homes a player can have. Min = 1")
+ @ConfigComment("Accessed via /sg sethome or /sg go ")
+ @ConfigEntry(path = "area.max-homes")
+ private int maxHomes = 5;
+
// Reset
@ConfigComment("How many resets a player is allowed (override with /sgadmin clearresets )")
@ConfigComment("Value of -1 means unlimited, 0 means hardcore - no resets.")
@@ -577,7 +584,7 @@ public void setIslandStartZ(int islandStartZ) {
@Override
public int getIslandHeight() {
if (islandHeight > 255) islandHeight = 255;
- else if (islandHeight < 0) islandHeight = 0;
+ else if (islandHeight < -64) islandHeight = -64;
return islandHeight;
}
@@ -586,24 +593,10 @@ public int getIslandHeight() {
*/
public void setIslandHeight(int islandHeight) {
if (islandHeight > 255) islandHeight = 255;
- else if (islandHeight < 0) islandHeight = 0;
+ else if (islandHeight < -64) islandHeight = -64;
this.islandHeight = islandHeight;
}
- /**
- * @return the spawnHeight
- */
- public int getSpawnHeight() {
- return spawnHeight;
- }
-
- /**
- * @param spawnHeight the spawnHeight to set
- */
- public void setSpawnHeight(int spawnHeight) {
- this.spawnHeight = spawnHeight;
- }
-
/**
* @return the islandDistance
*/
@@ -1174,7 +1167,7 @@ public int getIslandZOffset() {
@Override
public int getMaxHomes() {
- return 0;
+ return maxHomes;
}
@Override
@@ -1214,7 +1207,7 @@ public boolean isNetherIslands() {
@Override
public boolean isUseOwnGenerator() {
- return true;
+ return false;
}
@Override
@@ -1297,42 +1290,42 @@ public void setChestFillEnd(int chestFillEnd) {
/**
* @return the chestItemsOverworld
*/
- public List getChestItemsOverworld() {
+ public Map getChestItemsOverworld() {
return chestItemsOverworld;
}
/**
* @param chestItemsOverworld the chestItemsOverworld to set
*/
- public void setChestItemsOverworld(List chestItemsOverworld) {
+ public void setChestItemsOverworld(Map chestItemsOverworld) {
this.chestItemsOverworld = chestItemsOverworld;
}
/**
* @return the chestItemsNether
*/
- public List getChestItemsNether() {
+ public Map getChestItemsNether() {
return chestItemsNether;
}
/**
* @param chestItemsNether the chestItemsNether to set
*/
- public void setChestItemsNether(List chestItemsNether) {
+ public void setChestItemsNether(Map chestItemsNether) {
this.chestItemsNether = chestItemsNether;
}
/**
* @return the chestItemsEnd
*/
- public List getChestItemsEnd() {
+ public Map getChestItemsEnd() {
return chestItemsEnd;
}
/**
* @param chestItemsEnd the chestItemsEnd to set
*/
- public void setChestItemsEnd(List chestItemsEnd) {
+ public void setChestItemsEnd(Map chestItemsEnd) {
this.chestItemsEnd = chestItemsEnd;
}
@@ -1628,4 +1621,25 @@ public boolean isCheckForBlocks()
{
return false;
}
+
+ /**
+ * @param maxHomes the maxHomes to set
+ */
+ public void setMaxHomes(int maxHomes) {
+ this.maxHomes = maxHomes;
+ }
+
+ /**
+ * @return the endFrameHeight
+ */
+ public int getEndFrameHeight() {
+ return endFrameHeight;
+ }
+
+ /**
+ * @param endFrameHeight the endFrameHeight to set
+ */
+ public void setEndFrameHeight(int endFrameHeight) {
+ this.endFrameHeight = endFrameHeight;
+ }
}
diff --git a/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java
index 3c15765..44a2af6 100644
--- a/src/main/java/world/bentobox/skygrid/SkyGrid.java
+++ b/src/main/java/world/bentobox/skygrid/SkyGrid.java
@@ -2,6 +2,7 @@
import org.bukkit.World;
import org.bukkit.WorldCreator;
+import org.bukkit.generator.BiomeProvider;
import org.bukkit.generator.ChunkGenerator;
import org.eclipse.jdt.annotation.NonNull;
@@ -12,6 +13,7 @@
import world.bentobox.bentobox.api.configuration.WorldSettings;
import world.bentobox.bentobox.api.flags.Flag.Type;
import world.bentobox.bentobox.lists.Flags;
+import world.bentobox.skygrid.generators.SkyGridBiomeProvider;
import world.bentobox.skygrid.generators.SkyGridGen;
import world.bentobox.skygrid.generators.WorldStyles;
@@ -88,22 +90,26 @@ public void createWorlds() {
if (getServer().getWorld(worldName) == null) {
getLogger().info("Creating SkyGrid world ...");
}
+ BiomeProvider bp = new SkyGridBiomeProvider();
// Create the world if it does not exist
- islandWorld = WorldCreator.name(worldName).environment(World.Environment.NORMAL).generator(gen).createWorld();
+ islandWorld = WorldCreator.name(worldName).environment(World.Environment.NORMAL).generator(gen)
+ .biomeProvider(bp).createWorld();
// Make the nether if it does not exist
if (settings.isNetherGenerate()) {
if (getServer().getWorld(worldName + NETHER) == null) {
log("Creating SkyGrid's Nether...");
}
- netherWorld = WorldCreator.name(worldName + NETHER).generator(gen).environment(World.Environment.NETHER).createWorld();
+ netherWorld = WorldCreator.name(worldName + NETHER).generator(gen).environment(World.Environment.NETHER)
+ .biomeProvider(bp).createWorld();
}
// Make the end if it does not exist
if (settings.isEndGenerate()) {
if (getServer().getWorld(worldName + THE_END) == null) {
log("Creating SkyGrid's End World...");
}
- endWorld = WorldCreator.name(worldName + THE_END).generator(gen).environment(World.Environment.THE_END).createWorld();
+ endWorld = WorldCreator.name(worldName + THE_END).generator(gen).environment(World.Environment.THE_END)
+ .biomeProvider(bp).createWorld();
}
}
@@ -128,4 +134,9 @@ public void saveWorldSettings() {
}
}
+
+ @Override
+ public boolean isUsesNewChunkGeneration() {
+ return true;
+ }
}
diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomeProvider.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomeProvider.java
new file mode 100644
index 0000000..9315696
--- /dev/null
+++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomeProvider.java
@@ -0,0 +1,77 @@
+package world.bentobox.skygrid.generators;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.Random;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.bukkit.World;
+import org.bukkit.World.Environment;
+import org.bukkit.block.Biome;
+import org.bukkit.generator.BiomeProvider;
+import org.bukkit.generator.WorldInfo;
+import org.bukkit.util.noise.PerlinOctaveGenerator;
+
+/**
+ * @author tastybento
+ */
+public class SkyGridBiomeProvider extends BiomeProvider {
+
+ private static final Random RAND = new Random();
+ private final Map temperatureGenMap = new ConcurrentHashMap<>();
+ private final Map rainfallGenMap = new ConcurrentHashMap<>();
+
+
+ @Override
+ public Biome getBiome(WorldInfo worldInfo, int realX, int y, int realZ) {
+
+ // Handle caves
+ if (worldInfo.getEnvironment() == Environment.NORMAL && y < 0) {
+ return caveBiome(y);
+ }
+
+ // Make and cache the PerlinOctaveGenerator for the environment
+ PerlinOctaveGenerator temperatureGen = temperatureGenMap.computeIfAbsent(worldInfo.getEnvironment(), wf -> {
+ PerlinOctaveGenerator tg = new PerlinOctaveGenerator(worldInfo.getSeed(), 16);
+ tg.setScale(1.0 / 100.0);
+ return tg;
+ });
+ PerlinOctaveGenerator rainfallGen = rainfallGenMap.computeIfAbsent(worldInfo.getEnvironment(), wf -> {
+ PerlinOctaveGenerator rg = new PerlinOctaveGenerator(worldInfo.getSeed() + 1, 15);
+ rg.setScale(1.0 / 100.0);
+ return rg;
+ });
+
+ //We get the 3 closest biome's to the temperature and rainfall at this block
+ Map biomes = SkyGridBiomes.getBiomes(worldInfo.getEnvironment(),
+ Math.abs(temperatureGen.noise(realX, realZ, 0.5, 0.5) * 100.0),
+ Math.abs(rainfallGen.noise(realX, realZ, 0.5, 0.5) * 100.0));
+
+ double maxNoiz = 0.0;
+ SkyGridBiomes maxBiome = null;
+
+ for (Entry biome : biomes.entrySet()) {
+ if (biome.getValue() >= maxNoiz) {
+ maxNoiz = biome.getValue();
+ maxBiome = biome.getKey();
+ }
+ }
+ return Objects.requireNonNull(maxBiome).biome;
+ }
+
+ private Biome caveBiome(int y) {
+ if (y < -52) {
+ return Biome.DEEP_DARK;
+ }
+ return RAND.nextBoolean() ? Biome.LUSH_CAVES : Biome.DRIPSTONE_CAVES;
+ }
+
+ @Override
+ public List getBiomes(WorldInfo worldInfo) {
+ return Arrays.stream(SkyGridBiomes.values()).map(SkyGridBiomes::getBiome).toList();
+ }
+
+}
diff --git a/src/main/java/world/bentobox/skygrid/generators/Biomes.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomes.java
similarity index 76%
rename from src/main/java/world/bentobox/skygrid/generators/Biomes.java
rename to src/main/java/world/bentobox/skygrid/generators/SkyGridBiomes.java
index 4fa641c..fb716f9 100644
--- a/src/main/java/world/bentobox/skygrid/generators/Biomes.java
+++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomes.java
@@ -17,21 +17,28 @@
* is a tundra, but it is also much closer to a desert than a rain forest.
*
*/
-public enum Biomes {
+public enum SkyGridBiomes {
//We store the biome, the temperature and rainfall for each biome.
- SNOWY_PLAINS(Environment.NORMAL, Biome.SNOWY_PLAINS, 0, 100),
- SNOWY_TAIGA(Environment.NORMAL, Biome.SNOWY_TAIGA, 0, 100),
- FROZEN_RIVER(Environment.NORMAL, Biome.FROZEN_RIVER, 0, 10),
- SNOWY_BEACH(Environment.NORMAL, Biome.SNOWY_BEACH, 0, 100),
- STONY_PEAKS(Environment.NORMAL, Biome.STONY_PEAKS, 20, 60),
+ PLAINS(Environment.NORMAL, Biome.PLAINS, 40, 30),
DESERT(Environment.NORMAL, Biome.DESERT, 60, 4),
+ BADLANDS(Environment.NORMAL, Biome.BADLANDS, 90, 1),
FOREST(Environment.NORMAL, Biome.FOREST, 50, 60),
- PLAINS(Environment.NORMAL, Biome.PLAINS, 40, 30),
+ FLOWER_FOREST(Environment.NORMAL, Biome.FLOWER_FOREST, 50, 60),
+ BIRCH_FOREST(Environment.NORMAL, Biome.BIRCH_FOREST, 50, 59),
+ CHERRY_GROVE(Environment.NORMAL, Biome.CHERRY_GROVE, 45, 35),
SWAMP(Environment.NORMAL, Biome.SWAMP, 40, 70),
JUNGLE(Environment.NORMAL, Biome.JUNGLE, 60, 50),
+ BAMBOO_JUNGLE(Environment.NORMAL, Biome.BAMBOO_JUNGLE, 60, 49),
SAVANNA(Environment.NORMAL, Biome.SAVANNA, 40, 10),
TAIGA(Environment.NORMAL, Biome.TAIGA, 30, 5),
+ MUSHROOM_FIELDS(Environment.NORMAL, Biome.MUSHROOM_FIELDS, 50, 50),
+ SNOWY_PLAINS(Environment.NORMAL, Biome.SNOWY_PLAINS, 0, 100),
+ SNOWY_TAIGA(Environment.NORMAL, Biome.SNOWY_TAIGA, 0, 15),
+ FROZEN_RIVER(Environment.NORMAL, Biome.FROZEN_RIVER, 10, 10),
+ SNOWY_BEACH(Environment.NORMAL, Biome.SNOWY_BEACH, 10, 100),
+ STONY_PEAKS(Environment.NORMAL, Biome.STONY_PEAKS, 20, 60),
+
// Nether
NETHER_WASTES(Environment.NETHER, Biome.NETHER_WASTES, 40, 30),
SOUL_SAND_VALLEY(Environment.NETHER, Biome.SOUL_SAND_VALLEY, 40, 70),
@@ -50,7 +57,7 @@ public enum Biomes {
public final double optimumTemperature;
public final double optimumRainfall;
- Biomes(Environment env, Biome biome, double temp, double rain) {
+ SkyGridBiomes(Environment env, Biome biome, double temp, double rain) {
this.env = env;
this.biome = biome;
this.optimumTemperature = temp;
@@ -65,18 +72,19 @@ public enum Biomes {
* @param rain - rain
* @return Map of 3 biomes
*/
- public static Map getBiomes(Environment env, double temp, double rain) {
+ public static Map getBiomes(Environment env, double temp, double rain) {
// We tell it the capacity we need to avoid expensive dynamic lengthening
- Map biomes = new EnumMap<>(Biomes.class);
+ Map biomes = new EnumMap<>(SkyGridBiomes.class);
- Biomes closestBiome = null;
- Biomes secondClosestBiome = null;
- Biomes thirdClosestBiome = null;
+ SkyGridBiomes closestBiome = null;
+ SkyGridBiomes secondClosestBiome = null;
+ SkyGridBiomes thirdClosestBiome = null;
double closestDist = 10000000;
double secondClosestDist = 10000000;
double thirdClosestDist = 10000000;
- for (Biomes biome : Biomes.values()) {
+ for (SkyGridBiomes biome : SkyGridBiomes.values()) {
+ // Only cover biomes for this environment, e.g., Nether
if (!env.equals(biome.env)) continue;
// To avoid having to do an expensive square root per biome per block,
// we just compare the square distances, and take the square root at the
@@ -107,8 +115,15 @@ else if (dist <= thirdClosestDist) {
return biomes;
}
- private static double getSquaredDistance(Biomes biome, double temp, double rain) {
+ private static double getSquaredDistance(SkyGridBiomes biome, double temp, double rain) {
return Math.abs((biome.optimumTemperature-temp)*(biome.optimumTemperature-temp) + (biome.optimumRainfall-rain)*(biome.optimumRainfall-rain));
}
+ /**
+ * @return the biome
+ */
+ public Biome getBiome() {
+ return biome;
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java
index b596158..a4d8135 100644
--- a/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java
+++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java
@@ -9,6 +9,8 @@
import org.bukkit.block.data.Bisected;
import org.bukkit.block.data.BlockData;
+import com.google.common.base.Enums;
+
import world.bentobox.skygrid.SkyGrid;
/**
@@ -21,7 +23,8 @@ public class SkyGridChunks {
// Blocks that need to be placed on dirt
private static final List NEEDS_DIRT = List.of(Material.ACACIA_SAPLING, Material.ALLIUM, Material.AZURE_BLUET,
Material.BEETROOTS, Material.BIRCH_SAPLING, Material.BLUE_ORCHID, Material.BROWN_MUSHROOM, Material.DANDELION,
- Material.DARK_OAK_SAPLING, Material.DEAD_BUSH, Material.FERN, Material.GRASS, Material.JUNGLE_SAPLING,
+ Material.DARK_OAK_SAPLING, Material.DEAD_BUSH, Material.FERN,
+ Enums.getIfPresent(Material.class, "GRASS").or(Material.SHORT_GRASS), Material.JUNGLE_SAPLING,
Material.LARGE_FERN, Material.LILAC, Material.OAK_SAPLING, Material.ORANGE_TULIP, Material.OXEYE_DAISY,
Material.PEONY, Material.PINK_TULIP, Material.POPPY, Material.RED_MUSHROOM, Material.RED_TULIP,
Material.ROSE_BUSH, Material.SPRUCE_SAPLING, Material.SUGAR_CANE, Material.SUNFLOWER, Material.TALL_GRASS,
@@ -54,12 +57,35 @@ public SkyGridChunks(SkyGrid addon) {
addon.log("Done making chunks");
}
+ public Material getBlock(Environment env) {
+ BlockProbability prob = addon.getWorldStyles().get(env).getProb();
+ return prob.getBlock(random, false, false);
+ /*
+ // Get a random block and feed in the last block (true if cactus or cane)
+ Material blockMat = prob.getBlock(random, y == 0, false);
+ // If blockMat is not "a block" then cannot be generated
+ if (!blockMat.isAir() && !blockMat.isBlock()) {
+ blockMat = Material.STONE;
+ }
+ // Convert to deep
+ if (y < 0) {
+ if (blockMat == Material.STONE) {
+ blockMat = Material.DEEPSLATE;
+
+ } else if (blockMat == Material.COBBLESTONE) {
+ blockMat = Material.COBBLED_DEEPSLATE;
+ } else {
+ blockMat = Enums.getIfPresent(Material.class, "DEEPSLATE_" + blockMat.name()).or(blockMat);
+ }
+ }
+ return new SkyGridBlock(x, y, z, blockMat);*/
+ }
private List getChunk(BlockProbability prob) {
List result = new ArrayList<>();
for (int x = 1; x < 16; x += 4) {
for (int z = 1; z < 16; z += 4) {
- for (int y = 0; y <= addon.getSettings().getIslandHeight(); y += 4) {
+ for (int y = -64; y <= addon.getSettings().getIslandHeight(); y += 4) {
setBlock(prob, x, y, z, result);
}
}
@@ -88,6 +114,15 @@ private void setBlock(BlockProbability prob, int x, int y, int z, List blockMat = Material.DEEPSLATE;
+ case COBBLESTONE -> blockMat = Material.COBBLED_DEEPSLATE;
+ default -> blockMat = Enums.getIfPresent(Material.class, "DEEPSLATE_" + blockMat.name()).or(blockMat);
+ }
+ }
+
// Check if the block needs dirt
if (NEEDS_DIRT.contains(blockMat)) {
// Add dirt
@@ -108,7 +143,7 @@ private void setBlock(BlockProbability prob, int x, int y, int z, List {
+ case CACTUS, DEAD_BUSH -> {
result.add(new SkyGridBlock(x, y, z, Material.SAND));
result.add(new SkyGridBlock(x, y - 1, z, Material.SANDSTONE));
result.add(new SkyGridBlock(x, y + 1, z, blockMat));
diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java
index 7a58b0a..ba063d1 100644
--- a/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java
+++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java
@@ -1,11 +1,12 @@
package world.bentobox.skygrid.generators;
-import java.util.Collections;
+import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.bukkit.Location;
import org.bukkit.Material;
+import org.bukkit.Tag;
import org.bukkit.World;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
@@ -18,27 +19,82 @@ public class SkyGridGen extends ChunkGenerator {
private final SkyGrid addon;
private final BlockPopulator populator;
- private final SkyGridChunks preMade;
/**
* @param addon - addon
*/
public SkyGridGen(SkyGrid addon) {
+ super();
this.addon = addon;
this.populator = new SkyGridPop(addon);
- preMade = new SkyGridChunks(addon);
}
@Override
- public void generateNoise(WorldInfo worldInfo, Random r, int x, int z, ChunkData result) {
- result.setRegion(0, worldInfo.getMinHeight(), 0, 16, worldInfo.getMaxHeight(), 16, Material.AIR);
- preMade.getSkyGridChunk(worldInfo.getEnvironment()).forEach(b -> result.setBlock(b.getX(), b.getY(), b.getZ(), b.getBd()));
+ public void generateNoise(WorldInfo worldInfo, Random r, int chunkX, int chunkZ, ChunkData result) {
+ Random rand = new Random(worldInfo.getSeed());
+ // Cut off anything higher than island height
+ result.setRegion(0, Math.min(addon.getSettings().getIslandHeight() + 1, worldInfo.getMaxHeight() - 1), 0, 16,
+ worldInfo.getMaxHeight(), 16,
+ Material.AIR);
+ for (int x = 0; x < 16; x++) {
+ for (int z = 0; z < 16; z++) {
+ for (int y = addon.getSettings().getIslandHeight(); y >= worldInfo.getMinHeight(); y--) {
+ // Check if the block is not the 4th block
+ if ((Math.floorMod(x, 4) != 0) || (Math.floorMod(z, 4) != 0) || (Math.floorMod(y, 4) != 0)) {
+ result.setBlock(x, y, z, Material.AIR);
+ } else {
+ Material m = result.getBlockData(x, y, z).getMaterial();
+ if (m == Material.AIR || m == Material.WATER) {
+ Material nextBlock = addon.getWorldStyles().get(worldInfo.getEnvironment()).getProb()
+ .getBlock(rand, y == worldInfo.getMinHeight(), true);
+ // Check for plants, etc. below this y
+ checkPlants(nextBlock, x, y, z, result);
+ }
+ }
+ }
+ }
+ }
}
+
+ private boolean checkPlants(Material nextBlock, int x, int y, int z, ChunkData result) {
+ if (Tag.SAPLINGS.isTagged(nextBlock) || Tag.FLOWERS.isTagged(nextBlock)
+ || Tag.ITEMS_VILLAGER_PLANTABLE_SEEDS.isTagged(nextBlock)) {
+ result.setBlock(x, y, z, Material.DIRT);
+ result.setBlock(x, y + 1, z, nextBlock);
+ } else {
+ switch (nextBlock) {
+ case CACTUS, DEAD_BUSH -> {
+ result.setBlock(x, y, z, Material.SANDSTONE);
+ result.setBlock(x, y, z, Material.SAND);
+ result.setBlock(x, y + 2, z, nextBlock);
+ }
+ case NETHER_WART -> {
+ result.setBlock(x, y, z, Material.SOUL_SAND);
+ result.setBlock(x, y + 1, z, nextBlock);
+ }
+ case END_ROD, CHORUS_PLANT -> {
+ result.setBlock(x, y, z, Material.END_STONE);
+ result.setBlock(x, y + 1, z, nextBlock);
+ }
+
+ default -> {
+ result.setBlock(x, y, z, nextBlock);
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+
@Override
public List getDefaultPopulators(World world) {
- return Collections.singletonList(populator);
+ List list = new ArrayList<>();
+ list.addAll(super.getDefaultPopulators(world));
+ list.add(populator);
+ return list;
}
@Override
@@ -46,5 +102,57 @@ public Location getFixedSpawnLocation(World world, Random random) {
return new Location(world, 0, addon.getSettings().getIslandHeight() + 2D, 0);
}
+ @Override
+ public boolean shouldGenerateNoise() {
+ return true;
+ }
+
+ /**
+ * Gets if the server should generate Vanilla surface.
+ * @return true if the server should generate Vanilla surface
+ */
+ @Override
+ public boolean shouldGenerateSurface() {
+ return true;
+ }
+
+ /**
+ * Gets if the server should generate Vanilla caves.
+ * @return true if the server should generate Vanilla caves
+ */
+ @Override
+ public boolean shouldGenerateCaves() {
+ return true;
+ }
+
+ /**
+ * Gets if the server should generate Vanilla decorations after this
+ * ChunkGenerator.
+ * @return true if the server should generate Vanilla decorations
+ */
+ @Override
+ public boolean shouldGenerateDecorations() {
+ return true;
+ }
+
+ /**
+ * Gets if the server should generate Vanilla mobs after this
+ * ChunkGenerator.
+ * @return true if the server should generate Vanilla mobs
+ */
+ @Override
+ public boolean shouldGenerateMobs() {
+ return true;
+ }
+
+ /**
+ * Gets if the server should generate Vanilla structures after this
+ * ChunkGenerator.
+ * @return true if the server should generate Vanilla structures
+ */
+ @Override
+ public boolean shouldGenerateStructures() {
+ return true;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java
index 137b6ba..8a6cba7 100644
--- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java
+++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java
@@ -1,38 +1,47 @@
package world.bentobox.skygrid.generators;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.NavigableMap;
-import java.util.Objects;
import java.util.Random;
+import java.util.TreeMap;
+import java.util.UUID;
-import org.bukkit.Chunk;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
import org.bukkit.Material;
+import org.bukkit.Tag;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
-import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.Chest;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.block.data.type.EndPortalFrame;
-import org.bukkit.block.data.type.Sapling;
import org.bukkit.entity.EntityType;
import org.bukkit.generator.BlockPopulator;
+import org.bukkit.generator.LimitedRegion;
+import org.bukkit.generator.WorldInfo;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.util.Vector;
import world.bentobox.skygrid.SkyGrid;
public class SkyGridPop extends BlockPopulator {
private static final RandomSeries slt = new RandomSeries(27);
- private final int size;
+ private final int islandHeight;
private final SkyGrid addon;
- private final List chestItemsWorld;
- private final List chestItemsNether;
- private final List chestItemsEnd;
- private Random random;
- private Chunk chunk;
+ private final NavigableMap chestItemsWorld = new TreeMap<>();
+ private final NavigableMap chestItemsNether = new TreeMap<>();
+ private final NavigableMap chestItemsEnd = new TreeMap<>();
+ private int worldTotal;
+ private int netherTotal;
+ private int endTotal;
+ private Map rand = new HashMap<>();
+ private Random random = new Random();
private static final Material[] SAPLING_TYPE = {
Material.ACACIA_SAPLING,
@@ -47,51 +56,79 @@ public class SkyGridPop extends BlockPopulator {
public SkyGridPop(SkyGrid addon) {
this.addon = addon;
- this.size = addon.getSettings().getIslandHeight();
+ this.islandHeight = addon.getSettings().getIslandHeight();
// Load the chest items
- chestItemsWorld = addon.getSettings().getChestItemsOverworld().stream().map(Material::matchMaterial).filter(Objects::nonNull).toList();
- chestItemsNether = addon.getSettings().getChestItemsNether().stream().map(Material::matchMaterial).filter(Objects::nonNull).toList();
- chestItemsEnd = addon.getSettings().getChestItemsEnd().stream().map(Material::matchMaterial).filter(Objects::nonNull).toList();
+ for (Entry en : addon.getSettings().getChestItemsOverworld().entrySet()) {
+ if (en.getKey().isItem()) {
+ worldTotal += en.getValue();
+ chestItemsWorld.put(worldTotal, en.getKey());
+ } else {
+ addon.logWarning(en.getKey() + " is not an item so cannot go in a chest.");
+ }
+ }
+ for (Entry en : addon.getSettings().getChestItemsNether().entrySet()) {
+ if (en.getKey().isItem()) {
+ netherTotal += en.getValue();
+ chestItemsNether.put(netherTotal, en.getKey());
+ } else {
+ addon.logWarning(en.getKey() + " is not an item so cannot go in a chest.");
+ }
+ }
+ for (Entry en : addon.getSettings().getChestItemsEnd().entrySet()) {
+ if (en.getKey().isItem()) {
+ endTotal += en.getValue();
+ chestItemsEnd.put(endTotal, en.getKey());
+ } else {
+ addon.logWarning(en.getKey() + " is not an item so cannot go in a chest.");
+ }
+ }
addon.log(LOADED + chestItemsWorld.size() + " chest items for world");
addon.log(LOADED + chestItemsNether.size() + " chest items for nether world");
addon.log(LOADED + chestItemsEnd.size() + " chest items for end world");
}
- @Override
- @Deprecated
- public void populate(World world, Random random, Chunk chunk) {
- this.random = random;
- this.chunk = chunk;
- for (int x = 1; x < 16; x += 4) {
- for (int z = 1; z < 16; z +=4) {
- for (int y = 0; y <= size; y += 4) {
- alterBlocks(chunk.getBlock(x, y, z));
+ private Location getLoc(World world, int x, int y, int z, int chunkX, int chunkZ) {
+ Vector v = new Vector(x, y, z);
+ return v.add(new Vector(chunkX << 4, 0, chunkZ << 4)).toLocation(world);
+ }
+
+ public void populate(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, LimitedRegion region) {
+ random = rand.computeIfAbsent(worldInfo.getUID(), (b) -> new Random(worldInfo.getSeed()));
+ World world = Bukkit.getWorld(worldInfo.getUID());
+ for (int x = 0; x < 16; x += 4) {
+ for (int z = 0; z < 16; z += 4) {
+ for (int y = worldInfo.getMinHeight(); y <= islandHeight; y += 4) {
+ Location loc = getLoc(world, x, y, z, chunkX, chunkZ);
+ alterBlocks(region, loc, worldInfo.getEnvironment());
}
}
}
// Do an end portal check
- if (addon.getSettings().isEndGenerate() && world.getEnvironment().equals(Environment.NORMAL)
+ if (addon.getSettings().isEndGenerate() && worldInfo.getEnvironment().equals(Environment.NORMAL)
&& random.nextDouble() < addon.getSettings().getEndFrameProb()) {
- makeEndPortal();
+ makeEndPortal(region, chunkX, chunkZ);
}
+
}
- private void alterBlocks(Block b) {
+ private void alterBlocks(LimitedRegion region, Location loc, Environment environment) {
// Alter blocks
- switch (b.getType()) {
+ Material m = region.getBlockData(loc).getMaterial();
+
+ switch (m) {
case CHEST:
- setChest(b);
+ setChest(region, loc, environment);
break;
case SPAWNER:
- setSpawner(b);
+ setSpawner(region, loc, environment);
break;
case DIRT:
- if (b.getRelative(BlockFace.UP).getBlockData() instanceof Sapling) {
- if (b.getBiome().equals(Biome.DESERT)) {
- b.setType(Material.SAND, false);
+ if (Tag.SAPLINGS.isTagged(m)) {
+ if (region.getBiome(loc).equals(Biome.DESERT)) {
+ region.setType(loc, Material.SAND);
} else {
- setSaplingType(b.getRelative(BlockFace.UP));
+ setSaplingType(region, loc);
}
}
break;
@@ -101,21 +138,21 @@ private void alterBlocks(Block b) {
}
- private void makeEndPortal() {
+ private void makeEndPortal(LimitedRegion region, int chunkX, int chunkZ) {
for (int xx = 1; xx< 6; xx++) {
for (int zz = 1; zz < 6; zz++) {
if (xx == zz || (xx==1 && zz==5) || (xx==5 && zz==1) || (xx>1 && xx<5 && zz>1 && zz<5)) {
continue;
}
- setFrame(xx, zz, chunk.getBlock(xx, 0, zz));
+ setFrame(region, xx + (chunkX << 4), addon.getSettings().getEndFrameHeight(), zz + (chunkZ << 4));
}
}
}
- private void setFrame(int xx, int zz, Block frame) {
- frame.setType(Material.END_PORTAL_FRAME, false);
+ private void setFrame(LimitedRegion region, int xx, int yy, int zz) {
+ region.setType(xx, yy, zz, Material.END_PORTAL_FRAME);
// Cast to end frame
- EndPortalFrame endFrame = (EndPortalFrame)frame.getBlockData();
+ EndPortalFrame endFrame = (EndPortalFrame) region.getBlockData(xx, yy, zz);
// Add the odd eye of ender
endFrame.setEye(random.nextDouble() < 0.8);
@@ -132,42 +169,31 @@ private void setFrame(int xx, int zz, Block frame) {
// Face West
endFrame.setFacing(BlockFace.WEST);
}
- frame.setBlockData(endFrame, false);
+ region.setBlockData(xx, yy, zz, endFrame);
}
- private void setSaplingType(Block b) {
- // Set sapling type
- switch (b.getBiome()) {
- case JUNGLE:
- b.setType(Material.JUNGLE_SAPLING, false);
- break;
- case PLAINS:
- if (random.nextBoolean()) {
- b.setType(Material.BIRCH_SAPLING, false); // Birch
- }
- // else Oak
- break;
- case TAIGA:
- b.setType(Material.SPRUCE_SAPLING, false);
- break;
- case SWAMP:
- break;
- case DESERT:
- b.setType(Material.DEAD_BUSH, false);
- break;
- case SAVANNA:
- b.setType(Material.ACACIA_SAPLING, false); // Acacia
- break;
- case FOREST:
- default:
- b.setType(SAPLING_TYPE[random.nextInt(6)], false);
- }
-
+ private void setSaplingType(LimitedRegion region, Location loc) {
+ // Set sapling type if there is one specific to this biome
+ Material sapling = switch (region.getBiome(loc)) {
+ case JUNGLE -> Material.JUNGLE_SAPLING;
+ case PLAINS -> random.nextBoolean() ? Material.BIRCH_SAPLING : Material.OAK_SAPLING;
+ case TAIGA -> Material.SPRUCE_SAPLING;
+ case SWAMP -> Material.MANGROVE_PROPAGULE;
+ case DESERT -> Material.DEAD_BUSH;
+ case BADLANDS -> Material.DEAD_BUSH;
+ case CHERRY_GROVE -> Material.CHERRY_SAPLING;
+ case BAMBOO_JUNGLE -> Material.BAMBOO;
+ case SAVANNA -> Material.ACACIA_SAPLING; // Acacia
+ case BIRCH_FOREST -> Material.BIRCH_SAPLING;
+ case MUSHROOM_FIELDS -> random.nextBoolean() ? Material.RED_MUSHROOM : Material.BROWN_MUSHROOM;
+ default -> SAPLING_TYPE[random.nextInt(6)];
+ };
+ region.setType(loc.add(new Vector(0, 1, 0)), sapling);
}
- private void setSpawner(Block b) {
- CreatureSpawner spawner = (CreatureSpawner) b.getState();
- NavigableMap spawns = addon.getWorldStyles().get(b.getWorld().getEnvironment()).getSpawns();
+ private void setSpawner(LimitedRegion region, Location loc, Environment environment) {
+ CreatureSpawner spawner = (CreatureSpawner) region.getBlockState(loc);
+ NavigableMap spawns = addon.getWorldStyles().get(environment).getSpawns();
int randKey = random.nextInt(spawns.lastKey());
EntityType type = spawns.ceilingEntry(randKey).getValue();
spawner.setDelay(120);
@@ -175,30 +201,30 @@ private void setSpawner(Block b) {
spawner.update(true, false);
}
- private void setChest(Block b) {
- Chest chest = (Chest) b.getState();
+ private void setChest(LimitedRegion region, Location loc, Environment environment) {
+ Chest chest = (Chest) region.getBlockState(loc);
Inventory inv = chest.getBlockInventory();
slt.reset();
- switch (b.getWorld().getEnvironment()) {
- case NETHER:
- for (int i = 0; !chestItemsNether.isEmpty() && i < addon.getSettings().getChestFillNether() && i < 27; i ++) {
- ItemStack item = new ItemStack(this.chestItemsNether.get(random.nextInt(chestItemsNether.size())));
- inv.setItem(slt.next(), item);
- }
- break;
- case THE_END:
- for (int i = 0; !chestItemsNether.isEmpty() && i < addon.getSettings().getChestFillEnd() && i < 27; i ++) {
- ItemStack item = new ItemStack(this.chestItemsEnd.get(random.nextInt(chestItemsEnd.size())));
- inv.setItem(slt.next(), item);
+ switch (environment) {
+ case NETHER -> fillChest(inv, chestItemsNether, addon.getSettings().getChestFillNether(), netherTotal);
+ case THE_END -> fillChest(inv, chestItemsEnd, addon.getSettings().getChestFillEnd(), endTotal);
+ default -> fillChest(inv, chestItemsWorld, addon.getSettings().getChestFill(), worldTotal);
+ }
+ }
+
+ private void fillChest(Inventory inv, NavigableMap probMap, int chestFill,
+ int total) {
+ for (int i = 0; !probMap.isEmpty() && i < chestFill && i < 27; i ++) {
+ Material temp = probMap.get(random.nextInt(total));
+ if (temp == null) {
+ temp = probMap.ceilingEntry(random.nextInt(total)).getValue();
}
- break;
- default:
- for (int i = 0; !chestItemsNether.isEmpty() && i < addon.getSettings().getChestFill() && i < 27; i ++) {
- ItemStack item = new ItemStack(this.chestItemsWorld.get(random.nextInt(chestItemsWorld.size())));
- inv.setItem(slt.next(), item);
+ if (temp == null) {
+ temp = probMap.firstEntry().getValue();
}
- break;
+ inv.setItem(slt.next(), new ItemStack(temp));
}
+
}
}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/skygrid/generators/WorldStyles.java b/src/main/java/world/bentobox/skygrid/generators/WorldStyles.java
index 9520b9b..f6d3a80 100644
--- a/src/main/java/world/bentobox/skygrid/generators/WorldStyles.java
+++ b/src/main/java/world/bentobox/skygrid/generators/WorldStyles.java
@@ -11,8 +11,6 @@
import org.bukkit.World.Environment;
import org.bukkit.entity.EntityType;
-import com.google.common.base.Enums;
-
import world.bentobox.skygrid.SkyGrid;
@@ -126,48 +124,63 @@ private BlockProbability endWorldProbabilities() {
private TreeMap normalSpawns() {
TreeMap s = new TreeMap<>();
List types = new ArrayList<>();
- types.add(EntityType.CREEPER);
- types.add(EntityType.SKELETON);
- types.add(EntityType.SPIDER);
- types.add(EntityType.CAVE_SPIDER);
- types.add(EntityType.ZOMBIE);
- types.add(EntityType.SLIME);
- types.add(EntityType.PIG);
- types.add(EntityType.SHEEP);
- types.add(EntityType.COW);
- types.add(EntityType.CHICKEN);
- types.add(EntityType.SQUID);
- types.add(EntityType.WOLF);
- types.add(EntityType.ENDERMAN);
- types.add(EntityType.SILVERFISH);
- types.add(EntityType.VILLAGER);
- types.add(EntityType.RABBIT);
- types.add(EntityType.GUARDIAN);
- types.add(EntityType.HORSE);
- types.add(EntityType.WITCH);
- types.add(EntityType.LLAMA);
- types.add(EntityType.POLAR_BEAR);
- types.add(EntityType.HUSK);
- types.add(EntityType.MULE);
- types.add(EntityType.MUSHROOM_COW);
- types.add(EntityType.OCELOT);
- types.add(EntityType.VINDICATOR);
- types.add(EntityType.ZOMBIE_HORSE);
- types.add(EntityType.ZOMBIE_VILLAGER);
+ //Arrays.stream(EntityType.values()).filter(EntityType::can)
+ types.add(EntityType.ALLAY);
+ types.add(EntityType.ARMADILLO);
+ types.add(EntityType.AXOLOTL);
types.add(EntityType.BEE);
+ types.add(EntityType.BOGGED);
+ types.add(EntityType.CAMEL);
types.add(EntityType.CAT);
+ types.add(EntityType.CAVE_SPIDER);
+ types.add(EntityType.CHICKEN);
types.add(EntityType.COD);
+ types.add(EntityType.COW);
+ types.add(EntityType.CREEPER);
types.add(EntityType.DOLPHIN);
types.add(EntityType.DONKEY);
types.add(EntityType.DROWNED);
types.add(EntityType.ELDER_GUARDIAN);
+ types.add(EntityType.ENDERMAN);
types.add(EntityType.FOX);
+ types.add(EntityType.FROG);
+ types.add(EntityType.GLOW_SQUID);
+ types.add(EntityType.GOAT);
+ types.add(EntityType.GUARDIAN);
+ types.add(EntityType.HORSE);
types.add(EntityType.HUSK);
+ types.add(EntityType.ILLUSIONER);
+ types.add(EntityType.IRON_GOLEM);
+ types.add(EntityType.LLAMA);
+ types.add(EntityType.MOOSHROOM);
+ types.add(EntityType.MULE);
+ types.add(EntityType.OCELOT);
types.add(EntityType.PANDA);
+ types.add(EntityType.PARROT);
+ types.add(EntityType.PIG);
types.add(EntityType.PILLAGER);
+ types.add(EntityType.POLAR_BEAR);
+ types.add(EntityType.PUFFERFISH);
+ types.add(EntityType.RABBIT);
types.add(EntityType.RAVAGER);
+ types.add(EntityType.SALMON);
+ types.add(EntityType.SHEEP);
+ types.add(EntityType.SILVERFISH);
+ types.add(EntityType.SKELETON);
+ types.add(EntityType.SLIME);
+ types.add(EntityType.SNIFFER);
+ types.add(EntityType.SPIDER);
+ types.add(EntityType.SQUID);
+ types.add(EntityType.STRAY);
types.add(EntityType.TURTLE);
types.add(EntityType.VEX);
+ types.add(EntityType.VILLAGER);
+ types.add(EntityType.VINDICATOR);
+ types.add(EntityType.WITCH);
+ types.add(EntityType.WOLF);
+ types.add(EntityType.ZOMBIE);
+ types.add(EntityType.ZOMBIE_HORSE);
+ types.add(EntityType.ZOMBIE_VILLAGER);
int step = 10000 / types.size();
int i = step;
@@ -185,19 +198,19 @@ private TreeMap normalSpawns() {
private TreeMap netherSpawns() {
TreeMap s = new TreeMap<>();
// Keys should increment and cannot be the same!
- s.put(25, EntityType.BLAZE);
- s.put(50, EntityType.MAGMA_CUBE);
- s.put(75, EntityType.SKELETON);
- s.put(100, EntityType.WITHER_SKELETON);
- s.put(150, EntityType.SKELETON_HORSE);
- s.put(175, EntityType.ENDERMAN);
- if (Enums.getIfPresent(EntityType.class, "ZOMBIFIED_PIGLIN").isPresent()) {
- s.put(300, EntityType.ZOMBIFIED_PIGLIN);
- s.put(350, EntityType.STRIDER);
- s.put(475, EntityType.PIGLIN);
- s.put(600, EntityType.ZOGLIN);
- s.put(725, EntityType.HOGLIN);
- }
+ s.put(25, EntityType.BLAZE);
+ s.put(50, EntityType.MAGMA_CUBE);
+ s.put(75, EntityType.SKELETON);
+ s.put(100, EntityType.WITHER_SKELETON);
+ s.put(150, EntityType.SKELETON_HORSE);
+ s.put(175, EntityType.ENDERMAN);
+ s.put(300, EntityType.ZOMBIFIED_PIGLIN);
+ s.put(350, EntityType.STRIDER);
+ s.put(475, EntityType.PIGLIN);
+ s.put(600, EntityType.ZOGLIN);
+ s.put(725, EntityType.HOGLIN);
+ s.put(800, EntityType.GHAST);
+ s.put(850, EntityType.PIGLIN_BRUTE);
return s;
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 329f8e6..0a5096c 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -10,12 +10,12 @@ skygrid:
admin: sgadmin sga
# The default action for new player command call.
# Sub-command of main player command that will be run on first player command call.
- # By default, it is the sub-command 'create'.
+ # By default it is sub-command 'create'.
# Added since 1.16.0.
new-player-action: create
# The default action for player command.
# Sub-command of main player command that will be run on each player command call.
- # By default, it is the sub-command 'go'.
+ # By default it is sub-command 'go'.
# Added since 1.16.0.
default-action: go
world:
@@ -27,634 +27,462 @@ world:
# The End chest fill setting
end: 5
chest-items:
- # Chest items will be taken randomly from this list. All items have an equal chance.
+ # Chest items will be taken randomly from this list according to the relative probabilities given
+ # Format: Material : Probability
+ # Material values can be found at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
overworld:
- - ACTIVATOR_RAIL
- - AMETHYST_SHARD
- - ANVIL
- - APPLE
- - ARMOR_STAND
- - ARROW
- - AXOLOTL_BUCKET
- - AXOLOTL_SPAWN_EGG
- - BAKED_POTATO
- - BAMBOO_SAPLING
- - BARREL
- - BAT_SPAWN_EGG
- - BEACON
- - BEE_SPAWN_EGG
- - BEEF
- - BEETROOT
- - BEETROOT_SEEDS
- - BEETROOT_SOUP
- - BELL
- - BLACK_BANNER
- - BLACK_BED
- - BLACK_DYE
- - BLAST_FURNACE
- - BLAZE_ROD
- - BLUE_BANNER
- - BLUE_BED
- - BLUE_DYE
- - BLUE_ICE
- - BLUE_WOOL
- - BONE
- - BONE_BLOCK
- - BONE_MEAL
- - BOOK
- - BOOKSHELF
- - BOW
- - BOWL
- - BREAD
- - BREWING_STAND
- - BRICK
- - BRICK_WALL
- - BRICKS
- - BROWN_BANNER
- - BROWN_BED
- - BROWN_DYE
- - BROWN_MUSHROOM
- - BROWN_WOOL
- - BUCKET
- - BUNDLE
- - CACTUS
- - CAKE
- - CAMPFIRE
- - CARROT
- - CARROT_ON_A_STICK
- - CARTOGRAPHY_TABLE
- - CARVED_PUMPKIN
- - CAT_SPAWN_EGG
- - CAULDRON
- - CAVE_SPIDER_SPAWN_EGG
- - CHAINMAIL_BOOTS
- - CHAINMAIL_CHESTPLATE
- - CHAINMAIL_HELMET
- - CHAINMAIL_LEGGINGS
- - CHARCOAL
- - CHEST_MINECART
- - CHICKEN
- - CHICKEN_SPAWN_EGG
- - CHISELED_RED_SANDSTONE
- - CHISELED_SANDSTONE
- - CHISELED_STONE_BRICKS
- - CLAY
- - CLAY_BALL
- - CLOCK
- - COAL
- - COAL_BLOCK
- - COAL_ORE
- - COARSE_DIRT
- - COCOA
- - COCOA_BEANS
- - COD
- - COD_BUCKET
- - COD_SPAWN_EGG
- - COMPARATOR
- - COMPASS
- - COMPOSTER
- - CONDUIT
- - COOKED_BEEF
- - COOKED_CHICKEN
- - COOKED_COD
- - COOKED_MUTTON
- - COOKED_PORKCHOP
- - COOKED_RABBIT
- - COOKED_SALMON
- - COOKIE
- - COPPER_INGOT
- - CORNFLOWER
- - COW_SPAWN_EGG
- - CRAFTING_TABLE
- - CREEPER_BANNER_PATTERN
- - CREEPER_SPAWN_EGG
- - CROSSBOW
- - CUT_RED_SANDSTONE
- - CUT_RED_SANDSTONE_SLAB
- - CUT_SANDSTONE
- - CUT_SANDSTONE_SLAB
- - CYAN_BANNER
- - CYAN_BED
- - CYAN_DYE
- - CYAN_WOOL
- - DARK_PRISMARINE
- - DAYLIGHT_DETECTOR
- - DETECTOR_RAIL
- - DIAMOND
- - DIAMOND_AXE
- - DIAMOND_BLOCK
- - DIAMOND_BOOTS
- - DIAMOND_CHESTPLATE
- - DIAMOND_HELMET
- - DIAMOND_HOE
- - DIAMOND_LEGGINGS
- - DIAMOND_ORE
- - DIAMOND_PICKAXE
- - DIAMOND_SHOVEL
- - DIAMOND_SWORD
- - DISPENSER
- - DOLPHIN_SPAWN_EGG
- - DONKEY_SPAWN_EGG
- - DRIED_KELP
- - DRIED_KELP_BLOCK
- - DROPPER
- - DROWNED_SPAWN_EGG
- - EGG
- - ELDER_GUARDIAN_SPAWN_EGG
- - EMERALD
- - EMERALD_BLOCK
- - EMERALD_ORE
- - ENCHANTED_BOOK
- - ENCHANTED_GOLDEN_APPLE
- - ENCHANTING_TABLE
- - ENDER_PEARL
- - EVOKER_SPAWN_EGG
- - EXPERIENCE_BOTTLE
- - FEATHER
- - FERMENTED_SPIDER_EYE
- - FERN
- - FIRE
- - FIRE_CHARGE
- - FIREWORK_ROCKET
- - FIREWORK_STAR
- - FISHING_ROD
- - FLETCHING_TABLE
- - FLINT
- - FLINT_AND_STEEL
- - FLOWER_BANNER_PATTERN
- - FLOWER_POT
- - FOX_SPAWN_EGG
- - FURNACE
- - FURNACE_MINECART
- - GHAST_SPAWN_EGG
- - GHAST_TEAR
- - GLASS_BOTTLE
- - GLISTERING_MELON_SLICE
- - GLOBE_BANNER_PATTERN
- - GLOW_BERRIES
- - GLOW_INK_SAC
- - GLOW_ITEM_FRAME
- - GLOW_SQUID_SPAWN_EGG
- - GLOWSTONE
- - GLOWSTONE_DUST
- - GOAT_SPAWN_EGG
- - GOLD_BLOCK
- - GOLD_INGOT
- - GOLD_NUGGET
- - GOLD_ORE
- - GOLDEN_APPLE
- - GOLDEN_AXE
- - GOLDEN_BOOTS
- - GOLDEN_CARROT
- - GOLDEN_CHESTPLATE
- - GOLDEN_HELMET
- - GOLDEN_HOE
- - GOLDEN_HORSE_ARMOR
- - GOLDEN_LEGGINGS
- - GOLDEN_PICKAXE
- - GOLDEN_SHOVEL
- - GOLDEN_SWORD
- - GRAVEL
- - GRAY_BANNER
- - GRAY_BED
- - GRAY_DYE
- - GREEN_BANNER
- - GREEN_BED
- - GREEN_DYE
- - GRINDSTONE
- - GUARDIAN_SPAWN_EGG
- - GUNPOWDER
- - HAY_BLOCK
- - HEART_OF_THE_SEA
- - HEAVY_WEIGHTED_PRESSURE_PLATE
- - HONEY_BOTTLE
- - HONEYCOMB
- - HOPPER
- - HOPPER_MINECART
- - HORSE_SPAWN_EGG
- - HUSK_SPAWN_EGG
- - ICE
- - INK_SAC
- - IRON_AXE
- - IRON_BARS
- - IRON_BLOCK
- - IRON_BOOTS
- - IRON_CHESTPLATE
- - IRON_DOOR
- - IRON_HELMET
- - IRON_HOE
- - IRON_HORSE_ARMOR
- - IRON_INGOT
- - IRON_LEGGINGS
- - IRON_NUGGET
- - IRON_ORE
- - IRON_PICKAXE
- - IRON_SHOVEL
- - IRON_SWORD
- - IRON_TRAPDOOR
- - ITEM_FRAME
- - JACK_O_LANTERN
- - JUKEBOX
- - KELP
- - KELP_PLANT
- - LADDER
- - LANTERN
- - LAPIS_BLOCK
- - LAPIS_LAZULI
- - LAPIS_ORE
- - LARGE_FERN
- - LAVA_BUCKET
- - LEAD
- - LEATHER
- - LEATHER_BOOTS
- - LEATHER_CHESTPLATE
- - LEATHER_HELMET
- - LEATHER_HORSE_ARMOR
- - LEATHER_LEGGINGS
- - LECTERN
- - LEVER
- - LIGHT_BLUE_BANNER
- - LIGHT_BLUE_BED
- - LIGHT_BLUE_DYE
- - LIGHT_GRAY_BANNER
- - LIGHT_GRAY_BED
- - LIGHT_GRAY_DYE
- - LIGHT_GRAY_WOOL
- - LIGHT_WEIGHTED_PRESSURE_PLATE
- - LILAC
- - LILY_OF_THE_VALLEY
- - LILY_PAD
- - LIME_BANNER
- - LIME_BED
- - LIME_CARPET
- - LIME_DYE
- - LIME_WOOL
- - LLAMA_SPAWN_EGG
- - LOOM
- - MAGENTA_BANNER
- - MAGENTA_BED
- - MAGENTA_DYE
- - MAGENTA_WOOL
- - MAGMA_BLOCK
- - MAGMA_CREAM
- - MAGMA_CUBE_SPAWN_EGG
- - MAP
- - MELON
- - MELON_SEEDS
- - MELON_SLICE
- - MILK_BUCKET
- - MINECART
- - MOJANG_BANNER_PATTERN
- - MOOSHROOM_SPAWN_EGG
- - MULE_SPAWN_EGG
- - MUSHROOM_STEW
- - MUSIC_DISC_11
- - MUSIC_DISC_13
- - MUSIC_DISC_BLOCKS
- - MUSIC_DISC_CAT
- - MUSIC_DISC_CHIRP
- - MUSIC_DISC_FAR
- - MUSIC_DISC_MALL
- - MUSIC_DISC_MELLOHI
- - MUSIC_DISC_STAL
- - MUSIC_DISC_STRAD
- - MUSIC_DISC_WAIT
- - MUSIC_DISC_WARD
- - MUTTON
- - MYCELIUM
- - NAME_TAG
- - NAUTILUS_SHELL
- - NOTE_BLOCK
- - OBSERVER
- - OBSIDIAN
- - OCELOT_SPAWN_EGG
- - ORANGE_BANNER
- - ORANGE_BED
- - ORANGE_DYE
- - ORANGE_TULIP
- - ORANGE_WOOL
- - OXEYE_DAISY
- - PACKED_ICE
- - PAINTING
- - PANDA_SPAWN_EGG
- - PAPER
- - PARROT_SPAWN_EGG
- - PEONY
- - PETRIFIED_OAK_SLAB
- - PHANTOM_MEMBRANE
- - PHANTOM_SPAWN_EGG
- - PIG_SPAWN_EGG
- - PILLAGER_SPAWN_EGG
- - PINK_BANNER
- - PINK_BED
- - PINK_DYE
- - PINK_TULIP
- - PINK_WOOL
- - PISTON
- - PODZOL
- - POISONOUS_POTATO
- - POLAR_BEAR_SPAWN_EGG
- - POPPY
- - PORKCHOP
- - POTATO
- - POTATOES
- - POTTED_ACACIA_SAPLING
- - POTTED_ALLIUM
- - POTTED_AZURE_BLUET
- - POTTED_BAMBOO
- - POTTED_BIRCH_SAPLING
- - POTTED_BLUE_ORCHID
- - POTTED_BROWN_MUSHROOM
- - POTTED_CACTUS
- - POTTED_CORNFLOWER
- - POTTED_DANDELION
- - POTTED_DARK_OAK_SAPLING
- - POTTED_DEAD_BUSH
- - POTTED_FERN
- - POTTED_JUNGLE_SAPLING
- - POTTED_LILY_OF_THE_VALLEY
- - POTTED_OAK_SAPLING
- - POTTED_ORANGE_TULIP
- - POTTED_OXEYE_DAISY
- - POTTED_PINK_TULIP
- - POTTED_POPPY
- - POTTED_RED_MUSHROOM
- - POTTED_RED_TULIP
- - POTTED_SPRUCE_SAPLING
- - POTTED_WHITE_TULIP
- - POTTED_WITHER_ROSE
- - POWDER_SNOW_BUCKET
- - POWERED_RAIL
- - PRISMARINE
- - PRISMARINE_CRYSTALS
- - PRISMARINE_SHARD
- - PUFFERFISH
- - PUFFERFISH_BUCKET
- - PUFFERFISH_SPAWN_EGG
- - PUMPKIN
- - PUMPKIN_PIE
- - PUMPKIN_SEEDS
- - PURPLE_BANNER
- - PURPLE_BED
- - PURPLE_DYE
- - PURPLE_WOOL
- - RABBIT
- - RABBIT_FOOT
- - RABBIT_HIDE
- - RABBIT_SPAWN_EGG
- - RABBIT_STEW
- - RAIL
- - RAVAGER_SPAWN_EGG
- - RAW_COPPER
- - RAW_GOLD
- - RAW_IRON
- - RED_BANNER
- - RED_BED
- - RED_DYE
- - RED_MUSHROOM
- - RED_MUSHROOM_BLOCK
- - RED_SAND
- - RED_SANDSTONE
- - RED_TULIP
- - RED_WOOL
- - REDSTONE
- - REDSTONE_BLOCK
- - REDSTONE_LAMP
- - REDSTONE_ORE
- - REDSTONE_TORCH
- - REPEATER
- - ROSE_BUSH
- - ROTTEN_FLESH
- - SADDLE
- - SALMON
- - SALMON_BUCKET
- - SALMON_SPAWN_EGG
- - SAND
- - SANDSTONE
- - SCAFFOLDING
- - SCUTE
- - SEA_LANTERN
- - SEA_PICKLE
- - SEAGRASS
- - SHEARS
- - SHEEP_SPAWN_EGG
- - SHIELD
- - SILVERFISH_SPAWN_EGG
- - SKELETON_HORSE_SPAWN_EGG
- - SKELETON_SPAWN_EGG
- - SKULL_BANNER_PATTERN
- - SLIME_BALL
- - SLIME_BLOCK
- - SLIME_SPAWN_EGG
- - SMITHING_TABLE
- - SMOKER
- - SNOW_BLOCK
- - SNOWBALL
- - SOUL_SAND
- - SPECTRAL_ARROW
- - SPIDER_EYE
- - SPIDER_SPAWN_EGG
- - SPONGE
- - SPYGLASS
- - SQUID_SPAWN_EGG
- - STICK
- - STICKY_PISTON
- - STONECUTTER
- - STRAY_SPAWN_EGG
- - STRING
- - SUGAR
- - SUGAR_CANE
- - SUNFLOWER
- - SUSPICIOUS_STEW
- - SWEET_BERRIES
- - SWEET_BERRY_BUSH
- - TERRACOTTA
- - TNT
- - TNT_MINECART
- - TORCH
- - TOTEM_OF_UNDYING
- - TRADER_LLAMA_SPAWN_EGG
- - TRAPPED_CHEST
- - TRIDENT
- - TRIPWIRE
- - TRIPWIRE_HOOK
- - TROPICAL_FISH
- - TROPICAL_FISH_BUCKET
- - TROPICAL_FISH_SPAWN_EGG
- - TURTLE_EGG
- - TURTLE_HELMET
- - TURTLE_SPAWN_EGG
- - VEX_SPAWN_EGG
- - VILLAGER_SPAWN_EGG
- - VINDICATOR_SPAWN_EGG
- - VINE
- - WALL_TORCH
- - WANDERING_TRADER_SPAWN_EGG
- - WARPED_FUNGUS_ON_A_STICK
- - WATER_BUCKET
- - WHEAT
- - WHEAT_SEEDS
- - WHITE_BANNER
- - WHITE_BED
- - WHITE_DYE
- - WHITE_TULIP
- - WHITE_WOOL
- - WITCH_SPAWN_EGG
- - WOLF_SPAWN_EGG
- - WRITABLE_BOOK
- - YELLOW_BANNER
- - YELLOW_BED
- - YELLOW_DYE
- - YELLOW_GLAZED_TERRACOTTA
- - YELLOW_WOOL
- - ZOMBIE_SPAWN_EGG
- - ZOMBIE_VILLAGER_SPAWN_EGG
- - BLAZE_SPAWN_EGG
- - CHISELED_QUARTZ_BLOCK
- - DIAMOND_HORSE_ARMOR
- - ELYTRA
- - ENDER_EYE
- - HOGLIN_SPAWN_EGG
- - MUSIC_DISC_PIGSTEP
- - NETHER_BRICK
- - NETHER_BRICK_FENCE
- - NETHER_BRICK_SLAB
- - NETHER_BRICK_STAIRS
- - NETHER_BRICK_WALL
- - NETHER_BRICKS
- - NETHER_PORTAL
- - NETHER_QUARTZ_ORE
- - NETHER_STAR
- - NETHER_WART
- - NETHER_WART_BLOCK
- - NETHERITE_INGOT
- - NETHERITE_SCRAP
- - NETHERRACK
- - PIGLIN_BANNER_PATTERN
- - PIGLIN_BRUTE_SPAWN_EGG
- - PIGLIN_SPAWN_EGG
- - QUARTZ
- - QUARTZ_BLOCK
- - QUARTZ_PILLAR
- - QUARTZ_SLAB
- - QUARTZ_STAIRS
- - RED_NETHER_BRICK_SLAB
- - RED_NETHER_BRICK_STAIRS
- - RED_NETHER_BRICK_WALL
- - RED_NETHER_BRICKS
- - STRIDER_SPAWN_EGG
- - WITHER_ROSE
- - WITHER_SKELETON_SKULL
- - WITHER_SKELETON_SPAWN_EGG
- - ZOGLIN_SPAWN_EGG
- - ZOMBIE_HORSE_SPAWN_EGG
- - ZOMBIFIED_PIGLIN_SPAWN_EGG
- - BLACK_SHULKER_BOX
- - BLUE_SHULKER_BOX
- - BREWING_STAND
- - BROWN_SHULKER_BOX
- - CHORUS_FLOWER
- - CHORUS_FRUIT
- - CHORUS_PLANT
- - CYAN_SHULKER_BOX
- - DRAGON_BREATH
- - END_CRYSTAL
- - END_ROD
- - END_STONE
- - ENDERMAN_SPAWN_EGG
- - ENDERMITE_SPAWN_EGG
- - LIGHT_BLUE_SHULKER_BOX
- - LIGHT_GRAY_SHULKER_BOX
- - LIME_SHULKER_BOX
- - MAGENTA_SHULKER_BOX
- - ORANGE_SHULKER_BOX
- - PINK_SHULKER_BOX
- - POPPED_CHORUS_FRUIT
- - PURPLE_SHULKER_BOX
- - PURPUR_BLOCK
- - PURPUR_PILLAR
- - PURPUR_SLAB
- - PURPUR_STAIRS
- - RED_SHULKER_BOX
- - SHULKER_BOX
- - SHULKER_SHELL
- - SHULKER_SPAWN_EGG
- - WHITE_SHULKER_BOX
- - YELLOW_SHULKER_BOX
+ ACACIA_BOAT: 100
+ ACACIA_CHEST_BOAT: 100
+ ALLAY_SPAWN_EGG: 10
+ AMETHYST_SHARD: 100
+ APPLE: 100
+ ARMOR_STAND: 10
+ ARROW: 100
+ AXOLOTL_BUCKET: 10
+ AXOLOTL_SPAWN_EGG: 10
+ BAKED_POTATO: 10
+ BAMBOO_CHEST_RAFT: 100
+ BAMBOO_RAFT: 100
+ BAT_SPAWN_EGG: 10
+ BEE_SPAWN_EGG: 10
+ BEEF: 10
+ BEETROOT_SEEDS: 10
+ BEETROOT_SOUP: 10
+ BEETROOT: 10
+ BIRCH_BOAT: 100
+ BIRCH_CHEST_BOAT: 100
+ BLACK_DYE: 10
+ BLUE_DYE: 10
+ BONE_MEAL: 10
+ BONE: 10
+ BOOK: 10
+ BOW: 100
+ BOWL: 10
+ BREAD: 10
+ BRICK: 10
+ BROWN_DYE: 10
+ BRUSH: 10
+ BUCKET: 10
+ BUNDLE: 10
+ CAMEL_SPAWN_EGG: 10
+ CARROT_ON_A_STICK: 100
+ CARROT: 10
+ CAT_SPAWN_EGG: 10
+ CAVE_SPIDER_SPAWN_EGG: 10
+ CHAINMAIL_BOOTS: 10
+ CHAINMAIL_CHESTPLATE: 10
+ CHAINMAIL_HELMET: 10
+ CHAINMAIL_LEGGINGS: 10
+ CHARCOAL: 100
+ CHERRY_BOAT: 100
+ CHERRY_CHEST_BOAT: 100
+ CHEST_MINECART: 100
+ CHICKEN_SPAWN_EGG: 10
+ CHICKEN: 10
+ CHORUS_FRUIT: 10
+ CLAY_BALL: 10
+ CLOCK: 10
+ COAL: 100
+ COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ COCOA_BEANS: 10
+ COD_BUCKET: 10
+ COD_SPAWN_EGG: 10
+ COD: 10
+ COMPASS: 10
+ COOKED_BEEF: 10
+ COOKED_CHICKEN: 10
+ COOKED_COD: 10
+ COOKED_MUTTON: 10
+ COOKED_PORKCHOP: 10
+ COOKED_RABBIT: 10
+ COOKED_SALMON: 10
+ COOKIE: 10
+ COPPER_INGOT: 100
+ COW_SPAWN_EGG: 10
+ CREEPER_BANNER_PATTERN: 10
+ CREEPER_SPAWN_EGG: 10
+ CROSSBOW: 10
+ CYAN_DYE: 10
+ DARK_OAK_BOAT: 100
+ DARK_OAK_CHEST_BOAT: 100
+ DIAMOND_AXE: 10
+ DIAMOND_BOOTS: 10
+ DIAMOND_CHESTPLATE: 10
+ DIAMOND_HELMET: 10
+ DIAMOND_HOE: 10
+ DIAMOND_LEGGINGS: 10
+ DIAMOND_PICKAXE: 10
+ DIAMOND_SHOVEL: 100
+ DIAMOND_SWORD: 100
+ DIAMOND: 100
+ DISC_FRAGMENT_5: 10
+ DOLPHIN_SPAWN_EGG: 10
+ DONKEY_SPAWN_EGG: 10
+ DRAGON_BREATH: 10
+ DRIED_KELP: 10
+ DROWNED_SPAWN_EGG: 10
+ DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ ECHO_SHARD: 10
+ EGG: 10
+ ELDER_GUARDIAN_SPAWN_EGG: 10
+ ELYTRA: 100
+ EMERALD: 100
+ ENCHANTED_BOOK: 10
+ ENCHANTED_GOLDEN_APPLE: 10
+ END_CRYSTAL: 10
+ ENDER_EYE: 10
+ ENDER_PEARL: 10
+ ENDERMAN_SPAWN_EGG: 10
+ ENDERMITE_SPAWN_EGG: 10
+ EVOKER_SPAWN_EGG: 10
+ EXPERIENCE_BOTTLE: 10
+ EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ FEATHER: 10
+ FERMENTED_SPIDER_EYE: 10
+ FIRE_CHARGE: 10
+ FIREWORK_ROCKET: 10
+ FIREWORK_STAR: 10
+ FISHING_ROD: 10
+ FLINT_AND_STEEL: 100
+ FLINT: 10
+ FLOWER_BANNER_PATTERN: 10
+ FOX_SPAWN_EGG: 10
+ FROG_SPAWN_EGG: 10
+ FURNACE_MINECART: 100
+ GLASS_BOTTLE: 10
+ GLISTERING_MELON_SLICE: 10
+ GLOBE_BANNER_PATTERN: 10
+ GLOW_BERRIES: 10
+ GLOW_INK_SAC: 10
+ GLOW_ITEM_FRAME: 10
+ GLOW_SQUID_SPAWN_EGG: 10
+ GOAT_HORN: 10
+ GOAT_SPAWN_EGG: 10
+ GOLD_INGOT: 100
+ GOLD_NUGGET: 10
+ GOLDEN_APPLE: 10
+ GOLDEN_AXE: 100
+ GOLDEN_BOOTS: 10
+ GOLDEN_CARROT: 10
+ GOLDEN_CHESTPLATE: 10
+ GOLDEN_HELMET: 10
+ GOLDEN_HOE: 100
+ GOLDEN_LEGGINGS: 10
+ GOLDEN_PICKAXE: 100
+ GOLDEN_SHOVEL: 100
+ GOLDEN_SWORD: 100
+ GRAY_DYE: 10
+ GREEN_DYE: 10
+ GUARDIAN_SPAWN_EGG: 10
+ GUNPOWDER: 10
+ HEART_OF_THE_SEA: 10
+ HONEY_BOTTLE: 10
+ HONEYCOMB: 10
+ HOPPER_MINECART: 100
+ HORSE_SPAWN_EGG: 10
+ HUSK_SPAWN_EGG: 10
+ INK_SAC: 10
+ IRON_AXE: 100
+ IRON_BOOTS: 10
+ IRON_CHESTPLATE: 10
+ IRON_GOLEM_SPAWN_EGG: 10
+ IRON_HELMET: 10
+ IRON_HOE: 100
+ IRON_INGOT: 100
+ IRON_LEGGINGS: 10
+ IRON_NUGGET: 10
+ IRON_PICKAXE: 100
+ IRON_SHOVEL: 100
+ IRON_SWORD: 100
+ ITEM_FRAME: 10
+ JUNGLE_BOAT: 100
+ JUNGLE_CHEST_BOAT: 100
+ KNOWLEDGE_BOOK: 10
+ LAPIS_LAZULI: 100
+ LAVA_BUCKET: 10
+ LEAD: 10
+ LEATHER_BOOTS: 10
+ LEATHER_CHESTPLATE: 10
+ LEATHER_HELMET: 10
+ LEATHER_LEGGINGS: 10
+ LEATHER: 10
+ LIGHT_BLUE_DYE: 10
+ LIGHT_GRAY_DYE: 10
+ LIME_DYE: 10
+ LINGERING_POTION: 10
+ LLAMA_SPAWN_EGG: 10
+ MAGENTA_DYE: 10
+ MANGROVE_BOAT: 100
+ MANGROVE_CHEST_BOAT: 100
+ MAP: 10
+ MELON_SEEDS: 10
+ MELON_SLICE: 10
+ MILK_BUCKET: 10
+ MINECART: 100
+ MOJANG_BANNER_PATTERN: 10
+ MOOSHROOM_SPAWN_EGG: 10
+ MULE_SPAWN_EGG: 10
+ MUSHROOM_STEW: 10
+ MUSIC_DISC_11: 10
+ MUSIC_DISC_13: 10
+ MUSIC_DISC_5: 10
+ MUSIC_DISC_BLOCKS: 10
+ MUSIC_DISC_CAT: 10
+ MUSIC_DISC_CHIRP: 10
+ MUSIC_DISC_FAR: 10
+ MUSIC_DISC_MALL: 10
+ MUSIC_DISC_MELLOHI: 10
+ MUSIC_DISC_OTHERSIDE: 10
+ MUSIC_DISC_PIGSTEP: 10
+ MUSIC_DISC_STAL: 10
+ MUSIC_DISC_STRAD: 10
+ MUSIC_DISC_WAIT: 10
+ MUSIC_DISC_WARD: 10
+ MUTTON: 10
+ NAME_TAG: 10
+ NAUTILUS_SHELL: 10
+ NETHER_BRICK: 10
+ NETHER_STAR: 10
+ NETHERITE_BOOTS: 1
+ NETHERITE_CHESTPLATE: 1
+ NETHERITE_HELMET: 1
+ NETHERITE_LEGGINGS: 1
+ NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10
+ OAK_BOAT: 100
+ OAK_CHEST_BOAT: 100
+ OCELOT_SPAWN_EGG: 10
+ ORANGE_DYE: 10
+ PAINTING: 10
+ PANDA_SPAWN_EGG: 10
+ PAPER: 10
+ PARROT_SPAWN_EGG: 10
+ PHANTOM_MEMBRANE: 10
+ PHANTOM_SPAWN_EGG: 10
+ PIG_SPAWN_EGG: 10
+ PILLAGER_SPAWN_EGG: 10
+ PINK_DYE: 10
+ POISONOUS_POTATO: 10
+ POLAR_BEAR_SPAWN_EGG: 10
+ POPPED_CHORUS_FRUIT: 10
+ PORKCHOP: 10
+ POTATO: 10
+ POWDER_SNOW_BUCKET: 10
+ PRISMARINE_CRYSTALS: 10
+ PRISMARINE_SHARD: 10
+ PUFFERFISH_BUCKET: 10
+ PUFFERFISH_SPAWN_EGG: 10
+ PUFFERFISH: 10
+ PUMPKIN_PIE: 10
+ PUMPKIN_SEEDS: 10
+ PURPLE_DYE: 10
+ QUARTZ: 100
+ RABBIT_FOOT: 10
+ RABBIT_HIDE: 10
+ RABBIT_SPAWN_EGG: 10
+ RABBIT_STEW: 10
+ RABBIT: 10
+ RAVAGER_SPAWN_EGG: 10
+ RAW_COPPER: 100
+ RAW_GOLD: 100
+ RAW_IRON: 100
+ RECOVERY_COMPASS: 10
+ RED_DYE: 10
+ REDSTONE: 100
+ RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ ROTTEN_FLESH: 10
+ SADDLE: 100
+ SALMON_BUCKET: 10
+ SALMON_SPAWN_EGG: 10
+ SALMON: 10
+ TURTLE_SCUTE: 100
+ ARMADILLO_SCUTE: 100
+ WOLF_ARMOR: 100
+ SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ SHEARS: 10
+ SHEEP_SPAWN_EGG: 10
+ SHIELD: 10
+ SILVERFISH_SPAWN_EGG: 10
+ SKELETON_SPAWN_EGG: 10
+ SKULL_BANNER_PATTERN: 10
+ SLIME_BALL: 10
+ SLIME_SPAWN_EGG: 10
+ SNIFFER_SPAWN_EGG: 10
+ SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ SNOW_GOLEM_SPAWN_EGG: 10
+ SNOWBALL: 10
+ SPECTRAL_ARROW: 10
+ SPIDER_EYE: 10
+ SPIDER_SPAWN_EGG: 10
+ SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ SPLASH_POTION: 10
+ SPRUCE_BOAT: 100
+ SPRUCE_CHEST_BOAT: 100
+ SPYGLASS: 10
+ SQUID_SPAWN_EGG: 10
+ STICK: 10
+ STONE_AXE: 100
+ STONE_HOE: 100
+ STONE_PICKAXE: 100
+ STONE_SHOVEL: 100
+ STONE_SWORD: 100
+ STRAY_SPAWN_EGG: 10
+ STRING: 10
+ SUGAR: 10
+ SUSPICIOUS_STEW: 10
+ SWEET_BERRIES: 10
+ TADPOLE_BUCKET: 10
+ TADPOLE_SPAWN_EGG: 10
+ TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ TIPPED_ARROW: 10
+ TNT_MINECART: 100
+ TORCHFLOWER_SEEDS: 10
+ TOTEM_OF_UNDYING: 1
+ TRADER_LLAMA_SPAWN_EGG: 10
+ TRIDENT: 10
+ TROPICAL_FISH_BUCKET: 10
+ TROPICAL_FISH_SPAWN_EGG: 10
+ TROPICAL_FISH: 10
+ TURTLE_HELMET: 100
+ TURTLE_SPAWN_EGG: 10
+ VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ VEX_SPAWN_EGG: 10
+ VILLAGER_SPAWN_EGG: 10
+ VINDICATOR_SPAWN_EGG: 10
+ WANDERING_TRADER_SPAWN_EGG: 10
+ WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ WARDEN_SPAWN_EGG: 1
+ WARPED_FUNGUS_ON_A_STICK: 100
+ WATER_BUCKET: 10
+ WHEAT_SEEDS: 10
+ WHITE_DYE: 10
+ WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ WITCH_SPAWN_EGG: 10
+ WITHER_SPAWN_EGG: 1
+ WOLF_SPAWN_EGG: 10
+ WOODEN_AXE: 100
+ WOODEN_HOE: 100
+ WOODEN_PICKAXE: 100
+ WOODEN_SHOVEL: 100
+ WOODEN_SWORD: 100
+ WRITABLE_BOOK: 10
+ YELLOW_DYE: 10
+ ZOMBIE_HORSE_SPAWN_EGG: 10
+ ZOMBIE_SPAWN_EGG: 10
+ ZOMBIE_VILLAGER_SPAWN_EGG: 10
+ ZOMBIFIED_PIGLIN_SPAWN_EGG: 10
nether:
- - BLAZE_SPAWN_EGG
- - CHISELED_QUARTZ_BLOCK
- - DIAMOND_HORSE_ARMOR
- - ELYTRA
- - ENDER_EYE
- - HOGLIN_SPAWN_EGG
- - MUSIC_DISC_PIGSTEP
- - NETHER_BRICK
- - NETHER_BRICK_FENCE
- - NETHER_BRICK_SLAB
- - NETHER_BRICK_STAIRS
- - NETHER_BRICK_WALL
- - NETHER_BRICKS
- - NETHER_PORTAL
- - NETHER_QUARTZ_ORE
- - NETHER_STAR
- - NETHER_WART
- - NETHER_WART_BLOCK
- - NETHERITE_INGOT
- - NETHERITE_SCRAP
- - NETHERRACK
- - PIGLIN_BANNER_PATTERN
- - PIGLIN_BRUTE_SPAWN_EGG
- - PIGLIN_SPAWN_EGG
- - QUARTZ
- - QUARTZ_BLOCK
- - QUARTZ_PILLAR
- - QUARTZ_SLAB
- - QUARTZ_STAIRS
- - RED_NETHER_BRICK_SLAB
- - RED_NETHER_BRICK_STAIRS
- - RED_NETHER_BRICK_WALL
- - RED_NETHER_BRICKS
- - STRIDER_SPAWN_EGG
- - WITHER_ROSE
- - WITHER_SKELETON_SKULL
- - WITHER_SKELETON_SPAWN_EGG
- - ZOGLIN_SPAWN_EGG
- - ZOMBIE_HORSE_SPAWN_EGG
- - ZOMBIFIED_PIGLIN_SPAWN_EGG
+ APPLE: 10
+ ARROW: 10
+ BLAZE_POWDER: 10
+ BLAZE_ROD: 10
+ BLAZE_SPAWN_EGG: 10
+ BONE: 10
+ BOW: 10
+ CARROT_ON_A_STICK: 10
+ CHEST_MINECART: 10
+ COOKED_PORKCHOP: 10
+ DIAMOND_HORSE_ARMOR: 10
+ DIAMOND: 10
+ ELYTRA: 10
+ EMERALD: 10
+ ENDER_EYE: 10
+ ENDER_PEARL: 10
+ ENDERMAN_SPAWN_EGG: 10
+ EXPERIENCE_BOTTLE: 10
+ FIRE_CHARGE: 10
+ FISHING_ROD: 10
+ FLINT_AND_STEEL: 10
+ FLINT: 10
+ FURNACE_MINECART: 10
+ GHAST_TEAR: 10
+ GLOWSTONE_DUST: 10
+ GOLD_INGOT: 10
+ GOLD_NUGGET: 10
+ GOLDEN_AXE: 10
+ GOLDEN_BOOTS: 10
+ GOLDEN_CHESTPLATE: 10
+ GOLDEN_HELMET: 10
+ GOLDEN_HOE: 10
+ GOLDEN_HORSE_ARMOR: 10
+ GOLDEN_LEGGINGS: 10
+ GOLDEN_PICKAXE: 10
+ GOLDEN_SHOVEL: 10
+ GOLDEN_SWORD: 10
+ HOGLIN_SPAWN_EGG: 10
+ HOPPER_MINECART: 10
+ IRON_HORSE_ARMOR: 10
+ LAVA_BUCKET: 10
+ LEATHER_HORSE_ARMOR: 10
+ MAGMA_CREAM: 10
+ MAGMA_CUBE_SPAWN_EGG: 10
+ MINECART: 10
+ NETHER_BRICK: 10
+ NETHER_STAR: 1
+ NETHERITE_AXE: 1
+ NETHERITE_BOOTS: 1
+ NETHERITE_CHESTPLATE: 1
+ NETHERITE_HELMET: 1
+ NETHERITE_HOE: 1
+ NETHERITE_INGOT: 10
+ NETHERITE_LEGGINGS: 1
+ NETHERITE_PICKAXE: 1
+ NETHERITE_SCRAP: 10
+ NETHERITE_SHOVEL: 1
+ NETHERITE_SWORD: 1
+ PIGLIN_BRUTE_SPAWN_EGG: 10
+ PIGLIN_SPAWN_EGG: 10
+ PORKCHOP: 10
+ QUARTZ: 10
+ RAW_GOLD: 10
+ SNOWBALL: 10
+ SPECTRAL_ARROW: 10
+ TIPPED_ARROW: 10
+ TNT_MINECART: 10
+ TOTEM_OF_UNDYING: 10
+ WARPED_FUNGUS_ON_A_STICK: 10
+ ZOGLIN_SPAWN_EGG: 10
end:
- - BLACK_SHULKER_BOX
- - BLUE_SHULKER_BOX
- - BREWING_STAND
- - BROWN_SHULKER_BOX
- - CHORUS_FLOWER
- - CHORUS_FRUIT
- - CHORUS_PLANT
- - CYAN_SHULKER_BOX
- - DRAGON_BREATH
- - END_CRYSTAL
- - END_ROD
- - END_STONE
- - ENDERMAN_SPAWN_EGG
- - ENDERMITE_SPAWN_EGG
- - LIGHT_BLUE_SHULKER_BOX
- - LIGHT_GRAY_SHULKER_BOX
- - LIME_SHULKER_BOX
- - MAGENTA_SHULKER_BOX
- - ORANGE_SHULKER_BOX
- - PINK_SHULKER_BOX
- - POPPED_CHORUS_FRUIT
- - PURPLE_SHULKER_BOX
- - PURPUR_BLOCK
- - PURPUR_PILLAR
- - PURPUR_SLAB
- - PURPUR_STAIRS
- - RED_SHULKER_BOX
- - SHULKER_BOX
- - SHULKER_SHELL
- - SHULKER_SPAWN_EGG
- - WHITE_SHULKER_BOX
- - YELLOW_SHULKER_BOX
+ APPLE: 10
+ ARROW: 10
+ BOW: 10
+ BREAD: 10
+ CHARCOAL: 10
+ CHORUS_FRUIT: 10
+ COAL: 10
+ COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ CROSSBOW: 10
+ DIAMOND_AXE: 10
+ DIAMOND_HOE: 10
+ DIAMOND_PICKAXE: 10
+ DIAMOND_SHOVEL: 10
+ DIAMOND_SWORD: 10
+ DIAMOND: 10
+ DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ ELYTRA: 10
+ EMERALD: 10
+ END_CRYSTAL: 10
+ ENDERMAN_SPAWN_EGG: 10
+ EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ FIREWORK_ROCKET: 10
+ FIREWORK_STAR: 10
+ FLINT_AND_STEEL: 10
+ LIGHT_BLUE_DYE: 10
+ MAGENTA_DYE: 10
+ NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10
+ POPPED_CHORUS_FRUIT: 10
+ PURPLE_DYE: 10
+ QUARTZ: 10
+ RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ SHULKER_SHELL: 10
+ SHULKER_SPAWN_EGG: 10
+ SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ TOTEM_OF_UNDYING: 10
+ VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10
+ WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10
# World block types. If the material cannot be placed, bedrock will be used.
# Format: Material : Probability
# Block types must be Bukkit Material types.
@@ -663,349 +491,337 @@ world:
blocks:
ACACIA_LEAVES: 8
ACACIA_LOG: 20
- ACACIA_PLANKS: 1
- ACACIA_SAPLING: 17
- ACACIA_WOOD: 16
- ALLIUM: 12
- AMETHYST_BLOCK: 1
- AMETHYST_CLUSTER: 1
+ ACACIA_PLANKS: 10
+ ACACIA_SAPLING: 107
+ ACACIA_WOOD: 106
+ ALLIUM: 102
+ AMETHYST_BLOCK: 10
+ AMETHYST_CLUSTER: 10
ANDESITE: 90
- AZALEA_LEAVES: 1
- AZALEA: 1
- AZURE_BLUET: 1
- BARREL: 1
- BEE_NEST: 1
+ AZALEA_LEAVES: 10
+ AZALEA: 10
+ AZURE_BLUET: 10
+ BARREL: 10
+ BEE_NEST: 10
BEETROOTS: 9
BIRCH_LEAVES: 9
BIRCH_LOG: 2
- BIRCH_PLANKS: 1
+ BIRCH_PLANKS: 10
BIRCH_SAPLING: 8
- BIRCH_WOOD: 16
- BLACK_CONCRETE: 1
- BLACK_GLAZED_TERRACOTTA: 1
- BLACK_STAINED_GLASS: 1
- BLACK_TERRACOTTA: 1
- BLACK_WOOL: 1
- BLUE_CONCRETE: 1
- BLUE_GLAZED_TERRACOTTA: 1
- BLUE_ICE: 1
- BLUE_ORCHID: 1
- BLUE_STAINED_GLASS: 1
- BLUE_TERRACOTTA: 1
- BLUE_WOOL: 1
- BONE_BLOCK: 1
- BOOKSHELF: 10
- BRAIN_CORAL_BLOCK: 1
- BRICKS: 1
- BROWN_CONCRETE: 1
- BROWN_GLAZED_TERRACOTTA: 1
- BROWN_MUSHROOM_BLOCK: 1
+ BIRCH_WOOD: 106
+ BLACK_CONCRETE: 10
+ BLACK_GLAZED_TERRACOTTA: 10
+ BLACK_STAINED_GLASS: 10
+ BLACK_TERRACOTTA: 10
+ BLACK_WOOL: 10
+ BLUE_CONCRETE: 10
+ BLUE_GLAZED_TERRACOTTA: 10
+ BLUE_ICE: 10
+ BLUE_ORCHID: 10
+ BLUE_STAINED_GLASS: 10
+ BLUE_TERRACOTTA: 10
+ BLUE_WOOL: 10
+ BONE_BLOCK: 10
+ BOOKSHELF: 100
+ BRAIN_CORAL_BLOCK: 10
+ BRICKS: 10
+ BROWN_CONCRETE: 10
+ BROWN_GLAZED_TERRACOTTA: 10
+ BROWN_MUSHROOM_BLOCK: 10
BROWN_MUSHROOM: 8
- BROWN_STAINED_GLASS: 1
- BROWN_TERRACOTTA: 1
- BROWN_WOOL: 1
- BUBBLE_CORAL_BLOCK: 1
+ BROWN_STAINED_GLASS: 10
+ BROWN_TERRACOTTA: 10
+ BROWN_WOOL: 10
+ BUBBLE_CORAL_BLOCK: 10
CACTUS: 6
- CALCITE: 1
- CHEST: 5
- CHISELED_DEEPSLATE: 1
- CHISELED_QUARTZ_BLOCK: 1
- CHISELED_RED_SANDSTONE: 1
- CHISELED_SANDSTONE: 1
- CHISELED_STONE_BRICKS: 1
+ CALCITE: 10
+ CHEST: 105
+ CHISELED_DEEPSLATE: 10
+ CHISELED_QUARTZ_BLOCK: 10
+ CHISELED_RED_SANDSTONE: 10
+ CHISELED_SANDSTONE: 10
+ CHISELED_STONE_BRICKS: 10
CLAY: 5
- COAL_BLOCK: 1
+ COAL_BLOCK: 10
COAL_ORE: 70
- COARSE_DIRT: 17
- COBBLED_DEEPSLATE: 1
- COBBLESTONE: 1
+ COARSE_DIRT: 107
+ COBBLESTONE: 50
COBWEB: 7
- COMPOSTER: 1
- COPPER_BLOCK: 1
- COPPER_ORE: 1
- CRACKED_DEEPSLATE_BRICKS: 1
- CRACKED_STONE_BRICKS: 1
- CUT_COPPER: 1
- CUT_RED_SANDSTONE: 1
- CUT_SANDSTONE: 1
- CYAN_CONCRETE: 1
- CYAN_GLAZED_TERRACOTTA: 1
- CYAN_STAINED_GLASS: 1
- CYAN_TERRACOTTA: 1
- CYAN_WOOL: 1
- DANDELION: 16
+ COMPOSTER: 10
+ COPPER_BLOCK: 5
+ COPPER_ORE: 10
+ CRACKED_DEEPSLATE_BRICKS: 10
+ CRACKED_STONE_BRICKS: 10
+ CUT_COPPER: 10
+ CUT_RED_SANDSTONE: 10
+ CUT_SANDSTONE: 10
+ CYAN_CONCRETE: 10
+ CYAN_GLAZED_TERRACOTTA: 10
+ CYAN_STAINED_GLASS: 10
+ CYAN_TERRACOTTA: 10
+ CYAN_WOOL: 10
+ DANDELION: 106
DARK_OAK_LEAVES: 9
- DARK_OAK_LOG: 10
- DARK_OAK_PLANKS: 1
+ DARK_OAK_LOG: 100
+ DARK_OAK_PLANKS: 10
DARK_OAK_SAPLING: 3
- DARK_OAK_WOOD: 18
+ DARK_OAK_WOOD: 108
DARK_PRISMARINE: 3
- DEAD_BRAIN_CORAL_BLOCK: 1
- DEAD_BUBBLE_CORAL_BLOCK: 1
- DEAD_BUSH: 1
- DEAD_FIRE_CORAL_BLOCK: 1
- DEAD_HORN_CORAL_BLOCK: 1
- DEAD_TUBE_CORAL_BLOCK: 1
- DEEPSLATE_COAL_ORE: 1
- DEEPSLATE_COPPER_ORE: 1
- DEEPSLATE_DIAMOND_ORE: 1
- DEEPSLATE_EMERALD_ORE: 1
- DEEPSLATE_GOLD_ORE: 1
- DEEPSLATE_IRON_ORE: 1
- DEEPSLATE_LAPIS_ORE: 1
- DEEPSLATE_REDSTONE_ORE: 1
- DEEPSLATE: 1
- DIAMOND_ORE: 1
+ DEAD_BRAIN_CORAL_BLOCK: 10
+ DEAD_BUBBLE_CORAL_BLOCK: 10
+ DEAD_BUSH: 10
+ DEAD_FIRE_CORAL_BLOCK: 10
+ DEAD_HORN_CORAL_BLOCK: 10
+ DEAD_TUBE_CORAL_BLOCK: 10
+ DIAMOND_ORE: 10
DIORITE: 2
DIRT_PATH: 7
- DIRT: 1
- DRIPSTONE_BLOCK: 1
+ DIRT: 10
+ DRIPSTONE_BLOCK: 10
EMERALD_ORE: 5
- END_STONE_BRICKS: 1
- EXPOSED_COPPER: 1
- EXPOSED_CUT_COPPER: 1
+ END_STONE_BRICKS: 10
+ EXPOSED_COPPER: 10
+ EXPOSED_CUT_COPPER: 10
FARMLAND: 7
FERN: 4
- FIRE_CORAL_BLOCK: 1
- FROSTED_ICE: 1
- GLASS: 1
+ FIRE_CORAL_BLOCK: 10
+ FROSTED_ICE: 10
+ GLASS: 10
GOLD_ORE: 3
GRANITE: 50
GRASS_BLOCK: 200
- GRASS: 100
GRAVEL: 20
- GRAY_CONCRETE: 1
- GRAY_GLAZED_TERRACOTTA: 1
- GRAY_STAINED_GLASS: 1
- GRAY_TERRACOTTA: 1
- GRAY_WOOL: 1
- GREEN_CONCRETE: 1
- GREEN_GLAZED_TERRACOTTA: 1
- GREEN_STAINED_GLASS: 1
- GREEN_TERRACOTTA: 1
- GREEN_WOOL: 1
- HAY_BLOCK: 1
- HONEY_BLOCK: 1
- HONEYCOMB_BLOCK: 1
- HORN_CORAL_BLOCK: 1
- INFESTED_COBBLESTONE: 1
- IRON_ORE: 10
- JUNGLE_LEAVES: 10
- JUNGLE_LOG: 17
- JUNGLE_PLANKS: 1
- JUNGLE_SAPLING: 19
+ GRAY_CONCRETE: 10
+ GRAY_GLAZED_TERRACOTTA: 10
+ GRAY_STAINED_GLASS: 10
+ GRAY_TERRACOTTA: 10
+ GRAY_WOOL: 10
+ GREEN_CONCRETE: 10
+ GREEN_GLAZED_TERRACOTTA: 10
+ GREEN_STAINED_GLASS: 10
+ GREEN_TERRACOTTA: 10
+ GREEN_WOOL: 10
+ HAY_BLOCK: 10
+ HONEY_BLOCK: 10
+ HONEYCOMB_BLOCK: 10
+ HORN_CORAL_BLOCK: 10
+ INFESTED_COBBLESTONE: 10
+ IRON_ORE: 100
+ JUNGLE_LEAVES: 100
+ JUNGLE_LOG: 107
+ JUNGLE_PLANKS: 10
+ JUNGLE_SAPLING: 109
JUNGLE_WOOD: 20
LAPIS_ORE: 6
- LARGE_AMETHYST_BUD: 1
+ LARGE_AMETHYST_BUD: 10
LARGE_FERN: 8
- LAVA_CAULDRON: 1
+ LAVA_CAULDRON: 10
LAVA: 5
- LIGHT_BLUE_CONCRETE: 1
- LIGHT_BLUE_GLAZED_TERRACOTTA: 1
- LIGHT_BLUE_STAINED_GLASS: 1
- LIGHT_BLUE_TERRACOTTA: 1
- LIGHT_BLUE_WOOL: 1
- LIGHT_GRAY_CONCRETE: 1
- LIGHT_GRAY_GLAZED_TERRACOTTA: 1
- LIGHT_GRAY_STAINED_GLASS: 1
- LIGHT_GRAY_TERRACOTTA: 1
- LIGHT_GRAY_WOOL: 1
+ LIGHT_BLUE_CONCRETE: 10
+ LIGHT_BLUE_GLAZED_TERRACOTTA: 10
+ LIGHT_BLUE_STAINED_GLASS: 10
+ LIGHT_BLUE_TERRACOTTA: 10
+ LIGHT_BLUE_WOOL: 10
+ LIGHT_GRAY_CONCRETE: 10
+ LIGHT_GRAY_GLAZED_TERRACOTTA: 10
+ LIGHT_GRAY_STAINED_GLASS: 10
+ LIGHT_GRAY_TERRACOTTA: 10
+ LIGHT_GRAY_WOOL: 10
LILAC: 7
- LIME_CONCRETE: 1
- LIME_GLAZED_TERRACOTTA: 1
- LIME_STAINED_GLASS: 1
- LIME_TERRACOTTA: 1
- LIME_WOOL: 1
- LODESTONE: 1
- MAGENTA_CONCRETE: 1
- MAGENTA_GLAZED_TERRACOTTA: 1
- MAGENTA_STAINED_GLASS: 1
- MAGENTA_TERRACOTTA: 1
- MEDIUM_AMETHYST_BUD: 1
- MELON: 15
- MOSS_BLOCK: 1
- MOSSY_COBBLESTONE: 1
- MOSSY_STONE_BRICKS: 1
- MUSHROOM_STEM: 1
+ LIME_CONCRETE: 10
+ LIME_GLAZED_TERRACOTTA: 10
+ LIME_STAINED_GLASS: 10
+ LIME_TERRACOTTA: 10
+ LIME_WOOL: 10
+ LODESTONE: 10
+ MAGENTA_CONCRETE: 10
+ MAGENTA_GLAZED_TERRACOTTA: 10
+ MAGENTA_STAINED_GLASS: 10
+ MAGENTA_TERRACOTTA: 10
+ MEDIUM_AMETHYST_BUD: 10
+ MELON: 105
+ MOSS_BLOCK: 10
+ MOSSY_COBBLESTONE: 10
+ MOSSY_STONE_BRICKS: 10
+ MUSHROOM_STEM: 10
MYCELIUM: 2
OAK_LEAVES: 4
- OAK_LOG: 10
- OAK_PLANKS: 1
- OAK_SAPLING: 11
- OAK_WOOD: 19
- OBSIDIAN: 1
- ORANGE_CONCRETE: 1
- ORANGE_GLAZED_TERRACOTTA: 1
- ORANGE_STAINED_GLASS: 1
- ORANGE_TERRACOTTA: 1
- ORANGE_TULIP: 10
- ORANGE_WOOL: 1
+ OAK_LOG: 100
+ OAK_PLANKS: 10
+ OAK_SAPLING: 101
+ OAK_WOOD: 109
+ OBSIDIAN: 10
+ ORANGE_CONCRETE: 10
+ ORANGE_GLAZED_TERRACOTTA: 10
+ ORANGE_STAINED_GLASS: 10
+ ORANGE_TERRACOTTA: 10
+ ORANGE_TULIP: 100
+ ORANGE_WOOL: 10
OXEYE_DAISY: 6
- OXIDIZED_COPPER: 1
- OXIDIZED_CUT_COPPER: 1
- PACKED_ICE: 1
+ OXIDIZED_COPPER: 10
+ OXIDIZED_CUT_COPPER: 10
+ PACKED_ICE: 10
PEONY: 7
- PETRIFIED_OAK_SLAB: 1
- PINK_CONCRETE: 1
- PINK_GLAZED_TERRACOTTA: 1
- PINK_STAINED_GLASS: 1
- PINK_TERRACOTTA: 1
+ PETRIFIED_OAK_SLAB: 10
+ PINK_CONCRETE: 10
+ PINK_GLAZED_TERRACOTTA: 10
+ PINK_STAINED_GLASS: 10
+ PINK_TERRACOTTA: 10
PINK_TULIP: 8
- PINK_WOOL: 1
+ PINK_WOOL: 10
PODZOL: 4
- POINTED_DRIPSTONE: 1
- POLISHED_ANDESITE: 1
- POLISHED_BASALT: 1
- POLISHED_BLACKSTONE: 1
- POLISHED_DEEPSLATE: 1
- POLISHED_DIORITE: 1
- POLISHED_GRANITE: 1
+ POINTED_DRIPSTONE: 10
+ POLISHED_ANDESITE: 10
+ POLISHED_BASALT: 10
+ POLISHED_BLACKSTONE: 10
+ POLISHED_DEEPSLATE: 10
+ POLISHED_DIORITE: 10
+ POLISHED_GRANITE: 10
POPPY: 5
- POWDER_SNOW_CAULDRON: 1
- PRISMARINE_BRICKS: 1
+ POWDER_SNOW_CAULDRON: 10
+ PRISMARINE_BRICKS: 10
PRISMARINE: 3
PUMPKIN: 9
- PURPLE_CONCRETE: 1
- PURPLE_GLAZED_TERRACOTTA: 1
- PURPLE_TERRACOTTA: 1
- RAW_COPPER_BLOCK: 1
- RAW_GOLD_BLOCK: 1
- RAW_IRON_BLOCK: 1
- RED_CONCRETE: 1
- RED_GLAZED_TERRACOTTA: 1
- RED_MUSHROOM_BLOCK: 1
+ PURPLE_CONCRETE: 10
+ PURPLE_GLAZED_TERRACOTTA: 10
+ PURPLE_TERRACOTTA: 10
+ RAW_COPPER_BLOCK: 10
+ RAW_GOLD_BLOCK: 10
+ RAW_IRON_BLOCK: 10
+ RED_CONCRETE: 10
+ RED_GLAZED_TERRACOTTA: 10
+ RED_MUSHROOM_BLOCK: 10
RED_MUSHROOM: 8
RED_SAND: 20
- RED_SANDSTONE: 19
- RED_STAINED_GLASS: 1
- RED_TERRACOTTA: 1
+ RED_SANDSTONE: 109
+ RED_STAINED_GLASS: 10
+ RED_TERRACOTTA: 10
RED_TULIP: 3
- RED_WOOL: 1
- REDSTONE_BLOCK: 1
- REDSTONE_LAMP: 1
+ RED_WOOL: 10
+ REDSTONE_BLOCK: 10
+ REDSTONE_LAMP: 10
REDSTONE_ORE: 3
- ROOTED_DIRT: 1
+ ROOTED_DIRT: 10
ROSE_BUSH: 8
SAND: 50
- SANDSTONE: 120
- SCAFFOLDING: 1
- SCULK_SENSOR: 1
- SEA_LANTERN: 1
- SHROOMLIGHT: 1
- SLIME_BLOCK: 1
- SMALL_AMETHYST_BUD: 1
- SMALL_DRIPLEAF: 1
- SMOOTH_BASALT: 1
- SMOOTH_QUARTZ: 1
- SMOOTH_RED_SANDSTONE: 1
- SMOOTH_SANDSTONE: 1
- SMOOTH_STONE: 1
- SNOW_BLOCK: 1
- SNOW: 1
+ SANDSTONE: 1020
+ SCAFFOLDING: 10
+ SCULK_SENSOR: 10
+ SEA_LANTERN: 10
+ SHROOMLIGHT: 10
+ SLIME_BLOCK: 10
+ SMALL_AMETHYST_BUD: 10
+ SMALL_DRIPLEAF: 10
+ SMOOTH_BASALT: 10
+ SMOOTH_QUARTZ: 10
+ SMOOTH_RED_SANDSTONE: 10
+ SMOOTH_SANDSTONE: 10
+ SMOOTH_STONE: 10
+ SNOW_BLOCK: 10
+ SNOW: 10
SPAWNER: 5
- SPONGE: 1
+ SPONGE: 10
SPRUCE_LEAVES: 9
SPRUCE_LOG: 3
- SPRUCE_PLANKS: 1
+ SPRUCE_PLANKS: 10
SPRUCE_SAPLING: 2
SPRUCE_WOOD: 9
- STICKY_PISTON: 1
- STONE_BRICKS: 1
- STONE: 180
- STRIPPED_ACACIA_LOG: 10
- STRIPPED_ACACIA_WOOD: 10
- STRIPPED_BIRCH_LOG: 10
- STRIPPED_BIRCH_WOOD: 10
- STRIPPED_DARK_OAK_LOG: 10
- STRIPPED_DARK_OAK_WOOD: 10
- STRIPPED_JUNGLE_LOG: 10
- STRIPPED_JUNGLE_WOOD: 10
- STRIPPED_OAK_LOG: 10
- STRIPPED_OAK_WOOD: 10
- STRIPPED_SPRUCE_LOG: 10
- STRIPPED_SPRUCE_WOOD: 10
+ STICKY_PISTON: 10
+ STONE_BRICKS: 10
+ STONE: 1080
+ STRIPPED_ACACIA_LOG: 100
+ STRIPPED_ACACIA_WOOD: 100
+ STRIPPED_BIRCH_LOG: 100
+ STRIPPED_BIRCH_WOOD: 100
+ STRIPPED_DARK_OAK_LOG: 100
+ STRIPPED_DARK_OAK_WOOD: 100
+ STRIPPED_JUNGLE_LOG: 100
+ STRIPPED_JUNGLE_WOOD: 100
+ STRIPPED_OAK_LOG: 100
+ STRIPPED_OAK_WOOD: 100
+ STRIPPED_SPRUCE_LOG: 100
+ STRIPPED_SPRUCE_WOOD: 100
SUGAR_CANE: 4
SUNFLOWER: 3
- TALL_GRASS: 13
- TARGET: 1
- TERRACOTTA: 1
- TINTED_GLASS: 1
- TNT: 1
- TUBE_CORAL_BLOCK: 1
- WATER_CAULDRON: 1
- WAXED_COPPER_BLOCK: 1
- WAXED_CUT_COPPER: 1
- WAXED_EXPOSED_COPPER: 1
- WAXED_EXPOSED_CUT_COPPER: 1
- WAXED_OXIDIZED_COPPER: 1
- WAXED_OXIDIZED_CUT_COPPER: 1
- WAXED_WEATHERED_COPPER: 1
- WAXED_WEATHERED_CUT_COPPER: 1
- WEATHERED_COPPER: 1
- WEATHERED_CUT_COPPER: 1
- WET_SPONGE: 1
+ TALL_GRASS: 103
+ TARGET: 10
+ TERRACOTTA: 10
+ TINTED_GLASS: 10
+ TNT: 10
+ TUBE_CORAL_BLOCK: 10
+ WATER_CAULDRON: 10
+ WAXED_COPPER_BLOCK: 10
+ WAXED_CUT_COPPER: 10
+ WAXED_EXPOSED_COPPER: 10
+ WAXED_EXPOSED_CUT_COPPER: 10
+ WAXED_OXIDIZED_COPPER: 10
+ WAXED_OXIDIZED_CUT_COPPER: 10
+ WAXED_WEATHERED_COPPER: 10
+ WAXED_WEATHERED_CUT_COPPER: 10
+ WEATHERED_COPPER: 10
+ WEATHERED_CUT_COPPER: 10
+ WET_SPONGE: 10
WHEAT: 4
- WHITE_CONCRETE: 1
- WHITE_GLAZED_TERRACOTTA: 1
- WHITE_STAINED_GLASS: 1
- WHITE_TERRACOTTA: 1
+ WHITE_CONCRETE: 10
+ WHITE_GLAZED_TERRACOTTA: 10
+ WHITE_STAINED_GLASS: 10
+ WHITE_TERRACOTTA: 10
WHITE_TULIP: 2
- WHITE_WOOL: 1
- YELLOW_CONCRETE: 1
- YELLOW_GLAZED_TERRACOTTA: 1
- YELLOW_STAINED_GLASS: 1
- YELLOW_TERRACOTTA: 1
- YELLOW_WOOL: 1
+ WHITE_WOOL: 10
+ YELLOW_CONCRETE: 10
+ YELLOW_GLAZED_TERRACOTTA: 10
+ YELLOW_STAINED_GLASS: 10
+ YELLOW_TERRACOTTA: 10
+ YELLOW_WOOL: 10
nether:
# Generate SkyGrid Nether - if this is false, the nether world will not be made
generate: true
# Nether block types
- # Beware of glowstone and lava - the lighting calcs will lag the
+ # Beware with glowstone and lava - the lighting calcs will lag the
# server badly if there are too many blocks.
blocks:
- POLISHED_BLACKSTONE_BRICKS: 12
- LAVA: 1
- OBSIDIAN: 10
- NETHER_QUARTZ_ORE: 15
- NETHERITE_BLOCK: 10
- MAGMA_BLOCK: 1
- GRAVEL: 10
- CRACKED_POLISHED_BLACKSTONE_BRICKS: 12
+ ANCIENT_DEBRIS: 100
BASALT: 20
- GILDED_BLACKSTONE: 10
- WARPED_WART_BLOCK: 1
- CRACKED_NETHER_BRICKS: 10
+ BLACKSTONE: 100
+ BONE_BLOCK: 100
+ CHEST: 105
+ CHISELED_NETHER_BRICKS: 102
+ CHISELED_POLISHED_BLACKSTONE: 102
COBWEB: 7
- WARPED_NYLIUM: 1
+ CRACKED_NETHER_BRICKS: 100
+ CRACKED_POLISHED_BLACKSTONE_BRICKS: 102
+ CRIMSON_PLANKS: 1000
+ CRYING_OBSIDIAN: 100
+ GILDED_BLACKSTONE: 100
GLOWSTONE: 2
- CHISELED_POLISHED_BLACKSTONE: 12
- ANCIENT_DEBRIS: 10
- RED_NETHER_BRICKS: 12
- NETHER_BRICKS: 12
- SOUL_SAND: 90
- BLACKSTONE: 10
- POLISHED_BLACKSTONE_BRICK_STAIRS: 12
- NETHER_WART_BLOCK: 12
- NETHER_GOLD_ORE: 12
- BONE_BLOCK: 10
- SPAWNER: 2
- WARPED_ROOTS: 1
- WARPED_FUNGUS: 1
- CHEST: 15
- NETHER_WART: 19
+ GRAVEL: 100
+ LAVA: 10
+ MAGMA_BLOCK: 10
+ NETHER_BRICKS: 102
+ NETHER_GOLD_ORE: 102
+ NETHER_QUARTZ_ORE: 105
+ NETHER_WART_BLOCK: 102
+ NETHER_WART: 109
+ NETHERITE_BLOCK: 100
NETHERRACK: 200
- WARPED_PLANKS: 1
- WARPED_HYPHAE: 1
- RESPAWN_ANCHOR: 1
- CHISELED_NETHER_BRICKS: 12
+ OBSIDIAN: 100
+ POLISHED_BLACKSTONE_BRICK_STAIRS: 102
+ POLISHED_BLACKSTONE_BRICKS: 102
+ RED_NETHER_BRICKS: 102
+ RESPAWN_ANCHOR: 10
+ SOUL_SAND: 90
SOUL_SOIL: 80
- CRYING_OBSIDIAN: 10
- STRIPPED_CRIMSON_HYPHAE: 100
- STRIPPED_CRIMSON_STEM: 100
- STRIPPED_WARPED_HYPHAE: 100
- STRIPPED_WARPED_STEM: 100
- CRIMSON_PLANKS: 100
-
+ SPAWNER: 2
+ STRIPPED_CRIMSON_HYPHAE: 1000
+ STRIPPED_CRIMSON_STEM: 1000
+ STRIPPED_WARPED_HYPHAE: 1000
+ STRIPPED_WARPED_STEM: 1000
+ WARPED_FUNGUS: 10
+ WARPED_HYPHAE: 10
+ WARPED_NYLIUM: 10
+ WARPED_PLANKS: 10
+ WARPED_ROOTS: 10
+ WARPED_WART_BLOCK: 10
# This option indicates if nether portals should be linked via dimensions.
# Option will simulate vanilla portal mechanics that links portals together
# or creates a new portal, if there is not a portal in that dimension.
@@ -1016,21 +832,21 @@ world:
generate: true
# The End blocks.
blocks:
- CHEST: 1
- END_ROD: 1
+ AIR: 200
+ CHEST: 10
CHORUS_PLANT: 2
+ END_ROD: 10
+ END_STONE: 200
+ GRAVEL: 100
OBSIDIAN: 5
PURPLE_STAINED_GLASS: 50
- AIR: 200
- END_STONE: 200
- GRAVEL: 10
- SPAWNER: 1
PURPUR_BLOCK: 50
+ SPAWNER: 10
# This option indicates if obsidian platform in the end should be generated
# when player enters the end world.
# Added since 1.16.
create-obsidian-platform: true
- # The probability of a frame being created in a chunk. Frames are always at y=0.
+ # The probability of a frame being created in a chunk.
end-frame-probability: 0.1
# Friendly name for this world. Used in admin commands. Must be a single word
friendly-name: SkyGrid
@@ -1048,9 +864,10 @@ world:
# SkyGrid height
# This is the height of the top sky grid layer. 255 max.
skygrid-height: 128
- # Spawn height
- # Height where players will spawn. Can be less than the grid height
- spawn-height: 128
+ # End Frame height
+ # This is the height where end frames will generate.
+ # Added since 1.20.0.
+ end-frame-height: 3
# Space around new players in blocks (will be rounded up to nearest 16 blocks)
space-around-players: 1000
# Default protection radius around player's home (so total size is 2x this)
@@ -1064,192 +881,225 @@ world:
ban-limit: -1
# Mob white list - these mobs will NOT be removed when logging in or doing /island
remove-mobs-whitelist:
- - WITHER
- ZOMBIE_VILLAGER
- GUARDIAN
- ZOMBIFIED_PIGLIN
+ - WITHER
# World flags. These are boolean settings for various flags for this world
flags:
- HURT_ANIMALS: true
- DRAGON_EGG: true
- ISLAND_RESPAWN: true
- REDSTONE: true
- VISITOR_KEEP_INVENTORY: false
- BUCKET: true
- LOCK: true
- PETS_STAY_AT_HOME: true
- ENDER_PEARL: true
- DOOR: true
- NATURAL_SPAWNING_OUTSIDE_RANGE: true
- BREAK_HOPPERS: true
- FURNACE: true
- LIQUIDS_FLOWING_OUT: false
+ ALLAY: true
ANVIL: true
- MINECART: true
- FISH_SCOOPING: true
- TRAPPED_CHEST: true
- END_PORTAL: true
- BREEDING: true
- HURT_VILLAGERS: true
- TREES_GROWING_OUTSIDE_RANGE: false
- FROST_WALKER: true
- TURTLE_EGGS: true
- COLLECT_LAVA: true
+ ARMOR_STAND: true
+ AXOLOTL_SCOOPING: true
+ BARREL: true
+ BEACON: true
+ BED: true
+ BOAT: true
+ BOOKSHELF: true
+ BREAK_BLOCKS: true
+ BREAK_HOPPERS: true
BREAK_SPAWNERS: true
- LEVER: true
- ELYTRA: true
+ BREEDING: true
+ BREWING: true
+ BUCKET: true
+ BUTTON: true
CAKE: true
- RIDING: true
- HURT_MONSTERS: true
- ARMOR_STAND: true
- NAME_TAG: true
- CLEAN_SUPER_FLAT: false
- TRADING: true
- EGGS: true
- ITEM_DROP: true
+ CARTOGRAPHY: true
+ CHANGE_SETTINGS: true
CHEST: true
- NOTE_BLOCK: true
- ENTER_EXIT_MESSAGES: true
- FLINT_AND_STEEL: true
- NETHER_PORTAL: true
- REMOVE_END_EXIT_ISLAND: true
- LECTERN: true
- SHULKER_BOX: true
- OFFLINE_GROWTH: true
- CROP_TRAMPLE: true
- ITEM_PICKUP: true
- BREWING: true
- DROPPER: true
- OBSIDIAN_SCOOPING: true
- TNT_PRIMING: true
+ CHORUS_FRUIT: true
+ CLEAN_SUPER_FLAT: false
+ COLLECT_LAVA: true
+ COLLECT_POWDERED_SNOW: true
COLLECT_WATER: true
- BUTTON: true
- COMPOSTER: true
- FIRE_EXTINGUISH: true
COMMAND_RANKS: true
- BEACON: true
- TRAPDOOR: true
- PRESSURE_PLATE: true
- EXPERIENCE_BOTTLE_THROWING: true
- HIVE: true
- DYE: true
- PLACE_BLOCKS: true
- ITEM_FRAME: true
+ COMPOSTER: true
+ CONTAINER: true
CRAFTING: true
- REMOVE_MOBS: true
+ CROP_PLANTING: true
+ CROP_TRAMPLE: true
+ DISPENSER: true
+ DOOR: true
+ DRAGON_EGG: true
+ DROPPER: true
+ DYE: true
+ EGGS: true
+ ELYTRA: true
ENCHANTING: true
- SHEARING: true
+ END_PORTAL: true
+ ENDER_PEARL: true
+ ENTER_EXIT_MESSAGES: true
+ EXPERIENCE_BOTTLE_THROWING: true
+ EXPERIENCE_PICKUP: true
+ FIRE_EXTINGUISH: true
+ FISH_SCOOPING: true
+ FLINT_AND_STEEL: true
FLOWER_POT: true
- BOAT: true
- BED: true
- SPAWN_EGGS: true
- MILKING: true
- DISPENSER: true
+ FROST_WALKER: true
+ FURNACE: true
GATE: true
- EXPERIENCE_PICKUP: true
- PREVENT_TELEPORT_WHEN_FALLING: false
+ GRINDSTONE: true
+ HARVEST: true
+ HIVE: true
HOPPER: true
+ HURT_ANIMALS: true
+ HURT_MONSTERS: true
+ HURT_VILLAGERS: true
+ ISLAND_RESPAWN: true
+ ITEM_DROP: true
+ ITEM_FRAME: true
+ ITEM_PICKUP: true
+ JUKEBOX: true
LEASH: true
- BREAK_BLOCKS: true
+ LECTERN: true
+ LEVER: true
+ LIQUIDS_FLOWING_OUT: false
+ LOCK: true
+ LOOM: true
+ MILKING: true
+ MINECART: true
MOUNT_INVENTORY: true
+ NAME_TAG: true
+ NATURAL_SPAWNING_OUTSIDE_RANGE: true
+ NETHER_PORTAL: true
+ NOTE_BLOCK: true
+ OBSIDIAN_SCOOPING: true
+ OFFLINE_GROWTH: true
OFFLINE_REDSTONE: true
- CHORUS_FRUIT: true
- CONTAINER: true
- JUKEBOX: true
+ PETS_STAY_AT_HOME: true
+ PLACE_BLOCKS: true
POTION_THROWING: true
- BARREL: true
+ PRESSURE_PLATE: true
+ PREVENT_TELEPORT_WHEN_FALLING: false
+ REDSTONE: true
+ REMOVE_END_EXIT_ISLAND: true
+ REMOVE_MOBS: true
+ RIDING: true
+ SCULK_SENSOR: true
+ SCULK_SHRIEKER: true
+ SHEARING: true
+ SHULKER_BOX: true
+ SIGN_EDITING: true
+ SMITHING: true
+ SPAWN_EGGS: true
+ STONECUTTING: true
+ TNT_PRIMING: true
+ TRADING: true
+ TRAPDOOR: true
+ TRAPPED_CHEST: true
+ TREES_GROWING_OUTSIDE_RANGE: false
+ TURTLE_EGGS: true
+ VISITOR_KEEP_INVENTORY: false
# These are the default protection settings protected areas.
# The value is the minimum island rank required to do the action
# Ranks are: Visitor = 0, Member = 900, Owner = 1000
default-protection-flags:
- HURT_ANIMALS: 500
- DRAGON_EGG: 500
- REDSTONE: 500
- BUCKET: 500
- LOCK: 0
- ENDER_PEARL: 500
- DOOR: 500
- BREAK_HOPPERS: 500
- FURNACE: 500
- MINECART: 500
+ ALLAY: 500
ANVIL: 500
- FISH_SCOOPING: 500
- TRAPPED_CHEST: 500
- END_PORTAL: 500
- BREEDING: 500
- HURT_VILLAGERS: 500
- FROST_WALKER: 500
- TURTLE_EGGS: 500
- COLLECT_LAVA: 500
+ ARMOR_STAND: 500
+ AXOLOTL_SCOOPING: 500
+ BARREL: 500
+ BEACON: 500
+ BED: 500
+ BOAT: 500
+ BOOKSHELF: 500
+ BREAK_BLOCKS: 500
+ BREAK_HOPPERS: 500
BREAK_SPAWNERS: 500
- LEVER: 500
- ELYTRA: 0
- RIDING: 500
+ BREEDING: 500
+ BREWING: 500
+ BUCKET: 500
+ BUTTON: 500
CAKE: 500
- HURT_MONSTERS: 500
- NAME_TAG: 500
- ARMOR_STAND: 500
- TRADING: 500
- EGGS: 500
- ITEM_DROP: 500
+ CARTOGRAPHY: 500
+ CHANGE_SETTINGS: 10000
CHEST: 500
- NOTE_BLOCK: 500
- FLINT_AND_STEEL: 500
- NETHER_PORTAL: 500
- LECTERN: 500
- SHULKER_BOX: 500
- ITEM_PICKUP: 500
- CROP_TRAMPLE: 500
- DROPPER: 500
- BREWING: 500
- TNT_PRIMING: 500
+ CHORUS_FRUIT: 500
+ COLLECT_LAVA: 500
+ COLLECT_POWDERED_SNOW: 500
COLLECT_WATER: 500
- COMPOSTER: 500
- BUTTON: 500
- FIRE_EXTINGUISH: 500
COMMAND_RANKS: 500
- BEACON: 500
- TRAPDOOR: 500
- EXPERIENCE_BOTTLE_THROWING: 500
- PRESSURE_PLATE: 500
- DYE: 500
- HIVE: 500
- PLACE_BLOCKS: 500
- ITEM_FRAME: 500
+ COMPOSTER: 500
+ CONTAINER: 500
CRAFTING: 500
+ CROP_PLANTING: 500
+ CROP_TRAMPLE: 500
+ DISPENSER: 500
+ DOOR: 500
+ DRAGON_EGG: 500
+ DROPPER: 500
+ DYE: 500
+ EGGS: 500
+ ELYTRA: 0
ENCHANTING: 500
- SHEARING: 500
+ END_PORTAL: 500
+ ENDER_PEARL: 500
+ EXPERIENCE_BOTTLE_THROWING: 500
+ EXPERIENCE_PICKUP: 500
+ FIRE_EXTINGUISH: 500
+ FISH_SCOOPING: 500
+ FLINT_AND_STEEL: 500
FLOWER_POT: 500
- BOAT: 500
- SPAWN_EGGS: 500
- BED: 500
- MILKING: 500
- DISPENSER: 500
+ FROST_WALKER: 500
+ FURNACE: 500
GATE: 500
- EXPERIENCE_PICKUP: 500
+ GRINDSTONE: 500
+ HARVEST: 500
+ HIVE: 500
HOPPER: 500
+ HURT_ANIMALS: 500
+ HURT_MONSTERS: 500
+ HURT_VILLAGERS: 500
+ ITEM_DROP: 500
+ ITEM_FRAME: 500
+ ITEM_PICKUP: 500
+ JUKEBOX: 500
LEASH: 500
- BREAK_BLOCKS: 500
+ LECTERN: 500
+ LEVER: 500
+ LOCK: 0
+ LOOM: 500
+ MILKING: 500
+ MINECART: 500
MOUNT_INVENTORY: 500
- CHORUS_FRUIT: 500
- CONTAINER: 500
- BARREL: 500
+ NAME_TAG: 500
+ NETHER_PORTAL: 500
+ NOTE_BLOCK: 500
+ PLACE_BLOCKS: 500
POTION_THROWING: 500
- JUKEBOX: 500
+ PRESSURE_PLATE: 500
+ REDSTONE: 500
+ RIDING: 500
+ SCULK_SENSOR: 500
+ SCULK_SHRIEKER: 500
+ SHEARING: 500
+ SHULKER_BOX: 500
+ SIGN_EDITING: 500
+ SMITHING: 500
+ SPAWN_EGGS: 500
+ STONECUTTING: 500
+ TNT_PRIMING: 500
+ TRADING: 500
+ TRAPDOOR: 500
+ TRAPPED_CHEST: 500
+ TURTLE_EGGS: 500
# These are the default settings for new protected areas
default-settings:
- PVP_END: false
- PVP_NETHER: false
- LEAF_DECAY: true
- MONSTER_SPAWNERS_SPAWN: true
- TNT_DAMAGE: true
ANIMAL_NATURAL_SPAWN: true
- MONSTER_NATURAL_SPAWN: true
- FIRE_IGNITE: true
- FIRE_SPREAD: true
ANIMAL_SPAWNERS_SPAWN: true
+ BLOCK_EXPLODE_DAMAGE: true
+ ENDERMAN_TELEPORT: true
FIRE_BURNING: true
+ FIRE_IGNITE: true
+ FIRE_SPREAD: true
+ LEAF_DECAY: true
+ MONSTER_NATURAL_SPAWN: true
+ MONSTER_SPAWNERS_SPAWN: true
+ PVP_END: false
+ PVP_NETHER: false
PVP_OVERWORLD: false
+ SHULKER_TELEPORT: true
+ TNT_DAMAGE: true
# These settings/flags are hidden from users
# Ops can toggle hiding in-game using SHIFT-LEFT-CLICK on flags in settings
hidden-flags: []
@@ -1264,6 +1114,19 @@ area:
# Default max team size
# Permission size cannot be less than the default below.
max-team-size: 4
+ # Default maximum number of coop rank members per area
+ # Players can have the skygrid.coop.maxsize. permission to be bigger but
+ # permission size cannot be less than the default below.
+ # Added since 1.13.0.
+ max-coop-size: 4
+ # Default maximum number of trusted rank members per area
+ # Players can have the skygrid.trust.maxsize. permission to be bigger but
+ # permission size cannot be less than the default below.
+ # Added since 1.13.0.
+ max-trusted-size: 4
+ # Default maximum number of homes a player can have. Min = 1
+ # Accessed via /sg sethome or /sg go
+ max-homes: 5
reset:
# How many resets a player is allowed (override with /sgadmin clearresets )
# Value of -1 means unlimited, 0 means hardcore - no resets.
@@ -1324,7 +1187,7 @@ area:
# Warning:
# * If you are running multiple gamemodes on your server, and all of them have
# this feature enabled, an area in all the gamemodes will be created simultaneously.
- # However, it is impossible to know on which area the player will be teleported afterwards.
+ # However, it is impossible to know on which area the player will be teleported to afterwards.
# * Area creation can be resource-intensive, please consider the options below to help mitigate
# the potential issues, especially if you expect a lot of players to connect to your server
# in a limited period of time.
@@ -1403,23 +1266,12 @@ area:
team-join-reset: true
# Reset player death count when they start reset
reset-on-new-island: true
-island:
- # Default maximum number of coop rank members per area
- # Players can have the skygrid.coop.maxsize. permission to be bigger but
- # permission size cannot be less than the default below.
- # Added since 1.13.0.
- max-coop-size: 4
- # Default maximum number of trusted rank members per area
- # Players can have the skygrid.trust.maxsize. permission to be bigger but
- # permission size cannot be less than the default below.
- # Added since 1.13.0.
- max-trusted-size: 4
protection:
# Geo restrict mobs.
# Mobs that exit the protected space where they were spawned will be removed.
geo-limit-settings: []
- # AcidIsland blocked mobs.
- # List of mobs that should not spawn in AcidIsland.
+ # SkyGrid blocked mobs.
+ # List of mobs that should not spawn in SkyGrid.
block-mobs: []
# Invincible visitors. List of damages that will not affect visitors.
# Make list blank if visitors should receive all damages
diff --git a/src/test/java/world/bentobox/skygrid/SettingsTest.java b/src/test/java/world/bentobox/skygrid/SettingsTest.java
new file mode 100644
index 0000000..9a1a26f
--- /dev/null
+++ b/src/test/java/world/bentobox/skygrid/SettingsTest.java
@@ -0,0 +1,1450 @@
+package world.bentobox.skygrid;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.bukkit.Difficulty;
+import org.bukkit.GameMode;
+import org.bukkit.Material;
+import org.bukkit.entity.EntityType;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+
+/**
+ * @author tastybento
+ *
+ */
+@RunWith(PowerMockRunner.class)
+public class SettingsTest {
+
+ private Settings s;
+
+ @Before
+ public void setUp() {
+ s = new Settings();
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getBlocks()}.
+ */
+ @Test
+ public void testGetBlocks() {
+ assertTrue(s.getBlocks().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setBlocks(java.util.Map)}.
+ */
+ @Test
+ public void testSetBlocks() {
+ assertTrue(s.getBlocks().isEmpty());
+ s.setBlocks(Map.of(Material.STONE, 5));
+ assertFalse(s.getBlocks().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getNetherBlocks()}.
+ */
+ @Test
+ public void testGetNetherBlocks() {
+ assertTrue(s.getNetherBlocks().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setNetherBlocks(java.util.Map)}.
+ */
+ @Test
+ public void testSetNetherBlocks() {
+ assertTrue(s.getNetherBlocks().isEmpty());
+ s.setNetherBlocks(Map.of(Material.STONE, 5));
+ assertFalse(s.getNetherBlocks().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getEndBlocks()}.
+ */
+ @Test
+ public void testGetEndBlocks() {
+ assertTrue(s.getEndBlocks().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setEndBlocks(java.util.Map)}.
+ */
+ @Test
+ public void testSetEndBlocks() {
+ assertTrue(s.getEndBlocks().isEmpty());
+ s.setEndBlocks(Map.of(Material.STONE, 5));
+ assertFalse(s.getEndBlocks().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getEndFrameProb()}.
+ */
+ @Test
+ public void testGetEndFrameProb() {
+ assertEquals(0.1D, s.getEndFrameProb(), 0D);
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setEndFrameProb(double)}.
+ */
+ @Test
+ public void testSetEndFrameProb() {
+ assertEquals(0.1D, s.getEndFrameProb(), 0D);
+ s.setEndFrameProb(20D);
+ assertEquals(20D, s.getEndFrameProb(), 0D);
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getChestFill()}.
+ */
+ @Test
+ public void testGetChestFill() {
+ assertEquals(5, s.getChestFill());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setChestFill(int)}.
+ */
+ @Test
+ public void testSetChestFill() {
+ s.setChestFill(20);
+ assertEquals(20, s.getChestFill());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getChestFillNether()}.
+ */
+ @Test
+ public void testGetChestFillNether() {
+ assertEquals(5, s.getChestFillNether());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setChestFillNether(int)}.
+ */
+ @Test
+ public void testSetChestFillNether() {
+ s.setChestFillNether(20);
+ assertEquals(20, s.getChestFillNether());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getChestFillEnd()}.
+ */
+ @Test
+ public void testGetChestFillEnd() {
+ assertEquals(5, s.getChestFillEnd());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setChestFillEnd(int)}.
+ */
+ @Test
+ public void testSetChestFillEnd() {
+ s.setChestFillEnd(20);
+ assertEquals(20, s.getChestFillEnd());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getChestItemsOverworld()}.
+ */
+ @Test
+ public void testGetChestItemsOverworld() {
+ assertTrue(s.getChestItemsOverworld().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setChestItemsOverworld(java.util.List)}.
+ */
+ @Test
+ public void testSetChestItemsOverworld() {
+ assertTrue(s.getChestItemsOverworld().isEmpty());
+ s.setChestItemsOverworld(Map.of(Material.ACACIA_BOAT, 1));
+ assertFalse(s.getChestItemsOverworld().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getChestItemsNether()}.
+ */
+ @Test
+ public void testGetChestItemsNether() {
+ assertTrue(s.getChestItemsNether().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setChestItemsNether(java.util.List)}.
+ */
+ @Test
+ public void testSetChestItemsNether() {
+ assertTrue(s.getChestItemsNether().isEmpty());
+ s.setChestItemsNether(Map.of(Material.ACACIA_BOAT, 1));
+ assertFalse(s.getChestItemsNether().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getChestItemsEnd()}.
+ */
+ @Test
+ public void testGetChestItemsEnd() {
+ assertTrue(s.getChestItemsEnd().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setChestItemsEnd(java.util.List)}.
+ */
+ @Test
+ public void testSetChestItemsEnd() {
+ assertTrue(s.getChestItemsEnd().isEmpty());
+ s.setChestItemsEnd(Map.of(Material.ACACIA_BOAT, 1));
+ assertFalse(s.getChestItemsEnd().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isCheckForBlocks()}.
+ */
+ @Test
+ public void testIsCheckForBlocks() {
+ assertFalse(s.isCheckForBlocks());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getFriendlyName()}.
+ */
+ @Test
+ public void testGetFriendlyName() {
+ assertEquals("SkyGrid", s.getFriendlyName());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getWorldName()}.
+ */
+ @Test
+ public void testGetWorldName() {
+ assertEquals("skygrid-world", s.getWorldName());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDifficulty()}.
+ */
+ @Test
+ public void testGetDifficulty() {
+ assertEquals(Difficulty.NORMAL, s.getDifficulty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIslandDistance()}.
+ */
+ @Test
+ public void testGetIslandDistance() {
+ assertEquals(1000, s.getIslandDistance());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIslandProtectionRange()}.
+ */
+ @Test
+ public void testGetIslandProtectionRange() {
+ assertEquals(50, s.getIslandProtectionRange());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIslandStartX()}.
+ */
+ @Test
+ public void testGetIslandStartX() {
+ assertEquals(0, s.getIslandStartX());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIslandStartZ()}.
+ */
+ @Test
+ public void testGetIslandStartZ() {
+ assertEquals(0, s.getIslandStartZ());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIslandXOffset()}.
+ */
+ @Test
+ public void testGetIslandXOffset() {
+ assertEquals(0, s.getIslandXOffset());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIslandZOffset()}.
+ */
+ @Test
+ public void testGetIslandZOffset() {
+ assertEquals(0, s.getIslandZOffset());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIslandHeight()}.
+ */
+ @Test
+ public void testGetIslandHeight() {
+ assertEquals(128, s.getIslandHeight());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isUseOwnGenerator()}.
+ */
+ @Test
+ public void testIsUseOwnGenerator() {
+ assertFalse(s.isUseOwnGenerator());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getSeaHeight()}.
+ */
+ @Test
+ public void testGetSeaHeight() {
+ assertEquals(0, s.getSeaHeight());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getMaxIslands()}.
+ */
+ @Test
+ public void testGetMaxIslands() {
+ assertEquals(-1, s.getMaxIslands());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDefaultGameMode()}.
+ */
+ @Test
+ public void testGetDefaultGameMode() {
+ assertEquals(GameMode.SURVIVAL, s.getDefaultGameMode());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isNetherGenerate()}.
+ */
+ @Test
+ public void testIsNetherGenerate() {
+ assertTrue(s.isNetherGenerate());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isNetherIslands()}.
+ */
+ @Test
+ public void testIsNetherIslands() {
+ assertTrue(s.isNetherIslands());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getNetherSpawnRadius()}.
+ */
+ @Test
+ public void testGetNetherSpawnRadius() {
+ assertEquals(0, s.getNetherSpawnRadius());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isEndGenerate()}.
+ */
+ @Test
+ public void testIsEndGenerate() {
+ assertTrue(s.isEndGenerate());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isEndIslands()}.
+ */
+ @Test
+ public void testIsEndIslands() {
+ assertTrue(s.isEndIslands());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isDragonSpawn()}.
+ */
+ @Test
+ public void testIsDragonSpawn() {
+ assertFalse(s.isDragonSpawn());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getRemoveMobsWhitelist()}.
+ */
+ @Test
+ public void testGetRemoveMobsWhitelist() {
+ assertTrue(s.getRemoveMobsWhitelist().isEmpty());
+
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getWorldFlags()}.
+ */
+ @Test
+ public void testGetWorldFlags() {
+ assertTrue(s.getWorldFlags().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDefaultIslandFlagNames()}.
+ */
+ @Test
+ public void testGetDefaultIslandFlagNames() {
+ assertTrue(s.getDefaultIslandFlagNames().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDefaultIslandSettingNames()}.
+ */
+ @Test
+ public void testGetDefaultIslandSettingNames() {
+ assertTrue(s.getDefaultIslandSettingNames().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDefaultIslandFlags()}.
+ */
+ @SuppressWarnings("deprecation")
+ @Test
+ public void testGetDefaultIslandFlags() {
+ assertTrue(s.getDefaultIslandFlags().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDefaultIslandSettings()}.
+ */
+ @SuppressWarnings("deprecation")
+ @Test
+ public void testGetDefaultIslandSettings() {
+ assertTrue(s.getDefaultIslandSettings().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getHiddenFlags()}.
+ */
+ @Test
+ public void testGetHiddenFlags() {
+ assertTrue(s.getHiddenFlags().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getVisitorBannedCommands()}.
+ */
+ @Test
+ public void testGetVisitorBannedCommands() {
+ assertTrue(s.getVisitorBannedCommands().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getFallingBannedCommands()}.
+ */
+ @Test
+ public void testGetFallingBannedCommands() {
+ assertTrue(s.getFallingBannedCommands().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getMaxTeamSize()}.
+ */
+ @Test
+ public void testGetMaxTeamSize() {
+ assertEquals(4, s.getMaxTeamSize());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getMaxHomes()}.
+ */
+ @Test
+ public void testGetMaxHomes() {
+ assertEquals(5, s.getMaxHomes());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getResetLimit()}.
+ */
+ @Test
+ public void testGetResetLimit() {
+ assertEquals(-1, s.getResetLimit());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isLeaversLoseReset()}.
+ */
+ @Test
+ public void testIsLeaversLoseReset() {
+ assertFalse(s.isLeaversLoseReset());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isKickedKeepInventory()}.
+ */
+ @Test
+ public void testIsKickedKeepInventory() {
+ assertFalse(s.isKickedKeepInventory());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isCreateIslandOnFirstLoginEnabled()}.
+ */
+ @Test
+ public void testIsCreateIslandOnFirstLoginEnabled() {
+ assertFalse(s.isCreateIslandOnFirstLoginEnabled());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getCreateIslandOnFirstLoginDelay()}.
+ */
+ @Test
+ public void testGetCreateIslandOnFirstLoginDelay() {
+ assertEquals(5, s.getCreateIslandOnFirstLoginDelay());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isCreateIslandOnFirstLoginAbortOnLogout()}.
+ */
+ @Test
+ public void testIsCreateIslandOnFirstLoginAbortOnLogout() {
+ assertTrue(s.isCreateIslandOnFirstLoginAbortOnLogout());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnJoinResetMoney()}.
+ */
+ @Test
+ public void testIsOnJoinResetMoney() {
+ assertFalse(s.isOnJoinResetMoney());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnJoinResetInventory()}.
+ */
+ @Test
+ public void testIsOnJoinResetInventory() {
+ assertFalse(s.isOnJoinResetInventory());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnJoinResetEnderChest()}.
+ */
+ @Test
+ public void testIsOnJoinResetEnderChest() {
+ assertFalse(s.isOnJoinResetEnderChest());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnLeaveResetMoney()}.
+ */
+ @Test
+ public void testIsOnLeaveResetMoney() {
+ assertFalse(s.isOnLeaveResetMoney());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnLeaveResetInventory()}.
+ */
+ @Test
+ public void testIsOnLeaveResetInventory() {
+ assertFalse(s.isOnLeaveResetInventory());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnLeaveResetEnderChest()}.
+ */
+ @Test
+ public void testIsOnLeaveResetEnderChest() {
+ assertFalse(s.isOnLeaveResetEnderChest());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isDeathsCounted()}.
+ */
+ @Test
+ public void testIsDeathsCounted() {
+ assertTrue(s.isDeathsCounted());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isAllowSetHomeInNether()}.
+ */
+ @Test
+ public void testIsAllowSetHomeInNether() {
+ assertTrue(s.isAllowSetHomeInNether());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isAllowSetHomeInTheEnd()}.
+ */
+ @Test
+ public void testIsAllowSetHomeInTheEnd() {
+ assertTrue(s.isAllowSetHomeInTheEnd());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isRequireConfirmationToSetHomeInNether()}.
+ */
+ @Test
+ public void testIsRequireConfirmationToSetHomeInNether() {
+ assertTrue(s.isRequireConfirmationToSetHomeInNether());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isRequireConfirmationToSetHomeInTheEnd()}.
+ */
+ @Test
+ public void testIsRequireConfirmationToSetHomeInTheEnd() {
+ assertTrue(s.isRequireConfirmationToSetHomeInTheEnd());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDeathsMax()}.
+ */
+ @Test
+ public void testGetDeathsMax() {
+ assertEquals(10, s.getDeathsMax());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isTeamJoinDeathReset()}.
+ */
+ @Test
+ public void testIsTeamJoinDeathReset() {
+ assertTrue(s.isTeamJoinDeathReset());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getGeoLimitSettings()}.
+ */
+ @Test
+ public void testGetGeoLimitSettings() {
+ assertTrue(s.getGeoLimitSettings().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getIvSettings()}.
+ */
+ @Test
+ public void testGetIvSettings() {
+ assertTrue(s.getIvSettings().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getResetEpoch()}.
+ */
+ @Test
+ public void testGetResetEpoch() {
+ assertEquals(0L, s.getResetEpoch());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setFriendlyName(java.lang.String)}.
+ */
+ @Test
+ public void testSetFriendlyName() {
+ s.setFriendlyName("test");
+ assertEquals("test", s.getFriendlyName());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setWorldName(java.lang.String)}.
+ */
+ @Test
+ public void testSetWorldName() {
+ s.setWorldName("test");
+ assertEquals("test", s.getWorldName());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDifficulty(org.bukkit.Difficulty)}.
+ */
+ @Test
+ public void testSetDifficulty() {
+ s.setDifficulty(Difficulty.HARD);
+ assertEquals(Difficulty.HARD, s.getDifficulty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setIslandDistance(int)}.
+ */
+ @Test
+ public void testSetIslandDistance() {
+ s.setIslandDistance(12345);
+ assertEquals(12345, s.getIslandDistance());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setIslandProtectionRange(int)}.
+ */
+ @Test
+ public void testSetIslandProtectionRange() {
+ s.setIslandProtectionRange(12345);
+ assertEquals(12345, s.getIslandProtectionRange());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setIslandStartX(int)}.
+ */
+ @Test
+ public void testSetIslandStartX() {
+ s.setIslandStartX(12345);
+ assertEquals(12345, s.getIslandStartX());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setIslandStartZ(int)}.
+ */
+ @Test
+ public void testSetIslandStartZ() {
+ s.setIslandStartZ(12345);
+ assertEquals(12345, s.getIslandStartZ());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setIslandHeight(int)}.
+ */
+ @Test
+ public void testSetIslandHeight() {
+ s.setIslandHeight(12345);
+ assertEquals(255, s.getIslandHeight());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDefaultGameMode(org.bukkit.GameMode)}.
+ */
+ @Test
+ public void testSetDefaultGameMode() {
+ s.setDefaultGameMode(GameMode.SPECTATOR);
+ assertEquals(GameMode.SPECTATOR, s.getDefaultGameMode());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setNetherGenerate(boolean)}.
+ */
+ @Test
+ public void testSetNetherGenerate() {
+ s.setNetherGenerate(false);
+ assertFalse(s.isNetherGenerate());
+ s.setNetherGenerate(true);
+ assertTrue(s.isNetherGenerate());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setEndGenerate(boolean)}.
+ */
+ @Test
+ public void testSetEndGenerate() {
+ s.setEndGenerate(false);
+ assertFalse(s.isEndGenerate());
+ s.setEndGenerate(true);
+ assertTrue(s.isEndGenerate());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setRemoveMobsWhitelist(java.util.Set)}.
+ */
+ @Test
+ public void testSetRemoveMobsWhitelist() {
+ s.setRemoveMobsWhitelist(Collections.singleton(EntityType.AXOLOTL));
+ assertTrue(s.getRemoveMobsWhitelist().contains(EntityType.AXOLOTL));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setWorldFlags(java.util.Map)}.
+ */
+ @Test
+ public void testSetWorldFlags() {
+ s.setWorldFlags(Map.of("trueFlag", true, "falseFlag", false));
+ assertTrue(s.getWorldFlags().get("trueFlag"));
+ assertFalse(s.getWorldFlags().get("falseFlag"));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDefaultIslandFlagNames(java.util.Map)}.
+ */
+ @Test
+ public void testSetDefaultIslandFlagNames() {
+ s.setDefaultIslandFlagNames(Map.of("TEST", 500));
+ assertTrue(s.getDefaultIslandFlagNames().get("TEST") == 500);
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDefaultIslandSettingNames(java.util.Map)}.
+ */
+ @Test
+ public void testSetDefaultIslandSettingNames() {
+ s.setDefaultIslandSettingNames(Map.of("SETTING", 456));
+ assertTrue(s.getDefaultIslandSettingNames().get("SETTING") == 456);
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setHiddenFlags(java.util.List)}.
+ */
+ @Test
+ public void testSetHiddenFlags() {
+ s.setHiddenFlags(List.of("FLAG1", "FLAG2"));
+ assertTrue(s.getHiddenFlags().contains("FLAG2"));
+ assertFalse(s.getHiddenFlags().contains("FLAG3"));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setVisitorBannedCommands(java.util.List)}.
+ */
+ @Test
+ public void testSetVisitorBannedCommands() {
+ s.setVisitorBannedCommands(List.of("banned"));
+ assertTrue(s.getVisitorBannedCommands().contains("banned"));
+ assertFalse(s.getVisitorBannedCommands().contains("not-banned"));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setFallingBannedCommands(java.util.List)}.
+ */
+ @Test
+ public void testSetFallingBannedCommands() {
+ s.setFallingBannedCommands(List.of("banned"));
+ assertTrue(s.getFallingBannedCommands().contains("banned"));
+ assertFalse(s.getFallingBannedCommands().contains("not-banned"));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setMaxTeamSize(int)}.
+ */
+ @Test
+ public void testSetMaxTeamSize() {
+ s.setMaxTeamSize(12345);
+ assertEquals(12345, s.getMaxTeamSize());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setMaxHomes(int)}.
+ */
+ @Test
+ public void testSetMaxHomes() {
+ s.setMaxHomes(12345);
+ assertEquals(12345, s.getMaxHomes());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setResetLimit(int)}.
+ */
+ @Test
+ public void testSetResetLimit() {
+ s.setResetLimit(12345);
+ assertEquals(12345, s.getResetLimit());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setLeaversLoseReset(boolean)}.
+ */
+ @Test
+ public void testSetLeaversLoseReset() {
+ s.setLeaversLoseReset(false);
+ assertFalse(s.isLeaversLoseReset());
+ s.setLeaversLoseReset(true);
+ assertTrue(s.isLeaversLoseReset());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setKickedKeepInventory(boolean)}.
+ */
+ @Test
+ public void testSetKickedKeepInventory() {
+ s.setKickedKeepInventory(false);
+ assertFalse(s.isKickedKeepInventory());
+ s.setKickedKeepInventory(true);
+ assertTrue(s.isKickedKeepInventory());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnJoinResetMoney(boolean)}.
+ */
+ @Test
+ public void testSetOnJoinResetMoney() {
+ s.setOnJoinResetMoney(false);
+ assertFalse(s.isOnJoinResetMoney());
+ s.setOnJoinResetMoney(true);
+ assertTrue(s.isOnJoinResetMoney());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnJoinResetInventory(boolean)}.
+ */
+ @Test
+ public void testSetOnJoinResetInventory() {
+ s.setOnJoinResetInventory(false);
+ assertFalse(s.isOnJoinResetInventory());
+ s.setOnJoinResetInventory(true);
+ assertTrue(s.isOnJoinResetInventory());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnJoinResetEnderChest(boolean)}.
+ */
+ @Test
+ public void testSetOnJoinResetEnderChest() {
+ s.setOnJoinResetEnderChest(false);
+ assertFalse(s.isOnJoinResetEnderChest());
+ s.setOnJoinResetEnderChest(true);
+ assertTrue(s.isOnJoinResetEnderChest());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnLeaveResetMoney(boolean)}.
+ */
+ @Test
+ public void testSetOnLeaveResetMoney() {
+ s.setOnLeaveResetMoney(false);
+ assertFalse(s.isOnLeaveResetMoney());
+ s.setOnLeaveResetMoney(true);
+ assertTrue(s.isOnLeaveResetMoney());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnLeaveResetInventory(boolean)}.
+ */
+ @Test
+ public void testSetOnLeaveResetInventory() {
+ s.setOnLeaveResetInventory(false);
+ assertFalse(s.isOnLeaveResetInventory());
+ s.setOnLeaveResetInventory(true);
+ assertTrue(s.isOnLeaveResetInventory());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnLeaveResetEnderChest(boolean)}.
+ */
+ @Test
+ public void testSetOnLeaveResetEnderChest() {
+ s.setOnLeaveResetEnderChest(false);
+ assertFalse(s.isOnLeaveResetEnderChest());
+ s.setOnLeaveResetEnderChest(true);
+ assertTrue(s.isOnLeaveResetEnderChest());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setCreateIslandOnFirstLoginEnabled(boolean)}.
+ */
+ @Test
+ public void testSetCreateIslandOnFirstLoginEnabled() {
+ s.setCreateIslandOnFirstLoginEnabled(false);
+ assertFalse(s.isCreateIslandOnFirstLoginEnabled());
+ s.setCreateIslandOnFirstLoginEnabled(true);
+ assertTrue(s.isCreateIslandOnFirstLoginEnabled());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setCreateIslandOnFirstLoginDelay(int)}.
+ */
+ @Test
+ public void testSetCreateIslandOnFirstLoginDelay() {
+ s.setCreateIslandOnFirstLoginDelay(12345);
+ assertEquals(12345, s.getCreateIslandOnFirstLoginDelay());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setCreateIslandOnFirstLoginAbortOnLogout(boolean)}.
+ */
+ @Test
+ public void testSetCreateIslandOnFirstLoginAbortOnLogout() {
+ s.setCreateIslandOnFirstLoginAbortOnLogout(false);
+ assertFalse(s.isCreateIslandOnFirstLoginAbortOnLogout());
+ s.setCreateIslandOnFirstLoginAbortOnLogout(true);
+ assertTrue(s.isCreateIslandOnFirstLoginAbortOnLogout());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDeathsCounted(boolean)}.
+ */
+ @Test
+ public void testSetDeathsCounted() {
+ s.setDeathsCounted(false);
+ assertFalse(s.isDeathsCounted());
+ s.setDeathsCounted(true);
+ assertTrue(s.isDeathsCounted());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDeathsMax(int)}.
+ */
+ @Test
+ public void testSetDeathsMax() {
+ s.setDeathsMax(12345);
+ assertEquals(12345, s.getDeathsMax());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setTeamJoinDeathReset(boolean)}.
+ */
+ @Test
+ public void testSetTeamJoinDeathReset() {
+ s.setTeamJoinDeathReset(false);
+ assertFalse(s.isTeamJoinDeathReset());
+ s.setTeamJoinDeathReset(true);
+ assertTrue(s.isTeamJoinDeathReset());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setGeoLimitSettings(java.util.List)}.
+ */
+ @Test
+ public void testSetGeoLimitSettings() {
+ s.setGeoLimitSettings(List.of("test"));
+ assertTrue(s.getGeoLimitSettings().contains("test"));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setIvSettings(java.util.List)}.
+ */
+ @Test
+ public void testSetIvSettings() {
+ s.setIvSettings(List.of("test"));
+ assertTrue(s.getIvSettings().contains("test"));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setAllowSetHomeInNether(boolean)}.
+ */
+ @Test
+ public void testSetAllowSetHomeInNether() {
+ s.setAllowSetHomeInNether(false);
+ assertFalse(s.isAllowSetHomeInNether());
+ s.setAllowSetHomeInNether(true);
+ assertTrue(s.isAllowSetHomeInNether());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setAllowSetHomeInTheEnd(boolean)}.
+ */
+ @Test
+ public void testSetAllowSetHomeInTheEnd() {
+ s.setAllowSetHomeInTheEnd(false);
+ assertFalse(s.isAllowSetHomeInTheEnd());
+ s.setAllowSetHomeInTheEnd(true);
+ assertTrue(s.isAllowSetHomeInTheEnd());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setRequireConfirmationToSetHomeInNether(boolean)}.
+ */
+ @Test
+ public void testSetRequireConfirmationToSetHomeInNether() {
+ s.setRequireConfirmationToSetHomeInNether(false);
+ assertFalse(s.isRequireConfirmationToSetHomeInNether());
+ s.setRequireConfirmationToSetHomeInNether(true);
+ assertTrue(s.isRequireConfirmationToSetHomeInNether());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setRequireConfirmationToSetHomeInTheEnd(boolean)}.
+ */
+ @Test
+ public void testSetRequireConfirmationToSetHomeInTheEnd() {
+ s.setRequireConfirmationToSetHomeInTheEnd(false);
+ assertFalse(s.isRequireConfirmationToSetHomeInTheEnd());
+ s.setRequireConfirmationToSetHomeInTheEnd(true);
+ assertTrue(s.isRequireConfirmationToSetHomeInTheEnd());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setResetEpoch(long)}.
+ */
+ @Test
+ public void testSetResetEpoch() {
+ s.setResetEpoch(12345);
+ assertEquals(12345, s.getResetEpoch());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getPermissionPrefix()}.
+ */
+ @Test
+ public void testGetPermissionPrefix() {
+ assertEquals("skygrid", s.getPermissionPrefix());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isWaterUnsafe()}.
+ */
+ @Test
+ public void testIsWaterUnsafe() {
+ assertFalse(s.isWaterUnsafe());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getBanLimit()}.
+ */
+ @Test
+ public void testGetBanLimit() {
+ assertEquals(-1, s.getBanLimit());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setBanLimit(int)}.
+ */
+ @Test
+ public void testSetBanLimit() {
+ assertEquals(-1, s.getBanLimit());
+ s.setBanLimit(12345);
+ assertEquals(12345, s.getBanLimit());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getPlayerCommandAliases()}.
+ */
+ @Test
+ public void testGetPlayerCommandAliases() {
+ assertEquals("skygrid sg",s.getPlayerCommandAliases());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setPlayerCommandAliases(java.lang.String)}.
+ */
+ @Test
+ public void testSetPlayerCommandAliases() {
+ assertEquals("skygrid sg",s.getPlayerCommandAliases());
+ s.setPlayerCommandAliases("aliases");
+ assertEquals("aliases",s.getPlayerCommandAliases());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getAdminCommandAliases()}.
+ */
+ @Test
+ public void testGetAdminCommandAliases() {
+ assertEquals("sgadmin sga",s.getAdminCommandAliases());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setAdminCommandAliases(java.lang.String)}.
+ */
+ @Test
+ public void testSetAdminCommandAliases() {
+ assertEquals("sgadmin sga",s.getAdminCommandAliases());
+ s.setAdminCommandAliases("aliases");
+ assertEquals("aliases",s.getAdminCommandAliases());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isDeathsResetOnNewIsland()}.
+ */
+ @Test
+ public void testIsDeathsResetOnNewIsland() {
+ assertTrue(s.isDeathsResetOnNewIsland());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDeathsResetOnNewIsland(boolean)}.
+ */
+ @Test
+ public void testSetDeathsResetOnNewIsland() {
+ s.setDeathsResetOnNewIsland(false);
+ assertFalse(s.isDeathsResetOnNewIsland());
+ s.setDeathsResetOnNewIsland(true);
+ assertTrue(s.isDeathsResetOnNewIsland());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getOnJoinCommands()}.
+ */
+ @Test
+ public void testGetOnJoinCommands() {
+ assertTrue(s.getOnJoinCommands().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnJoinCommands(java.util.List)}.
+ */
+ @Test
+ public void testSetOnJoinCommands() {
+ s.setOnJoinCommands(List.of("command", "do this"));
+ assertEquals("do this", s.getOnJoinCommands().get(1));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getOnLeaveCommands()}.
+ */
+ @Test
+ public void testGetOnLeaveCommands() {
+ assertTrue(s.getOnLeaveCommands().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnLeaveCommands(java.util.List)}.
+ */
+ @Test
+ public void testSetOnLeaveCommands() {
+ s.setOnLeaveCommands(List.of("command", "do this"));
+ assertEquals("do this", s.getOnLeaveCommands().get(1));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getOnRespawnCommands()}.
+ */
+ @Test
+ public void testGetOnRespawnCommands() {
+ assertTrue(s.getOnRespawnCommands().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnRespawnCommands(java.util.List)}.
+ */
+ @Test
+ public void testSetOnRespawnCommands() {
+ s.setOnRespawnCommands(List.of("command", "do this"));
+ assertEquals("do this", s.getOnRespawnCommands().get(1));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnJoinResetHealth()}.
+ */
+ @Test
+ public void testIsOnJoinResetHealth() {
+ assertTrue(s.isOnJoinResetHealth());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnJoinResetHealth(boolean)}.
+ */
+ @Test
+ public void testSetOnJoinResetHealth() {
+ s.setOnJoinResetHealth(false);
+ assertFalse(s.isOnJoinResetHealth());
+ s.setOnJoinResetHealth(true);
+ assertTrue(s.isOnJoinResetHealth());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnJoinResetHunger()}.
+ */
+ @Test
+ public void testIsOnJoinResetHunger() {
+ assertTrue(s.isOnJoinResetHunger());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnJoinResetHunger(boolean)}.
+ */
+ @Test
+ public void testSetOnJoinResetHunger() {
+ s.setOnJoinResetHunger(false);
+ assertFalse(s.isOnJoinResetHunger());
+ s.setOnJoinResetHunger(true);
+ assertTrue(s.isOnJoinResetHunger());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnJoinResetXP()}.
+ */
+ @Test
+ public void testIsOnJoinResetXP() {
+ assertFalse(s.isOnJoinResetXP());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnJoinResetXP(boolean)}.
+ */
+ @Test
+ public void testSetOnJoinResetXP() {
+ s.setOnJoinResetXP(false);
+ assertFalse(s.isOnJoinResetXP());
+ s.setOnJoinResetXP(true);
+ assertTrue(s.isOnJoinResetXP());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnLeaveResetHealth()}.
+ */
+ @Test
+ public void testIsOnLeaveResetHealth() {
+ assertFalse(s.isOnLeaveResetHealth());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnLeaveResetHealth(boolean)}.
+ */
+ @Test
+ public void testSetOnLeaveResetHealth() {
+ s.setOnLeaveResetHealth(false);
+ assertFalse(s.isOnLeaveResetHealth());
+ s.setOnLeaveResetHealth(true);
+ assertTrue(s.isOnLeaveResetHealth());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnLeaveResetHunger()}.
+ */
+ @Test
+ public void testIsOnLeaveResetHunger() {
+ assertFalse(s.isOnLeaveResetHunger());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnLeaveResetHunger(boolean)}.
+ */
+ @Test
+ public void testSetOnLeaveResetHunger() {
+ s.setOnLeaveResetHunger(false);
+ assertFalse(s.isOnLeaveResetHunger());
+ s.setOnLeaveResetHunger(true);
+ assertTrue(s.isOnLeaveResetHunger());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isOnLeaveResetXP()}.
+ */
+ @Test
+ public void testIsOnLeaveResetXP() {
+ assertFalse(s.isOnLeaveResetXP());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setOnLeaveResetXP(boolean)}.
+ */
+ @Test
+ public void testSetOnLeaveResetXP() {
+ assertFalse(s.isOnLeaveResetXP());
+ s.setOnLeaveResetXP(true);
+ assertTrue(s.isOnLeaveResetXP());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isTeleportPlayerToIslandUponIslandCreation()}.
+ */
+ @Test
+ public void testIsTeleportPlayerToIslandUponIslandCreation() {
+ assertTrue(s.isTeleportPlayerToIslandUponIslandCreation());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getMaxCoopSize()}.
+ */
+ @Test
+ public void testGetMaxCoopSize() {
+ assertEquals(4, s.getMaxCoopSize());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setMaxCoopSize(int)}.
+ */
+ @Test
+ public void testSetMaxCoopSize() {
+ s.setMaxCoopSize(12345);
+ assertEquals(12345, s.getMaxCoopSize());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getMaxTrustSize()}.
+ */
+ @Test
+ public void testGetMaxTrustSize() {
+ assertEquals(4, s.getMaxTrustSize());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setMaxTrustSize(int)}.
+ */
+ @Test
+ public void testSetMaxTrustSize() {
+ s.setMaxTrustSize(12345);
+ assertEquals(12345, s.getMaxTrustSize());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDefaultNewPlayerAction()}.
+ */
+ @Test
+ public void testGetDefaultNewPlayerAction() {
+ assertEquals("create", s.getDefaultNewPlayerAction());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDefaultNewPlayerAction(java.lang.String)}.
+ */
+ @Test
+ public void testSetDefaultNewPlayerAction() {
+ s.setDefaultNewPlayerAction("test");
+ assertEquals("test", s.getDefaultNewPlayerAction());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getDefaultPlayerAction()}.
+ */
+ @Test
+ public void testGetDefaultPlayerAction() {
+ assertEquals("go", s.getDefaultPlayerAction());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setDefaultPlayerAction(java.lang.String)}.
+ */
+ @Test
+ public void testSetDefaultPlayerAction() {
+ s.setDefaultPlayerAction("test");
+ assertEquals("test", s.getDefaultPlayerAction());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#getMobLimitSettings()}.
+ */
+ @Test
+ public void testGetMobLimitSettings() {
+ assertTrue(s.getMobLimitSettings().isEmpty());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setMobLimitSettings(java.util.List)}.
+ */
+ @Test
+ public void testSetMobLimitSettings() {
+ s.setMobLimitSettings(List.of("test"));
+ assertEquals("test", s.getMobLimitSettings().get(0));
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isMakeNetherPortals()}.
+ */
+ @Test
+ public void testIsMakeNetherPortals() {
+ assertFalse(s.isMakeNetherPortals());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#isMakeEndPortals()}.
+ */
+ @Test
+ public void testIsMakeEndPortals() {
+ assertTrue(s.isMakeEndPortals());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setMakeNetherPortals(boolean)}.
+ */
+ @Test
+ public void testSetMakeNetherPortals() {
+ s.setMakeNetherPortals(false);
+ assertFalse(s.isMakeNetherPortals());
+ s.setMakeNetherPortals(true);
+ assertTrue(s.isMakeNetherPortals());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.skygrid.Settings#setMakeEndPortals(boolean)}.
+ */
+ @Test
+ public void testSetMakeEndPortals() {
+ s.setMakeEndPortals(false);
+ assertFalse(s.isMakeEndPortals());
+ s.setMakeEndPortals(true);
+ assertTrue(s.isMakeEndPortals());
+ }
+
+
+}