mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-04 03:56:41 +00:00
Fixes #255 compass exceptipn
This commit is contained in:
@ -337,44 +337,6 @@ public final class PlatformCommandManager {
|
||||
globalInjectedValues.injectValue(Key.of(InjectedValueAccess.class), Optional::of);
|
||||
}
|
||||
|
||||
private Actor wrapActor(Actor actor, InjectedValueStore context) {
|
||||
if (actor instanceof Player) {
|
||||
final Set<String> failedPermissions = new LinkedHashSet<>();
|
||||
Player player = (Player) actor;
|
||||
Player unwrapped = PlayerProxy.unwrap(player);
|
||||
actor = new LocationMaskedPlayerWrapper(unwrapped, unwrapped.getLocation(), true) {
|
||||
@Override
|
||||
public boolean hasPermission(String permission) {
|
||||
if (!super.hasPermission(permission)) {
|
||||
failedPermissions.add(permission);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public void checkPermission(String permission) throws AuthorizationException {
|
||||
try {
|
||||
super.checkPermission(permission);
|
||||
} catch (AuthorizationException e) {
|
||||
failedPermissions.add(permission);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
};
|
||||
context.injectValue(Key.of(CommandPermissions.class), i -> Optional.of(new CommandPermissions() {
|
||||
@Override
|
||||
public Class<? extends Annotation> annotationType() {
|
||||
return CommandPermissions.class;
|
||||
}
|
||||
@Override
|
||||
public String[] value() {
|
||||
return failedPermissions.toArray(new String[0]);
|
||||
}
|
||||
}));
|
||||
}
|
||||
return actor;
|
||||
}
|
||||
|
||||
private <CI> void registerSubCommands(String name, List<String> aliases, String desc,
|
||||
CommandManager commandManager,
|
||||
Consumer<BiConsumer<CommandRegistration, CI>> handlerInstance) {
|
||||
@ -815,9 +777,8 @@ public final class PlatformCommandManager {
|
||||
getCommandManager(), actor, "//help");
|
||||
}
|
||||
|
||||
private MemoizingValueAccess initializeInjectedValues(Arguments arguments, Actor tmp, Event event) {
|
||||
private MemoizingValueAccess initializeInjectedValues(Arguments arguments, Actor actor, Event event) {
|
||||
InjectedValueStore store = MapBackedValueStore.create();
|
||||
Actor actor = wrapActor(tmp, store);
|
||||
store.injectValue(Key.of(Actor.class), ValueProvider.constant(actor));
|
||||
if (actor instanceof Player) {
|
||||
store.injectValue(Key.of(Player.class), ValueProvider.constant((Player) actor));
|
||||
|
@ -21,6 +21,8 @@ package com.sk89q.worldedit.extension.platform;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.boydti.fawe.wrappers.AsyncPlayer;
|
||||
import com.boydti.fawe.wrappers.LocationMaskedPlayerWrapper;
|
||||
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
|
||||
import com.boydti.fawe.object.brush.visualization.VirtualWorld;
|
||||
import com.boydti.fawe.object.exception.FaweException;
|
||||
@ -267,13 +269,19 @@ public class PlatformManager {
|
||||
if (cuiActor == null) {
|
||||
cuiActor = player;
|
||||
}
|
||||
|
||||
return (T) new PlayerProxy(player, permActor, cuiActor, getWorldForEditing(player.getWorld()));
|
||||
if (player == permActor && player == cuiActor) {
|
||||
return (T) proxyFawe(player);
|
||||
}
|
||||
return (T) proxyFawe(new PlayerProxy(player, permActor, cuiActor, getWorldForEditing(player.getWorld())));
|
||||
} else {
|
||||
return base;
|
||||
}
|
||||
}
|
||||
|
||||
private <T extends Player> T proxyFawe(T player) {
|
||||
return (T) new LocationMaskedPlayerWrapper(player, player.getLocation(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the command manager.
|
||||
*
|
||||
|
@ -21,7 +21,6 @@ package com.sk89q.worldedit.extension.platform;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.boydti.fawe.wrappers.PlayerWrapper;
|
||||
import com.sk89q.worldedit.WorldEditException;
|
||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||
import com.sk89q.worldedit.entity.BaseEntity;
|
||||
@ -34,7 +33,6 @@ import com.sk89q.worldedit.session.SessionKey;
|
||||
import com.sk89q.worldedit.util.HandSide;
|
||||
import com.sk89q.worldedit.util.Location;
|
||||
import com.sk89q.worldedit.util.formatting.text.Component;
|
||||
import com.sk89q.worldedit.util.formatting.text.TextComponent;
|
||||
import com.sk89q.worldedit.world.World;
|
||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||
@ -44,7 +42,6 @@ import com.sk89q.worldedit.world.gamemode.GameMode;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class PlayerProxy extends AbstractPlayerActor {
|
||||
|
||||
|
Reference in New Issue
Block a user