package net.minecraft.commands.execution; import net.minecraft.commands.ExecutionCommandSource; import org.jspecify.annotations.Nullable; public interface ExecutionControl { void queueNext(EntryAction action); void tracer(@Nullable TraceCallbacks tracer); @Nullable TraceCallbacks tracer(); Frame currentFrame(); static > ExecutionControl create(final ExecutionContext context, final Frame frame) { return new ExecutionControl() { @Override public void queueNext(final EntryAction action) { context.queueNext(new CommandQueueEntry<>(frame, action)); } @Override public void tracer(@Nullable final TraceCallbacks tracer) { context.tracer(tracer); } @Nullable @Override public TraceCallbacks tracer() { return context.tracer(); } @Override public Frame currentFrame() { return frame; } }; } }