BentoBoxWorld/Upgrades

On server restart, island range reverts to size when first created instead of retaining upgraded size

GalaxyKat11 opened this issue · 13 comments

Description

Describe the bug

When server restarts, any progress made to island range is lost

Steps to reproduce the behavior

Brand new installation using newest versions available with no islands created yet. Set distance between islands to 400 and island protection range to 200.
After getting money and island level necessary, we used command /island upgrade and chose the range option to upgrade. After server restarts, the range goes back to original size when created instead of retaining upgraded size. Any items dropped cannot be picked up in the extended area and we cannot interact with items there (could not sheer sheep for example)

Expected behavior

I would expect any upgrades (including size) made to be retained after server has been restarted.

Screenshots and videos (Optional)

Photo shows message that I am leaving island even though I had upgraded range and built it out further.
Screenshot (8)

Another angle to show how much further island was expanded after upgrading the range.
Screenshot (9)

Message showing I could not sheer the sheep standing in the upgraded range.
Screenshot (10)

Environment

Output of /bbox version (Mandatory)
BentoBox 1.15.0 - Snapshot - B1838

Plugins (Optional)

BeastTokens, BentoBox, ChestShop, ClearLag, ColoredSigns, CustomOreGen, DiscordSRV, EpicAutoMessenger, Essentials, 
EssentialsSpawn, FogusCore, GoldenCrates, HolographicDisplays, MultiChat, Multiverse-Core, PermissionsEx, ProtocolLib, 
RankUp, SuperLuckyBlock, Vault, ViaVersion, WorldBorder, WorldEdit, WorldGuard.

Additional context (Optional)

I am not the owner of the server running this, just trying to help them set up and test before releasing for everyone to use. Any further info needed may take a little time since we are in different time zones.

Can you do /bsbadmin info on your island and post the result?

Based on that last island info screenshot, the island range was never set to greater than 200, otherwise it would list that in the "Largest historical protection range" line. What was it supposed to have been upgraded to?

Another weird thing - the protection range is set to 5 in the screenshot. That's weird.

Like I mentioned early in the post, we have only been using this a few days so I do not know a lot about the set up. I believe the day I created this island I was able to upgrade range radius 3 times. I built floor to outer edge of island and it was 40 X 40 at end of day one. I believe it started at 10 X 10. The next day when I returned (server had restarted) this is what I encountered. I had the same issue on the first island I created. Server owner researched and thought deleting the world and all islands, and setting distance between and protection ranges as shown would rectify. When same happened I reached out on discord channel for help.
I agree with you that it is weird since it shows protection range 5 currently as that was not changed by owner. Am I understanding how it works correctly that the 40 X 40 size should be considered current size (so that should be protection range 20?). I also seem to have lost several island levels somehow. Was at level 12 at end of day one and knocked back down to level 3 upon returning.

Can you show me your config?
The only things I can think of is that the upgrade value is negative.

# BSkyBlock Configuration 1.14.0
bskyblock:
  command:
    # Island Command. What command users will run to access their island.
    # To define alias, just separate commands with white space.
    # Added since 1.3.0.
    island: island is skyblock sb
    # The island admin command.
    # To define alias, just separate commands with white space.
    # Added since 1.3.0.
    admin: bsbadmin bsb skyblockadmin sbadmin sba
    # 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 sub-command 'create'.
    # Added since 1.13.1.
    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 sub-command 'go'.
    # Added since 1.13.1.
    default-action: go
world:
  # Friendly name for this world. Used in admin commands. Must be a single word
  friendly-name: BSkyBlock
  # Name of the world - if it does not exist then it will be generated.
  # It acts like a prefix for nether and end (e.g. bskyblock_world, bskyblock_world_nether, bskyblock_world_end)
  world-name: bskyblock_world
  # World difficulty setting - PEACEFUL, EASY, NORMAL, HARD
  # Other plugins may override this setting
  difficulty: NORMAL
  spawn-limits:
    # Spawn limits. These override the limits set in bukkit.yml
    # If set to a negative number, the server defaults will be used
    # Added since 1.11.2.
    monsters: -1
    # Added since 1.11.2.
    animals: -1
    # Added since 1.11.2.
    water-animals: -1
    # Added since 1.11.2.
    ambient: -1
    # Setting to 0 will disable animal spawns, but this is not recommended. Minecraft default is 400.
    # A negative value uses the server default
    # Added since 1.11.2.
    ticks-per-animal-spawns: -1
    # Setting to 0 will disable monster spawns, but this is not recommended. Minecraft default is 400.
    # A negative value uses the server default
    # Added since 1.11.2.
    ticks-per-monster-spawns: -1
  # Radius of island in blocks. (So distance between islands is twice this)
  # It is the same for every dimension : Overworld, Nether and End.
  # This value cannot be changed mid-game and the plugin will not start if it is different.
  # /!\ 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.
  distance-between-islands: 400
  # Default protection range radius in blocks. Cannot be larger than distance.
  # Admins can change protection sizes for players individually using /bsbadmin range set <player> <new range>
  # or set this permission: bskyblock.island.range.<number>
  # /!\ 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.
  protection-range: 200
  # Start islands at these coordinates. This is where new islands will start in the
  # world. These must be a factor of your island distance, but the plugin will auto
  # calculate the closest location on the grid. Islands develop around this location
  # both positively and negatively in a square grid.
  # If none of this makes sense, leave it at 0,0.
  # /!\ 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.
  start-x: 0
  # /!\ 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.
  start-z: 0
  offset-x: 0
  offset-z: 0
  # Island height - Lowest is 5.
  # It is the y coordinate of the bedrock block in the schem.
  island-height: 120
  # Use your own world generator for this world.
  # In this case, the plugin will not generate anything.
  # If used, you must specify the world name and generator in the bukkit.yml file.
  # See https://bukkit.gamepedia.com/Bukkit.yml#.2AOPTIONAL.2A_worlds
  use-own-generator: false
  # Sea height (don't changes this mid-game unless you delete the world)
  # Minimum is 0, which means you are playing Skyblock!
  # If sea height is less than about 10, then players will drop right through it
  # if it exists. Makes for an interesting variation on skyblock.
  # /!\ 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: 0
  # Maximum number of islands in the world. Set to -1 or 0 for unlimited.
  # If the number of islands is greater than this number, it will stop players from creating islands.
  max-islands: 0
  # The default game mode for this world. Players will be set to this mode when they create
  # a new island for example. Options are SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR
  default-game-mode: SURVIVAL
  # The default biome for the overworld
  default-biome: PLAINS
  # The default biome for the nether world (this may affect what mobs can spawn)
  default-nether-biome: NETHER_WASTES
  # The default biome for the end world (this may affect what mobs can spawn)
  default-end-biome: THE_END
  # The maximum number of players a player can ban at any one time in this game mode.
  # The permission acidisland.ban.maxlimit.X where X is a number can also be used per player
  # -1 = unlimited
  ban-limit: -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.
    # Note: Some default challenges will not be possible if there is no nether.
    # Note that with a standard nether all players arrive at the same portal and entering a
    # portal will return them back to their islands.
    generate: true
    # Islands in Nether. Change to false for standard vanilla nether.
    # /!\ 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.
    islands: true
    # Make the nether roof, if false, there is nothing up there
    # Change to false if lag is a problem from the generation
    # Only applies to islands Nether
    roof: true
    # Nether spawn protection radius - this is the distance around the nether spawn
    # that will be protected from player interaction (breaking blocks, pouring lava etc.)
    # Minimum is 0 (not recommended), maximum is 100. Default is 25.
    # Only applies to vanilla nether
    spawn-radius: 25
  end:
    generate: true
    # /!\ 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.
    islands: true
    # /!\ This feature is experimental and might not work as expected or might not work at all.
    dragon-spawn: false
  # Mob white list - these mobs will NOT be removed when logging in or doing /island
  remove-mobs-whitelist:
  - ZOMBIE_VILLAGER
  - WITHER
  - ENDERMAN
  # World flags. These are boolean settings for various flags for this world
  flags:
    CREEPER_DAMAGE: true
    OBSIDIAN_SCOOPING: true
    ISLAND_RESPAWN: true
    CREEPER_GRIEFING: false
    DOOR: true
    NATURAL_SPAWNING_OUTSIDE_RANGE: true
    PLACE_BLOCKS: false
    LIQUIDS_FLOWING_OUT: false
    REMOVE_MOBS: true
    ENDER_CHEST: false
    SHEARING: false
    TREES_GROWING_OUTSIDE_RANGE: false
    PISTON_PUSH: false
    ENDERMAN_GRIEFING: true
    CLEAN_SUPER_FLAT: false
    CHEST_DAMAGE: false
    CHALLENGES_WORLD_PROTECTION: true
    TRADING: true
    PREVENT_TELEPORT_WHEN_FALLING: false
    ENTER_EXIT_MESSAGES: true
    ENDERMAN_DEATH_DROP: true
    OFFLINE_REDSTONE: true
    REMOVE_END_EXIT_ISLAND: true
    OFFLINE_GROWTH: true
    ITEM_FRAME_DAMAGE: false
  # These are the default protection settings for new islands.
  # The value is the minimum island rank required allowed to do the action
  # Ranks are the following:
  #   VISITOR   = 0
  #   COOP      = 200
  #   TRUSTED   = 400
  #   MEMBER    = 500
  #   SUB-OWNER = 900
  #   OWNER     = 1000
  default-island-flags:
    HURT_ANIMALS: 500
    REDSTONE: 500
    BUCKET: 500
    LOCK: 0
    ENDER_PEARL: 500
    DOOR: 500
    FURNACE: 500
    ANVIL: 500
    FISH_SCOOPING: 500
    END_PORTAL: 500
    BREEDING: 500
    HURT_VILLAGERS: 500
    FROST_WALKER: 500
    TURTLE_EGGS: 500
    COLLECT_LAVA: 500
    LEVER: 500
    HURT_MONSTERS: 0
    RIDING: 500
    NAME_TAG: 500
    ARMOR_STAND: 500
    TRADING: 0
    EGGS: 500
    ITEM_DROP: 0
    NOTE_BLOCK: 0
    NETHER_PORTAL: 500
    ITEM_PICKUP: 0
    CROP_TRAMPLE: 500
    BREWING: 500
    DROPPER: 500
    COLLECT_WATER: 500
    BUTTON: 500
    FIRE_EXTINGUISH: 500
    BEACON: 500
    TRAPDOOR: 500
    PRESSURE_PLATE: 0
    PLACE_BLOCKS: 500
    ITEM_FRAME: 500
    CRAFTING: 0
    SHEARING: 500
    ENCHANTING: 0
    BED: 500
    SPAWN_EGGS: 500
    MILKING: 0
    DISPENSER: 500
    GATE: 0
    EXPERIENCE_PICKUP: 500
    HOPPER: 500
    LEASH: 500
    BREAK_BLOCKS: 500
    MOUNT_INVENTORY: 500
    CHORUS_FRUIT: 500
    CONTAINER: 500
    POTION_THROWING: 500
    JUKEBOX: 500
  # These are the default settings for new islands
  default-island-settings:
    PVP_END: false
    PVP_NETHER: false
    FIRE_SPREAD: 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
  # Added since 1.4.1.
  hidden-flags: []
  # Visitor banned commands - Visitors to islands cannot use these commands in this world
  visitor-banned-commands:
  - spawner
  - spawnmob
  # Falling banned commands - players cannot use these commands when falling
  # if the PREVENT_TELEPORT_WHEN_FALLING world setting flag is active
  # Added since 1.8.0.
  falling-banned-commands:
  - warp
  - spawn
island:
  # 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 island
  # Players can have the bskyblock.coop.maxsize.<number> 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 island
  # Players can have the bskyblock.trust.maxsize.<number> 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 /is sethome <number> or /is go <number>
  max-homes: 1
  reset:
    # How many resets a player is allowed (manage with /bsbadmin reset add/remove/reset/set command)
    # Value of -1 means unlimited, 0 means hardcore - no resets.
    # Example, 2 resets means they get 2 resets or 3 islands lifetime
    reset-limit: -1
    # Kicked or leaving players lose resets
    # Players who leave a team will lose an island reset chance
    # If a player has zero resets left and leaves a team, they cannot make a new
    # island by themselves and can only join a team.
    # Leave this true to avoid players exploiting free islands
    leavers-lose-reset: false
    # Allow kicked players to keep their inventory.
    # Overrides the on-leave inventory reset for kicked players.
    kicked-keep-inventory: false
    on-join:
      # What the addon should reset when the player joins or creates an island
      # Reset Money - if this is true, will reset the player's money to the starting money
      # Recommendation is that this is set to true, but if you run multi-worlds
      # make sure your economy handles multi-worlds too.
      money: false
      # Reset inventory - if true, the player's inventory will be cleared.
      # Note: if you have MultiInv running or a similar inventory control plugin, that
      # plugin may still reset the inventory when the world changes.
      inventory: false
      # Reset health - if true, the player's health will be reset.
      # Added since 1.8.0.
      health: true
      # Reset hunger - if true, the player's hunger will be reset.
      # Added since 1.8.0.
      hunger: true
      # Reset experience points - if true, the player's experience will be reset.
      # Added since 1.8.0.
      exp: false
      # Reset Ender Chest - if true, the player's Ender Chest will be cleared.
      ender-chest: false
    on-leave:
      # What the plugin should reset when the player leaves or is kicked from an island
      # Reset Money - if this is true, will reset the player's money to the starting money
      # Recommendation is that this is set to true, but if you run multi-worlds
      # make sure your economy handles multi-worlds too.
      money: false
      # Reset inventory - if true, the player's inventory will be cleared.
      # Note: if you have MultiInv running or a similar inventory control plugin, that
      # plugin may still reset the inventory when the world changes.
      inventory: false
      # Reset health - if true, the player's health will be reset.
      # Added since 1.8.0.
      health: false
      # Reset hunger - if true, the player's hunger will be reset.
      # Added since 1.8.0.
      hunger: false
      # Reset experience - if true, the player's experience will be reset.
      # Added since 1.8.0.
      exp: false
      # Reset Ender Chest - if true, the player's Ender Chest will be cleared.
      ender-chest: false
  create-island-on-first-login:
    # Toggles the automatic island creation upon the player's first login on your server.
    # If set to true,
    #    * Upon connecting to your server for the first time, the player will be told that
    #     an island will be created for him.
    #   * Make sure you have a Blueprint Bundle called "default": this is the one that will
    #     be used to create the island.
    #   * An island will be created for the player without needing him to run the create command.
    # If set to false, this will disable this feature entirely.
    # Warning:
    #   * If you are running multiple gamemodes on your server, and all of them have
    #     this feature enabled, an island in all the gamemodes will be created simultaneously.
    #     However, it is impossible to know on which island the player will be teleported to afterwards.
    #   * Island 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.
    # Added since 1.9.0.
    enable: false
    # Time in seconds after the player logged in, before his island gets created.
    # If set to 0 or less, the island will be created directly upon the player's login.
    # It is recommended to keep this value under a minute's time.
    # Added since 1.9.0.
    delay: 5
    # Toggles whether the island creation should be aborted if the player logged off while the
    # delay (see the option above) has not worn off yet.
    # If set to true,
    #   * If the player has logged off the server while the delay (see the option above) has not
    #     worn off yet, this will cancel the island creation.
    #   * If the player relogs afterward, since he will not be recognized as a new player, no island
    #     would be created for him.
    #   * If the island creation started before the player logged off, it will continue.
    # If set to false, the player's island will be created even if he went offline in the meantime.
    # Note this option has no effect if the delay (see the option above) is set to 0 or less.
    # Added since 1.9.0.
    abort-on-logout: true
  # Toggles whether the player should be teleported automatically to his island when it is created.
  # If set to false, the player will be told his island is ready but will have to teleport to his island using the command.
  # Added since 1.10.0.
  teleport-player-to-island-when-created: true
  # Create Nether or End islands if they are missing when a player goes through a portal.
  # Nether and End islands are usually pasted when a player makes their island, but if they are
  # missing for some reason, you can switch this on.
  # Note that bedrock removal glitches can exploit this option.
  # Added since 1.10.0.
  create-missing-nether-end-islands: false
  commands:
    # List of commands to run when a player joins an island 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"
    # Added since 1.8.0.
    on-join: []
    # List of commands to run when a player leaves an island, resets his island 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: []
  sethome:
    nether:
      allow: true
      require-confirmation: true
    the-end:
      allow: true
      require-confirmation: true
  deaths:
    # 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
    # When a player joins a team, reset their death count
    team-join-reset: true
    # Reset player death count when they start a new island or reset an island
    # Added since 1.6.0.
    reset-on-new-island: true
protection:
  # Geo restrict mobs.
  # Mobs that exit the island space where they were spawned will be removed.
  geo-limit-settings:
  - GHAST
  - BAT
  - BLAZE
  # BSkyBlock blocked mobs.
  # List of mobs that should not spawn in BSkyBlock.
  # Added since 1.13.1.
  block-mobs: []
  # 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
do-not-edit-these-settings:
  # These settings should not be edited
  reset-epoch: 0

Based on that last island info screenshot, the island range was never set to greater than 200, otherwise it would list that in the "Largest historical protection range" line. What was it supposed to have been upgraded to?

Another weird thing - the protection range is set to 5 in the screenshot. That's weird.

Why is that wierd? (protection range 5)

BONNe commented

It is weird because the default value in config is set to 200.
It should never get lower than that.

No it was set to 50

I changes it to 200

But I think, I'm gonna reinstall the hole bentobox map and install it again. So i need help to what I shall do for the protection range stay at 200 and not go back to the island start limits. Because that is our esue, everytime we restart the server, it goes back to the start range

And we run paper version 1.16.1

@motherchar are you the same as @GalaxyKat11 ? I'll assume you are connected.

The config file you posted shows that the default protection size for islands is 200:

  # Default protection range radius in blocks. Cannot be larger than distance.
  # Admins can change protection sizes for players individually using /bsbadmin range set <player> <new range>
  # or set this permission: bskyblock.island.range.<number>
  # /!\ 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.
  protection-range: 200

This is a generous protection range because it will result in islands of 400 x 400 blocks (the 200 is a 'radius'). The default BSkyBlock range is 50, which results in 100x100 block islands.

If ranges are being changed when you are logging in, then it might be due to the island owner's permissions. As you can see in the config file, if an owner has a permission likebskyblock.island.range.5 then when they login, their island range will be set to 5. From your screenshot, I could see that your island range was 5, so maybe this is what is happening.

So, if you want to restart everything, delete the BentoBox folder and plugin, go to https://download.bentobox.world and select the package you want and download it and follow the instructions. But also make sure your player permissions are clear and clean otherwise you'll still see this issue.