-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
code:
package net.evaware.system.clickgui;
import net.evaware.module.setting.settings.ModeSetting;
import net.evaware.module.setting.settings.ThemeModeSetting;
import net.evaware.module.setting.settings.ThemeModeValue;
import net.evaware.utils.client.Textures;
import net.evaware.utils.color.ColorUtils;
import net.evaware.system.font.Fonts;
import net.evaware.utils.math.MouseUtil;
import net.evaware.utils.render.RenderUtil;
import net.evaware.utils.render.StencilUtil;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.RotationAxis;
import ru.hogoshi.Animation;
import ru.hogoshi.util.Easings;
import java.awt.*;
public class ThemeSelector extends Component {
final ThemeModeSetting setting;
Animation expandAnim = new Animation();
double openAnimValue = 0.3, noOpenAnimValue = 0.35;
boolean expanded;
Animation[] itemAnimations;
Animation[] clickAnimations;
public ThemeSelector(ThemeModeSetting setting) {
this.setting = setting;
setHeight(14);
expandAnim = expandAnim.animate(expanded ? 1 : 0, expanded ? openAnimValue : noOpenAnimValue, Easings.EXPO_OUT);
itemAnimations = new Animation[setting.values.length];
clickAnimations = new Animation[setting.values.length];
for (int i = 0; i < itemAnimations.length; i++) {
itemAnimations[i] = new Animation();
itemAnimations[i].update();
itemAnimations[i].animate(setting.getValue().equals(setting.values[i]) ? 1 : 0, 1, Easings.EXPO_OUT);
clickAnimations[i] = new Animation();
clickAnimations[i].update();
clickAnimations[i].animate(0, 1, Easings.EXPO_OUT);
}
}
[USER=1367676]@override[/USER]
public void render(MatrixStack stack, float mouseX, float mouseY) {
super.render(stack, mouseX, mouseY);
expandAnim.update();
int acC = ColorUtils.setAlpha(-1, (int) (((255 * expandAnim.getValue()) * getAlpha()) * ClickGuiScreen.getAnim().getValue()));
int ncC = ColorUtils.rgba(200, 200, 200, (int) ((255 * expandAnim.getValue() * ClickGuiScreen.getAnim().getValue())));
for (int i = 0; i < setting.values.length; i++) {
ThemeModeValue text = setting.values[i];
itemAnimations[i].update();
itemAnimations[i].animate(setting.getValue().equals(text) ? 1 : 0, 1, Easings.EXPO_OUT);
clickAnimations[i].update();
if (clickAnimations[i].getValue() == 1) {
clickAnimations[i].animate(0, 0.6, Easings.EXPO_OUT);
}
}
RenderUtil.drawRect(stack, getX() + 2, getY(), getWidth() - 4, (float) (getHeight() - 3 * expandAnim.getValue() - 2 - 3 * (1 - expandAnim.getValue())), ColorUtils.intToColor(ColorUtils.rgba(28, 28, 28, (int) (((255 * expandAnim.getValue()) * getAlpha()) * ClickGuiScreen.getAnim().getValue()))));
RenderUtil.drawRect(stack, getX() + 2, getY(), getWidth() - 4, 10, ColorUtils.intToColor(ColorUtils.rgba(46, 46, 46, (int) ((255 * getAlpha()) * ClickGuiScreen.getAnim().getValue()))));
String voew = setting.getSettingName() + ": ";
String md = setting.getValue().getName();
float vw = Fonts.normal[15].getStringWidth(voew);
Fonts.normal[15].drawString(stack, voew + md, getX() + 4.5f, getY() + 2.5, ColorUtils.setAlpha(-1, (int) ((255 * getAlpha()) * ClickGuiScreen.getAnim().getValue())));
// Fonts.normal[15].drawGradientString(stack, md, getX() + 4.5f + vw, getY() + 2, (float) ((255 * getAlpha()) * ClickGuiScreen.getAnim().getValue()), 5);
float rotationAngle = (float) (180 * expandAnim.getValue());
stack.push();
stack.translate(getX() - 8f + getWidth(), getY() + 5, 0);
stack.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(rotationAngle));
stack.translate(-2.5f, -2.5f, 0);
RenderUtil.drawTexturedRect(stack, 0, 0, 5, 5, Textures.ARROW_TEXTURE, ColorUtils.intToColor(ColorUtils.setAlpha(-1, (int) ((255 * getAlpha()) * ClickGuiScreen.getAnim().getValue()))));
stack.pop();
float heightoff = 0;
StencilUtil.initStencilToWrite();
RenderUtil.drawRect(stack, getX() + 2, getY(), getWidth() - 4, (float) (getHeight() - 3 * expandAnim.getValue() - 2 - 3 * (1 - expandAnim.getValue())), ColorUtils.intToColor(ColorUtils.rgba(20, 20, 20, (int) ((160 * getAlpha()) * ClickGuiScreen.getAnim().getValue()))));
StencilUtil.readStencilBuffer(1);
if (expandAnim.getValue() >= 0.1) {
for (int i = 0; i < setting.values.length; i++) {
ThemeModeValue a = setting.values[i];
float textHeight = Fonts.normal[15].getFontHeight() + 3.5f;
int sC = ColorUtils.interpolateColor(ncC, acC, (float) itemAnimations[i].getValue());
float clickOffset = (float) (clickAnimations[i].getValue() * 1.5);
float colorWidth = 10;
float offset = 6f;
float alpha = (float) (((255 * expandAnim.getValue()) * getAlpha()) * ClickGuiScreen.getAnim().getValue());
Color c1 = ColorUtils.intToColor(ColorUtils.setAlpha(a.getColorFirst().getRGB(), (int) alpha));
Color c2 = ColorUtils.intToColor(ColorUtils.setAlpha(a.getColorSecond().getRGB(), (int) alpha));
RenderUtil.drawRect(stack, getX() + getWidth() - offset - colorWidth - clickOffset, (float) (getY() + 15f + heightoff - 2 + 2 * expandAnim.getValue()), colorWidth, 5, c1, c2);
Fonts.normal[15].drawString(stack, a.getName(), getX() + offset + clickOffset, getY() + 15f + heightoff - 2 + 2 * expandAnim.getValue(), sC);
heightoff += (float) (textHeight * expandAnim.getValue());
}
}
StencilUtil.uninitStencilBuffer();
setHeight((float) (15 + heightoff + 6 * expandAnim.getValue()));
}
[USER=1367676]@override[/USER]
public void mouseClick(float mouseX, float mouseY, int mouse) {
float heightoff = 0;
for (int i = 0; i < setting.values.length; i++) {
ThemeModeValue text = setting.values[i];
float textHeight = Fonts.normal[15].getFontHeight() + 3.5f;
if (MouseUtil.isHovered(mouseX, mouseY, getX() + 2, getY() + 15f + heightoff, getWidth() - 4, textHeight - 1)) {
if (mouse == isLMB() && expanded) {
setting.setValue(text);
clickAnimations[i].animate(1, 0.2, Easings.EXPO_OUT);
}
}
heightoff += textHeight;
}
if (MouseUtil.isHovered(mouseX, mouseY, getX() + 2, getY(), getWidth() - 4, 11)) {
if (mouse == isRMB()) {
expanded = !expanded;
expandAnim = expandAnim.animate(expanded ? 1 : 0, expanded ? openAnimValue : noOpenAnimValue, Easings.EXPO_OUT);
}
}
super.mouseClick(mouseX, mouseY, mouse);
}
[USER=1367676]@override[/USER]
public boolean isVisible() {
return setting.getVisible().getAsBoolean();
}
}
Пожалуйста, авторизуйтесь для просмотра ссылки.