mirror of https://github.com/cabaletta/baritone
59 lines
2.0 KiB
Java
59 lines
2.0 KiB
Java
package baritone.selection;
|
|
|
|
import baritone.Baritone;
|
|
import baritone.api.event.events.RenderEvent;
|
|
import baritone.api.event.listener.AbstractGameEventListener;
|
|
import baritone.api.selection.ISelection;
|
|
import baritone.utils.IRenderer;
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import net.minecraft.world.phys.AABB;
|
|
|
|
public class SelectionRenderer implements IRenderer, AbstractGameEventListener {
|
|
|
|
public static final double SELECTION_BOX_EXPANSION = .005D;
|
|
|
|
private final SelectionManager manager;
|
|
|
|
SelectionRenderer(Baritone baritone, SelectionManager manager) {
|
|
this.manager = manager;
|
|
baritone.getGameEventHandler().registerEventListener(this);
|
|
}
|
|
|
|
public static void renderSelections(PoseStack stack, ISelection[] selections) {
|
|
float opacity = settings.selectionOpacity.value;
|
|
boolean ignoreDepth = settings.renderSelectionIgnoreDepth.value;
|
|
float lineWidth = settings.selectionLineWidth.value;
|
|
|
|
if (!settings.renderSelection.value || selections.length == 0) {
|
|
return;
|
|
}
|
|
|
|
IRenderer.startLines(settings.colorSelection.value, opacity, lineWidth, ignoreDepth);
|
|
|
|
for (ISelection selection : selections) {
|
|
IRenderer.emitAABB(stack, selection.aabb(), SELECTION_BOX_EXPANSION);
|
|
}
|
|
|
|
if (settings.renderSelectionCorners.value) {
|
|
IRenderer.glColor(settings.colorSelectionPos1.value, opacity);
|
|
|
|
for (ISelection selection : selections) {
|
|
IRenderer.emitAABB(stack, new AABB(selection.pos1()));
|
|
}
|
|
|
|
IRenderer.glColor(settings.colorSelectionPos2.value, opacity);
|
|
|
|
for (ISelection selection : selections) {
|
|
IRenderer.emitAABB(stack, new AABB(selection.pos2()));
|
|
}
|
|
}
|
|
|
|
IRenderer.endLines(ignoreDepth);
|
|
}
|
|
|
|
@Override
|
|
public void onRenderPass(RenderEvent event) {
|
|
renderSelections(event.getModelViewStack(), manager.getSelections());
|
|
}
|
|
}
|