From fcd9ec74b8a9a26f78c189c5613946d1bd8f6939 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Wed, 29 Dec 2021 22:22:14 +0100 Subject: [PATCH] added mobowner --- .../harakiri/impl/manager/ModuleManager.java | 1 + .../impl/module/render/MobOwnerModule.java | 89 ++++ .../impl/module/render/NametagsModule.java | 460 ++++++++++-------- 3 files changed, 337 insertions(+), 213 deletions(-) create mode 100644 src/main/java/me/vaxry/harakiri/impl/module/render/MobOwnerModule.java diff --git a/src/main/java/me/vaxry/harakiri/impl/manager/ModuleManager.java b/src/main/java/me/vaxry/harakiri/impl/manager/ModuleManager.java index ca06f3e..33d3ad0 100644 --- a/src/main/java/me/vaxry/harakiri/impl/manager/ModuleManager.java +++ b/src/main/java/me/vaxry/harakiri/impl/manager/ModuleManager.java @@ -68,6 +68,7 @@ public ModuleManager() { ChamsModule chammod = new ChamsModule(); add(chammod); add(new NametagsModule()); + add(new MobOwnerModule()); add(new SneakModule()); add(new MiddleClickFriendsModule()); add(new FullbrightModule()); diff --git a/src/main/java/me/vaxry/harakiri/impl/module/render/MobOwnerModule.java b/src/main/java/me/vaxry/harakiri/impl/module/render/MobOwnerModule.java new file mode 100644 index 0000000..e7975c9 --- /dev/null +++ b/src/main/java/me/vaxry/harakiri/impl/module/render/MobOwnerModule.java @@ -0,0 +1,89 @@ +package me.vaxry.harakiri.impl.module.render; + +import me.vaxry.harakiri.Harakiri; +import me.vaxry.harakiri.framework.event.render.EventRender2D; +import me.vaxry.harakiri.impl.manager.APIManager; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; + +import me.vaxry.harakiri.framework.Module; +import net.minecraft.util.math.Vec3d; +import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; +import net.minecraft.entity.passive.AbstractHorse; +import net.minecraft.entity.passive.EntityTameable; + +import java.util.*; + +import akka.actor.FSM.Event; + +public final class MobOwnerModule extends Module { + + private HashMap alreadyResolvedUUIDs = new HashMap<>(); + + public MobOwnerModule() { + super("MobOwner", new String[]{"MobOwner"}, "Shows the mob owner.", "NONE", -1, ModuleType.RENDER); + } + + @Listener + public void onRender2D(EventRender2D event) { + + final Minecraft mc = Minecraft.getMinecraft(); + + for (Entity e : mc.world.getLoadedEntityList()) { + if ((e instanceof EntityTameable)){ + handleTameable((EntityTameable)e, event); + } else if (e instanceof AbstractHorse) { + handleHorse((AbstractHorse)e, event); + } + } + } + + public void handleHorse(AbstractHorse ent, EventRender2D event) { + if (ent.getOwnerUniqueId() == null) + return; + + if (!alreadyResolvedUUIDs.containsKey(ent.getOwnerUniqueId().toString())) { + alreadyResolvedUUIDs.put(ent.getOwnerUniqueId().toString(), ent.getOwnerUniqueId().toString()); + new Thread(() -> { + final String name = Harakiri.get().getApiManager().resolveName(ent.getOwnerUniqueId().toString()); + if (name != null) { + alreadyResolvedUUIDs.put(ent.getOwnerUniqueId().toString(), name); + } + }).start(); + } + + // draw + final String toDrawName = alreadyResolvedUUIDs.get(ent.getOwnerUniqueId().toString()); + + ((NametagsModule) Harakiri.get().getModuleManager().find(NametagsModule.class)).drawNametag(toDrawName, + 0xFFFFFFFF, ent, event, true); + } + + public void handleTameable(EntityTameable ent, EventRender2D event) { + if (!ent.isTamed()) + return; + + if (ent.getOwner() == null) + return; + + if (ent.getOwnerId() == null) + return; + + if (!alreadyResolvedUUIDs.containsKey(ent.getOwnerId().toString())) { + alreadyResolvedUUIDs.put(ent.getOwnerId().toString(), ent.getOwnerId().toString()); + new Thread(() -> { + final String name = Harakiri.get().getApiManager().resolveName(ent.getOwnerId().toString()); + if (name != null) { + alreadyResolvedUUIDs.put(ent.getOwnerId().toString(), name); + } + }).start(); + } + + // draw + final String toDrawName = alreadyResolvedUUIDs.get(ent.getOwnerId().toString()); + + ((NametagsModule) Harakiri.get().getModuleManager().find(NametagsModule.class)).drawNametag(toDrawName, + 0xFFFFFFFF, ent, event, true); + } + +} diff --git a/src/main/java/me/vaxry/harakiri/impl/module/render/NametagsModule.java b/src/main/java/me/vaxry/harakiri/impl/module/render/NametagsModule.java index 85379fb..a4146ee 100644 --- a/src/main/java/me/vaxry/harakiri/impl/module/render/NametagsModule.java +++ b/src/main/java/me/vaxry/harakiri/impl/module/render/NametagsModule.java @@ -67,221 +67,301 @@ public void onRender2D(EventRender2D event){ if(ent == mc.player) continue; - BlockPos blockPos = (ent).getPosition(); + drawNametag((EntityPlayer)ent, event); + } + } - camera.setPosition(mc.getRenderViewEntity().posX, mc.getRenderViewEntity().posY, mc.getRenderViewEntity().posZ); + @Listener + public void onEntityRemove(EventRemoveEntity event) { + if(event.getEntity() instanceof EntityPlayer){ + playersList.remove(event.getEntity()); + } + } - ArrayList> toDraw = new ArrayList<>(); + @Listener + public void renderName(EventRenderName event) { + if(!this.isEnabled()) + return; + if (event.getEntity() instanceof EntityPlayer) { + event.setCanceled(true); + } + } - EntityPlayer e = (EntityPlayer)ent; - if(!isPlayerCached(e)) - playersList.put(e, 0.01f); + Coordinate rotate_point(Coordinate around, Coordinate point, float theta) { + double p1x = (Math.cos(theta) * (point.x - around.x) - Math.sin(theta) * (point.y - around.y) + around.x); + double p2x = (Math.sin(theta) * (point.x - around.x) + Math.cos(theta) * (point.y - around.y) + around.y); + return new Coordinate(p1x, p2x); + } - for(Map.Entry p : playersList.entrySet()){ - if(p.getValue() < 0.01f) - p.setValue(0.02f); - p.setValue(Math.min(p.getValue() + fadein.getValue() / 3.f, 255)); - } + private Coordinate conv3Dto2DSpace(double x, double y, double z) { + final GLUProjection.Projection projection = GLUProjection.getInstance().project(x - Minecraft.getMinecraft().getRenderManager().viewerPosX, y - Minecraft.getMinecraft().getRenderManager().viewerPosY, z - Minecraft.getMinecraft().getRenderManager().viewerPosZ, GLUProjection.ClampMode.NONE, false); - float alphaPerc = playersList.get(ent) / 255.f; + return projection.getType() == GLUProjection.Projection.Type.OUTSIDE || projection.getType() == GLUProjection.Projection.Type.INVERTED ? null : new Coordinate(projection.getX(), projection.getY()); + } - Vec3d nametagvec = new Vec3d(e.getPositionEyes(event.getPartialTicks()).x, e.getPositionEyes(event.getPartialTicks()).y, e.getPositionEyes(event.getPartialTicks()).z); + private Coordinate conv3Dto2DSpaceForceOutside(double x, double y, double z) { + final GLUProjection.Projection projection = GLUProjection.getInstance().project(x - Minecraft.getMinecraft().getRenderManager().viewerPosX, y - Minecraft.getMinecraft().getRenderManager().viewerPosY, z - Minecraft.getMinecraft().getRenderManager().viewerPosZ, GLUProjection.ClampMode.NONE, false); - Coordinate nametagMiddle = conv3Dto2DSpace(nametagvec.x, nametagvec.y + 0.67334f, nametagvec.z); - if(nametagMiddle == null) - continue; + return projection.getType() == GLUProjection.Projection.Type.INVERTED ? null : new Coordinate(projection.getX(), projection.getY()); + } - double distancetoent = get3DDistance(e); + private int get3DDistance(Entity e) { + return (int)(Math.sqrt(Math.pow((Minecraft.getMinecraft().player.posX - e.posX),2) + Math.pow((Minecraft.getMinecraft().player.posY - e.posY),2) + Math.pow((Minecraft.getMinecraft().player.posZ - e.posZ),2))); + } - // Nametag string setup - String nametagstr = ""; + private boolean isOutOfScreen(Coordinate x) { + final ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft()); + if((x.x < 0 || x.x > res.getScaledWidth()) && (x.y < 0 || x.y > res.getScaledHeight())) + return true; + return false; + } + private Vector3d calculateRelativeAngle(final Vec3d source, final Vec3d destination, final Vector3d viewAngles) { + Vector3d delta = new Vector3d(); + delta.x = destination.x - source.x; + delta.y = destination.y - source.y; + delta.z = destination.z - source.z; + Vector3d angles = new Vector3d(Math.toDegrees(Math.atan2(-delta.z, Math.hypot(delta.x, delta.y))) - viewAngles.x, + Math.toDegrees(Math.atan2(delta.y, delta.x)) - viewAngles.y, 0); + angles.normalize(); + return angles; + } + + private boolean isPlayerCached(EntityPlayer e){ + for(Map.Entry p : playersList.entrySet()){ + if(p.getKey() == e) + return true; + } + return false; + } + + public void drawNametag(EntityPlayer e, EventRender2D event) { + + if (!isPlayerCached(e)) + playersList.put(e, 0.01f); + + if (Harakiri.get().getFriendManager().isFriend(e) != null) { + drawNametag(e.getName(), 0xFF80FFFF, e, event, false); + } else { + drawNametag(e.getName(), 0xFFFFFFFF, e, event, false); + } + } + + public void drawNametag(String name, Integer color, Entity ent, EventRender2D event, boolean onlyName) { + final Minecraft mc = Minecraft.getMinecraft(); + + BlockPos blockPos = (ent).getPosition(); + + camera.setPosition(mc.getRenderViewEntity().posX, mc.getRenderViewEntity().posY, mc.getRenderViewEntity().posZ); + + ArrayList> toDraw = new ArrayList<>(); + + for (Map.Entry p : playersList.entrySet()) { + if (p.getValue() < 0.01f) + p.setValue(0.02f); + p.setValue(Math.min(p.getValue() + fadein.getValue() / 3.f, 255)); + } + + float alphaPerc = onlyName ? 1 : playersList.get(ent) / 255.f; + + Vec3d nametagvec = new Vec3d(ent.getPositionEyes(event.getPartialTicks()).x, + ent.getPositionEyes(event.getPartialTicks()).y, ent.getPositionEyes(event.getPartialTicks()).z); + + Coordinate nametagMiddle = conv3Dto2DSpace(nametagvec.x, nametagvec.y + 0.67334f, nametagvec.z); + if (nametagMiddle == null) + return; + + double distancetoent = get3DDistance(ent); + + // Nametag string setup + String nametagstr = ""; + + if (!onlyName) { + EntityPlayer e = (EntityPlayer)ent; int health = Math.round(e.getHealth()); health += e.getAbsorptionAmount(); - if(health > 20) { + if (health > 20) { nametagstr += "\2472\247o" + health; toDraw.add(new Pair<>(health + " ", 0xFF11DD11)); - } - else if(health > 13) { + } else if (health > 13) { nametagstr += "\2472" + health; toDraw.add(new Pair<>(health + " ", 0xFF11DD11)); - } - else if(health > 7) { + } else if (health > 7) { nametagstr += "\2476" + health; toDraw.add(new Pair<>(health + " ", 0xFFAAAA00)); - } - else { + } else { nametagstr += "\247c" + health; toDraw.add(new Pair<>(health + " ", 0xFFFF3333)); } - - nametagstr += "\247f "; + } + + nametagstr += name; + toDraw.add(new Pair<>(name + " ", color)); - if(Harakiri.get().getFriendManager().isFriend(e) != null) { - nametagstr += "\2473" + e.getName(); - toDraw.add(new Pair<>(e.getName() + " ", 0xFF80FFFF)); - } - else { - nametagstr += "\247f" + e.getName(); - toDraw.add(new Pair<>(e.getName() + " ", 0xFFFFFFFF)); - } - + if (!onlyName) { + EntityPlayer e = (EntityPlayer) ent; nametagstr += "\247f "; final NetworkPlayerInfo playerInfo = mc.player.connection.getPlayerInfo(e.getUniqueID()); int ping = -1; if (Objects.nonNull(playerInfo)) { - if(playerInfo.getResponseTime() != 0) + if (playerInfo.getResponseTime() != 0) ping = playerInfo.getResponseTime(); } - if(ping == -1) { + if (ping == -1) { nametagstr += "\2478?"; toDraw.add(new Pair<>("?", 0xFF888888)); - } - else if (ping > 200) { + } else if (ping > 200) { nametagstr += "\247c" + ping + "ms"; toDraw.add(new Pair<>(ping + "ms", 0xFFFF5050)); - } - else if(ping > 100) { + } else if (ping > 100) { nametagstr += "\2476" + ping + "ms"; toDraw.add(new Pair<>(ping + "ms", 0xFFFFCC00)); - } - else if(ping > 50) { + } else if (ping > 50) { nametagstr += "\2472" + ping + "ms"; toDraw.add(new Pair<>(ping + "ms", 0xFFCCFF33)); - } - else { + } else { nametagstr += "\247a" + ping + "ms"; toDraw.add(new Pair<>(ping + "ms", 0xFF66FF66)); } + } - float nametagX = 0; - float nametagY = 0; - float scale = 0; - float textLength = 0; - float xoffset = 0; - Coordinate nametagMiddleNew = new Coordinate(0,0); + float nametagX = 0; + float nametagY = 0; + float scale = 0; + float textLength = 0; + float xoffset = 0; + Coordinate nametagMiddleNew = new Coordinate(0, 0); - if(distancetoent > 5.f) { - // draw without 3D scaling + if (distancetoent > 5.f) { + // draw without 3D scaling - scale = 1.0f - (float)distancetoent / 500.f; - scale *= additionalScale.getValue(); + scale = 1.0f - (float) distancetoent / 500.f; + scale *= additionalScale.getValue(); - GlStateManager.pushMatrix(); - GlStateManager.scale(scale, scale, scale); + GlStateManager.pushMatrix(); + GlStateManager.scale(scale, scale, scale); - nametagX = (float)nametagMiddle.x; - nametagY = (float)nametagMiddle.y - (float)distancetoent / 10.f; + nametagX = (float) nametagMiddle.x; + nametagY = (float) nametagMiddle.y - (float) distancetoent / 10.f; - if(distancetoent > 80) - nametagY = (float)nametagMiddle.y - (float)80 / 10; + if (distancetoent > 80) + nametagY = (float) nametagMiddle.y - (float) 80 / 10; - nametagX /= scale; - nametagY /= scale; + nametagX /= scale; + nametagY /= scale; - nametagMiddleNew.x = nametagX; - nametagMiddleNew.y = nametagY; + nametagMiddleNew.x = nametagX; + nametagMiddleNew.y = nametagY; - textLength = Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr); - nametagX -= textLength / 2.f; - }else{ - // draw with 3D scaling + textLength = Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr); + nametagX -= textLength / 2.f; + } else { + // draw with 3D scaling - float strwidth = Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr) / 43.f; // real units + float strwidth = Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr) / 43.f; // real units - float playerYaw = (float)Math.toRadians(mc.player.rotationYaw); + float playerYaw = (float) Math.toRadians(mc.player.rotationYaw); - //float x1 = (float)(Math.cos(playerYaw) * 2) / strwidth; - //float y1 = (float)(Math.sin(playerYaw) * 2) / strwidth; + // float x1 = (float)(Math.cos(playerYaw) * 2) / strwidth; + // float y1 = (float)(Math.sin(playerYaw) * 2) / strwidth; - Coordinate nametagPoint = new Coordinate(nametagvec.x, nametagvec.z); + Coordinate nametagPoint = new Coordinate(nametagvec.x, nametagvec.z); - Coordinate point = new Coordinate(nametagvec.x + strwidth / 2.f, nametagvec.z); + Coordinate point = new Coordinate(nametagvec.x + strwidth / 2.f, nametagvec.z); - Coordinate x1 = rotate_point(nametagPoint, point, playerYaw); - Coordinate y1; - if(playerYaw + 3.14f > 3.14f) - y1 = rotate_point(nametagPoint, point, playerYaw - 3.14f); - else - y1 = rotate_point(nametagPoint, point, playerYaw + 3.14f); + Coordinate x1 = rotate_point(nametagPoint, point, playerYaw); + Coordinate y1; + if (playerYaw + 3.14f > 3.14f) + y1 = rotate_point(nametagPoint, point, playerYaw - 3.14f); + else + y1 = rotate_point(nametagPoint, point, playerYaw + 3.14f); - Coordinate right = conv3Dto2DSpace(x1.x, nametagvec.y + 0.67334f,x1.y); - Coordinate left = conv3Dto2DSpace(y1.x, nametagvec.y + 0.67334f,y1.y); + Coordinate right = conv3Dto2DSpace(x1.x, nametagvec.y + 0.67334f, x1.y); + Coordinate left = conv3Dto2DSpace(y1.x, nametagvec.y + 0.67334f, y1.y); - if(right == null && left == null){ - continue; - } + if (right == null && left == null) { + return; + } - float scaledwidth; + float scaledwidth; - if(right == null){ - scaledwidth = (float)(2*Math.abs(nametagMiddle.x - left.x)); - right = new Coordinate(left.x - scaledwidth, left.y); - }else if(left == null){ - scaledwidth = (float)(2*Math.abs(right.x - nametagMiddle.x)); - left = new Coordinate(right.x + scaledwidth, right.y); - }else{ - scaledwidth = (float)Math.abs(right.x - left.x); - } + if (right == null) { + scaledwidth = (float) (2 * Math.abs(nametagMiddle.x - left.x)); + right = new Coordinate(left.x - scaledwidth, left.y); + } else if (left == null) { + scaledwidth = (float) (2 * Math.abs(right.x - nametagMiddle.x)); + left = new Coordinate(right.x + scaledwidth, right.y); + } else { + scaledwidth = (float) Math.abs(right.x - left.x); + } - scale = scaledwidth / Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr); - scale *= additionalScale.getValue(); + scale = scaledwidth / Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr); + scale *= additionalScale.getValue(); - GlStateManager.pushMatrix(); - GlStateManager.scale(scale, scale, scale); + GlStateManager.pushMatrix(); + GlStateManager.scale(scale, scale, scale); - textLength = Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr); + textLength = Harakiri.get().getTTFFontUtil().getStringWidth(nametagstr); - right.x /= scale; - right.y /= scale; - left.x /= scale; - left.y /= scale; + right.x /= scale; + right.y /= scale; + left.x /= scale; + left.y /= scale; - nametagMiddleNew.x = Math.abs(right.x + left.x) / 2.f; - nametagMiddleNew.y = left.y; + nametagMiddleNew.x = Math.abs(right.x + left.x) / 2.f; + nametagMiddleNew.y = left.y; - if(left.x > right.x){ - nametagY = (float)right.y; - }else{ - nametagY = (float)left.y; - } + if (left.x > right.x) { + nametagY = (float) right.y; + } else { + nametagY = (float) left.y; + } - nametagX = (float)nametagMiddleNew.x - textLength / 2.f; + nametagX = (float) nametagMiddleNew.x - textLength / 2.f; - //xoffset = 2.9f * this.additionalScale.getValue(); - } + // xoffset = 2.9f * this.additionalScale.getValue(); + } - // Draw basic nametag + // Draw basic nametag - RenderUtil.drawRect(nametagX - NAMETAG_SAFEAREA + xoffset, nametagY, nametagX + textLength + xoffset + NAMETAG_SAFEAREA, nametagY + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 2 * NAMETAG_SAFEAREA, ColorUtil.changeAlpha(0x551D1D1D, (int)(alphaPerc * 85))); + RenderUtil.drawRect(nametagX - NAMETAG_SAFEAREA + xoffset, nametagY, + nametagX + textLength + xoffset + NAMETAG_SAFEAREA, + nametagY + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 2 * NAMETAG_SAFEAREA, + ColorUtil.changeAlpha(0x551D1D1D, (int) (alphaPerc * 85))); - //Harakiri.get().getTTFFontUtil().drawStringWithShadow(nametagstr, nametagX + xoffset, nametagY + NAMETAG_SAFEAREA, (int)(0xFF * alphaPerc) * 0x1000000 + 0xDDDDDD); + // Harakiri.get().getTTFFontUtil().drawStringWithShadow(nametagstr, nametagX + + // xoffset, nametagY + NAMETAG_SAFEAREA, (int)(0xFF * alphaPerc) * 0x1000000 + + // 0xDDDDDD); - // New rendering - float xoff = 0; - GlStateManager.enableBlend(); - for(int iter = 0; iter < toDraw.size(); iter++){ - Pair entry = toDraw.get(iter); - xoff += Harakiri.get().getTTFFontUtil().drawStringWithShadow(entry.first(), nametagX + xoffset + xoff, nametagY + NAMETAG_SAFEAREA, (int)(0xFF * alphaPerc) * 0x1000000 + entry.second()); - } - GlStateManager.disableBlend(); + // New rendering + float xoff = 0; + GlStateManager.enableBlend(); + for (int iter = 0; iter < toDraw.size(); iter++) { + Pair entry = toDraw.get(iter); + xoff += Harakiri.get().getTTFFontUtil().drawStringWithShadow(entry.first(), nametagX + xoffset + xoff, + nametagY + NAMETAG_SAFEAREA, (int) (0xFF * alphaPerc) * 0x1000000 + entry.second()); + } + GlStateManager.disableBlend(); - // Draw Armor and stuff + // Draw Armor and stuff + + if (!onlyName) { + EntityPlayer e = (EntityPlayer) ent; final Iterator items = e.getEquipmentAndArmor().iterator(); final ArrayList stacks = new ArrayList<>(); - final ItemStack offhandItem = ((EntityLivingBase)e).getItemStackFromSlot(EntityEquipmentSlot.OFFHAND); - final ItemStack mainHandItem = ((EntityLivingBase)e).getItemStackFromSlot(EntityEquipmentSlot.MAINHAND); - final ItemStack feetitem = ((EntityLivingBase)e).getItemStackFromSlot(EntityEquipmentSlot.FEET); - final ItemStack legitem = ((EntityLivingBase)e).getItemStackFromSlot(EntityEquipmentSlot.LEGS); - final ItemStack chestItem = ((EntityLivingBase)e).getItemStackFromSlot(EntityEquipmentSlot.CHEST); - final ItemStack headitem = ((EntityLivingBase)e).getItemStackFromSlot(EntityEquipmentSlot.HEAD); + final ItemStack offhandItem = ((EntityLivingBase) e).getItemStackFromSlot(EntityEquipmentSlot.OFFHAND); + final ItemStack mainHandItem = ((EntityLivingBase) e).getItemStackFromSlot(EntityEquipmentSlot.MAINHAND); + final ItemStack feetitem = ((EntityLivingBase) e).getItemStackFromSlot(EntityEquipmentSlot.FEET); + final ItemStack legitem = ((EntityLivingBase) e).getItemStackFromSlot(EntityEquipmentSlot.LEGS); + final ItemStack chestItem = ((EntityLivingBase) e).getItemStackFromSlot(EntityEquipmentSlot.CHEST); + final ItemStack headitem = ((EntityLivingBase) e).getItemStackFromSlot(EntityEquipmentSlot.HEAD); stacks.add(offhandItem); stacks.add(feetitem); @@ -292,13 +372,13 @@ else if(ping > 50) { final boolean[] toRemove = new boolean[6]; - for(int i = 0; i < stacks.size(); ++i) { + for (int i = 0; i < stacks.size(); ++i) { if (stacks.get(i).getItem() == Items.AIR) toRemove[i] = true; } - for(int i = 5; i >= 0; --i){ - if(toRemove[i]) + for (int i = 5; i >= 0; --i) { + if (toRemove[i]) stacks.remove(i); } @@ -312,10 +392,16 @@ else if(ping > 50) { nametagMiddleNew.y -= NAMETAG_SAFEAREA * 5 + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 16; - float rectWidth = NAMETAG_SAFEAREA*2 + stacks.size() * 16 + NAMETAG_SAFEAREA * Math.max(stacks.size() - 1, 0); - if(stacks.size() == 0) + float rectWidth = NAMETAG_SAFEAREA * 2 + stacks.size() * 16 + + NAMETAG_SAFEAREA * Math.max(stacks.size() - 1, 0); + if (stacks.size() == 0) rectWidth = 0; - RenderUtil.drawRect((float)nametagMiddleNew.x - rectWidth/2.f, (float)nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 2 * NAMETAG_SAFEAREA, (float)nametagMiddleNew.x + rectWidth/2.f, (float)nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 16 + 4 * NAMETAG_SAFEAREA, ColorUtil.changeAlpha(0x551D1D1D, (int)(alphaPerc * 85))); + RenderUtil.drawRect((float) nametagMiddleNew.x - rectWidth / 2.f, + (float) nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 2 * NAMETAG_SAFEAREA, + (float) nametagMiddleNew.x + rectWidth / 2.f, + (float) nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 16 + + 4 * NAMETAG_SAFEAREA, + ColorUtil.changeAlpha(0x551D1D1D, (int) (alphaPerc * 85))); // BG drawn. float currentX = 0; @@ -328,11 +414,14 @@ else if(ping > 50) { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); RenderHelper.enableGUIStandardItemLighting(); - GlStateManager.translate(nametagMiddleNew.x - rectWidth/2.f + NAMETAG_SAFEAREA + currentX, nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 3 * NAMETAG_SAFEAREA, 0); + GlStateManager.translate(nametagMiddleNew.x - rectWidth / 2.f + NAMETAG_SAFEAREA + currentX, + nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + 3 * NAMETAG_SAFEAREA, + 0); Harakiri.get().getRenderItemAlpha().alpha = alphaPerc; Harakiri.get().getRenderItemAlpha().renderItemAndEffectIntoGUI(mc.player, stack, 0, 0); - Harakiri.get().getRenderItemAlpha().renderItemOverlayIntoGUI(mc.fontRenderer, stack, 0, 0, (String)null); + Harakiri.get().getRenderItemAlpha().renderItemOverlayIntoGUI(mc.fontRenderer, stack, 0, 0, + (String) null); RenderHelper.disableStandardItemLighting(); GlStateManager.disableBlend(); @@ -355,87 +444,32 @@ else if(ping > 50) { String itemName = mainHandItem.getDisplayName(); - if(mainHandItem.getItem() == Items.AIR) itemName = ""; + if (mainHandItem.getItem() == Items.AIR) + itemName = ""; nametagMiddleNew.y -= Harakiri.get().getTTFFontUtil().FONT_HEIGHT / 2.f; - float nameRectWidth = NAMETAG_SAFEAREA*2 + Harakiri.get().getTTFFontUtil().getStringWidth(itemName); + float nameRectWidth = NAMETAG_SAFEAREA * 2 + Harakiri.get().getTTFFontUtil().getStringWidth(itemName); - //RenderUtil.drawRect((float)nametagMiddleNew.x - nameRectWidth / 2.f, (float)nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + NAMETAG_SAFEAREA, (float)nametagMiddleNew.x + nameRectWidth / 2.f, (float)nametagMiddleNew.y - NAMETAG_SAFEAREA, 0x551d1d1d); + // RenderUtil.drawRect((float)nametagMiddleNew.x - nameRectWidth / 2.f, + // (float)nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT + + // NAMETAG_SAFEAREA, (float)nametagMiddleNew.x + nameRectWidth / 2.f, + // (float)nametagMiddleNew.y - NAMETAG_SAFEAREA, 0x551d1d1d); // New rendering GlStateManager.enableBlend(); - Harakiri.get().getTTFFontUtil().drawStringWithShadow(itemName, (float)nametagMiddleNew.x - nameRectWidth / 2.f + NAMETAG_SAFEAREA, (float)nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT, (int)(0xFF * alphaPerc) * 0x1000000 + 0xDDDDDD); + Harakiri.get().getTTFFontUtil().drawStringWithShadow(itemName, + (float) nametagMiddleNew.x - nameRectWidth / 2.f + NAMETAG_SAFEAREA, + (float) nametagMiddleNew.y + Harakiri.get().getTTFFontUtil().FONT_HEIGHT, + (int) (0xFF * alphaPerc) * 0x1000000 + 0xDDDDDD); GlStateManager.disableBlend(); - GlStateManager.scale(1/nameScale, 1/nameScale, 1/nameScale); - GlStateManager.scale(1/armorscale.getValue(), 1/armorscale.getValue(), 1/armorscale.getValue()); - GlStateManager.scale(1/scale, 1/scale, 1/scale); - GlStateManager.popMatrix(); + GlStateManager.scale(1 / nameScale, 1 / nameScale, 1 / nameScale); + GlStateManager.scale(1 / armorscale.getValue(), 1 / armorscale.getValue(), 1 / armorscale.getValue()); } - } - @Listener - public void onEntityRemove(EventRemoveEntity event) { - if(event.getEntity() instanceof EntityPlayer){ - playersList.remove(event.getEntity()); - } - } + GlStateManager.scale(1 / scale, 1 / scale, 1 / scale); - @Listener - public void renderName(EventRenderName event) { - if(!this.isEnabled()) - return; - if (event.getEntity() instanceof EntityPlayer) { - event.setCanceled(true); - } - } - - Coordinate rotate_point(Coordinate around, Coordinate point, float theta) { - double p1x = (Math.cos(theta) * (point.x - around.x) - Math.sin(theta) * (point.y - around.y) + around.x); - double p2x = (Math.sin(theta) * (point.x - around.x) + Math.cos(theta) * (point.y - around.y) + around.y); - return new Coordinate(p1x, p2x); - } - - private Coordinate conv3Dto2DSpace(double x, double y, double z) { - final GLUProjection.Projection projection = GLUProjection.getInstance().project(x - Minecraft.getMinecraft().getRenderManager().viewerPosX, y - Minecraft.getMinecraft().getRenderManager().viewerPosY, z - Minecraft.getMinecraft().getRenderManager().viewerPosZ, GLUProjection.ClampMode.NONE, false); - - return projection.getType() == GLUProjection.Projection.Type.OUTSIDE || projection.getType() == GLUProjection.Projection.Type.INVERTED ? null : new Coordinate(projection.getX(), projection.getY()); - } - - private Coordinate conv3Dto2DSpaceForceOutside(double x, double y, double z) { - final GLUProjection.Projection projection = GLUProjection.getInstance().project(x - Minecraft.getMinecraft().getRenderManager().viewerPosX, y - Minecraft.getMinecraft().getRenderManager().viewerPosY, z - Minecraft.getMinecraft().getRenderManager().viewerPosZ, GLUProjection.ClampMode.NONE, false); - - return projection.getType() == GLUProjection.Projection.Type.INVERTED ? null : new Coordinate(projection.getX(), projection.getY()); - } - - private int get3DDistance(EntityPlayer e) { - return (int)(Math.sqrt(Math.pow((Minecraft.getMinecraft().player.posX - e.posX),2) + Math.pow((Minecraft.getMinecraft().player.posY - e.posY),2) + Math.pow((Minecraft.getMinecraft().player.posZ - e.posZ),2))); - } - - private boolean isOutOfScreen(Coordinate x) { - final ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft()); - if((x.x < 0 || x.x > res.getScaledWidth()) && (x.y < 0 || x.y > res.getScaledHeight())) - return true; - return false; - } - - private Vector3d calculateRelativeAngle(final Vec3d source, final Vec3d destination, final Vector3d viewAngles) { - Vector3d delta = new Vector3d(); - delta.x = destination.x - source.x; - delta.y = destination.y - source.y; - delta.z = destination.z - source.z; - Vector3d angles = new Vector3d(Math.toDegrees(Math.atan2(-delta.z, Math.hypot(delta.x, delta.y))) - viewAngles.x, - Math.toDegrees(Math.atan2(delta.y, delta.x)) - viewAngles.y, 0); - angles.normalize(); - return angles; - } - - private boolean isPlayerCached(EntityPlayer e){ - for(Map.Entry p : playersList.entrySet()){ - if(p.getKey() == e) - return true; - } - return false; + GlStateManager.popMatrix(); } }