Volver al índice
src/main/java/ar/com/companeros/tools/PrimitiveExecutor.java
package ar.com.companeros.tools;
import com.google.gson.JsonObject;
import java.util.UUID;
/**
* Puente hacia acciones autorizadas de Minecraft. La implementación comprueba
* alcance, materiales, dimensión, protección y pertenencia al jugador real.
* No recibe nombres de clases, comandos, rutas ni código ejecutable.
*/
public interface PrimitiveExecutor {
PrimitiveTask begin(UUID actorId, UUID invocationId, String primitive, JsonObject arguments);
interface PrimitiveTask {
Result tick(long gameTick);
void cancel();
}
enum State { RUNNING, SUCCEEDED, FAILED }
record Result(State state, double progress, String message) {
public Result {
if (state == null || !Double.isFinite(progress) || progress < 0 || progress > 1)
throw new IllegalArgumentException("Resultado inválido de una acción");
message = message == null ? "" : message;
if (message.length() > 512) message = message.substring(0, 512);
}
public static Result running(double progress) { return new Result(State.RUNNING, progress, ""); }
public static Result success() { return new Result(State.SUCCEEDED, 1, ""); }
public static Result failure(String message) { return new Result(State.FAILED, 0, message); }
}
}