Open octylFractal opened 5 months ago
I think the proper way to do it would be:
try (CauseStackManager.StackFrame frame = Sponge.server().causeStackManager().pushCauseFrame()) {
frame.addContext(MY_CONTEXT_KEY, "hello");
Features.TREES_PLAINS.get().place(location);
}
and
@Listener
public void onBlockChange(ChangeBlockEvent e) {
if (e.context().get(MY_CONTEXT_KEY).isPresent()) {
// filter blocks
}
}
However I tested that a few days ago and it didn't work so there is likely a bug in the implementation currently. The implementation needs to be fixed, but I don't think the API needs any additions for that.
Major SpongeAPI version
12
Is this likely to be a breaking change?
No
What are you requesting?
Currently,
Structure
andFeature
haveboolean place(ServerWorld, Vector3i)
, which does not allow a mod like WorldEdit to capture or modify the changes. It would be nice if we could get a callback for each block/entity so that WorldEdit may place it, rather than placing it directly into the world. This allows undo, masking, and better control of block placement than using Minecraft's code directly.