All my English is translated by DeepL.
If you find any major translation errors, please feel free to report them to me.
BedrockChanger was created to change the bedrock to another block, but it can also be used for another block.
Overview
A specified world, a specified Y coordinate range, and a specified block can be converted to a specified block or multiple types of blocks.
Any number of these settings can be made.
There are several items that can be changed to suit your server's load conditions.
Basically, the bedrock (or the block you set up) will change before the player is aware of anything.
Command is not required.
Once a chunk is modified, its coordinate information is stored in the database (SQLite) and the block modification process will not occur again without reason.
Execution example
These images are shown as before, cut in WorldEdit until the bedrock is visible, and after, with BedrockChanger enabled.
Overworld example
This is the simplest setting.
Changing the ReplaceBlock from POLISHED_DEEPSLATE to DEEPSLATE will result in a flat bedrock.
- world: world
TargetBlock: [BEDROCK]
ReplaceBlock: [POLISHED_DEEPSLATE]
SearchHeight: [-63=-60]
Nether example
This is a somewhat anomalous example.
Two settings for one world.
First, there are two SearchHeight values separated by "
," in the above configuration.
This is because the bedrock of the nether is present at the top and bottom, i.e., multiple ranges of Y-coordinates can be specified in a single setting.
Next, multiple ReplaceBlocks are specified.
The "%" at the end of the specified block indicates the conversion probability, and the conversion is performed randomly according to this probability during conversion.
If this ReplaceBlock is set to [NETHERRACK] setting, it will be a flat bedrock.
I'd like to talk about another setting.
This is a setting that turns part of the lower "NETHERRACK" into lava.
The ReplaceBlock probability setting can also be set as a ratio, so this time %3 will be treated as 75% and %1 as 25%.
If the same thing is set for TargetBlock and ReplaceBlock, it is only a confirmation and no direct change process occurs.
In this case, think of it as a setup that changes "NETHERRACK" to "LAVA" with a 25% probability.
- world: world_nether
TargetBlock: [BEDROCK]
ReplaceBlock: [OBSIDIAN%99.59, CRYING_OBSIDIAN%0.4, ANCIENT_DEBRIS%0.01]
SearchHeight: [1=4, 123=126]
- world: world_nether
TargetBlock: [NETHERRACK]
ReplaceBlock: [NETHERRACK%3, LAVA%1]
SearchHeight: [1=4]
Commands
/bedrockchanger or
/brc
Displays a list of commands for BedrockChanger.
/brc database or
/brc db
Displays simplified database information.
/brc db clear IDCode
The database is recorded per setting and deletes all records of Chunks for which a block conversion has been performed in that setting.
IDCode is displayed at plugin startup and in /brc db.
This command displays detailed information after use, confirming that the user really wants to delete it.
/brc db vacuum
Execute the SQLite vacuum command.
Running this command after using the clear command will reduce the size of the database file.
/brc reload
Reload the plugin.
Permissions
The permissions are already set by default for general use.
Basic Permission
bedrockchanger.blockchange
OP Permission
bedrockchanger.*
bedrockchanger.commandlist
bedrockchanger.database.*
bedrockchanger.database.show
bedrockchanger.database.clear
bedrockchanger.database.vacuum
bedrockchanger.reload
Config
Please refer to the actual config.yml file for details.
Setting:
Setting for block change.
world:
The name of the target world.
TargetBlock:
Please include the name of the Material you wish to target.
Multiple settings are possible.
ReplaceBlock:
Please include the name of the target material for conversion.
Multiple settings are possible.
For multiple settings, enter the material name followed by a percentage or ratio in %.
The total will be internally adjusted to 100%.
SearchHeight:
Enter the range of Y-coordinates that will be the search range.
Multiple settings are possible.
CheckDistance:
Determine the distance of the Chunk where the block change process will take place.
PlayerCheckTick:
The interval at which the player coordinates are checked.
PlayerStopCount:
The Chunk where the Player is located is checked as many times as PlayerStopCount, and if the Player is in the same Chunk, a block change decision is initiated.
ChunkChangeLimit:
The maximum number of Chunks that can be processed within one tick is determined.
TinyDebugMessage:
Displays simple debug messages on the console.
ReduceQueueDisplay:
Reduce the "Queue: XX Chunk" message displayed in TinyDebugMessage.
About debug messages
It is already set up for small to medium servers by default.
However, it may not be optimal for your server and you should review the settings using debug messages.
The following image shows the case when TinyDebugMessage is enabled.
It indicates that 121 chunks worth of change schedules are accumulated in Queue.
Queues must not accumulate too much.
If you wish to reduce the number of Queues, consider lowering the CheckDistance value.
ProcessingDuration represents the time elapsed since the block change process was started.
Do not take too long to process.
If the time is too long, a warning will be displayed.
216 ms / 121 chunks indicates that it took 216 ms (0.2 sec) to process 121 chunk changes.
Avg. 8.9 ms / tick shows how long the block change process took on average within one tick.
The larger this average time, the more likely it is that server lag will occur.
Never exceed 50 ms.
The entire Minecraft process determines that 1 tick is 50 ms.
If this is exceeded, lag will occur.
In a situation where BedrockChanger alone exceeds 50 ms, there is certainly a very large lag.
Please set the target to 15ms or less if possible, and 25ms or less at most.
That way this plugin will be less likely to cause lag on your server.
To reduce this time, lower the value of ChunkChangeLimit.
Advice
If you want to flat bedrock the ungenerated world, activate flat-bedrock on the paper.
https://docs.papermc.io/paper/reference/world-configuration#generator-settings
Do not try to change a large number of blocks in BedrockChanger.
For example, change WATER to LAVA.
Although designed with low load in mind, the process of changing a large number of blocks is CPU resource-intensive to begin with.
For this type of processing, we recommend changing the settings at the generation stage rather than using this plugin.
Please keep the range of the Y coordinate as small as possible and set it so that only certain blocks are in focus.
If you are using BedrockChanger for the first time, please first try it out on a test server to get a feel for how it works.
Always make backups before using them on a production server.
There is no ability to restore the block to its pre-modified state.
Finally
Thank you for taking the time to read this far.
If you have any problems, please use this review.
If you are slow to respond, you may contact me on twitter.
Please feel free to do so.