WorldEdit

WorldEdit

42M Downloads

//perf does not work properly in newer versions of world edit.

DNAmaster10 opened this issue ยท 5 comments

commented

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

  1. Run //perf on.

  2. Place blocks in the following configuration, such that connectable blocks may be pasted in-between.
    2024-09-02_12 41 22

  3. Select the corners of the structure. (Points shown with Redstone blocks).
    2024-09-02_12 41 46

  4. Run //replace air glass_pane with the region selected. Alternatively, replace glass_pane with another type of connectable block, such as oak_fence,
    2024-09-02_12 42 00

  5. Connectable blocks do not connect to neighbouring solid blocks.
    2024-09-02_12 42 10

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.

commented

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.

commented

Also, this is a dupe of #1396.

commented

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

commented

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.

commented

@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.