Начинающий
- Статус
- Оффлайн
- Регистрация
- 12 Мар 2026
- Сообщения
- 19
- Реакции
- 0
- Выберите загрузчик игры
- Vanilla
- OptiFine
Сделал ультра мега супер крутые Keybinds для МухосранскClient
Уже жду, как меня будут закидывать палками!!!
SS -
Code -

Уже жду, как меня будут закидывать палками!!!
SS -
Code -
KeyBindRenderer:
package im.expensive.ui.display.impl;
import com.mojang.blaze3d.matrix.MatrixStack;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.functions.api.Function;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.utils.client.KeyStorage;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.util.ResourceLocation;
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class KeyBindRenderer implements ElementRenderer {
final Dragging dragging;
float width;
float height;
final ResourceLocation keyboardIcon = new ResourceLocation("expensive/images/hud/keyboard.png");
@Override
public void render(EventDisplay eventDisplay) {
MatrixStack ms = eventDisplay.getMatrixStack();
float posX = dragging.getX();
float posY = dragging.getY();
float fontSize = 6.5f;
float padding = 5;
float innerPadding = 4;
int blurBgColor = ColorUtils.rgba(10, 10, 10, 120);
int pillBgColor = ColorUtils.rgba(30, 30, 35, 220);
int headerBgColor = ColorUtils.rgba(30, 30, 35, 160);
float totalItemsHeight = 0;
float maxNameWidth = 40;
float keyBoxWidth = 26;
for (Function f : Expensive.getInstance().getFunctionRegistry().getFunctions()) {
f.getAnimation().update();
float anim = (float) f.getAnimation().getValue();
if (anim > 0 && f.getBind() != 0) {
totalItemsHeight += (fontSize + padding) * anim;
float nameWidth = Fonts.sfMedium.getWidth(f.getName(), fontSize);
if (nameWidth > maxNameWidth) {
maxNameWidth = nameWidth;
}
}
}
float headerFontSize = 8.0f;
float headerBoxHeight = headerFontSize + padding * 2;
float innerBoxHeight = 0;
if (totalItemsHeight > 0) {
innerBoxHeight = padding + totalItemsHeight;
}
float calculatedWidth = maxNameWidth + keyBoxWidth + (innerPadding * 3) + (padding * 4) + 5;
width = Math.max(calculatedWidth, 90f);
if (totalItemsHeight > 0) {
height = innerPadding + headerBoxHeight + innerPadding + innerBoxHeight + innerPadding;
} else {
height = innerPadding + headerBoxHeight + innerPadding;
}
dragging.setWidth(width);
dragging.setHeight(height);
DisplayUtils.drawShadow(posX, posY, width, height, 15, blurBgColor, blurBgColor);
DisplayUtils.drawRoundedRect(posX, posY, width, height, 6, blurBgColor);
Scissor.push();
Scissor.setFromComponentCoordinates(posX, posY, width, height);
float topBoxX = posX + innerPadding;
float topBoxY = posY + innerPadding;
float topBoxWidth = width - (innerPadding * 2);
DisplayUtils.drawRoundedRect(topBoxX, topBoxY, topBoxWidth, headerBoxHeight, 4, headerBgColor);
Fonts.sfMedium.drawText(ms, "Binds", topBoxX + padding, topBoxY + (headerBoxHeight / 2f) - (headerFontSize / 2f) + 1, -1, headerFontSize);
float iconSize = 10f;
float iconX = topBoxX + topBoxWidth - padding - iconSize;
float iconY = topBoxY + (headerBoxHeight / 2f) - (iconSize / 2f);
DisplayUtils.drawImage(keyboardIcon, iconX, iconY, iconSize, iconSize, -1);
if (totalItemsHeight > 0) {
float listPosY = topBoxY + headerBoxHeight + innerPadding;
float leftBoxX = posX + innerPadding;
float leftBoxWidth = width - (innerPadding * 3) - keyBoxWidth;
DisplayUtils.drawRoundedRect(leftBoxX, listPosY, leftBoxWidth, innerBoxHeight, 4, pillBgColor);
float rightBoxX = posX + width - innerPadding - keyBoxWidth;
DisplayUtils.drawRoundedRect(rightBoxX, listPosY, keyBoxWidth, innerBoxHeight, 4, pillBgColor);
float currentY = listPosY + padding;
for (Function f : Expensive.getInstance().getFunctionRegistry().getFunctions()) {
float anim = (float) f.getAnimation().getValue();
if (!(anim > 0) || f.getBind() == 0) continue;
String nameText = f.getName();
String bindText = KeyStorage.getKey(f.getBind());
if (bindText == null) bindText = "NONE";
int textColor = ColorUtils.rgba(230, 230, 230, (int) (255 * anim));
int dynamicAccentColor = ColorUtils.rgba(115, 144, 234, (int) (255 * anim));
DisplayUtils.drawRoundedRect(leftBoxX + padding, currentY + 0.5f, 1.5f, fontSize, 0.5f, dynamicAccentColor);
Fonts.sfMedium.drawText(ms, nameText, leftBoxX + padding + 5, currentY + 0.5f, textColor, fontSize);
float bindWidth = Fonts.sfMedium.getWidth(bindText, fontSize);
float bindX = rightBoxX + (keyBoxWidth / 2f) - (bindWidth / 2f);
Fonts.sfMedium.drawText(ms, bindText, bindX, currentY + 0.5f, dynamicAccentColor, fontSize);
currentY += (fontSize + padding) * anim;
}
}
Scissor.unset();
Scissor.pop();
}
}