-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Сливаю ItemESP на донат предметы на вулкане | Forge Ready
Java:
packageme.protected.client..modules.implants.vulcan;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import me.protected.client.modules.api.Category;
import me.protected.client..modules.api.Module;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.item.ItemStack;
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 ItemEsp extends Module {
private final Map<ItemEntity, Long> itemTimers = new HashMap<>();
private final long delay = 1000L;
public ItemEsp() {
super("VulcanEsp", 0, Category.VULCAN, "Показывает имя предмета");
}
@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() == net.minecraft.item.Items.TRIPWIRE_HOOK;
}
private void updateItemTimer(ItemEntity itemEntity) {
long currentTime = System.currentTimeMillis();
if (!itemTimers.containsKey(itemEntity)) {
itemTimers.put(itemEntity, currentTime);
}
}
private void renderItemName(MatrixStack matrixStack, ItemEntity itemEntity, ITextComponent name) {
matrixStack.pushPose();
double distance = mc.player.distanceTo(itemEntity);
float scale = 0.025F * (1.0F + (float) distance / 50.0F);
applyCommonTransformations(matrixStack, itemEntity, scale);
renderText(matrixStack, name, 0, 10, itemEntity.getItem().getCount());
renderDistance(matrixStack, distance);
renderAdditionalText(matrixStack, itemEntity);
matrixStack.popPose();
}
private void applyCommonTransformations(MatrixStack matrixStack, ItemEntity itemEntity, float scale) {
matrixStack.translate(
itemEntity.getX() - mc.gameRenderer.getMainCamera().getPosition().x(),
itemEntity.getY() + 1.5D - mc.gameRenderer.getMainCamera().getPosition().y(),
itemEntity.getZ() - mc.gameRenderer.getMainCamera().getPosition().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);
String itemCountText = "x" + itemCount;
int textWidth = mc.font.width(itemCountText);
mc.font.drawInBatch(itemCountText, x + mc.font.width(textComponent) / 2.0F + 5, y, 0xFFFFFF, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
RenderSystem.disableBlend();
}
private void renderDistance(MatrixStack matrixStack, double distance) {
String distanceText = String.format("%.1f m", distance);
int textWidth = mc.font.width(distanceText);
int x = -textWidth / 2;
int y = 20;
Matrix4f matrix4f = matrixStack.last().pose();
mc.font.drawInBatch(distanceText, x, y, 0xFFFFFF, false, matrix4f, mc.renderBuffers().bufferSource(), false, 0, 15728880);
}
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);
}
}
Вложения
-
204.1 KB Просмотры: 276