Исходник VulcanESP ( Отображает LVL ) | Forge 1.16.5 Ready

Начинающий
Статус
Оффлайн
Регистрация
11 Май 2023
Сообщения
16
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Я знаю что уже есть тема по поводу вулкан есп на фордж ( https://yougame.biz/threads/331575/ ), это тоже самое но переписаное. Пофиксил улёт текста ( мне помогли )
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.



Java:
package dlovin.inventoryhud.inventory.Modules.player;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import dlovin.inventoryhud.inventory.Modules.Category;
import dlovin.inventoryhud.inventory.Modules.Module;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

import java.util.HashMap;
import java.util.Map;

public class VulcanESP extends Module {
private final Map<ItemEntity, Long> itemTimers = new HashMap<>();
private final Map<ItemEntity, Map<PlayerEntity, Long>> itemTimer = new HashMap<>();
private final long delay = 1000L;
private final double healthThreshold = 0.5;
private final long timeThreshold = 5000L;

public VulcanESP() {
super("VulcanEsp", Category.Player, 0);
}

@SubscribeEvent
    public void onRenderWorldLast(RenderWorldLastEvent event) {
if (mc.level == null || mc.player == null) {
return;
}

MatrixStack matrixStack = event.getMatrixStack();
mc.level.getEntitiesOfClass(ItemEntity.class, mc.player.getBoundingBox().inflate(50.0D)).forEach(itemEntity -> {
ItemStack stack = itemEntity.getItem();
if (isSpecificItem(stack)) {
ITextComponent displayName = stack.getDisplayName();
updateItemTimer(itemEntity);
renderItemName(matrixStack, itemEntity, displayName);
}
});
}

private boolean isSpecificItem(ItemStack stack) {
return stack.getItem() == net.minecraft.item.Items.TOTEM_OF_UNDYING ||
stack.getItem() == net.minecraft.item.Items.PLAYER_HEAD ||
stack.getItem() == net.minecraft.item.Items.SPLASH_POTION ||
stack.getItem() == Items.IRON_NUGGET ||
stack.getItem() == Items.SOUL_LANTERN ||
stack.getItem() == Items.ENCHANTED_GOLDEN_APPLE ||
stack.getItem() == Items.NETHERITE_PICKAXE ||
stack.getItem() == Items.NETHERITE_SWORD ||
stack.getItem() == Items.GOLDEN_APPLE ||
stack.getItem() == Items.ELYTRA ||
stack.getItem() == net.minecraft.item.Items.TRIPWIRE_HOOK;
}

private void updateItemTimer(ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
if (!itemTimers.containsKey(itemEntity)) {
itemTimer.put(itemEntity, new HashMap<>());
}

Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
playerTimers.put(mc.player, currentTime);
}

private void renderItemName(MatrixStack matrixStack, ItemEntity itemEntity, ITextComponent name) {
matrixStack.pushPose();

double distance = mc.player.distanceTo(itemEntity);
float scale = 0.058F * (1.0F + (float) distance / 50.0F);

applyCommonTransformations(matrixStack, itemEntity, scale);

renderDistance(matrixStack, distance);

renderItemLevel(matrixStack, itemEntity.getItem());

renderText(matrixStack, name, 0, 12, itemEntity.getItem().getCount());

if (itemEntity.isOnGround()) {
renderPickupText(matrixStack, "Можно взять");
}

matrixStack.popPose();
}

private boolean isTimeForLoot(ItemEntity itemEntity) {
Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
if (playerTimers != null) {
for (Map.Entry<PlayerEntity, Long> entry : playerTimers.entrySet()) {
PlayerEntity player = entry.getKey();
long timeSpent = System.currentTimeMillis() - entry.getValue();
if (timeSpent > timeThreshold) {
if (player == mc.player) {
return true;
}
}
}
}
return false;
}

private void renderHighPriorityText(MatrixStack matrixStack, ITextComponent name, ItemEntity itemEntity) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, name, 0 - mc.font.width(name) / 2.0F, 0, 0x00FF00);
}

private void renderPriorityText(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);

int yOffset = 24;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, levelText, 0 - mc.font.width(levelText) / 2.0F, yOffset, 0xFFFF00);
}

private void applyCommonTransformations(MatrixStack matrixStack, ItemEntity itemEntity, float scale) {
double x = itemEntity.getX() - mc.gameRenderer.getMainCamera().getPosition().x();
double y = itemEntity.getY() + 1.5D - mc.gameRenderer.getMainCamera().getPosition().y();
double z = itemEntity.getZ() - mc.gameRenderer.getMainCamera().getPosition().z();

matrixStack.translate(x, y, z);
matrixStack.mulPose(mc.gameRenderer.getMainCamera().rotation());
matrixStack.scale(-scale, -scale, scale);

RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.disableDepthTest();
}

private void renderText(MatrixStack matrixStack, ITextComponent textComponent, int x, int y, int itemCount) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, textComponent, x - mc.font.width(textComponent) / 2.0F, y, 0xFFFFFF);
}

private void renderDistance(MatrixStack matrixStack, double distance) {
String distanceText = String.format("%.1fм", distance);
int x = -mc.font.width(distanceText) / 2;
int y = -20;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, distanceText, x, y, 0xFF5555);
}

private void renderItemLevel(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);

if (!levelText.equals("Unknown LVL")) {
int xOffset = -20;
int yOffset = -10;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, levelText, xOffset, yOffset, 0xFFFFFF);
}
}

private void renderPickupText(MatrixStack matrixStack, String text) {
Matrix4f matrix4f = matrixStack.last().pose();
int yOffset = 24;
mc.font.draw(matrixStack, text, -mc.font.width(text) / 2.0F, yOffset, 0x00FF00);
}

private String getItemLevel(ItemStack stack) {
if (stack.hasTag() && stack.getTag().contains("display")) {
CompoundNBT displayTag = stack.getTag().getCompound("display");

if (displayTag.contains("Lore", 9)) {
ListNBT loreList = displayTag.getList("Lore", 8);
for (int i = 0; i < loreList.size(); i++) {
String loreLine = loreList.getString(i);

if (loreLine.contains("1/3")) return "LVL 1/3";
if (loreLine.contains("2/3")) return "LVL 2/3";
if (loreLine.contains("MAX")) return "LVL MAX";
}
}
}

return "Unknown LVL";
}

private void renderAdditionalText(MatrixStack matrixStack, ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
long itemTime = itemTimers.getOrDefault(itemEntity, currentTime);
long elapsed = currentTime - itemTime;
boolean isAvailable = elapsed >= delay;
int color = isAvailable ? 0x00FF00 : 0xFF0000;
String message = isAvailable ? "+" : "-";
mc.font.draw(matrixStack, message, -mc.font.width(message) / 2.0F, 30, color);
}
}
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Окт 2024
Сообщения
84
Реакции[?]
0
Поинты[?]
0
Я знаю что уже есть тема по поводу вулкан есп на фордж, это тоже самое но переписаное. И еще какого то хуя когда ты двигаешь прицелом текст уходит от него ( ak1 хелпани пжж, дс kenzooo1337), но на лут это не мешает
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.



Java:
package dlovin.inventoryhud.inventory.Modules.player;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import dlovin.inventoryhud.inventory.Modules.Category;
import dlovin.inventoryhud.inventory.Modules.Module;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

import java.util.HashMap;
import java.util.Map;

public class VulcanESP extends Module {
private final Map<ItemEntity, Long> itemTimers = new HashMap<>();
private final Map<ItemEntity, Map<PlayerEntity, Long>> itemTimer = new HashMap<>();
private final long delay = 1000L;
private final double healthThreshold = 0.5;
private final long timeThreshold = 5000L;

public VulcanESP() {
super("VulcanEsp", Category.Player, 0);
}


@SubscribeEvent
public void onRenderWorldLast(RenderWorldLastEvent event) {
if (mc.level == null || mc.player == null) {
return;
}


MatrixStack matrixStack = event.getMatrixStack();
mc.level.getEntitiesOfClass(ItemEntity.class, mc.player.getBoundingBox().inflate(50.0D)).forEach(itemEntity -> {
ItemStack stack = itemEntity.getItem();
if (isSpecificItem(stack)) {
ITextComponent displayName = stack.getDisplayName();
updateItemTimer(itemEntity);
renderItemName(matrixStack, itemEntity, displayName);
}
});
}

private boolean isSpecificItem(ItemStack stack) {
return stack.getItem() == net.minecraft.item.Items.TOTEM_OF_UNDYING ||
stack.getItem() == net.minecraft.item.Items.PLAYER_HEAD ||
stack.getItem() == net.minecraft.item.Items.SPLASH_POTION ||
stack.getItem() == Items.IRON_NUGGET ||
stack.getItem() == Items.SOUL_LANTERN ||
stack.getItem() == Items.ENCHANTED_GOLDEN_APPLE ||
stack.getItem() == Items.NETHERITE_PICKAXE ||
stack.getItem() == Items.NETHERITE_SWORD ||
stack.getItem() == Items.GOLDEN_APPLE ||
stack.getItem() == net.minecraft.item.Items.TRIPWIRE_HOOK;
}

private void updateItemTimer(ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
if (!itemTimers.containsKey(itemEntity)) {
itemTimer.put(itemEntity, new HashMap<>());
}

Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
playerTimers.put(mc.player, currentTime);
}

private void renderItemName(MatrixStack matrixStack, ItemEntity itemEntity, ITextComponent name) {
matrixStack.pushPose();

double distance = mc.player.distanceTo(itemEntity);
float scale = 0.035F * (1.0F + (float) distance / 50.0F);

applyCommonTransformations(matrixStack, itemEntity, scale);

renderDistance(matrixStack, distance);

renderItemLevel(matrixStack, itemEntity.getItem());

renderText(matrixStack, name, 0, 12, itemEntity.getItem().getCount());

if (itemEntity.isOnGround()) {
renderPickupText(matrixStack, "Можно взять");
}

matrixStack.popPose();
}




private boolean isTimeForLoot(ItemEntity itemEntity) {
Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
if (playerTimers != null) {
for (Map.Entry<PlayerEntity, Long> entry : playerTimers.entrySet()) {
PlayerEntity player = entry.getKey();
long timeSpent = System.currentTimeMillis() - entry.getValue();
if (timeSpent > timeThreshold) {
if (player == mc.player) {
return true;
}
}
}
}
return false;
}
private void renderHighPriorityText(MatrixStack matrixStack, ITextComponent name, ItemEntity itemEntity) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(name, 0 - mc.font.width(name) / 2.0F, 0, 0x00FF00, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}
private void renderPriorityText(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);


int yOffset = 24;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(levelText, 0 - mc.font.width(levelText) / 2.0F, yOffset, 0xFFFF00, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}


private void applyCommonTransformations(MatrixStack matrixStack, ItemEntity itemEntity, float scale) {
double x = itemEntity.getX() - mc.gameRenderer.getMainCamera().getPosition().x();
double y = itemEntity.getY() + 1.5D - mc.gameRenderer.getMainCamera().getPosition().y();
double z = itemEntity.getZ() - mc.gameRenderer.getMainCamera().getPosition().z();

matrixStack.translate(x, y, z);
matrixStack.mulPose(mc.gameRenderer.getMainCamera().rotation());
matrixStack.scale(-scale, -scale, scale);

RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.disableDepthTest();
}




private void renderText(MatrixStack matrixStack, ITextComponent textComponent, int x, int y, int itemCount) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(textComponent, x - mc.font.width(textComponent) / 2.0F, y, 0xFFFFFF, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}

private void renderDistance(MatrixStack matrixStack, double distance) {
String distanceText = String.format("%.1fм", distance);
int x = -mc.font.width(distanceText) / 2;
int y = -20;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(distanceText, x, y, 0xFF5555, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}


private void renderItemLevel(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);

if (!levelText.equals("Unknown LVL")) {
int xOffset = -20;
int yOffset = -10;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(levelText, xOffset, yOffset, 0xFFFFFF, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}
}


private void renderPickupText(MatrixStack matrixStack, String text) {
Matrix4f matrix4f = matrixStack.last().pose();
int yOffset = 24;
mc.font.drawInBatch(text, -mc.font.width(text) / 2.0F, yOffset, 0x00FF00, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}




private String getItemLevel(ItemStack stack) {
if (stack.hasTag() && stack.getTag().contains("display")) {
CompoundNBT displayTag = stack.getTag().getCompound("display");

if (displayTag.contains("Lore", 9)) {
ListNBT loreList = displayTag.getList("Lore", 8);
for (int i = 0; i < loreList.size(); i++) {
String loreLine = loreList.getString(i);

if (loreLine.contains("1/3")) return "LVL 1/3";
if (loreLine.contains("2/3")) return "LVL 2/3";
if (loreLine.contains("MAX")) return "LVL MAX";
}
}
}

return "Unknown LVL";
}



private void renderAdditionalText(MatrixStack matrixStack, ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
long itemTime = itemTimers.getOrDefault(itemEntity, currentTime);
long elapsed = currentTime - itemTime;
boolean isAvailable = elapsed >= delay;
int color = isAvailable ? 0x00FF00 : 0xFF0000;
String message = isAvailable ? "+" : "-";
mc.font.draw(matrixStack, message, -mc.font.width(message) / 2.0F, 30, color);
}
}
[code]
точно сам делал?
 
Начинающий
Статус
Онлайн
Регистрация
26 Дек 2023
Сообщения
794
Реакции[?]
10
Поинты[?]
4K
Я знаю что уже есть тема по поводу вулкан есп на фордж, это тоже самое но переписаное. И еще какого то хуя когда ты двигаешь прицелом текст уходит от него ( ak1 хелпани пжж, дс kenzooo1337), но на лут это не мешает
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.



Java:
package dlovin.inventoryhud.inventory.Modules.player;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import dlovin.inventoryhud.inventory.Modules.Category;
import dlovin.inventoryhud.inventory.Modules.Module;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

import java.util.HashMap;
import java.util.Map;

public class VulcanESP extends Module {
private final Map<ItemEntity, Long> itemTimers = new HashMap<>();
private final Map<ItemEntity, Map<PlayerEntity, Long>> itemTimer = new HashMap<>();
private final long delay = 1000L;
private final double healthThreshold = 0.5;
private final long timeThreshold = 5000L;

public VulcanESP() {
super("VulcanEsp", Category.Player, 0);
}


@SubscribeEvent
public void onRenderWorldLast(RenderWorldLastEvent event) {
if (mc.level == null || mc.player == null) {
return;
}


MatrixStack matrixStack = event.getMatrixStack();
mc.level.getEntitiesOfClass(ItemEntity.class, mc.player.getBoundingBox().inflate(50.0D)).forEach(itemEntity -> {
ItemStack stack = itemEntity.getItem();
if (isSpecificItem(stack)) {
ITextComponent displayName = stack.getDisplayName();
updateItemTimer(itemEntity);
renderItemName(matrixStack, itemEntity, displayName);
}
});
}

private boolean isSpecificItem(ItemStack stack) {
return stack.getItem() == net.minecraft.item.Items.TOTEM_OF_UNDYING ||
stack.getItem() == net.minecraft.item.Items.PLAYER_HEAD ||
stack.getItem() == net.minecraft.item.Items.SPLASH_POTION ||
stack.getItem() == Items.IRON_NUGGET ||
stack.getItem() == Items.SOUL_LANTERN ||
stack.getItem() == Items.ENCHANTED_GOLDEN_APPLE ||
stack.getItem() == Items.NETHERITE_PICKAXE ||
stack.getItem() == Items.NETHERITE_SWORD ||
stack.getItem() == Items.GOLDEN_APPLE ||
stack.getItem() == net.minecraft.item.Items.TRIPWIRE_HOOK;
}

private void updateItemTimer(ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
if (!itemTimers.containsKey(itemEntity)) {
itemTimer.put(itemEntity, new HashMap<>());
}

Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
playerTimers.put(mc.player, currentTime);
}

private void renderItemName(MatrixStack matrixStack, ItemEntity itemEntity, ITextComponent name) {
matrixStack.pushPose();

double distance = mc.player.distanceTo(itemEntity);
float scale = 0.035F * (1.0F + (float) distance / 50.0F);

applyCommonTransformations(matrixStack, itemEntity, scale);

renderDistance(matrixStack, distance);

renderItemLevel(matrixStack, itemEntity.getItem());

renderText(matrixStack, name, 0, 12, itemEntity.getItem().getCount());

if (itemEntity.isOnGround()) {
renderPickupText(matrixStack, "Можно взять");
}

matrixStack.popPose();
}




private boolean isTimeForLoot(ItemEntity itemEntity) {
Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
if (playerTimers != null) {
for (Map.Entry<PlayerEntity, Long> entry : playerTimers.entrySet()) {
PlayerEntity player = entry.getKey();
long timeSpent = System.currentTimeMillis() - entry.getValue();
if (timeSpent > timeThreshold) {
if (player == mc.player) {
return true;
}
}
}
}
return false;
}
private void renderHighPriorityText(MatrixStack matrixStack, ITextComponent name, ItemEntity itemEntity) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(name, 0 - mc.font.width(name) / 2.0F, 0, 0x00FF00, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}
private void renderPriorityText(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);


int yOffset = 24;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(levelText, 0 - mc.font.width(levelText) / 2.0F, yOffset, 0xFFFF00, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}


private void applyCommonTransformations(MatrixStack matrixStack, ItemEntity itemEntity, float scale) {
double x = itemEntity.getX() - mc.gameRenderer.getMainCamera().getPosition().x();
double y = itemEntity.getY() + 1.5D - mc.gameRenderer.getMainCamera().getPosition().y();
double z = itemEntity.getZ() - mc.gameRenderer.getMainCamera().getPosition().z();

matrixStack.translate(x, y, z);
matrixStack.mulPose(mc.gameRenderer.getMainCamera().rotation());
matrixStack.scale(-scale, -scale, scale);

RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.disableDepthTest();
}




private void renderText(MatrixStack matrixStack, ITextComponent textComponent, int x, int y, int itemCount) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(textComponent, x - mc.font.width(textComponent) / 2.0F, y, 0xFFFFFF, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}

private void renderDistance(MatrixStack matrixStack, double distance) {
String distanceText = String.format("%.1fм", distance);
int x = -mc.font.width(distanceText) / 2;
int y = -20;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(distanceText, x, y, 0xFF5555, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}


private void renderItemLevel(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);

if (!levelText.equals("Unknown LVL")) {
int xOffset = -20;
int yOffset = -10;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(levelText, xOffset, yOffset, 0xFFFFFF, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}
}


private void renderPickupText(MatrixStack matrixStack, String text) {
Matrix4f matrix4f = matrixStack.last().pose();
int yOffset = 24;
mc.font.drawInBatch(text, -mc.font.width(text) / 2.0F, yOffset, 0x00FF00, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}




private String getItemLevel(ItemStack stack) {
if (stack.hasTag() && stack.getTag().contains("display")) {
CompoundNBT displayTag = stack.getTag().getCompound("display");

if (displayTag.contains("Lore", 9)) {
ListNBT loreList = displayTag.getList("Lore", 8);
for (int i = 0; i < loreList.size(); i++) {
String loreLine = loreList.getString(i);

if (loreLine.contains("1/3")) return "LVL 1/3";
if (loreLine.contains("2/3")) return "LVL 2/3";
if (loreLine.contains("MAX")) return "LVL MAX";
}
}
}

return "Unknown LVL";
}



private void renderAdditionalText(MatrixStack matrixStack, ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
long itemTime = itemTimers.getOrDefault(itemEntity, currentTime);
long elapsed = currentTime - itemTime;
boolean isAvailable = elapsed >= delay;
int color = isAvailable ? 0x00FF00 : 0xFF0000;
String message = isAvailable ? "+" : "-";
mc.font.draw(matrixStack, message, -mc.font.width(message) / 2.0F, 30, color);
}
}
[code]
пиздец. /del
 
Forge Api ;-;
Забаненный
Статус
Оффлайн
Регистрация
3 Май 2023
Сообщения
877
Реакции[?]
18
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Текст что-то у тебя маленький, не видно ниче
 
Начинающий
Статус
Оффлайн
Регистрация
20 Июн 2024
Сообщения
351
Реакции[?]
1
Поинты[?]
1K
Я знаю что уже есть тема по поводу вулкан есп на фордж ( https://yougame.biz/threads/331575/ ), это тоже самое но переписаное. Пофиксил улёт текста ( мне помогли )
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.



Java:
package dlovin.inventoryhud.inventory.Modules.player;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import dlovin.inventoryhud.inventory.Modules.Category;
import dlovin.inventoryhud.inventory.Modules.Module;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

import java.util.HashMap;
import java.util.Map;

public class VulcanESP extends Module {
private final Map<ItemEntity, Long> itemTimers = new HashMap<>();
private final Map<ItemEntity, Map<PlayerEntity, Long>> itemTimer = new HashMap<>();
private final long delay = 1000L;
private final double healthThreshold = 0.5;
private final long timeThreshold = 5000L;

public VulcanESP() {
super("VulcanEsp", Category.Player, 0);
}

@SubscribeEvent
    public void onRenderWorldLast(RenderWorldLastEvent event) {
if (mc.level == null || mc.player == null) {
return;
}

MatrixStack matrixStack = event.getMatrixStack();
mc.level.getEntitiesOfClass(ItemEntity.class, mc.player.getBoundingBox().inflate(50.0D)).forEach(itemEntity -> {
ItemStack stack = itemEntity.getItem();
if (isSpecificItem(stack)) {
ITextComponent displayName = stack.getDisplayName();
updateItemTimer(itemEntity);
renderItemName(matrixStack, itemEntity, displayName);
}
});
}

private boolean isSpecificItem(ItemStack stack) {
return stack.getItem() == net.minecraft.item.Items.TOTEM_OF_UNDYING ||
stack.getItem() == net.minecraft.item.Items.PLAYER_HEAD ||
stack.getItem() == net.minecraft.item.Items.SPLASH_POTION ||
stack.getItem() == Items.IRON_NUGGET ||
stack.getItem() == Items.SOUL_LANTERN ||
stack.getItem() == Items.ENCHANTED_GOLDEN_APPLE ||
stack.getItem() == Items.NETHERITE_PICKAXE ||
stack.getItem() == Items.NETHERITE_SWORD ||
stack.getItem() == Items.GOLDEN_APPLE ||
stack.getItem() == Items.ELYTRA ||
stack.getItem() == net.minecraft.item.Items.TRIPWIRE_HOOK;
}

private void updateItemTimer(ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
if (!itemTimers.containsKey(itemEntity)) {
itemTimer.put(itemEntity, new HashMap<>());
}

Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
playerTimers.put(mc.player, currentTime);
}

private void renderItemName(MatrixStack matrixStack, ItemEntity itemEntity, ITextComponent name) {
matrixStack.pushPose();

double distance = mc.player.distanceTo(itemEntity);
float scale = 0.058F * (1.0F + (float) distance / 50.0F);

applyCommonTransformations(matrixStack, itemEntity, scale);

renderDistance(matrixStack, distance);

renderItemLevel(matrixStack, itemEntity.getItem());

renderText(matrixStack, name, 0, 12, itemEntity.getItem().getCount());

if (itemEntity.isOnGround()) {
renderPickupText(matrixStack, "Можно взять");
}

matrixStack.popPose();
}

private boolean isTimeForLoot(ItemEntity itemEntity) {
Map<PlayerEntity, Long> playerTimers = itemTimer.get(itemEntity);
if (playerTimers != null) {
for (Map.Entry<PlayerEntity, Long> entry : playerTimers.entrySet()) {
PlayerEntity player = entry.getKey();
long timeSpent = System.currentTimeMillis() - entry.getValue();
if (timeSpent > timeThreshold) {
if (player == mc.player) {
return true;
}
}
}
}
return false;
}

private void renderHighPriorityText(MatrixStack matrixStack, ITextComponent name, ItemEntity itemEntity) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, name, 0 - mc.font.width(name) / 2.0F, 0, 0x00FF00);
}

private void renderPriorityText(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);

int yOffset = 24;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, levelText, 0 - mc.font.width(levelText) / 2.0F, yOffset, 0xFFFF00);
}

private void applyCommonTransformations(MatrixStack matrixStack, ItemEntity itemEntity, float scale) {
double x = itemEntity.getX() - mc.gameRenderer.getMainCamera().getPosition().x();
double y = itemEntity.getY() + 1.5D - mc.gameRenderer.getMainCamera().getPosition().y();
double z = itemEntity.getZ() - mc.gameRenderer.getMainCamera().getPosition().z();

matrixStack.translate(x, y, z);
matrixStack.mulPose(mc.gameRenderer.getMainCamera().rotation());
matrixStack.scale(-scale, -scale, scale);

RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.disableDepthTest();
}

private void renderText(MatrixStack matrixStack, ITextComponent textComponent, int x, int y, int itemCount) {
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, textComponent, x - mc.font.width(textComponent) / 2.0F, y, 0xFFFFFF);
}

private void renderDistance(MatrixStack matrixStack, double distance) {
String distanceText = String.format("%.1fм", distance);
int x = -mc.font.width(distanceText) / 2;
int y = -20;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, distanceText, x, y, 0xFF5555);
}

private void renderItemLevel(MatrixStack matrixStack, ItemStack stack) {
String levelText = getItemLevel(stack);

if (!levelText.equals("Unknown LVL")) {
int xOffset = -20;
int yOffset = -10;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.draw(matrixStack, levelText, xOffset, yOffset, 0xFFFFFF);
}
}

private void renderPickupText(MatrixStack matrixStack, String text) {
Matrix4f matrix4f = matrixStack.last().pose();
int yOffset = 24;
mc.font.draw(matrixStack, text, -mc.font.width(text) / 2.0F, yOffset, 0x00FF00);
}

private String getItemLevel(ItemStack stack) {
if (stack.hasTag() && stack.getTag().contains("display")) {
CompoundNBT displayTag = stack.getTag().getCompound("display");

if (displayTag.contains("Lore", 9)) {
ListNBT loreList = displayTag.getList("Lore", 8);
for (int i = 0; i < loreList.size(); i++) {
String loreLine = loreList.getString(i);

if (loreLine.contains("1/3")) return "LVL 1/3";
if (loreLine.contains("2/3")) return "LVL 2/3";
if (loreLine.contains("MAX")) return "LVL MAX";
}
}
}

return "Unknown LVL";
}

private void renderAdditionalText(MatrixStack matrixStack, ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
long itemTime = itemTimers.getOrDefault(itemEntity, currentTime);
long elapsed = currentTime - itemTime;
boolean isAvailable = elapsed >= delay;
int color = isAvailable ? 0x00FF00 : 0xFF0000;
String message = isAvailable ? "+" : "-";
mc.font.draw(matrixStack, message, -mc.font.width(message) / 2.0F, 30, color);
}
}
хотя бы чатгпт написал что бы код чище сделал xd
 
Похожие темы
Сверху Снизу