-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Ну пытался тужился и вот высрал /
Пожалуйста, авторизуйтесь для просмотра ссылки.
Java:
package fun.astral.modules.impl.render;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import fun.astral.client.events.WorldEvent;
import fun.astral.modules.api.Category;
import fun.astral.modules.api.Module;
import fun.astral.modules.api.ModuleAnnotation;
import fun.astral.system.math.MathUtil;
import fun.astral.system.render.color.ColorUtils;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.settings.PointOfView;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;
@ModuleAnnotation(name = "ChinaHat", category = Category.Render)
public class ChinaHat extends Module {
private final Tessellator tessellator = Tessellator.getInstance();
private final BufferBuilder buffer = tessellator.getBuffer();
private float hue = 0f;
@Subscribe
private void onRender(WorldEvent e) {
if (mc.gameSettings.getPointOfView() == PointOfView.FIRST_PERSON) return;
float radius = 0.6f;
hue += 0.005f;
if (hue > 1.0f) hue = 0f;
GlStateManager.pushMatrix();
RenderSystem.translated(-mc.getRenderManager().info.getProjectedView().x, -mc.getRenderManager().info.getProjectedView().y + 0.01, -mc.getRenderManager().info.getProjectedView().z);
Vector3d interpolated = MathUtil.interpolate(mc.player.getPositionVec(), new Vector3d(mc.player.lastTickPosX, mc.player.lastTickPosY, mc.player.lastTickPosZ), e.getPartialTicks());
interpolated.y -= 0.05f;
RenderSystem.translated(interpolated.x, interpolated.y + mc.player.getHeight(), interpolated.z);
final double yaw = mc.getRenderManager().info.getYaw();
GL11.glRotatef((float) -yaw, 0f, 1f, 0f);
RenderSystem.translated(-interpolated.x, -(interpolated.y + mc.player.getHeight()), -interpolated.z);
RenderSystem.enableBlend();
RenderSystem.depthMask(false);
RenderSystem.disableTexture();
RenderSystem.disableCull();
RenderSystem.blendFunc(770, 771);
RenderSystem.shadeModel(7425);
RenderSystem.lineWidth(3);
GL11.glEnable(GL11.GL_LINE_SMOOTH);
GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST);
buffer.begin(GL11.GL_TRIANGLE_FAN, DefaultVertexFormats.POSITION_COLOR);
float dynamicYPos = (float) (mc.player.getHeight() + 0.3);
float dynamicYPosRound = (float) (mc.player.getHeight());
float margin = 0.1F;
if (WorldTweaks.child) {
if (!mc.player.isSneaking()) {
margin = 0;
}
radius = 0.4f;
dynamicYPos = (float) ((mc.player.getHeight() / 2) + 0.4) - margin;
dynamicYPosRound = (float) ((mc.player.getHeight() / 2) + 0.1) - margin;
}
int centerColor = ColorUtils.HSBtoRGB(hue, 0.8f, 1.0f);
buffer.pos(interpolated.x, interpolated.y + dynamicYPos, interpolated.z)
.color((centerColor >> 16) & 0xFF, (centerColor >> 8) & 0xFF, centerColor & 0xFF, 128)
.endVertex();
for (int i = 0; i <= 360; i++) {
float x = (float) (interpolated.x + MathHelper.sin((float) Math.toRadians(i)) * radius);
float z = (float) (interpolated.z + -MathHelper.cos((float) Math.toRadians(i)) * radius);
float individualHue = (hue + (i / 360f)) % 1.0f;
int color = ColorUtils.HSBtoRGB(individualHue, 0.8f, 1.0f);
buffer.pos(x, interpolated.y + dynamicYPosRound, z)
.color((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF, 128)
.endVertex();
}
tessellator.draw();
buffer.begin(GL11.GL_LINE_LOOP, DefaultVertexFormats.POSITION_COLOR);
for (int i = 0; i <= 360; i++) {
float x = (float) (interpolated.x + MathHelper.sin((float) Math.toRadians(i)) * radius);
float z = (float) (interpolated.z + -MathHelper.cos((float) Math.toRadians(i)) * radius);
float individualHue = (hue + (i / 360f)) % 1.0f;
int color = ColorUtils.HSBtoRGB(individualHue, 0.8f, 1.0f);
buffer.pos(x, interpolated.y + dynamicYPosRound, z)
.color((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF, 255)
.endVertex();
}
tessellator.draw();
GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_DONT_CARE);
GL11.glDisable(GL11.GL_LINE_SMOOTH);
RenderSystem.enableTexture();
RenderSystem.disableBlend();
RenderSystem.enableCull();
RenderSystem.depthMask(true);
RenderSystem.shadeModel(7424);
GlStateManager.popMatrix();
}
}
Java:
public static int HSBtoRGB(float hue, float saturation, float brightness) {
int r = 0, g = 0, b = 0;
if (saturation == 0) {
r = g = b = (int) (brightness * 255.0f + 0.5f);
} else {
float h = (hue - (float)Math.floor(hue)) * 6.0f;
float f = h - (float)Math.floor(h);
float p = brightness * (1.0f - saturation);
float q = brightness * (1.0f - saturation * f);
float t = brightness * (1.0f - (saturation * (1.0f - f)));
switch ((int) h) {
case 0:
r = (int) (brightness * 255.0f + 0.5f);
g = (int) (t * 255.0f + 0.5f);
b = (int) (p * 255.0f + 0.5f);
break;
case 1:
r = (int) (q * 255.0f + 0.5f);
g = (int) (brightness * 255.0f + 0.5f);
b = (int) (p * 255.0f + 0.5f);
break;
case 2:
r = (int) (p * 255.0f + 0.5f);
g = (int) (brightness * 255.0f + 0.5f);
b = (int) (t * 255.0f + 0.5f);
break;
case 3:
r = (int) (p * 255.0f + 0.5f);
g = (int) (q * 255.0f + 0.5f);
b = (int) (brightness * 255.0f + 0.5f);
break;
case 4:
r = (int) (t * 255.0f + 0.5f);
g = (int) (p * 255.0f + 0.5f);
b = (int) (brightness * 255.0f + 0.5f);
break;
case 5:
r = (int) (brightness * 255.0f + 0.5f);
g = (int) (p * 255.0f + 0.5f);
b = (int) (q * 255.0f + 0.5f);
break;
}
}
return 0xff000000 | (r << 16) | (g << 8) | b;
}