BentoBoxWorld / Level

Add on for BentoBox to calculate island levels for BSkyBlock and AcidIsland. Please read the Wiki!
Eclipse Public License 2.0
24 stars 31 forks source link

CaveBlock Island Level Miscalculations #258

Closed PuppetMasterZee closed 2 years ago

PuppetMasterZee commented 2 years ago

Expected behavior

Player creates new cave, then executes the /cave level command. It should return a 0 cave level for a new untouched cave.

Observed/Actual behavior

Problem occurs when player creates new cave, then executes the /cave level command. It returns a level which may be excessively high or excessively low. Player has not interacted with the cave (ie no mining or placing blocks.) When rechecking the level, the it begins to decrease and continues to do so when rechecked. Even when player places high level blocks the cave level continues to decrease upon each recheck (level rechecked at varying intervals.) Occurs when using default BentoBox cave generation.

Steps/models to reproduce

Link to recording of error. [https://youtu.be/NvGDgANHSJo]

BentoBox version

BentoBox v1.20.1 (snapshot)

server version: paper 1.18.2-310 bentobox version: 1.20.1 level addon version: 2.9.1 (tested also 2.9.0) (default config) caveblock version: 1.15.0 (default config) installed addons: [bank, border, caveblock, challenges, chat, controlpanel, extramobs, islandrankup, level, limits,twerkingfortrees,visit]

Plugin list

Plugins list [https://imgur.com/a/jWrN8iK]

Other

No response

BONNe commented 2 years ago

CaveBlock world is full of blocks. It will be calculated in cave level.

It means, that if you have a configuration, where stone block weight is 1, then calculating island level will be enormous. As well as removing any block would mean that cave level decreases, as you remove block from the world.

I would suggest doing obvious thing: set value for stone to 0, and set air block value to 1. Or something like that.

PuppetMasterZee commented 2 years ago

I'm sorry, I neglected to say that we already did set block weights for naturally generated blocks to 0. EDIT: We used the default config and then edited it to set ores, stone, and all naturally generated blocks to zero.

BONNe commented 2 years ago

Can you check your own island "blocks" that create value?

It is possible to do via: /[player_cmd] top and clicking on the bottom icon (if you use default panels).

PuppetMasterZee commented 2 years ago

We are using default islands with default config.

MissGamerz commented 2 years ago

we stand on the island not doing anything and the island level plumits into negatives as in (first creation 3000+ then wait 10 minutes without doing anything at all on your island it will be -33000 or even lower than that).

we changed all natually generating blocks to 0 including not limited to AIR and CAVE_AIR, BEDROCK, STONE, DIORITE, DIRT, GRAVEL, ANDESITE, GRANITE, all "ORE" blocks including deepslate values

every test conducted was done with fresh worlds/database and player data was deleted from the world files

BONNe commented 2 years ago

@tastybento Can confirm... level calculation reduces cave level each time it is calculated. Could you move this issue to the Level addon?

BONNe commented 2 years ago

We are using default islands with default config.

I think I got something: Can you run the command: cave level <player> from the console 2 times with a bit of delay between them?

It will print out the "blocks" that are calculated for the level.

BONNe commented 2 years ago

So, a fast fix would be to disable the bedrock floor in caveblock config file: https://github.com/BentoBoxWorld/CaveBlock/blob/7bbcd40df2429739a51496d861d9d203b67d2bee/src/main/resources/config.yml#L104

Apperantly, CaveBlock started to generate dirt and grass_block layer at the top of the world bellow bedrock block. As the bedrock is above grass block, it turns into dirt and that is the reason why it decreases cave level.

BONNe commented 2 years ago

@tastybento I am sorry, this is not Level addon issue. This is CaveBlock issue. I will solve it in next caveblock verison.

BONNe commented 2 years ago

I pushed a new CaveBlock version that should fix the "dropping" level.

The issue was with the new world generation, as it generated grass blocks below the top bedrock layer. And as the world updates and grass blocks become dirt, every player lost a lot of levels.

This, however, would require regenerating caveblock world as the top of the world is 5 dirt layers below bedrock.

https://ci.codemc.io/job/BentoBoxWorld/job/CaveBlock/420/