WorldEdit

WorldEdit

42M Downloads

Observers update when manipulating tile entities.

solonovamax opened this issue ยท 11 comments

commented

Versions

Version & Build: 7.1.0;8e55131
Platform version: Bukkit

Bug

When pasting, setting blocks, etc. observers will be updated if there are tile entities* in front of them.

*it also happens at random if there is a normal block in front of it. It is just guaranteed to happen if there is a tile entity in front of it. (according to my testing)

Note: whether or not a block will update is dependant on the coordinates of the block. If you paste the same structure twice at the same location, the same blocks will update.

To Reproduce

  1. Make some redstone contraption with an observer and a tile entity in front of it. (Exampled: a piston with a block powered by an observer with a chest or a repeater in front of it. See attached images.)
  2. //copy and //paste the build somewhere else.
  3. The observer will update when pasted, which is shown by the piston extending and dropping its block.

Expected behaviour

Observers shouldn't update when you change blocks in front of them using world edit.

Screenshots

Original:

2020-07-02_19 14 03

Pasted:

2020-07-02_19 14 00

commented

@solonovamax can you confirm if this still occurs when turning off the update side-effect? If no response in 14 days, I will close this issue.

commented

I'd assume I test on the latest version? Do you want me to use a beta/alpha build, or the current latest stable?

Also, how do I turn off the update side effect?

commented

Fix confirmed via Discord, neighbors side-effect fixes this now.

commented

This also happens if you have an observer and use //set or another command to set different blocks in front of it, though it may be intended for this feature.

commented

Have you tried with //perf neighbors off in 7.2.0 dev builds? This is technically intended behavior without this specific flag.

Observers updating when copy/pasted themselves is a separate issue, and not likely to be resolved any time soon.

commented

I haven't tried the //perf neighbors off, but from what you say, it sounds like that would only fix changing blocks in front of an observer and not copying and pasting them.

It's a shame that it won't be resolved any time soon.

commented

I am going to re-categorize this as a feature request, as it is not technically a "bug" that block updates occur on place -- Minecraft's own copy commands also have this issue. It is possible for us to resolve, and it is planned as part of faster edit options, but it may not be available for a little bit (ETA of a year, could be more). Unless Mojang adds this type of editing to base Minecraft, the way we would have to do it is extremely complex.

commented

That's too bad. It might be an update order thing, so perhaps just finding if there are any observers in the paste and then if there are, setting them at the end. That would be kind of clunky, but it might work.

For the observers updating when other things are in front of them are set, idk how you'd do that without doing something janky like using reflection to get all observer update events, then see if they are close.

commented

Notes for developers:

  • We can use CraftBukkit's internal extra doPlace flag to avoid these updates, potentially also under VALIDATION?
  • We can maybe use mixins in Fabric to achieve the same flag, will investingate at some point
  • Forge will have to wait on either a ๐Ÿ‘ป coremod ๐Ÿ‘ป or chunk section editing
commented

I would like to note that when I run the command //undo, it doesn't update anything. (At least, I don't think so)

commented

It appears that the validation perf mode in 7.2.0 controls this behaviour (on Bukkit at least)