как на фабрике 1.21.4 сделать светящуюся обводку игрока?
package ru.etc1337.client.modules.impl.visuals;
import lombok.Getter;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.client.option.Perspective;
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.hit.HitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import org.joml.Vector4d;
import ru.etc1337.api.TempColor;
import ru.etc1337.api.events.impl.render.EventRender3D;
import ru.etc1337.api.settings.impl.MultiModeSetting;
import ru.etc1337.api.settings.impl.SliderSetting;
import ru.etc1337.api.util.math.MathUtility;
import ru.etc1337.api.util.render.ProjectionUtility;
import ru.etc1337.api.util.render.RenderUtility;
import ru.etc1337.client.modules.Module;
import ru.etc1337.client.modules.api.ModuleCategory;
import ru.etc1337.client.modules.api.ModuleInfo;
import java.awt.*;
@ModuleInfo(name = "Highlight", category = ModuleCategory.VISUALS)
public class Highlight extends Module {
public final MultiModeSetting modes = new MultiModeSetting("highlight.modes", this, "highlight.modes.targets", "highlight.modes.block");
public final MultiModeSetting modes2 = new MultiModeSetting("highlight.modes2", this, "highlight.modes2.players", "highlight.modes2.items").setVisible(() -> modes.get(0).isEnabled());
@EventHandler
public void onRender3D(EventRender3D e) {
int color = TempColor.getClientColor().alpha(0.2).getRGB();
if (modes.get(0).isEnabled()) {
boolean canShow = !mc.options.getPerspective().equals(Perspective.FIRST_PERSON);
mc.world.getEntities().forEach(entity -> {
boolean entity2 = modes2.get(0).isEnabled() && (canShow || entity != mc.player) && entity instanceof PlayerEntity;
boolean item2 = modes2.get(1).isEnabled() && entity instanceof ItemEntity;
if (entity2 || item2) {
Box box = entity.getBoundingBox();
if (item2) {
box = box.offset(0, 0.1f, 0).expand(0.1f, 0.1f, 0.1f);
}
box = box.offset(MathUtility.interpolate(entity).subtract(entity.getPos()));
RenderUtility.drawBox(box, color, 2);
};
});
}
if (modes.get(1).isEnabled()) {
if (mc.crosshairTarget instanceof BlockHitResult result && result.getType().equals(HitResult.Type.BLOCK)) {
BlockPos pos = result.getBlockPos();
RenderUtility.drawShapeAlternative(pos, mc.world.getBlockState(pos).getOutlineShape(mc.world, pos),
color, 2, true, true);
}
}
}
}