package vesence.recode.modules.impl.render;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.platform.GlStateManager;
import vesence.recode.commandstorage.FriendStorage;
import vesence.recode.events.EventDisplay;
import vesence.recode.modules.api.Category;
import vesence.recode.modules.api.Module;
import vesence.recode.modules.api.ModuleRegister;
import vesence.recode.modules.settings.impl.ModeSetting;
import vesence.recode.utils.math.MathUtil;
import vesence.recode.utils.math.Vector4i;
import vesence.recode.utils.player.PlayerUtils;
import vesence.recode.utils.render.color.ColorUtils;
import vesence.recode.utils.render.rect.DisplayUtils;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.screen.inventory.InventoryScreen;
import net.minecraft.client.settings.PointOfView;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.opengl.GL11;
import java.awt.*;
@ModuleRegister(name = "Pointers", category = Category.Visuals, description = "123")
public class Arrows extends Module {
public static ModeSetting design = new ModeSetting("Дизайн стрелки", "Client", "Client", "Celestial", "Nursultan");
public float animationStep;
public Arrows() {
addSettings(design);
}
private float lastYaw;
private float lastPitch;
private float animatedYaw;
private float animatedPitch;
@Subscribe
public void onDisplay(EventDisplay e) {
if (mc.player == null || mc.world == null || e.getType() != EventDisplay.Type.PRE) {
return;
}
float size = 60;
if (mc.currentScreen instanceof InventoryScreen) {
size += 100;
}
animationStep = MathUtil.fast(animationStep, size, 6);
if (mc.gameSettings.getPointOfView() == PointOfView.FIRST_PERSON) {
for (AbstractClientPlayerEntity player : mc.world.getPlayers()) {
if (!PlayerUtils.isNameValid(player.getNameClear()) || mc.player == player)
continue;
double x = player.lastTickPosX + (player.getPosX() - player.lastTickPosX) * mc.getRenderPartialTicks()
- mc.getRenderManager().info.getProjectedView().getX();
double z = player.lastTickPosZ + (player.getPosZ() - player.lastTickPosZ) * mc.getRenderPartialTicks()
- mc.getRenderManager().info.getProjectedView().getZ();
double cos = MathHelper.cos((float) (mc.getRenderManager().info.getYaw() * (Math.PI * 2 / 360)));
double sin = MathHelper.sin((float) (mc.getRenderManager().info.getYaw() * (Math.PI * 2 / 360)));
double rotY = -(z * cos - x * sin);
double rotX = -(x * cos + z * sin);
float angle = (float) (Math.atan2(rotY, rotX) * 180 / Math.PI);
double x2 = animationStep * MathHelper.cos((float) Math.toRadians(angle)) + window.getScaledWidth() / 2f;
double y2 = animationStep * MathHelper.sin((float) Math.toRadians(angle)) + window.getScaledHeight() / 2f;
x2 += animatedYaw;
y2 += animatedPitch;
GlStateManager.pushMatrix();
GlStateManager.disableBlend();
GlStateManager.translated(x2, y2, 0);
GlStateManager.rotatef(angle, 0, 0, 1);
int color = FriendStorage.isFriend(player.getGameProfile().getName()) ? FriendStorage.getColor() : ColorUtils.rgb(255,255,255);
//ColorUtils.getColor(1);
DisplayUtils.drawShadowCircle(1, 0, 14, ColorUtils.setAlpha(ColorUtils.getColor(0), 55));
drawTriangle(-4, -1F, 6F, 9F, new Color(0, 0, 0, 32));
drawTriangle(-3F, 0F, 5F, 7F, new Color(color));
GlStateManager.enableBlend();
GlStateManager.popMatrix();
}
}
lastYaw = mc.player.rotationYaw;
lastPitch = mc.player.rotationPitch;
}
public static void drawTriangle(float x, float y, float width, float height, Color color) {
if(design.is("Client")) {
DisplayUtils.drawImageAlpha(new ResourceLocation("vesence/images/triangle2.png"), -8.0F, -9.0F, 18, 18, new Vector4i(ColorUtils.setAlpha(Theme.getColor(0, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(90, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(180, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(270, 1.0F), 125)));
}
if(design.is("Celestial")){
DisplayUtils.drawImageAlpha(new ResourceLocation("vesence/images/triangle.png"), -8.0F, -9.0F, 18, 18, new Vector4i(ColorUtils.setAlpha(Theme.getColor(0, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(90, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(180, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(270, 1.0F), 125)));
}
if(design.is("Nursultan")){
DisplayUtils.drawImageAlpha(new ResourceLocation("vesence/images/arrows.png"), -8.0F, -9.0F, 18, 18, new Vector4i(ColorUtils.setAlpha(Theme.getColor(0, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(90, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(180, 1.0F), 125), ColorUtils.setAlpha(Theme.getColor(270, 1.0F), 125)));
}
GL11.glPushMatrix();
GL11.glPopMatrix();
}
}