-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Я знаю что уже есть тема по поводу вулкан есп на фордж ( https://yougame.biz/threads/331575/ ), это тоже самое но переписаное. Пофиксил улёт текста ( мне помогли )
SS -
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);
}
}
Последнее редактирование: