Plex-FAWE/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/annotation/Preload.java

49 lines
1.4 KiB
Java

package com.sk89q.worldedit.command.util.annotation;
import com.fastasyncworldedit.core.Fawe;
import com.fastasyncworldedit.core.queue.implementation.preloader.Preloader;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.world.World;
import org.enginehub.piston.inject.InjectAnnotation;
import org.enginehub.piston.inject.InjectedValueAccess;
import org.enginehub.piston.inject.Key;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Indicates how the affected blocks should be hinted at in the log.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.PARAMETER,
ElementType.METHOD
})
@InjectAnnotation
public @interface Preload {
PreloadCheck value() default PreloadCheck.NEVER;
enum PreloadCheck {
PRELOAD {
@Override
public void preload(Actor actor, InjectedValueAccess context) {
World world = context.injectedValue(Key.of(EditSession.class)).get().getWorld();
Preloader preloader = Fawe.platform().getPreloader(true);
if (preloader != null) {
preloader.update(actor, world);
}
}
},
NEVER {};
public void preload(Actor actor, InjectedValueAccess context) {
}
}
}