From c9dd709a6876e9e6562007a007032094089cb44a Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 18 Feb 2023 09:35:03 -0800 Subject: [PATCH] Added ocean floor config option for baxkward compatibility with upgrades Default is false, so that upgrades don't see a floor. --- .../world/bentobox/acidisland/AISettings.java | 11 ++++ .../acidisland/world/ChunkGeneratorWorld.java | 14 +++-- src/main/resources/config.yml | 57 ++++++++++++------- 3 files changed, 57 insertions(+), 25 deletions(-) diff --git a/src/main/java/world/bentobox/acidisland/AISettings.java b/src/main/java/world/bentobox/acidisland/AISettings.java index 60a27f8..b3ac824 100644 --- a/src/main/java/world/bentobox/acidisland/AISettings.java +++ b/src/main/java/world/bentobox/acidisland/AISettings.java @@ -214,6 +214,11 @@ public class AISettings implements WorldSettings { @ConfigComment("Water block. This should usually stay as WATER, but may be LAVA for fun") @ConfigEntry(path = "world.water-block", needsReset = true) private Material waterBlock = Material.WATER; + + @ConfigComment("Ocean Floor") + @ConfigComment("This creates an ocean floor environment, with vanilla elements.") + @ConfigEntry(path = "world.ocean-floor", needsReset = true) + private boolean oceanFloor = false; @ConfigComment("Maximum number of islands in the world. Set to -1 or 0 for unlimited. ") @ConfigComment("If the number of islands is greater than this number, no new island will be created.") @@ -2013,4 +2018,10 @@ public class AISettings implements WorldSettings { public void setEndWaterBlock(Material endWaterBlock) { this.endWaterBlock = endWaterBlock; } + public boolean isOceanFloor() { + return oceanFloor; + } + public void setOceanFloor(boolean oceanFloor) { + this.oceanFloor = oceanFloor; + } } diff --git a/src/main/java/world/bentobox/acidisland/world/ChunkGeneratorWorld.java b/src/main/java/world/bentobox/acidisland/world/ChunkGeneratorWorld.java index 4751f92..d9508ca 100644 --- a/src/main/java/world/bentobox/acidisland/world/ChunkGeneratorWorld.java +++ b/src/main/java/world/bentobox/acidisland/world/ChunkGeneratorWorld.java @@ -55,10 +55,12 @@ public class ChunkGeneratorWorld extends ChunkGenerator { WorldConfig wc = seaHeight.get(worldInfo.getEnvironment()); int sh = wc.seaHeight(); if (sh > worldInfo.getMinHeight()) { - chunkData.setRegion(0, worldInfo.getMinHeight(), 0, 16, worldInfo.getMinHeight() + 1, 16, Material.BEDROCK); chunkData.setRegion(0, worldInfo.getMinHeight() + 1, 0, 16, sh + 1, 16, wc.waterBlock()); // Add some noise - addNoise(worldInfo, chunkX, chunkZ, chunkData); + if (addon.getSettings().isOceanFloor()) { + chunkData.setRegion(0, worldInfo.getMinHeight(), 0, 16, worldInfo.getMinHeight() + 1, 16, Material.BEDROCK); + addNoise(worldInfo, chunkX, chunkZ, chunkData); + } } if (worldInfo.getEnvironment().equals(Environment.NETHER) && addon.getSettings().isNetherRoof()) { roofChunk.forEach((k,v) -> chunkData.setBlock(k.getBlockX(), worldInfo.getMaxHeight() + k.getBlockY(), k.getBlockZ(), v)); @@ -82,15 +84,15 @@ public class ChunkGeneratorWorld extends ChunkGenerator { } @Override public boolean shouldGenerateSurface() { - return true; + return addon.getSettings().isOceanFloor(); } @Override public boolean shouldGenerateCaves() { - return true; + return addon.getSettings().isOceanFloor(); } @Override public boolean shouldGenerateDecorations() { - return true; + return addon.getSettings().isOceanFloor(); } @Override public boolean shouldGenerateMobs() { @@ -98,7 +100,7 @@ public class ChunkGeneratorWorld extends ChunkGenerator { } @Override public boolean shouldGenerateStructures() { - return true; + return addon.getSettings().isOceanFloor(); } @Override diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b4c0545..4cbb953 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -132,10 +132,13 @@ world: # Sea height (don't changes this mid-game unless you delete the world) # Minimum is 0, which means you are playing Skyblock! sea-height: 54 - # Water block this should usually stay as WATER, but may be LAVA for fun - # Changing mid-game will cause problems! + # Water block. This should usually stay as WATER, but may be LAVA for fun # /!\ 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. water-block: WATER + # Ocean Floor + # This creates an ocean floor environment, with vanilla elements. + # /!\ 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. + ocean-floor: false # Maximum number of islands in the world. Set to -1 or 0 for unlimited. # If the number of islands is greater than this number, no new island will be created. max-islands: 0 @@ -166,8 +169,7 @@ world: # Changing mid-game will cause problems! # /!\ 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. sea-height: 54 - # Water block this should usually stay as WATER, but may be LAVA for fun - # Changing mid-game will cause problems! + # Water block. This should usually stay as WATER, but may be LAVA for fun # /!\ 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. water-block: WATER # Make the nether roof, if false, there is nothing up there @@ -180,8 +182,9 @@ world: # Only applies to vanilla nether spawn-radius: 25 # 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. - # Added since 1.14.6 + # Option will simulate vanilla portal mechanics that links portals together + # or creates a new portal, if there is not a portal in that dimension. + # Added since 1.14.6. create-and-link-portals: false end: # End Nether - if this is false, the end world will not be made and access to @@ -194,12 +197,12 @@ world: # Changing mid-game will cause problems! # /!\ 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. sea-height: 54 - # Water block this should usually stay as WATER, but may be LAVA for fun - # Changing mid-game will cause problems! + # Water block. This should usually stay as WATER, but may be LAVA for fun # /!\ 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. water-block: WATER - # This option indicates if obsidian platform in the end should be generated when player enters the end world. - # Added since 1.14.6 + # This option indicates if obsidian platform in the end should be generated + # when player enters the end world. + # Added since 1.14.6. create-obsidian-platform: false # /!\ This feature is experimental and might not work as expected or might not work at all. dragon-spawn: false @@ -209,9 +212,9 @@ world: # Mob white list - these mobs will NOT be removed when logging in or doing /island remove-mobs-whitelist: - ZOMBIE_VILLAGER - - WITHER - ENDERMAN - ZOMBIFIED_PIGLIN + - WITHER # World flags. These are boolean settings for various flags for this world flags: CREEPER_DAMAGE: true @@ -227,6 +230,7 @@ world: ENTER_EXIT_MESSAGES: true ENDERMAN_DEATH_DROP: true OFFLINE_REDSTONE: true + REMOVE_END_EXIT_ISLAND: true OFFLINE_GROWTH: true REMOVE_MOBS: true ENDER_CHEST: false @@ -248,6 +252,7 @@ world: ANVIL: 500 MINECART: 500 FISH_SCOOPING: 500 + TRAPPED_CHEST: 500 END_PORTAL: 500 BREEDING: 500 HURT_VILLAGERS: 500 @@ -262,37 +267,47 @@ world: RIDING: 500 NAME_TAG: 500 ARMOR_STAND: 500 + CHANGE_SETTINGS: 1000 TRADING: 0 EGGS: 500 ITEM_DROP: 0 + CHEST: 500 NOTE_BLOCK: 0 FLINT_AND_STEEL: 500 NETHER_PORTAL: 500 + SCULK_SENSOR: 500 LECTERN: 500 + SHULKER_BOX: 500 ITEM_PICKUP: 0 CROP_TRAMPLE: 500 DROPPER: 500 BREWING: 500 TNT_PRIMING: 500 COLLECT_WATER: 500 + AXOLOTL_SCOOPING: 500 BUTTON: 500 + COMPOSTER: 500 FIRE_EXTINGUISH: 500 COMMAND_RANKS: 500 BEACON: 500 + ALLAY: 500 TRAPDOOR: 500 PRESSURE_PLATE: 0 EXPERIENCE_BOTTLE_THROWING: 500 DYE: 500 + HIVE: 500 ITEM_FRAME: 500 PLACE_BLOCKS: 500 CRAFTING: 0 SHEARING: 500 ENCHANTING: 0 + FLOWER_POT: 500 BOAT: 500 BED: 500 SPAWN_EGGS: 500 MILKING: 0 DISPENSER: 500 + SCULK_SHRIEKER: 500 GATE: 0 EXPERIENCE_PICKUP: 500 HOPPER: 500 @@ -303,20 +318,23 @@ world: CONTAINER: 500 JUKEBOX: 500 POTION_THROWING: 500 + BARREL: 500 + COLLECT_POWDERED_SNOW: 500 # These are the default settings for new islands default-island-settings: PVP_END: false PVP_NETHER: false LEAF_DECAY: true - MONSTER_SPAWNERS_SPAWN: true - TNT_DAMAGE: true ANIMAL_NATURAL_SPAWN: true MONSTER_NATURAL_SPAWN: true - FIRE_IGNITE: true FIRE_SPREAD: true FIRE_BURNING: true - ANIMAL_SPAWNERS_SPAWN: 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: [] @@ -464,17 +482,17 @@ island: # # Note that player-executed commands might not work, as these commands can be run with said player being offline. 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: [] @@ -533,3 +551,4 @@ protection: do-not-edit-these-settings: # These settings should not be edited reset-epoch: 0 +