//perf does not work properly in newer versions of world edit.
DNAmaster10 opened this issue ยท 5 comments
WorldEdit Version
7.3.6
Platform Version
paper-1.21.1-57
Confirmations
- I am using the most recent Minecraft release.
- I am using a version of WorldEdit compatible with my Minecraft version.
- I am using the latest or recommended version of my platform software.
- I am NOT using a hybrid server, e.g. a server that combines Bukkit and Forge. Examples include Arclight, Mohist, and Cardboard.
- I am NOT using a fork of WorldEdit, such as FastAsyncWorldEdit (FAWE) or AsyncWorldEdit (AWE)
Bug Description
Connectable blocks, such as glass panes, oak fences, and iron bars, do not connect to other solid blocks when placed using world edit. This issue occurs when running //replace
, //set
, //paste
, etc, and is not specific to one command.
Expected Behavior
When //perf on
is run before pasting, the panes should connect to neighbouring solid blocks.
Reproduction Steps
-
Run
//perf on
. -
Place blocks in the following configuration, such that connectable blocks may be pasted in-between.
-
Select the corners of the structure. (Points shown with Redstone blocks).
-
Run
//replace air glass_pane
with the region selected. Alternatively, replaceglass_pane
with another type of connectable block, such asoak_fence
,
-
Connectable blocks do not connect to neighbouring solid blocks.
Anything Else?
Running the //update
command over the region after the connectable blocks have been pasted seems to make the blocks connect.
In previous world edit versions, this was not an issue.
Given this, would it be appropriate to either forcibly run the code equivalent of the //update command over a region when perf is enabled
This is already exactly what happens. //update
is the same exact thing as the flags in //perf
.
Alternatively, would it possibly be more appropriate to somehow rewrite the code for this within world edit, using a custom implementation? I'm unsure how big of an undertaking that would be.
No, we are not writing custom connection code for every vanilla block and also trying to guess at modded ones. We did this before 1.13 and it sucked.
Additionally, could you perhaps point me towards a more appropriate place to open this issue? I've tested this issue on Paper, Spigot and FabricMC, and the issue persists across all.
It's a Mojang bug, sort of. Good luck getting them to fix something that only affects mods though.
Also, this is a dupe of #1396.
the //perf command in general is just a switch for whether specific minecraft behaviours occur or not. we don't actually write the code for what happens beyond that, it's purely a switch for MC code. that looks to be an issue not in //perf, but in the underlying MC code
Thanks for responding @me4502.
Given this, would it be appropriate to either forcibly run the code equivalent of the //update command over a region when perf is enabled, or to even go as far as removing the perf command altogether (Or at least the option aimed at connecting connectable blocks)? This issue has persisted across multiple Minecraft versions now, so I'm not sure if it'll ever be fixed, or if it's possibly an intentional "feature". Alternatively, would it possibly be more appropriate to somehow rewrite the code for this within world edit, using a custom implementation? I'm unsure how big of an undertaking that would be.
Additionally, could you perhaps point me towards a more appropriate place to open this issue? I've tested this issue on Paper, Spigot and FabricMC, and the issue persists across all.
@octylFractal Thanks for the information.
In regard to the //update command, I'll clarify that //update does in fact fix the glass panes and other connectable blocks when ran over the region. I'm not really sure how exactly this is implemented differently to //perf, or whether the same code logic could be applied to other world edit commands.
Thanks for the feedback.