diff --git a/pom.xml b/pom.xml index a5f3780..d771c5f 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ ${build.version}-SNAPSHOT - 1.15.0 + 1.16.0 -LOCAL bentobox-world https://sonarcloud.io diff --git a/src/main/java/world/bentobox/caveblock/CaveBlock.java b/src/main/java/world/bentobox/caveblock/CaveBlock.java index bd5a261..712c783 100644 --- a/src/main/java/world/bentobox/caveblock/CaveBlock.java +++ b/src/main/java/world/bentobox/caveblock/CaveBlock.java @@ -34,7 +34,9 @@ public class CaveBlock extends GameModeAddon this.saveDefaultConfig(); this.loadSettings(); - this.chunkGenerator = new ChunkGeneratorWorld(this); + this.chunkNormalGenerator = new ChunkGeneratorWorld(this, World.Environment.NORMAL); + this.chunkNetherGenerator = new ChunkGeneratorWorld(this, World.Environment.NETHER); + this.chunkEndGenerator = new ChunkGeneratorWorld(this, World.Environment.THE_END); // Player Command this.playerCommand = new DefaultPlayerCommand(this) @@ -137,7 +139,7 @@ public class CaveBlock extends GameModeAddon // Create the world if it does not exist this.islandWorld = WorldCreator.name(worldName). environment(World.Environment.NORMAL). - generator(this.chunkGenerator). + generator(this.chunkNormalGenerator). createWorld(); // Set spawn rates setSpawnRates(islandWorld); @@ -162,7 +164,7 @@ public class CaveBlock extends GameModeAddon { this.netherWorld = WorldCreator.name(worldName + NETHER). type(WorldType.FLAT). - generator(this.chunkGenerator). + generator(this.chunkNetherGenerator). environment(World.Environment.NETHER). createWorld(); } @@ -187,7 +189,7 @@ public class CaveBlock extends GameModeAddon { this.endWorld = WorldCreator.name(worldName + THE_END). type(WorldType.FLAT). - generator(this.chunkGenerator). + generator(this.chunkEndGenerator). environment(World.Environment.THE_END). createWorld(); } @@ -232,7 +234,18 @@ public class CaveBlock extends GameModeAddon @Override public @NonNull ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { - return this.chunkGenerator; + if (worldName.endsWith("_nether")) + { + return this.chunkNetherGenerator; + } + else if (worldName.endsWith("_the_end")) + { + return this.chunkEndGenerator; + } + else + { + return this.chunkNormalGenerator; + } } // --------------------------------------------------------------------- @@ -284,9 +297,19 @@ public class CaveBlock extends GameModeAddon private Settings settings; /** - * This stores CaveBlock addon WorldGenerator. + * This stores CaveBlock addon WorldGenerator for overworld. */ - private ChunkGeneratorWorld chunkGenerator; + private ChunkGeneratorWorld chunkNormalGenerator; + + /** + * This stores CaveBlock addon WorldGenerator for the nether. + */ + private ChunkGeneratorWorld chunkNetherGenerator; + + /** + * This stores CaveBlock addon WorldGenerator for the end. + */ + private ChunkGeneratorWorld chunkEndGenerator; // --------------------------------------------------------------------- diff --git a/src/main/java/world/bentobox/caveblock/Settings.java b/src/main/java/world/bentobox/caveblock/Settings.java index 5d7e9ee..64478e9 100644 --- a/src/main/java/world/bentobox/caveblock/Settings.java +++ b/src/main/java/world/bentobox/caveblock/Settings.java @@ -2077,6 +2077,72 @@ public class Settings implements WorldSettings } + /** + * Is generate caves boolean. + * + * @return the boolean + */ + public boolean isGenerateCaves() + { + return generateCaves; + } + + + /** + * Sets generate caves. + * + * @param generateCaves the generate caves + */ + public void setGenerateCaves(boolean generateCaves) + { + this.generateCaves = generateCaves; + } + + + /** + * Is generate natural bedrock boolean. + * + * @return the boolean + */ + public boolean isGenerateNaturalBedrock() + { + return generateNaturalBedrock; + } + + + /** + * Sets generate natural bedrock. + * + * @param generateNaturalBedrock the generate natural bedrock + */ + public void setGenerateNaturalBedrock(boolean generateNaturalBedrock) + { + this.generateNaturalBedrock = generateNaturalBedrock; + } + + + /** + * Is generate natural surface boolean. + * + * @return the boolean + */ + public boolean isGenerateNaturalSurface() + { + return generateNaturalSurface; + } + + + /** + * Sets generate natural surface. + * + * @param generateNaturalSurface the generate natural surface + */ + public void setGenerateNaturalSurface(boolean generateNaturalSurface) + { + this.generateNaturalSurface = generateNaturalSurface; + } + + // --------------------------------------------------------------------- // Section: Variables // --------------------------------------------------------------------- @@ -2196,8 +2262,8 @@ public class Settings implements WorldSettings private int banLimit = -1; @ConfigComment("") - @ConfigComment("This is cave.. no height... only depth. Max 256.") - @ConfigComment("Should not be less then cave height.") + @ConfigComment("This is cave.. no height... only depth. If depth is set smaller than maximal world height, then area above will be empty.") + @ConfigComment("Should not be less than cave height.") @ConfigEntry(path = "world.world-depth", needsReset = true) private int worldDepth = 256; @@ -2212,14 +2278,34 @@ public class Settings implements WorldSettings private boolean newMaterialGenerator = false; @ConfigComment("") - @ConfigComment("Make over world roof of bedrock, if false, it will be made from stone") + @ConfigComment("Make over world roof of bedrock, if false, it will be made from stone.") @ConfigEntry(path = "world.normal.roof", needsReset = true) private boolean normalRoof = true; - @ConfigComment("Make over world floor of bedrock, if false, it will be made from stone") + @ConfigComment("") + @ConfigComment("Option allows to toggle if world generator should generate natural(-ish) looking surface with dirt and grass blocks.") + @ConfigComment("Enabling this option will ignore roof setting.") + @ConfigComment("Default value is false.") + @ConfigEntry(path = "world.normal.natural-surface", needsReset = true, experimental = true) + private boolean generateNaturalSurface = false; + + @ConfigComment("") + @ConfigComment("Option allows to toggle if world generator should generate natural looking caves.") + @ConfigComment("Default value is false.") + @ConfigEntry(path = "world.normal.natural-caves", needsReset = true) + private boolean generateCaves = false; + + @ConfigComment("Make over world floor of bedrock, if false, it will be made from stone.") @ConfigEntry(path = "world.normal.floor", needsReset = true) private boolean normalFloor = true; + @ConfigComment("") + @ConfigComment("Option allows to toggle if world generator should generate natural looking bedrock block patterns.") + @ConfigComment("Enabling this option will ignore floor setting.") + @ConfigComment("Default value is false.") + @ConfigEntry(path = "world.normal.natural-bedrock", needsReset = true) + private boolean generateNaturalBedrock = false; + @ConfigComment("Main block of which world will be generated.") @ConfigEntry(path = "world.normal.main-block", needsReset = true) private Material normalMainBlock = Material.STONE; diff --git a/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java b/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java index 180277b..08648c9 100644 --- a/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java +++ b/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java @@ -6,12 +6,10 @@ import org.bukkit.generator.BiomeProvider; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.WorldInfo; + import world.bentobox.caveblock.CaveBlock; import world.bentobox.caveblock.Settings; -import world.bentobox.caveblock.generators.populators.EntitiesPopulator; -import world.bentobox.caveblock.generators.populators.FlatBiomeProvider; -import world.bentobox.caveblock.generators.populators.MaterialPopulator; -import world.bentobox.caveblock.generators.populators.NewMaterialPopulator; +import world.bentobox.caveblock.generators.populators.*; import java.util.ArrayList; import java.util.List; @@ -31,6 +29,7 @@ public class ChunkGeneratorWorld extends ChunkGenerator { private final CaveBlock addon; private final Settings settings; private final List blockPopulators; + private final World.Environment environment; private BiomeProvider biomeProvider; private boolean isNewGenerator; @@ -40,12 +39,14 @@ public class ChunkGeneratorWorld extends ChunkGenerator { /** * @param addon - CaveBlock object + * @param environment - World environment */ - public ChunkGeneratorWorld(CaveBlock addon) { + public ChunkGeneratorWorld(CaveBlock addon, World.Environment environment) { this.addon = addon; this.settings = addon.getSettings(); this.blockPopulators = new ArrayList<>(2); + this.environment = environment; reload(); } @@ -53,14 +54,24 @@ public class ChunkGeneratorWorld extends ChunkGenerator { // Section: Methods // --------------------------------------------------------------------- - private Material getGroundCeilMaterial(World.Environment environment) { + private Material getGroundRoofMaterial(World.Environment environment) { return switch (environment) { case NETHER -> this.settings.isNetherRoof() ? Material.BEDROCK : this.settings.getNetherMainBlock(); + case THE_END -> this.settings.isEndRoof() ? Material.BEDROCK : this.settings.getEndMainBlock(); + default -> this.settings.isNormalRoof() ? Material.BEDROCK : this.settings.getNormalMainBlock(); + }; + } + + + private Material getGroundFloorMaterial(World.Environment environment) { + return switch (environment) { + case NETHER -> this.settings.isNetherFloor() ? Material.BEDROCK : this.settings.getNetherMainBlock(); case THE_END -> this.settings.isEndFloor() ? Material.BEDROCK : this.settings.getEndMainBlock(); default -> this.settings.isNormalFloor() ? Material.BEDROCK : this.settings.getNormalMainBlock(); }; } + private Material getBaseMaterial(World.Environment environment) { return switch (environment) { case NETHER -> this.settings.getNetherMainBlock(); @@ -70,19 +81,35 @@ public class ChunkGeneratorWorld extends ChunkGenerator { } @Override - public void generateBedrock(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData) { - final int minHeight = worldInfo.getMinHeight(); - Material material = getGroundCeilMaterial(worldInfo.getEnvironment()); - chunkData.setRegion(0, minHeight, 0, 16, minHeight + 1, 16, material); + public void generateBedrock(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData) + { + if (!this.shouldGenerateBedrock()) + { + final int minHeight = worldInfo.getMinHeight(); + Material material = this.getGroundFloorMaterial(worldInfo.getEnvironment()); + chunkData.setRegion(0, minHeight, 0, 16, minHeight + 1, 16, material); + } + else + { + // Apparently default surface generation does not include 0 bedrock layer. + final int minHeight = worldInfo.getMinHeight(); + chunkData.setRegion(0, minHeight, 0, 16, minHeight + 1, 16, Material.BEDROCK); + } } + @Override - public void generateSurface(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData) { - final int worldHeight = Math.min(worldInfo.getMaxHeight(), this.settings.getWorldDepth()); - Material material = getGroundCeilMaterial(worldInfo.getEnvironment()); - chunkData.setRegion(0, worldHeight - 1, 0, 16, worldHeight, 16, material); + public void generateSurface(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData) + { + if (!this.shouldGenerateSurface()) + { + final int worldHeight = Math.min(worldInfo.getMaxHeight(), this.settings.getWorldDepth()); + Material material = this.getGroundRoofMaterial(worldInfo.getEnvironment()); + chunkData.setRegion(0, worldHeight - 1, 0, 16, worldHeight, 16, material); + } } + @Override public void generateNoise(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData) { final int minHeight = worldInfo.getMinHeight(); @@ -127,18 +154,22 @@ public class ChunkGeneratorWorld extends ChunkGenerator { } @Override - public boolean shouldGenerateSurface() { - return true; + public boolean shouldGenerateSurface() + { + // Surface generation should happen only in overworld. Nether and end worlds does not have surface. + return this.environment.equals(World.Environment.NORMAL) && this.settings.isGenerateNaturalSurface(); } @Override public boolean shouldGenerateBedrock() { - return true; + // Bedrock generation should happen only in overworld. Nether and end worlds does not have nice bedrock layers. + return this.environment.equals(World.Environment.NORMAL) && this.settings.isGenerateNaturalBedrock(); } @Override public boolean shouldGenerateCaves() { - return this.isNewGenerator; + // Cave generation should happen only in overworld. Nether and end worlds does not have nice cave layers. + return this.environment.equals(World.Environment.NORMAL) && this.settings.isGenerateCaves(); } /** diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index cae18c9..6dd742c 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,4 +1,4 @@ -# CaveBlock Configuration {$version} +# CaveBlock Configuration 1.15.0-SNAPSHOT-LOCAL caveblock: command: # Cave Command. What command users will run to access their cave. @@ -9,12 +9,12 @@ caveblock: admin: cbadmin cba # 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.13.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.13.0. default-action: go world: @@ -81,9 +81,9 @@ world: # The permission caveblock.ban.maxlimit.X where X is a number can also be used per player # -1 = unlimited ban-limit: -1 - # - # This is cave.. no height... only depth. Max 256. - # Should not be less then cave height. + # + # This is cave.. no height... only depth. If depth is set smaller than maximal world height, then area above will be empty. + # Should not be less than cave height. # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. world-depth: 256 # This indicate how many times block should be tried to generate. @@ -95,13 +95,31 @@ world: # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. use-new-material-generator: false normal: - # - # Make over world roof of bedrock, if false, it will be made from stone + # + # Make over world roof of bedrock, if false, it will be made from stone. # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. roof: true - # Make over world floor of bedrock, if false, it will be made from stone + # + # Option allows to toggle if world generator should generate natural(-ish) looking surface with dirt and grass blocks. + # Enabling this option will ignore roof setting. + # Default value is false. + # /!\ This feature is experimental and might not work as expected or might not work at all. + # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. + natural-surface: false + # + # Option allows to toggle if world generator should generate natural looking caves. + # Default value is false. + # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. + natural-caves: false + # Make over world floor of bedrock, if false, it will be made from stone. # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. floor: true + # + # Option allows to toggle if world generator should generate natural looking bedrock block patterns. + # Enabling this option will ignore floor setting. + # Default value is false. + # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. + natural-bedrock: false # Main block of which world will be generated. # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. main-block: STONE @@ -116,24 +134,24 @@ world: # where max amount in pack are 5 per each subchunk! # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. blocks: - - MATERIAL:DIAMOND_ORE:1:5 - - MATERIAL:GOLD_ORE:1:4 - - MATERIAL:IRON_ORE:5:4 - - MATERIAL:COAL_ORE:10:6 - - MATERIAL:EMERALD_ORE:1:1 - - MATERIAL:CLAY:10:6 - - MATERIAL:DIRT:20:10 - - MATERIAL:GRAVEL:40:6 - - MATERIAL:GRANITE:40:10 - - MATERIAL:ANDESITE:20:10 - - MATERIAL:DIORITE:30:8 - - ENTITY:ZOMBIE:10:1 - - ENTITY:ENDERMAN:10:1 - - ENTITY:SKELETON:10:1 - - ENTITY:CREEPER:1:1 - - ENTITY:DOLPHIN:1:1 - - ENTITY:BAT:10:1 - - ENTITY:CAVE_SPIDER:10:1 + - MATERIAL:DIAMOND_ORE:1:5 + - MATERIAL:GOLD_ORE:1:4 + - MATERIAL:IRON_ORE:5:4 + - MATERIAL:COAL_ORE:10:6 + - MATERIAL:EMERALD_ORE:1:1 + - MATERIAL:CLAY:10:6 + - MATERIAL:DIRT:20:10 + - MATERIAL:GRAVEL:40:6 + - MATERIAL:GRANITE:40:10 + - MATERIAL:ANDESITE:20:10 + - MATERIAL:DIORITE:30:8 + - ENTITY:ZOMBIE:10:1 + - ENTITY:ENDERMAN:10:1 + - ENTITY:SKELETON:10:1 + - ENTITY:CREEPER:1:1 + - ENTITY:DOLPHIN:1:1 + - ENTITY:BAT:10:1 + - ENTITY:CAVE_SPIDER:10:1 nether: # Generate Nether - if this is false, the nether world will not be made and access to # the nether will not occur. Other plugins may still enable portal usage. @@ -172,18 +190,19 @@ world: # where max amount in pack are 5 per each subchunk! # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. blocks: - - MATERIAL:NETHER_QUARTZ_ORE:30:5 - - MATERIAL:SOUL_SAND:40:10 - - MATERIAL:MAGMA_BLOCK:10:3 - - MATERIAL:GLOWSTONE:20:8 - - MATERIAL:NETHER_BRICKS:10:5 - - MATERIAL:LAVA:10:1 - - ENTITY:MAGMA_CUBE:0.5:1 - - ENTITY:GHAST:0.1:1 - - ENTITY:WITHER_SKELETON:0.1:1 - - MATERIAL:FIRE:10:1 + - MATERIAL:NETHER_QUARTZ_ORE:30:5 + - MATERIAL:SOUL_SAND:40:10 + - MATERIAL:MAGMA_BLOCK:10:3 + - MATERIAL:GLOWSTONE:20:8 + - MATERIAL:NETHER_BRICKS:10:5 + - MATERIAL:LAVA:10:1 + - ENTITY:MAGMA_CUBE:0.5:1 + - ENTITY:GHAST:0.1:1 + - ENTITY:WITHER_SKELETON:0.1:1 + - MATERIAL:FIRE:10:1 # 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 other dimension. + # Option will simulate vanilla portal mechanics that links portals together + # or creates a new portal, if there is not a portal in that dimension. create-and-link-portals: false end: generate: true @@ -214,16 +233,17 @@ world: # where max amount in pack are 5 per each subchunk! # /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds. blocks: - - ENTITY:SHULKER:0.2:1 - - MATERIAL:OBSIDIAN:1:1 - - MATERIAL:CHORUS_PLANT:1:3 - # This option indicates if obsidian platform in the end should be generated when player enters the end world. + - ENTITY:SHULKER:0.2:1 + - MATERIAL:OBSIDIAN:1:1 + - MATERIAL:CHORUS_PLANT:1:3 + # This option indicates if obsidian platform in the end should be generated + # when player enters the end world. create-obsidian-platform: false # Mob white list - these mobs will NOT be removed when logging in or doing /cave remove-mobs-whitelist: - - WITHER - - ENDERMAN - - ZOMBIE_VILLAGER + - ZOMBIE_VILLAGER + - WITHER + - ENDERMAN # World flags. These are boolean settings for various flags for this world flags: CREEPER_DAMAGE: true @@ -232,6 +252,7 @@ world: ISLAND_RESPAWN: true CREEPER_GRIEFING: false COARSE_DIRT_TILLING: true + PETS_STAY_AT_HOME: true ENDERMAN_GRIEFING: true CLEAN_SUPER_FLAT: false CHEST_DAMAGE: false @@ -241,6 +262,7 @@ world: ENDERMAN_DEATH_DROP: true LIQUIDS_FLOWING_OUT: false OFFLINE_REDSTONE: true + REMOVE_END_EXIT_ISLAND: true OFFLINE_GROWTH: true REMOVE_MOBS: true ENDER_CHEST: false @@ -272,15 +294,15 @@ world: END_PORTAL: 500 BREEDING: 500 HURT_VILLAGERS: 500 - TURTLE_EGGS: 500 FROST_WALKER: 500 + TURTLE_EGGS: 500 COLLECT_LAVA: 500 BREAK_SPAWNERS: 500 LEVER: 500 ELYTRA: 0 CAKE: 500 - HURT_MONSTERS: 0 RIDING: 500 + HURT_MONSTERS: 0 NAME_TAG: 500 ARMOR_STAND: 500 TRADING: 0 @@ -301,17 +323,17 @@ world: COMMAND_RANKS: 500 BEACON: 500 TRAPDOOR: 500 - EXPERIENCE_BOTTLE_THROWING: 500 PRESSURE_PLATE: 0 + EXPERIENCE_BOTTLE_THROWING: 500 DYE: 500 ITEM_FRAME: 500 PLACE_BLOCKS: 500 CRAFTING: 0 - ENCHANTING: 0 SHEARING: 500 + ENCHANTING: 0 BOAT: 500 - BED: 500 SPAWN_EGGS: 500 + BED: 500 MILKING: 0 DISPENSER: 500 GATE: 0 @@ -322,8 +344,8 @@ world: BREAK_BLOCKS: 500 CHORUS_FRUIT: 500 CONTAINER: 500 - POTION_THROWING: 500 JUKEBOX: 500 + POTION_THROWING: 500 # These are the default settings for new caves default-cave-settings: PVP_END: false @@ -335,33 +357,33 @@ world: MONSTER_NATURAL_SPAWN: true FIRE_IGNITE: true FIRE_SPREAD: true - ANIMAL_SPAWNERS_SPAWN: true FIRE_BURNING: true + ANIMAL_SPAWNERS_SPAWN: true PVP_OVERWORLD: false # These settings/flags are hidden from users # Ops can toggle hiding in-game using SHIFT-LEFT-CLICK on flags in settings hidden-flags: [] # Visitor banned commands - Visitors to caves cannot use these commands in this world visitor-banned-commands: - - spawner - - spawnmob + - spawner + - spawnmob # Falling banned commands - players cannot use these commands when falling # if the PREVENT_TELEPORT_WHEN_FALLING world setting flag is active falling-banned-commands: - - warp - - spawn + - warp + - spawn cave: # Default max team size - # Permission size cannot be less than the default below. + # Permission size cannot be less than the default below. max-team-size: 4 # Default maximum number of coop rank members per cave # Players can have the caveblock.coop.maxsize. permission to be bigger but - # permission size cannot be less than the default below. + # 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 cave # Players can have the caveblock.trust.maxsize. permission to be bigger but - # permission size cannot be less than the default below. + # 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 @@ -461,10 +483,46 @@ cave: create-missing-nether-end-caves: false commands: # List of commands to run when a player joins an cave or creates one. + # These commands are run by the console, unless otherwise stated using the [SUDO] prefix, + # in which case they are executed by the player. + # + # Available placeholders for the commands are the following: + # * [name]: name of the player + # + # Here are some examples of valid commands to execute: + # * '[SUDO] bbox version' + # * 'bsbadmin deaths set [player] 0' + # + # Note that player-executed commands might not work, as these commands can be run with said player being offline. + # Added since 1.8.0. on-join: [] # List of commands to run when a player leaves a cave, resets his cave or gets kicked from it. + # These commands are run by the console, unless otherwise stated using the [SUDO] prefix, + # in which case they are executed by the player. + # + # Available placeholders for the commands are the following: + # * [name]: name of the player + # + # Here are some examples of valid commands to execute: + # * '[SUDO] bbox version' + # * 'bsbadmin deaths set [player] 0' + # + # Note that player-executed commands might not work, as these commands can be run with said player being offline. + # Added since 1.8.0. on-leave: [] - # Returns a list of commands that should be executed when the player respawns after death if Flags.ISLAND_RESPAWN is true. + # List of commands that should be executed when the player respawns after death if Flags.ISLAND_RESPAWN is true. + # These commands are run by the console, unless otherwise stated using the [SUDO] prefix, + # in which case they are executed by the player. + # + # Available placeholders for the commands are the following: + # * [name]: name of the player + # + # Here are some examples of valid commands to execute: + # * '[SUDO] bbox version' + # * 'bsbadmin deaths set [player] 0' + # + # Note that player-executed commands might not work, as these commands can be run with said player being offline. + # Added since 1.14.0. on-respawn: [] sethome: nether: @@ -488,9 +546,9 @@ protection: # Geo restrict mobs. # Mobs that exit the cave space where they were spawned will be removed. geo-limit-settings: - - GHAST - - BAT - - BLAZE + - GHAST + - BAT + - BLAZE # CaveBlock blocked mobs. # List of mobs that should not spawn in the CaveBlock. # Added since 1.13.0. @@ -498,30 +556,30 @@ protection: # Invincible visitors. List of damages that will not affect visitors. # Make list blank if visitors should receive all damages invincible-visitors: - - BLOCK_EXPLOSION - - CONTACT - - CUSTOM - - DROWNING - - ENTITY_ATTACK - - ENTITY_EXPLOSION - - FALL - - FALLING_BLOCK - - FIRE - - FIRE_TICK - - LAVA - - LIGHTNING - - MAGIC - - POISON - - PROJECTILE - - STARVATION - - SUFFOCATION - - THORNS - - WITHER - - DRAGON_BREATH - - FLY_INTO_WALL - - HOT_FLOOR - - CRAMMING - - VOID + - BLOCK_EXPLOSION + - CONTACT + - CUSTOM + - DROWNING + - ENTITY_ATTACK + - ENTITY_EXPLOSION + - FALL + - FALLING_BLOCK + - FIRE + - FIRE_TICK + - LAVA + - LIGHTNING + - MAGIC + - POISON + - PROJECTILE + - STARVATION + - SUFFOCATION + - THORNS + - WITHER + - DRAGON_BREATH + - FLY_INTO_WALL + - HOT_FLOOR + - CRAMMING + - VOID do-not-edit-these-settings: # These settings should not be edited reset-epoch: 0