Allow console to execute commands now that editsessions etc. accept actors

- Fixes #724
 - Fixes #1044
This commit is contained in:
dordsor21
2021-09-28 15:59:52 +01:00
parent fa2f50dea8
commit 0ed98729f8
10 changed files with 104 additions and 122 deletions

View File

@@ -46,15 +46,15 @@ public class ProvideBindings extends Bindings {
}
@Binding
public LocalSession getLocalSession(Player player) {
return getWorldEdit().getSessionManager().get(player);
public LocalSession getLocalSession(Actor actor) {
return getWorldEdit().getSessionManager().get(actor);
}
@Binding
public EditSession editSession(LocalSession localSession, Player player, InjectedValueAccess context) {
public EditSession editSession(LocalSession localSession, Actor actor, InjectedValueAccess context) {
Arguments arguments = context.injectedValue(Key.of(Arguments.class)).orElse(null);
String command = arguments == null ? null : arguments.get();
EditSession editSession = localSession.createEditSession(player, command);
EditSession editSession = localSession.createEditSession(actor, command);
editSession.enableStandardMode();
Request.request().setEditSession(editSession);
return editSession;
@@ -62,8 +62,8 @@ public class ProvideBindings extends Bindings {
@Selection
@Binding
public Region selection(LocalSession localSession, Player player) {
return localSession.getSelection(player.getWorld());
public Region selection(LocalSession localSession) {
return localSession.getSelection();
}
@Binding
@@ -124,8 +124,7 @@ public class ProvideBindings extends Bindings {
if (extent != null) {
return extent;
}
Player plr = getPlayer(actor);
EditSession editSession = editSession(getLocalSession(plr), plr, access);
EditSession editSession = editSession(getLocalSession(actor), actor, access);
if (access instanceof InjectedValueStore) {
InjectedValueStore store = (InjectedValueStore) access;
store.injectValue(Key.of(EditSession.class), ValueProvider.constant(editSession));

View File

@@ -6,27 +6,28 @@ import com.fastasyncworldedit.core.util.MemUtil;
import com.fastasyncworldedit.core.util.Permission;
import com.fastasyncworldedit.core.util.WEManager;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extent.Extent;
public class MemoryCheckingExtent extends PassthroughExtent {
private final Player player;
private final Actor actor;
public MemoryCheckingExtent(Player player, Extent extent) {
public MemoryCheckingExtent(Actor actor, Extent extent) {
super(extent);
this.player = player;
this.actor = actor;
}
@Override
public Extent getExtent() {
if (MemUtil.isMemoryLimited()) {
if (this.player != null) {
player.print(Caption.of(
if (this.actor != null) {
actor.print(Caption.of(
"fawe.cancel.worldedit.cancel.reason",
Caption.of("fawe.cancel.worldedit.cancel.reason.low.memory")
));
if (Permission.hasPermission(this.player, "worldedit.fast")) {
this.player.print(Caption.of("fawe.info.worldedit.oom.admin"));
if (Permission.hasPermission(this.actor, "worldedit.fast")) {
this.actor.print(Caption.of("fawe.info.worldedit.oom.admin"));
}
}
WEManager.IMP.cancelEdit(this, FaweCache.LOW_MEMORY);

View File

@@ -13,7 +13,7 @@ import com.fastasyncworldedit.core.util.MainUtil;
import com.sk89q.jnbt.NBTInputStream;
import com.sk89q.jnbt.NBTOutputStream;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.function.operation.ChangeSetExecutor;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.world.World;
@@ -134,35 +134,35 @@ public class DiskStorageHistory extends FaweStreamChangeSet {
enttFile.delete();
}
public void undo(Player player, Region[] regions) {
public void undo(Actor actor, Region[] regions) {
try {
close();
} catch (IOException e) {
e.printStackTrace();
return;
}
EditSession session = toEditSession(player, regions);
EditSession session = toEditSession(actor, regions);
session.setBlocks(this, ChangeSetExecutor.Type.UNDO);
deleteFiles();
}
public void undo(Player player) {
undo(player, null);
public void undo(Actor actor) {
undo(actor, null);
}
public void redo(Player player, Region[] regions) {
public void redo(Actor actor, Region[] regions) {
try {
close();
} catch (IOException e) {
e.printStackTrace();
return;
}
EditSession session = toEditSession(player, regions);
EditSession session = toEditSession(actor, regions);
session.setBlocks(this, ChangeSetExecutor.Type.REDO);
}
public void redo(Player player) {
redo(player, null);
public void redo(Actor actor) {
redo(actor, null);
}
public UUID getUUID() {

View File

@@ -16,7 +16,7 @@ import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.EditSessionBuilder;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.inventory.BlockBag;
import com.sk89q.worldedit.history.change.BlockChange;
@@ -251,12 +251,12 @@ public abstract class AbstractChangeSet implements ChangeSet, IBatchProcessor {
public abstract Iterator<Change> getIterator(boolean redo);
public EditSession toEditSession(Player player) {
return toEditSession(player, null);
public EditSession toEditSession(Actor actor) {
return toEditSession(actor, null);
}
public EditSession toEditSession(Player player, Region[] regions) {
EditSessionBuilder builder = WorldEdit.getInstance().newEditSessionBuilder().world(getWorld()).actor(player).
public EditSession toEditSession(Actor actor, Region[] regions) {
EditSessionBuilder builder = WorldEdit.getInstance().newEditSessionBuilder().world(getWorld()).actor(actor).
fastMode(false).checkMemory(false).changeSet(this).limitUnlimited();
if (regions != null) {
builder.allowedRegions(regions);

View File

@@ -3,6 +3,7 @@ package com.fastasyncworldedit.core.history.changeset;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extent.inventory.BlockBag;
import com.sk89q.worldedit.history.change.BlockChange;
import com.sk89q.worldedit.history.change.Change;
@@ -84,13 +85,13 @@ public class AbstractDelegateChangeSet extends AbstractChangeSet {
}
@Override
public EditSession toEditSession(Player player) {
return parent.toEditSession(player);
public EditSession toEditSession(Actor actor) {
return parent.toEditSession(actor);
}
@Override
public EditSession toEditSession(Player player, Region[] regions) {
return parent.toEditSession(player, regions);
public EditSession toEditSession(Actor actor, Region[] regions) {
return parent.toEditSession(actor, regions);
}
@Override