From f78f97da1cf7f9319cf748158be276576365a366 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 23 Apr 2023 11:18:26 -0700 Subject: [PATCH 01/29] Version 1.20.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 039c470..e60b180 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ -LOCAL - 1.19.0 + 1.20.0 BentoBoxWorld_SkyGrid bentobox-world From a28eb9fb2955de8bceeba0bd12c3ae6f21c37c2b Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 23 Apr 2023 11:39:18 -0700 Subject: [PATCH 02/29] Fix settings. Fix homes to be settable. --- .../java/world/bentobox/skygrid/Settings.java | 41 +- src/main/resources/config.yml | 609 +++++++++--------- 2 files changed, 330 insertions(+), 320 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/Settings.java b/src/main/java/world/bentobox/skygrid/Settings.java index b46c5ba..a01c16b 100644 --- a/src/main/java/world/bentobox/skygrid/Settings.java +++ b/src/main/java/world/bentobox/skygrid/Settings.java @@ -145,11 +145,6 @@ 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("Space around new players in blocks (will be rounded up to nearest 16 blocks)") @ConfigEntry(path = "world.space-around-players") private int islandDistance = 1000; @@ -213,15 +208,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 +577,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 +586,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 +1160,7 @@ public int getIslandZOffset() { @Override public int getMaxHomes() { - return 0; + return maxHomes; } @Override @@ -1628,4 +1614,11 @@ public boolean isCheckForBlocks() { return false; } + + /** + * @param maxHomes the maxHomes to set + */ + public void setMaxHomes(int maxHomes) { + this.maxHomes = maxHomes; + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 329f8e6..0b5fa37 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: @@ -661,322 +661,327 @@ world: # Chests have different items in them in different world types. # Over world blocks. Beware of making too many chests, they can lag a lot. blocks: - ACACIA_LEAVES: 8 - ACACIA_LOG: 20 - ACACIA_PLANKS: 1 - ACACIA_SAPLING: 17 - ACACIA_WOOD: 16 - ALLIUM: 12 - AMETHYST_BLOCK: 1 - AMETHYST_CLUSTER: 1 - ANDESITE: 90 - AZALEA_LEAVES: 1 - AZALEA: 1 - AZURE_BLUET: 1 - BARREL: 1 - BEE_NEST: 1 - BEETROOTS: 9 - BIRCH_LEAVES: 9 - BIRCH_LOG: 2 - BIRCH_PLANKS: 1 - BIRCH_SAPLING: 8 - BIRCH_WOOD: 16 - BLACK_CONCRETE: 1 - BLACK_GLAZED_TERRACOTTA: 1 - BLACK_STAINED_GLASS: 1 - BLACK_TERRACOTTA: 1 + BROWN_MUSHROOM: 8 + STONE_BRICKS: 1 + DIRT_PATH: 7 + MAGENTA_TERRACOTTA: 1 + RED_SAND: 20 + FROSTED_ICE: 1 + SMALL_AMETHYST_BUD: 1 + SPRUCE_PLANKS: 1 + POWDER_SNOW_CAULDRON: 1 + GREEN_GLAZED_TERRACOTTA: 1 + EXPOSED_CUT_COPPER: 1 + WATER_CAULDRON: 1 + GREEN_WOOL: 1 BLACK_WOOL: 1 - BLUE_CONCRETE: 1 - BLUE_GLAZED_TERRACOTTA: 1 - BLUE_ICE: 1 + PURPLE_CONCRETE: 1 + LARGE_AMETHYST_BUD: 1 + OAK_WOOD: 19 + WHITE_TULIP: 2 + GRAY_STAINED_GLASS: 1 + CACTUS: 6 + STICKY_PISTON: 1 BLUE_ORCHID: 1 + SMOOTH_QUARTZ: 1 + STRIPPED_ACACIA_WOOD: 10 + PUMPKIN: 9 + STRIPPED_BIRCH_LOG: 10 + LIGHT_BLUE_TERRACOTTA: 1 + WHEAT: 4 + BROWN_WOOL: 1 BLUE_STAINED_GLASS: 1 + PINK_CONCRETE: 1 + STRIPPED_BIRCH_WOOD: 10 + CRACKED_STONE_BRICKS: 1 + SLIME_BLOCK: 1 + ORANGE_TERRACOTTA: 1 + BLACK_CONCRETE: 1 + RED_MUSHROOM: 8 + WAXED_WEATHERED_COPPER: 1 + SPRUCE_SAPLING: 2 + AZALEA: 1 + LIGHT_BLUE_STAINED_GLASS: 1 + MUSHROOM_STEM: 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 + JUNGLE_PLANKS: 1 BROWN_MUSHROOM_BLOCK: 1 - BROWN_MUSHROOM: 8 - BROWN_STAINED_GLASS: 1 - BROWN_TERRACOTTA: 1 - BROWN_WOOL: 1 - BUBBLE_CORAL_BLOCK: 1 - CACTUS: 6 - CALCITE: 1 - CHEST: 5 - CHISELED_DEEPSLATE: 1 - CHISELED_QUARTZ_BLOCK: 1 - CHISELED_RED_SANDSTONE: 1 + BLACK_STAINED_GLASS: 1 + MAGENTA_GLAZED_TERRACOTTA: 1 + COBBLESTONE: 1 + REDSTONE_ORE: 3 + POINTED_DRIPSTONE: 1 + WAXED_EXPOSED_COPPER: 1 + DEAD_FIRE_CORAL_BLOCK: 1 + WHITE_GLAZED_TERRACOTTA: 1 CHISELED_SANDSTONE: 1 - CHISELED_STONE_BRICKS: 1 - CLAY: 5 - COAL_BLOCK: 1 + LIGHT_GRAY_TERRACOTTA: 1 + DARK_OAK_SAPLING: 3 + WAXED_OXIDIZED_COPPER: 1 + GRASS_BLOCK: 200 + RED_WOOL: 1 + EMERALD_ORE: 5 + MAGENTA_STAINED_GLASS: 1 COAL_ORE: 70 - COARSE_DIRT: 17 - COBBLED_DEEPSLATE: 1 - COBBLESTONE: 1 - COBWEB: 7 - COMPOSTER: 1 + ROOTED_DIRT: 1 + POLISHED_ANDESITE: 1 + SUNFLOWER: 3 + LIGHT_BLUE_GLAZED_TERRACOTTA: 1 + PINK_STAINED_GLASS: 1 + OXIDIZED_COPPER: 1 + INFESTED_COBBLESTONE: 1 + DIORITE: 2 + BLUE_ICE: 1 + SCAFFOLDING: 1 + LIGHT_BLUE_CONCRETE: 1 + STRIPPED_OAK_WOOD: 10 + HORN_CORAL_BLOCK: 1 + CYAN_WOOL: 1 + DARK_OAK_WOOD: 18 + GOLD_ORE: 3 + POLISHED_BLACKSTONE: 1 COPPER_BLOCK: 1 - COPPER_ORE: 1 + CLAY: 5 + TUBE_CORAL_BLOCK: 1 + LILAC: 7 + TARGET: 1 + DRIPSTONE_BLOCK: 1 + DARK_PRISMARINE: 3 + STRIPPED_JUNGLE_LOG: 10 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 + BUBBLE_CORAL_BLOCK: 1 + BLUE_GLAZED_TERRACOTTA: 1 + ACACIA_LEAVES: 8 + STRIPPED_SPRUCE_WOOD: 10 + LIGHT_GRAY_CONCRETE: 1 + YELLOW_TERRACOTTA: 1 + GRANITE: 50 + SAND: 50 + CHISELED_RED_SANDSTONE: 1 + JUNGLE_LEAVES: 10 + JUNGLE_WOOD: 20 + BROWN_TERRACOTTA: 1 + RED_TULIP: 3 + JUNGLE_LOG: 17 + PINK_GLAZED_TERRACOTTA: 1 + HAY_BLOCK: 1 + MOSSY_STONE_BRICKS: 1 + PRISMARINE: 3 DANDELION: 16 + RAW_COPPER_BLOCK: 1 + DEAD_TUBE_CORAL_BLOCK: 1 + AZALEA_LEAVES: 1 + SMOOTH_SANDSTONE: 1 + RED_GLAZED_TERRACOTTA: 1 + ALLIUM: 12 + OAK_SAPLING: 11 + PEONY: 7 + LAVA: 5 + CHISELED_DEEPSLATE: 1 + AMETHYST_CLUSTER: 1 + OXEYE_DAISY: 6 + GRAY_CONCRETE: 1 DARK_OAK_LEAVES: 9 - DARK_OAK_LOG: 10 - DARK_OAK_PLANKS: 1 - DARK_OAK_SAPLING: 3 - DARK_OAK_WOOD: 18 - DARK_PRISMARINE: 3 + GRAVEL: 20 + WAXED_OXIDIZED_CUT_COPPER: 1 + SEA_LANTERN: 1 + MOSS_BLOCK: 1 + MELON: 15 + HONEYCOMB_BLOCK: 1 + TERRACOTTA: 1 + GREEN_CONCRETE: 1 + END_STONE_BRICKS: 1 + COBWEB: 7 + COARSE_DIRT: 17 + CYAN_STAINED_GLASS: 1 + LIGHT_GRAY_GLAZED_TERRACOTTA: 1 + SMOOTH_STONE: 1 + LAPIS_ORE: 6 + ORANGE_CONCRETE: 1 + OAK_LOG: 10 + STRIPPED_JUNGLE_WOOD: 10 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 + TINTED_GLASS: 1 + WAXED_COPPER_BLOCK: 1 + BIRCH_PLANKS: 1 + DIAMOND_ORE: 1 DEEPSLATE_COPPER_ORE: 1 - DEEPSLATE_DIAMOND_ORE: 1 + CYAN_CONCRETE: 1 + CHISELED_QUARTZ_BLOCK: 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 - DIORITE: 2 - DIRT_PATH: 7 - DIRT: 1 - DRIPSTONE_BLOCK: 1 - EMERALD_ORE: 5 - END_STONE_BRICKS: 1 + OAK_LEAVES: 4 + IRON_ORE: 10 + PURPLE_GLAZED_TERRACOTTA: 1 + WHITE_CONCRETE: 1 + SPONGE: 1 + STONE: 180 + YELLOW_WOOL: 1 + ROSE_BUSH: 8 + STRIPPED_SPRUCE_LOG: 10 EXPOSED_COPPER: 1 - EXPOSED_CUT_COPPER: 1 - FARMLAND: 7 + SANDSTONE: 120 + SMOOTH_RED_SANDSTONE: 1 + BROWN_STAINED_GLASS: 1 + ACACIA_LOG: 20 + ORANGE_GLAZED_TERRACOTTA: 1 + BRICKS: 1 FERN: 4 - FIRE_CORAL_BLOCK: 1 - FROSTED_ICE: 1 - GLASS: 1 - 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 + WET_SPONGE: 1 + TNT: 1 + BOOKSHELF: 10 + PINK_TULIP: 8 + POLISHED_GRANITE: 1 + STRIPPED_ACACIA_LOG: 10 + RAW_IRON_BLOCK: 1 JUNGLE_SAPLING: 19 - JUNGLE_WOOD: 20 - LAPIS_ORE: 6 - LARGE_AMETHYST_BUD: 1 - LARGE_FERN: 8 - LAVA_CAULDRON: 1 - 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 - LILAC: 7 - LIME_CONCRETE: 1 - LIME_GLAZED_TERRACOTTA: 1 - LIME_STAINED_GLASS: 1 - LIME_TERRACOTTA: 1 + YELLOW_STAINED_GLASS: 1 + DEAD_BUBBLE_CORAL_BLOCK: 1 + SPRUCE_WOOD: 9 + DEEPSLATE: 1 + BLACK_TERRACOTTA: 1 + BEE_NEST: 1 + STRIPPED_OAK_LOG: 10 + CHEST: 5 + SPRUCE_LOG: 3 LIME_WOOL: 1 - LODESTONE: 1 - MAGENTA_CONCRETE: 1 - MAGENTA_GLAZED_TERRACOTTA: 1 - MAGENTA_STAINED_GLASS: 1 - MAGENTA_TERRACOTTA: 1 + ORANGE_WOOL: 1 + SCULK_SENSOR: 1 + HONEY_BLOCK: 1 + LIME_TERRACOTTA: 1 + STRIPPED_DARK_OAK_WOOD: 10 + WHITE_WOOL: 1 + GREEN_TERRACOTTA: 1 MEDIUM_AMETHYST_BUD: 1 - MELON: 15 - MOSS_BLOCK: 1 - MOSSY_COBBLESTONE: 1 - MOSSY_STONE_BRICKS: 1 - MUSHROOM_STEM: 1 - 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 + SMALL_DRIPLEAF: 1 + LIME_STAINED_GLASS: 1 + COMPOSTER: 1 + RED_MUSHROOM_BLOCK: 1 ORANGE_STAINED_GLASS: 1 - ORANGE_TERRACOTTA: 1 - ORANGE_TULIP: 10 - ORANGE_WOOL: 1 - OXEYE_DAISY: 6 - OXIDIZED_COPPER: 1 OXIDIZED_CUT_COPPER: 1 - PACKED_ICE: 1 - PEONY: 7 - PETRIFIED_OAK_SLAB: 1 - PINK_CONCRETE: 1 - PINK_GLAZED_TERRACOTTA: 1 - PINK_STAINED_GLASS: 1 - PINK_TERRACOTTA: 1 - PINK_TULIP: 8 - PINK_WOOL: 1 - PODZOL: 4 - POINTED_DRIPSTONE: 1 - POLISHED_ANDESITE: 1 - POLISHED_BASALT: 1 - POLISHED_BLACKSTONE: 1 + GLASS: 1 + TALL_GRASS: 13 POLISHED_DEEPSLATE: 1 - POLISHED_DIORITE: 1 - POLISHED_GRANITE: 1 + DEAD_BUSH: 1 + BLACK_GLAZED_TERRACOTTA: 1 + BLUE_CONCRETE: 1 + PETRIFIED_OAK_SLAB: 1 + REDSTONE_LAMP: 1 + RED_STAINED_GLASS: 1 + GREEN_STAINED_GLASS: 1 + BLUE_WOOL: 1 + DEEPSLATE_REDSTONE_ORE: 1 + FARMLAND: 7 POPPY: 5 - POWDER_SNOW_CAULDRON: 1 + CYAN_TERRACOTTA: 1 + DEEPSLATE_IRON_ORE: 1 + PACKED_ICE: 1 + COAL_BLOCK: 1 + YELLOW_CONCRETE: 1 + WHITE_STAINED_GLASS: 1 PRISMARINE_BRICKS: 1 - PRISMARINE: 3 - PUMPKIN: 9 - PURPLE_CONCRETE: 1 - PURPLE_GLAZED_TERRACOTTA: 1 - PURPLE_TERRACOTTA: 1 - RAW_COPPER_BLOCK: 1 + SMOOTH_BASALT: 1 + WEATHERED_CUT_COPPER: 1 + LIGHT_BLUE_WOOL: 1 + DARK_OAK_LOG: 10 + CALCITE: 1 RAW_GOLD_BLOCK: 1 - RAW_IRON_BLOCK: 1 - RED_CONCRETE: 1 - RED_GLAZED_TERRACOTTA: 1 - RED_MUSHROOM_BLOCK: 1 - RED_MUSHROOM: 8 - RED_SAND: 20 - RED_SANDSTONE: 19 - RED_STAINED_GLASS: 1 - RED_TERRACOTTA: 1 - RED_TULIP: 3 - RED_WOOL: 1 + CHISELED_STONE_BRICKS: 1 + COPPER_ORE: 1 + PODZOL: 4 + WAXED_CUT_COPPER: 1 REDSTONE_BLOCK: 1 - REDSTONE_LAMP: 1 - REDSTONE_ORE: 3 - ROOTED_DIRT: 1 - 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 + DEEPSLATE_LAPIS_ORE: 1 + GRASS: 100 + WAXED_WEATHERED_CUT_COPPER: 1 + LARGE_FERN: 8 + PINK_TERRACOTTA: 1 + FIRE_CORAL_BLOCK: 1 + PURPLE_TERRACOTTA: 1 + GRAY_GLAZED_TERRACOTTA: 1 SNOW: 1 + SUGAR_CANE: 4 + DIRT: 1 + COBBLED_DEEPSLATE: 1 + BONE_BLOCK: 1 SPAWNER: 5 - SPONGE: 1 - SPRUCE_LEAVES: 9 - SPRUCE_LOG: 3 - SPRUCE_PLANKS: 1 - 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 + POLISHED_BASALT: 1 + POLISHED_DIORITE: 1 + MOSSY_COBBLESTONE: 1 + CUT_SANDSTONE: 1 + WHITE_TERRACOTTA: 1 + GRAY_TERRACOTTA: 1 + DEEPSLATE_DIAMOND_ORE: 1 + DEAD_HORN_CORAL_BLOCK: 1 + AMETHYST_BLOCK: 1 + DARK_OAK_PLANKS: 1 + SHROOMLIGHT: 1 + ACACIA_WOOD: 16 + CYAN_GLAZED_TERRACOTTA: 1 + CUT_COPPER: 1 + LIGHT_GRAY_STAINED_GLASS: 1 + GRAY_WOOL: 1 + PINK_WOOL: 1 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 - 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 + OBSIDIAN: 1 + LIGHT_GRAY_WOOL: 1 + AZURE_BLUET: 1 + LIME_GLAZED_TERRACOTTA: 1 + RED_CONCRETE: 1 WEATHERED_COPPER: 1 - WEATHERED_CUT_COPPER: 1 - WET_SPONGE: 1 - WHEAT: 4 - WHITE_CONCRETE: 1 - WHITE_GLAZED_TERRACOTTA: 1 - WHITE_STAINED_GLASS: 1 - WHITE_TERRACOTTA: 1 - WHITE_TULIP: 2 - WHITE_WOOL: 1 - YELLOW_CONCRETE: 1 + OAK_PLANKS: 1 + ACACIA_SAPLING: 17 + CUT_RED_SANDSTONE: 1 + BIRCH_SAPLING: 8 + LIME_CONCRETE: 1 + DEEPSLATE_COAL_ORE: 1 + BEETROOTS: 9 + BIRCH_LOG: 2 + RED_TERRACOTTA: 1 + BIRCH_WOOD: 16 + ACACIA_PLANKS: 1 + MYCELIUM: 2 + BROWN_CONCRETE: 1 + RED_SANDSTONE: 19 + LODESTONE: 1 + WAXED_EXPOSED_CUT_COPPER: 1 + MAGENTA_CONCRETE: 1 + SPRUCE_LEAVES: 9 + SNOW_BLOCK: 1 + BIRCH_LEAVES: 9 + ORANGE_TULIP: 10 + ANDESITE: 90 + BARREL: 1 + BROWN_GLAZED_TERRACOTTA: 1 + DEEPSLATE_GOLD_ORE: 1 + LAVA_CAULDRON: 1 + BRAIN_CORAL_BLOCK: 1 YELLOW_GLAZED_TERRACOTTA: 1 - YELLOW_STAINED_GLASS: 1 - YELLOW_TERRACOTTA: 1 - YELLOW_WOOL: 1 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 + STRIPPED_WARPED_HYPHAE: 100 LAVA: 1 OBSIDIAN: 10 NETHER_QUARTZ_ORE: 15 NETHERITE_BLOCK: 10 + STRIPPED_CRIMSON_HYPHAE: 100 MAGMA_BLOCK: 1 + STRIPPED_WARPED_STEM: 100 GRAVEL: 10 + GILDED_BLACKSTONE: 10 CRACKED_POLISHED_BLACKSTONE_BRICKS: 12 BASALT: 20 - GILDED_BLACKSTONE: 10 WARPED_WART_BLOCK: 1 CRACKED_NETHER_BRICKS: 10 + CRIMSON_PLANKS: 100 COBWEB: 7 WARPED_NYLIUM: 1 + STRIPPED_CRIMSON_STEM: 100 GLOWSTONE: 2 CHISELED_POLISHED_BLACKSTONE: 12 ANCIENT_DEBRIS: 10 @@ -990,8 +995,8 @@ world: BONE_BLOCK: 10 SPAWNER: 2 WARPED_ROOTS: 1 - WARPED_FUNGUS: 1 CHEST: 15 + WARPED_FUNGUS: 1 NETHER_WART: 19 NETHERRACK: 200 WARPED_PLANKS: 1 @@ -1000,12 +1005,6 @@ world: CHISELED_NETHER_BRICKS: 12 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 - # 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. @@ -1048,9 +1047,6 @@ 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 # 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) @@ -1092,6 +1088,7 @@ world: BREEDING: true HURT_VILLAGERS: true TREES_GROWING_OUTSIDE_RANGE: false + HARVEST: true FROST_WALKER: true TURTLE_EGGS: true COLLECT_LAVA: true @@ -1104,6 +1101,7 @@ world: ARMOR_STAND: true NAME_TAG: true CLEAN_SUPER_FLAT: false + CHANGE_SETTINGS: true TRADING: true EGGS: true ITEM_DROP: true @@ -1112,6 +1110,7 @@ world: ENTER_EXIT_MESSAGES: true FLINT_AND_STEEL: true NETHER_PORTAL: true + SCULK_SENSOR: true REMOVE_END_EXIT_ISLAND: true LECTERN: true SHULKER_BOX: true @@ -1123,11 +1122,13 @@ world: OBSIDIAN_SCOOPING: true TNT_PRIMING: true COLLECT_WATER: true + AXOLOTL_SCOOPING: true BUTTON: true COMPOSTER: true FIRE_EXTINGUISH: true COMMAND_RANKS: true BEACON: true + ALLAY: true TRAPDOOR: true PRESSURE_PLATE: true EXPERIENCE_BOTTLE_THROWING: true @@ -1135,6 +1136,7 @@ world: DYE: true PLACE_BLOCKS: true ITEM_FRAME: true + CROP_PLANTING: true CRAFTING: true REMOVE_MOBS: true ENCHANTING: true @@ -1145,6 +1147,7 @@ world: SPAWN_EGGS: true MILKING: true DISPENSER: true + SCULK_SHRIEKER: true GATE: true EXPERIENCE_PICKUP: true PREVENT_TELEPORT_WHEN_FALLING: false @@ -1158,6 +1161,7 @@ world: JUKEBOX: true POTION_THROWING: true BARREL: true + COLLECT_POWDERED_SNOW: true # 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 @@ -1178,6 +1182,7 @@ world: END_PORTAL: 500 BREEDING: 500 HURT_VILLAGERS: 500 + HARVEST: 500 FROST_WALKER: 500 TURTLE_EGGS: 500 COLLECT_LAVA: 500 @@ -1189,6 +1194,7 @@ world: HURT_MONSTERS: 500 NAME_TAG: 500 ARMOR_STAND: 500 + CHANGE_SETTINGS: 1000 TRADING: 500 EGGS: 500 ITEM_DROP: 500 @@ -1196,6 +1202,7 @@ world: NOTE_BLOCK: 500 FLINT_AND_STEEL: 500 NETHER_PORTAL: 500 + SCULK_SENSOR: 500 LECTERN: 500 SHULKER_BOX: 500 ITEM_PICKUP: 500 @@ -1204,11 +1211,13 @@ world: BREWING: 500 TNT_PRIMING: 500 COLLECT_WATER: 500 + AXOLOTL_SCOOPING: 500 COMPOSTER: 500 BUTTON: 500 FIRE_EXTINGUISH: 500 COMMAND_RANKS: 500 BEACON: 500 + ALLAY: 500 TRAPDOOR: 500 EXPERIENCE_BOTTLE_THROWING: 500 PRESSURE_PLATE: 500 @@ -1216,6 +1225,7 @@ world: HIVE: 500 PLACE_BLOCKS: 500 ITEM_FRAME: 500 + CROP_PLANTING: 500 CRAFTING: 500 ENCHANTING: 500 SHEARING: 500 @@ -1225,6 +1235,7 @@ world: BED: 500 MILKING: 500 DISPENSER: 500 + SCULK_SHRIEKER: 500 GATE: 500 EXPERIENCE_PICKUP: 500 HOPPER: 500 @@ -1236,20 +1247,24 @@ world: BARREL: 500 POTION_THROWING: 500 JUKEBOX: 500 + COLLECT_POWDERED_SNOW: 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 + ENDERMAN_TELEPORT: true ANIMAL_NATURAL_SPAWN: true MONSTER_NATURAL_SPAWN: true - FIRE_IGNITE: true + SHULKER_TELEPORT: true FIRE_SPREAD: true - ANIMAL_SPAWNERS_SPAWN: true FIRE_BURNING: true PVP_OVERWORLD: false + MONSTER_SPAWNERS_SPAWN: true + TNT_DAMAGE: true + FIRE_IGNITE: true + ANIMAL_SPAWNERS_SPAWN: true + BLOCK_EXPLODE_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 +1279,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 +1352,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 +1431,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 From 6cf23f7be3d020c7d5a8e407a87b281e590243e6 Mon Sep 17 00:00:00 2001 From: tastybento Date: Wed, 7 Jun 2023 19:27:31 -0700 Subject: [PATCH 03/29] Added Settings class test --- pom.xml | 67 +- .../world/bentobox/skygrid/SettingsTest.java | 1461 +++++++++++++++++ 2 files changed, 1513 insertions(+), 15 deletions(-) create mode 100644 src/test/java/world/bentobox/skygrid/SettingsTest.java diff --git a/pom.xml b/pom.xml index e60b180..cc7b0a0 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ UTF-8 17 - 2.0.2 + 2.0.9 1.19.4-R0.1-SNAPSHOT 1.23.0 @@ -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,17 +317,17 @@ 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.7 true 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..5fef784 --- /dev/null +++ b/src/test/java/world/bentobox/skygrid/SettingsTest.java @@ -0,0 +1,1461 @@ +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.After; +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; + + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + s = new Settings(); + } + + /** + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + } + + /** + * 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(List.of("thing")); + 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(List.of("thing")); + 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(List.of("thing")); + 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() { + assertTrue(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()); + } + + +} From 561f210e7c0e4fc8bee9eb7024efc52d539ae208 Mon Sep 17 00:00:00 2001 From: tastybento Date: Fri, 9 Jun 2023 20:32:17 -0700 Subject: [PATCH 04/29] Changed config to allow probabilities for chest items #62 --- .../java/world/bentobox/skygrid/Settings.java | 22 +- .../skygrid/generators/SkyGridPop.java | 62 +- src/main/resources/config.yml | 1650 ++++++++--------- .../world/bentobox/skygrid/SettingsTest.java | 14 +- 4 files changed, 792 insertions(+), 956 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/Settings.java b/src/main/java/world/bentobox/skygrid/Settings.java index a01c16b..5056093 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.") @@ -1283,42 +1285,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; } diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java index 137b6ba..d40d439 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java @@ -1,9 +1,9 @@ package world.bentobox.skygrid.generators; -import java.util.List; +import java.util.Map.Entry; import java.util.NavigableMap; -import java.util.Objects; import java.util.Random; +import java.util.TreeMap; import org.bukkit.Chunk; import org.bukkit.Material; @@ -28,9 +28,12 @@ public class SkyGridPop extends BlockPopulator { private static final RandomSeries slt = new RandomSeries(27); private final int size; private final SkyGrid addon; - private final List chestItemsWorld; - private final List chestItemsNether; - private final List chestItemsEnd; + 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 Random random; private Chunk chunk; @@ -49,9 +52,18 @@ public SkyGridPop(SkyGrid addon) { this.addon = addon; this.size = 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()) { + worldTotal += en.getValue(); + chestItemsWorld.put(worldTotal, en.getKey()); + } + for (Entry en : addon.getSettings().getChestItemsNether().entrySet()) { + netherTotal += en.getValue(); + chestItemsNether.put(netherTotal, en.getKey()); + } + for (Entry en : addon.getSettings().getChestItemsEnd().entrySet()) { + endTotal += en.getValue(); + chestItemsEnd.put(endTotal, en.getKey()); + } 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"); @@ -154,7 +166,7 @@ private void setSaplingType(Block b) { break; case DESERT: b.setType(Material.DEAD_BUSH, false); - break; + break; case SAVANNA: b.setType(Material.ACACIA_SAPLING, false); // Acacia break; @@ -180,25 +192,25 @@ private void setChest(Block b) { 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); + 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/resources/config.yml b/src/main/resources/config.yml index 0b5fa37..5acba0c 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -27,634 +27,464 @@ 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 + REDSTONE: 100 + SADDLE: 100 + MINECART: 100 + CHEST_MINECART: 100 + FURNACE_MINECART: 100 + TNT_MINECART: 100 + HOPPER_MINECART: 100 + CARROT_ON_A_STICK: 100 + WARPED_FUNGUS_ON_A_STICK: 100 + ELYTRA: 100 + OAK_BOAT: 100 + OAK_CHEST_BOAT: 100 + SPRUCE_BOAT: 100 + SPRUCE_CHEST_BOAT: 100 + BIRCH_BOAT: 100 + BIRCH_CHEST_BOAT: 100 + JUNGLE_BOAT: 100 + JUNGLE_CHEST_BOAT: 100 + ACACIA_BOAT: 100 + ACACIA_CHEST_BOAT: 100 + CHERRY_BOAT: 100 + CHERRY_CHEST_BOAT: 100 + DARK_OAK_BOAT: 100 + DARK_OAK_CHEST_BOAT: 100 + MANGROVE_BOAT: 100 + MANGROVE_CHEST_BOAT: 100 + BAMBOO_RAFT: 100 + BAMBOO_CHEST_RAFT: 100 + TURTLE_HELMET: 100 + SCUTE: 100 + FLINT_AND_STEEL: 100 + APPLE: 100 + BOW: 100 + ARROW: 100 + COAL: 100 + CHARCOAL: 100 + DIAMOND: 100 + EMERALD: 100 + LAPIS_LAZULI: 100 + QUARTZ: 100 + AMETHYST_SHARD: 100 + RAW_IRON: 100 + IRON_INGOT: 100 + RAW_COPPER: 100 + COPPER_INGOT: 100 + RAW_GOLD: 100 + GOLD_INGOT: 100 + WOODEN_SWORD: 100 + WOODEN_SHOVEL: 100 + WOODEN_PICKAXE: 100 + WOODEN_AXE: 100 + WOODEN_HOE: 100 + STONE_SWORD: 100 + STONE_SHOVEL: 100 + STONE_PICKAXE: 100 + STONE_AXE: 100 + STONE_HOE: 100 + GOLDEN_SWORD: 100 + GOLDEN_SHOVEL: 100 + GOLDEN_PICKAXE: 100 + GOLDEN_AXE: 100 + GOLDEN_HOE: 100 + IRON_SWORD: 100 + IRON_SHOVEL: 100 + IRON_PICKAXE: 100 + IRON_AXE: 100 + IRON_HOE: 100 + DIAMOND_SWORD: 100 + DIAMOND_SHOVEL: 100 + DIAMOND_PICKAXE: 10 + DIAMOND_AXE: 10 + DIAMOND_HOE: 10 + STICK: 10 + BOWL: 10 + MUSHROOM_STEW: 10 + STRING: 10 + FEATHER: 10 + GUNPOWDER: 10 + WHEAT_SEEDS: 10 + BREAD: 10 + LEATHER_HELMET: 10 + LEATHER_CHESTPLATE: 10 + LEATHER_LEGGINGS: 10 + LEATHER_BOOTS: 10 + CHAINMAIL_HELMET: 10 + CHAINMAIL_CHESTPLATE: 10 + CHAINMAIL_LEGGINGS: 10 + CHAINMAIL_BOOTS: 10 + IRON_HELMET: 10 + IRON_CHESTPLATE: 10 + IRON_LEGGINGS: 10 + IRON_BOOTS: 10 + DIAMOND_HELMET: 10 + DIAMOND_CHESTPLATE: 10 + DIAMOND_LEGGINGS: 10 + DIAMOND_BOOTS: 10 + GOLDEN_HELMET: 10 + GOLDEN_CHESTPLATE: 10 + GOLDEN_LEGGINGS: 10 + GOLDEN_BOOTS: 10 + NETHERITE_HELMET: 1 + NETHERITE_CHESTPLATE: 1 + NETHERITE_LEGGINGS: 1 + NETHERITE_BOOTS: 1 + FLINT: 10 + PORKCHOP: 10 + COOKED_PORKCHOP: 10 + PAINTING: 10 + GOLDEN_APPLE: 10 + ENCHANTED_GOLDEN_APPLE: 10 + BUCKET: 10 + WATER_BUCKET: 10 + LAVA_BUCKET: 10 + POWDER_SNOW_BUCKET: 10 + SNOWBALL: 10 + LEATHER: 10 + MILK_BUCKET: 10 + PUFFERFISH_BUCKET: 10 + SALMON_BUCKET: 10 + COD_BUCKET: 10 + TROPICAL_FISH_BUCKET: 10 + AXOLOTL_BUCKET: 10 + TADPOLE_BUCKET: 10 + BRICK: 10 + CLAY_BALL: 10 + PAPER: 10 + BOOK: 10 + SLIME_BALL: 10 + EGG: 10 + COMPASS: 10 + RECOVERY_COMPASS: 10 + BUNDLE: 10 + FISHING_ROD: 10 + CLOCK: 10 + SPYGLASS: 10 + COD: 10 + SALMON: 10 + TROPICAL_FISH: 10 + PUFFERFISH: 10 + COOKED_COD: 10 + COOKED_SALMON: 10 + INK_SAC: 10 + GLOW_INK_SAC: 10 + COCOA_BEANS: 10 + WHITE_DYE: 10 + ORANGE_DYE: 10 + MAGENTA_DYE: 10 + LIGHT_BLUE_DYE: 10 + YELLOW_DYE: 10 + LIME_DYE: 10 + PINK_DYE: 10 + GRAY_DYE: 10 + LIGHT_GRAY_DYE: 10 + CYAN_DYE: 10 + PURPLE_DYE: 10 + BLUE_DYE: 10 + BROWN_DYE: 10 + GREEN_DYE: 10 + RED_DYE: 10 + BLACK_DYE: 10 + BONE_MEAL: 10 + BONE: 10 + SUGAR: 10 + COOKIE: 10 + SHEARS: 10 + MELON_SLICE: 10 + DRIED_KELP: 10 + PUMPKIN_SEEDS: 10 + MELON_SEEDS: 10 + BEEF: 10 + COOKED_BEEF: 10 + CHICKEN: 10 + COOKED_CHICKEN: 10 + ROTTEN_FLESH: 10 + ENDER_PEARL: 10 + GOLD_NUGGET: 10 + GLASS_BOTTLE: 10 + SPIDER_EYE: 10 + FERMENTED_SPIDER_EYE: 10 + ENDER_EYE: 10 + GLISTERING_MELON_SLICE: 10 + ALLAY_SPAWN_EGG: 10 + AXOLOTL_SPAWN_EGG: 10 + BAT_SPAWN_EGG: 10 + BEE_SPAWN_EGG: 10 + CAT_SPAWN_EGG: 10 + CAMEL_SPAWN_EGG: 10 + CAVE_SPIDER_SPAWN_EGG: 10 + CHICKEN_SPAWN_EGG: 10 + COD_SPAWN_EGG: 10 + COW_SPAWN_EGG: 10 + CREEPER_SPAWN_EGG: 10 + DOLPHIN_SPAWN_EGG: 10 + DONKEY_SPAWN_EGG: 10 + DROWNED_SPAWN_EGG: 10 + ELDER_GUARDIAN_SPAWN_EGG: 10 + ENDERMAN_SPAWN_EGG: 10 + ENDERMITE_SPAWN_EGG: 10 + EVOKER_SPAWN_EGG: 10 + FOX_SPAWN_EGG: 10 + FROG_SPAWN_EGG: 10 + GLOW_SQUID_SPAWN_EGG: 10 + GOAT_SPAWN_EGG: 10 + GUARDIAN_SPAWN_EGG: 10 + HORSE_SPAWN_EGG: 10 + HUSK_SPAWN_EGG: 10 + IRON_GOLEM_SPAWN_EGG: 10 + LLAMA_SPAWN_EGG: 10 + MOOSHROOM_SPAWN_EGG: 10 + MULE_SPAWN_EGG: 10 + OCELOT_SPAWN_EGG: 10 + PANDA_SPAWN_EGG: 10 + PARROT_SPAWN_EGG: 10 + PHANTOM_SPAWN_EGG: 10 + PIG_SPAWN_EGG: 10 + PILLAGER_SPAWN_EGG: 10 + POLAR_BEAR_SPAWN_EGG: 10 + PUFFERFISH_SPAWN_EGG: 10 + RABBIT_SPAWN_EGG: 10 + RAVAGER_SPAWN_EGG: 10 + SALMON_SPAWN_EGG: 10 + SHEEP_SPAWN_EGG: 10 + SILVERFISH_SPAWN_EGG: 10 + SKELETON_SPAWN_EGG: 10 + SLIME_SPAWN_EGG: 10 + SNIFFER_SPAWN_EGG: 10 + SNOW_GOLEM_SPAWN_EGG: 10 + SPIDER_SPAWN_EGG: 10 + SQUID_SPAWN_EGG: 10 + STRAY_SPAWN_EGG: 10 + TADPOLE_SPAWN_EGG: 10 + TRADER_LLAMA_SPAWN_EGG: 10 + TROPICAL_FISH_SPAWN_EGG: 10 + TURTLE_SPAWN_EGG: 10 + VEX_SPAWN_EGG: 10 + VILLAGER_SPAWN_EGG: 10 + VINDICATOR_SPAWN_EGG: 10 + WANDERING_TRADER_SPAWN_EGG: 10 + WARDEN_SPAWN_EGG: 1 + WITCH_SPAWN_EGG: 10 + WITHER_SPAWN_EGG: 1 + WOLF_SPAWN_EGG: 10 + ZOMBIE_SPAWN_EGG: 10 + ZOMBIE_HORSE_SPAWN_EGG: 10 + ZOMBIE_VILLAGER_SPAWN_EGG: 10 + ZOMBIFIED_PIGLIN_SPAWN_EGG: 10 + EXPERIENCE_BOTTLE: 10 + FIRE_CHARGE: 10 + WRITABLE_BOOK: 10 + ITEM_FRAME: 10 + GLOW_ITEM_FRAME: 10 + CARROT: 10 + POTATO: 10 + BAKED_POTATO: 10 + POISONOUS_POTATO: 10 + MAP: 10 + GOLDEN_CARROT: 10 + NETHER_STAR: 10 + PUMPKIN_PIE: 10 + FIREWORK_ROCKET: 10 + FIREWORK_STAR: 10 + ENCHANTED_BOOK: 10 + NETHER_BRICK: 10 + PRISMARINE_SHARD: 10 + PRISMARINE_CRYSTALS: 10 + RABBIT: 10 + COOKED_RABBIT: 10 + RABBIT_STEW: 10 + RABBIT_FOOT: 10 + RABBIT_HIDE: 10 + ARMOR_STAND: 10 + LEAD: 10 + NAME_TAG: 10 + MUTTON: 10 + COOKED_MUTTON: 10 + END_CRYSTAL: 10 + CHORUS_FRUIT: 10 + POPPED_CHORUS_FRUIT: 10 + TORCHFLOWER_SEEDS: 10 + BEETROOT: 10 + BEETROOT_SEEDS: 10 + BEETROOT_SOUP: 10 + DRAGON_BREATH: 10 + SPLASH_POTION: 10 + SPECTRAL_ARROW: 10 + TIPPED_ARROW: 10 + LINGERING_POTION: 10 + SHIELD: 10 + TOTEM_OF_UNDYING: 1 + IRON_NUGGET: 10 + KNOWLEDGE_BOOK: 10 + MUSIC_DISC_13: 10 + MUSIC_DISC_CAT: 10 + MUSIC_DISC_BLOCKS: 10 + MUSIC_DISC_CHIRP: 10 + MUSIC_DISC_FAR: 10 + MUSIC_DISC_MALL: 10 + MUSIC_DISC_MELLOHI: 10 + MUSIC_DISC_STAL: 10 + MUSIC_DISC_STRAD: 10 + MUSIC_DISC_WARD: 10 + MUSIC_DISC_11: 10 + MUSIC_DISC_WAIT: 10 + MUSIC_DISC_OTHERSIDE: 10 + MUSIC_DISC_5: 10 + MUSIC_DISC_PIGSTEP: 10 + DISC_FRAGMENT_5: 10 + TRIDENT: 10 + PHANTOM_MEMBRANE: 10 + NAUTILUS_SHELL: 10 + HEART_OF_THE_SEA: 10 + CROSSBOW: 10 + SUSPICIOUS_STEW: 10 + FLOWER_BANNER_PATTERN: 10 + CREEPER_BANNER_PATTERN: 10 + SKULL_BANNER_PATTERN: 10 + MOJANG_BANNER_PATTERN: 10 + GLOBE_BANNER_PATTERN: 10 + GOAT_HORN: 10 + SWEET_BERRIES: 10 + GLOW_BERRIES: 10 + HONEYCOMB: 10 + HONEY_BOTTLE: 10 + ECHO_SHARD: 10 + BRUSH: 10 + NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 + SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + POTTERY_SHARD_ARCHER: 10 + POTTERY_SHARD_PRIZE: 10 + POTTERY_SHARD_ARMS_UP: 10 + POTTERY_SHARD_SKULL: 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 + MINECART: 10 + CHEST_MINECART: 10 + FURNACE_MINECART: 10 + TNT_MINECART: 10 + HOPPER_MINECART: 10 + CARROT_ON_A_STICK: 10 + WARPED_FUNGUS_ON_A_STICK: 10 + ELYTRA: 10 + FLINT_AND_STEEL: 10 + APPLE: 10 + BOW: 10 + ARROW: 10 + DIAMOND: 10 + EMERALD: 10 + QUARTZ: 10 + RAW_GOLD: 10 + GOLD_INGOT: 10 + NETHERITE_INGOT: 10 + NETHERITE_SCRAP: 10 + GOLDEN_SWORD: 10 + GOLDEN_SHOVEL: 10 + GOLDEN_PICKAXE: 10 + GOLDEN_AXE: 10 + GOLDEN_HOE: 10 + NETHERITE_SWORD: 1 + NETHERITE_SHOVEL: 1 + NETHERITE_PICKAXE: 1 + NETHERITE_AXE: 1 + NETHERITE_HOE: 1 + GOLDEN_HELMET: 10 + GOLDEN_CHESTPLATE: 10 + GOLDEN_LEGGINGS: 10 + GOLDEN_BOOTS: 10 + NETHERITE_HELMET: 1 + NETHERITE_CHESTPLATE: 1 + NETHERITE_LEGGINGS: 1 + NETHERITE_BOOTS: 1 + FLINT: 10 + PORKCHOP: 10 + COOKED_PORKCHOP: 10 + LAVA_BUCKET: 10 + SNOWBALL: 10 + FISHING_ROD: 10 + GLOWSTONE_DUST: 10 + BONE: 10 + ENDER_PEARL: 10 + BLAZE_ROD: 10 + GHAST_TEAR: 10 + GOLD_NUGGET: 10 + BLAZE_POWDER: 10 + MAGMA_CREAM: 10 + ENDER_EYE: 10 + BLAZE_SPAWN_EGG: 10 + ENDERMAN_SPAWN_EGG: 10 + HOGLIN_SPAWN_EGG: 10 + MAGMA_CUBE_SPAWN_EGG: 10 + PIGLIN_SPAWN_EGG: 10 + PIGLIN_BRUTE_SPAWN_EGG: 10 + ZOGLIN_SPAWN_EGG: 10 + EXPERIENCE_BOTTLE: 10 + FIRE_CHARGE: 10 + NETHER_STAR: 1 + NETHER_BRICK: 10 + IRON_HORSE_ARMOR: 10 + GOLDEN_HORSE_ARMOR: 10 + DIAMOND_HORSE_ARMOR: 10 + LEATHER_HORSE_ARMOR: 10 + SPECTRAL_ARROW: 10 + TIPPED_ARROW: 10 + TOTEM_OF_UNDYING: 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 + ELYTRA: 10 + FLINT_AND_STEEL: 10 + APPLE: 10 + BOW: 10 + ARROW: 10 + COAL: 10 + CHARCOAL: 10 + DIAMOND: 10 + EMERALD: 10 + QUARTZ: 10 + DIAMOND_SWORD: 10 + DIAMOND_SHOVEL: 10 + DIAMOND_PICKAXE: 10 + DIAMOND_AXE: 10 + DIAMOND_HOE: 10 + BREAD: 10 + MAGENTA_DYE: 10 + LIGHT_BLUE_DYE: 10 + PURPLE_DYE: 10 + ENDERMAN_SPAWN_EGG: 10 + SHULKER_SPAWN_EGG: 10 + FIREWORK_ROCKET: 10 + FIREWORK_STAR: 10 + END_CRYSTAL: 10 + CHORUS_FRUIT: 10 + POPPED_CHORUS_FRUIT: 10 + TOTEM_OF_UNDYING: 10 + SHULKER_SHELL: 10 + CROSSBOW: 10 + NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 + SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + SPIRE_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. @@ -662,300 +492,300 @@ world: # Over world blocks. Beware of making too many chests, they can lag a lot. blocks: BROWN_MUSHROOM: 8 - STONE_BRICKS: 1 + STONE_BRICKS: 10 DIRT_PATH: 7 - MAGENTA_TERRACOTTA: 1 + MAGENTA_TERRACOTTA: 10 RED_SAND: 20 - FROSTED_ICE: 1 - SMALL_AMETHYST_BUD: 1 - SPRUCE_PLANKS: 1 - POWDER_SNOW_CAULDRON: 1 - GREEN_GLAZED_TERRACOTTA: 1 - EXPOSED_CUT_COPPER: 1 - WATER_CAULDRON: 1 - GREEN_WOOL: 1 - BLACK_WOOL: 1 - PURPLE_CONCRETE: 1 - LARGE_AMETHYST_BUD: 1 - OAK_WOOD: 19 + FROSTED_ICE: 10 + SMALL_AMETHYST_BUD: 10 + SPRUCE_PLANKS: 10 + POWDER_SNOW_CAULDRON: 10 + GREEN_GLAZED_TERRACOTTA: 10 + EXPOSED_CUT_COPPER: 10 + WATER_CAULDRON: 10 + GREEN_WOOL: 10 + BLACK_WOOL: 10 + PURPLE_CONCRETE: 10 + LARGE_AMETHYST_BUD: 10 + OAK_WOOD: 109 WHITE_TULIP: 2 - GRAY_STAINED_GLASS: 1 + GRAY_STAINED_GLASS: 10 CACTUS: 6 - STICKY_PISTON: 1 - BLUE_ORCHID: 1 - SMOOTH_QUARTZ: 1 - STRIPPED_ACACIA_WOOD: 10 + STICKY_PISTON: 10 + BLUE_ORCHID: 10 + SMOOTH_QUARTZ: 10 + STRIPPED_ACACIA_WOOD: 100 PUMPKIN: 9 - STRIPPED_BIRCH_LOG: 10 - LIGHT_BLUE_TERRACOTTA: 1 + STRIPPED_BIRCH_LOG: 100 + LIGHT_BLUE_TERRACOTTA: 10 WHEAT: 4 - BROWN_WOOL: 1 - BLUE_STAINED_GLASS: 1 - PINK_CONCRETE: 1 - STRIPPED_BIRCH_WOOD: 10 - CRACKED_STONE_BRICKS: 1 - SLIME_BLOCK: 1 - ORANGE_TERRACOTTA: 1 - BLACK_CONCRETE: 1 + BROWN_WOOL: 10 + BLUE_STAINED_GLASS: 10 + PINK_CONCRETE: 10 + STRIPPED_BIRCH_WOOD: 100 + CRACKED_STONE_BRICKS: 10 + SLIME_BLOCK: 10 + ORANGE_TERRACOTTA: 10 + BLACK_CONCRETE: 10 RED_MUSHROOM: 8 - WAXED_WEATHERED_COPPER: 1 + WAXED_WEATHERED_COPPER: 10 SPRUCE_SAPLING: 2 - AZALEA: 1 - LIGHT_BLUE_STAINED_GLASS: 1 - MUSHROOM_STEM: 1 - BLUE_TERRACOTTA: 1 - JUNGLE_PLANKS: 1 - BROWN_MUSHROOM_BLOCK: 1 - BLACK_STAINED_GLASS: 1 - MAGENTA_GLAZED_TERRACOTTA: 1 - COBBLESTONE: 1 + AZALEA: 10 + LIGHT_BLUE_STAINED_GLASS: 10 + MUSHROOM_STEM: 10 + BLUE_TERRACOTTA: 10 + JUNGLE_PLANKS: 10 + BROWN_MUSHROOM_BLOCK: 10 + BLACK_STAINED_GLASS: 10 + MAGENTA_GLAZED_TERRACOTTA: 10 + COBBLESTONE: 10 REDSTONE_ORE: 3 - POINTED_DRIPSTONE: 1 - WAXED_EXPOSED_COPPER: 1 - DEAD_FIRE_CORAL_BLOCK: 1 - WHITE_GLAZED_TERRACOTTA: 1 - CHISELED_SANDSTONE: 1 - LIGHT_GRAY_TERRACOTTA: 1 + POINTED_DRIPSTONE: 10 + WAXED_EXPOSED_COPPER: 10 + DEAD_FIRE_CORAL_BLOCK: 10 + WHITE_GLAZED_TERRACOTTA: 10 + CHISELED_SANDSTONE: 10 + LIGHT_GRAY_TERRACOTTA: 10 DARK_OAK_SAPLING: 3 - WAXED_OXIDIZED_COPPER: 1 + WAXED_OXIDIZED_COPPER: 10 GRASS_BLOCK: 200 - RED_WOOL: 1 + RED_WOOL: 10 EMERALD_ORE: 5 - MAGENTA_STAINED_GLASS: 1 + MAGENTA_STAINED_GLASS: 10 COAL_ORE: 70 - ROOTED_DIRT: 1 - POLISHED_ANDESITE: 1 + ROOTED_DIRT: 10 + POLISHED_ANDESITE: 10 SUNFLOWER: 3 - LIGHT_BLUE_GLAZED_TERRACOTTA: 1 - PINK_STAINED_GLASS: 1 - OXIDIZED_COPPER: 1 - INFESTED_COBBLESTONE: 1 + LIGHT_BLUE_GLAZED_TERRACOTTA: 10 + PINK_STAINED_GLASS: 10 + OXIDIZED_COPPER: 10 + INFESTED_COBBLESTONE: 10 DIORITE: 2 - BLUE_ICE: 1 - SCAFFOLDING: 1 - LIGHT_BLUE_CONCRETE: 1 - STRIPPED_OAK_WOOD: 10 - HORN_CORAL_BLOCK: 1 - CYAN_WOOL: 1 - DARK_OAK_WOOD: 18 + BLUE_ICE: 10 + SCAFFOLDING: 10 + LIGHT_BLUE_CONCRETE: 10 + STRIPPED_OAK_WOOD: 100 + HORN_CORAL_BLOCK: 10 + CYAN_WOOL: 10 + DARK_OAK_WOOD: 108 GOLD_ORE: 3 - POLISHED_BLACKSTONE: 1 - COPPER_BLOCK: 1 + POLISHED_BLACKSTONE: 10 + COPPER_BLOCK: 10 CLAY: 5 - TUBE_CORAL_BLOCK: 1 + TUBE_CORAL_BLOCK: 10 LILAC: 7 - TARGET: 1 - DRIPSTONE_BLOCK: 1 + TARGET: 10 + DRIPSTONE_BLOCK: 10 DARK_PRISMARINE: 3 - STRIPPED_JUNGLE_LOG: 10 - CRACKED_DEEPSLATE_BRICKS: 1 - BUBBLE_CORAL_BLOCK: 1 - BLUE_GLAZED_TERRACOTTA: 1 + STRIPPED_JUNGLE_LOG: 100 + CRACKED_DEEPSLATE_BRICKS: 10 + BUBBLE_CORAL_BLOCK: 10 + BLUE_GLAZED_TERRACOTTA: 10 ACACIA_LEAVES: 8 - STRIPPED_SPRUCE_WOOD: 10 - LIGHT_GRAY_CONCRETE: 1 - YELLOW_TERRACOTTA: 1 + STRIPPED_SPRUCE_WOOD: 100 + LIGHT_GRAY_CONCRETE: 10 + YELLOW_TERRACOTTA: 10 GRANITE: 50 SAND: 50 - CHISELED_RED_SANDSTONE: 1 - JUNGLE_LEAVES: 10 + CHISELED_RED_SANDSTONE: 10 + JUNGLE_LEAVES: 100 JUNGLE_WOOD: 20 - BROWN_TERRACOTTA: 1 + BROWN_TERRACOTTA: 10 RED_TULIP: 3 - JUNGLE_LOG: 17 - PINK_GLAZED_TERRACOTTA: 1 - HAY_BLOCK: 1 - MOSSY_STONE_BRICKS: 1 + JUNGLE_LOG: 107 + PINK_GLAZED_TERRACOTTA: 10 + HAY_BLOCK: 10 + MOSSY_STONE_BRICKS: 10 PRISMARINE: 3 - DANDELION: 16 - RAW_COPPER_BLOCK: 1 - DEAD_TUBE_CORAL_BLOCK: 1 - AZALEA_LEAVES: 1 - SMOOTH_SANDSTONE: 1 - RED_GLAZED_TERRACOTTA: 1 - ALLIUM: 12 - OAK_SAPLING: 11 + DANDELION: 106 + RAW_COPPER_BLOCK: 10 + DEAD_TUBE_CORAL_BLOCK: 10 + AZALEA_LEAVES: 10 + SMOOTH_SANDSTONE: 10 + RED_GLAZED_TERRACOTTA: 10 + ALLIUM: 102 + OAK_SAPLING: 101 PEONY: 7 LAVA: 5 - CHISELED_DEEPSLATE: 1 - AMETHYST_CLUSTER: 1 + CHISELED_DEEPSLATE: 10 + AMETHYST_CLUSTER: 10 OXEYE_DAISY: 6 - GRAY_CONCRETE: 1 + GRAY_CONCRETE: 10 DARK_OAK_LEAVES: 9 GRAVEL: 20 - WAXED_OXIDIZED_CUT_COPPER: 1 - SEA_LANTERN: 1 - MOSS_BLOCK: 1 - MELON: 15 - HONEYCOMB_BLOCK: 1 - TERRACOTTA: 1 - GREEN_CONCRETE: 1 - END_STONE_BRICKS: 1 + WAXED_OXIDIZED_CUT_COPPER: 10 + SEA_LANTERN: 10 + MOSS_BLOCK: 10 + MELON: 105 + HONEYCOMB_BLOCK: 10 + TERRACOTTA: 10 + GREEN_CONCRETE: 10 + END_STONE_BRICKS: 10 COBWEB: 7 - COARSE_DIRT: 17 - CYAN_STAINED_GLASS: 1 - LIGHT_GRAY_GLAZED_TERRACOTTA: 1 - SMOOTH_STONE: 1 + COARSE_DIRT: 107 + CYAN_STAINED_GLASS: 10 + LIGHT_GRAY_GLAZED_TERRACOTTA: 10 + SMOOTH_STONE: 10 LAPIS_ORE: 6 - ORANGE_CONCRETE: 1 - OAK_LOG: 10 - STRIPPED_JUNGLE_WOOD: 10 - DEAD_BRAIN_CORAL_BLOCK: 1 - TINTED_GLASS: 1 - WAXED_COPPER_BLOCK: 1 - BIRCH_PLANKS: 1 - DIAMOND_ORE: 1 - DEEPSLATE_COPPER_ORE: 1 - CYAN_CONCRETE: 1 - CHISELED_QUARTZ_BLOCK: 1 - DEEPSLATE_EMERALD_ORE: 1 + ORANGE_CONCRETE: 10 + OAK_LOG: 100 + STRIPPED_JUNGLE_WOOD: 100 + DEAD_BRAIN_CORAL_BLOCK: 10 + TINTED_GLASS: 10 + WAXED_COPPER_BLOCK: 10 + BIRCH_PLANKS: 10 + DIAMOND_ORE: 10 + DEEPSLATE_COPPER_ORE: 10 + CYAN_CONCRETE: 10 + CHISELED_QUARTZ_BLOCK: 10 + DEEPSLATE_EMERALD_ORE: 10 OAK_LEAVES: 4 - IRON_ORE: 10 - PURPLE_GLAZED_TERRACOTTA: 1 - WHITE_CONCRETE: 1 - SPONGE: 1 - STONE: 180 - YELLOW_WOOL: 1 + IRON_ORE: 100 + PURPLE_GLAZED_TERRACOTTA: 10 + WHITE_CONCRETE: 10 + SPONGE: 10 + STONE: 1080 + YELLOW_WOOL: 10 ROSE_BUSH: 8 - STRIPPED_SPRUCE_LOG: 10 - EXPOSED_COPPER: 1 - SANDSTONE: 120 - SMOOTH_RED_SANDSTONE: 1 - BROWN_STAINED_GLASS: 1 + STRIPPED_SPRUCE_LOG: 100 + EXPOSED_COPPER: 10 + SANDSTONE: 1020 + SMOOTH_RED_SANDSTONE: 10 + BROWN_STAINED_GLASS: 10 ACACIA_LOG: 20 - ORANGE_GLAZED_TERRACOTTA: 1 - BRICKS: 1 + ORANGE_GLAZED_TERRACOTTA: 10 + BRICKS: 10 FERN: 4 - WET_SPONGE: 1 - TNT: 1 - BOOKSHELF: 10 + WET_SPONGE: 10 + TNT: 10 + BOOKSHELF: 100 PINK_TULIP: 8 - POLISHED_GRANITE: 1 - STRIPPED_ACACIA_LOG: 10 - RAW_IRON_BLOCK: 1 - JUNGLE_SAPLING: 19 - YELLOW_STAINED_GLASS: 1 - DEAD_BUBBLE_CORAL_BLOCK: 1 + POLISHED_GRANITE: 10 + STRIPPED_ACACIA_LOG: 100 + RAW_IRON_BLOCK: 10 + JUNGLE_SAPLING: 109 + YELLOW_STAINED_GLASS: 10 + DEAD_BUBBLE_CORAL_BLOCK: 10 SPRUCE_WOOD: 9 - DEEPSLATE: 1 - BLACK_TERRACOTTA: 1 - BEE_NEST: 1 - STRIPPED_OAK_LOG: 10 + DEEPSLATE: 10 + BLACK_TERRACOTTA: 10 + BEE_NEST: 10 + STRIPPED_OAK_LOG: 100 CHEST: 5 SPRUCE_LOG: 3 - LIME_WOOL: 1 - ORANGE_WOOL: 1 - SCULK_SENSOR: 1 - HONEY_BLOCK: 1 - LIME_TERRACOTTA: 1 - STRIPPED_DARK_OAK_WOOD: 10 - WHITE_WOOL: 1 - GREEN_TERRACOTTA: 1 - MEDIUM_AMETHYST_BUD: 1 - SMALL_DRIPLEAF: 1 - LIME_STAINED_GLASS: 1 - COMPOSTER: 1 - RED_MUSHROOM_BLOCK: 1 - ORANGE_STAINED_GLASS: 1 - OXIDIZED_CUT_COPPER: 1 - GLASS: 1 - TALL_GRASS: 13 - POLISHED_DEEPSLATE: 1 - DEAD_BUSH: 1 - BLACK_GLAZED_TERRACOTTA: 1 - BLUE_CONCRETE: 1 - PETRIFIED_OAK_SLAB: 1 - REDSTONE_LAMP: 1 - RED_STAINED_GLASS: 1 - GREEN_STAINED_GLASS: 1 - BLUE_WOOL: 1 - DEEPSLATE_REDSTONE_ORE: 1 + LIME_WOOL: 10 + ORANGE_WOOL: 10 + SCULK_SENSOR: 10 + HONEY_BLOCK: 10 + LIME_TERRACOTTA: 10 + STRIPPED_DARK_OAK_WOOD: 100 + WHITE_WOOL: 10 + GREEN_TERRACOTTA: 10 + MEDIUM_AMETHYST_BUD: 10 + SMALL_DRIPLEAF: 10 + LIME_STAINED_GLASS: 10 + COMPOSTER: 10 + RED_MUSHROOM_BLOCK: 10 + ORANGE_STAINED_GLASS: 10 + OXIDIZED_CUT_COPPER: 10 + GLASS: 10 + TALL_GRASS: 103 + POLISHED_DEEPSLATE: 10 + DEAD_BUSH: 10 + BLACK_GLAZED_TERRACOTTA: 10 + BLUE_CONCRETE: 10 + PETRIFIED_OAK_SLAB: 10 + REDSTONE_LAMP: 10 + RED_STAINED_GLASS: 10 + GREEN_STAINED_GLASS: 10 + BLUE_WOOL: 10 + DEEPSLATE_REDSTONE_ORE: 10 FARMLAND: 7 POPPY: 5 - CYAN_TERRACOTTA: 1 - DEEPSLATE_IRON_ORE: 1 - PACKED_ICE: 1 - COAL_BLOCK: 1 - YELLOW_CONCRETE: 1 - WHITE_STAINED_GLASS: 1 - PRISMARINE_BRICKS: 1 - SMOOTH_BASALT: 1 - WEATHERED_CUT_COPPER: 1 - LIGHT_BLUE_WOOL: 1 - DARK_OAK_LOG: 10 - CALCITE: 1 - RAW_GOLD_BLOCK: 1 - CHISELED_STONE_BRICKS: 1 - COPPER_ORE: 1 + CYAN_TERRACOTTA: 10 + DEEPSLATE_IRON_ORE: 10 + PACKED_ICE: 10 + COAL_BLOCK: 10 + YELLOW_CONCRETE: 10 + WHITE_STAINED_GLASS: 10 + PRISMARINE_BRICKS: 10 + SMOOTH_BASALT: 10 + WEATHERED_CUT_COPPER: 10 + LIGHT_BLUE_WOOL: 10 + DARK_OAK_LOG: 100 + CALCITE: 10 + RAW_GOLD_BLOCK: 10 + CHISELED_STONE_BRICKS: 10 + COPPER_ORE: 10 PODZOL: 4 - WAXED_CUT_COPPER: 1 - REDSTONE_BLOCK: 1 - DEEPSLATE_LAPIS_ORE: 1 - GRASS: 100 - WAXED_WEATHERED_CUT_COPPER: 1 + WAXED_CUT_COPPER: 10 + REDSTONE_BLOCK: 10 + DEEPSLATE_LAPIS_ORE: 10 + GRASS: 1000 + WAXED_WEATHERED_CUT_COPPER: 10 LARGE_FERN: 8 - PINK_TERRACOTTA: 1 - FIRE_CORAL_BLOCK: 1 - PURPLE_TERRACOTTA: 1 - GRAY_GLAZED_TERRACOTTA: 1 - SNOW: 1 + PINK_TERRACOTTA: 10 + FIRE_CORAL_BLOCK: 10 + PURPLE_TERRACOTTA: 10 + GRAY_GLAZED_TERRACOTTA: 10 + SNOW: 10 SUGAR_CANE: 4 - DIRT: 1 - COBBLED_DEEPSLATE: 1 - BONE_BLOCK: 1 + DIRT: 10 + COBBLED_DEEPSLATE: 10 + BONE_BLOCK: 10 SPAWNER: 5 - POLISHED_BASALT: 1 - POLISHED_DIORITE: 1 - MOSSY_COBBLESTONE: 1 - CUT_SANDSTONE: 1 - WHITE_TERRACOTTA: 1 - GRAY_TERRACOTTA: 1 - DEEPSLATE_DIAMOND_ORE: 1 - DEAD_HORN_CORAL_BLOCK: 1 - AMETHYST_BLOCK: 1 - DARK_OAK_PLANKS: 1 - SHROOMLIGHT: 1 - ACACIA_WOOD: 16 - CYAN_GLAZED_TERRACOTTA: 1 - CUT_COPPER: 1 - LIGHT_GRAY_STAINED_GLASS: 1 - GRAY_WOOL: 1 - PINK_WOOL: 1 - STRIPPED_DARK_OAK_LOG: 10 - OBSIDIAN: 1 - LIGHT_GRAY_WOOL: 1 - AZURE_BLUET: 1 - LIME_GLAZED_TERRACOTTA: 1 - RED_CONCRETE: 1 - WEATHERED_COPPER: 1 - OAK_PLANKS: 1 - ACACIA_SAPLING: 17 - CUT_RED_SANDSTONE: 1 + POLISHED_BASALT: 10 + POLISHED_DIORITE: 10 + MOSSY_COBBLESTONE: 10 + CUT_SANDSTONE: 10 + WHITE_TERRACOTTA: 10 + GRAY_TERRACOTTA: 10 + DEEPSLATE_DIAMOND_ORE: 10 + DEAD_HORN_CORAL_BLOCK: 10 + AMETHYST_BLOCK: 10 + DARK_OAK_PLANKS: 10 + SHROOMLIGHT: 10 + ACACIA_WOOD: 106 + CYAN_GLAZED_TERRACOTTA: 10 + CUT_COPPER: 10 + LIGHT_GRAY_STAINED_GLASS: 10 + GRAY_WOOL: 10 + PINK_WOOL: 10 + STRIPPED_DARK_OAK_LOG: 100 + OBSIDIAN: 10 + LIGHT_GRAY_WOOL: 10 + AZURE_BLUET: 10 + LIME_GLAZED_TERRACOTTA: 10 + RED_CONCRETE: 10 + WEATHERED_COPPER: 10 + OAK_PLANKS: 10 + ACACIA_SAPLING: 107 + CUT_RED_SANDSTONE: 10 BIRCH_SAPLING: 8 - LIME_CONCRETE: 1 - DEEPSLATE_COAL_ORE: 1 + LIME_CONCRETE: 10 + DEEPSLATE_COAL_ORE: 10 BEETROOTS: 9 BIRCH_LOG: 2 - RED_TERRACOTTA: 1 - BIRCH_WOOD: 16 - ACACIA_PLANKS: 1 + RED_TERRACOTTA: 10 + BIRCH_WOOD: 106 + ACACIA_PLANKS: 10 MYCELIUM: 2 - BROWN_CONCRETE: 1 - RED_SANDSTONE: 19 - LODESTONE: 1 - WAXED_EXPOSED_CUT_COPPER: 1 - MAGENTA_CONCRETE: 1 + BROWN_CONCRETE: 10 + RED_SANDSTONE: 109 + LODESTONE: 10 + WAXED_EXPOSED_CUT_COPPER: 10 + MAGENTA_CONCRETE: 10 SPRUCE_LEAVES: 9 - SNOW_BLOCK: 1 + SNOW_BLOCK: 10 BIRCH_LEAVES: 9 - ORANGE_TULIP: 10 + ORANGE_TULIP: 100 ANDESITE: 90 - BARREL: 1 - BROWN_GLAZED_TERRACOTTA: 1 - DEEPSLATE_GOLD_ORE: 1 - LAVA_CAULDRON: 1 - BRAIN_CORAL_BLOCK: 1 - YELLOW_GLAZED_TERRACOTTA: 1 + BARREL: 10 + BROWN_GLAZED_TERRACOTTA: 10 + DEEPSLATE_GOLD_ORE: 10 + LAVA_CAULDRON: 10 + BRAIN_CORAL_BLOCK: 10 + YELLOW_GLAZED_TERRACOTTA: 10 nether: # Generate SkyGrid Nether - if this is false, the nether world will not be made generate: true @@ -963,48 +793,48 @@ world: # Beware with glowstone and lava - the lighting calcs will lag the # server badly if there are too many blocks. blocks: - POLISHED_BLACKSTONE_BRICKS: 12 - STRIPPED_WARPED_HYPHAE: 100 - LAVA: 1 - OBSIDIAN: 10 - NETHER_QUARTZ_ORE: 15 - NETHERITE_BLOCK: 10 - STRIPPED_CRIMSON_HYPHAE: 100 - MAGMA_BLOCK: 1 - STRIPPED_WARPED_STEM: 100 - GRAVEL: 10 - GILDED_BLACKSTONE: 10 - CRACKED_POLISHED_BLACKSTONE_BRICKS: 12 + POLISHED_BLACKSTONE_BRICKS: 102 + STRIPPED_WARPED_HYPHAE: 1000 + LAVA: 10 + OBSIDIAN: 100 + NETHER_QUARTZ_ORE: 105 + NETHERITE_BLOCK: 100 + STRIPPED_CRIMSON_HYPHAE: 1000 + MAGMA_BLOCK: 10 + STRIPPED_WARPED_STEM: 1000 + GRAVEL: 100 + GILDED_BLACKSTONE: 100 + CRACKED_POLISHED_BLACKSTONE_BRICKS: 102 BASALT: 20 - WARPED_WART_BLOCK: 1 - CRACKED_NETHER_BRICKS: 10 - CRIMSON_PLANKS: 100 + WARPED_WART_BLOCK: 10 + CRACKED_NETHER_BRICKS: 100 + CRIMSON_PLANKS: 1000 COBWEB: 7 - WARPED_NYLIUM: 1 - STRIPPED_CRIMSON_STEM: 100 + WARPED_NYLIUM: 10 + STRIPPED_CRIMSON_STEM: 1000 GLOWSTONE: 2 - CHISELED_POLISHED_BLACKSTONE: 12 - ANCIENT_DEBRIS: 10 - RED_NETHER_BRICKS: 12 - NETHER_BRICKS: 12 + CHISELED_POLISHED_BLACKSTONE: 102 + ANCIENT_DEBRIS: 100 + RED_NETHER_BRICKS: 102 + NETHER_BRICKS: 102 SOUL_SAND: 90 - BLACKSTONE: 10 - POLISHED_BLACKSTONE_BRICK_STAIRS: 12 - NETHER_WART_BLOCK: 12 - NETHER_GOLD_ORE: 12 - BONE_BLOCK: 10 + BLACKSTONE: 100 + POLISHED_BLACKSTONE_BRICK_STAIRS: 102 + NETHER_WART_BLOCK: 102 + NETHER_GOLD_ORE: 102 + BONE_BLOCK: 100 SPAWNER: 2 - WARPED_ROOTS: 1 - CHEST: 15 - WARPED_FUNGUS: 1 - NETHER_WART: 19 + WARPED_ROOTS: 10 + CHEST: 105 + WARPED_FUNGUS: 10 + NETHER_WART: 109 NETHERRACK: 200 - WARPED_PLANKS: 1 - WARPED_HYPHAE: 1 - RESPAWN_ANCHOR: 1 - CHISELED_NETHER_BRICKS: 12 + WARPED_PLANKS: 10 + WARPED_HYPHAE: 10 + RESPAWN_ANCHOR: 10 + CHISELED_NETHER_BRICKS: 102 SOUL_SOIL: 80 - CRYING_OBSIDIAN: 10 + CRYING_OBSIDIAN: 100 # 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. @@ -1015,22 +845,22 @@ world: generate: true # The End blocks. blocks: - CHEST: 1 - END_ROD: 1 + CHEST: 10 + END_ROD: 10 CHORUS_PLANT: 2 OBSIDIAN: 5 PURPLE_STAINED_GLASS: 50 AIR: 200 END_STONE: 200 - GRAVEL: 10 - SPAWNER: 1 + GRAVEL: 100 + SPAWNER: 10 PURPUR_BLOCK: 50 # 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. - end-frame-probability: 0.1 + end-frame-probability: 1 # Friendly name for this world. Used in admin commands. Must be a single word friendly-name: SkyGrid # Name of the world - if it does not exist then it will be generated. @@ -1046,9 +876,9 @@ world: start-z: 0 # SkyGrid height # This is the height of the top sky grid layer. 255 max. - skygrid-height: 128 + skygrid-height: 1028 # Space around new players in blocks (will be rounded up to nearest 16 blocks) - space-around-players: 1000 + space-around-players: 10000 # Default protection radius around player's home (so total size is 2x this) protection-range: 50 # The default game mode for this world. Players will be set to this mode when they create @@ -1194,7 +1024,7 @@ world: HURT_MONSTERS: 500 NAME_TAG: 500 ARMOR_STAND: 500 - CHANGE_SETTINGS: 1000 + CHANGE_SETTINGS: 10000 TRADING: 500 EGGS: 500 ITEM_DROP: 500 @@ -1426,7 +1256,7 @@ area: # Whether deaths are counted or not. counted: true # Maximum number of deaths to count. The death count can be used by add-ons. - max: 10 + max: 100 # When a player joins a team, reset their death count team-join-reset: true # Reset player death count when they start reset diff --git a/src/test/java/world/bentobox/skygrid/SettingsTest.java b/src/test/java/world/bentobox/skygrid/SettingsTest.java index 5fef784..e625883 100644 --- a/src/test/java/world/bentobox/skygrid/SettingsTest.java +++ b/src/test/java/world/bentobox/skygrid/SettingsTest.java @@ -12,7 +12,6 @@ import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.EntityType; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -36,13 +35,6 @@ public void setUp() throws Exception { s = new Settings(); } - /** - * @throws java.lang.Exception - */ - @After - public void tearDown() throws Exception { - } - /** * Test method for {@link world.bentobox.skygrid.Settings#getBlocks()}. */ @@ -180,7 +172,7 @@ public void testGetChestItemsOverworld() { @Test public void testSetChestItemsOverworld() { assertTrue(s.getChestItemsOverworld().isEmpty()); - s.setChestItemsOverworld(List.of("thing")); + s.setChestItemsOverworld(Map.of(Material.ACACIA_BOAT, 1)); assertFalse(s.getChestItemsOverworld().isEmpty()); } @@ -198,7 +190,7 @@ public void testGetChestItemsNether() { @Test public void testSetChestItemsNether() { assertTrue(s.getChestItemsNether().isEmpty()); - s.setChestItemsNether(List.of("thing")); + s.setChestItemsNether(Map.of(Material.ACACIA_BOAT, 1)); assertFalse(s.getChestItemsNether().isEmpty()); } @@ -216,7 +208,7 @@ public void testGetChestItemsEnd() { @Test public void testSetChestItemsEnd() { assertTrue(s.getChestItemsEnd().isEmpty()); - s.setChestItemsEnd(List.of("thing")); + s.setChestItemsEnd(Map.of(Material.ACACIA_BOAT, 1)); assertFalse(s.getChestItemsEnd().isEmpty()); } From c730f03e7178f133a7564fc40ae6123db30ad242 Mon Sep 17 00:00:00 2001 From: tastybento Date: Fri, 9 Jun 2023 20:40:51 -0700 Subject: [PATCH 05/29] Fix some values that were changed for debug --- src/main/resources/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5acba0c..bb720d4 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -876,9 +876,9 @@ world: start-z: 0 # SkyGrid height # This is the height of the top sky grid layer. 255 max. - skygrid-height: 1028 + skygrid-height: 128 # Space around new players in blocks (will be rounded up to nearest 16 blocks) - space-around-players: 10000 + space-around-players: 1000 # Default protection radius around player's home (so total size is 2x this) protection-range: 50 # The default game mode for this world. Players will be set to this mode when they create @@ -1256,7 +1256,7 @@ area: # Whether deaths are counted or not. counted: true # Maximum number of deaths to count. The death count can be used by add-ons. - max: 100 + max: 10 # When a player joins a team, reset their death count team-join-reset: true # Reset player death count when they start reset From 2a0f0751aee9f44c7bc7a95e57841c47ec1c5f6e Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 10 Jun 2023 09:53:36 -0700 Subject: [PATCH 06/29] Remove Pottery Shard items from config as they can cause errors --- src/main/resources/config.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index bb720d4..79ada80 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -368,10 +368,6 @@ world: SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - POTTERY_SHARD_ARCHER: 10 - POTTERY_SHARD_PRIZE: 10 - POTTERY_SHARD_ARMS_UP: 10 - POTTERY_SHARD_SKULL: 10 nether: MINECART: 10 CHEST_MINECART: 10 From 66113464fa0e9b25163fd06ccfae83bf7003e9d2 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 10 Jun 2023 09:59:48 -0700 Subject: [PATCH 07/29] Increased probability of chests in overworld. --- src/main/resources/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 79ada80..f9b074d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -667,7 +667,7 @@ world: BLACK_TERRACOTTA: 10 BEE_NEST: 10 STRIPPED_OAK_LOG: 100 - CHEST: 5 + CHEST: 20 SPRUCE_LOG: 3 LIME_WOOL: 10 ORANGE_WOOL: 10 From 4db2b14cfef4a69b847b2c5d0f6dbdecaec453cf Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 10 Jun 2023 10:24:57 -0700 Subject: [PATCH 08/29] Tweaked chest prob. --- src/main/resources/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f9b074d..34c5622 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -667,7 +667,7 @@ world: BLACK_TERRACOTTA: 10 BEE_NEST: 10 STRIPPED_OAK_LOG: 100 - CHEST: 20 + CHEST: 105 SPRUCE_LOG: 3 LIME_WOOL: 10 ORANGE_WOOL: 10 From 20de888eec972739ee2a231ec0691802ea45e14f Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 24 Jun 2023 13:46:43 -0700 Subject: [PATCH 09/29] Update Github Build script --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6d8a454..825b18d 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 + uses: actions/setup-java@v3 with: distribution: 'adopt' java-version: 17 - 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') }} From 3e14afeac2a76960f39d669f02b745b0708d8f1d Mon Sep 17 00:00:00 2001 From: tastybento Date: Mon, 10 Jul 2023 21:45:26 -0700 Subject: [PATCH 10/29] Update pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cc7b0a0..339de90 100644 --- a/pom.xml +++ b/pom.xml @@ -327,7 +327,7 @@ org.jacoco jacoco-maven-plugin - 0.8.7 + 0.8.10 true From 4c3c078c95033d51317ae34fb3a96e78723c85e5 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 15 Jul 2023 18:50:28 -0700 Subject: [PATCH 11/29] Update README.md --- README.md | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ae7ac29..f3c2bf0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,20 @@ # 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 +22,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! From 68a3c6e75c2c3f738f6f21e017547dd28ebecf38 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 15 Jul 2023 19:09:03 -0700 Subject: [PATCH 12/29] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f3c2bf0..22189bc 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ Welcome to the SkyGrid for Minecraft! This game introduces a unique and challeng 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. From 766847ade994a0aeba2fc218cf7e5dc314b24dfb Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 12 Nov 2023 14:32:40 -0800 Subject: [PATCH 13/29] BentoBox 2.0.0 API --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index cc7b0a0..80a4f8d 100644 --- a/pom.xml +++ b/pom.xml @@ -58,8 +58,8 @@ 2.0.9 - 1.19.4-R0.1-SNAPSHOT - 1.23.0 + 1.20.2-R0.1-SNAPSHOT + 2.0.0-SNAPSHOT ${build.version}-SNAPSHOT From d4bec7f00b1e0ec4a695455eb336d2a5e7e9adbd Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 23 Dec 2023 08:33:15 +0900 Subject: [PATCH 14/29] Adds config to enable heigh setting of end-frames. #63 --- .../java/world/bentobox/skygrid/Settings.java | 19 + .../skygrid/generators/SkyGridPop.java | 2 +- src/main/resources/config.yml | 973 +++++++++--------- 3 files changed, 515 insertions(+), 479 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/Settings.java b/src/main/java/world/bentobox/skygrid/Settings.java index 5056093..dc0011b 100644 --- a/src/main/java/world/bentobox/skygrid/Settings.java +++ b/src/main/java/world/bentobox/skygrid/Settings.java @@ -147,6 +147,11 @@ public class Settings implements WorldSettings { @ConfigEntry(path = "world.skygrid-height") private int islandHeight = 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") private int islandDistance = 1000; @@ -1623,4 +1628,18 @@ public boolean isCheckForBlocks() 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/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java index d40d439..92f1c7e 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java @@ -119,7 +119,7 @@ private void makeEndPortal() { 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(xx, zz, chunk.getBlock(xx, addon.getSettings().getEndFrameHeight(), zz)); } } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 34c5622..87f25ab 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -31,456 +31,456 @@ world: # Format: Material : Probability # Material values can be found at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html overworld: - REDSTONE: 100 - SADDLE: 100 - MINECART: 100 - CHEST_MINECART: 100 - FURNACE_MINECART: 100 - TNT_MINECART: 100 - HOPPER_MINECART: 100 + SILVERFISH_SPAWN_EGG: 10 + ZOMBIE_HORSE_SPAWN_EGG: 10 + GOLDEN_APPLE: 10 + FOX_SPAWN_EGG: 10 + GOLDEN_LEGGINGS: 10 CARROT_ON_A_STICK: 100 - WARPED_FUNGUS_ON_A_STICK: 100 - ELYTRA: 100 - OAK_BOAT: 100 - OAK_CHEST_BOAT: 100 - SPRUCE_BOAT: 100 - SPRUCE_CHEST_BOAT: 100 - BIRCH_BOAT: 100 - BIRCH_CHEST_BOAT: 100 - JUNGLE_BOAT: 100 - JUNGLE_CHEST_BOAT: 100 - ACACIA_BOAT: 100 - ACACIA_CHEST_BOAT: 100 + ENCHANTED_GOLDEN_APPLE: 10 + IRON_BOOTS: 10 + OCELOT_SPAWN_EGG: 10 + SHEARS: 10 + HOPPER_MINECART: 100 + GOLDEN_PICKAXE: 100 + WOLF_SPAWN_EGG: 10 + SADDLE: 100 + BROWN_DYE: 10 + BEE_SPAWN_EGG: 10 + POPPED_CHORUS_FRUIT: 10 + ZOMBIFIED_PIGLIN_SPAWN_EGG: 10 + IRON_HOE: 100 + RABBIT_STEW: 10 + STONE_PICKAXE: 100 + CHAINMAIL_BOOTS: 10 + FIREWORK_STAR: 10 + PURPLE_DYE: 10 + COW_SPAWN_EGG: 10 CHERRY_BOAT: 100 - CHERRY_CHEST_BOAT: 100 - DARK_OAK_BOAT: 100 - DARK_OAK_CHEST_BOAT: 100 + ELDER_GUARDIAN_SPAWN_EGG: 10 + FIRE_CHARGE: 10 MANGROVE_BOAT: 100 - MANGROVE_CHEST_BOAT: 100 - BAMBOO_RAFT: 100 - BAMBOO_CHEST_RAFT: 100 - TURTLE_HELMET: 100 - SCUTE: 100 + ZOMBIE_VILLAGER_SPAWN_EGG: 10 + GUNPOWDER: 10 + MUSHROOM_STEW: 10 FLINT_AND_STEEL: 100 - APPLE: 100 - BOW: 100 - ARROW: 100 - COAL: 100 - CHARCOAL: 100 + IRON_CHESTPLATE: 10 + PRISMARINE_SHARD: 10 + BIRCH_CHEST_BOAT: 100 + HONEYCOMB: 10 + BEEF: 10 + DRIED_KELP: 10 + NAUTILUS_SHELL: 10 + CLOCK: 10 + MUTTON: 10 + GLOBE_BANNER_PATTERN: 10 + MUSIC_DISC_STRAD: 10 + SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + DONKEY_SPAWN_EGG: 10 + TADPOLE_BUCKET: 10 + CHEST_MINECART: 100 + TURTLE_HELMET: 100 + PUFFERFISH_BUCKET: 10 DIAMOND: 100 - EMERALD: 100 - LAPIS_LAZULI: 100 - QUARTZ: 100 - AMETHYST_SHARD: 100 - RAW_IRON: 100 - IRON_INGOT: 100 - RAW_COPPER: 100 - COPPER_INGOT: 100 - RAW_GOLD: 100 - GOLD_INGOT: 100 - WOODEN_SWORD: 100 WOODEN_SHOVEL: 100 - WOODEN_PICKAXE: 100 - WOODEN_AXE: 100 - WOODEN_HOE: 100 - STONE_SWORD: 100 - STONE_SHOVEL: 100 - STONE_PICKAXE: 100 - STONE_AXE: 100 - STONE_HOE: 100 - GOLDEN_SWORD: 100 - GOLDEN_SHOVEL: 100 - GOLDEN_PICKAXE: 100 - GOLDEN_AXE: 100 + PIG_SPAWN_EGG: 10 + SPIDER_EYE: 10 + DISC_FRAGMENT_5: 10 + RAW_GOLD: 100 + TOTEM_OF_UNDYING: 1 + ARROW: 100 + CREEPER_BANNER_PATTERN: 10 + CHAINMAIL_CHESTPLATE: 10 + AXOLOTL_SPAWN_EGG: 10 + KNOWLEDGE_BOOK: 10 + MUSIC_DISC_MALL: 10 + FURNACE_MINECART: 100 GOLDEN_HOE: 100 - IRON_SWORD: 100 + MUSIC_DISC_STAL: 10 IRON_SHOVEL: 100 - IRON_PICKAXE: 100 - IRON_AXE: 100 - IRON_HOE: 100 - DIAMOND_SWORD: 100 - DIAMOND_SHOVEL: 100 - DIAMOND_PICKAXE: 10 - DIAMOND_AXE: 10 - DIAMOND_HOE: 10 - STICK: 10 - BOWL: 10 - MUSHROOM_STEW: 10 - STRING: 10 - FEATHER: 10 - GUNPOWDER: 10 - WHEAT_SEEDS: 10 - BREAD: 10 - LEATHER_HELMET: 10 - LEATHER_CHESTPLATE: 10 - LEATHER_LEGGINGS: 10 - LEATHER_BOOTS: 10 - CHAINMAIL_HELMET: 10 - CHAINMAIL_CHESTPLATE: 10 - CHAINMAIL_LEGGINGS: 10 - CHAINMAIL_BOOTS: 10 - IRON_HELMET: 10 - IRON_CHESTPLATE: 10 - IRON_LEGGINGS: 10 - IRON_BOOTS: 10 - DIAMOND_HELMET: 10 - DIAMOND_CHESTPLATE: 10 - DIAMOND_LEGGINGS: 10 - DIAMOND_BOOTS: 10 - GOLDEN_HELMET: 10 - GOLDEN_CHESTPLATE: 10 - GOLDEN_LEGGINGS: 10 + HONEY_BOTTLE: 10 + BLACK_DYE: 10 + MUSIC_DISC_BLOCKS: 10 GOLDEN_BOOTS: 10 - NETHERITE_HELMET: 1 - NETHERITE_CHESTPLATE: 1 + PRISMARINE_CRYSTALS: 10 + MOJANG_BANNER_PATTERN: 10 + TORCHFLOWER_SEEDS: 10 NETHERITE_LEGGINGS: 1 - NETHERITE_BOOTS: 1 - FLINT: 10 - PORKCHOP: 10 - COOKED_PORKCHOP: 10 - PAINTING: 10 - GOLDEN_APPLE: 10 - ENCHANTED_GOLDEN_APPLE: 10 + CAVE_SPIDER_SPAWN_EGG: 10 + END_CRYSTAL: 10 + RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + CYAN_DYE: 10 + HORSE_SPAWN_EGG: 10 + STRING: 10 + SQUID_SPAWN_EGG: 10 + PUFFERFISH_SPAWN_EGG: 10 + RABBIT_FOOT: 10 + SALMON_SPAWN_EGG: 10 + PANDA_SPAWN_EGG: 10 + APPLE: 100 + BIRCH_BOAT: 100 + REDSTONE: 100 + SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 BUCKET: 10 - WATER_BUCKET: 10 - LAVA_BUCKET: 10 - POWDER_SNOW_BUCKET: 10 - SNOWBALL: 10 - LEATHER: 10 - MILK_BUCKET: 10 - PUFFERFISH_BUCKET: 10 - SALMON_BUCKET: 10 - COD_BUCKET: 10 - TROPICAL_FISH_BUCKET: 10 - AXOLOTL_BUCKET: 10 - TADPOLE_BUCKET: 10 - BRICK: 10 - CLAY_BALL: 10 - PAPER: 10 - BOOK: 10 + MUSIC_DISC_WAIT: 10 + GOAT_HORN: 10 + LINGERING_POTION: 10 + COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + MINECART: 100 + WHITE_DYE: 10 SLIME_BALL: 10 - EGG: 10 - COMPASS: 10 - RECOVERY_COMPASS: 10 - BUNDLE: 10 - FISHING_ROD: 10 - CLOCK: 10 + MELON_SLICE: 10 + COPPER_INGOT: 100 + DRAGON_BREATH: 10 + DIAMOND_LEGGINGS: 10 SPYGLASS: 10 - COD: 10 - SALMON: 10 - TROPICAL_FISH: 10 - PUFFERFISH: 10 - COOKED_COD: 10 - COOKED_SALMON: 10 + BAMBOO_CHEST_RAFT: 100 + LIGHT_BLUE_DYE: 10 + WITHER_SPAWN_EGG: 1 + LAPIS_LAZULI: 100 + LLAMA_SPAWN_EGG: 10 + LEATHER_HELMET: 10 + GOLDEN_SWORD: 100 + WARPED_FUNGUS_ON_A_STICK: 100 + PUMPKIN_SEEDS: 10 + JUNGLE_CHEST_BOAT: 100 + WOODEN_AXE: 100 INK_SAC: 10 - GLOW_INK_SAC: 10 - COCOA_BEANS: 10 - WHITE_DYE: 10 + BEETROOT: 10 + RECOVERY_COMPASS: 10 + SLIME_SPAWN_EGG: 10 + TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + COOKIE: 10 + FLINT: 10 ORANGE_DYE: 10 + IRON_LEGGINGS: 10 + LAVA_BUCKET: 10 + GLOW_INK_SAC: 10 + GOLDEN_HELMET: 10 + CROSSBOW: 10 + PUMPKIN_PIE: 10 + DIAMOND_AXE: 10 + MUSIC_DISC_5: 10 MAGENTA_DYE: 10 - LIGHT_BLUE_DYE: 10 - YELLOW_DYE: 10 - LIME_DYE: 10 - PINK_DYE: 10 - GRAY_DYE: 10 - LIGHT_GRAY_DYE: 10 - CYAN_DYE: 10 - PURPLE_DYE: 10 - BLUE_DYE: 10 - BROWN_DYE: 10 - GREEN_DYE: 10 - RED_DYE: 10 - BLACK_DYE: 10 - BONE_MEAL: 10 + PARROT_SPAWN_EGG: 10 + STICK: 10 + WATER_BUCKET: 10 + IRON_AXE: 100 + DROWNED_SPAWN_EGG: 10 + BRUSH: 10 + SHIELD: 10 + BAMBOO_RAFT: 100 + COD_SPAWN_EGG: 10 + CHICKEN: 10 BONE: 10 - SUGAR: 10 - COOKIE: 10 - SHEARS: 10 - MELON_SLICE: 10 - DRIED_KELP: 10 - PUMPKIN_SEEDS: 10 + POISONOUS_POTATO: 10 + SUSPICIOUS_STEW: 10 + MUSIC_DISC_FAR: 10 + PUFFERFISH: 10 + RED_DYE: 10 + PORKCHOP: 10 + WOODEN_PICKAXE: 100 + SPLASH_POTION: 10 + CHICKEN_SPAWN_EGG: 10 + TURTLE_SPAWN_EGG: 10 + FEATHER: 10 + COOKED_COD: 10 + DIAMOND_CHESTPLATE: 10 + COOKED_RABBIT: 10 + DARK_OAK_BOAT: 100 + TROPICAL_FISH_SPAWN_EGG: 10 + BOOK: 10 + YELLOW_DYE: 10 + CHORUS_FRUIT: 10 + RAW_IRON: 100 + TIPPED_ARROW: 10 + COOKED_SALMON: 10 + IRON_NUGGET: 10 MELON_SEEDS: 10 - BEEF: 10 - COOKED_BEEF: 10 - CHICKEN: 10 - COOKED_CHICKEN: 10 - ROTTEN_FLESH: 10 - ENDER_PEARL: 10 + WOODEN_SWORD: 100 GOLD_NUGGET: 10 - GLASS_BOTTLE: 10 - SPIDER_EYE: 10 - FERMENTED_SPIDER_EYE: 10 - ENDER_EYE: 10 - GLISTERING_MELON_SLICE: 10 - ALLAY_SPAWN_EGG: 10 - AXOLOTL_SPAWN_EGG: 10 - BAT_SPAWN_EGG: 10 - BEE_SPAWN_EGG: 10 - CAT_SPAWN_EGG: 10 - CAMEL_SPAWN_EGG: 10 - CAVE_SPIDER_SPAWN_EGG: 10 - CHICKEN_SPAWN_EGG: 10 - COD_SPAWN_EGG: 10 - COW_SPAWN_EGG: 10 + MUSIC_DISC_MELLOHI: 10 + GLOW_BERRIES: 10 + GOLDEN_AXE: 100 + NETHER_BRICK: 10 + CHAINMAIL_HELMET: 10 CREEPER_SPAWN_EGG: 10 - DOLPHIN_SPAWN_EGG: 10 - DONKEY_SPAWN_EGG: 10 - DROWNED_SPAWN_EGG: 10 - ELDER_GUARDIAN_SPAWN_EGG: 10 - ENDERMAN_SPAWN_EGG: 10 - ENDERMITE_SPAWN_EGG: 10 - EVOKER_SPAWN_EGG: 10 - FOX_SPAWN_EGG: 10 - FROG_SPAWN_EGG: 10 - GLOW_SQUID_SPAWN_EGG: 10 - GOAT_SPAWN_EGG: 10 - GUARDIAN_SPAWN_EGG: 10 - HORSE_SPAWN_EGG: 10 - HUSK_SPAWN_EGG: 10 - IRON_GOLEM_SPAWN_EGG: 10 - LLAMA_SPAWN_EGG: 10 - MOOSHROOM_SPAWN_EGG: 10 - MULE_SPAWN_EGG: 10 - OCELOT_SPAWN_EGG: 10 - PANDA_SPAWN_EGG: 10 - PARROT_SPAWN_EGG: 10 + BREAD: 10 + PAINTING: 10 + STONE_HOE: 100 + MANGROVE_CHEST_BOAT: 100 + CAT_SPAWN_EGG: 10 + SPIDER_SPAWN_EGG: 10 PHANTOM_SPAWN_EGG: 10 - PIG_SPAWN_EGG: 10 - PILLAGER_SPAWN_EGG: 10 - POLAR_BEAR_SPAWN_EGG: 10 - PUFFERFISH_SPAWN_EGG: 10 + WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + POTATO: 10 + COOKED_CHICKEN: 10 + BAT_SPAWN_EGG: 10 + FROG_SPAWN_EGG: 10 + MUSIC_DISC_OTHERSIDE: 10 + EXPERIENCE_BOTTLE: 10 + TADPOLE_SPAWN_EGG: 10 + POWDER_SNOW_BUCKET: 10 + PHANTOM_MEMBRANE: 10 + IRON_INGOT: 100 + DOLPHIN_SPAWN_EGG: 10 + SALMON: 10 + OAK_CHEST_BOAT: 100 + BONE_MEAL: 10 + LIME_DYE: 10 + MAP: 10 + OAK_BOAT: 100 + BAKED_POTATO: 10 + DIAMOND_SWORD: 100 + ACACIA_BOAT: 100 + GOLD_INGOT: 100 + DIAMOND_HOE: 10 + GOLDEN_SHOVEL: 100 + ITEM_FRAME: 10 RABBIT_SPAWN_EGG: 10 - RAVAGER_SPAWN_EGG: 10 - SALMON_SPAWN_EGG: 10 - SHEEP_SPAWN_EGG: 10 - SILVERFISH_SPAWN_EGG: 10 + COD: 10 + ENDER_EYE: 10 + GRAY_DYE: 10 + NETHERITE_BOOTS: 1 + DIAMOND_PICKAXE: 10 + EMERALD: 100 + DIAMOND_HELMET: 10 + SPRUCE_CHEST_BOAT: 100 + GOLDEN_CARROT: 10 + ENCHANTED_BOOK: 10 + PINK_DYE: 10 + CLAY_BALL: 10 + WANDERING_TRADER_SPAWN_EGG: 10 + MILK_BUCKET: 10 + LEATHER_BOOTS: 10 + IRON_HELMET: 10 + COOKED_BEEF: 10 + COCOA_BEANS: 10 SKELETON_SPAWN_EGG: 10 - SLIME_SPAWN_EGG: 10 + HEART_OF_THE_SEA: 10 + NETHER_STAR: 10 + VEX_SPAWN_EGG: 10 + COOKED_MUTTON: 10 + LEAD: 10 + RAW_COPPER: 100 + BLUE_DYE: 10 + COMPASS: 10 + LEATHER_LEGGINGS: 10 + MUSIC_DISC_CHIRP: 10 + NETHERITE_HELMET: 1 + SNOW_GOLEM_SPAWN_EGG: 10 + WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + CHERRY_CHEST_BOAT: 100 + CAMEL_SPAWN_EGG: 10 + FISHING_ROD: 10 + WARDEN_SPAWN_EGG: 1 + VINDICATOR_SPAWN_EGG: 10 + SCUTE: 100 + GOLDEN_CHESTPLATE: 10 + COAL: 100 + ENDER_PEARL: 10 + SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + CARROT: 10 + MUSIC_DISC_13: 10 + MUSIC_DISC_WARD: 10 + MUSIC_DISC_11: 10 + TRIDENT: 10 + AXOLOTL_BUCKET: 10 + EVOKER_SPAWN_EGG: 10 + GOAT_SPAWN_EGG: 10 + VILLAGER_SPAWN_EGG: 10 + MUSIC_DISC_PIGSTEP: 10 + GLASS_BOTTLE: 10 + WOODEN_HOE: 100 + QUARTZ: 100 + MUSIC_DISC_CAT: 10 SNIFFER_SPAWN_EGG: 10 - SNOW_GOLEM_SPAWN_EGG: 10 - SPIDER_SPAWN_EGG: 10 - SQUID_SPAWN_EGG: 10 - STRAY_SPAWN_EGG: 10 - TADPOLE_SPAWN_EGG: 10 + GLOW_SQUID_SPAWN_EGG: 10 TRADER_LLAMA_SPAWN_EGG: 10 - TROPICAL_FISH_SPAWN_EGG: 10 - TURTLE_SPAWN_EGG: 10 - VEX_SPAWN_EGG: 10 - VILLAGER_SPAWN_EGG: 10 - VINDICATOR_SPAWN_EGG: 10 - WANDERING_TRADER_SPAWN_EGG: 10 - WARDEN_SPAWN_EGG: 1 + DIAMOND_SHOVEL: 100 + SHEEP_SPAWN_EGG: 10 + NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 WITCH_SPAWN_EGG: 10 - WITHER_SPAWN_EGG: 1 - WOLF_SPAWN_EGG: 10 - ZOMBIE_SPAWN_EGG: 10 - ZOMBIE_HORSE_SPAWN_EGG: 10 - ZOMBIE_VILLAGER_SPAWN_EGG: 10 - ZOMBIFIED_PIGLIN_SPAWN_EGG: 10 - EXPERIENCE_BOTTLE: 10 - FIRE_CHARGE: 10 - WRITABLE_BOOK: 10 - ITEM_FRAME: 10 - GLOW_ITEM_FRAME: 10 - CARROT: 10 - POTATO: 10 - BAKED_POTATO: 10 - POISONOUS_POTATO: 10 - MAP: 10 - GOLDEN_CARROT: 10 - NETHER_STAR: 10 - PUMPKIN_PIE: 10 - FIREWORK_ROCKET: 10 - FIREWORK_STAR: 10 - ENCHANTED_BOOK: 10 - NETHER_BRICK: 10 - PRISMARINE_SHARD: 10 - PRISMARINE_CRYSTALS: 10 - RABBIT: 10 - COOKED_RABBIT: 10 - RABBIT_STEW: 10 - RABBIT_FOOT: 10 - RABBIT_HIDE: 10 + TNT_MINECART: 100 + ELYTRA: 100 ARMOR_STAND: 10 - LEAD: 10 NAME_TAG: 10 - MUTTON: 10 - COOKED_MUTTON: 10 - END_CRYSTAL: 10 - CHORUS_FRUIT: 10 - POPPED_CHORUS_FRUIT: 10 - TORCHFLOWER_SEEDS: 10 - BEETROOT: 10 - BEETROOT_SEEDS: 10 - BEETROOT_SOUP: 10 - DRAGON_BREATH: 10 - SPLASH_POTION: 10 + COOKED_PORKCHOP: 10 + GREEN_DYE: 10 + MULE_SPAWN_EGG: 10 + BOW: 100 + SUGAR: 10 + GLISTERING_MELON_SLICE: 10 + SWEET_BERRIES: 10 + RABBIT_HIDE: 10 + DIAMOND_BOOTS: 10 + COD_BUCKET: 10 + WRITABLE_BOOK: 10 + EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 SPECTRAL_ARROW: 10 - TIPPED_ARROW: 10 - LINGERING_POTION: 10 - SHIELD: 10 - TOTEM_OF_UNDYING: 1 - IRON_NUGGET: 10 - KNOWLEDGE_BOOK: 10 - MUSIC_DISC_13: 10 - MUSIC_DISC_CAT: 10 - MUSIC_DISC_BLOCKS: 10 - MUSIC_DISC_CHIRP: 10 - MUSIC_DISC_FAR: 10 - MUSIC_DISC_MALL: 10 - MUSIC_DISC_MELLOHI: 10 - MUSIC_DISC_STAL: 10 - MUSIC_DISC_STRAD: 10 - MUSIC_DISC_WARD: 10 - MUSIC_DISC_11: 10 - MUSIC_DISC_WAIT: 10 - MUSIC_DISC_OTHERSIDE: 10 - MUSIC_DISC_5: 10 - MUSIC_DISC_PIGSTEP: 10 - DISC_FRAGMENT_5: 10 - TRIDENT: 10 - PHANTOM_MEMBRANE: 10 - NAUTILUS_SHELL: 10 - HEART_OF_THE_SEA: 10 - CROSSBOW: 10 - SUSPICIOUS_STEW: 10 - FLOWER_BANNER_PATTERN: 10 - CREEPER_BANNER_PATTERN: 10 SKULL_BANNER_PATTERN: 10 - MOJANG_BANNER_PATTERN: 10 - GLOBE_BANNER_PATTERN: 10 - GOAT_HORN: 10 - SWEET_BERRIES: 10 - GLOW_BERRIES: 10 - HONEYCOMB: 10 - HONEY_BOTTLE: 10 + IRON_GOLEM_SPAWN_EGG: 10 + RABBIT: 10 + GUARDIAN_SPAWN_EGG: 10 + POLAR_BEAR_SPAWN_EGG: 10 + STONE_SWORD: 100 + ENDERMITE_SPAWN_EGG: 10 + SPRUCE_BOAT: 100 + JUNGLE_BOAT: 100 ECHO_SHARD: 10 - BRUSH: 10 - NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 - SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + GLOW_ITEM_FRAME: 10 + ROTTEN_FLESH: 10 + ACACIA_CHEST_BOAT: 100 + STONE_AXE: 100 + HUSK_SPAWN_EGG: 10 + TROPICAL_FISH: 10 + ZOMBIE_SPAWN_EGG: 10 + CHARCOAL: 100 + BEETROOT_SOUP: 10 + WHEAT_SEEDS: 10 + NETHERITE_CHESTPLATE: 1 + LEATHER: 10 + STONE_SHOVEL: 100 + CHAINMAIL_LEGGINGS: 10 + SNOWBALL: 10 + TROPICAL_FISH_BUCKET: 10 + FLOWER_BANNER_PATTERN: 10 + IRON_PICKAXE: 100 + EGG: 10 + STRAY_SPAWN_EGG: 10 + LIGHT_GRAY_DYE: 10 + MOOSHROOM_SPAWN_EGG: 10 + BRICK: 10 + PAPER: 10 + FERMENTED_SPIDER_EYE: 10 + LEATHER_CHESTPLATE: 10 + ENDERMAN_SPAWN_EGG: 10 + BUNDLE: 10 + IRON_SWORD: 100 + BEETROOT_SEEDS: 10 + DARK_OAK_CHEST_BOAT: 100 + SALMON_BUCKET: 10 + AMETHYST_SHARD: 100 + ALLAY_SPAWN_EGG: 10 DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + PILLAGER_SPAWN_EGG: 10 + BOWL: 10 + FIREWORK_ROCKET: 10 + RAVAGER_SPAWN_EGG: 10 nether: + NETHERITE_HELMET: 1 + GOLDEN_HORSE_ARMOR: 10 + APPLE: 10 + GOLD_NUGGET: 10 + GOLDEN_LEGGINGS: 10 + FISHING_ROD: 10 + GOLDEN_CHESTPLATE: 10 + CARROT_ON_A_STICK: 10 + ENDER_PEARL: 10 + NETHERITE_HOE: 1 + GOLDEN_AXE: 10 + NETHERITE_SWORD: 1 + NETHER_BRICK: 10 + GOLDEN_PICKAXE: 10 + HOPPER_MINECART: 10 + MAGMA_CUBE_SPAWN_EGG: 10 + PIGLIN_SPAWN_EGG: 10 MINECART: 10 - CHEST_MINECART: 10 - FURNACE_MINECART: 10 + QUARTZ: 10 + PIGLIN_BRUTE_SPAWN_EGG: 10 + ELYTRA: 10 TNT_MINECART: 10 - HOPPER_MINECART: 10 - CARROT_ON_A_STICK: 10 + MAGMA_CREAM: 10 + GOLDEN_SWORD: 10 + GHAST_TEAR: 10 WARPED_FUNGUS_ON_A_STICK: 10 - ELYTRA: 10 - FLINT_AND_STEEL: 10 - APPLE: 10 + COOKED_PORKCHOP: 10 BOW: 10 - ARROW: 10 - DIAMOND: 10 - EMERALD: 10 - QUARTZ: 10 - RAW_GOLD: 10 - GOLD_INGOT: 10 + FIRE_CHARGE: 10 + EXPERIENCE_BOTTLE: 10 + ZOGLIN_SPAWN_EGG: 10 NETHERITE_INGOT: 10 - NETHERITE_SCRAP: 10 - GOLDEN_SWORD: 10 - GOLDEN_SHOVEL: 10 - GOLDEN_PICKAXE: 10 - GOLDEN_AXE: 10 - GOLDEN_HOE: 10 - NETHERITE_SWORD: 1 - NETHERITE_SHOVEL: 1 - NETHERITE_PICKAXE: 1 - NETHERITE_AXE: 1 - NETHERITE_HOE: 1 - GOLDEN_HELMET: 10 - GOLDEN_CHESTPLATE: 10 - GOLDEN_LEGGINGS: 10 - GOLDEN_BOOTS: 10 - NETHERITE_HELMET: 1 - NETHERITE_CHESTPLATE: 1 - NETHERITE_LEGGINGS: 1 - NETHERITE_BOOTS: 1 + FLINT_AND_STEEL: 10 + SPECTRAL_ARROW: 10 FLINT: 10 - PORKCHOP: 10 - COOKED_PORKCHOP: 10 LAVA_BUCKET: 10 - SNOWBALL: 10 - FISHING_ROD: 10 + GOLDEN_HELMET: 10 + HOGLIN_SPAWN_EGG: 10 + DIAMOND_HORSE_ARMOR: 10 + NETHERITE_PICKAXE: 1 + CHEST_MINECART: 10 + DIAMOND: 10 GLOWSTONE_DUST: 10 - BONE: 10 - ENDER_PEARL: 10 - BLAZE_ROD: 10 - GHAST_TEAR: 10 - GOLD_NUGGET: 10 - BLAZE_POWDER: 10 - MAGMA_CREAM: 10 + GOLD_INGOT: 10 + RAW_GOLD: 10 + IRON_HORSE_ARMOR: 10 + GOLDEN_SHOVEL: 10 + BLAZE_SPAWN_EGG: 10 + TOTEM_OF_UNDYING: 10 + ARROW: 10 + NETHERITE_SCRAP: 10 + NETHERITE_CHESTPLATE: 1 + NETHERITE_AXE: 1 ENDER_EYE: 10 - BLAZE_SPAWN_EGG: 10 + FURNACE_MINECART: 10 + BONE: 10 + GOLDEN_HOE: 10 + NETHERITE_BOOTS: 1 + SNOWBALL: 10 + EMERALD: 10 + GOLDEN_BOOTS: 10 + PORKCHOP: 10 + NETHERITE_LEGGINGS: 1 ENDERMAN_SPAWN_EGG: 10 - HOGLIN_SPAWN_EGG: 10 - MAGMA_CUBE_SPAWN_EGG: 10 - PIGLIN_SPAWN_EGG: 10 - PIGLIN_BRUTE_SPAWN_EGG: 10 - ZOGLIN_SPAWN_EGG: 10 - EXPERIENCE_BOTTLE: 10 - FIRE_CHARGE: 10 - NETHER_STAR: 1 - NETHER_BRICK: 10 - IRON_HORSE_ARMOR: 10 - GOLDEN_HORSE_ARMOR: 10 - DIAMOND_HORSE_ARMOR: 10 LEATHER_HORSE_ARMOR: 10 - SPECTRAL_ARROW: 10 + BLAZE_ROD: 10 TIPPED_ARROW: 10 - TOTEM_OF_UNDYING: 10 + NETHER_STAR: 1 + BLAZE_POWDER: 10 + NETHERITE_SHOVEL: 1 end: - ELYTRA: 10 - FLINT_AND_STEEL: 10 + VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + MAGENTA_DYE: 10 + WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 APPLE: 10 - BOW: 10 - ARROW: 10 + DIAMOND_SWORD: 10 + DIAMOND: 10 + SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 COAL: 10 + SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + SHULKER_SPAWN_EGG: 10 + DIAMOND_HOE: 10 + COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + BREAD: 10 CHARCOAL: 10 - DIAMOND: 10 - EMERALD: 10 + TOTEM_OF_UNDYING: 10 + ARROW: 10 + POPPED_CHORUS_FRUIT: 10 QUARTZ: 10 - DIAMOND_SWORD: 10 - DIAMOND_SHOVEL: 10 DIAMOND_PICKAXE: 10 - DIAMOND_AXE: 10 - DIAMOND_HOE: 10 - BREAD: 10 - MAGENTA_DYE: 10 LIGHT_BLUE_DYE: 10 - PURPLE_DYE: 10 - ENDERMAN_SPAWN_EGG: 10 - SHULKER_SPAWN_EGG: 10 - FIREWORK_ROCKET: 10 + EMERALD: 10 + DIAMOND_SHOVEL: 10 + WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 + ELYTRA: 10 + SHULKER_SHELL: 10 FIREWORK_STAR: 10 + PURPLE_DYE: 10 + BOW: 10 END_CRYSTAL: 10 + RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + ENDERMAN_SPAWN_EGG: 10 + FLINT_AND_STEEL: 10 + EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 CHORUS_FRUIT: 10 - POPPED_CHORUS_FRUIT: 10 - TOTEM_OF_UNDYING: 10 - SHULKER_SHELL: 10 + DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 CROSSBOW: 10 - NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + DIAMOND_AXE: 10 + FIREWORK_ROCKET: 10 # World block types. If the material cannot be placed, bedrock will be used. # Format: Material : Probability # Block types must be Bukkit Material types. @@ -490,12 +490,12 @@ world: BROWN_MUSHROOM: 8 STONE_BRICKS: 10 DIRT_PATH: 7 - MAGENTA_TERRACOTTA: 10 RED_SAND: 20 + MAGENTA_TERRACOTTA: 10 FROSTED_ICE: 10 SMALL_AMETHYST_BUD: 10 - SPRUCE_PLANKS: 10 POWDER_SNOW_CAULDRON: 10 + SPRUCE_PLANKS: 10 GREEN_GLAZED_TERRACOTTA: 10 EXPOSED_CUT_COPPER: 10 WATER_CAULDRON: 10 @@ -509,8 +509,8 @@ world: CACTUS: 6 STICKY_PISTON: 10 BLUE_ORCHID: 10 - SMOOTH_QUARTZ: 10 STRIPPED_ACACIA_WOOD: 100 + SMOOTH_QUARTZ: 10 PUMPKIN: 9 STRIPPED_BIRCH_LOG: 100 LIGHT_BLUE_TERRACOTTA: 10 @@ -522,15 +522,15 @@ world: CRACKED_STONE_BRICKS: 10 SLIME_BLOCK: 10 ORANGE_TERRACOTTA: 10 - BLACK_CONCRETE: 10 RED_MUSHROOM: 8 - WAXED_WEATHERED_COPPER: 10 + BLACK_CONCRETE: 10 SPRUCE_SAPLING: 2 AZALEA: 10 + WAXED_WEATHERED_COPPER: 10 LIGHT_BLUE_STAINED_GLASS: 10 MUSHROOM_STEM: 10 - BLUE_TERRACOTTA: 10 JUNGLE_PLANKS: 10 + BLUE_TERRACOTTA: 10 BROWN_MUSHROOM_BLOCK: 10 BLACK_STAINED_GLASS: 10 MAGENTA_GLAZED_TERRACOTTA: 10 @@ -539,15 +539,15 @@ world: POINTED_DRIPSTONE: 10 WAXED_EXPOSED_COPPER: 10 DEAD_FIRE_CORAL_BLOCK: 10 - WHITE_GLAZED_TERRACOTTA: 10 CHISELED_SANDSTONE: 10 LIGHT_GRAY_TERRACOTTA: 10 + WHITE_GLAZED_TERRACOTTA: 10 DARK_OAK_SAPLING: 3 WAXED_OXIDIZED_COPPER: 10 GRASS_BLOCK: 200 RED_WOOL: 10 - EMERALD_ORE: 5 MAGENTA_STAINED_GLASS: 10 + EMERALD_ORE: 5 COAL_ORE: 70 ROOTED_DIRT: 10 POLISHED_ANDESITE: 10 @@ -566,9 +566,9 @@ world: DARK_OAK_WOOD: 108 GOLD_ORE: 3 POLISHED_BLACKSTONE: 10 - COPPER_BLOCK: 10 - CLAY: 5 TUBE_CORAL_BLOCK: 10 + CLAY: 5 + COPPER_BLOCK: 10 LILAC: 7 TARGET: 10 DRIPSTONE_BLOCK: 10 @@ -592,37 +592,37 @@ world: PINK_GLAZED_TERRACOTTA: 10 HAY_BLOCK: 10 MOSSY_STONE_BRICKS: 10 - PRISMARINE: 3 DANDELION: 106 + PRISMARINE: 3 RAW_COPPER_BLOCK: 10 DEAD_TUBE_CORAL_BLOCK: 10 AZALEA_LEAVES: 10 - SMOOTH_SANDSTONE: 10 RED_GLAZED_TERRACOTTA: 10 + SMOOTH_SANDSTONE: 10 ALLIUM: 102 OAK_SAPLING: 101 PEONY: 7 LAVA: 5 CHISELED_DEEPSLATE: 10 - AMETHYST_CLUSTER: 10 OXEYE_DAISY: 6 + AMETHYST_CLUSTER: 10 GRAY_CONCRETE: 10 DARK_OAK_LEAVES: 9 GRAVEL: 20 - WAXED_OXIDIZED_CUT_COPPER: 10 SEA_LANTERN: 10 - MOSS_BLOCK: 10 MELON: 105 + WAXED_OXIDIZED_CUT_COPPER: 10 + MOSS_BLOCK: 10 HONEYCOMB_BLOCK: 10 TERRACOTTA: 10 GREEN_CONCRETE: 10 END_STONE_BRICKS: 10 COBWEB: 7 - COARSE_DIRT: 107 CYAN_STAINED_GLASS: 10 + COARSE_DIRT: 107 LIGHT_GRAY_GLAZED_TERRACOTTA: 10 - SMOOTH_STONE: 10 LAPIS_ORE: 6 + SMOOTH_STONE: 10 ORANGE_CONCRETE: 10 OAK_LOG: 100 STRIPPED_JUNGLE_WOOD: 100 @@ -636,8 +636,8 @@ world: CHISELED_QUARTZ_BLOCK: 10 DEEPSLATE_EMERALD_ORE: 10 OAK_LEAVES: 4 - IRON_ORE: 100 PURPLE_GLAZED_TERRACOTTA: 10 + IRON_ORE: 100 WHITE_CONCRETE: 10 SPONGE: 10 STONE: 1080 @@ -645,14 +645,14 @@ world: ROSE_BUSH: 8 STRIPPED_SPRUCE_LOG: 100 EXPOSED_COPPER: 10 - SANDSTONE: 1020 SMOOTH_RED_SANDSTONE: 10 + SANDSTONE: 1020 BROWN_STAINED_GLASS: 10 ACACIA_LOG: 20 ORANGE_GLAZED_TERRACOTTA: 10 BRICKS: 10 - FERN: 4 WET_SPONGE: 10 + FERN: 4 TNT: 10 BOOKSHELF: 100 PINK_TULIP: 8 @@ -672,8 +672,8 @@ world: LIME_WOOL: 10 ORANGE_WOOL: 10 SCULK_SENSOR: 10 - HONEY_BLOCK: 10 LIME_TERRACOTTA: 10 + HONEY_BLOCK: 10 STRIPPED_DARK_OAK_WOOD: 100 WHITE_WOOL: 10 GREEN_TERRACOTTA: 10 @@ -686,8 +686,8 @@ world: OXIDIZED_CUT_COPPER: 10 GLASS: 10 TALL_GRASS: 103 - POLISHED_DEEPSLATE: 10 DEAD_BUSH: 10 + POLISHED_DEEPSLATE: 10 BLACK_GLAZED_TERRACOTTA: 10 BLUE_CONCRETE: 10 PETRIFIED_OAK_SLAB: 10 @@ -702,29 +702,28 @@ world: DEEPSLATE_IRON_ORE: 10 PACKED_ICE: 10 COAL_BLOCK: 10 - YELLOW_CONCRETE: 10 WHITE_STAINED_GLASS: 10 - PRISMARINE_BRICKS: 10 + YELLOW_CONCRETE: 10 SMOOTH_BASALT: 10 + PRISMARINE_BRICKS: 10 WEATHERED_CUT_COPPER: 10 LIGHT_BLUE_WOOL: 10 DARK_OAK_LOG: 100 CALCITE: 10 - RAW_GOLD_BLOCK: 10 CHISELED_STONE_BRICKS: 10 COPPER_ORE: 10 + RAW_GOLD_BLOCK: 10 PODZOL: 4 WAXED_CUT_COPPER: 10 REDSTONE_BLOCK: 10 DEEPSLATE_LAPIS_ORE: 10 - GRASS: 1000 WAXED_WEATHERED_CUT_COPPER: 10 LARGE_FERN: 8 PINK_TERRACOTTA: 10 FIRE_CORAL_BLOCK: 10 PURPLE_TERRACOTTA: 10 - GRAY_GLAZED_TERRACOTTA: 10 SNOW: 10 + GRAY_GLAZED_TERRACOTTA: 10 SUGAR_CANE: 4 DIRT: 10 COBBLED_DEEPSLATE: 10 @@ -737,17 +736,17 @@ world: WHITE_TERRACOTTA: 10 GRAY_TERRACOTTA: 10 DEEPSLATE_DIAMOND_ORE: 10 - DEAD_HORN_CORAL_BLOCK: 10 - AMETHYST_BLOCK: 10 DARK_OAK_PLANKS: 10 - SHROOMLIGHT: 10 + AMETHYST_BLOCK: 10 + DEAD_HORN_CORAL_BLOCK: 10 ACACIA_WOOD: 106 + SHROOMLIGHT: 10 CYAN_GLAZED_TERRACOTTA: 10 CUT_COPPER: 10 LIGHT_GRAY_STAINED_GLASS: 10 - GRAY_WOOL: 10 PINK_WOOL: 10 STRIPPED_DARK_OAK_LOG: 100 + GRAY_WOOL: 10 OBSIDIAN: 10 LIGHT_GRAY_WOOL: 10 AZURE_BLUET: 10 @@ -755,8 +754,8 @@ world: RED_CONCRETE: 10 WEATHERED_COPPER: 10 OAK_PLANKS: 10 - ACACIA_SAPLING: 107 CUT_RED_SANDSTONE: 10 + ACACIA_SAPLING: 107 BIRCH_SAPLING: 8 LIME_CONCRETE: 10 DEEPSLATE_COAL_ORE: 10 @@ -766,8 +765,8 @@ world: BIRCH_WOOD: 106 ACACIA_PLANKS: 10 MYCELIUM: 2 - BROWN_CONCRETE: 10 RED_SANDSTONE: 109 + BROWN_CONCRETE: 10 LODESTONE: 10 WAXED_EXPOSED_CUT_COPPER: 10 MAGENTA_CONCRETE: 10 @@ -776,12 +775,12 @@ world: BIRCH_LEAVES: 9 ORANGE_TULIP: 100 ANDESITE: 90 - BARREL: 10 BROWN_GLAZED_TERRACOTTA: 10 + BARREL: 10 + YELLOW_GLAZED_TERRACOTTA: 10 DEEPSLATE_GOLD_ORE: 10 - LAVA_CAULDRON: 10 BRAIN_CORAL_BLOCK: 10 - YELLOW_GLAZED_TERRACOTTA: 10 + LAVA_CAULDRON: 10 nether: # Generate SkyGrid Nether - if this is false, the nether world will not be made generate: true @@ -797,11 +796,11 @@ world: NETHERITE_BLOCK: 100 STRIPPED_CRIMSON_HYPHAE: 1000 MAGMA_BLOCK: 10 - STRIPPED_WARPED_STEM: 1000 GRAVEL: 100 - GILDED_BLACKSTONE: 100 - CRACKED_POLISHED_BLACKSTONE_BRICKS: 102 + STRIPPED_WARPED_STEM: 1000 BASALT: 20 + CRACKED_POLISHED_BLACKSTONE_BRICKS: 102 + GILDED_BLACKSTONE: 100 WARPED_WART_BLOCK: 10 CRACKED_NETHER_BRICKS: 100 CRIMSON_PLANKS: 1000 @@ -810,8 +809,8 @@ world: STRIPPED_CRIMSON_STEM: 1000 GLOWSTONE: 2 CHISELED_POLISHED_BLACKSTONE: 102 - ANCIENT_DEBRIS: 100 RED_NETHER_BRICKS: 102 + ANCIENT_DEBRIS: 100 NETHER_BRICKS: 102 SOUL_SAND: 90 BLACKSTONE: 100 @@ -843,20 +842,20 @@ world: blocks: CHEST: 10 END_ROD: 10 - CHORUS_PLANT: 2 OBSIDIAN: 5 + CHORUS_PLANT: 2 PURPLE_STAINED_GLASS: 50 AIR: 200 END_STONE: 200 - GRAVEL: 100 SPAWNER: 10 + GRAVEL: 100 PURPUR_BLOCK: 50 # 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. - end-frame-probability: 1 + end-frame-probability: 1.0 # Friendly name for this world. Used in admin commands. Must be a single word friendly-name: SkyGrid # Name of the world - if it does not exist then it will be generated. @@ -873,6 +872,10 @@ world: # SkyGrid height # This is the height of the top sky grid layer. 255 max. skygrid-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) @@ -887,63 +890,36 @@ world: # Mob white list - these mobs will NOT be removed when logging in or doing /island remove-mobs-whitelist: - WITHER - - ZOMBIE_VILLAGER - GUARDIAN - ZOMBIFIED_PIGLIN + - ZOMBIE_VILLAGER # 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 ANVIL: true - MINECART: true - FISH_SCOOPING: true TRAPPED_CHEST: true - END_PORTAL: true - BREEDING: true - HURT_VILLAGERS: true TREES_GROWING_OUTSIDE_RANGE: false + BOOKSHELF: true HARVEST: true FROST_WALKER: true - TURTLE_EGGS: true COLLECT_LAVA: true - BREAK_SPAWNERS: true LEVER: true - ELYTRA: true CAKE: true - RIDING: true HURT_MONSTERS: true - ARMOR_STAND: true - NAME_TAG: true CLEAN_SUPER_FLAT: false CHANGE_SETTINGS: true + SIGN_EDITING: true TRADING: true EGGS: true - ITEM_DROP: true CHEST: true - NOTE_BLOCK: true ENTER_EXIT_MESSAGES: true FLINT_AND_STEEL: true - NETHER_PORTAL: true SCULK_SENSOR: 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 @@ -951,30 +927,21 @@ world: AXOLOTL_SCOOPING: true BUTTON: true COMPOSTER: true - FIRE_EXTINGUISH: true COMMAND_RANKS: true - BEACON: true - ALLAY: true TRAPDOOR: true - PRESSURE_PLATE: true EXPERIENCE_BOTTLE_THROWING: true HIVE: true DYE: true - PLACE_BLOCKS: true ITEM_FRAME: true CROP_PLANTING: true CRAFTING: true - REMOVE_MOBS: true ENCHANTING: true SHEARING: true - FLOWER_POT: true BOAT: true BED: true SPAWN_EGGS: true - MILKING: true - DISPENSER: true SCULK_SHRIEKER: true - GATE: true + SMITHING: true EXPERIENCE_PICKUP: true PREVENT_TELEPORT_WHEN_FALLING: false HOPPER: true @@ -982,17 +949,61 @@ world: BREAK_BLOCKS: true MOUNT_INVENTORY: true OFFLINE_REDSTONE: true - CHORUS_FRUIT: true - CONTAINER: true JUKEBOX: true POTION_THROWING: true + HURT_ANIMALS: true + LOOM: true + REDSTONE: true + VISITOR_KEEP_INVENTORY: false + BUCKET: true + ENDER_PEARL: true + DOOR: true + BREAK_HOPPERS: true + FURNACE: true + LIQUIDS_FLOWING_OUT: false + MINECART: true + FISH_SCOOPING: true + END_PORTAL: true + BREEDING: true + HURT_VILLAGERS: true + TURTLE_EGGS: true + BREAK_SPAWNERS: true + ELYTRA: true + RIDING: true + ARMOR_STAND: true + NAME_TAG: true + ITEM_DROP: true + NOTE_BLOCK: true + NETHER_PORTAL: true + REMOVE_END_EXIT_ISLAND: true + LECTERN: true + SHULKER_BOX: true + OFFLINE_GROWTH: true + GRINDSTONE: true + ITEM_PICKUP: true + BREWING: true + STONECUTTING: true + FIRE_EXTINGUISH: true + BEACON: true + ALLAY: true + PRESSURE_PLATE: true + PLACE_BLOCKS: true + REMOVE_MOBS: true + FLOWER_POT: true + MILKING: true + DISPENSER: true + GATE: true + CHORUS_FRUIT: true + CONTAINER: true BARREL: true COLLECT_POWDERED_SNOW: true + CARTOGRAPHY: true # 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 + LOOM: 500 DRAGON_EGG: 500 REDSTONE: 500 BUCKET: 500 @@ -1008,6 +1019,7 @@ world: END_PORTAL: 500 BREEDING: 500 HURT_VILLAGERS: 500 + BOOKSHELF: 500 HARVEST: 500 FROST_WALKER: 500 TURTLE_EGGS: 500 @@ -1021,6 +1033,7 @@ world: NAME_TAG: 500 ARMOR_STAND: 500 CHANGE_SETTINGS: 10000 + SIGN_EDITING: 500 TRADING: 500 EGGS: 500 ITEM_DROP: 500 @@ -1031,6 +1044,7 @@ world: SCULK_SENSOR: 500 LECTERN: 500 SHULKER_BOX: 500 + GRINDSTONE: 500 ITEM_PICKUP: 500 CROP_TRAMPLE: 500 DROPPER: 500 @@ -1040,6 +1054,7 @@ world: AXOLOTL_SCOOPING: 500 COMPOSTER: 500 BUTTON: 500 + STONECUTTING: 500 FIRE_EXTINGUISH: 500 COMMAND_RANKS: 500 BEACON: 500 @@ -1063,6 +1078,7 @@ world: DISPENSER: 500 SCULK_SHRIEKER: 500 GATE: 500 + SMITHING: 500 EXPERIENCE_PICKUP: 500 HOPPER: 500 LEASH: 500 @@ -1074,6 +1090,7 @@ world: POTION_THROWING: 500 JUKEBOX: 500 COLLECT_POWDERED_SNOW: 500 + CARTOGRAPHY: 500 # These are the default settings for new protected areas default-settings: PVP_END: false From b4a730c5453e70928825a63b12f9a9e55ea8a524 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 14 Jan 2024 10:21:03 -0800 Subject: [PATCH 15/29] Update to 1.20.4 --- pom.xml | 2 +- .../world/bentobox/skygrid/generators/SkyGridChunks.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index cf7c7a5..69d11e6 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 2.0.9 - 1.20.2-R0.1-SNAPSHOT + 1.20.4-R0.1-SNAPSHOT 2.0.0-SNAPSHOT ${build.version}-SNAPSHOT diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java index b596158..725bd8f 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, From 994c84572167ce8e9e3c1ca760542916590093a1 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 14 Jan 2024 17:46:58 -0800 Subject: [PATCH 16/29] Fix Jacoco build error --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 69d11e6..4e0ecd4 100644 --- a/pom.xml +++ b/pom.xml @@ -334,6 +334,8 @@ **/*Names* + + org/bukkit/Material* From 2733d4c36f2741869f48115ac246c84f49af090a Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 14 Jan 2024 18:54:39 -0800 Subject: [PATCH 17/29] Update config.yml. Sort values. --- src/main/resources/config.yml | 1742 ++++++++++++++++----------------- 1 file changed, 871 insertions(+), 871 deletions(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 87f25ab..f18777d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -31,756 +31,756 @@ world: # Format: Material : Probability # Material values can be found at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html overworld: - SILVERFISH_SPAWN_EGG: 10 - ZOMBIE_HORSE_SPAWN_EGG: 10 - GOLDEN_APPLE: 10 - FOX_SPAWN_EGG: 10 - GOLDEN_LEGGINGS: 10 - CARROT_ON_A_STICK: 100 - ENCHANTED_GOLDEN_APPLE: 10 - IRON_BOOTS: 10 - OCELOT_SPAWN_EGG: 10 - SHEARS: 10 - HOPPER_MINECART: 100 - GOLDEN_PICKAXE: 100 - WOLF_SPAWN_EGG: 10 - SADDLE: 100 - BROWN_DYE: 10 + 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 - POPPED_CHORUS_FRUIT: 10 - ZOMBIFIED_PIGLIN_SPAWN_EGG: 10 - IRON_HOE: 100 - RABBIT_STEW: 10 - STONE_PICKAXE: 100 + 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 - FIREWORK_STAR: 10 - PURPLE_DYE: 10 - COW_SPAWN_EGG: 10 + CHAINMAIL_CHESTPLATE: 10 + CHAINMAIL_HELMET: 10 + CHAINMAIL_LEGGINGS: 10 + CHARCOAL: 100 CHERRY_BOAT: 100 - ELDER_GUARDIAN_SPAWN_EGG: 10 - FIRE_CHARGE: 10 - MANGROVE_BOAT: 100 - ZOMBIE_VILLAGER_SPAWN_EGG: 10 - GUNPOWDER: 10 - MUSHROOM_STEW: 10 - FLINT_AND_STEEL: 100 - IRON_CHESTPLATE: 10 - PRISMARINE_SHARD: 10 - BIRCH_CHEST_BOAT: 100 - HONEYCOMB: 10 - BEEF: 10 - DRIED_KELP: 10 - NAUTILUS_SHELL: 10 - CLOCK: 10 - MUTTON: 10 - GLOBE_BANNER_PATTERN: 10 - MUSIC_DISC_STRAD: 10 - SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - DONKEY_SPAWN_EGG: 10 - TADPOLE_BUCKET: 10 + CHERRY_CHEST_BOAT: 100 CHEST_MINECART: 100 - TURTLE_HELMET: 100 - PUFFERFISH_BUCKET: 10 + 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 - WOODEN_SHOVEL: 100 - PIG_SPAWN_EGG: 10 - SPIDER_EYE: 10 DISC_FRAGMENT_5: 10 - RAW_GOLD: 100 - TOTEM_OF_UNDYING: 1 - ARROW: 100 - CREEPER_BANNER_PATTERN: 10 - CHAINMAIL_CHESTPLATE: 10 - AXOLOTL_SPAWN_EGG: 10 - KNOWLEDGE_BOOK: 10 - MUSIC_DISC_MALL: 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 - MUSIC_DISC_STAL: 10 - IRON_SHOVEL: 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 - BLACK_DYE: 10 - MUSIC_DISC_BLOCKS: 10 - GOLDEN_BOOTS: 10 - PRISMARINE_CRYSTALS: 10 - MOJANG_BANNER_PATTERN: 10 - TORCHFLOWER_SEEDS: 10 - NETHERITE_LEGGINGS: 1 - CAVE_SPIDER_SPAWN_EGG: 10 - END_CRYSTAL: 10 - RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - CYAN_DYE: 10 + HONEYCOMB: 10 + HOPPER_MINECART: 100 HORSE_SPAWN_EGG: 10 - STRING: 10 - SQUID_SPAWN_EGG: 10 - PUFFERFISH_SPAWN_EGG: 10 - RABBIT_FOOT: 10 - SALMON_SPAWN_EGG: 10 - PANDA_SPAWN_EGG: 10 - APPLE: 100 - BIRCH_BOAT: 100 - REDSTONE: 100 - SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - BUCKET: 10 - MUSIC_DISC_WAIT: 10 - GOAT_HORN: 10 - LINGERING_POTION: 10 - COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - MINECART: 100 - WHITE_DYE: 10 - SLIME_BALL: 10 - MELON_SLICE: 10 - COPPER_INGOT: 100 - DRAGON_BREATH: 10 - DIAMOND_LEGGINGS: 10 - SPYGLASS: 10 - BAMBOO_CHEST_RAFT: 100 - LIGHT_BLUE_DYE: 10 - WITHER_SPAWN_EGG: 1 - LAPIS_LAZULI: 100 - LLAMA_SPAWN_EGG: 10 - LEATHER_HELMET: 10 - GOLDEN_SWORD: 100 - WARPED_FUNGUS_ON_A_STICK: 100 - PUMPKIN_SEEDS: 10 - JUNGLE_CHEST_BOAT: 100 - WOODEN_AXE: 100 + HUSK_SPAWN_EGG: 10 INK_SAC: 10 - BEETROOT: 10 - RECOVERY_COMPASS: 10 - SLIME_SPAWN_EGG: 10 - TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - COOKIE: 10 - FLINT: 10 - ORANGE_DYE: 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 - GLOW_INK_SAC: 10 - GOLDEN_HELMET: 10 - CROSSBOW: 10 - PUMPKIN_PIE: 10 - DIAMOND_AXE: 10 - MUSIC_DISC_5: 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 - PARROT_SPAWN_EGG: 10 - STICK: 10 - WATER_BUCKET: 10 - IRON_AXE: 100 - DROWNED_SPAWN_EGG: 10 - BRUSH: 10 - SHIELD: 10 - BAMBOO_RAFT: 100 - COD_SPAWN_EGG: 10 - CHICKEN: 10 - BONE: 10 - POISONOUS_POTATO: 10 - SUSPICIOUS_STEW: 10 - MUSIC_DISC_FAR: 10 - PUFFERFISH: 10 - RED_DYE: 10 - PORKCHOP: 10 - WOODEN_PICKAXE: 100 - SPLASH_POTION: 10 - CHICKEN_SPAWN_EGG: 10 - TURTLE_SPAWN_EGG: 10 - FEATHER: 10 - COOKED_COD: 10 - DIAMOND_CHESTPLATE: 10 - COOKED_RABBIT: 10 - DARK_OAK_BOAT: 100 - TROPICAL_FISH_SPAWN_EGG: 10 - BOOK: 10 - YELLOW_DYE: 10 - CHORUS_FRUIT: 10 - RAW_IRON: 100 - TIPPED_ARROW: 10 - COOKED_SALMON: 10 - IRON_NUGGET: 10 + MANGROVE_BOAT: 100 + MANGROVE_CHEST_BOAT: 100 + MAP: 10 MELON_SEEDS: 10 - WOODEN_SWORD: 100 - GOLD_NUGGET: 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 - GLOW_BERRIES: 10 - GOLDEN_AXE: 100 + 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 - CHAINMAIL_HELMET: 10 - CREEPER_SPAWN_EGG: 10 - BREAD: 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 - STONE_HOE: 100 - MANGROVE_CHEST_BOAT: 100 - CAT_SPAWN_EGG: 10 - SPIDER_SPAWN_EGG: 10 + PANDA_SPAWN_EGG: 10 + PAPER: 10 + PARROT_SPAWN_EGG: 10 + PHANTOM_MEMBRANE: 10 PHANTOM_SPAWN_EGG: 10 - WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 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 - COOKED_CHICKEN: 10 - BAT_SPAWN_EGG: 10 - FROG_SPAWN_EGG: 10 - MUSIC_DISC_OTHERSIDE: 10 - EXPERIENCE_BOTTLE: 10 - TADPOLE_SPAWN_EGG: 10 POWDER_SNOW_BUCKET: 10 - PHANTOM_MEMBRANE: 10 - IRON_INGOT: 100 - DOLPHIN_SPAWN_EGG: 10 - SALMON: 10 - OAK_CHEST_BOAT: 100 - BONE_MEAL: 10 - LIME_DYE: 10 - MAP: 10 - OAK_BOAT: 100 - BAKED_POTATO: 10 - DIAMOND_SWORD: 100 - ACACIA_BOAT: 100 - GOLD_INGOT: 100 - DIAMOND_HOE: 10 - GOLDEN_SHOVEL: 100 - ITEM_FRAME: 10 - RABBIT_SPAWN_EGG: 10 - COD: 10 - ENDER_EYE: 10 - GRAY_DYE: 10 - NETHERITE_BOOTS: 1 - DIAMOND_PICKAXE: 10 - EMERALD: 100 - DIAMOND_HELMET: 10 - SPRUCE_CHEST_BOAT: 100 - GOLDEN_CARROT: 10 - ENCHANTED_BOOK: 10 - PINK_DYE: 10 - CLAY_BALL: 10 - WANDERING_TRADER_SPAWN_EGG: 10 - MILK_BUCKET: 10 - LEATHER_BOOTS: 10 - IRON_HELMET: 10 - COOKED_BEEF: 10 - COCOA_BEANS: 10 - SKELETON_SPAWN_EGG: 10 - HEART_OF_THE_SEA: 10 - NETHER_STAR: 10 - VEX_SPAWN_EGG: 10 - COOKED_MUTTON: 10 - LEAD: 10 - RAW_COPPER: 100 - BLUE_DYE: 10 - COMPASS: 10 - LEATHER_LEGGINGS: 10 - MUSIC_DISC_CHIRP: 10 - NETHERITE_HELMET: 1 - SNOW_GOLEM_SPAWN_EGG: 10 - WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - CHERRY_CHEST_BOAT: 100 - CAMEL_SPAWN_EGG: 10 - FISHING_ROD: 10 - WARDEN_SPAWN_EGG: 1 - VINDICATOR_SPAWN_EGG: 10 - SCUTE: 100 - GOLDEN_CHESTPLATE: 10 - COAL: 100 - ENDER_PEARL: 10 - SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - CARROT: 10 - MUSIC_DISC_13: 10 - MUSIC_DISC_WARD: 10 - MUSIC_DISC_11: 10 - TRIDENT: 10 - AXOLOTL_BUCKET: 10 - EVOKER_SPAWN_EGG: 10 - GOAT_SPAWN_EGG: 10 - VILLAGER_SPAWN_EGG: 10 - MUSIC_DISC_PIGSTEP: 10 - GLASS_BOTTLE: 10 - WOODEN_HOE: 100 + 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 - MUSIC_DISC_CAT: 10 - SNIFFER_SPAWN_EGG: 10 - GLOW_SQUID_SPAWN_EGG: 10 - TRADER_LLAMA_SPAWN_EGG: 10 - DIAMOND_SHOVEL: 100 - SHEEP_SPAWN_EGG: 10 - NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 - WITCH_SPAWN_EGG: 10 - TNT_MINECART: 100 - ELYTRA: 100 - ARMOR_STAND: 10 - NAME_TAG: 10 - COOKED_PORKCHOP: 10 - GREEN_DYE: 10 - MULE_SPAWN_EGG: 10 - BOW: 100 - SUGAR: 10 - GLISTERING_MELON_SLICE: 10 - SWEET_BERRIES: 10 + RABBIT_FOOT: 10 RABBIT_HIDE: 10 - DIAMOND_BOOTS: 10 - COD_BUCKET: 10 - WRITABLE_BOOK: 10 - EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - SPECTRAL_ARROW: 10 - SKULL_BANNER_PATTERN: 10 - IRON_GOLEM_SPAWN_EGG: 10 + RABBIT_SPAWN_EGG: 10 + RABBIT_STEW: 10 RABBIT: 10 - GUARDIAN_SPAWN_EGG: 10 - POLAR_BEAR_SPAWN_EGG: 10 - STONE_SWORD: 100 - ENDERMITE_SPAWN_EGG: 10 - SPRUCE_BOAT: 100 - JUNGLE_BOAT: 100 - ECHO_SHARD: 10 - GLOW_ITEM_FRAME: 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 - ACACIA_CHEST_BOAT: 100 + SADDLE: 100 + SALMON_BUCKET: 10 + SALMON_SPAWN_EGG: 10 + SALMON: 10 + SCUTE: 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 - HUSK_SPAWN_EGG: 10 - TROPICAL_FISH: 10 - ZOMBIE_SPAWN_EGG: 10 - CHARCOAL: 100 - BEETROOT_SOUP: 10 - WHEAT_SEEDS: 10 - NETHERITE_CHESTPLATE: 1 - LEATHER: 10 + STONE_HOE: 100 + STONE_PICKAXE: 100 STONE_SHOVEL: 100 - CHAINMAIL_LEGGINGS: 10 - SNOWBALL: 10 - TROPICAL_FISH_BUCKET: 10 - FLOWER_BANNER_PATTERN: 10 - IRON_PICKAXE: 100 - EGG: 10 + STONE_SWORD: 100 STRAY_SPAWN_EGG: 10 - LIGHT_GRAY_DYE: 10 - MOOSHROOM_SPAWN_EGG: 10 - BRICK: 10 - PAPER: 10 - FERMENTED_SPIDER_EYE: 10 - LEATHER_CHESTPLATE: 10 - ENDERMAN_SPAWN_EGG: 10 - BUNDLE: 10 - IRON_SWORD: 100 - BEETROOT_SEEDS: 10 - DARK_OAK_CHEST_BOAT: 100 - SALMON_BUCKET: 10 - AMETHYST_SHARD: 100 - ALLAY_SPAWN_EGG: 10 - DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - PILLAGER_SPAWN_EGG: 10 - BOWL: 10 - FIREWORK_ROCKET: 10 - RAVAGER_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: - NETHERITE_HELMET: 1 - GOLDEN_HORSE_ARMOR: 10 APPLE: 10 - GOLD_NUGGET: 10 - GOLDEN_LEGGINGS: 10 - FISHING_ROD: 10 - GOLDEN_CHESTPLATE: 10 + ARROW: 10 + BLAZE_POWDER: 10 + BLAZE_ROD: 10 + BLAZE_SPAWN_EGG: 10 + BONE: 10 + BOW: 10 CARROT_ON_A_STICK: 10 - ENDER_PEARL: 10 - NETHERITE_HOE: 1 - GOLDEN_AXE: 10 - NETHERITE_SWORD: 1 - NETHER_BRICK: 10 - GOLDEN_PICKAXE: 10 - HOPPER_MINECART: 10 - MAGMA_CUBE_SPAWN_EGG: 10 - PIGLIN_SPAWN_EGG: 10 - MINECART: 10 - QUARTZ: 10 - PIGLIN_BRUTE_SPAWN_EGG: 10 - ELYTRA: 10 - TNT_MINECART: 10 - MAGMA_CREAM: 10 - GOLDEN_SWORD: 10 - GHAST_TEAR: 10 - WARPED_FUNGUS_ON_A_STICK: 10 + CHEST_MINECART: 10 COOKED_PORKCHOP: 10 - BOW: 10 - FIRE_CHARGE: 10 + DIAMOND_HORSE_ARMOR: 10 + DIAMOND: 10 + ELYTRA: 10 + EMERALD: 10 + ENDER_EYE: 10 + ENDER_PEARL: 10 + ENDERMAN_SPAWN_EGG: 10 EXPERIENCE_BOTTLE: 10 - ZOGLIN_SPAWN_EGG: 10 - NETHERITE_INGOT: 10 + FIRE_CHARGE: 10 + FISHING_ROD: 10 FLINT_AND_STEEL: 10 - SPECTRAL_ARROW: 10 FLINT: 10 - LAVA_BUCKET: 10 - GOLDEN_HELMET: 10 - HOGLIN_SPAWN_EGG: 10 - DIAMOND_HORSE_ARMOR: 10 - NETHERITE_PICKAXE: 1 - CHEST_MINECART: 10 - DIAMOND: 10 + FURNACE_MINECART: 10 + GHAST_TEAR: 10 GLOWSTONE_DUST: 10 GOLD_INGOT: 10 - RAW_GOLD: 10 - IRON_HORSE_ARMOR: 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 - BLAZE_SPAWN_EGG: 10 - TOTEM_OF_UNDYING: 10 - ARROW: 10 - NETHERITE_SCRAP: 10 - NETHERITE_CHESTPLATE: 1 + 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 - ENDER_EYE: 10 - FURNACE_MINECART: 10 - BONE: 10 - GOLDEN_HOE: 10 NETHERITE_BOOTS: 1 - SNOWBALL: 10 - EMERALD: 10 - GOLDEN_BOOTS: 10 - PORKCHOP: 10 + NETHERITE_CHESTPLATE: 1 + NETHERITE_HELMET: 1 + NETHERITE_HOE: 1 + NETHERITE_INGOT: 10 NETHERITE_LEGGINGS: 1 - ENDERMAN_SPAWN_EGG: 10 - LEATHER_HORSE_ARMOR: 10 - BLAZE_ROD: 10 - TIPPED_ARROW: 10 - NETHER_STAR: 1 - BLAZE_POWDER: 10 + 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: - VEX_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - MAGENTA_DYE: 10 - WARD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 APPLE: 10 - DIAMOND_SWORD: 10 - DIAMOND: 10 - SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - COAL: 10 - SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - SHULKER_SPAWN_EGG: 10 - DIAMOND_HOE: 10 - COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + ARROW: 10 + BOW: 10 BREAD: 10 CHARCOAL: 10 - TOTEM_OF_UNDYING: 10 - ARROW: 10 - POPPED_CHORUS_FRUIT: 10 - QUARTZ: 10 + CHORUS_FRUIT: 10 + COAL: 10 + COAST_ARMOR_TRIM_SMITHING_TEMPLATE: 10 + CROSSBOW: 10 + DIAMOND_AXE: 10 + DIAMOND_HOE: 10 DIAMOND_PICKAXE: 10 - LIGHT_BLUE_DYE: 10 - EMERALD: 10 DIAMOND_SHOVEL: 10 - WILD_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - NETHERITE_UPGRADE_SMITHING_TEMPLATE: 10 + DIAMOND_SWORD: 10 + DIAMOND: 10 + DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 ELYTRA: 10 - SHULKER_SHELL: 10 - FIREWORK_STAR: 10 - PURPLE_DYE: 10 - BOW: 10 + EMERALD: 10 END_CRYSTAL: 10 - RIB_ARMOR_TRIM_SMITHING_TEMPLATE: 10 ENDERMAN_SPAWN_EGG: 10 - FLINT_AND_STEEL: 10 EYE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - TIDE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - CHORUS_FRUIT: 10 - DUNE_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - CROSSBOW: 10 - SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 - DIAMOND_AXE: 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. # Chests have different items in them in different world types. # Over world blocks. Beware of making too many chests, they can lag a lot. blocks: - BROWN_MUSHROOM: 8 - STONE_BRICKS: 10 - DIRT_PATH: 7 - RED_SAND: 20 - MAGENTA_TERRACOTTA: 10 - FROSTED_ICE: 10 - SMALL_AMETHYST_BUD: 10 - POWDER_SNOW_CAULDRON: 10 - SPRUCE_PLANKS: 10 - GREEN_GLAZED_TERRACOTTA: 10 - EXPOSED_CUT_COPPER: 10 - WATER_CAULDRON: 10 - GREEN_WOOL: 10 + ACACIA_LEAVES: 8 + ACACIA_LOG: 20 + ACACIA_PLANKS: 10 + ACACIA_SAPLING: 107 + ACACIA_WOOD: 106 + ALLIUM: 102 + AMETHYST_BLOCK: 10 + AMETHYST_CLUSTER: 10 + ANDESITE: 90 + AZALEA_LEAVES: 10 + AZALEA: 10 + AZURE_BLUET: 10 + BARREL: 10 + BEE_NEST: 10 + BEETROOTS: 9 + BIRCH_LEAVES: 9 + BIRCH_LOG: 2 + BIRCH_PLANKS: 10 + BIRCH_SAPLING: 8 + BIRCH_WOOD: 106 + BLACK_CONCRETE: 10 + BLACK_GLAZED_TERRACOTTA: 10 + BLACK_STAINED_GLASS: 10 + BLACK_TERRACOTTA: 10 BLACK_WOOL: 10 - PURPLE_CONCRETE: 10 - LARGE_AMETHYST_BUD: 10 - OAK_WOOD: 109 - WHITE_TULIP: 2 - GRAY_STAINED_GLASS: 10 - CACTUS: 6 - STICKY_PISTON: 10 + BLUE_CONCRETE: 10 + BLUE_GLAZED_TERRACOTTA: 10 + BLUE_ICE: 10 BLUE_ORCHID: 10 - STRIPPED_ACACIA_WOOD: 100 - SMOOTH_QUARTZ: 10 - PUMPKIN: 9 - STRIPPED_BIRCH_LOG: 100 - LIGHT_BLUE_TERRACOTTA: 10 - WHEAT: 4 - BROWN_WOOL: 10 BLUE_STAINED_GLASS: 10 - PINK_CONCRETE: 10 - STRIPPED_BIRCH_WOOD: 100 - CRACKED_STONE_BRICKS: 10 - SLIME_BLOCK: 10 - ORANGE_TERRACOTTA: 10 - RED_MUSHROOM: 8 - BLACK_CONCRETE: 10 - SPRUCE_SAPLING: 2 - AZALEA: 10 - WAXED_WEATHERED_COPPER: 10 - LIGHT_BLUE_STAINED_GLASS: 10 - MUSHROOM_STEM: 10 - JUNGLE_PLANKS: 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 - BLACK_STAINED_GLASS: 10 - MAGENTA_GLAZED_TERRACOTTA: 10 - COBBLESTONE: 10 - REDSTONE_ORE: 3 - POINTED_DRIPSTONE: 10 - WAXED_EXPOSED_COPPER: 10 - DEAD_FIRE_CORAL_BLOCK: 10 + BROWN_MUSHROOM: 8 + BROWN_STAINED_GLASS: 10 + BROWN_TERRACOTTA: 10 + BROWN_WOOL: 10 + BUBBLE_CORAL_BLOCK: 10 + CACTUS: 6 + CALCITE: 10 + CHEST: 105 + CHISELED_DEEPSLATE: 10 + CHISELED_QUARTZ_BLOCK: 10 + CHISELED_RED_SANDSTONE: 10 CHISELED_SANDSTONE: 10 - LIGHT_GRAY_TERRACOTTA: 10 - WHITE_GLAZED_TERRACOTTA: 10 - DARK_OAK_SAPLING: 3 - WAXED_OXIDIZED_COPPER: 10 - GRASS_BLOCK: 200 - RED_WOOL: 10 - MAGENTA_STAINED_GLASS: 10 - EMERALD_ORE: 5 - COAL_ORE: 70 - ROOTED_DIRT: 10 - POLISHED_ANDESITE: 10 - SUNFLOWER: 3 - LIGHT_BLUE_GLAZED_TERRACOTTA: 10 - PINK_STAINED_GLASS: 10 - OXIDIZED_COPPER: 10 - INFESTED_COBBLESTONE: 10 - DIORITE: 2 - BLUE_ICE: 10 - SCAFFOLDING: 10 - LIGHT_BLUE_CONCRETE: 10 - STRIPPED_OAK_WOOD: 100 - HORN_CORAL_BLOCK: 10 - CYAN_WOOL: 10 - DARK_OAK_WOOD: 108 - GOLD_ORE: 3 - POLISHED_BLACKSTONE: 10 - TUBE_CORAL_BLOCK: 10 + CHISELED_STONE_BRICKS: 10 CLAY: 5 + COAL_BLOCK: 10 + COAL_ORE: 70 + COARSE_DIRT: 107 + COBBLED_DEEPSLATE: 10 + COBBLESTONE: 10 + COBWEB: 7 + COMPOSTER: 10 COPPER_BLOCK: 10 - LILAC: 7 - TARGET: 10 - DRIPSTONE_BLOCK: 10 - DARK_PRISMARINE: 3 - STRIPPED_JUNGLE_LOG: 100 + COPPER_ORE: 10 CRACKED_DEEPSLATE_BRICKS: 10 - BUBBLE_CORAL_BLOCK: 10 - BLUE_GLAZED_TERRACOTTA: 10 - ACACIA_LEAVES: 8 - STRIPPED_SPRUCE_WOOD: 100 - LIGHT_GRAY_CONCRETE: 10 - YELLOW_TERRACOTTA: 10 - GRANITE: 50 - SAND: 50 - CHISELED_RED_SANDSTONE: 10 - JUNGLE_LEAVES: 100 - JUNGLE_WOOD: 20 - BROWN_TERRACOTTA: 10 - RED_TULIP: 3 - JUNGLE_LOG: 107 - PINK_GLAZED_TERRACOTTA: 10 - HAY_BLOCK: 10 - MOSSY_STONE_BRICKS: 10 - DANDELION: 106 - PRISMARINE: 3 - RAW_COPPER_BLOCK: 10 - DEAD_TUBE_CORAL_BLOCK: 10 - AZALEA_LEAVES: 10 - RED_GLAZED_TERRACOTTA: 10 - SMOOTH_SANDSTONE: 10 - ALLIUM: 102 - OAK_SAPLING: 101 - PEONY: 7 - LAVA: 5 - CHISELED_DEEPSLATE: 10 - OXEYE_DAISY: 6 - AMETHYST_CLUSTER: 10 - GRAY_CONCRETE: 10 - DARK_OAK_LEAVES: 9 - GRAVEL: 20 - SEA_LANTERN: 10 - MELON: 105 - WAXED_OXIDIZED_CUT_COPPER: 10 - MOSS_BLOCK: 10 - HONEYCOMB_BLOCK: 10 - TERRACOTTA: 10 - GREEN_CONCRETE: 10 - END_STONE_BRICKS: 10 - COBWEB: 7 + 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 - COARSE_DIRT: 107 - LIGHT_GRAY_GLAZED_TERRACOTTA: 10 - LAPIS_ORE: 6 - SMOOTH_STONE: 10 - ORANGE_CONCRETE: 10 - OAK_LOG: 100 - STRIPPED_JUNGLE_WOOD: 100 + CYAN_TERRACOTTA: 10 + CYAN_WOOL: 10 + DANDELION: 106 + DARK_OAK_LEAVES: 9 + DARK_OAK_LOG: 100 + DARK_OAK_PLANKS: 10 + DARK_OAK_SAPLING: 3 + DARK_OAK_WOOD: 108 + DARK_PRISMARINE: 3 DEAD_BRAIN_CORAL_BLOCK: 10 - TINTED_GLASS: 10 - WAXED_COPPER_BLOCK: 10 - BIRCH_PLANKS: 10 - DIAMOND_ORE: 10 + DEAD_BUBBLE_CORAL_BLOCK: 10 + DEAD_BUSH: 10 + DEAD_FIRE_CORAL_BLOCK: 10 + DEAD_HORN_CORAL_BLOCK: 10 + DEAD_TUBE_CORAL_BLOCK: 10 + DEEPSLATE_COAL_ORE: 10 DEEPSLATE_COPPER_ORE: 10 - CYAN_CONCRETE: 10 - CHISELED_QUARTZ_BLOCK: 10 + DEEPSLATE_DIAMOND_ORE: 10 DEEPSLATE_EMERALD_ORE: 10 - OAK_LEAVES: 4 - PURPLE_GLAZED_TERRACOTTA: 10 - IRON_ORE: 100 - WHITE_CONCRETE: 10 - SPONGE: 10 - STONE: 1080 - YELLOW_WOOL: 10 - ROSE_BUSH: 8 - STRIPPED_SPRUCE_LOG: 100 + DEEPSLATE_GOLD_ORE: 10 + DEEPSLATE_IRON_ORE: 10 + DEEPSLATE_LAPIS_ORE: 10 + DEEPSLATE_REDSTONE_ORE: 10 + DEEPSLATE: 10 + DIAMOND_ORE: 10 + DIORITE: 2 + DIRT_PATH: 7 + DIRT: 10 + DRIPSTONE_BLOCK: 10 + EMERALD_ORE: 5 + END_STONE_BRICKS: 10 EXPOSED_COPPER: 10 - SMOOTH_RED_SANDSTONE: 10 - SANDSTONE: 1020 - BROWN_STAINED_GLASS: 10 - ACACIA_LOG: 20 - ORANGE_GLAZED_TERRACOTTA: 10 - BRICKS: 10 - WET_SPONGE: 10 + EXPOSED_CUT_COPPER: 10 + FARMLAND: 7 FERN: 4 - TNT: 10 - BOOKSHELF: 100 - PINK_TULIP: 8 - POLISHED_GRANITE: 10 - STRIPPED_ACACIA_LOG: 100 - RAW_IRON_BLOCK: 10 + FIRE_CORAL_BLOCK: 10 + FROSTED_ICE: 10 + GLASS: 10 + GOLD_ORE: 3 + GRANITE: 50 + GRASS_BLOCK: 200 + GRAVEL: 20 + 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 - YELLOW_STAINED_GLASS: 10 - DEAD_BUBBLE_CORAL_BLOCK: 10 - SPRUCE_WOOD: 9 - DEEPSLATE: 10 - BLACK_TERRACOTTA: 10 - BEE_NEST: 10 - STRIPPED_OAK_LOG: 100 - CHEST: 105 - SPRUCE_LOG: 3 - LIME_WOOL: 10 - ORANGE_WOOL: 10 - SCULK_SENSOR: 10 + JUNGLE_WOOD: 20 + LAPIS_ORE: 6 + LARGE_AMETHYST_BUD: 10 + LARGE_FERN: 8 + LAVA_CAULDRON: 10 + LAVA: 5 + 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: 10 + LIME_GLAZED_TERRACOTTA: 10 + LIME_STAINED_GLASS: 10 LIME_TERRACOTTA: 10 - HONEY_BLOCK: 10 - STRIPPED_DARK_OAK_WOOD: 100 - WHITE_WOOL: 10 - GREEN_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 - SMALL_DRIPLEAF: 10 - LIME_STAINED_GLASS: 10 - COMPOSTER: 10 - RED_MUSHROOM_BLOCK: 10 + MELON: 105 + MOSS_BLOCK: 10 + MOSSY_COBBLESTONE: 10 + MOSSY_STONE_BRICKS: 10 + MUSHROOM_STEM: 10 + MYCELIUM: 2 + OAK_LEAVES: 4 + 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: 10 OXIDIZED_CUT_COPPER: 10 - GLASS: 10 - TALL_GRASS: 103 - DEAD_BUSH: 10 - POLISHED_DEEPSLATE: 10 - BLACK_GLAZED_TERRACOTTA: 10 - BLUE_CONCRETE: 10 + PACKED_ICE: 10 + PEONY: 7 PETRIFIED_OAK_SLAB: 10 - REDSTONE_LAMP: 10 - RED_STAINED_GLASS: 10 - GREEN_STAINED_GLASS: 10 - BLUE_WOOL: 10 - DEEPSLATE_REDSTONE_ORE: 10 - FARMLAND: 7 + PINK_CONCRETE: 10 + PINK_GLAZED_TERRACOTTA: 10 + PINK_STAINED_GLASS: 10 + PINK_TERRACOTTA: 10 + PINK_TULIP: 8 + PINK_WOOL: 10 + PODZOL: 4 + POINTED_DRIPSTONE: 10 + POLISHED_ANDESITE: 10 + POLISHED_BASALT: 10 + POLISHED_BLACKSTONE: 10 + POLISHED_DEEPSLATE: 10 + POLISHED_DIORITE: 10 + POLISHED_GRANITE: 10 POPPY: 5 - CYAN_TERRACOTTA: 10 - DEEPSLATE_IRON_ORE: 10 - PACKED_ICE: 10 - COAL_BLOCK: 10 - WHITE_STAINED_GLASS: 10 - YELLOW_CONCRETE: 10 - SMOOTH_BASALT: 10 + POWDER_SNOW_CAULDRON: 10 PRISMARINE_BRICKS: 10 - WEATHERED_CUT_COPPER: 10 - LIGHT_BLUE_WOOL: 10 - DARK_OAK_LOG: 100 - CALCITE: 10 - CHISELED_STONE_BRICKS: 10 - COPPER_ORE: 10 + PRISMARINE: 3 + PUMPKIN: 9 + PURPLE_CONCRETE: 10 + PURPLE_GLAZED_TERRACOTTA: 10 + PURPLE_TERRACOTTA: 10 + RAW_COPPER_BLOCK: 10 RAW_GOLD_BLOCK: 10 - PODZOL: 4 + RAW_IRON_BLOCK: 10 + RED_CONCRETE: 10 + RED_GLAZED_TERRACOTTA: 10 + RED_MUSHROOM_BLOCK: 10 + RED_MUSHROOM: 8 + RED_SAND: 20 + RED_SANDSTONE: 109 + RED_STAINED_GLASS: 10 + RED_TERRACOTTA: 10 + RED_TULIP: 3 + RED_WOOL: 10 + REDSTONE_BLOCK: 10 + REDSTONE_LAMP: 10 + REDSTONE_ORE: 3 + ROOTED_DIRT: 10 + ROSE_BUSH: 8 + SAND: 50 + 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: 10 + SPRUCE_LEAVES: 9 + SPRUCE_LOG: 3 + SPRUCE_PLANKS: 10 + SPRUCE_SAPLING: 2 + SPRUCE_WOOD: 9 + 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: 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 - REDSTONE_BLOCK: 10 - DEEPSLATE_LAPIS_ORE: 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 - LARGE_FERN: 8 - PINK_TERRACOTTA: 10 - FIRE_CORAL_BLOCK: 10 - PURPLE_TERRACOTTA: 10 - SNOW: 10 - GRAY_GLAZED_TERRACOTTA: 10 - SUGAR_CANE: 4 - DIRT: 10 - COBBLED_DEEPSLATE: 10 - BONE_BLOCK: 10 - SPAWNER: 5 - POLISHED_BASALT: 10 - POLISHED_DIORITE: 10 - MOSSY_COBBLESTONE: 10 - CUT_SANDSTONE: 10 - WHITE_TERRACOTTA: 10 - GRAY_TERRACOTTA: 10 - DEEPSLATE_DIAMOND_ORE: 10 - DARK_OAK_PLANKS: 10 - AMETHYST_BLOCK: 10 - DEAD_HORN_CORAL_BLOCK: 10 - ACACIA_WOOD: 106 - SHROOMLIGHT: 10 - CYAN_GLAZED_TERRACOTTA: 10 - CUT_COPPER: 10 - LIGHT_GRAY_STAINED_GLASS: 10 - PINK_WOOL: 10 - STRIPPED_DARK_OAK_LOG: 100 - GRAY_WOOL: 10 - OBSIDIAN: 10 - LIGHT_GRAY_WOOL: 10 - AZURE_BLUET: 10 - LIME_GLAZED_TERRACOTTA: 10 - RED_CONCRETE: 10 WEATHERED_COPPER: 10 - OAK_PLANKS: 10 - CUT_RED_SANDSTONE: 10 - ACACIA_SAPLING: 107 - BIRCH_SAPLING: 8 - LIME_CONCRETE: 10 - DEEPSLATE_COAL_ORE: 10 - BEETROOTS: 9 - BIRCH_LOG: 2 - RED_TERRACOTTA: 10 - BIRCH_WOOD: 106 - ACACIA_PLANKS: 10 - MYCELIUM: 2 - RED_SANDSTONE: 109 - BROWN_CONCRETE: 10 - LODESTONE: 10 - WAXED_EXPOSED_CUT_COPPER: 10 - MAGENTA_CONCRETE: 10 - SPRUCE_LEAVES: 9 - SNOW_BLOCK: 10 - BIRCH_LEAVES: 9 - ORANGE_TULIP: 100 - ANDESITE: 90 - BROWN_GLAZED_TERRACOTTA: 10 - BARREL: 10 + WEATHERED_CUT_COPPER: 10 + WET_SPONGE: 10 + WHEAT: 4 + WHITE_CONCRETE: 10 + WHITE_GLAZED_TERRACOTTA: 10 + WHITE_STAINED_GLASS: 10 + WHITE_TERRACOTTA: 10 + WHITE_TULIP: 2 + WHITE_WOOL: 10 + YELLOW_CONCRETE: 10 YELLOW_GLAZED_TERRACOTTA: 10 - DEEPSLATE_GOLD_ORE: 10 - BRAIN_CORAL_BLOCK: 10 - LAVA_CAULDRON: 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 @@ -788,48 +788,48 @@ world: # Beware with glowstone and lava - the lighting calcs will lag the # server badly if there are too many blocks. blocks: - POLISHED_BLACKSTONE_BRICKS: 102 - STRIPPED_WARPED_HYPHAE: 1000 - LAVA: 10 - OBSIDIAN: 100 - NETHER_QUARTZ_ORE: 105 - NETHERITE_BLOCK: 100 - STRIPPED_CRIMSON_HYPHAE: 1000 - MAGMA_BLOCK: 10 - GRAVEL: 100 - STRIPPED_WARPED_STEM: 1000 + ANCIENT_DEBRIS: 100 BASALT: 20 - CRACKED_POLISHED_BLACKSTONE_BRICKS: 102 - GILDED_BLACKSTONE: 100 - WARPED_WART_BLOCK: 10 + BLACKSTONE: 100 + BONE_BLOCK: 100 + CHEST: 105 + CHISELED_NETHER_BRICKS: 102 + CHISELED_POLISHED_BLACKSTONE: 102 + COBWEB: 7 CRACKED_NETHER_BRICKS: 100 + CRACKED_POLISHED_BLACKSTONE_BRICKS: 102 CRIMSON_PLANKS: 1000 - COBWEB: 7 - WARPED_NYLIUM: 10 - STRIPPED_CRIMSON_STEM: 1000 + CRYING_OBSIDIAN: 100 + GILDED_BLACKSTONE: 100 GLOWSTONE: 2 - CHISELED_POLISHED_BLACKSTONE: 102 - RED_NETHER_BRICKS: 102 - ANCIENT_DEBRIS: 100 + GRAVEL: 100 + LAVA: 10 + MAGMA_BLOCK: 10 NETHER_BRICKS: 102 - SOUL_SAND: 90 - BLACKSTONE: 100 - POLISHED_BLACKSTONE_BRICK_STAIRS: 102 - NETHER_WART_BLOCK: 102 NETHER_GOLD_ORE: 102 - BONE_BLOCK: 100 - SPAWNER: 2 - WARPED_ROOTS: 10 - CHEST: 105 - WARPED_FUNGUS: 10 + NETHER_QUARTZ_ORE: 105 + NETHER_WART_BLOCK: 102 NETHER_WART: 109 + NETHERITE_BLOCK: 100 NETHERRACK: 200 - WARPED_PLANKS: 10 - WARPED_HYPHAE: 10 + OBSIDIAN: 100 + POLISHED_BLACKSTONE_BRICK_STAIRS: 102 + POLISHED_BLACKSTONE_BRICKS: 102 + RED_NETHER_BRICKS: 102 RESPAWN_ANCHOR: 10 - CHISELED_NETHER_BRICKS: 102 + SOUL_SAND: 90 SOUL_SOIL: 80 - CRYING_OBSIDIAN: 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. @@ -840,16 +840,16 @@ world: generate: true # The End blocks. blocks: + AIR: 200 CHEST: 10 - END_ROD: 10 - OBSIDIAN: 5 CHORUS_PLANT: 2 - PURPLE_STAINED_GLASS: 50 - AIR: 200 + END_ROD: 10 END_STONE: 200 - SPAWNER: 10 GRAVEL: 100 + OBSIDIAN: 5 + PURPLE_STAINED_GLASS: 50 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. @@ -889,225 +889,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 - - ZOMBIE_VILLAGER + - WITHER # World flags. These are boolean settings for various flags for this world flags: - DRAGON_EGG: true - ISLAND_RESPAWN: true - LOCK: true - PETS_STAY_AT_HOME: true - NATURAL_SPAWNING_OUTSIDE_RANGE: true + ALLAY: true ANVIL: true - TRAPPED_CHEST: true - TREES_GROWING_OUTSIDE_RANGE: false + ARMOR_STAND: true + AXOLOTL_SCOOPING: true + BARREL: true + BEACON: true + BED: true + BOAT: true BOOKSHELF: true - HARVEST: true - FROST_WALKER: true - COLLECT_LAVA: true - LEVER: true + BREAK_BLOCKS: true + BREAK_HOPPERS: true + BREAK_SPAWNERS: true + BREEDING: true + BREWING: true + BUCKET: true + BUTTON: true CAKE: true - HURT_MONSTERS: true - CLEAN_SUPER_FLAT: false + CARTOGRAPHY: true CHANGE_SETTINGS: true - SIGN_EDITING: true - TRADING: true - EGGS: true CHEST: true - ENTER_EXIT_MESSAGES: true - FLINT_AND_STEEL: true - SCULK_SENSOR: true - CROP_TRAMPLE: 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 - AXOLOTL_SCOOPING: true - BUTTON: true - COMPOSTER: true COMMAND_RANKS: true - TRAPDOOR: true - EXPERIENCE_BOTTLE_THROWING: true - HIVE: true - DYE: true - ITEM_FRAME: true - CROP_PLANTING: true + COMPOSTER: true + CONTAINER: true CRAFTING: 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 - BOAT: true - BED: true - SPAWN_EGGS: true - SCULK_SHRIEKER: true - SMITHING: true - EXPERIENCE_PICKUP: true - PREVENT_TELEPORT_WHEN_FALLING: false - HOPPER: true - LEASH: true - BREAK_BLOCKS: true - MOUNT_INVENTORY: true - OFFLINE_REDSTONE: true - JUKEBOX: true - POTION_THROWING: true - HURT_ANIMALS: true - LOOM: true - REDSTONE: true - VISITOR_KEEP_INVENTORY: false - BUCKET: true + END_PORTAL: true ENDER_PEARL: true - DOOR: true - BREAK_HOPPERS: 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 + FROST_WALKER: true FURNACE: true + GATE: true + 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 + LECTERN: true + LEVER: true LIQUIDS_FLOWING_OUT: false + LOCK: true + LOOM: true + MILKING: true MINECART: true - FISH_SCOOPING: true - END_PORTAL: true - BREEDING: true - HURT_VILLAGERS: true - TURTLE_EGGS: true - BREAK_SPAWNERS: true - ELYTRA: true - RIDING: true - ARMOR_STAND: true + MOUNT_INVENTORY: true NAME_TAG: true - ITEM_DROP: true - NOTE_BLOCK: true + NATURAL_SPAWNING_OUTSIDE_RANGE: true NETHER_PORTAL: true - REMOVE_END_EXIT_ISLAND: true - LECTERN: true - SHULKER_BOX: true + NOTE_BLOCK: true + OBSIDIAN_SCOOPING: true OFFLINE_GROWTH: true - GRINDSTONE: true - ITEM_PICKUP: true - BREWING: true - STONECUTTING: true - FIRE_EXTINGUISH: true - BEACON: true - ALLAY: true - PRESSURE_PLATE: true + OFFLINE_REDSTONE: true + PETS_STAY_AT_HOME: true PLACE_BLOCKS: true + POTION_THROWING: true + PRESSURE_PLATE: true + PREVENT_TELEPORT_WHEN_FALLING: false + REDSTONE: true + REMOVE_END_EXIT_ISLAND: true REMOVE_MOBS: true - FLOWER_POT: true - MILKING: true - DISPENSER: true - GATE: true - CHORUS_FRUIT: true - CONTAINER: true - BARREL: true - COLLECT_POWDERED_SNOW: true - CARTOGRAPHY: 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 - LOOM: 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 + ARMOR_STAND: 500 + AXOLOTL_SCOOPING: 500 + BARREL: 500 + BEACON: 500 + BED: 500 + BOAT: 500 BOOKSHELF: 500 - HARVEST: 500 - FROST_WALKER: 500 - TURTLE_EGGS: 500 - COLLECT_LAVA: 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 + CARTOGRAPHY: 500 CHANGE_SETTINGS: 10000 - SIGN_EDITING: 500 - TRADING: 500 - EGGS: 500 - ITEM_DROP: 500 CHEST: 500 - NOTE_BLOCK: 500 - FLINT_AND_STEEL: 500 - NETHER_PORTAL: 500 - SCULK_SENSOR: 500 - LECTERN: 500 - SHULKER_BOX: 500 - GRINDSTONE: 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 - AXOLOTL_SCOOPING: 500 - COMPOSTER: 500 - BUTTON: 500 - STONECUTTING: 500 - FIRE_EXTINGUISH: 500 COMMAND_RANKS: 500 - BEACON: 500 - ALLAY: 500 - TRAPDOOR: 500 - EXPERIENCE_BOTTLE_THROWING: 500 - PRESSURE_PLATE: 500 - DYE: 500 - HIVE: 500 - PLACE_BLOCKS: 500 - ITEM_FRAME: 500 - CROP_PLANTING: 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 - SCULK_SHRIEKER: 500 + FROST_WALKER: 500 + FURNACE: 500 GATE: 500 - SMITHING: 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 - COLLECT_POWDERED_SNOW: 500 - CARTOGRAPHY: 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 - ENDERMAN_TELEPORT: true ANIMAL_NATURAL_SPAWN: true - MONSTER_NATURAL_SPAWN: true - SHULKER_TELEPORT: true - FIRE_SPREAD: true + ANIMAL_SPAWNERS_SPAWN: true + BLOCK_EXPLODE_DAMAGE: true + ENDERMAN_TELEPORT: true FIRE_BURNING: true - PVP_OVERWORLD: false + 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 - FIRE_IGNITE: true - ANIMAL_SPAWNERS_SPAWN: true - BLOCK_EXPLODE_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: [] From bfc53a4a0089321d2f147f6a1027d029969eb823 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 14 Jan 2024 18:54:51 -0800 Subject: [PATCH 18/29] Add newer biomes, etc. --- .../bentobox/skygrid/generators/Biomes.java | 6 +++ .../skygrid/generators/SkyGridPop.java | 43 +++++++------------ 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/generators/Biomes.java b/src/main/java/world/bentobox/skygrid/generators/Biomes.java index 4fa641c..ba5ecc5 100644 --- a/src/main/java/world/bentobox/skygrid/generators/Biomes.java +++ b/src/main/java/world/bentobox/skygrid/generators/Biomes.java @@ -26,12 +26,18 @@ public enum Biomes { SNOWY_BEACH(Environment.NORMAL, Biome.SNOWY_BEACH, 0, 100), STONY_PEAKS(Environment.NORMAL, Biome.STONY_PEAKS, 20, 60), DESERT(Environment.NORMAL, Biome.DESERT, 60, 4), + BADLANDS(Environment.NORMAL, Biome.BADLANDS, 90, 1), FOREST(Environment.NORMAL, Biome.FOREST, 50, 60), + FLOWER_FOREST(Environment.NORMAL, Biome.FLOWER_FOREST, 50, 60), + BIRCH_FOREST(Environment.NORMAL, Biome.BIRCH_FOREST, 50, 59), PLAINS(Environment.NORMAL, Biome.PLAINS, 40, 30), + 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), // Nether NETHER_WASTES(Environment.NETHER, Biome.NETHER_WASTES, 40, 30), SOUL_SAND_VALLEY(Environment.NETHER, Biome.SOUL_SAND_VALLEY, 40, 70), diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java index 92f1c7e..73116db 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java @@ -148,33 +148,22 @@ private void setFrame(int xx, int zz, Block frame) { } 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); - } - + // Set sapling type if there is one specific to this biome + Material sapling = switch (b.getBiome()) { + 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)]; + }; + b.setType(sapling); } private void setSpawner(Block b) { From f8e07222cace73dc65cdb97c939bd4d086f5486e Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 14 Jan 2024 20:11:15 -0800 Subject: [PATCH 19/29] Add 2D Biomes back in --- .../java/world/bentobox/skygrid/SkyGrid.java | 12 +++- .../generators/SkyGridBiomeProvider.java | 62 +++++++++++++++++++ .../{Biomes.java => SkyGridBiomes.java} | 39 +++++++----- .../skygrid/generators/SkyGridGen.java | 48 +++++++++++++- 4 files changed, 142 insertions(+), 19 deletions(-) create mode 100644 src/main/java/world/bentobox/skygrid/generators/SkyGridBiomeProvider.java rename src/main/java/world/bentobox/skygrid/generators/{Biomes.java => SkyGridBiomes.java} (83%) diff --git a/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java index 3c15765..9193dfd 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(); } } 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..c4687f3 --- /dev/null +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomeProvider.java @@ -0,0 +1,62 @@ +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.concurrent.ConcurrentHashMap; + +import org.bukkit.World; +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 final Map temperatureGenMap = new ConcurrentHashMap<>(); + private final Map rainfallGenMap = new ConcurrentHashMap<>(); + + + @Override + public Biome getBiome(WorldInfo worldInfo, int realX, int y, int realZ) { + + // 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; + } + + @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 83% rename from src/main/java/world/bentobox/skygrid/generators/Biomes.java rename to src/main/java/world/bentobox/skygrid/generators/SkyGridBiomes.java index ba5ecc5..fb716f9 100644 --- a/src/main/java/world/bentobox/skygrid/generators/Biomes.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomes.java @@ -17,20 +17,15 @@ * 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), FLOWER_FOREST(Environment.NORMAL, Biome.FLOWER_FOREST, 50, 60), BIRCH_FOREST(Environment.NORMAL, Biome.BIRCH_FOREST, 50, 59), - PLAINS(Environment.NORMAL, Biome.PLAINS, 40, 30), CHERRY_GROVE(Environment.NORMAL, Biome.CHERRY_GROVE, 45, 35), SWAMP(Environment.NORMAL, Biome.SWAMP, 40, 70), JUNGLE(Environment.NORMAL, Biome.JUNGLE, 60, 50), @@ -38,6 +33,12 @@ public enum Biomes { 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), @@ -56,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; @@ -71,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 @@ -113,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/SkyGridGen.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java index 7a58b0a..beae04b 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java @@ -33,7 +33,6 @@ public SkyGridGen(SkyGrid addon) { 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())); - } @Override @@ -46,5 +45,52 @@ public Location getFixedSpawnLocation(World world, Random random) { return new Location(world, 0, addon.getSettings().getIslandHeight() + 2D, 0); } + /** + * 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 From 4cf1b76b00511dc4e212e344dff835da46e3f788 Mon Sep 17 00:00:00 2001 From: tastybento Date: Mon, 15 Jan 2024 10:11:19 -0800 Subject: [PATCH 20/29] Version 2.0.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4e0ecd4..a179ba8 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ -LOCAL - 1.20.0 + 2.0.0 BentoBoxWorld_SkyGrid bentobox-world From ae61a9b58e146ee0c270bfe886c72ee532c8fcce Mon Sep 17 00:00:00 2001 From: tastybento Date: Mon, 15 Jan 2024 10:11:42 -0800 Subject: [PATCH 21/29] Rewrote world generation to use new API --- .../java/world/bentobox/skygrid/SkyGrid.java | 7 +- .../generators/SkyGridBiomeProvider.java | 15 +++ .../skygrid/generators/SkyGridChunks.java | 39 +++++++- .../skygrid/generators/SkyGridGen.java | 75 +++++++++++++-- .../skygrid/generators/SkyGridPop.java | 95 +++++++++++-------- src/main/resources/config.yml | 18 +--- 6 files changed, 184 insertions(+), 65 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java index 9193dfd..d619664 100644 --- a/src/main/java/world/bentobox/skygrid/SkyGrid.java +++ b/src/main/java/world/bentobox/skygrid/SkyGrid.java @@ -92,7 +92,7 @@ public void createWorlds() { } BiomeProvider bp = new SkyGridBiomeProvider(); // Create the world if it does not exist - islandWorld = WorldCreator.name(worldName).environment(World.Environment.NORMAL).generator(gen) + islandWorld = WorldCreator.name(worldName).environment(World.Environment.NORMAL).generator(gen).seed(123456L) .biomeProvider(bp).createWorld(); // Make the nether if it does not exist @@ -134,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 index c4687f3..9315696 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomeProvider.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridBiomeProvider.java @@ -5,9 +5,11 @@ 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; @@ -18,6 +20,7 @@ */ public class SkyGridBiomeProvider extends BiomeProvider { + private static final Random RAND = new Random(); private final Map temperatureGenMap = new ConcurrentHashMap<>(); private final Map rainfallGenMap = new ConcurrentHashMap<>(); @@ -25,6 +28,11 @@ public class SkyGridBiomeProvider extends BiomeProvider { @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); @@ -54,6 +62,13 @@ public Biome getBiome(WorldInfo worldInfo, int realX, int y, int realZ) { 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/SkyGridChunks.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java index 725bd8f..b67c9db 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java @@ -57,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); } } @@ -91,6 +114,18 @@ 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 beae04b..02d8773 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,7 +19,6 @@ public class SkyGridGen extends ChunkGenerator { private final SkyGrid addon; private final BlockPopulator populator; - private final SkyGridChunks preMade; /** * @param addon - addon @@ -26,18 +26,74 @@ public class SkyGridGen extends ChunkGenerator { public SkyGridGen(SkyGrid addon) { 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 @@ -45,6 +101,11 @@ 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 diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java index 73116db..7f938f8 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java @@ -1,32 +1,38 @@ package world.bentobox.skygrid.generators; +import java.util.HashMap; +import java.util.Map; import java.util.Map.Entry; import java.util.NavigableMap; 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 NavigableMap chestItemsWorld = new TreeMap<>(); private final NavigableMap chestItemsNether = new TreeMap<>(); @@ -34,8 +40,8 @@ public class SkyGridPop extends BlockPopulator { private int worldTotal; private int netherTotal; private int endTotal; - private Random random; - private Chunk chunk; + private Map rand = new HashMap<>(); + private Random random = new Random(); private static final Material[] SAPLING_TYPE = { Material.ACACIA_SAPLING, @@ -50,7 +56,7 @@ 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 for (Entry en : addon.getSettings().getChestItemsOverworld().entrySet()) { worldTotal += en.getValue(); @@ -70,40 +76,47 @@ public SkyGridPop(SkyGrid addon) { } - @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; @@ -113,21 +126,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, addon.getSettings().getEndFrameHeight(), 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); @@ -144,12 +157,12 @@ 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) { + private void setSaplingType(LimitedRegion region, Location loc) { // Set sapling type if there is one specific to this biome - Material sapling = switch (b.getBiome()) { + 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; @@ -163,12 +176,12 @@ private void setSaplingType(Block b) { case MUSHROOM_FIELDS -> random.nextBoolean() ? Material.RED_MUSHROOM : Material.BROWN_MUSHROOM; default -> SAPLING_TYPE[random.nextInt(6)]; }; - b.setType(sapling); + 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); @@ -176,11 +189,11 @@ 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()) { + 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); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f18777d..3fb0783 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -543,11 +543,10 @@ world: COAL_BLOCK: 10 COAL_ORE: 70 COARSE_DIRT: 107 - COBBLED_DEEPSLATE: 10 - COBBLESTONE: 10 + COBBLESTONE: 50 COBWEB: 7 COMPOSTER: 10 - COPPER_BLOCK: 10 + COPPER_BLOCK: 5 COPPER_ORE: 10 CRACKED_DEEPSLATE_BRICKS: 10 CRACKED_STONE_BRICKS: 10 @@ -572,15 +571,6 @@ world: DEAD_FIRE_CORAL_BLOCK: 10 DEAD_HORN_CORAL_BLOCK: 10 DEAD_TUBE_CORAL_BLOCK: 10 - DEEPSLATE_COAL_ORE: 10 - DEEPSLATE_COPPER_ORE: 10 - DEEPSLATE_DIAMOND_ORE: 10 - DEEPSLATE_EMERALD_ORE: 10 - DEEPSLATE_GOLD_ORE: 10 - DEEPSLATE_IRON_ORE: 10 - DEEPSLATE_LAPIS_ORE: 10 - DEEPSLATE_REDSTONE_ORE: 10 - DEEPSLATE: 10 DIAMOND_ORE: 10 DIORITE: 2 DIRT_PATH: 7 @@ -854,8 +844,8 @@ world: # 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. - end-frame-probability: 1.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 # Name of the world - if it does not exist then it will be generated. From c893883beac8626a08cff682bfed57f5b732b52d Mon Sep 17 00:00:00 2001 From: tastybento Date: Mon, 15 Jan 2024 10:50:15 -0800 Subject: [PATCH 22/29] Remove seedworld deletion system --- PULL_REQUEST_TEMPLATE.md | 5 ----- src/main/java/world/bentobox/skygrid/SkyGrid.java | 4 ---- 2 files changed, 9 deletions(-) delete mode 100644 PULL_REQUEST_TEMPLATE.md 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/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java index d619664..bb4e394 100644 --- a/src/main/java/world/bentobox/skygrid/SkyGrid.java +++ b/src/main/java/world/bentobox/skygrid/SkyGrid.java @@ -135,8 +135,4 @@ public void saveWorldSettings() { } - @Override - public boolean isUsesNewChunkGeneration() { - return true; - } } From 2384a35999aab8a3e1640a3ea6b2eac8d121bc28 Mon Sep 17 00:00:00 2001 From: tastybento Date: Mon, 15 Jan 2024 21:58:16 -0800 Subject: [PATCH 23/29] Remove hard coded seed --- src/main/java/world/bentobox/skygrid/SkyGrid.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java index bb4e394..1b485cc 100644 --- a/src/main/java/world/bentobox/skygrid/SkyGrid.java +++ b/src/main/java/world/bentobox/skygrid/SkyGrid.java @@ -92,7 +92,7 @@ public void createWorlds() { } BiomeProvider bp = new SkyGridBiomeProvider(); // Create the world if it does not exist - islandWorld = WorldCreator.name(worldName).environment(World.Environment.NORMAL).generator(gen).seed(123456L) + islandWorld = WorldCreator.name(worldName).environment(World.Environment.NORMAL).generator(gen) .biomeProvider(bp).createWorld(); // Make the nether if it does not exist From 31e6790b09942c4dc2a97ccd8926471fe0d59613 Mon Sep 17 00:00:00 2001 From: tastybento Date: Mon, 15 Jan 2024 22:59:22 -0800 Subject: [PATCH 24/29] Fix area deletion --- src/main/java/world/bentobox/skygrid/Settings.java | 2 +- src/main/java/world/bentobox/skygrid/SkyGrid.java | 4 ++++ .../java/world/bentobox/skygrid/generators/SkyGridGen.java | 1 + src/test/java/world/bentobox/skygrid/SettingsTest.java | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/Settings.java b/src/main/java/world/bentobox/skygrid/Settings.java index dc0011b..3808aaf 100644 --- a/src/main/java/world/bentobox/skygrid/Settings.java +++ b/src/main/java/world/bentobox/skygrid/Settings.java @@ -1207,7 +1207,7 @@ public boolean isNetherIslands() { @Override public boolean isUseOwnGenerator() { - return true; + return false; } @Override diff --git a/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java index 1b485cc..44a2af6 100644 --- a/src/main/java/world/bentobox/skygrid/SkyGrid.java +++ b/src/main/java/world/bentobox/skygrid/SkyGrid.java @@ -135,4 +135,8 @@ public void saveWorldSettings() { } + @Override + public boolean isUsesNewChunkGeneration() { + return true; + } } diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java index 02d8773..ba063d1 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java @@ -24,6 +24,7 @@ public class SkyGridGen extends ChunkGenerator { * @param addon - addon */ public SkyGridGen(SkyGrid addon) { + super(); this.addon = addon; this.populator = new SkyGridPop(addon); } diff --git a/src/test/java/world/bentobox/skygrid/SettingsTest.java b/src/test/java/world/bentobox/skygrid/SettingsTest.java index e625883..bdafe0b 100644 --- a/src/test/java/world/bentobox/skygrid/SettingsTest.java +++ b/src/test/java/world/bentobox/skygrid/SettingsTest.java @@ -305,7 +305,7 @@ public void testGetIslandHeight() { */ @Test public void testIsUseOwnGenerator() { - assertTrue(s.isUseOwnGenerator()); + assertFalse(s.isUseOwnGenerator()); } /** From 87b35a69411382ec63aa9c9bf0d7aad98a34b8b6 Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 16 Jul 2024 21:32:43 -0700 Subject: [PATCH 25/29] Version 2.1.0 --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index a179ba8..a86217f 100644 --- a/pom.xml +++ b/pom.xml @@ -54,18 +54,18 @@ UTF-8 UTF-8 - 17 + 21 2.0.9 - 1.20.4-R0.1-SNAPSHOT - 2.0.0-SNAPSHOT + 1.21-R0.1-SNAPSHOT + 2.4.1-SNAPSHOT ${build.version}-SNAPSHOT -LOCAL - 2.0.0 + 2.1.0 BentoBoxWorld_SkyGrid bentobox-world From 47ca0599f78739725fdf3e2804be251fe139f1e7 Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 16 Jul 2024 21:32:58 -0700 Subject: [PATCH 26/29] Bring up to 1.21 --- .../skygrid/generators/WorldStyles.java | 99 +++++++++++-------- 1 file changed, 56 insertions(+), 43 deletions(-) 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; } From 0f1f6294c353acd8bda2e76af5b3295b40367f61 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 20 Jul 2024 07:47:26 -0700 Subject: [PATCH 27/29] Update GitHub action Java 21 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 825b18d..0bc21e0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,11 +14,11 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 17 + - 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@v3 with: From fa439ed6d6ba4792e55e2722b1bb7658fbdf6c35 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 11 Aug 2024 17:03:24 -0700 Subject: [PATCH 28/29] Prevent non-items being put into chests. Update to 1.21.1 --- .../skygrid/generators/SkyGridPop.java | 24 ++++++++++++++----- src/main/resources/config.yml | 4 +++- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java index 7f938f8..8a6cba7 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java @@ -59,16 +59,28 @@ public SkyGridPop(SkyGrid addon) { this.islandHeight = addon.getSettings().getIslandHeight(); // Load the chest items for (Entry en : addon.getSettings().getChestItemsOverworld().entrySet()) { - worldTotal += en.getValue(); - chestItemsWorld.put(worldTotal, en.getKey()); + 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()) { - netherTotal += en.getValue(); - chestItemsNether.put(netherTotal, en.getKey()); + 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()) { - endTotal += en.getValue(); - chestItemsEnd.put(endTotal, en.getKey()); + 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"); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 3fb0783..0a5096c 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -294,7 +294,9 @@ world: SALMON_BUCKET: 10 SALMON_SPAWN_EGG: 10 SALMON: 10 - SCUTE: 100 + TURTLE_SCUTE: 100 + ARMADILLO_SCUTE: 100 + WOLF_ARMOR: 100 SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE: 10 SHEARS: 10 SHEEP_SPAWN_EGG: 10 From d18a4968d7f0eae20d65f4111d589f7df960ecb7 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 11 Aug 2024 17:08:59 -0700 Subject: [PATCH 29/29] Minor improvements from SonarCloud --- .../bentobox/skygrid/generators/SkyGridChunks.java | 11 ++++------- .../java/world/bentobox/skygrid/SettingsTest.java | 5 +---- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java index b67c9db..a4d8135 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridChunks.java @@ -116,13 +116,10 @@ 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); } } diff --git a/src/test/java/world/bentobox/skygrid/SettingsTest.java b/src/test/java/world/bentobox/skygrid/SettingsTest.java index bdafe0b..9a1a26f 100644 --- a/src/test/java/world/bentobox/skygrid/SettingsTest.java +++ b/src/test/java/world/bentobox/skygrid/SettingsTest.java @@ -27,11 +27,8 @@ public class SettingsTest { private Settings s; - /** - * @throws java.lang.Exception - */ @Before - public void setUp() throws Exception { + public void setUp() { s = new Settings(); }