Implement SupplyingExtent (#613)

This commit is contained in:
Hannes Greule 2020-09-14 12:20:26 +02:00 committed by GitHub
parent 4243e8e86b
commit 0685881f64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 2 deletions

View File

@ -0,0 +1,24 @@
package com.boydti.fawe.object.extent;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.PassthroughExtent;
import java.util.function.Supplier;
/**
* An extent that delegates actions to another extent that may change at any time.
*/
public class SupplyingExtent extends PassthroughExtent {
private final Supplier<Extent> extentSupplier;
public SupplyingExtent(Supplier<Extent> extentSupplier) {
super(extentSupplier.get());
this.extentSupplier = extentSupplier;
}
@Override
public Extent getExtent() {
return this.extentSupplier.get();
}
}

View File

@ -19,6 +19,7 @@
package com.sk89q.worldedit.command.argument;
import com.boydti.fawe.object.extent.SupplyingExtent;
import com.sk89q.worldedit.EmptyClipboardException;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
@ -109,10 +110,10 @@ public class FactoryConverter<T> implements ArgumentConverter<T> {
if (extent instanceof World) {
parserContext.setWorld((World) extent);
}
parserContext.setExtent(new RequestExtent());
parserContext.setExtent(new SupplyingExtent(((Locatable) actor)::getExtent));
} else if (session.hasWorldOverride()) {
parserContext.setWorld(session.getWorldOverride());
parserContext.setExtent(new RequestExtent());
parserContext.setExtent(new SupplyingExtent(session::getWorldOverride));
}
parserContext.setSession(session);
parserContext.setRestricted(true);