started on capes, edited alt manager ui

This commit is contained in:
The Biggest skiddd 2023-06-24 00:19:53 +02:00
parent 6d941daf42
commit d7e8e10160
101 changed files with 629644 additions and 18144 deletions

View File

@ -21,6 +21,7 @@ import optifine.CapeUtils;
import optifine.Config;
import optifine.PlayerConfigurations;
import optifine.Reflector;
import rip.athena.client.Athena;
public abstract class AbstractClientPlayer extends EntityPlayer
{
@ -90,6 +91,7 @@ public abstract class AbstractClientPlayer extends EntityPlayer
public ResourceLocation getLocationCape()
{
if (!Config.isShowCapes())
{
return null;

View File

@ -21,7 +21,7 @@ public class GuiButton extends Gui
private SimpleAnimation rectHoverAnimation = new SimpleAnimation(100);
protected static final ResourceLocation buttonTextures = new ResourceLocation("textures/gui/widgets.png");
// The animations crashed the entire fucking game.
// The animations crashed the entire fucking game.
int opacity;
/** Button width in pixels */
protected int width;
@ -92,49 +92,45 @@ public class GuiButton extends Gui
{
if (this.visible)
{
FontRenderer fontrenderer = mc.fontRendererObj;
mc.getTextureManager().bindTexture(buttonTextures);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.hovered = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height;
int i = this.getHoverState(this.hovered);
GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GlStateManager.blendFunc(770, 771);
//this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + i * 20, this.width / 2, this.height);
//this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + i * 20, this.width / 2, this.height);
this.mouseDragged(mc, mouseX, mouseY);
int j = 14737632;
if (hovered) {
opacity += 25;
if(opacity > 120) opacity = 120;
if(opacity > 150) opacity = 150;
} else {
opacity -= 25;
if(opacity < 70) opacity = 70;
if(opacity < 100) opacity = 100;
}
Color rectCol = new Color(100, 100, 100, opacity);
Color rectCol;
if(!this.enabled)
rectCol = new Color(10, 10, 10, 120);
else
rectCol = new Color(30, 30, 30, opacity);
rectCol = new Color(150, 150, 150, opacity);
//Gui.drawRect(this.xPosition, this.yPosition, this.xPosition + this.width, this.yPosition + this.height, rectCol.getRGB());
RoundedUtils.drawRound(this.xPosition, this.yPosition, this.width, (this.height), 4, rectCol);
RoundedUtils.drawRoundedGradientOutlineCorner(this.xPosition, this.yPosition, (this.width + xPosition), (this.height + yPosition), 1, 6, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
RoundedUtils.drawRound(this.xPosition + 1, this.yPosition + 1, this.width - 1, (this.height) - 2, 4, rectCol);
RoundedUtils.drawRoundedGradientOutlineCorner(this.xPosition, this.yPosition + 1, (this.width + xPosition), (this.height + yPosition) - 1, 1, 6, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
if(this.hovered && this.enabled) {
if (!(lineHoverAnimation.getValue() > width / 2 - 2)) {
lineHoverAnimation.setAnimation(width / 2 - 2, 10);
if (!(lineHoverAnimation.getValue() > (float) width / 2 - 2)) {
lineHoverAnimation.setAnimation((float) width / 2 - 2, 10);
this.drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) - lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
this.drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) + lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) - lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) + lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
}
else if(lineHoverAnimation.getValue() >= width / 2) {
this.drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) - lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
this.drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) + lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
else if(lineHoverAnimation.getValue() >= (float) width / 2) {
drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) - lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) + lineHoverAnimation.getValue()), this.yPosition + height - 1, -1);
}
@ -142,29 +138,18 @@ public class GuiButton extends Gui
else if(!hovered){
lineHoverAnimation.setAnimation(0, 4);
if(!(lineHoverAnimation.getValue() <= 0 || lineHoverAnimation.getValue() <= 2)) {
this.drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) - lineHoverAnimation.getValue() - 1), this.yPosition + height - 1, -1);
this.drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) + lineHoverAnimation.getValue() + 1), this.yPosition + height - 1, -1);
drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) - lineHoverAnimation.getValue() - 1), this.yPosition + height - 1, -1);
drawHorizontalLine(this.xPosition + width / 2 , (int) ((xPosition + width/2) + lineHoverAnimation.getValue() + 1), this.yPosition + height - 1, -1);
}
}
if (this.enabled)
{
j = -1;
}
else
{
j = Color.BLACK.getRGB();
}
rip.athena.client.utils.font.FontManager.getProductSansBold(19).drawCenteredString(displayString.toUpperCase(),
xPosition + (width / 2), this.enabled ? yPosition + (height / 2) - 3 : yPosition + (height / 2) - 6, -1);
xPosition + (float) (width / 2), this.enabled ? yPosition + (float) (height / 2) - 3 : yPosition + (float) (height / 2) - 6, -1);
if (!this.enabled)
rip.athena.client.utils.font.FontManager.getProductSansBold(10).drawCenteredString("DISABLED",
xPosition + (width / 2), yPosition + (height / 2) + 4, -1);
xPosition + (float) (width / 2), yPosition + (float) (height / 2) + 4, -1);
}
}

View File

@ -397,6 +397,7 @@ public abstract class Render<T extends Entity>
rankTexture = new ResourceLocation("Athena/ranks/mod.png");
break;
case "PARTNER":
case "MEDIA":
rankTexture = new ResourceLocation("Athena/ranks/partner.png");
break;
case "PREMIUM":

View File

@ -1,11 +1,16 @@
package net.minecraft.client.renderer.entity.layers;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EnumPlayerModelParts;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import rip.athena.client.Athena;
import rip.athena.client.modules.impl.other.Settings;
import rip.athena.client.socket.SocketClient;
public class LayerCape implements LayerRenderer
{
@ -19,38 +24,35 @@ public class LayerCape implements LayerRenderer
public void doRenderLayer(AbstractClientPlayer entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
{
if (entitylivingbaseIn.hasPlayerInfo() && !entitylivingbaseIn.isInvisible() && entitylivingbaseIn.isWearing(EnumPlayerModelParts.CAPE) && entitylivingbaseIn.getLocationCape() != null)
{
if (entitylivingbaseIn.hasPlayerInfo() && !entitylivingbaseIn.isInvisible() && entitylivingbaseIn.getLocationCape() != null) {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.playerRenderer.bindTexture(entitylivingbaseIn.getLocationCape());
GlStateManager.pushMatrix();
GlStateManager.translate(0.0F, 0.0F, 0.125F);
double d0 = entitylivingbaseIn.prevChasingPosX + (entitylivingbaseIn.chasingPosX - entitylivingbaseIn.prevChasingPosX) * (double)partialTicks - (entitylivingbaseIn.prevPosX + (entitylivingbaseIn.posX - entitylivingbaseIn.prevPosX) * (double)partialTicks);
double d1 = entitylivingbaseIn.prevChasingPosY + (entitylivingbaseIn.chasingPosY - entitylivingbaseIn.prevChasingPosY) * (double)partialTicks - (entitylivingbaseIn.prevPosY + (entitylivingbaseIn.posY - entitylivingbaseIn.prevPosY) * (double)partialTicks);
double d2 = entitylivingbaseIn.prevChasingPosZ + (entitylivingbaseIn.chasingPosZ - entitylivingbaseIn.prevChasingPosZ) * (double)partialTicks - (entitylivingbaseIn.prevPosZ + (entitylivingbaseIn.posZ - entitylivingbaseIn.prevPosZ) * (double)partialTicks);
double d0 = entitylivingbaseIn.prevChasingPosX + (entitylivingbaseIn.chasingPosX - entitylivingbaseIn.prevChasingPosX) * (double) partialTicks - (entitylivingbaseIn.prevPosX + (entitylivingbaseIn.posX - entitylivingbaseIn.prevPosX) * (double) partialTicks);
double d1 = entitylivingbaseIn.prevChasingPosY + (entitylivingbaseIn.chasingPosY - entitylivingbaseIn.prevChasingPosY) * (double) partialTicks - (entitylivingbaseIn.prevPosY + (entitylivingbaseIn.posY - entitylivingbaseIn.prevPosY) * (double) partialTicks);
double d2 = entitylivingbaseIn.prevChasingPosZ + (entitylivingbaseIn.chasingPosZ - entitylivingbaseIn.prevChasingPosZ) * (double) partialTicks - (entitylivingbaseIn.prevPosZ + (entitylivingbaseIn.posZ - entitylivingbaseIn.prevPosZ) * (double) partialTicks);
float f = entitylivingbaseIn.prevRenderYawOffset + (entitylivingbaseIn.renderYawOffset - entitylivingbaseIn.prevRenderYawOffset) * partialTicks;
double d3 = (double)MathHelper.sin(f * (float)Math.PI / 180.0F);
double d4 = (double)(-MathHelper.cos(f * (float)Math.PI / 180.0F));
float f1 = (float)d1 * 10.0F;
double d3 = (double) MathHelper.sin(f * (float) Math.PI / 180.0F);
double d4 = (double) (-MathHelper.cos(f * (float) Math.PI / 180.0F));
float f1 = (float) d1 * 10.0F;
f1 = MathHelper.clamp_float(f1, -6.0F, 32.0F);
float f2 = (float)(d0 * d3 + d2 * d4) * 100.0F;
float f3 = (float)(d0 * d4 - d2 * d3) * 100.0F;
float f2 = (float) (d0 * d3 + d2 * d4) * 100.0F;
float f3 = (float) (d0 * d4 - d2 * d3) * 100.0F;
if (f2 < 0.0F)
{
if (f2 < 0.0F) {
f2 = 0.0F;
}
if (f2 > 165.0F)
{
if (f2 > 165.0F) {
f2 = 165.0F;
}
float f4 = entitylivingbaseIn.prevCameraYaw + (entitylivingbaseIn.cameraYaw - entitylivingbaseIn.prevCameraYaw) * partialTicks;
f1 = f1 + MathHelper.sin((entitylivingbaseIn.prevDistanceWalkedModified + (entitylivingbaseIn.distanceWalkedModified - entitylivingbaseIn.prevDistanceWalkedModified) * partialTicks) * 6.0F) * 32.0F * f4;
if (entitylivingbaseIn.isSneaking())
{
if (entitylivingbaseIn.isSneaking()) {
f1 += 25.0F;
GlStateManager.translate(0.0F, 0.142F, -0.0178F);
}

View File

@ -6,6 +6,7 @@ import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.Display;
import rip.athena.client.account.AccountManager;
import rip.athena.client.config.save.ConfigManager;
import rip.athena.client.cosmetics.CosmeticsController;
import rip.athena.client.events.EventBus;
import rip.athena.client.events.SubscribeEvent;
import rip.athena.client.events.types.client.ClientTickEvent;
@ -48,10 +49,11 @@ public class Athena {
private final PrefixedLogger log = new PrefixedLogger("Athena");
private final String clientName = "Athena";
private final String clientVersion = "0.0.1";
private final String clientBuild = "061723";
private final String clientVersion = "0.0.2";
private final String clientBuild = "062323";
private NotificationManager notificationManager;
private CosmeticsController cosmeticsController;
private AccountManager accountManager;
private ConfigManager configManager;
private ModuleManager moduleManager;
@ -76,17 +78,8 @@ public class Athena {
this.discordRPC = new DiscordRPC();
}
if(!MAIN_DIR.exists()) {
MAIN_DIR.mkdir();
}
if(!ACCOUNTS_DIR.exists()) {
try {
ACCOUNTS_DIR.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
createDirectoryIfNotExists(MAIN_DIR);
createFileIfNotExists(ACCOUNTS_DIR);
if(SocketClient.isClientRunning()) {
JOptionPane.showMessageDialog(null, "Port 45376 already in use.");
@ -100,11 +93,17 @@ public class Athena {
this.macroManager = new MacroManager();
this.hudManager = new HUDManager();
this.eventBus = new EventBus();
this.notificationManager = new NotificationManager();
this.cosmeticsController = new CosmeticsController();
registerEvents();
configManager.postInit();
if(this.cosmeticsController.getCapeManager().getSelectedCape() == null) {
this.cosmeticsController.getCapeManager().setSelectedCape(this.cosmeticsController.getCapeManager().getCape("None"));
}
}
/**
@ -157,6 +156,22 @@ public class Athena {
}
}
private void createDirectoryIfNotExists(File directory) {
if (!directory.exists()) {
directory.mkdir();
}
}
private void createFileIfNotExists(File file) {
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Cleans up and shuts down the client.
* This method is responsible for any necessary cleanup tasks,

View File

@ -9,6 +9,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import rip.athena.client.Athena;
import rip.athena.client.config.ConfigEntry;
import rip.athena.client.cosmetics.cape.Cape;
import rip.athena.client.events.types.client.ConfigChangeEvent;
import rip.athena.client.gui.clickgui.pages.SettingsPage;
import rip.athena.client.gui.hud.HUDElement;
@ -40,10 +41,10 @@ public class Config {
this.parent = parent;
this.name = name;
this.file = new FileHandler(file);
try {
this.file.init();
if(this.file.isFresh()) {
save(file.getName());
}
@ -51,76 +52,76 @@ public class Config {
Athena.INSTANCE.getLog().error("Failed to initiate config " + name + "." + e);
}
}
public void load() {
String content = "";
try {
content = file.getContent(false);
} catch (IOException e) {
Athena.INSTANCE.getLog().error("Failed to load config " + name + " from file." + e);
}
load(content);
}
public void load(String content) {
parent.updateLast(this);
try {
JSONObject obj = new JSONObject(content);
for(Module mod : Athena.INSTANCE.getModuleManager().getModules()) {
mod.setEnabled(false);
}
Athena.INSTANCE.getMacroManager().getMacros().clear();
SettingsPage.TILE_ENTITIES.clear();
SettingsPage.ENTITIES.clear();
SettingsPage.BLOCKS.clear();
SettingsPage.PARTICLES.clear();
for(String key : obj.keySet()) {
if(key.equalsIgnoreCase("macros") || key.equalsIgnoreCase("crosshair-data")) {
continue;
}
Module module = Athena.INSTANCE.getModuleManager().getModule(key);
if(module == null) {
Athena.INSTANCE.getLog().warn("Loaded config " + name + " with left over setting " + key + " which is no longer used.");
continue;
}
JSONObject json = obj.getJSONObject(key);
if(!json.has("enabled") || !json.has("bind")) {
continue;
}
boolean enabled = json.getBoolean("enabled");
int bind = json.getInt("bind");
BindType bindType = BindType.getBind(json.getString("bindtype"));
module.setEnabled(enabled);
module.setKeyBind(bind);
module.setBindType(bindType);
JSONObject settings = json.getJSONObject("settings");
for(String setting : settings.keySet()) {
for(ConfigEntry entry : module.getEntries()) {
if(entry.getKey().equalsIgnoreCase(setting)) {
Object value = settings.get(setting);
if(value instanceof JSONObject) {
JSONObject color = (JSONObject) value;
value = new Color(color.getInt("red"), color.getInt("green"), color.getInt("blue"), color.getInt("alpha"));
} else if(entry.getType() == float.class) {
value = (float)settings.getDouble(setting);
}
entry.setValue(module, value);
break;
}
@ -128,11 +129,11 @@ public class Config {
}
JSONObject hud = json.getJSONObject("hud");
for(String element : hud.keySet()) {
String identifier = element;
JSONObject elementObj = hud.getJSONObject(identifier);
for(HUDElement modElement : module.getHUDElements()) {
if(modElement.getIdentifier().equalsIgnoreCase(identifier)) {
modElement.setX(elementObj.getInt("x"));
@ -154,36 +155,45 @@ public class Config {
}
}
String capeIdentifier = obj.getString("cape");
for (Cape cape : Athena.INSTANCE.getCosmeticsController().getCapeManager().getCapes()) {
if (cape.getName().equalsIgnoreCase(capeIdentifier)) {
Athena.INSTANCE.getLog().info(cape + capeIdentifier + cape.getName());
Athena.INSTANCE.getCosmeticsController().getCapeManager().setSelectedCape(cape);
break;
}
}
JSONArray macroList = obj.getJSONArray("macros");
for(int i = 0; i < macroList.length(); i++) {
JSONObject macro = macroList.getJSONObject(i);
Athena.INSTANCE.getMacroManager().getMacros().add(new Macro(macro.getString("name"), macro.getString("command"), macro.getInt("key"), macro.getBoolean("enabled")));
}
JSONObject fps = obj.getJSONObject("fps");
JSONArray blocks = fps.getJSONArray("blocks");
JSONArray entities = fps.getJSONArray("entities");
JSONArray tileentities = fps.getJSONArray("tile-entities");
JSONArray particles = fps.getJSONArray("particles");
List<String> list = new ArrayList<>();
for(int i = 0; i < blocks.length(); i++) {
list.add(blocks.getString(i));
}
for(String item : list) {
try {
String string = new String(item);
Class<?> clazz = Class.forName(string);
if(Block.class.isAssignableFrom(clazz)) {
Class<? extends Block> block = (Class<? extends Block>)clazz;
if(!SettingsPage.BLOCKS.contains(block)) {
SettingsPage.BLOCKS.add(block);
}
@ -192,25 +202,25 @@ public class Config {
e.printStackTrace();
}
}
list.clear();
for(int i = 0; i < entities.length(); i++) {
list.add(entities.getString(i));
}
for(String item : list) {
try {
String string = new String(item);
if(string.contains(" ")) {
string = string.split(" ", 2)[1];
}
Class<?> clazz = Class.forName(string);
if(Entity.class.isAssignableFrom(clazz)) {
Class<? extends Entity> entity = (Class<? extends Entity>)clazz;
if(!SettingsPage.ENTITIES.contains(entity)) {
SettingsPage.ENTITIES.add(entity);
}
@ -218,22 +228,22 @@ public class Config {
} catch(IllegalArgumentException | LinkageError | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
list.clear();
for(int i = 0; i < tileentities.length(); i++) {
list.add(tileentities.getString(i));
}
for(String item : list) {
try {
String string = new String(item);
Class<?> clazz = Class.forName(string);
if(TileEntity.class.isAssignableFrom(clazz)) {
Class<? extends TileEntity> tileEntity = (Class<? extends TileEntity>) clazz;
if(!SettingsPage.TILE_ENTITIES.contains(tileEntity)) {
SettingsPage.TILE_ENTITIES.add(tileEntity);
}
@ -242,21 +252,21 @@ public class Config {
e.printStackTrace();
}
}
list.clear();
for(int i = 0; i < particles.length(); i++) {
list.add(particles.getString(i));
}
for(String item : list) {
try {
String string = new String(item);
EnumParticleTypes particle = EnumParticleTypes.valueOf(string);
if(particle == null) {
continue;
}
if(!SettingsPage.PARTICLES.contains(particle)) {
SettingsPage.PARTICLES.add(particle);
}
@ -264,71 +274,71 @@ public class Config {
e.printStackTrace();
}
}
list.clear();
int[][] data = Crosshair.crosshair;
for(int i = 0; i < data.length; i++) {
for(int ii = 0; ii < data[i].length; ii++) {
data[i][ii] = 0;
}
}
String[] parts = obj.getString("crosshair-data").split("]");
List<List<Integer>> crosshairData = new ArrayList<>();
for(String part : parts) {
String formatted = part;
if(formatted.startsWith("[")) {
formatted = formatted.substring(1);
}
formatted = formatted.trim();
List<Integer> row = new ArrayList<>();
for(String rowEntry : formatted.split(",")) {
String entry = rowEntry.trim();
if(!StringUtils.isInteger(entry)) {
continue;
}
row.add(Integer.parseInt(entry));
}
if(row.size() > 0) {
crosshairData.add(row);
}
}
for(int i = 0; i < crosshairData.size(); i++) {
List<Integer> crosshairList = crosshairData.get(i);
if(i >= data.length) {
continue;
}
for(int ii = 0; ii < crosshairList.size(); ii++) {
int row = crosshairList.get(ii);
if(ii >= data[i].length) {
continue;
}
data[i][ii] = row;
}
}
} catch(JSONException e) {
Athena.INSTANCE.getLog().error("Failed to load config " + name + ", improper json." + e);
}
Athena.INSTANCE.getEventBus().post(new ConfigChangeEvent());
}
public void save(String content) {
try {
file.writeToFile(content, false);
@ -336,32 +346,32 @@ public class Config {
Athena.INSTANCE.getLog().error("Failed to save config " + name + "." + e);
}
}
public void save() {
save(toString());
}
@Override
public String toString() {
JSONObject config = new JSONObject();
for(Module mod : Athena.INSTANCE.getModuleManager().getModules()) {
JSONObject obj = new JSONObject();
JSONObject settingsObj = new JSONObject();
JSONObject hudObj = new JSONObject();
for(HUDElement element : mod.getHUDElements()) {
JSONObject elementObj = new JSONObject();
elementObj.put("x", element.getX());
elementObj.put("y", element.getY());
elementObj.put("scale", element.getScale());
elementObj.put("visible", element.isVisible());
hudObj.put(element.getIdentifier(), elementObj);
}
obj.put("enabled", mod.isToggled());
obj.put("bind", mod.getKeyBind());
obj.put("bindtype", mod.getBindType().toString());
@ -369,88 +379,89 @@ public class Config {
for(ConfigEntry entry : mod.getEntries()) {
entry.appendToConfig(entry.getKey(), entry.getValue(mod), settingsObj);
}
obj.put("settings", settingsObj);
obj.put("hud", hudObj);
config.put(mod.getName(), obj);
}
config.put("theme", Athena.INSTANCE.getThemeManager().getTheme().name());
config.put("cape", Athena.INSTANCE.getCosmeticsController().getCapeManager().getSelectedCape().getName());
JSONArray macros = new JSONArray();
for(Macro macro : Athena.INSTANCE.getMacroManager().getMacros()) {
JSONObject obj = new JSONObject();
obj.put("name", macro.getName());
obj.put("command", macro.getCommand());
obj.put("key", macro.getKey());
obj.put("enabled", macro.isEnabled());
macros.put(obj);
}
config.put("macros", macros);
JSONObject fps = new JSONObject();
List<String> buffer = new ArrayList<>();
for(Class<?> clazz : SettingsPage.BLOCKS) {
buffer.add(clazz.getCanonicalName());
}
fps.put("blocks", new JSONArray(buffer.toArray(new String[buffer.size()])));
buffer.clear();
for(Class<?> clazz : SettingsPage.ENTITIES) {
buffer.add(clazz.getCanonicalName());
}
fps.put("entities", new JSONArray(buffer.toArray(new String[buffer.size()])));
buffer.clear();
for(Class<?> clazz : SettingsPage.TILE_ENTITIES) {
buffer.add(clazz.getCanonicalName());
}
fps.put("tile-entities", new JSONArray(buffer.toArray(new String[buffer.size()])));
buffer.clear();
for(EnumParticleTypes particle : SettingsPage.PARTICLES) {
buffer.add(particle.toString());
}
fps.put("particles", new JSONArray(buffer.toArray(new String[buffer.size()])));
buffer.clear();
config.put("fps", fps);
StringBuilder crosshairData = new StringBuilder();
int[][] data = Crosshair.crosshair;
for(int i = 0; i < data.length; i++) {
StringBuilder inner = new StringBuilder();
inner.append("[");
for(int ii = 0; ii < data[i].length; ii++) {
if(inner.length() > 1) {
inner.append(",");
}
inner.append(data[i][ii]);
}
inner.append("]");
if(!crosshairData.toString().isEmpty()) {
crosshairData.append(", ");
}
crosshairData.append(inner.toString());
}
config.put("crosshair-data", crosshairData);
return config.toString(4);
}
@ -462,10 +473,10 @@ public class Config {
if(parent.lastLoadedConfig == this) {
parent.lastLoadedConfig = null;
}
file.getFile().delete();
}
public FileHandler getFileHandler() {
return file;
}
@ -474,7 +485,7 @@ public class Config {
if(parent.getLoadedConfig() == null) {
return false;
}
return parent.getLoadedConfig().getName().equalsIgnoreCase(getName());
}
}

View File

@ -1,7 +1,22 @@
package rip.athena.client.cosmetics;/**
package rip.athena.client.cosmetics;
import lombok.Getter;
import rip.athena.client.cosmetics.cape.CapeManager;
/**
* @project Athena-Client
* @author Athena Development
* @date 6/12/2023
*/
@Getter
public class CosmeticsController {
private final CapeManager capeManager;
public CosmeticsController() {
capeManager = new CapeManager();
}
}

View File

@ -0,0 +1,24 @@
package rip.athena.client.cosmetics.cape;
import lombok.Getter;
import net.minecraft.util.ResourceLocation;
/**
* @author Athena Development
* @project Athena-Client
* @date 6/23/2023
*/
@Getter
public class Cape {
private final String name;
private final ResourceLocation location;
private final ResourceLocation displayTexture;
public Cape(String name, String location, String displayTexture) {
this.name = name;
this.location = new ResourceLocation("Athena/cosmetics/capes/" + location + ".png");
this.displayTexture = new ResourceLocation("Athena/cosmetics/capes/" + displayTexture + ".png");
}
}

View File

@ -0,0 +1,44 @@
package rip.athena.client.cosmetics.cape;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.util.ResourceLocation;
import rip.athena.client.Athena;
import rip.athena.client.modules.Module;
import java.util.ArrayList;
/**
* @author Athena Development
* @project Athena-Client
* @date 6/23/2023
*/
@Getter
@Setter
public class CapeManager {
private final ArrayList<Cape> capes = new ArrayList<>();
private Cape selectedCape;
public CapeManager() {
capes.add(new Cape("Minecon 2012", "Minecon-2012", "Minecon-2012-display"));
capes.add(new Cape("Minecon 2016", "Minecon-2016", "Minecon-2016-display"));
capes.add(new Cape("ziue's head", "ziue-head", "ziue-head-display"));
capes.add(new Cape("Cat", "cat", "cat-display"));
capes.add(new Cape("None", "None", "None"));
}
public Cape getCape(String name) {
Cape requestedCape = capes
.stream()
.filter(m -> m.getName().equalsIgnoreCase(name))
.findFirst()
.orElse(null);
if (requestedCape == null) {
// Log a message indicating that the cape is not found
Athena.INSTANCE.getLog().warn("Tried accessing non-existing cape: " + name);
}
return requestedCape;
}
}

View File

@ -12,7 +12,8 @@ public enum Category {
MACROS("MACROS", "Athena/gui/mods/cps.png"),
WAYPOINTS("WAYPOINTS", "Athena/gui/menu/waypoints.png"),
PROFILES("PROFILES", "Athena/gui/menu/profiles.png"),
COSMETICS("COSMETICS", "Athena/gui/menu/cosmetics.png"),
CAPES("CAPES", "Athena/gui/menu/cosmetics.png"),
//COSMETICS("COSMETICS", "Athena/gui/menu/cosmetics.png"),
THEMES("THEMES", "Athena/gui/menu/themes.png");
private String name;

View File

@ -17,34 +17,35 @@ public class PageManager {
private IngameMenu parent;
private Menu menu;
private Map<Category, Page> pages;
public PageManager(IngameMenu parent, Menu menu) {
this.parent = parent;
this.menu = menu;
this.pages = new HashMap<>();
init();
}
private void init() {
Minecraft mc = Minecraft.getMinecraft();
pages.put(Category.MODS, new ModsPage(mc, menu, parent));
pages.put(Category.SETTINGS, new SettingsPage(mc, menu, parent));
pages.put(Category.MACROS, new MacrosPage(mc, menu, parent));
pages.put(Category.WAYPOINTS, new WaypointsPage(mc, menu, parent));
pages.put(Category.PROFILES, new ProfilesPage(mc, menu, parent));
pages.put(Category.COSMETICS, new CosmeticsPage(mc, menu, parent));
//pages.put(Category.COSMETICS, new CosmeticsPage(mc, menu, parent));
pages.put(Category.CAPES, new CapesPage(mc, menu, parent));
pages.put(Category.THEMES, new ThemesPage(mc, menu, parent));
}
public Map<Category, Page> getPages() {
return pages;
}
public <T extends Page> T getPage(Category category) {
return (T) pages.get(category);
}
public <T extends Page> T getPage(Class<T> cast, Category category) {
return (T) pages.get(category);
}

View File

@ -0,0 +1,117 @@
package rip.athena.client.gui.clickgui.components.capes;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import rip.athena.client.Athena;
import rip.athena.client.cosmetics.cape.Cape;
import rip.athena.client.font.FontManager;
import rip.athena.client.gui.clickgui.IngameMenu;
import rip.athena.client.gui.framework.components.MenuButton;
import rip.athena.client.gui.framework.draw.ButtonState;
import rip.athena.client.gui.framework.draw.DrawType;
import rip.athena.client.modules.impl.other.Settings;
import rip.athena.client.theme.impl.AccentTheme;
import rip.athena.client.utils.render.ColorUtil;
import rip.athena.client.utils.render.DrawUtils;
import rip.athena.client.utils.render.RoundedUtils;
import java.awt.*;
/**
* @author Athena Development
* @project Athena-Client
* @date 6/2/2023
*/
public class CapeButton extends MenuButton {
private boolean selected;
public CapeButton(Cape cape, int x, int y, int width, int height) {
super(cape, x, y, width, height);
this.selected = false;
}
@Override
public void onInitColors() {
setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(35, 35, 35, IngameMenu.MENU_ALPHA));
setColor(DrawType.BACKGROUND, ButtonState.ACTIVE, new Color(35, 35, 35, IngameMenu.MENU_ALPHA));
setColor(DrawType.BACKGROUND, ButtonState.HOVER, new Color(35, 35, 35, IngameMenu.MENU_ALPHA));
setColor(DrawType.BACKGROUND, ButtonState.HOVERACTIVE, new Color(35, 35, 35, IngameMenu.MENU_ALPHA));
setColor(DrawType.BACKGROUND, ButtonState.DISABLED, new Color(255, 255, 255, IngameMenu.MENU_ALPHA));
setColor(DrawType.LINE, ButtonState.NORMAL, new Color(52, 52, 53, IngameMenu.MENU_ALPHA));
setColor(DrawType.LINE, ButtonState.ACTIVE, new Color(52, 52, 53, IngameMenu.MENU_ALPHA));
setColor(DrawType.LINE, ButtonState.HOVER, new Color(52, 52, 53, IngameMenu.MENU_ALPHA));
setColor(DrawType.LINE, ButtonState.HOVERACTIVE, new Color(52, 52, 53, IngameMenu.MENU_ALPHA));
setColor(DrawType.LINE, ButtonState.DISABLED, new Color(255, 255, 255, IngameMenu.MENU_ALPHA));
setColor(DrawType.LINE, ButtonState.POPUP, new Color(28, 28, 30, IngameMenu.MENU_ALPHA));
setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(56, 56, 58, IngameMenu.MENU_ALPHA));
setColor(DrawType.TEXT, ButtonState.ACTIVE, new Color(90, 90, 94, IngameMenu.MENU_ALPHA));
setColor(DrawType.TEXT, ButtonState.HOVER, new Color(75, 75, 78, IngameMenu.MENU_ALPHA));
setColor(DrawType.TEXT, ButtonState.HOVERACTIVE, new Color(100, 100, 104, IngameMenu.MENU_ALPHA));
setColor(DrawType.TEXT, ButtonState.DISABLED, new Color(255, 255, 255, IngameMenu.MENU_ALPHA));
}
@Override
public void onRender() {
int x = this.getRenderX();
int y = this.getRenderY();
int width = this.width;
RoundedUtils.drawGradientRound(x, y, width, height, 18, ColorUtil.getClientColor(0, 255), ColorUtil.getClientColor(90, 255), ColorUtil.getClientColor(180, 255), ColorUtil.getClientColor(270, 255));
RoundedUtils.drawRound(x + 1, y + 1, width - 2, height - 2, 16, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getThirdColor()));
if (!cape.getName().equals("None")) {
DrawUtils.drawImage(cape.getDisplayTexture(), x + 25, y + 15, width - 50, height - 50);
}
if(selected) {
text = cape.getName() + " selected";
} else {
text = cape.getName();
}
drawText(text, x + (width / 2 - getStringWidth(text) / 2), y + height - 20, -1);
GlStateManager.color(1,1,1);
mouseDown = false;
}
@Override
public void drawText(String string, int x, int y, int color) {
if(Settings.customGuiFont) {
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString(string, x - 3, y, color);
} else {
Minecraft.getMinecraft().fontRendererObj.drawString(string, x, y, color);
}
}
@Override
public int getStringWidth(String string) {
if(Settings.customGuiFont) {
return (int) rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width(string) - 1;
} else {
return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string);
}
}
@Override
public int getStringHeight(String string) {
if(Settings.customGuiFont) {
return (int) FontManager.baloo17.getHeight(string) + 1;
} else {
return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT;
}
}
public void setSelected(boolean selected) {
this.selected = selected;
}
public boolean isSelected() {
return selected;
}
}

View File

@ -0,0 +1,103 @@
package rip.athena.client.gui.clickgui.pages;
import net.minecraft.client.Minecraft;
import rip.athena.client.Athena;
import rip.athena.client.cosmetics.cape.Cape;
import rip.athena.client.gui.clickgui.IngameMenu;
import rip.athena.client.gui.clickgui.Page;
import rip.athena.client.gui.clickgui.components.capes.CapeButton;
import rip.athena.client.gui.clickgui.components.mods.ModScrollPane;
import rip.athena.client.gui.framework.Menu;
/**
* @author Athena Development
* @project Athena-Client
* @date 6/2/2023
*/
public class CapesPage extends Page {
private ModScrollPane scrollPane;
public CapesPage(Minecraft mc, Menu menu, IngameMenu parent) {
super(mc, menu, parent);
}
@Override
public void onInit() {
int width = 300;
scrollPane = new ModScrollPane(260, 100, menu.getWidth() - width, menu.getHeight() - 101, false);
populateScrollPane();
}
private void populateScrollPane() {
scrollPane.getComponents().clear();
int spacing = 15;
int height = 250;
int defaultX = spacing;
int y = spacing;
int x = spacing;
int width = 190;
int maxWidth = scrollPane.getWidth() - spacing * 2;
for(Cape cape : Athena.INSTANCE.getCosmeticsController().getCapeManager().getCapes()) {
CapeButton capeButton = new CapeButton(cape, x, y, width, height) {
@Override
public void onAction() {
setActive(false);
Athena.INSTANCE.getCosmeticsController().getCapeManager().setSelectedCape(cape);
populateScrollPane();
}
};
capeButton.setSelected(cape == Athena.INSTANCE.getCosmeticsController().getCapeManager().getSelectedCape());
scrollPane.addComponent(capeButton);
x += spacing + width;
if(x + spacing + width > maxWidth) {
x = defaultX;
y += height + spacing;
}
}
}
@Override
public void onRender() {
int width = 300;
int x = menu.getX() + menu.getWidth() - width + 20;
int y = menu.getY() + 59;
int height = 32;
drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getSecondColor());
}
@Override
public void onLoad() {
menu.addComponent(scrollPane);
}
@Override
public void onUnload() {
}
@Override
public void onOpen() {
}
@Override
public void onClose() {
}
}

View File

@ -1,6 +1,7 @@
package rip.athena.client.gui.framework.components;
import net.minecraft.client.renderer.GlStateManager;
import rip.athena.client.cosmetics.cape.Cape;
import rip.athena.client.gui.framework.MenuComponent;
import rip.athena.client.gui.framework.draw.ButtonState;
import rip.athena.client.gui.framework.draw.DrawType;
@ -20,15 +21,16 @@ public class MenuButton extends MenuComponent {
protected int minOffset = 2;
protected boolean mouseDown = false;
protected boolean active = false;
protected Cape cape;
protected AccentTheme theme;
protected PrimaryTheme primaryTheme;
protected ButtonState lastState = ButtonState.NORMAL;
public MenuButton(String text, int x, int y){
super(x, y, -1, -1);
this.text = text;
}
public MenuButton(String text, int x, int y, int width, int height) {
super(x, y, width, height);
this.text = text;
@ -39,19 +41,24 @@ public class MenuButton extends MenuComponent {
this.theme = theme;
}
public MenuButton(Cape cape, int x, int y, int width, int height) {
super(x, y, width, height);
this.cape = cape;
}
public MenuButton(PrimaryTheme theme, int x, int y, int width, int height) {
super(x, y, width, height);
this.primaryTheme = theme;
}
@Override
public void onInitColors() {
setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(35, 35, 35, 255));
setColor(DrawType.BACKGROUND, ButtonState.ACTIVE, new Color(65, 65, 65, 255));
setColor(DrawType.BACKGROUND, ButtonState.HOVER, new Color(50, 50, 50, 255));
setColor(DrawType.BACKGROUND, ButtonState.HOVERACTIVE, new Color(75, 75, 75, 255));
setColor(DrawType.BACKGROUND, ButtonState.DISABLED, new Color(100, 100, 100, 255));
setColor(DrawType.BACKGROUND, ButtonState.DISABLED, new Color(100, 100, 100, 255));
setColor(DrawType.LINE, ButtonState.NORMAL, new Color(35, 35, 35, 255));
setColor(DrawType.LINE, ButtonState.ACTIVE, new Color(65, 65, 65, 255));
setColor(DrawType.LINE, ButtonState.HOVER, new Color(50, 50, 50, 255));
@ -64,28 +71,28 @@ public class MenuButton extends MenuComponent {
setColor(DrawType.TEXT, ButtonState.HOVERACTIVE, new Color(235, 235, 235, 255));
setColor(DrawType.TEXT, ButtonState.DISABLED, new Color(255, 255, 255, 255));
}
@Override
public void onMouseClick(int button) {
if(button == 0) {
mouseDown = true;
}
}
@Override
public boolean passesThrough() {
if(disabled || parent == null) {
return true;
}
int width = (this.width == -1 && this.height == -1) ? (getStringWidth(text) + minOffset * 2) : this.width;
int height = (this.width == -1 && this.height == -1) ? (getStringHeight(text) + minOffset * 2) : this.height;
int x = this.getRenderX();
int y = this.getRenderY();
int mouseX = parent.getMouseX();
int mouseY = parent.getMouseY();
if(mouseDown) {
if(mouseX >= x && mouseX <= x + width) {
if(mouseY >= y && mouseY <= y + height + 1) {
@ -93,10 +100,10 @@ public class MenuButton extends MenuComponent {
}
}
}
return true;
}
@Override
public void onPreSort() {
int x = this.getRenderX();
@ -105,14 +112,14 @@ public class MenuButton extends MenuComponent {
int height = (this.width == -1 && this.height == -1) ? (getStringHeight(text) + minOffset * 2) : this.height;
int mouseX = parent.getMouseX();
int mouseY = parent.getMouseY();
ButtonState state = active ? ButtonState.ACTIVE : ButtonState.NORMAL;
if(!disabled) {
if(mouseX >= x && mouseX <= x + width) {
if(mouseY >= y && mouseY <= y + height + 1) {
state = ButtonState.HOVER;
if(mouseDown) {
active = !active;
onAction();
@ -122,17 +129,17 @@ public class MenuButton extends MenuComponent {
} else {
state = ButtonState.DISABLED;
}
lastState = state;
}
@Override
public void onRender() {
int x = this.getRenderX();
int y = this.getRenderY();
int width = (this.width == -1 && this.height == -1) ? (getStringWidth(text) + minOffset * 2) : this.width;
int height = (this.width == -1 && this.height == -1) ? (getStringHeight(text) + minOffset * 2) : this.height;
int backgroundColor = getColor(DrawType.BACKGROUND, lastState);
int lineColor = getColor(DrawType.LINE, lastState);
int textColor = getColor(DrawType.TEXT, lastState);
@ -140,16 +147,16 @@ public class MenuButton extends MenuComponent {
GlStateManager.color(1, 1,1);
rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + 1, y + 1, width - 1, height - 1, backgroundColor);
drawHorizontalLine(x, y, width + 1, 1, lineColor);
drawVerticalLine(x, y + 1, height - 1, 1, lineColor);
drawHorizontalLine(x, y + height, width + 1, 1, lineColor);
drawVerticalLine(x + width, y + 1, height - 1, 1, lineColor);
drawText(text, x + (width / 2 - getStringWidth(text) / 2), y + (height / 2 - getStringHeight(text) / 2), textColor);
mouseDown = false;
}
public String getText() {
return text;
}

View File

@ -207,8 +207,8 @@ public class AthenaMenu extends GuiScreen implements GuiYesNoCallback
{
if (button.id == 0)
{
this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings));
}
this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings));
}
if (button.id == 5)
{
@ -293,7 +293,7 @@ public class AthenaMenu extends GuiScreen implements GuiYesNoCallback
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{
DrawUtils.drawImage(new ResourceLocation("Athena/menu/test5.jpg"), 0, 0, width, height);
DrawUtils.drawImage(new ResourceLocation("Athena/menu/wallpaper3.jpg"), 0, 0, width, height);
int[] size = InputUtils.getWindowsSize();
int startX = size[0] / 2;
@ -305,7 +305,7 @@ public class AthenaMenu extends GuiScreen implements GuiYesNoCallback
int height = 100;
rip.athena.client.utils.font.FontManager.getProductSansBold(60).drawCenteredString(Athena.INSTANCE.getClientName(),
this.width / 2, y, new Color(255, 255, 255).getRGB());
(float) this.width / 2, y, new Color(255, 255, 255).getRGB());
GlStateManager.pushMatrix();
DrawUtils.drawImage(new ResourceLocation("Athena/menu/exit.png"),startX + startX - 20, 10, 10, 10);

View File

@ -107,11 +107,7 @@ public class GuiAccountManager extends GuiScreen {
int index = 1;
if(closeAccountManager) {
showAccountAnimation.setDirection(Direction.BACKWARDS);
if(showAccountAnimation.isDone(Direction.BACKWARDS)) {
closeAccountManager = false;
mc.displayGuiScreen(prevGuiScreen);
}
mc.displayGuiScreen(prevGuiScreen);
}
if(click) {
@ -122,7 +118,7 @@ public class GuiAccountManager extends GuiScreen {
clickTimer.reset();
}
DrawUtils.drawImage(new ResourceLocation("Athena/menu/test5.jpg"), 0, 0, sr.getScaledWidth(), sr.getScaledHeight());
DrawUtils.drawImage(new ResourceLocation("Athena/menu/wallpaper3.jpg"), 0, 0, sr.getScaledWidth(), sr.getScaledHeight());
GlStateManager.pushMatrix();
@ -134,6 +130,9 @@ public class GuiAccountManager extends GuiScreen {
RoundedUtils.drawRound(x + 1, y + 180, width - 2, height - 150, 6, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getFirstColor()));
FontManager.getProductSansRegular(22).drawString("Add Account", x + 5, y + 186, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
RoundedUtils.drawGradientRound(x , y + 206, width, height - 148, 6, ColorUtil.getClientColor(0, 255), ColorUtil.getClientColor(90, 255), ColorUtil.getClientColor(180, 255), ColorUtil.getClientColor(270, 255));
RoundedUtils.drawRound(x + 1, y + 207, width - 2, height - 150, 6, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getFirstColor()));
FontManager.getProductSansRegular(22).drawString("Go back", x + 5, y + 213, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
StencilUtils.initStencilToWrite();
RoundedUtils.drawRound(x, y + 28, width, height - 28.5F, 6, Color.WHITE);
@ -150,11 +149,13 @@ public class GuiAccountManager extends GuiScreen {
for(Account a : Athena.INSTANCE.getAccountManager().getAccounts()) {
RoundedUtils.drawRound(x + 9, y + offsetY + scrollAnimation.getValue() - 1, width - 18, 37, 4, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getSecondColor()));
RoundedUtils.drawRound(x + 10, y + offsetY + scrollAnimation.getValue(), width - 20, 35, 4, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getFirstColor()));
RoundedUtils.drawGradientRound(x + width - 36, y + offsetY + 7 + scrollAnimation.getValue(), 20, 20, 4, ColorUtil.getClientColor(0, 255), ColorUtil.getClientColor(90, 255), ColorUtil.getClientColor(180, 255), ColorUtil.getClientColor(270, 255));
if(a.getAccountType().equals(AccountType.MICROSOFT)) {
//mc.getTextureManager().bindTexture(face(a.getUsername(), UUID.fromString(a.getUuid())));
mc.getTextureManager().bindTexture(new ResourceLocation("Athena/menu/head.png"));
} else {
mc.getTextureManager().bindTexture(new ResourceLocation("Athena/menu/head.png"));
}
@ -163,11 +164,15 @@ public class GuiAccountManager extends GuiScreen {
RoundedUtils.drawRoundTextured(x + 17, y + offsetY + 6 + scrollAnimation.getValue(), 24, 24, 4, 1.0F);
GlStateManager.disableBlend();
GlStateManager.pushMatrix();
DrawUtils.drawImage(new ResourceLocation("Athena/menu/exit.png"),x + width - 31, (int) (y + offsetY + 12 + scrollAnimation.getValue()), 10, 10);
GlStateManager.popMatrix();
FontManager.getProductSansRegular(22).drawString(a.getUsername(), x + 50, y + offsetY + 15 + scrollAnimation.getValue(), Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
a.opacityAnimation.setAnimation(a.isDone ? 0 : 255, 16);
FontManager.getProductSansRegular(22).drawCenteredString(a.getInfo(), x + width - 54, y + 14.5F + offsetY + scrollAnimation.getValue(), Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
FontManager.getProductSansRegular(22).drawCenteredString(a.getInfo(), x + width - 64, y + 14.5F + offsetY + scrollAnimation.getValue(), Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
if(a.getInfo().equals("Success") || a.getInfo().equals("Error")) {
if(a.getTimer().hasTimeElapsed(3500)) {
@ -263,14 +268,14 @@ public class GuiAccountManager extends GuiScreen {
showAddAccount = true;
}
if(MouseUtils.isInside(mouseX, mouseY, x , y + 179, width, height - 148)) {
if(MouseUtils.isInside(mouseX, mouseY, x , y + 206, width, 25)) {
mc.displayGuiScreen(prevGuiScreen);
}
if(MouseUtils.isInside(mouseX, mouseY, x , y + 179, width, 25)) {
mc.displayGuiScreen(new GuiAltManager());
//Soar.instance.settingsManager.getSettingByClass(ClientMod.class, "DarkMode").setValBoolean(!Soar.instance.settingsManager.getSettingByClass(ClientMod.class, "DarkMode").getValBoolean());
}
if (MouseUtils.isInside(mouseX, mouseY, sr.getScaledWidth() - 25, 5.0, 20.0, 20.0)) {
}
if(showAddAccount) {
@ -316,7 +321,6 @@ public class GuiAccountManager extends GuiScreen {
}
for(Account a : Athena.INSTANCE.getAccountManager().getAccounts()) {
if(MouseUtils.isInside(mouseX, mouseY, x + width - 36, y + offsetY + 7 + scrollAnimation.getValue(), 20, 20)) {
deleteAccount = a;
delete = true;

View File

@ -66,7 +66,7 @@ public class GuiAltManager extends GuiScreen {
int yOffset = (screenHeight - getTotalPanelsHeight()) / 2; // Calculate vertical offset to center the panels
int width = screenWidth - (2 * xOffset);
DrawUtils.drawImage(new ResourceLocation("Athena/menu/test5.jpg"), 0, 0, (int) screenWidth, (int) screenHeight);
DrawUtils.drawImage(new ResourceLocation("Athena/menu/wallpaper3.jpg"), 0, 0, (int) screenWidth, (int) screenHeight);
RoundedUtils.drawGradientRound(xOffset + 15, yOffset - 1, width + 1, getTotalPanelsHeight() - 23, 6, ColorUtil.getClientColor(0, 255), ColorUtil.getClientColor(90, 255), ColorUtil.getClientColor(180, 255), ColorUtil.getClientColor(270, 255));

View File

@ -38,13 +38,11 @@ public class LoginPanel extends Panel {
private final List<AltButton> actionButtons = new ArrayList<>();
public final List<TextField> textFields = new ArrayList<>();
private String status = "Session:";
private String status = "";
public LoginPanel() {
setHeight(200);
actionButtons.add(new AltButton("Cracked"));
actionButtons.add(new AltButton("Session"));
actionButtons.add(new AltButton("Login"));
actionButtons.add(new AltButton("Offline Login"));
textFields.add(new TextField());
textFields.add(new TextField());
}
@ -120,60 +118,14 @@ public class LoginPanel extends Panel {
actionButton.setHeight(20);
actionButton.setClickAction(() -> {
switch (actionButton.getName()) {
case "Cracked":
TextField cracked = textFields.get(0);
Athena.INSTANCE.getAccountManager().getAccounts().add(new Account(AccountType.CRACKED, cracked.getText(), "0", "0"));
Minecraft.getMinecraft().session = new Session(cracked.getText(), "0", "0", "legacy");
status = "Logged into " + cracked.getText();
Athena.INSTANCE.getAccountManager().setCurrentAccount(Athena.INSTANCE.getAccountManager().getAccountByUsername(cracked.getText()));
Athena.INSTANCE.getAccountManager().isFirstLogin = false;
Athena.INSTANCE.getAccountManager().save();
break;
case "Session":
TextField sessionID = textFields.get(0);
try {
String user, uuid, token, session = sessionID.getText();
if (session.contains(":")) { //if fully formatted string (ign:uuid:token)
//split string to data
user = session.split(":")[0];
uuid = session.split(":")[1];
token = session.split(":")[2];
} else { //if only token
//make request
HttpURLConnection c = (HttpURLConnection) new URL("https://api.minecraftservices.com/minecraft/profile/").openConnection();
c.setRequestProperty("Content-type", "application/json");
c.setRequestProperty("Authorization", "Bearer " + sessionID.getText());
c.setDoOutput(true);
//get json
JsonObject json = new JsonParser().parse(IOUtils.toString(c.getInputStream())).getAsJsonObject();
//get data
user = json.get("name").getAsString();
uuid = json.get("id").getAsString();
token = session;
}
//set session and return to previous screen
Minecraft.getMinecraft().session = new Session(user, uuid, token, "mojang");
status = "Logged into " + user;
Athena.INSTANCE.getAccountManager().getAccounts().add(new Account(AccountType.SESSION, user, uuid, token));
Athena.INSTANCE.getAccountManager().setCurrentAccount(Athena.INSTANCE.getAccountManager().getAccountByUsername(user));
Athena.INSTANCE.getAccountManager().isFirstLogin = false;
Athena.INSTANCE.getAccountManager().save();
Athena.INSTANCE.getLog().info("Success: Logged into " + user);
//mc.displayGuiScreen(previousScreen);
} catch (Exception e) {
status = "Failed to login";
Athena.INSTANCE.getLog().error("Failed to login");
System.out.println(sessionID.getText());
e.printStackTrace();
}
break;
if (actionButton.getName().equals("Offline Login")) {
TextField cracked = textFields.get(0);
Athena.INSTANCE.getAccountManager().getAccounts().add(new Account(AccountType.CRACKED, cracked.getText(), "0", "0"));
Minecraft.getMinecraft().session = new Session(cracked.getText(), "0", "0", "legacy");
status = "Logged into " + cracked.getText();
Athena.INSTANCE.getAccountManager().setCurrentAccount(Athena.INSTANCE.getAccountManager().getAccountByUsername(cracked.getText()));
Athena.INSTANCE.getAccountManager().isFirstLogin = false;
Athena.INSTANCE.getAccountManager().save();
}
});
@ -188,9 +140,8 @@ public class LoginPanel extends Panel {
hoverMicrosoftAnim.setDirection(hoveringMicrosoft ? Direction.FORWARDS : Direction.BACKWARDS);
RoundedUtils.drawRound(microX, microsoftY, microWidth, microHeight, 5, ColorUtil.applyOpacity(Color.BLACK, .2f + (.25f * hoverMicrosoftAnim.getOutput().floatValue())));
FontManager.getProductSansRegular(26).drawString("Microsoft Login", microX + 10, microsoftY + 4, -1);
FontManager.getProductSansRegular(16).drawString("Login to your migrated account", microX + 10, microsoftY + 23, -1);
FontManager.getProductSansRegular(16).drawString("Login by entering login details and clicking here", microX + 10, microsoftY + 23, -1);
float logoSize = 22;
DrawUtils.drawMicrosoftLogo(microX + microWidth - (10 + logoSize), microsoftY + (microHeight / 2f) - (logoSize / 2f), logoSize, 1.5f);

View File

@ -8,7 +8,6 @@ import rip.athena.client.events.SubscribeEvent;
import rip.athena.client.events.types.input.KeyDownEvent;
import rip.athena.client.events.types.input.MouseDownEvent;
import rip.athena.client.gui.clickgui.components.mods.MenuModKeybind;
import sun.rmi.transport.proxy.RMIHttpToCGISocketFactory;
import javax.crypto.Mac;
import java.util.List;

View File

@ -2,6 +2,7 @@ package rip.athena.client.modules.impl.other;
import com.mojang.authlib.GameProfile;
import net.minecraft.client.entity.EntityOtherPlayerMP;
import net.minecraft.client.gui.Gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.Vec3;
import rip.athena.client.Athena;
@ -110,7 +111,7 @@ public class AimTrainer extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -1,5 +1,6 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.gui.Gui;
import org.lwjgl.opengl.GL11;
import rip.athena.client.Athena;
import rip.athena.client.config.ConfigValue;
@ -96,7 +97,7 @@ public class CPS extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -113,7 +113,7 @@ public class Clock extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12, background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -2,6 +2,7 @@ package rip.athena.client.modules.impl.render;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
@ -92,17 +93,6 @@ public class Coordinates extends Module {
int myPosZ;
int myAngle;
int myDir;
int myMoveX;
int myMoveZ;
int myFind;
int coordLocation;
int myXLine, myYLine, myZLine, myBiomeLine;
int myBaseOffset;
int myCoord1Offset, myCoord2Offset;
int myRHSlocation;
int coordBoxW, coordBoxH;
int coordBoxL, coordBoxR, coordBoxTop, coordBoxBase;
private static final String[] myCardinalPoint = new String[] {"N", "NE", "E", "SE", "S", "SW", "W", "NW"};
@ -280,7 +270,7 @@ public class Coordinates extends Module {
} else if (backgroundMode.equalsIgnoreCase("Circle")) {
RoundedUtils.drawGradientRound(hud.getX(), hud.getY(), hud.getWidth(), hud.getHeight(), 6, ColorUtil.getClientColor(0, transparency), ColorUtil.getClientColor(90, transparency), ColorUtil.getClientColor(180, transparency), ColorUtil.getClientColor(270, transparency));
} else {
DrawUtils.drawGradientRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, backgroundColor.getRGB(), backgroundColor.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, backgroundColor.getRGB());
}
}

View File

@ -1,5 +1,6 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.gui.Gui;
import org.lwjgl.opengl.GL11;
import rip.athena.client.Athena;
import rip.athena.client.config.ConfigValue;
@ -87,7 +88,7 @@ public class CustomText extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColorWave().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -1,5 +1,6 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.gui.Gui;
import org.lwjgl.opengl.GL11;
import rip.athena.client.Athena;
import rip.athena.client.config.ConfigValue;
@ -87,7 +88,7 @@ public class EntityHUD extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColorWave().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -1,5 +1,6 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GlStateManager;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
@ -96,7 +97,7 @@ public class FPSMod extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -1,5 +1,6 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.gui.Gui;
import org.lwjgl.opengl.GL11;
import rip.athena.client.Athena;
import rip.athena.client.config.ConfigValue;
@ -103,7 +104,7 @@ public class MemoryUsage extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -1,5 +1,6 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.client.renderer.texture.TextureUtil;
import net.minecraft.client.resources.IResourcePack;
@ -107,7 +108,7 @@ public class PackDisplay extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX() - 10, hud.getY(), hud.getX() + width + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).width(this.convertNormalText(pack.getPackName())) / 2, hud.getY() + height + 20, 12.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX() - 10, hud.getY(), hud.getX() + width + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).width(this.convertNormalText(pack.getPackName())) / 2, hud.getY() + height + 20, 12,background.getRGB());
Gui.drawRect(hud.getX() - 10, hud.getY(), hud.getX() + width + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).width(this.convertNormalText(pack.getPackName())) / 2, hud.getY() + height + 20, background.getRGB());
}
}

View File

@ -1,6 +1,7 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -109,7 +110,7 @@ public class PotCounter extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,backgroundColor.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, backgroundColor.getRGB());
}
}

View File

@ -1,5 +1,6 @@
package rip.athena.client.modules.impl.render;
import net.minecraft.client.gui.Gui;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.MovingObjectPosition;
import org.lwjgl.opengl.GL11;
@ -115,7 +116,7 @@ public class ReachDisplay extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,background.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
}
}

View File

@ -2,6 +2,7 @@ package rip.athena.client.modules.impl.render;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.GlStateManager;
@ -36,7 +37,7 @@ import rip.athena.client.utils.render.RoundedUtils;
public class Scoreboard extends Module {
@ConfigValue.List(name = "Display Mode", values = {"Modern", "Fade", "Custom", "Default"}, description = "Chose display of background")
private String backgroundMode = "Modern";
private String backgroundMode = "Default";
@ConfigValue.Color(name = "Background Color")
private Color backgroundColor = new Color(0, 0, 0, 150);
@ -159,7 +160,7 @@ public class Scoreboard extends Module {
} else if (backgroundMode.equalsIgnoreCase("Fade")) {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 8.0f, Athena.INSTANCE.getThemeManager().getTheme().getAccentColor().getRGB());
} else {
RoundedUtils.drawRoundedRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, 12,backgroundColor.getRGB());
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, backgroundColor.getRGB());
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ bobView:true
anaglyph3d:false
maxFps:260
fboEnable:true
difficulty:1
difficulty:2
fancyGraphics:false
ao:0
renderClouds:false

Binary file not shown.

View File

@ -1 +1 @@
{"stat.walkOneCm":128091,"achievement.openInventory":11,"stat.leaveGame":74,"stat.damageTaken":50,"stat.killEntity.Spider":1,"stat.mobKills":34,"stat.killEntity.Creeper":33,"stat.useItem.minecraft.diamond_sword":76,"stat.flyOneCm":210056,"stat.drop":21,"stat.jump":638,"stat.playOneMinute":497598,"stat.fallOneCm":422,"stat.damageDealt":8415,"stat.crouchOneCm":373,"stat.timeSinceDeath":497598,"stat.sprintOneCm":69728,"stat.useItem.minecraft.spawn_egg":128,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills","River","Desert"]}}
{"stat.walkOneCm":130758,"achievement.openInventory":11,"stat.leaveGame":78,"stat.damageTaken":50,"stat.killEntity.Spider":1,"stat.mobKills":34,"stat.killEntity.Creeper":33,"stat.useItem.minecraft.diamond_sword":76,"stat.flyOneCm":221475,"stat.drop":21,"stat.jump":651,"stat.playOneMinute":515922,"stat.fallOneCm":422,"stat.damageDealt":8415,"stat.crouchOneCm":373,"stat.timeSinceDeath":515922,"stat.sprintOneCm":71583,"stat.useItem.minecraft.spawn_egg":128,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills","River","Desert"]}}

View File

@ -0,0 +1 @@
{"stat.flyOneCm":578,"stat.walkOneCm":1003,"stat.jump":5,"stat.playOneMinute":1823,"stat.leaveGame":1,"stat.timeSinceDeath":1823,"stat.sprintOneCm":544,"achievement.exploreAllBiomes":{"value":0,"progress":["Desert"]}}

View File

@ -1 +1 @@
{"stat.walkOneCm":11824,"achievement.openInventory":3,"stat.leaveGame":27,"stat.damageTaken":45,"stat.flyOneCm":16020,"stat.jump":85,"stat.playOneMinute":91240,"stat.fallOneCm":211,"stat.timeSinceDeath":91240,"stat.sprintOneCm":7810,"achievement.exploreAllBiomes":{"value":0,"progress":["Beach"]}}
{"stat.walkOneCm":13240,"achievement.openInventory":3,"stat.leaveGame":28,"stat.damageTaken":45,"stat.flyOneCm":18267,"stat.jump":94,"stat.playOneMinute":213167,"stat.fallOneCm":211,"stat.timeSinceDeath":213167,"stat.sprintOneCm":8888,"achievement.exploreAllBiomes":{"value":0,"progress":["Beach","Desert"]}}

View File

@ -27,6 +27,23 @@
"bindtype": "Toggle",
"enabled": false
},
"Crosshair": {
"settings": {
"Draw color": {
"red": 255,
"green": 0,
"blue": 0,
"alpha": 255
},
"Brush size": 2,
"Rainbow color": false,
"Delete mode": false
},
"bind": 0,
"hud": {},
"bindtype": "Toggle",
"enabled": false
},
"CPS": {
"settings": {
"Transparency": 255,
@ -69,23 +86,6 @@
"bindtype": "Toggle",
"enabled": false
},
"Crosshair": {
"settings": {
"Draw color": {
"red": 255,
"green": 0,
"blue": 0,
"alpha": 255
},
"Brush size": 2,
"Rainbow color": false,
"Delete mode": false
},
"bind": 0,
"hud": {},
"bindtype": "Toggle",
"enabled": false
},
"FPS": {
"settings": {
"Transparency": 255,
@ -247,7 +247,7 @@
"alpha": 153
},
"Free Move": false,
"Display Mode": "Fade",
"Display Mode": "Default",
"Show Numbers": false
},
"bind": 0,
@ -258,6 +258,36 @@
"scale": 1
}},
"bindtype": "Toggle",
"enabled": true
},
"TPS": {
"settings": {
"Custom Font": false,
"Background": true,
"Mode": "Number",
"Background Color": {
"red": 0,
"green": 0,
"blue": 0,
"alpha": 102
},
"Display Mode": "Modern",
"Preset Color": true,
"TPS Color": {
"red": 255,
"green": 255,
"blue": 255,
"alpha": 255
}
},
"bind": 0,
"hud": {"tps": {
"visible": true,
"x": 13,
"y": 6,
"scale": 1
}},
"bindtype": "Toggle",
"enabled": false
},
"Memory usage": {
@ -299,36 +329,6 @@
"bindtype": "Toggle",
"enabled": true
},
"TPS": {
"settings": {
"Custom Font": false,
"Background": true,
"Mode": "Number",
"Background Color": {
"red": 0,
"green": 0,
"blue": 0,
"alpha": 90
},
"Display Mode": "Circle",
"Preset Color": true,
"TPS Color": {
"red": 255,
"green": 255,
"blue": 255,
"alpha": 255
}
},
"bind": 0,
"hud": {"tps": {
"visible": true,
"x": 0,
"y": 0,
"scale": 1
}},
"bindtype": "Toggle",
"enabled": false
},
"Armor Status": {
"settings": {
"Value Display": "Value Damage",
@ -537,7 +537,14 @@
"scale": 1
}},
"bindtype": "Toggle",
"enabled": false
"enabled": true
},
"ItemPhysics": {
"settings": {},
"bind": 0,
"hud": {},
"bindtype": "Toggle",
"enabled": true
},
"Key Strokes": {
"settings": {
@ -576,13 +583,6 @@
"bindtype": "Toggle",
"enabled": false
},
"ItemPhysics": {
"settings": {},
"bind": 0,
"hud": {},
"bindtype": "Toggle",
"enabled": true
},
"Old Animations": {
"settings": {
"Armor Damage Flash": true,
@ -672,8 +672,8 @@
"bind": 0,
"hud": {"packdisplay": {
"visible": true,
"x": 16,
"y": 4,
"x": 199,
"y": 43,
"scale": 1
}},
"bindtype": "Toggle",
@ -717,6 +717,7 @@
"bindtype": "Toggle",
"enabled": true
},
"cape": "Minecon 2016",
"NoHurtCam": {
"settings": {},
"bind": 0,

Some files were not shown because too many files have changed in this diff Show More