mirror of
https://github.com/Athena-Operations/Athena-Client.git
synced 2024-11-09 19:51:32 +01:00
start on skins
This commit is contained in:
parent
fb157bd76e
commit
58e714557c
@ -1683,11 +1683,11 @@ public class Minecraft implements IThreadListener, IPlayerUsage
|
||||
*/
|
||||
public void runTick() throws IOException
|
||||
{
|
||||
if(Minecraft.getMinecraft().thePlayer != null && Minecraft.getMinecraft().theWorld != null) {
|
||||
//if(Minecraft.getMinecraft().thePlayer != null && Minecraft.getMinecraft().theWorld != null) {
|
||||
if(!Athena.INSTANCE.getEventBus().post(new ClientTickEvent())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
if (this.rightClickDelayTimer > 0)
|
||||
{
|
||||
|
@ -7,16 +7,16 @@ import net.minecraft.util.EnumParticleTypes;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import rip.athena.api.macro.Macro;
|
||||
import rip.athena.api.module.Module;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.config.AbstractConfigEntry;
|
||||
import rip.athena.client.cosmetics.cape.Cape;
|
||||
import rip.athena.client.events.client.ConfigChangeEvent;
|
||||
import rip.athena.client.ui.clickgui.pages.SettingsPage;
|
||||
import rip.athena.client.ui.hud.HUDElement;
|
||||
import rip.athena.api.macro.Macro;
|
||||
import rip.athena.client.modules.render.Crosshair;
|
||||
import rip.athena.client.theme.impl.AccentTheme;
|
||||
import rip.athena.client.theme.impl.PrimaryTheme;
|
||||
import rip.athena.client.ui.clickgui.pages.SettingsPage;
|
||||
import rip.athena.client.ui.hud.HUDElement;
|
||||
import rip.athena.client.utils.StringUtils;
|
||||
import rip.athena.client.utils.file.FileHandler;
|
||||
import rip.athena.client.utils.input.BindType;
|
||||
@ -169,13 +169,21 @@ public class Config {
|
||||
}
|
||||
}
|
||||
|
||||
String primaryThemeIdentifier = obj.getString("primaryTheme");
|
||||
for (PrimaryTheme theme : PrimaryTheme.values()) {
|
||||
if (theme.name().equalsIgnoreCase(primaryThemeIdentifier)) {
|
||||
Athena.INSTANCE.getThemeManager().setPrimaryTheme(theme);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
String capeIdentifier = obj.getString("cape");
|
||||
for (Cape cape : Athena.INSTANCE.getCosmeticsController().getCapeManager().getCapes()) {
|
||||
/*for (Cape cape : Athena.INSTANCE.getCosmeticsController().getCapeManager().getCapes()) {
|
||||
if (cape.getName().equalsIgnoreCase(capeIdentifier)) {
|
||||
Athena.INSTANCE.getCosmeticsController().getCapeManager().setSelectedCape(cape);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
List<String> list = new ArrayList<>();
|
||||
|
||||
@ -384,7 +392,8 @@ public class Config {
|
||||
}
|
||||
|
||||
config.put("theme", Athena.INSTANCE.getThemeManager().getTheme().name());
|
||||
config.put("cape", Athena.INSTANCE.getCosmeticsController().getCapeManager().getSelectedCape().getName());
|
||||
config.put("primaryTheme", Athena.INSTANCE.getThemeManager().getPrimaryTheme().name());
|
||||
//config.put("cape", Athena.INSTANCE.getCosmeticsController().getCapeManager().getSelectedCape().getName());
|
||||
|
||||
JSONArray macros = new JSONArray();
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package rip.athena.client.cosmetics;
|
||||
package rip.athena.api.cosmetics;
|
||||
|
||||
import lombok.Getter;
|
||||
import rip.athena.api.cosmetics.cape.CapeManager;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.cosmetics.cape.CapeManager;
|
||||
|
||||
/**
|
||||
* @project Athena-Client
|
||||
@ -11,10 +11,10 @@ import rip.athena.client.cosmetics.cape.CapeManager;
|
||||
*/
|
||||
|
||||
@Getter
|
||||
public class CosmeticsController {
|
||||
public class CosmeticsManager {
|
||||
private final CapeManager capeManager;
|
||||
|
||||
public CosmeticsController() {
|
||||
public CosmeticsManager() {
|
||||
Athena.INSTANCE.sendInitializationMessage("Cosmetics Controller", false);
|
||||
|
||||
capeManager = new CapeManager();
|
100
src/main/java/rip/athena/api/cosmetics/cape/Cape.java
Normal file
100
src/main/java/rip/athena/api/cosmetics/cape/Cape.java
Normal file
@ -0,0 +1,100 @@
|
||||
package rip.athena.api.cosmetics.cape;
|
||||
|
||||
import lombok.Getter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
import net.minecraft.client.renderer.texture.TextureUtil;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.json.JSONException;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.requests.ContentType;
|
||||
import rip.athena.client.requests.WebRequest;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
|
||||
@Getter
|
||||
public class Cape {
|
||||
|
||||
private int id = 0;
|
||||
private int totalFrames = 0;
|
||||
|
||||
private final String capeName;
|
||||
private String capeLocation;
|
||||
private String name;
|
||||
|
||||
private Map<Integer, ResourceLocation> framesLocation;
|
||||
private ResourceLocation preview;
|
||||
|
||||
private Map<Integer, Image> preloads;
|
||||
|
||||
private boolean isAnimated;
|
||||
|
||||
public Cape(int id, String name, String capeName, String capeLocation, boolean isAnimated, int totalFrames) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.capeName = capeName;
|
||||
this.capeLocation = capeLocation;
|
||||
this.preloads = new HashMap<>();
|
||||
this.framesLocation = new HashMap<>();
|
||||
this.isAnimated = isAnimated;
|
||||
this.totalFrames = totalFrames;
|
||||
|
||||
if(!capeLocation.isEmpty()) {
|
||||
try {
|
||||
BufferedImage image = TextureUtil.readBufferedImage(Files.newInputStream(Paths.get(getFramePath(0))));
|
||||
DynamicTexture dynamicTexture = new DynamicTexture(image);
|
||||
preview = Minecraft.getMinecraft().getTextureManager().getDynamicTextureLocation(getFramePath(0), dynamicTexture);
|
||||
} catch (IOException e) {
|
||||
Athena.INSTANCE.getLog().error("Failed to load cape asset, missing. " + e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Cape(int id, String name, String capeName, final String capeLocation) {
|
||||
this(id,name,capeName,capeLocation,false,0);
|
||||
}
|
||||
|
||||
public void updateSelectedCape() {
|
||||
try {
|
||||
WebRequest request = new WebRequest("http://athena.rip/api/updateecapeselected?uuid=" + Minecraft.getMinecraft().thePlayer.getUniqueID() + "&selected=" + this.capeName + "&hwid=" + IIIIIIIIIIIII(), "GET", ContentType.NONE, false);
|
||||
request.connect();
|
||||
} catch (JSONException | NoSuchElementException | IOException | NoSuchAlgorithmException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Athena.INSTANCE.getCosmeticsManager().getCapeManager().getCapeLookupThread().performUpdate();
|
||||
}
|
||||
|
||||
public String IIIIIIIIIIIII() throws NoSuchAlgorithmException, IOException {
|
||||
|
||||
String s = "";
|
||||
final String main = System.getenv("PROCESSOR_IDENTIFIER") + System.getenv("COMPUTERNAME")
|
||||
+ System.getProperty("user.name").trim();
|
||||
final byte[] bytes = main.getBytes("UTF-8");
|
||||
final MessageDigest messageDigest = MessageDigest.getInstance("MD5");
|
||||
final byte[] md5 = messageDigest.digest(bytes);
|
||||
int i = 0;
|
||||
for (final byte b : md5) {
|
||||
s += Integer.toHexString((b & 0xFF) | 0x300).substring(0, 3);
|
||||
if (i != md5.length - 1) {
|
||||
s += "-";
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
public String getFramePath(int frame) {
|
||||
return capeLocation.replace("#", frame + "");
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package rip.athena.api.cosmetics.cape;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.json.JSONException;
|
||||
import rip.athena.client.requests.ContentType;
|
||||
import rip.athena.client.requests.WebRequest;
|
||||
import rip.athena.client.requests.WebRequestResult;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
public class CapeLookupThread extends Thread {
|
||||
CapeManager capeManager;
|
||||
WebRequest request;
|
||||
|
||||
public CapeLookupThread(CapeManager capeManager) {
|
||||
this.capeManager = capeManager;
|
||||
|
||||
try {
|
||||
request = new WebRequest("https://athena.rip/uploads/refreshlist.txt", "GET", ContentType.NONE, false);
|
||||
} catch (JSONException | NoSuchElementException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void run() {
|
||||
while (true) {
|
||||
if (capeManager != null && capeManager.getSettings().getEnabled()) {
|
||||
if (Minecraft.getMinecraft() != null && Minecraft.getMinecraft().theWorld != null && Minecraft.getMinecraft().thePlayer != null) {
|
||||
performUpdate();
|
||||
}
|
||||
}
|
||||
try {
|
||||
CapeLookupThread.sleep(15 * 1000);
|
||||
} catch (InterruptedException interruptedexception) {
|
||||
interruptedexception.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void performUpdate() {
|
||||
try {
|
||||
WebRequestResult result = request.connect();
|
||||
String med = result.getData();
|
||||
|
||||
if (!med.isEmpty()) {
|
||||
String[] splitOne = med.split("\\s*,\\s*");
|
||||
capeManager.getUserCapes().clear();
|
||||
for (String s : splitOne) {
|
||||
String[] split = s.split(":");
|
||||
String uuid = split[0];
|
||||
int capeID = Integer.parseInt(split[1]);
|
||||
capeManager.getUserCapes().put(uuid, capeID);
|
||||
}
|
||||
}
|
||||
} catch (JSONException | NoSuchElementException | IOException | ArrayIndexOutOfBoundsException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
230
src/main/java/rip/athena/api/cosmetics/cape/CapeManager.java
Normal file
230
src/main/java/rip/athena/api/cosmetics/cape/CapeManager.java
Normal file
@ -0,0 +1,230 @@
|
||||
package rip.athena.api.cosmetics.cape;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import org.json.JSONException;
|
||||
import rip.athena.api.cosmetics.cape.player.PlayerCapeHandler;
|
||||
import rip.athena.api.cosmetics.cape.settings.CapeSettings;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.requests.ContentType;
|
||||
import rip.athena.client.requests.WebRequest;
|
||||
import rip.athena.client.requests.WebRequestResult;
|
||||
import rip.athena.client.ui.clickgui.pages.cosmetics.CapeType;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class CapeManager {
|
||||
|
||||
private CapeLookupThread capeLookupThread;
|
||||
|
||||
private List<PlayerCapeHandler> players;
|
||||
private List<Cape> ownedCapes;
|
||||
|
||||
private HashMap<String, Integer> userCapes;
|
||||
private ArrayList<Cape> capes;
|
||||
|
||||
public ModelRenderer bipedCloakShoulders;
|
||||
public ModelRenderer miniBipedCloak;
|
||||
public ModelRenderer miniBipedCloakShoulders;
|
||||
|
||||
private CapeSettings settings;
|
||||
|
||||
public CapeManager() {
|
||||
loadSettings();
|
||||
|
||||
this.players = new ArrayList<>();
|
||||
this.userCapes = new HashMap<>();
|
||||
this.ownedCapes = new CopyOnWriteArrayList<>();
|
||||
|
||||
this.capes = new ArrayList<>();
|
||||
this.capes.add(new Cape(0, "None", "none", "none", false, 0));
|
||||
this.capes.add(new Cape(1, "Staff", "cape_staff", "Athena/cosmetics/capes/staff.png"));
|
||||
|
||||
this.updateOwnedCapes();
|
||||
}
|
||||
|
||||
private void updateOwnedCapes() {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
WebRequest request = new WebRequest("http://athena.rip/api/getcapes?uuid=" + Minecraft.getMinecraft().getSession().getProfile().getId(), "GET", ContentType.NONE, false);
|
||||
WebRequestResult result = request.connect();
|
||||
|
||||
String userCapeList = result.getData();
|
||||
|
||||
List<String> list = Arrays.asList(userCapeList.split("\\s*,\\s*"));
|
||||
|
||||
for(int i = 0; i < list.size(); i++) {
|
||||
String cape = list.get(i);
|
||||
Cape toAdd = getCape(cape);
|
||||
if(toAdd !=null && !ownedCapes.contains(toAdd)) {
|
||||
ownedCapes.add(toAdd);
|
||||
}
|
||||
}
|
||||
|
||||
ownedCapes.sort((o1, o2) -> {
|
||||
String name1 = o1.getName().toUpperCase().replace("_", " ");
|
||||
String name2 = o2.getName().toUpperCase().replace("_", " ");
|
||||
return name1.compareTo(name2);
|
||||
});
|
||||
} catch (JSONException | NoSuchElementException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
public void loadSettings() {
|
||||
boolean isEnabled = true;
|
||||
CapeType type = CapeType.NORMAL;
|
||||
if(!Athena.INSTANCE.getMAIN_DIR().exists()) {
|
||||
Athena.INSTANCE.getMAIN_DIR().mkdir();
|
||||
}
|
||||
File capeFile = new File(Athena.INSTANCE.getMAIN_DIR() + File.separator + "capesettings.txt");
|
||||
if(!capeFile.exists()) {
|
||||
try {
|
||||
capeFile.createNewFile();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
BufferedReader bf = new BufferedReader(new FileReader(capeFile));
|
||||
String line;
|
||||
while ((line = bf.readLine()) != null) {
|
||||
String[] args = line.split("::");
|
||||
String name = args[0];
|
||||
if(name.equalsIgnoreCase("enabled")) {
|
||||
isEnabled = Boolean.parseBoolean(args[1]);
|
||||
}
|
||||
if(name.equalsIgnoreCase("type")) {
|
||||
type = CapeType.valueOf(args[1]);
|
||||
}
|
||||
}
|
||||
bf.close();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
|
||||
}
|
||||
}
|
||||
this.settings = new CapeSettings(isEnabled, type == null ? CapeType.NORMAL : type);
|
||||
saveSettings();
|
||||
}
|
||||
|
||||
public void saveSettings() {
|
||||
if(!Athena.INSTANCE.getMAIN_DIR().exists()) {
|
||||
Athena.INSTANCE.getMAIN_DIR().mkdir();
|
||||
}
|
||||
File capeFile = new File(Athena.INSTANCE.getMAIN_DIR() + File.separator + "capesettings.txt");
|
||||
if(!capeFile.exists()) {
|
||||
try {
|
||||
capeFile.createNewFile();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
capeFile.delete();
|
||||
try {
|
||||
capeFile.createNewFile();
|
||||
}
|
||||
catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
BufferedWriter writer = new BufferedWriter(new FileWriter(capeFile));
|
||||
StringBuilder builder1 = new StringBuilder();
|
||||
builder1.append("Enabled");
|
||||
builder1.append("::");
|
||||
builder1.append(getSettings().isEnabled);
|
||||
builder1.append("\n");
|
||||
builder1.append("Type");
|
||||
builder1.append("::");
|
||||
builder1.append(getSettings().getType() == null ? CapeType.NORMAL.toString() : getSettings().getType().toString());
|
||||
writer.write(builder1.toString());
|
||||
writer.close();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public CapeLookupThread getCapeLookupThread() {
|
||||
return capeLookupThread;
|
||||
}
|
||||
|
||||
public CapeSettings getSettings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
public ArrayList<Cape> getCapes() {
|
||||
return capes;
|
||||
}
|
||||
|
||||
public List<Cape> getOwnedCapes() {
|
||||
return ownedCapes;
|
||||
}
|
||||
|
||||
public HashMap<String, Integer> getUserCapes() {
|
||||
return this.userCapes;
|
||||
}
|
||||
|
||||
public List<PlayerCapeHandler> getPlayers() {
|
||||
return players;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a player with the specified uuid.
|
||||
*
|
||||
* @param uuid The uuid of the player.
|
||||
* @return The player with the specified uuid, or null if not found.
|
||||
*/
|
||||
public PlayerCapeHandler getPlayer(String uuid) {
|
||||
for(PlayerCapeHandler player : players) {
|
||||
if(player.getPlayerUUID().equalsIgnoreCase(uuid)) {
|
||||
return player;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves a cape with the specified name.
|
||||
*
|
||||
* @param name The name of the cape.
|
||||
* @return The cape with the specified name, or null if not found.
|
||||
*/
|
||||
public Cape getCape(String name) {
|
||||
Cape requestedCape = capes
|
||||
.stream()
|
||||
.filter(cape -> cape.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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a cape with the specified id.
|
||||
*
|
||||
* @param id The id of the cape.
|
||||
* @return The cape with the specified id, or null if not found.
|
||||
*/
|
||||
public Cape getCapeByID(int id) {
|
||||
Cape requestedCape = capes
|
||||
.stream()
|
||||
.filter(cape -> cape.getId() == id)
|
||||
.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: " + id);
|
||||
}
|
||||
return requestedCape;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package rip.athena.api.cosmetics.cape.player;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
public class PlayerCapeHandler {
|
||||
|
||||
private ResourceLocation location;
|
||||
|
||||
private String playerUUID;
|
||||
private String playerName;
|
||||
|
||||
public long lastFrameTime;
|
||||
public int lastFrame;
|
||||
public int capeInterval;
|
||||
|
||||
private boolean hasInfo;
|
||||
|
||||
public PlayerCapeHandler(String playerName, String playerUUID) {
|
||||
this.hasInfo = false;
|
||||
this.playerUUID = playerUUID;
|
||||
this.playerName = playerName;
|
||||
this.lastFrameTime = 0L;
|
||||
this.lastFrame = 0;
|
||||
this.capeInterval = 100;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package rip.athena.api.cosmetics.cape.settings;
|
||||
|
||||
import rip.athena.client.ui.clickgui.pages.cosmetics.CapeType;
|
||||
|
||||
public class CapeSettings {
|
||||
|
||||
public boolean isEnabled;
|
||||
public CapeType capeType;
|
||||
|
||||
public CapeSettings(boolean isEnabled, CapeType capeType) {
|
||||
this.isEnabled = isEnabled;
|
||||
this.capeType = capeType;
|
||||
}
|
||||
|
||||
public boolean getEnabled() {
|
||||
return this.isEnabled;
|
||||
}
|
||||
|
||||
public CapeType getType() {
|
||||
return this.capeType;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.isEnabled = enabled;
|
||||
}
|
||||
|
||||
public void setType(CapeType type) {
|
||||
this.capeType = type;
|
||||
}
|
||||
}
|
@ -210,8 +210,6 @@ public class CustomFont {
|
||||
}
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void glColor(final Color color) {
|
||||
final float red = color.getRed() / 255F,
|
||||
|
@ -4,17 +4,16 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import rip.athena.api.config.ConfigValue;
|
||||
import rip.athena.api.module.annotations.IModuleMetaData;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.config.AbstractConfigEntry;
|
||||
import rip.athena.api.config.ConfigValue;
|
||||
import rip.athena.client.config.entries.*;
|
||||
import rip.athena.client.ui.hud.HUDElement;
|
||||
import rip.athena.client.utils.input.BindType;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -125,13 +124,11 @@ public class Module {
|
||||
*/
|
||||
private void processFields() {
|
||||
for (Field field : getClass().getDeclaredFields()) {
|
||||
Type fieldType = field.getType();
|
||||
|
||||
if (!field.isAccessible()) {
|
||||
field.setAccessible(true);
|
||||
}
|
||||
|
||||
Object annotation = null;
|
||||
Object annotation;
|
||||
|
||||
if ((annotation = getAnnotation(field, ConfigValue.Boolean.class)) != null) {
|
||||
ConfigValue.Boolean boolAnnotation = (ConfigValue.Boolean) annotation;
|
||||
|
46
src/main/java/rip/athena/api/skin/Skin.java
Normal file
46
src/main/java/rip/athena/api/skin/Skin.java
Normal file
@ -0,0 +1,46 @@
|
||||
package rip.athena.api.skin;
|
||||
|
||||
import rip.athena.client.utils.animations.simple.SimpleAnimation;
|
||||
import rip.athena.client.utils.time.TimerUtil;
|
||||
|
||||
/**
|
||||
* @author Athena Development
|
||||
* @project Athena-Client
|
||||
* @date 6/10/2023
|
||||
*/
|
||||
public class Skin {
|
||||
|
||||
private String username;
|
||||
private String info;
|
||||
|
||||
public SimpleAnimation opacityAnimation = new SimpleAnimation(0.0F);
|
||||
private final TimerUtil timer;
|
||||
public boolean isDone;
|
||||
|
||||
public Skin(String username) {
|
||||
this.username = username;
|
||||
this.info = "";
|
||||
this.timer = new TimerUtil();
|
||||
this.isDone = true;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getInfo() {
|
||||
return info;
|
||||
}
|
||||
|
||||
public void setInfo(String info) {
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
public TimerUtil getTimer() {
|
||||
return timer;
|
||||
}
|
||||
}
|
101
src/main/java/rip/athena/api/skin/SkinManager.java
Normal file
101
src/main/java/rip/athena/api/skin/SkinManager.java
Normal file
@ -0,0 +1,101 @@
|
||||
package rip.athena.api.skin;
|
||||
|
||||
import rip.athena.client.Athena;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @project Athena-Client
|
||||
* @author Athena Development
|
||||
* @date 6/10/2023
|
||||
*/
|
||||
public class SkinManager {
|
||||
|
||||
private ArrayList<Skin> skins = new ArrayList<>();
|
||||
|
||||
private Skin currentSkin;
|
||||
|
||||
public boolean isFirstLogin = false;
|
||||
|
||||
public SkinManager() {
|
||||
Athena.INSTANCE.sendInitializationMessage("Skin Manager", false);
|
||||
|
||||
if(Athena.INSTANCE.getSKINS_DIR().length() == 0) {
|
||||
isFirstLogin = true;
|
||||
}
|
||||
|
||||
this.load();
|
||||
|
||||
Athena.INSTANCE.sendInitializationMessage("Skin Manager", true);
|
||||
}
|
||||
|
||||
public void save() {
|
||||
ArrayList<String> toSave = new ArrayList<>();
|
||||
|
||||
for (Skin a : Athena.INSTANCE.getSkinManager().getSkins()) {
|
||||
toSave.add("Skin:" + a.getUsername());
|
||||
}
|
||||
|
||||
if(getCurrentSkin() != null) {
|
||||
toSave.add("Current:" + getCurrentSkin().getUsername());
|
||||
}
|
||||
|
||||
try {
|
||||
PrintWriter pw = new PrintWriter(Athena.INSTANCE.getSKINS_DIR());
|
||||
for (String str : toSave) {
|
||||
pw.println(str);
|
||||
}
|
||||
pw.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void load() {
|
||||
ArrayList<String> lines = new ArrayList<>();
|
||||
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(Athena.INSTANCE.getSKINS_DIR()));
|
||||
String line = reader.readLine();
|
||||
while (line != null) {
|
||||
lines.add(line);
|
||||
line = reader.readLine();
|
||||
}
|
||||
reader.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
for (String s : lines) {
|
||||
String[] args = s.split(":");
|
||||
|
||||
if (s.toLowerCase().startsWith("skin:")) {
|
||||
skins.add(new Skin(args[1]));
|
||||
}
|
||||
|
||||
if (s.toLowerCase().startsWith("current:")) {
|
||||
setCurrentSkin(getSkinByUsername(args[1]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Skin getSkinByUsername(String name) {
|
||||
return skins.stream().filter(skin -> skin.getUsername().equalsIgnoreCase(name)).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
public ArrayList<Skin> getSkins() {
|
||||
return skins;
|
||||
}
|
||||
|
||||
public Skin getCurrentSkin() {
|
||||
return currentSkin;
|
||||
}
|
||||
|
||||
public void setCurrentSkin(Skin currentSkin) {
|
||||
this.currentSkin = currentSkin;
|
||||
}
|
||||
}
|
@ -5,11 +5,12 @@ import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.opengl.Display;
|
||||
import rip.athena.api.account.AccountManager;
|
||||
import rip.athena.api.config.save.ConfigManager;
|
||||
import rip.athena.api.cosmetics.CosmeticsManager;
|
||||
import rip.athena.api.event.EventBus;
|
||||
import rip.athena.api.event.SubscribeEvent;
|
||||
import rip.athena.api.macro.MacroManager;
|
||||
import rip.athena.api.module.ModuleRepository;
|
||||
import rip.athena.client.cosmetics.CosmeticsController;
|
||||
import rip.athena.api.skin.SkinManager;
|
||||
import rip.athena.client.events.client.ClientTickEvent;
|
||||
import rip.athena.client.socket.SocketClient;
|
||||
import rip.athena.client.theme.ThemeManager;
|
||||
@ -20,8 +21,10 @@ import rip.athena.client.utils.discord.DiscordRPC;
|
||||
import rip.athena.client.utils.input.KeybindManager;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
/**
|
||||
@ -41,9 +44,10 @@ public class Athena {
|
||||
|
||||
public static final Athena INSTANCE = new Athena();
|
||||
|
||||
public final File MAIN_DIR = Paths.get(Minecraft.getMinecraft().mcDataDir.getAbsolutePath(), "settings").toFile();
|
||||
public final File CONFIGS_DIR = Paths.get(MAIN_DIR.getAbsolutePath(), "configs").toFile();
|
||||
public final File ACCOUNTS_DIR = new File(MAIN_DIR.getAbsolutePath(), "accounts.json");
|
||||
private final File MAIN_DIR = Paths.get(Minecraft.getMinecraft().mcDataDir.getAbsolutePath(), "settings").toFile();
|
||||
private final File CONFIGS_DIR = Paths.get(MAIN_DIR.getAbsolutePath(), "configs").toFile();
|
||||
private final File ACCOUNTS_DIR = new File(MAIN_DIR.getAbsolutePath(), "accounts.json");
|
||||
private final File SKINS_DIR = new File(MAIN_DIR.getAbsolutePath(), "skins.json");
|
||||
|
||||
private final PrefixedLogger log = new PrefixedLogger("Athena");
|
||||
|
||||
@ -54,12 +58,14 @@ public class Athena {
|
||||
private final boolean debug = false;
|
||||
|
||||
private NotificationManager notificationManager;
|
||||
private CosmeticsController cosmeticsController;
|
||||
//private CosmeticsController cosmeticsController;
|
||||
private CosmeticsManager cosmeticsManager;
|
||||
private ModuleRepository moduleRepository;
|
||||
private AccountManager accountManager;
|
||||
private ConfigManager configManager;
|
||||
private ThemeManager themeManager;
|
||||
private MacroManager macroManager;
|
||||
private SkinManager skinManager;
|
||||
private HUDManager hudManager;
|
||||
private DiscordRPC discordRPC;
|
||||
private EventBus eventBus;
|
||||
@ -74,23 +80,25 @@ public class Athena {
|
||||
* connections with servers or other systems.
|
||||
*/
|
||||
public void initClient() {
|
||||
|
||||
sendInitializationMessage("Athena", false);
|
||||
|
||||
createDirectoryIfNotExists(MAIN_DIR);
|
||||
createFileIfNotExists(ACCOUNTS_DIR);
|
||||
|
||||
postInit();
|
||||
preInit();
|
||||
|
||||
handleManagers();
|
||||
registerEvents();
|
||||
checkCosmetics();
|
||||
|
||||
logInformation();
|
||||
|
||||
}
|
||||
|
||||
private void postInit() {
|
||||
private void preInit() {
|
||||
try {
|
||||
Desktop.getDesktop().browse(URI.create("https://discord.gg/pdKz6UdyNX"));
|
||||
} catch (Exception ignored) {}
|
||||
|
||||
this.discordRPC = new DiscordRPC();
|
||||
|
||||
if(SocketClient.isClientRunning()) {
|
||||
@ -105,19 +113,21 @@ public class Athena {
|
||||
this.moduleRepository = new ModuleRepository();
|
||||
this.themeManager = new ThemeManager();
|
||||
this.macroManager = new MacroManager();
|
||||
this.skinManager = new SkinManager();
|
||||
this.hudManager = new HUDManager();
|
||||
this.eventBus = new EventBus();
|
||||
|
||||
this.notificationManager = new NotificationManager();
|
||||
this.cosmeticsController = new CosmeticsController();
|
||||
this.cosmeticsManager = new CosmeticsManager();
|
||||
//this.cosmeticsController = new CosmeticsController();
|
||||
|
||||
this.configManager.postInit();
|
||||
}
|
||||
|
||||
private void checkCosmetics() {
|
||||
if(this.cosmeticsController.getCapeManager().getSelectedCape() == null) {
|
||||
/*if(this.cosmeticsController.getCapeManager().getSelectedCape() == null) {
|
||||
this.cosmeticsController.getCapeManager().setSelectedCape(this.cosmeticsController.getCapeManager().getCape("None"));
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
private void logInformation() {
|
||||
@ -135,7 +145,7 @@ public class Athena {
|
||||
Athena.INSTANCE.getLog().info("Account Size: " + this.accountManager.getAccounts().size());
|
||||
Athena.INSTANCE.getLog().info("Config Size: " + this.configManager.getConfigs().size());
|
||||
Athena.INSTANCE.getLog().info("Macro Size: " + this.macroManager.getMacros().size());
|
||||
Athena.INSTANCE.getLog().info("Cape Size: " + this.cosmeticsController.getCapeManager().getCapes().size());
|
||||
//Athena.INSTANCE.getLog().info("Cape Size: " + this.cosmeticsController.getCapeManager().getCapes().size());
|
||||
Athena.INSTANCE.getLog().info("--------------------------------");
|
||||
Athena.INSTANCE.getLog().info("Active Primary Theme: " + this.themeManager.getPrimaryTheme().getTheme());
|
||||
Athena.INSTANCE.getLog().info("Active Accent Theme: " + this.themeManager.getTheme().getTheme());
|
||||
|
@ -1,24 +0,0 @@
|
||||
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");
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package rip.athena.client.cosmetics.cape;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import rip.athena.client.Athena;
|
||||
|
||||
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("sleepy cats", "zam-cape", "zam"));
|
||||
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;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package rip.athena.client.modules.fpssettings;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import rip.athena.api.config.ConfigValue;
|
||||
import rip.athena.api.module.EnumModuleType;
|
||||
import rip.athena.api.module.Module;
|
||||
import rip.athena.api.module.annotations.IModuleMetaData;
|
||||
|
||||
@IModuleMetaData(name = "FPS Boost", type = EnumModuleType.OTHER, icon = "")
|
||||
public class FPSBoostMod extends Module {
|
||||
|
||||
@ConfigValue.Boolean(name = "Disable FPS Smoothing")
|
||||
private boolean disableFpsSmoothing = true;
|
||||
|
||||
// Previous settings
|
||||
private boolean lastFpsSmoothing;
|
||||
private boolean lastWorldSmoothing;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// Set prev value to current value for saving
|
||||
lastFpsSmoothing = Minecraft.getMinecraft().gameSettings.ofSmoothFps;
|
||||
lastWorldSmoothing = Minecraft.getMinecraft().gameSettings.ofSmoothWorld;
|
||||
|
||||
if(disableFpsSmoothing) Minecraft.getMinecraft().gameSettings.ofSmoothFps = false;
|
||||
if(lastWorldSmoothing) Minecraft.getMinecraft().gameSettings.ofSmoothFps = false;
|
||||
|
||||
super.onEnable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
Minecraft.getMinecraft().gameSettings.ofSmoothFps = lastFpsSmoothing;
|
||||
Minecraft.getMinecraft().gameSettings.ofSmoothWorld = lastWorldSmoothing;
|
||||
|
||||
super.onDisable();
|
||||
}
|
||||
}
|
@ -15,7 +15,7 @@ import java.awt.*;
|
||||
@IModuleMetaData(name = "Custom Hit Color", type = EnumModuleType.RENDER, icon = "Athena/gui/mods/hitcolor.png")
|
||||
public class CustomHitColor extends Module {
|
||||
|
||||
@ConfigValue.Color(name = "Hit Color", description = "Chose the color of your desires")
|
||||
@ConfigValue.Color(name = "Hit Color", description = "Chose the hit color")
|
||||
public Color color = Color.WHITE;
|
||||
|
||||
}
|
||||
|
197
src/main/java/rip/athena/client/modules/render/Overlay.java
Normal file
197
src/main/java/rip/athena/client/modules/render/Overlay.java
Normal file
@ -0,0 +1,197 @@
|
||||
package rip.athena.client.modules.render;
|
||||
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import rip.athena.api.config.ConfigValue;
|
||||
import rip.athena.api.event.SubscribeEvent;
|
||||
import rip.athena.api.module.EnumModuleType;
|
||||
import rip.athena.api.module.Module;
|
||||
import rip.athena.api.module.annotations.IModuleMetaData;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.events.client.ClientTickEvent;
|
||||
import rip.athena.client.events.render.RenderPlayerEvent;
|
||||
import rip.athena.client.ui.hud.HUDElement;
|
||||
import rip.athena.client.utils.font.FontManager;
|
||||
import rip.athena.client.utils.render.ColorUtil;
|
||||
import rip.athena.client.utils.render.RoundedUtils;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author Athena Development
|
||||
* @project Athena-Client
|
||||
* @date 6/1/2023
|
||||
*/
|
||||
@IModuleMetaData(name = "Hypixel Overlay", type = EnumModuleType.RENDER, icon = "")
|
||||
public class Overlay extends Module {
|
||||
|
||||
@ConfigValue.List(name = "Display Mode", values = {"Circle", "Modern", "Fade", "Old"}, description = "Chose display of background")
|
||||
private String backgroundMode = "Circle";
|
||||
|
||||
@ConfigValue.Boolean(name = "Background")
|
||||
private boolean backGround = true;
|
||||
|
||||
@ConfigValue.Color(name = "Background Color")
|
||||
private Color background = new Color(0, 0, 0, 150);
|
||||
|
||||
@ConfigValue.Integer(name = "Transparency", min = 0, max = 255)
|
||||
private int transparency = 255;
|
||||
|
||||
@ConfigValue.Color(name = "Color")
|
||||
private Color color = Color.WHITE;
|
||||
|
||||
@ConfigValue.Boolean(name = "Custom Font")
|
||||
private boolean customFont = false;
|
||||
|
||||
@ConfigValue.Boolean(name = "Static Chroma")
|
||||
private boolean isUsingStaticChroma = false;
|
||||
|
||||
@ConfigValue.Boolean(name = "Wave Chroma")
|
||||
private boolean isUsingWaveChroma = false;
|
||||
|
||||
private HUDElement hud;
|
||||
private int width = 150;
|
||||
private int height = 100;
|
||||
|
||||
private ArrayList<String> playerUsernames = new ArrayList<>();
|
||||
|
||||
public Overlay() {
|
||||
hud = new HUDElement("fps", width, height) {
|
||||
@Override
|
||||
public void onRender() {
|
||||
render();
|
||||
}
|
||||
};
|
||||
|
||||
hud.setX(200);
|
||||
hud.setY(105);
|
||||
|
||||
addHUD(hud);
|
||||
}
|
||||
|
||||
public void render() {
|
||||
if (mc.gameSettings.showDebugInfo) {
|
||||
return;
|
||||
}
|
||||
|
||||
GL11.glPushMatrix();
|
||||
|
||||
int width = hud.getWidth();
|
||||
int height = hud.getHeight();
|
||||
|
||||
int y = hud.getY();
|
||||
int x = hud.getX();
|
||||
|
||||
hud.setWidth(365);
|
||||
|
||||
if(backGround) {
|
||||
if(backgroundMode.equalsIgnoreCase("Modern")) {
|
||||
if(Athena.INSTANCE.getThemeManager().getTheme().isTriColor()) {
|
||||
RoundedUtils.drawGradientRound(hud.getX(), hud.getY(), hud.getWidth(), hud.getHeight(), 6, Athena.INSTANCE.getThemeManager().getTheme().getFirstColor(), Athena.INSTANCE.getThemeManager().getTheme().getSecondColor(), Athena.INSTANCE.getThemeManager().getTheme().getThirdColor(), Athena.INSTANCE.getThemeManager().getTheme().getFirstColor());
|
||||
} else {
|
||||
RoundedUtils.drawGradientRound(hud.getX(), hud.getY(), hud.getWidth(), hud.getHeight(), 6, Athena.INSTANCE.getThemeManager().getTheme().getFirstColor(), Athena.INSTANCE.getThemeManager().getTheme().getFirstColor(), Athena.INSTANCE.getThemeManager().getTheme().getSecondColor(), Athena.INSTANCE.getThemeManager().getTheme().getSecondColor());
|
||||
}
|
||||
} 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 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 {
|
||||
Gui.drawRect(hud.getX(), hud.getY(), hud.getX() + width, hud.getY() + height, background.getRGB());
|
||||
}
|
||||
}
|
||||
|
||||
FontManager.getProductSansRegular(30).drawString("HYPIXEL OVERLAY", hud.getX() + (hud.getWidth() - FontManager.getProductSansRegular(30).width("HYPIXEL OVERLAY")) / 2, y + 5, -1);
|
||||
FontManager.getProductSansRegular(20).drawString("NAME", x + 25, y + 30, -1);
|
||||
FontManager.getProductSansRegular(20).drawString("LEVEL", x + 100, y + 30, -1);
|
||||
FontManager.getProductSansRegular(20).drawString("WLR", x + 175, y + 30, -1);
|
||||
FontManager.getProductSansRegular(20).drawString("FKDR", x + 250, y + 30, -1);
|
||||
FontManager.getProductSansRegular(20).drawString("BBLR", x + 325, y + 30, -1);
|
||||
|
||||
RoundedUtils.drawRound(x + 10, y + 22, width - 20, 2, 2, new Color(-1));
|
||||
|
||||
int userY = 50;
|
||||
y += 50;
|
||||
|
||||
for (int i = 0; i < playerUsernames.size(); i++) {
|
||||
String username = playerUsernames.get(i);
|
||||
|
||||
// Center level text
|
||||
String levelText = "LEVEL";
|
||||
String levelNumberText = "10";
|
||||
|
||||
int levelTextWidth = FontManager.getProductSansRegular(20).width(levelText);
|
||||
int levelNumberTextWidth = FontManager.getProductSansRegular(20).width(levelNumberText);
|
||||
int levelX = hud.getX() + 100 + (levelTextWidth - levelNumberTextWidth) / 2;
|
||||
|
||||
// Center wlr text
|
||||
String wlrText = "WLR";
|
||||
String wlrValueText = "10";
|
||||
|
||||
int wlrWidth = FontManager.getProductSansRegular(20).width(wlrText);
|
||||
int wlrValueWidth = FontManager.getProductSansRegular(20).width(wlrValueText);
|
||||
int wlrX = hud.getX() + 175 + (wlrWidth - wlrValueWidth) / 2;
|
||||
|
||||
// Center fkdr text
|
||||
String fkdrText = "FKDR";
|
||||
String fkdrValueText = "10";
|
||||
|
||||
int fkdrWidth = FontManager.getProductSansRegular(20).width(fkdrText);
|
||||
int fkdrValueWidth = FontManager.getProductSansRegular(20).width(fkdrValueText);
|
||||
int fkdrX = hud.getX() + 250 + (fkdrWidth - fkdrValueWidth) / 2;
|
||||
|
||||
// Center bblr text
|
||||
String bblrText = "BBLR";
|
||||
String bblrValueText = "10";
|
||||
|
||||
int bblrWidth = FontManager.getProductSansRegular(20).width(bblrText);
|
||||
int bblrValueWidth = FontManager.getProductSansRegular(20).width(bblrValueText);
|
||||
int bblrX = hud.getX() + 325 + (bblrWidth - bblrValueWidth) / 2;
|
||||
|
||||
FontManager.getProductSansRegular(20).drawString(username, x + 5, y, -1);
|
||||
FontManager.getProductSansRegular(20).drawString(levelNumberText, levelX, y, -1);
|
||||
FontManager.getProductSansRegular(20).drawString(wlrValueText, wlrX, y, -1);
|
||||
FontManager.getProductSansRegular(20).drawString(fkdrValueText, fkdrX, y, -1);
|
||||
FontManager.getProductSansRegular(20).drawString(bblrValueText, bblrX, y, -1);
|
||||
|
||||
userY += 11;
|
||||
y += 11;
|
||||
}
|
||||
|
||||
hud.setHeight(userY);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRenderPlayer(RenderPlayerEvent e) {
|
||||
if(mc.thePlayer != null && mc.theWorld != null) {
|
||||
for (Entity entity : mc.theWorld.loadedEntityList) {
|
||||
if (entity instanceof EntityPlayer) {
|
||||
if(playerUsernames.contains(e.getPlayer().getName())) return;
|
||||
playerUsernames.add(e.getPlayer().getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onClientTick(ClientTickEvent e) {
|
||||
if(mc.thePlayer == null || mc.theWorld == null || mc.getCurrentServerData() == null) {
|
||||
Athena.INSTANCE.getLog().info("Clearing overlay users");
|
||||
playerUsernames.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
super.onEnable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
super.onDisable();
|
||||
}
|
||||
}
|
@ -15,7 +15,7 @@ import java.awt.*;
|
||||
public enum PrimaryTheme implements ColorUtil {
|
||||
|
||||
DARK("Dark", new Color(30, 31, 35, 255).getRGB(), new Color(43, 44, 48, 255).getRGB(), new Color(35, 35, 35, 255).getRGB(), -1),
|
||||
WHITE("White", new Color(255, 255, 255, 255).getRGB(), new Color(100, 100, 100, 255).getRGB(), new Color(50, 50, 50, 255).getRGB(), new Color(0,0,0).getRGB()),
|
||||
WHITE("White", new Color(255, 255, 255, 255).getRGB(), new Color(100, 100, 100, 255).getRGB(), new Color(50, 50, 50, 255).getRGB(), new Color(67, 63, 63, 255).getRGB()),
|
||||
TRANSPARENT("Transparent", new Color(30, 31, 35, 200).getRGB(), new Color(43, 44, 48, 200).getRGB(), new Color(35, 35, 35, 200).getRGB(), -1);
|
||||
|
||||
private final String theme;
|
||||
|
@ -15,7 +15,7 @@ public enum Category {
|
||||
COSMETICS("COSMETICS", "Athena/gui/menu/cosmetics.png"),
|
||||
//COSMETICS("COSMETICS", "Athena/gui/menu/cosmetics.png"),
|
||||
SCREENSHOTS("SCREENSHOTS", "Athena/gui/menu/themes.png"),
|
||||
THEMES("THEMES", "Athena/gui/menu/themes.png");
|
||||
THEMES("THEMES", "Athena/gui/mods/hitcolor.png");
|
||||
|
||||
private String name;
|
||||
private String icon;
|
||||
|
@ -2,8 +2,8 @@ package rip.athena.client.ui.clickgui.components.capes;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import rip.athena.api.cosmetics.cape.Cape;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.cosmetics.cape.Cape;
|
||||
import rip.athena.api.font.FontManager;
|
||||
import rip.athena.client.ui.clickgui.IngameMenu;
|
||||
import rip.athena.client.ui.framework.components.MenuButton;
|
||||
@ -63,7 +63,7 @@ public class CapeButton extends MenuButton {
|
||||
RoundedUtils.drawRound(x + 1, y + 1, width - 2, height - 2, 8, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getThirdColor()));
|
||||
|
||||
if (!cape.getName().equals("None")) {
|
||||
DrawUtils.drawImage(cape.getDisplayTexture(), x + 25, y + 15, width - 50, height - 50);
|
||||
DrawUtils.drawImage(cape.getPreview(), x + 25, y + 15, width - 50, height - 50);
|
||||
}
|
||||
|
||||
if(selected) {
|
||||
|
@ -71,7 +71,7 @@ public class CategoryButton extends MenuButton {
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
if (isActive()) {
|
||||
RoundedUtils.drawRound(x + 30, y, width - 40, height, 12, new Color(10, 10, 10, 150));
|
||||
RoundedUtils.drawRound(x + 30, y, width - 40, height, 10, new Color(10, 10, 10, 150));
|
||||
RoundedUtils.drawRoundedGradientOutlineCorner(x + 30, y, width + x - 10, height + y, 1, 12, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
|
||||
}
|
||||
if (Settings.customGuiFont) {
|
||||
|
@ -0,0 +1,73 @@
|
||||
package rip.athena.client.ui.clickgui.components.mods;
|
||||
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import rip.athena.client.ui.framework.components.MenuNewColorPicker;
|
||||
import rip.athena.client.ui.framework.draw.ButtonState;
|
||||
import rip.athena.client.ui.framework.draw.DrawType;
|
||||
import org.lwjgl.input.Mouse;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* @author Athena Development
|
||||
* @project Athena-Client
|
||||
* @date 6/2/2023
|
||||
*/
|
||||
|
||||
public class MenuModNewColorPicker extends MenuNewColorPicker {
|
||||
public MenuModNewColorPicker(int x, int y, int width, int height, int defaultColor) {
|
||||
super(x, y, width, height, defaultColor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitColors() {
|
||||
super.onInitColors();
|
||||
|
||||
setColor(DrawType.LINE, ButtonState.NORMAL, new Color(43, 43, 43, 255));
|
||||
setColor(DrawType.LINE, ButtonState.ACTIVE, new Color(53, 53, 53, 255));
|
||||
setColor(DrawType.LINE, ButtonState.HOVER, new Color(48, 48, 48, 255));
|
||||
setColor(DrawType.LINE, ButtonState.HOVERACTIVE, new Color(59, 59, 59, 255));
|
||||
setColor(DrawType.LINE, ButtonState.DISABLED, new Color(100, 100, 100, 255));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRender() {
|
||||
int x = this.getRenderX();
|
||||
int y = this.getRenderY();
|
||||
int lineColor = getColor(DrawType.LINE, lastState);
|
||||
|
||||
GlStateManager.color(1, 1, 1);
|
||||
|
||||
/*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);*/
|
||||
|
||||
rip.athena.client.ui.framework.draw.DrawImpl.drawRect(x + 3, y + 2, width - 1, height - 3, lineColor);
|
||||
|
||||
int index = 0;
|
||||
|
||||
for(int h = y; h < y + height - 5; h++) {
|
||||
rip.athena.client.ui.framework.draw.DrawImpl.drawRect(x + 5, h + 3, width - 5, 1, /*disabled ? */lightenColor(index, 0, color).getRGB()/* : darkenColor(index, 7, color).getRGB()*/);
|
||||
index++;
|
||||
}
|
||||
|
||||
if(startType <= 0) {
|
||||
if(alphaSlider.getParent() == null) {
|
||||
alphaSlider.setParent(getParent());
|
||||
}
|
||||
|
||||
alphaSlider.onPreSort();
|
||||
}
|
||||
|
||||
drawPicker();
|
||||
|
||||
if(wantsToDrag) {
|
||||
mouseDragging = Mouse.isButtonDown(0);
|
||||
wantsToDrag = mouseDragging;
|
||||
}
|
||||
|
||||
mouseDown = false;
|
||||
mouseDragging = false;
|
||||
}
|
||||
}
|
@ -72,7 +72,7 @@ public class ModCategoryButton extends MenuButton {
|
||||
}
|
||||
|
||||
if (isActive()) {
|
||||
RoundedUtils.drawRound(x + 17, y, width - 23, height - 4, 12, new Color(10, 10, 10, 150));
|
||||
RoundedUtils.drawRound(x + 17, y, width - 23, height - 4, 10, new Color(10, 10, 10, 150));
|
||||
RoundedUtils.drawRoundedGradientOutlineCorner(x + 17, y, width + x - 7, height + y - 4, 1, 12, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
|
||||
}
|
||||
|
||||
@ -86,7 +86,7 @@ public class ModCategoryButton extends MenuButton {
|
||||
|
||||
} else {
|
||||
if (isActive()) {
|
||||
RoundedUtils.drawRound(x + 17, y, width - 23, height - 4, 12, new Color(10, 10, 10, 150));
|
||||
RoundedUtils.drawRound(x + 17, y, width - 23, height - 4, 10, new Color(10, 10, 10, 150));
|
||||
RoundedUtils.drawRoundedGradientOutlineCorner(x + 17, y, width + x - 7, height + y - 4, 1, 12, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
|
||||
}
|
||||
|
||||
|
@ -180,7 +180,7 @@ public class ModuleBox extends MenuComponent {
|
||||
int defaultColor = getColor(DrawType.BACKGROUND, ButtonState.NORMAL);
|
||||
int drawColor = defaultColor;
|
||||
|
||||
GlStateManager.color(1,1,1);
|
||||
//GlStateManager.color(1,1,1);
|
||||
|
||||
RoundedUtils.drawRoundedRect(x, y, x + width, y + height, 26.0f, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getSecondColor());
|
||||
RoundedUtils.drawRoundedRect(x + 1, y + 1, x + width - 1, y + height - 1, 26.0f, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getFirstColor());
|
||||
@ -244,7 +244,7 @@ public class ModuleBox extends MenuComponent {
|
||||
//rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + width - 14 - 17 - 3, y + 14 - 3, 23, 23, drawColor);
|
||||
//RoundedUtils.drawGradientRound(x + width - 14 - 17 - 3, y + 14 - 3, 23, 23, 6, Athena.INSTANCE.getThemeManager().getTheme().getFirstColor(), Athena.INSTANCE.getThemeManager().getTheme().getFirstColor(), Athena.INSTANCE.getThemeManager().getTheme().getSecondColor(), Athena.INSTANCE.getThemeManager().getTheme().getSecondColor());
|
||||
|
||||
RoundedUtils.drawRound(x + width - 14 - 17 - 3, y + 14 - 3, 23, 23, 12, new Color(10,10,10, 150));
|
||||
RoundedUtils.drawRound(x + width - 14 - 17 - 3, y + 14 - 3, 23, 23, 9, new Color(10,10,10, 150));
|
||||
RoundedUtils.drawRoundedGradientOutlineCorner(x + width - 14 - 17 - 3, y + 14 - 3, width + x - 11, 34 + y, 1, 12, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
|
||||
|
||||
|
||||
|
@ -1,10 +1,9 @@
|
||||
package rip.athena.client.ui.clickgui.pages;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import rip.athena.api.cosmetics.cape.Cape;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.cosmetics.cape.Cape;
|
||||
import rip.athena.client.ui.clickgui.IngameMenu;
|
||||
import rip.athena.client.ui.clickgui.Page;
|
||||
import rip.athena.client.ui.clickgui.components.capes.CapeButton;
|
||||
@ -126,17 +125,20 @@ public class CosmeticsPage extends Page {
|
||||
|
||||
int maxWidth = cosmeticsPane.getWidth() - spacing * 2;
|
||||
|
||||
for(Cape cape : Athena.INSTANCE.getCosmeticsController().getCapeManager().getCapes()) {
|
||||
for(Cape cape : Athena.INSTANCE.getCosmeticsManager().getCapeManager().getOwnedCapes()) {
|
||||
CapeButton capeButton = new CapeButton(cape, x, y, width, height) {
|
||||
@Override
|
||||
public void onAction() {
|
||||
setActive(false);
|
||||
Athena.INSTANCE.getCosmeticsController().getCapeManager().setSelectedCape(cape);
|
||||
new Thread(() -> {
|
||||
cape.updateSelectedCape();
|
||||
}).start();
|
||||
|
||||
populateCosmeticsScrollPane();
|
||||
}
|
||||
};
|
||||
|
||||
capeButton.setSelected(cape == Athena.INSTANCE.getCosmeticsController().getCapeManager().getSelectedCape());
|
||||
//capeButton.setSelected(cape == Athena.INSTANCE.getCosmeticsController().getCapeManager().getSelectedCape());
|
||||
|
||||
cosmeticsPane.addComponent(capeButton);
|
||||
|
||||
|
@ -168,7 +168,7 @@ public class MacrosPage extends Page {
|
||||
GlStateManager.translate(menu.getX() - 235, menu.getY() - 80, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-menu.getX(), -menu.getY(), 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("MACROS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("MACROS", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("MACROS", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
@ -99,7 +99,7 @@ public class ModsPage extends Page {
|
||||
int w = 86;
|
||||
int h = 76;
|
||||
|
||||
crosshair.drawPicker(menu.getX() + 255 + 25, menu.getY() + 290, w, h, menu.getMouseX(), menu.getMouseY());
|
||||
crosshair.drawPicker(menu.getX() + 255, menu.getY() + 350, w, h, menu.getMouseX(), menu.getMouseY());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -276,7 +276,7 @@ public class ModsPage extends Page {
|
||||
} else if (configEntry instanceof ColorEntry) {
|
||||
ColorEntry entry = (ColorEntry) configEntry;
|
||||
|
||||
toAdd.add(new MenuModColorPicker(0, 0, 35, 20, ((Color) entry.getValue(activeModule)).getRGB()) {
|
||||
toAdd.add(new MenuModNewColorPicker(0, 0, 35, 90, ((Color) entry.getValue(activeModule)).getRGB()) {
|
||||
@Override
|
||||
public void onAction() {
|
||||
entry.setValue(activeModule, getColor());
|
||||
|
@ -1,11 +1,10 @@
|
||||
package rip.athena.client.ui.clickgui.pages;
|
||||
|
||||
import rip.athena.api.font.FontManager;
|
||||
import rip.athena.client.ui.framework.Menu;
|
||||
import rip.athena.client.ui.framework.MenuComponent;
|
||||
import rip.athena.client.ui.clickgui.IngameMenu;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import rip.athena.api.font.FontManager;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.ui.clickgui.IngameMenu;
|
||||
import rip.athena.client.ui.clickgui.Page;
|
||||
import rip.athena.client.ui.clickgui.components.cosmetics.*;
|
||||
import rip.athena.client.ui.clickgui.components.macros.MacroButton;
|
||||
@ -15,6 +14,8 @@ import rip.athena.client.ui.clickgui.components.mods.ModScrollPane;
|
||||
import rip.athena.client.ui.clickgui.pages.cosmetics.BandanaSize;
|
||||
import rip.athena.client.ui.clickgui.pages.cosmetics.CapeType;
|
||||
import rip.athena.client.ui.clickgui.pages.cosmetics.CosmeticType;
|
||||
import rip.athena.client.ui.framework.Menu;
|
||||
import rip.athena.client.ui.framework.MenuComponent;
|
||||
|
||||
/**
|
||||
* @author Athena Development
|
||||
@ -394,13 +395,13 @@ public class OldCosmeticsPage extends Page {
|
||||
|
||||
rip.athena.client.ui.framework.draw.DrawImpl.drawRect(menu.getX() + menu.getWidth() - width, menu.getY() + 58, width, height + 1, ModCategoryButton.MAIN_COLOR);
|
||||
drawShadowDown(menu.getX() + menu.getWidth() - width, y + height, width);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("COSMETIC SETTINGS", menu.getX() + menu.getWidth() - width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("COSMETIC SETTINGS") / 2, y + height / 2 - FontManager.baloo17.getHeight("COSMETIC SETTINGS") / 2, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("COSMETIC SETTINGS", menu.getX() + menu.getWidth() - width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("COSMETIC SETTINGS") / 2, y + height / 2 - FontManager.baloo17.getHeight("COSMETIC SETTINGS") / 2, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
rip.athena.client.ui.framework.draw.DrawImpl.drawRect(menu.getX(), menu.getY() + 58, width, menu.getHeight() - 58, MacrosPage.MENU_SIDE_BG_COLOR);
|
||||
|
||||
rip.athena.client.ui.framework.draw.DrawImpl.drawRect(menu.getX(), menu.getY() + 58, width, height + 1, ModCategoryButton.MAIN_COLOR);
|
||||
drawShadowDown(menu.getX(), y + height, width);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("COSMETICS", menu.getX() + width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("COSMETICS") / 2, y + height / 2 - FontManager.baloo17.getHeight("COSMETICS") / 2, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("COSMETICS", menu.getX() + width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("COSMETICS") / 2, y + height / 2 - FontManager.baloo17.getHeight("COSMETICS") / 2, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
drawShadowDown(menu.getX(), y - 1, width);
|
||||
drawShadowDown(menu.getX() + menu.getWidth() - width, y - 1, width);
|
||||
@ -408,19 +409,19 @@ public class OldCosmeticsPage extends Page {
|
||||
x += 3;
|
||||
y += 50;
|
||||
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("EMOTE WHEEL KEYBIND", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("EMOTE WHEEL KEYBIND", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
y += 60;
|
||||
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("ENABLED EMOTES", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("ENABLED EMOTES", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
y += 150;
|
||||
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("CAPE LOCATION", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("CAPE LOCATION", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
y += 60;
|
||||
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("BANDANA LOCATION", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString("BANDANA LOCATION", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -240,10 +240,10 @@ public class ProfilesPage extends Page {
|
||||
GlStateManager.translate(menu.getX() - 235, menu.getY() - 80, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-menu.getX(), -menu.getY(), 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("PROFILES", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("PROFILES", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("PROFILES", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("PROFILES", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
|
||||
if(Settings.customGuiFont) {
|
||||
@ -251,10 +251,10 @@ public class ProfilesPage extends Page {
|
||||
GlStateManager.translate(menu.getX() - menu.getWidth() + (float) width / 2 + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).width("CREATE NEW PROFILE") / 2,y - (float) height / 2 - FontManager.baloo17.getHeight("CREATE NEW PROFILE") / 2, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-menu.getX(), -y - 5 + (float) height / 2 + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).height() / 2, 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("CREATE NEW PROFILE", menu.getX() + menu.getWidth() - (float) width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("CREATE NEW PROFILE") / 2, y + (float) height / 2 - FontManager.baloo17.getHeight("CREATE NEW PROFILE") / 2, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("CREATE NEW PROFILE", menu.getX() + menu.getWidth() - (float) width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("CREATE NEW PROFILE") / 2, y + (float) height / 2 - FontManager.baloo17.getHeight("CREATE NEW PROFILE") / 2, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
mc.fontRendererObj.drawString("CREATE NEW PROFILE", (int) (menu.getX() + menu.getWidth() - (float) width / 2 - mc.fontRendererObj.getStringWidth("CREATE NEW PROFILE") / 2), (int) (y + (float) height / 2 - mc.fontRendererObj.FONT_HEIGHT / 2), IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
mc.fontRendererObj.drawString("CREATE NEW PROFILE", (int) (menu.getX() + menu.getWidth() - (float) width / 2 - mc.fontRendererObj.getStringWidth("CREATE NEW PROFILE") / 2), (int) (y + (float) height / 2 - mc.fontRendererObj.FONT_HEIGHT / 2), Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
|
||||
y += 60;
|
||||
@ -264,10 +264,10 @@ public class ProfilesPage extends Page {
|
||||
GlStateManager.translate(x,y, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-x, -y, 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(15).drawString("ENTER NAME", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(15).drawString("ENTER NAME", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
mc.fontRendererObj.drawString("ENTER NAME", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
mc.fontRendererObj.drawString("ENTER NAME", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
|
||||
y += 120;
|
||||
@ -277,10 +277,10 @@ public class ProfilesPage extends Page {
|
||||
GlStateManager.translate(menu.getX() - menu.getWidth() + (float) width / 2 + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).width("DOWNLOAD PROFILE") / 2,y - (float) height / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(20).height() / 2, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-menu.getX(), -y - 10 + (float) height / 2 + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).height() / 2, 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("DOWNLOAD PROFILE", menu.getX() + menu.getWidth() - (float) width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("DOWNLOAD PROFILE") / 2, y + (float) height / 2 - FontManager.baloo17.getHeight("DOWNLOAD PROFILE") / 2, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("DOWNLOAD PROFILE", menu.getX() + menu.getWidth() - (float) width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width("DOWNLOAD PROFILE") / 2, y + (float) height / 2 - FontManager.baloo17.getHeight("DOWNLOAD PROFILE") / 2, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
mc.fontRendererObj.drawString("DOWNLOAD PROFILE", (int) (menu.getX() + menu.getWidth() - (float) width / 2 - mc.fontRendererObj.getStringWidth("DOWNLOAD PROFILE") / 2), (int) (y + (float) height / 2 - mc.fontRendererObj.FONT_HEIGHT / 2), IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
mc.fontRendererObj.drawString("DOWNLOAD PROFILE", (int) (menu.getX() + menu.getWidth() - (float) width / 2 - mc.fontRendererObj.getStringWidth("DOWNLOAD PROFILE") / 2), (int) (y + (float) height / 2 - mc.fontRendererObj.FONT_HEIGHT / 2), Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
|
||||
y += 50;
|
||||
@ -290,10 +290,10 @@ public class ProfilesPage extends Page {
|
||||
GlStateManager.translate(x,y, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-x, -y, 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(15).drawString("PROFILE CODE", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(15).drawString("PROFILE CODE", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
mc.fontRendererObj.drawString("PROFILE CODE", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
mc.fontRendererObj.drawString("PROFILE CODE", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package rip.athena.client.ui.clickgui.pages;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.ui.clickgui.IngameMenu;
|
||||
import rip.athena.client.ui.clickgui.Page;
|
||||
import rip.athena.client.ui.framework.Menu;
|
||||
@ -30,7 +31,7 @@ public class ScreenshotsPage extends Page {
|
||||
GlStateManager.translate(menu.getX() - 235, menu.getY() - 80, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-menu.getX(), -menu.getY(), 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("SCREENSHOTS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("SCREENSHOTS", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
|
@ -291,7 +291,7 @@ public class SettingsPage extends Page {
|
||||
drawShadowDown(menu.getX(), y + height, width);
|
||||
drawShadowDown(menu.getX(), y - 1, width);
|
||||
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("FPS", menu.getX() + width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth("FPS") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("FPS", menu.getX() + width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth("FPS") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
*/}
|
||||
|
||||
@Override
|
||||
|
@ -53,7 +53,7 @@ public class ThemesPage extends Page {
|
||||
GlStateManager.translate(menu.getX() - 235, menu.getY() - 80, 0);
|
||||
GlStateManager.scale(2, 2, 2);
|
||||
GlStateManager.translate(-menu.getX(), -menu.getY(), 0);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("THEMES | " + Athena.INSTANCE.getThemeManager().getTheme() + ", " + Athena.INSTANCE.getThemeManager().getPrimaryTheme(), menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("THEMES | " + Athena.INSTANCE.getThemeManager().getTheme() + ", " + Athena.INSTANCE.getThemeManager().getPrimaryTheme(), menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
GlStateManager.popMatrix();
|
||||
} else {
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("THEMES", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
@ -207,28 +207,28 @@ public class WaypointsPage extends Page {
|
||||
drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(0,0,0,0).getRGB());
|
||||
|
||||
if(Settings.customGuiFont) {
|
||||
FontManager.vision16.drawString("WAYPOINTS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
FontManager.vision16.drawString("WAYPOINTS", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
} else {
|
||||
mc.fontRendererObj.drawString("WAYPOINTS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
mc.fontRendererObj.drawString("WAYPOINTS", menu.getX() + 235, menu.getY() + 80, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
//drawHorizontalLine(menu.getX() + 31, menu.getY() + 110, menu.getWidth() - width - 31 * 2, 3, IngameMenu.MENU_LINE_COLOR);
|
||||
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("ADD NEW WAYPOINT", menu.getX() + menu.getWidth() - width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth("ADD NEW WAYPOINT") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("ADD NEW WAYPOINT", menu.getX() + menu.getWidth() - width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth("ADD NEW WAYPOINT") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
y += 60;
|
||||
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("ENTER NAME", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("ENTER NAME", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
y += 70;
|
||||
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("DESCRIPTION", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("DESCRIPTION", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
y += 70;
|
||||
y += 30;
|
||||
y += 30;
|
||||
y += 30;
|
||||
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("COLOR", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR);
|
||||
Minecraft.getMinecraft().fontRendererObj.drawString("COLOR", x, y, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,7 +1,7 @@
|
||||
package rip.athena.client.ui.framework.components;
|
||||
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import rip.athena.client.cosmetics.cape.Cape;
|
||||
import rip.athena.api.cosmetics.cape.Cape;
|
||||
import rip.athena.client.ui.framework.MenuComponent;
|
||||
import rip.athena.client.ui.framework.draw.ButtonState;
|
||||
import rip.athena.client.ui.framework.draw.DrawType;
|
||||
@ -41,7 +41,7 @@ public class MenuButton extends MenuComponent {
|
||||
this.theme = theme;
|
||||
}
|
||||
|
||||
public MenuButton(Cape cape, int x, int y, int width, int height) {
|
||||
public MenuButton(rip.athena.api.cosmetics.cape.Cape cape, int x, int y, int width, int height) {
|
||||
super(x, y, width, height);
|
||||
this.cape = cape;
|
||||
}
|
||||
|
@ -0,0 +1,496 @@
|
||||
package rip.athena.client.ui.framework.components;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import rip.athena.client.ui.framework.MenuComponent;
|
||||
import rip.athena.client.ui.framework.MenuPriority;
|
||||
import rip.athena.client.ui.framework.draw.ButtonState;
|
||||
import rip.athena.client.ui.framework.draw.DrawType;
|
||||
import rip.athena.client.utils.render.RoundedUtils;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
/**
|
||||
* @author Athena Development
|
||||
* @project Athena-Client
|
||||
* @date 6/2/2023
|
||||
*/
|
||||
|
||||
public class MenuNewColorPicker extends MenuComponent {
|
||||
protected Color color;
|
||||
protected Color temp;
|
||||
protected Point startPos;
|
||||
protected ButtonState lastState = ButtonState.NORMAL;
|
||||
protected ResourceLocation colorPickerMain;
|
||||
protected boolean mouseDown = false;
|
||||
|
||||
protected int lastYPress;
|
||||
|
||||
protected int startType = 0;
|
||||
protected boolean wantsToDrag = false;
|
||||
|
||||
protected boolean mouseDragging = false;
|
||||
protected boolean pickingColor = false;
|
||||
protected boolean canPick = true;
|
||||
protected int size = 80;
|
||||
protected int colorOffset = 20;
|
||||
protected int alphaOffset = 10;
|
||||
protected int pickerWindowWidth = size + colorOffset;
|
||||
protected int pickerWindowHeight = size + alphaOffset;
|
||||
protected MenuSlider alphaSlider;
|
||||
|
||||
public MenuNewColorPicker(int x, int y, int width, int height, int defaultColor) {
|
||||
super(x, y, width, height);
|
||||
lastYPress = -1;
|
||||
|
||||
Color theColor = new Color(defaultColor, true);
|
||||
|
||||
color = theColor;
|
||||
temp = theColor;
|
||||
|
||||
alphaSlider = new MenuSlider(1f, 0f, 1f, 1, 0, 0, pickerWindowWidth, 10){
|
||||
@Override
|
||||
public void onAction() {
|
||||
color = new Color(color.getRed(), color.getGreen(), color.getBlue(), Math.round(alphaSlider.getValue() * 255));
|
||||
MenuNewColorPicker.this.onAction();
|
||||
}
|
||||
};
|
||||
|
||||
alphaSlider.setValue((float)theColor.getAlpha() / 255);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitColors() {
|
||||
setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(35, 35, 35, 255));
|
||||
setColor(DrawType.BACKGROUND, ButtonState.ACTIVE, new Color(81, 108, 255, 255));
|
||||
setColor(DrawType.BACKGROUND, ButtonState.HOVER, new Color(50, 50, 50, 255));
|
||||
setColor(DrawType.BACKGROUND, ButtonState.HOVERACTIVE, new Color(100, 120, 255, 255));
|
||||
setColor(DrawType.BACKGROUND, ButtonState.POPUP, new Color(10, 10, 10, 255));
|
||||
setColor(DrawType.BACKGROUND, ButtonState.DISABLED, new Color(100, 100, 100, 255));
|
||||
|
||||
setColor(DrawType.LINE, ButtonState.NORMAL, new Color(10, 10, 10, 255));
|
||||
setColor(DrawType.LINE, ButtonState.ACTIVE, new Color(10, 10, 10, 255));
|
||||
setColor(DrawType.LINE, ButtonState.HOVER, new Color(10, 10, 10, 255));
|
||||
setColor(DrawType.LINE, ButtonState.HOVERACTIVE, new Color(10, 10, 10, 255));
|
||||
setColor(DrawType.LINE, ButtonState.POPUP, new Color(100, 120, 255, 255));
|
||||
setColor(DrawType.LINE, ButtonState.DISABLED, new Color(100, 100, 100, 255));
|
||||
|
||||
setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(200, 200, 200, 255));
|
||||
setColor(DrawType.TEXT, ButtonState.ACTIVE, new Color(235, 235, 235, 255));
|
||||
setColor(DrawType.TEXT, ButtonState.HOVER, new Color(225, 225, 225, 255));
|
||||
setColor(DrawType.TEXT, ButtonState.HOVERACTIVE, new Color(235, 235, 235, 255));
|
||||
setColor(DrawType.TEXT, ButtonState.POPUP, new Color(100, 100, 100, 255));
|
||||
setColor(DrawType.TEXT, ButtonState.DISABLED, new Color(255, 255, 255, 255));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMouseClick(int button) {
|
||||
if(button == 0 && alphaSlider.passesThrough()) {
|
||||
mouseDown = true;
|
||||
}
|
||||
|
||||
alphaSlider.onMouseClick(button);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMouseClickMove(int button) {
|
||||
if(button == 0 && alphaSlider.passesThrough()) {
|
||||
mouseDragging = true;
|
||||
}
|
||||
|
||||
alphaSlider.onMouseClickMove(button);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onExitGui(int key) {
|
||||
if(pickingColor) {
|
||||
pickingColor = false;
|
||||
}
|
||||
|
||||
alphaSlider.onExitGui(key);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean passesThrough() {
|
||||
if(pickingColor) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(disabled) {
|
||||
return true;
|
||||
}
|
||||
|
||||
int x = this.getRenderX();
|
||||
int y = this.getRenderY();
|
||||
int mouseX = parent.getMouseX();
|
||||
int mouseY = parent.getMouseY();
|
||||
|
||||
if(startPos != null) {
|
||||
if(mouseX >= x && mouseX <= x + pickerWindowWidth) {
|
||||
if(mouseY >= y && mouseY <= y + pickerWindowHeight) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if(mouseDown) {
|
||||
if(mouseX >= x && mouseX <= x + width) {
|
||||
if(mouseY >= y && mouseY <= y + height + 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPreSort() {
|
||||
if(alphaSlider.getParent() == null && getParent() != null) {
|
||||
alphaSlider.setParent(getParent());
|
||||
}
|
||||
|
||||
int x = this.getRenderX();
|
||||
int y = this.getRenderY();
|
||||
int mouseX = parent.getMouseX();
|
||||
int mouseY = parent.getMouseY();
|
||||
ButtonState state = ButtonState.NORMAL;
|
||||
|
||||
if(!disabled) {
|
||||
if(mouseX >= x && mouseX <= x + width) {
|
||||
if(mouseY >= y && mouseY <= y + height + 1) {
|
||||
state = ButtonState.HOVER;
|
||||
}
|
||||
}
|
||||
|
||||
if(startPos != null) {
|
||||
boolean hover = false;
|
||||
|
||||
if(mouseX >= x && mouseX <= x + pickerWindowWidth) {
|
||||
if(mouseY >= y && mouseY <= y + pickerWindowHeight + 1) {
|
||||
hover = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(hover && mouseDown) {
|
||||
wantsToDrag = true;
|
||||
}
|
||||
|
||||
pickingColor = (mouseDown && hover) || (!mouseDown && pickingColor);
|
||||
|
||||
if(pickingColor) {
|
||||
state = ButtonState.HOVER;
|
||||
}
|
||||
} else if(state == ButtonState.HOVER && mouseDown) {
|
||||
pickingColor = true;
|
||||
}
|
||||
} else {
|
||||
state = ButtonState.DISABLED;
|
||||
}
|
||||
|
||||
if(pickingColor) {
|
||||
setPriority(MenuPriority.HIGHEST);
|
||||
} else {
|
||||
if(state == ButtonState.HOVER || state == ButtonState.HOVERACTIVE) {
|
||||
setPriority(MenuPriority.HIGH);
|
||||
} else {
|
||||
setPriority(MenuPriority.MEDIUM);
|
||||
}
|
||||
}
|
||||
|
||||
lastState = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRender() {
|
||||
int x = this.getRenderX();
|
||||
int y = this.getRenderY();
|
||||
int lineColor = getColor(DrawType.LINE, lastState);
|
||||
|
||||
int index = 0;
|
||||
|
||||
for(int h = y; h < y + height; h++) {
|
||||
RoundedUtils.drawRound(x + 1, h, width - 1, 1, 12, disabled ? lightenColor(index, 7, color) : darkenColor(index, 7, color));
|
||||
index++;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if(startType <= 0) {
|
||||
if(alphaSlider.getParent() == null) {
|
||||
alphaSlider.setParent(getParent());
|
||||
}
|
||||
|
||||
alphaSlider.onPreSort();
|
||||
}
|
||||
|
||||
drawPicker();
|
||||
|
||||
if(wantsToDrag) {
|
||||
mouseDragging = Mouse.isButtonDown(0);
|
||||
wantsToDrag = mouseDragging;
|
||||
}
|
||||
|
||||
mouseDown = false;
|
||||
mouseDragging = false;
|
||||
}
|
||||
|
||||
public void drawPicker() {
|
||||
int renderX = this.getRenderX() - 120;
|
||||
int renderY = this.getRenderY() + 2;
|
||||
|
||||
int mouseX = parent.getMouseX();
|
||||
int mouseY = parent.getMouseY();
|
||||
int backgroundColor = getColor(DrawType.BACKGROUND, ButtonState.POPUP);
|
||||
int lineColor = getColor(DrawType.LINE, lastState);
|
||||
|
||||
if(!mouseDown) {
|
||||
canPick = true;
|
||||
}
|
||||
|
||||
if(!wantsToDrag) {
|
||||
startType = 0;
|
||||
}
|
||||
|
||||
ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft());
|
||||
int windowX = renderX;
|
||||
int windowY = renderY;
|
||||
|
||||
if(windowX + pickerWindowWidth >= res.getScaledWidth()) {
|
||||
windowX -= pickerWindowWidth;
|
||||
}
|
||||
|
||||
if(windowY + pickerWindowHeight >= res.getScaledHeight()) {
|
||||
windowY -= pickerWindowHeight;
|
||||
}
|
||||
|
||||
startPos = new Point(windowX, windowY);
|
||||
|
||||
alphaSlider.setX(renderX);
|
||||
alphaSlider.setY(renderY + pickerWindowHeight - alphaSlider.getHeight());
|
||||
|
||||
if(canPick && startType == 0) {
|
||||
if(mouseY > renderY && mouseY < renderY + pickerWindowHeight - alphaSlider.getHeight()) {
|
||||
if(mouseX > renderX + pickerWindowWidth - colorOffset && mouseX < renderX + pickerWindowWidth) {
|
||||
startType = 1;
|
||||
} else if(mouseX > renderX && mouseX < renderX + size) {
|
||||
startType = 2;
|
||||
}
|
||||
} else {
|
||||
startType = -1;
|
||||
canPick = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(startType != 0) {
|
||||
if(startType == 2) {
|
||||
if(mouseX >= renderX + pickerWindowWidth) {
|
||||
mouseX = renderX + pickerWindowWidth - size - 1;
|
||||
} else if(mouseX <= renderX) {
|
||||
mouseX = renderX + pickerWindowWidth - size + 1;
|
||||
}
|
||||
} else {
|
||||
if(mouseX >= renderX + pickerWindowWidth) {
|
||||
mouseX = renderX + pickerWindowWidth - 1;
|
||||
} else if(mouseX <= renderX + size) {
|
||||
mouseX = renderX + size + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(mouseY >= renderY + pickerWindowHeight - alphaSlider.getHeight()) {
|
||||
mouseY = renderY + pickerWindowHeight - alphaSlider.getHeight() - 1;
|
||||
} else if(mouseY <= renderY) {
|
||||
mouseY = renderY + 1;
|
||||
}
|
||||
}
|
||||
|
||||
rip.athena.client.ui.framework.draw.DrawImpl.drawRect(renderX + 1, renderY + 1, pickerWindowWidth - 1, pickerWindowHeight - 1, backgroundColor );
|
||||
drawHorizontalLine(renderX, renderY, pickerWindowWidth + 1, 1, lineColor);
|
||||
drawVerticalLine(renderX, renderY + 1, pickerWindowHeight - 1, 1, lineColor);
|
||||
drawHorizontalLine(renderX, renderY + pickerWindowHeight, pickerWindowWidth + 1, 1, lineColor);
|
||||
drawVerticalLine(renderX + pickerWindowWidth, renderY + 1, pickerWindowHeight - 1, 1, lineColor);
|
||||
|
||||
if(colorPickerMain == null) {
|
||||
BufferedImage bufferedPicker = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);
|
||||
|
||||
for(int y = 0; y < size; y++) {
|
||||
float blackMod = 255 * (float)y / size;
|
||||
|
||||
for(int x = 0; x < size; x++) {
|
||||
Color color = new Color(clampColor(temp.getRed() - blackMod), clampColor(temp.getGreen() - blackMod), clampColor(temp.getBlue() - blackMod));
|
||||
bufferedPicker.setRGB(x, y, color.getRGB());
|
||||
}
|
||||
}
|
||||
|
||||
DynamicTexture texture = new DynamicTexture(bufferedPicker);
|
||||
bufferedPicker.getRGB(0, 0, bufferedPicker.getWidth(), bufferedPicker.getHeight(), texture.getTextureData(), 0, bufferedPicker.getWidth());
|
||||
final ResourceLocation resource = Minecraft.getMinecraft().getTextureManager().getDynamicTextureLocation("color-picker-active", texture);
|
||||
colorPickerMain = resource;
|
||||
}
|
||||
|
||||
if((mouseDown || mouseDragging || wantsToDrag) && canPick && startType == 2) {
|
||||
if(mouseX > renderX && mouseX < renderX + size && mouseY > renderY && mouseY < renderY + size) {
|
||||
int y = mouseY - renderY;
|
||||
float blackMod = 255 * (float)y / size;
|
||||
|
||||
this.color = new Color(clampColor(temp.getRed() - blackMod), clampColor(temp.getGreen() - blackMod), clampColor(temp.getBlue() - blackMod));
|
||||
onAction();
|
||||
}
|
||||
}
|
||||
|
||||
drawImage(colorPickerMain, renderX + 1, renderY + 1, size - 1, size - 1);
|
||||
|
||||
float colorSpeed = size / 3.8f;
|
||||
|
||||
float red = 275;
|
||||
float green = 275;
|
||||
float blue = 275;
|
||||
|
||||
for(int y = renderY + 1; y < renderY + size; y++) {
|
||||
if(red > 255) {
|
||||
red--;
|
||||
}
|
||||
|
||||
if(green > 255) {
|
||||
green--;
|
||||
}
|
||||
|
||||
if(blue > 255) {
|
||||
blue--;
|
||||
}
|
||||
|
||||
if(red >= 255 && green >= 255 && blue > 0) {
|
||||
blue -= colorSpeed;
|
||||
} else if(red >= 255 && green > 0 && blue <= 0) {
|
||||
green -= colorSpeed;
|
||||
} else if(red >= 255 && green <= 0 && blue < 255) {
|
||||
blue += colorSpeed;
|
||||
} else if(red > 0 && green <= 0 && blue >= 255) {
|
||||
red -= colorSpeed;
|
||||
} else if(red <= 0 && green < 255 && blue >= 255) {
|
||||
green += colorSpeed;
|
||||
} else if(red <= 0 && green >= 255 && blue > 0) {
|
||||
blue -= colorSpeed;
|
||||
} else if(red < 255 && green >= 255 && blue <= 0) {
|
||||
red += colorSpeed;
|
||||
}
|
||||
|
||||
for(int x = renderX + size + 1; x < renderX + pickerWindowWidth; x++) {
|
||||
Color color = new Color(clampColor(red), clampColor(green), clampColor(blue));
|
||||
|
||||
if((mouseDown || mouseDragging || wantsToDrag) && canPick && startType == 1 && isInPixel(mouseX, mouseY, x, y)) {
|
||||
temp = color;
|
||||
lastYPress = y;
|
||||
onMiniAction();
|
||||
Minecraft.getMinecraft().getTextureManager().deleteTexture(colorPickerMain);
|
||||
colorPickerMain = null;
|
||||
}
|
||||
|
||||
if(lastYPress == -1) {
|
||||
if(Math.abs(color.getRGB() - temp.getRGB()) < 3) {
|
||||
lastYPress = y;
|
||||
}
|
||||
}
|
||||
|
||||
drawPixel(x, y, color.getRGB());
|
||||
}
|
||||
}
|
||||
|
||||
if(lastYPress != -1) {
|
||||
drawHorizontalLine(renderX + pickerWindowWidth - colorOffset, lastYPress, colorOffset, 1, lineColor);
|
||||
}
|
||||
|
||||
alphaSlider.onRender();
|
||||
drawVerticalLine(renderX + size, renderY + 1, pickerWindowHeight - alphaOffset - 1, 1, lineColor);
|
||||
}
|
||||
|
||||
private boolean isInPixel(int mouseX, int mouseY, int x, int y) {
|
||||
return mouseX == x && mouseY == y;
|
||||
}
|
||||
|
||||
private int clampColor(float color) {
|
||||
int theColor = Math.round(color);
|
||||
|
||||
if(theColor > 255) {
|
||||
return 255;
|
||||
}
|
||||
|
||||
else if(theColor < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return theColor;
|
||||
}
|
||||
|
||||
protected Color darkenColor(int index, int modifier, Color color) {
|
||||
int newRed = color.getRed() - index * modifier;
|
||||
int newGreen = color.getGreen() - index * modifier;
|
||||
int newBlue = color.getBlue() - index * modifier;
|
||||
|
||||
if(newRed < 0) {
|
||||
newRed = 0;
|
||||
}
|
||||
|
||||
if(newGreen < 0) {
|
||||
newGreen = 0;
|
||||
}
|
||||
|
||||
if(newBlue < 0) {
|
||||
newBlue = 0;
|
||||
}
|
||||
|
||||
return new Color(newRed, newGreen, newBlue, Math.round(alphaSlider.getValue() * 255));
|
||||
}
|
||||
|
||||
protected Color lightenColor(int index, int modifier, Color color) {
|
||||
int newRed = color.getRed() + index * modifier;
|
||||
int newGreen = color.getGreen() + index * modifier;
|
||||
int newBlue = color.getBlue() + index * modifier;
|
||||
|
||||
if(newRed > 255) {
|
||||
newRed = 255;
|
||||
}
|
||||
|
||||
if(newGreen > 255) {
|
||||
newGreen = 255;
|
||||
}
|
||||
|
||||
if(newBlue > 255) {
|
||||
newBlue = 255;
|
||||
}
|
||||
|
||||
return new Color(newRed, newGreen, newBlue, color.getAlpha());
|
||||
}
|
||||
|
||||
public Color getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public void setColor(int color) {
|
||||
this.color = new Color(color);
|
||||
Minecraft.getMinecraft().getTextureManager().deleteTexture(colorPickerMain);
|
||||
colorPickerMain = null;
|
||||
}
|
||||
|
||||
public Color getColorCategory() {
|
||||
return temp;
|
||||
}
|
||||
|
||||
public void setColorCategory(int color) {
|
||||
this.temp = new Color(color);
|
||||
lastYPress = -1;
|
||||
}
|
||||
|
||||
public MenuSlider getAlphaSlider() {
|
||||
return alphaSlider;
|
||||
}
|
||||
|
||||
public void onAction() {}
|
||||
public void onMiniAction() {}
|
||||
}
|
@ -20,6 +20,7 @@ import org.lwjgl.opengl.GLContext;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.ui.menu.altmanager.GuiAccountManager;
|
||||
import rip.athena.client.ui.menu.altmanager.GuiAltManager;
|
||||
import rip.athena.client.ui.menu.skin.GuiSkinManager;
|
||||
import rip.athena.client.utils.animations.Animation;
|
||||
import rip.athena.client.utils.animations.impl.EaseBackIn;
|
||||
import rip.athena.client.utils.input.InputUtils;
|
||||
@ -264,6 +265,7 @@ public class AthenaMenu extends GuiScreen implements GuiYesNoCallback
|
||||
DrawUtils.drawImage(new ResourceLocation("Athena/logo/Athena.png"), this.width / 2 - 50, y - 90, 100, 100);
|
||||
DrawUtils.drawImage(new ResourceLocation("Athena/menu/exit.png"),10, 10, 10, 10);
|
||||
DrawUtils.drawImage(new ResourceLocation("Athena/menu/usericon.png"), startX + startX - 24, 6, 18, 18);
|
||||
DrawUtils.drawImage(new ResourceLocation("Athena/menu/usericon.png"), startX + startX - 49, 6, 18, 18);
|
||||
GlStateManager.popMatrix();
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
@ -271,6 +273,10 @@ public class AthenaMenu extends GuiScreen implements GuiYesNoCallback
|
||||
RoundedUtils.drawRoundedRect(startX+startX - 25, startY - startY + 5, startX+startX - 5, startY - startY + 25, 14, isOverAccountManager ? new Color(150,150,150,100).getRGB() : new Color(100,100,100,100).getRGB());
|
||||
RoundedUtils.drawRoundedGradientOutlineCorner(startX+startX - 25 + 1, startY - startY + 5 + 1, startX+startX - 5 - 1, startY - startY + 25 - 1, 3, 12, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
|
||||
|
||||
boolean isOverSkinManager = mouseX >= startX+startX-50 && mouseX <= startX+startX-30 && mouseY >= startY - startY + 5 && mouseY <= startY - startY + 25;
|
||||
RoundedUtils.drawRoundedRect(startX+startX - 50, startY - startY + 5, startX+startX - 30, startY - startY + 25, 14, isOverSkinManager ? new Color(150,150,150,100).getRGB() : new Color(100,100,100,100).getRGB());
|
||||
RoundedUtils.drawRoundedGradientOutlineCorner(startX+startX - 50 + 1, startY - startY + 5 + 1, startX+startX - 30 - 1, startY - startY + 25 - 1, 3, 12, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
|
||||
|
||||
boolean isOverExit = mouseX >= 5 && mouseX <= 25 && mouseY >= startY - startY + 5 && mouseY <= startY - startY + 25;
|
||||
RoundedUtils.drawRoundedRect(5, startY - startY + 5, 25, startY - startY + 25, 14, isOverExit ? new Color(150,150,150,100).getRGB() : new Color(100,100,100,100).getRGB());
|
||||
RoundedUtils.drawRoundedGradientOutlineCorner(5 + 1, startY - startY + 5 + 1, 25 - 1, startY - startY + 25 - 1, 3, 12, ColorUtil.getClientColor(0, 255).getRGB(), ColorUtil.getClientColor(90, 255).getRGB(), ColorUtil.getClientColor(180, 255).getRGB(), ColorUtil.getClientColor(270, 255).getRGB());
|
||||
@ -292,6 +298,7 @@ public class AthenaMenu extends GuiScreen implements GuiYesNoCallback
|
||||
|
||||
boolean isOverExit = mouseX >= 5 && mouseX <= 25 && mouseY >= startY - startY + 5 && mouseY <= startY - startY + 25;
|
||||
boolean isOverAccountManager = mouseX >= startX+startX-25 && mouseX <= startX+startX-5 && mouseY >= startY - startY + 5 && mouseY <= startY - startY + 25;
|
||||
boolean isOverSkinManager = mouseX >= startX+startX-50 && mouseX <= startX+startX-30 && mouseY >= startY - startY + 5 && mouseY <= startY - startY + 25;
|
||||
|
||||
if(isOverExit) {
|
||||
this.mc.shutdown();
|
||||
@ -301,6 +308,9 @@ public class AthenaMenu extends GuiScreen implements GuiYesNoCallback
|
||||
this.mc.displayGuiScreen(new GuiAccountManager(this));
|
||||
}
|
||||
|
||||
if(isOverSkinManager) {
|
||||
this.mc.displayGuiScreen(new GuiSkinManager(this));
|
||||
}
|
||||
|
||||
synchronized (this.threadLock)
|
||||
{
|
||||
|
@ -4,17 +4,15 @@ import fr.litarvan.openauth.microsoft.MicrosoftAuthResult;
|
||||
import fr.litarvan.openauth.microsoft.MicrosoftAuthenticationException;
|
||||
import fr.litarvan.openauth.microsoft.MicrosoftAuthenticator;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Session;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.api.account.Account;
|
||||
import rip.athena.api.account.AccountType;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.socket.SocketClient;
|
||||
import rip.athena.client.ui.menu.altmanager.button.AltTextField;
|
||||
import rip.athena.client.utils.GLUtils;
|
||||
@ -27,8 +25,10 @@ import rip.athena.client.utils.render.*;
|
||||
import rip.athena.client.utils.time.TimerUtil;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
@ -129,7 +129,7 @@ public class GuiAccountManager extends GuiScreen {
|
||||
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);
|
||||
RoundedUtils.drawRound(x, y + 28, width, height - 30.5F, 6, Color.WHITE);
|
||||
StencilUtils.readStencilBuffer(1);
|
||||
|
||||
showAddAccountAnimation.setAnimation(showAddAccount ? 0 : 140, 16);
|
||||
@ -285,7 +285,6 @@ public class GuiAccountManager extends GuiScreen {
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int mouseX, int mouseY, int mouseButton) {
|
||||
|
||||
ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
|
||||
|
||||
int addX = 140;
|
||||
@ -351,22 +350,19 @@ public class GuiAccountManager extends GuiScreen {
|
||||
|
||||
if(a.getAccountType().equals(AccountType.MICROSOFT)) {
|
||||
|
||||
new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
MicrosoftAuthenticator authenticator = new MicrosoftAuthenticator();
|
||||
a.setInfo("Loading...");
|
||||
try {
|
||||
MicrosoftAuthResult acc = authenticator.loginWithRefreshToken(a.getToken());
|
||||
mc.session = new Session(acc.getProfile().getName(), acc.getProfile().getId(), acc.getAccessToken(), "mojang");
|
||||
Athena.INSTANCE.getAccountManager().setCurrentAccount(Athena.INSTANCE.getAccountManager().getAccountByUsername(acc.getProfile().getName()));
|
||||
a.setInfo("Success!");
|
||||
} catch (MicrosoftAuthenticationException e) {
|
||||
e.printStackTrace();
|
||||
a.setInfo("Error");
|
||||
}
|
||||
new Thread(() -> {
|
||||
MicrosoftAuthenticator authenticator = new MicrosoftAuthenticator();
|
||||
a.setInfo("Loading...");
|
||||
try {
|
||||
MicrosoftAuthResult acc = authenticator.loginWithRefreshToken(a.getToken());
|
||||
mc.session = new Session(acc.getProfile().getName(), acc.getProfile().getId(), acc.getAccessToken(), "mojang");
|
||||
Athena.INSTANCE.getAccountManager().setCurrentAccount(Athena.INSTANCE.getAccountManager().getAccountByUsername(acc.getProfile().getName()));
|
||||
a.setInfo("Success!");
|
||||
} catch (MicrosoftAuthenticationException e) {
|
||||
e.printStackTrace();
|
||||
a.setInfo("Error");
|
||||
}
|
||||
}.start();
|
||||
}).start();
|
||||
}
|
||||
|
||||
if(a.getAccountType().equals(AccountType.SESSION)) {
|
||||
@ -396,7 +392,6 @@ public class GuiAccountManager extends GuiScreen {
|
||||
|
||||
@Override
|
||||
public void keyTyped(char typedChar, int keyCode) {
|
||||
|
||||
if(showAddAccount) {
|
||||
usernameField.textboxKeyTyped(typedChar, keyCode);
|
||||
}
|
||||
@ -404,7 +399,7 @@ public class GuiAccountManager extends GuiScreen {
|
||||
if(keyCode == 1) {
|
||||
if(showAddAccount) {
|
||||
showAddAccount = false;
|
||||
}else {
|
||||
} else {
|
||||
Athena.INSTANCE.getAccountManager().save();
|
||||
closeAccountManager = true;
|
||||
}
|
||||
@ -416,12 +411,10 @@ public class GuiAccountManager extends GuiScreen {
|
||||
throw new IllegalArgumentException("Invalid UUID length. It should be 32 characters long.");
|
||||
}
|
||||
|
||||
String formattedUUID = uuidStr.substring(0, 8) + "-" +
|
||||
return uuidStr.substring(0, 8) + "-" +
|
||||
uuidStr.substring(8, 12) + "-" +
|
||||
uuidStr.substring(12, 16) + "-" +
|
||||
uuidStr.substring(16, 20) + "-" +
|
||||
uuidStr.substring(20);
|
||||
|
||||
return formattedUUID;
|
||||
}
|
||||
}
|
@ -6,9 +6,11 @@ import fr.litarvan.openauth.microsoft.MicrosoftAuthenticator;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.Session;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import rip.athena.api.skin.Skin;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.api.account.Account;
|
||||
import rip.athena.api.account.AccountType;
|
||||
import rip.athena.client.ui.menu.AthenaMenu;
|
||||
import rip.athena.client.ui.menu.altmanager.Panel;
|
||||
import rip.athena.client.ui.menu.altmanager.button.AltButton;
|
||||
import rip.athena.client.utils.animations.Animation;
|
||||
@ -108,12 +110,28 @@ public class LoginPanel extends Panel {
|
||||
actionButton.setClickAction(() -> {
|
||||
if (actionButton.getName().equals("Offline Login")) {
|
||||
TextField cracked = textFields.get(0);
|
||||
|
||||
if(cracked.getText() == null) {
|
||||
status = "Username field is null";
|
||||
return;
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
Athena.INSTANCE.getLog().info("Logged into " + cracked.getText());
|
||||
|
||||
Athena.INSTANCE.getSkinManager().getSkins().add(new Skin(cracked.getText()));
|
||||
Athena.INSTANCE.getSkinManager().setCurrentSkin(Athena.INSTANCE.getSkinManager().getSkinByUsername(cracked.getText()));
|
||||
Athena.INSTANCE.getSkinManager().save();
|
||||
|
||||
// Send to main menu
|
||||
Minecraft.getMinecraft().displayGuiScreen(new AthenaMenu());
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@ -129,7 +147,7 @@ public class LoginPanel extends Panel {
|
||||
|
||||
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 by entering login details and clicking here", microX + 10, microsoftY + 23, -1);
|
||||
FontManager.getProductSansRegular(16).drawString("Enter details in fields above and click here to login", microX + 10, microsoftY + 23, -1);
|
||||
|
||||
float logoSize = 22;
|
||||
DrawUtils.drawMicrosoftLogo(microX + microWidth - (10 + logoSize), microsoftY + (microHeight / 2f) - (logoSize / 2f), logoSize, 1.5f);
|
||||
@ -155,10 +173,7 @@ public class LoginPanel extends Panel {
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
Athena.INSTANCE.getLog().info(email + password);
|
||||
MicrosoftAuthResult acc = authenticator.loginWithCredentials(email, password);
|
||||
|
||||
Minecraft.getMinecraft().session = new Session(acc.getProfile().getName(), acc.getProfile().getId(), acc.getAccessToken(), "legacy");
|
||||
|
||||
status = "Logged into " + acc.getProfile().getName();
|
||||
@ -166,7 +181,16 @@ public class LoginPanel extends Panel {
|
||||
Athena.INSTANCE.getAccountManager().setCurrentAccount(Athena.INSTANCE.getAccountManager().getAccountByUsername(acc.getProfile().getName()));
|
||||
Athena.INSTANCE.getAccountManager().isFirstLogin = false;
|
||||
Athena.INSTANCE.getAccountManager().save();
|
||||
Athena.INSTANCE.getLog().info("Success: Logged into " + acc.getProfile().getName());
|
||||
Athena.INSTANCE.getLog().info("Logged into " + acc.getProfile().getName());
|
||||
|
||||
if(Athena.INSTANCE.getSkinManager().getSkinByUsername(acc.getProfile().getName()) == null) {
|
||||
Athena.INSTANCE.getSkinManager().getSkins().add(new Skin(acc.getProfile().getName()));
|
||||
Athena.INSTANCE.getSkinManager().setCurrentSkin(Athena.INSTANCE.getSkinManager().getSkinByUsername(acc.getProfile().getName()));
|
||||
Athena.INSTANCE.getSkinManager().save();
|
||||
}
|
||||
|
||||
// Send to main menu
|
||||
Minecraft.getMinecraft().displayGuiScreen(new AthenaMenu());
|
||||
|
||||
} catch (MicrosoftAuthenticationException e) {
|
||||
e.printStackTrace();
|
||||
|
304
src/main/java/rip/athena/client/ui/menu/skin/GuiSkinManager.java
Normal file
304
src/main/java/rip/athena/client/ui/menu/skin/GuiSkinManager.java
Normal file
@ -0,0 +1,304 @@
|
||||
package rip.athena.client.ui.menu.skin;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Session;
|
||||
import rip.athena.api.skin.Skin;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.ui.menu.altmanager.button.AltTextField;
|
||||
import rip.athena.client.utils.GLUtils;
|
||||
import rip.athena.client.utils.MouseUtils;
|
||||
import rip.athena.client.utils.animations.Animation;
|
||||
import rip.athena.client.utils.animations.impl.EaseBackIn;
|
||||
import rip.athena.client.utils.animations.simple.SimpleAnimation;
|
||||
import rip.athena.client.utils.font.FontManager;
|
||||
import rip.athena.client.utils.render.*;
|
||||
import rip.athena.client.utils.time.TimerUtil;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Athena Development
|
||||
* @project Athena-Client
|
||||
* @date 6/10/2023
|
||||
*/
|
||||
public class GuiSkinManager extends GuiScreen {
|
||||
|
||||
private GuiScreen prevGuiScreen;
|
||||
|
||||
private Animation showAccountAnimation;
|
||||
private boolean closeAccountManager;
|
||||
private boolean showAddAccount;
|
||||
|
||||
private SimpleAnimation clickAnimation = new SimpleAnimation(0.0F);
|
||||
private boolean click;
|
||||
private TimerUtil clickTimer = new TimerUtil();
|
||||
|
||||
public ResourceLocation faceTexture;
|
||||
|
||||
private SimpleAnimation showAddAccountAnimation = new SimpleAnimation(0.0F);
|
||||
|
||||
private boolean delete;
|
||||
private Skin deleteAccount;
|
||||
|
||||
private double scrollY;
|
||||
private SimpleAnimation scrollAnimation = new SimpleAnimation(0.0F);
|
||||
|
||||
private SimpleAnimation addOpacityAnimation = new SimpleAnimation(0.0F);
|
||||
|
||||
private AltTextField usernameField;
|
||||
private SimpleAnimation selectAnimation = new SimpleAnimation(0.0F);
|
||||
|
||||
private List<ClickEffect> clickEffects = new ArrayList<>();
|
||||
|
||||
public GuiSkinManager(GuiScreen prevGuiScreen) {
|
||||
this.prevGuiScreen = prevGuiScreen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
|
||||
|
||||
int addX = 340;
|
||||
int addY = 85;
|
||||
int x = sr.getScaledWidth() / 2 - addX;
|
||||
int y = sr.getScaledHeight() / 2 - addY;
|
||||
|
||||
showAddAccount = false;
|
||||
closeAccountManager = false;
|
||||
showAccountAnimation = new EaseBackIn(450, 1, 1.5F);
|
||||
usernameField = new AltTextField(1, mc.fontRendererObj, x + 38, y + 65, 220, 22, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
click = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
|
||||
|
||||
int addX = 140;
|
||||
int addY = 85;
|
||||
int x = sr.getScaledWidth() / 2 - addX - 50;
|
||||
int y = sr.getScaledHeight() / 2 - addY;
|
||||
|
||||
int width = addX * 2;
|
||||
int height = addY * 2;
|
||||
int offsetY = 36;
|
||||
int index = 1;
|
||||
|
||||
if(closeAccountManager) {
|
||||
mc.displayGuiScreen(prevGuiScreen);
|
||||
}
|
||||
|
||||
if(click) {
|
||||
if(clickTimer.hasTimeElapsed(150)) {
|
||||
click = false;
|
||||
}
|
||||
} else {
|
||||
clickTimer.reset();
|
||||
}
|
||||
|
||||
DrawUtils.drawImage(new ResourceLocation("Athena/menu/wallpaper3.png"), 0, 0, sr.getScaledWidth(), sr.getScaledHeight());
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
RoundedUtils.drawGradientRound(x + width + 10, y, 20 + FontManager.getProductSansRegular(22).width("Active Skin | " + Athena.INSTANCE.getSkinManager().getCurrentSkin().getUsername()), height, 12, ColorUtil.getClientColor(0, 255), ColorUtil.getClientColor(90, 255), ColorUtil.getClientColor(180, 255), ColorUtil.getClientColor(270, 255));
|
||||
RoundedUtils.drawRound(x + width + 11, y + 1, 18 + FontManager.getProductSansRegular(22).width("Active Skin | " + Athena.INSTANCE.getSkinManager().getCurrentSkin().getUsername()), height - 2, 12, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getFirstColor()));
|
||||
FontManager.getProductSansRegular(22).drawString("Active Skin | " + Athena.INSTANCE.getSkinManager().getCurrentSkin().getUsername(), x + width + 20, y + 10, Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
|
||||
RoundedUtils.drawGradientRound(x, y, width, height, 12, 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, 12, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getFirstColor()));
|
||||
FontManager.getProductSansRegular(22).drawString("Skin Manager", x + 10, y + 10, 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 - 30.5F, 6, Color.WHITE);
|
||||
StencilUtils.readStencilBuffer(1);
|
||||
|
||||
showAddAccountAnimation.setAnimation(showAddAccount ? 0 : 140, 16);
|
||||
|
||||
GLUtils.startTranslate(0, (140 - showAddAccountAnimation.getValue()));
|
||||
|
||||
if(Athena.INSTANCE.getSkinManager().getSkins().isEmpty()) {
|
||||
FontManager.getProductSansRegular(22).drawString("Empty...", sr.getScaledWidth() / 2 - (FontManager.getProductSansRegular(22).height() / 2), (sr.getScaledHeight() / 2) - (FontManager.getProductSansRegular(22).height() / 2), Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTextColor());
|
||||
}
|
||||
|
||||
for(Skin a : Athena.INSTANCE.getSkinManager().getSkins()) {
|
||||
RoundedUtils.drawRound(x + 9, y + offsetY + scrollAnimation.getValue() - 1, width - 18, 100, 4, new Color(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getSecondColor()));
|
||||
RoundedUtils.drawRound(x + 10, y + offsetY + scrollAnimation.getValue(), width - 20, 98, 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));
|
||||
|
||||
mc.getTextureManager().bindTexture(new ResourceLocation("Athena/menu/head.png"));
|
||||
|
||||
GlStateManager.enableBlend();
|
||||
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 - 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)) {
|
||||
a.isDone = true;
|
||||
a.getTimer().reset();
|
||||
}
|
||||
} else {
|
||||
a.getTimer().reset();
|
||||
}
|
||||
|
||||
offsetY+=120;
|
||||
index++;
|
||||
}
|
||||
|
||||
GLUtils.stopTranslate();
|
||||
StencilUtils.uninitStencilBuffer();
|
||||
GLUtils.stopScale();
|
||||
|
||||
final MouseUtils.Scroll scroll = MouseUtils.scroll();
|
||||
|
||||
if(scroll != null) {
|
||||
switch (scroll) {
|
||||
case DOWN:
|
||||
if(index > 4){
|
||||
if(scrollY > -((index - 3.5) * 220)) {
|
||||
scrollY -=40;
|
||||
}
|
||||
|
||||
if(index > 4) {
|
||||
if(scrollY < -((index - 3.8) * 220)) {
|
||||
scrollY = -((index - 3.9) * 220);
|
||||
}
|
||||
}
|
||||
}else {
|
||||
scrollY = 0;
|
||||
}
|
||||
break;
|
||||
case UP:
|
||||
if(scrollY > 0) {
|
||||
scrollY = -18;
|
||||
}
|
||||
|
||||
if(scrollY < -0) {
|
||||
scrollY +=20;
|
||||
}else {
|
||||
if(index > 5) {
|
||||
scrollY = 10;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
scrollAnimation.setAnimation((float) scrollY, 10);
|
||||
|
||||
if(delete) {
|
||||
Athena.INSTANCE.getSkinManager().getSkins().remove(deleteAccount);
|
||||
scrollY = 0;
|
||||
delete = false;
|
||||
}
|
||||
|
||||
if(clickEffects.size() > 0) {
|
||||
Iterator<ClickEffect> clickEffectIterator= clickEffects.iterator();
|
||||
while(clickEffectIterator.hasNext()){
|
||||
ClickEffect clickEffect = clickEffectIterator.next();
|
||||
clickEffect.draw();
|
||||
if (clickEffect.canRemove()) clickEffectIterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int mouseX, int mouseY, int mouseButton) {
|
||||
ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
|
||||
|
||||
int addX = 140;
|
||||
int addY = 85;
|
||||
int x = sr.getScaledWidth() / 2 - addX;
|
||||
int y = sr.getScaledHeight() / 2 - addY;
|
||||
int width = addX * 2;
|
||||
int offsetY = 36;
|
||||
|
||||
ClickEffect clickEffect = new ClickEffect(mouseX, mouseY);
|
||||
clickEffects.add(clickEffect);
|
||||
|
||||
if(mouseButton == 0) {
|
||||
if(MouseUtils.isInside(mouseX, mouseY, x , y + 206, width, 25)) {
|
||||
mc.displayGuiScreen(prevGuiScreen);
|
||||
}
|
||||
|
||||
usernameField.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
|
||||
if(MouseUtils.isInside(mouseX, mouseY, (x + width) - 135, y + 91, 100, 20)) {
|
||||
if(!usernameField.getText().isEmpty()) {
|
||||
Athena.INSTANCE.getSkinManager().getSkins().add(new Skin(usernameField.getText()));
|
||||
mc.session = new Session(usernameField.getText(), "0", "0", "legacy");
|
||||
showAddAccount = false;
|
||||
usernameField.setText("");
|
||||
}
|
||||
}
|
||||
|
||||
for(Skin a : Athena.INSTANCE.getSkinManager().getSkins()) {
|
||||
if(MouseUtils.isInside(mouseX, mouseY, x + width - 36, y + offsetY + 7 + scrollAnimation.getValue(), 20, 20)) {
|
||||
deleteAccount = a;
|
||||
delete = true;
|
||||
}
|
||||
|
||||
// Clear info for other accounts
|
||||
a.setInfo("");
|
||||
|
||||
if(!showAddAccount) {
|
||||
if(MouseUtils.isInside(mouseX, mouseY, x + 10, y + offsetY + scrollAnimation.getValue(), width - 50, 98)) {
|
||||
a.isDone = false;
|
||||
a.setInfo("clicked");
|
||||
Athena.INSTANCE.getSkinManager().setCurrentSkin(a);
|
||||
|
||||
// TODO: send change skin request based on username
|
||||
}
|
||||
}
|
||||
|
||||
offsetY+=120;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(char typedChar, int keyCode) {
|
||||
usernameField.textboxKeyTyped(typedChar, keyCode);
|
||||
|
||||
if(keyCode == 1) {
|
||||
if(showAddAccount) {
|
||||
showAddAccount = false;
|
||||
} else {
|
||||
Athena.INSTANCE.getSkinManager().save();
|
||||
closeAccountManager = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String formatMinecraftUUID(String uuidStr) {
|
||||
if (uuidStr.length() != 32) {
|
||||
throw new IllegalArgumentException("Invalid UUID length. It should be 32 characters long.");
|
||||
}
|
||||
|
||||
return uuidStr.substring(0, 8) + "-" +
|
||||
uuidStr.substring(8, 12) + "-" +
|
||||
uuidStr.substring(12, 16) + "-" +
|
||||
uuidStr.substring(16, 20) + "-" +
|
||||
uuidStr.substring(20);
|
||||
}
|
||||
}
|
@ -7,8 +7,6 @@ import java.util.HashMap;
|
||||
|
||||
public class FontManager {
|
||||
|
||||
// FOR ANYONE WHO VISITS THIS CLASS: CREATE A HASHMAP FOR EACH FONT AND BASICALLY COPY THE GIVEN METHOD
|
||||
|
||||
private static final HashMap<Integer, FontRenderer> INTERNATIONAL = new HashMap<>();
|
||||
private static final HashMap<Integer, FontRenderer> MONTSERRAT_MAP = new HashMap<>();
|
||||
private static final HashMap<Integer, FontRenderer> ROBOTO_MAP = new HashMap<>();
|
||||
@ -55,7 +53,6 @@ public class FontManager {
|
||||
|
||||
private static final HashMap<Integer, FontRenderer> HACK = new HashMap<>();
|
||||
|
||||
// COPY THIS METHOD FOR EACH METHOD AND REPLACE FONTNAME WITH THE USED FONT FILE NAME
|
||||
public static Font getMontserratMedium(final int size) {
|
||||
return get(MONTSERRAT_MAP, size, "Montserrat-Medium", true, true);
|
||||
}
|
||||
|
@ -11,6 +11,9 @@ import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL13;
|
||||
import rip.athena.client.Athena;
|
||||
import rip.athena.client.theme.impl.PrimaryTheme;
|
||||
import rip.athena.client.ui.clickgui.IngameMenu;
|
||||
import rip.athena.client.utils.font.Font;
|
||||
import rip.athena.client.utils.shader.ShaderUtil;
|
||||
|
||||
@ -180,7 +183,11 @@ public enum DrawUtils {
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.enableAlpha();
|
||||
GlStateManager.alphaFunc(GL11.GL_GREATER, 0.0F);
|
||||
color(-1);
|
||||
if(Athena.INSTANCE.getThemeManager().getPrimaryTheme().getTheme().equals(PrimaryTheme.WHITE.getTheme()) && Minecraft.getMinecraft().currentScreen instanceof IngameMenu) {
|
||||
color(new Color(0,0,0, 255).getRGB());
|
||||
} else {
|
||||
color(-1);
|
||||
}
|
||||
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(image);
|
||||
Gui.drawModalRectWithCustomSizedTexture(x, y, 0, 0, width, height, width, height);
|
||||
|
@ -1,120 +1,157 @@
|
||||
[17:10:32] [Client thread/INFO]: Setting user: Player329
|
||||
[17:10:32] [Client thread/INFO]: (Session ID is token:0:Player329)
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] *** Reflector Forge ***
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.Attributes
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: mods.betterfoliage.client.BetterFoliageClient
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.asm.transformers.BlamingTransformer
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.ChunkWatchEvent$UnWatch
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.relauncher.CoreModManager
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.DimensionManager
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Pre
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Post
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$CameraSetup
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$FogColors
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.EventBus
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event$Result
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.ExtendedBlockState
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.FMLClientHandler
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.FMLCommonHandler
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.biome.BiomeGenBase.getWaterColorMultiplier
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addDestroyEffects
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addHitEffects
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canCreatureSpawn
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canRenderInLayer
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.doesSideBlockRendering
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getBedDirection
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getExtendedState
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.hasTileEntity
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isAir
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBed
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBedFoot
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isSideSolid
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.canRiderInteract
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.captureDrops
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.capturedDrops
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRenderInPass
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRiderSit
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.ForgeEventFactory
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeHooks
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ForgeHooksClient
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getDurabilityForDisplay
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getModel
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.onEntitySwing
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.shouldCauseReequipAnimation
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.showDurabilityBar
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.ItemRecord.getRecordResource
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeModContainer
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.potion.PotionEffect.isCurativeItem
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.canRenderBreaking
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.getRenderBoundingBox
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.hasFastRenderer
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.shouldRenderInPass
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.preDrawBatch
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.drawBatch
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.preDraw
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.postDraw
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.countEntities
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.getPerWorldStorage
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getCloudRenderer
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getSkyRenderer
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getWeatherRenderer
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.GuiModList
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.IColoredBakedQuad
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.IExtendedBlockState
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.IRenderHandler
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ISmartBlockModel
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ItemModelMesherForge
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraft.launchwrapper.Launch
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.pipeline.LightUtil
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.MinecraftForge
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.MinecraftForgeClient
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ModelLoader
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderBlockOverlayEvent$OverlayType
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.registry.RenderingRegistry
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderItemInFrameEvent
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Pre
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Post
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Pre
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Post
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.SplashProgress
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.WorldEvent$Load
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] *** Reflector Vanilla ***
|
||||
[17:10:32] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: optifine.OptiFineClassTransformer
|
||||
[17:10:33] [Client thread/WARN]: [Athena] Tried accessing non-existing module: theme
|
||||
[17:10:33] [Client thread/WARN]: [Athena] Tried accessing non-existing module: cape
|
||||
[17:10:33] [Client thread/INFO]: LWJGL Version: 2.9.4
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine]
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] OptiFine_1.8.8_HD_U_H8
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] Build: null
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] OS: Windows 10 (amd64) version 10.0
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] Java: 1.8.0_202, Oracle Corporation
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] LWJGL: 2.9.4
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] OpenGL: Intel(R) Iris(R) Xe Graphics, version 4.6.0 - Build 31.0.101.4255, Intel
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] OpenGL Version: 4.6.0
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] OpenGL Fancy fog: Not available (GL_NV_fog_distance)
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] Maximum texture size: 16384x16384
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] ShadersMod version: 2.4.12
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] OpenGL Version: 4.6.0 - Build 31.0.101.4255
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] Vendor: Intel
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] Renderer: Intel(R) Iris(R) Xe Graphics
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] Capabilities: 2.0 2.1 3.0 3.2 4.0
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] GL_MAX_DRAW_BUFFERS: 8
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] GL_MAX_COLOR_ATTACHMENTS_EXT: 8
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] GL_MAX_TEXTURE_IMAGE_UNITS: 32
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] Load ShadersMod configuration.
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] Shaders can not be loaded, Fast Render is enabled.
|
||||
[17:10:33] [Client thread/INFO]: [Shaders] No shaderpack loaded.
|
||||
[17:10:33] [Client thread/INFO]: Reloading ResourceManager: Default, ! §bPotfast 5kay.zip
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] *** Reloading textures ***
|
||||
[17:10:33] [Client thread/INFO]: [OptiFine] Resource packs: ! §bPotfast 5kay.zip
|
||||
[17:10:33] [Sound Library Loader/INFO]: Starting up SoundSystem...
|
||||
[17:10:34] [Thread-7/INFO]: Initializing LWJGL OpenAL
|
||||
[17:10:34] [Thread-7/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
|
||||
[17:10:35] [Client thread/INFO]: [OptiFine] Multitexture: false
|
||||
[17:10:35] [Thread-7/INFO]: OpenAL initialized.
|
||||
[17:10:35] [Sound Library Loader/INFO]: Sound engine started
|
||||
[17:10:35] [Client thread/INFO]: Created: 2048x2048 textures-atlas
|
||||
[17:10:35] [Client thread/INFO]: [OptiFine] *** Reloading custom textures ***
|
||||
[17:10:35] [Client thread/INFO]: [OptiFine] Enable face culling: acacia_leaves, birch_leaves, dark_oak_leaves, jungle_leaves, oak_leaves, spruce_leaves
|
||||
[10:47:02] [Client thread/INFO]: Setting user: Player299
|
||||
[10:47:02] [Client thread/INFO]: (Session ID is token:0:Player299)
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] *** Reflector Forge ***
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.Attributes
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: mods.betterfoliage.client.BetterFoliageClient
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.asm.transformers.BlamingTransformer
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.ChunkWatchEvent$UnWatch
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.relauncher.CoreModManager
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.DimensionManager
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Pre
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Post
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$CameraSetup
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$FogColors
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.EventBus
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event$Result
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.ExtendedBlockState
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.FMLClientHandler
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.FMLCommonHandler
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.biome.BiomeGenBase.getWaterColorMultiplier
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addDestroyEffects
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addHitEffects
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canCreatureSpawn
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canRenderInLayer
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.doesSideBlockRendering
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getBedDirection
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getExtendedState
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.hasTileEntity
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isAir
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBed
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBedFoot
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isSideSolid
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.canRiderInteract
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.captureDrops
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.capturedDrops
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRenderInPass
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRiderSit
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.ForgeEventFactory
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeHooks
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ForgeHooksClient
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getDurabilityForDisplay
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getModel
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.onEntitySwing
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.shouldCauseReequipAnimation
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.showDurabilityBar
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.ItemRecord.getRecordResource
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeModContainer
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.potion.PotionEffect.isCurativeItem
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.canRenderBreaking
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.getRenderBoundingBox
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.hasFastRenderer
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.shouldRenderInPass
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.preDrawBatch
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.drawBatch
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.preDraw
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.postDraw
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.countEntities
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.getPerWorldStorage
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getCloudRenderer
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getSkyRenderer
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getWeatherRenderer
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.GuiModList
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.IColoredBakedQuad
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.IExtendedBlockState
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.IRenderHandler
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ISmartBlockModel
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ItemModelMesherForge
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraft.launchwrapper.Launch
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.pipeline.LightUtil
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.MinecraftForge
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.MinecraftForgeClient
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ModelLoader
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderBlockOverlayEvent$OverlayType
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.registry.RenderingRegistry
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderItemInFrameEvent
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Pre
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Post
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Pre
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Post
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.SplashProgress
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.WorldEvent$Load
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] *** Reflector Vanilla ***
|
||||
[10:47:03] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: optifine.OptiFineClassTransformer
|
||||
[10:47:04] [Client thread/ERROR]: [Athena] Failed to load cape asset, missing. java.nio.file.NoSuchFileException: none
|
||||
[10:47:04] [Client thread/ERROR]: [Athena] Failed to load cape asset, missing. java.nio.file.NoSuchFileException: Athena\cosmetics\capes\staff.png
|
||||
[10:47:04] [Client thread/ERROR]: [Athena] Failed to load config default, improper json.org.json.JSONException: A JSONObject text must begin with '{' at 3 [character 1 line 2]
|
||||
[10:47:04] [Client thread/INFO]: LWJGL Version: 2.9.4
|
||||
[10:47:04] [Thread-8/WARN]: [Athena] Tried accessing non-existing cape: <html>
|
||||
<head><title>301 Moved Permanently</title></head>
|
||||
<body>
|
||||
<center><h1>301 Moved Permanently</h1></center>
|
||||
<hr><center>nginx/1.18.0 (Ubuntu)</center>
|
||||
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v52afc6f149f6479b8c77fa569edb01181681764108816" integrity="sha512-jGCTpDpBAYDGNYR5ztKt4BQPGef1P0giN6ZGVUi835kFF88FOmmn8jBQWNgrNd8g/Yu421NdgWhwQoaOPFflDw==" data-cf-beacon='{"rayId":"7e47898a0eb00b69"
|
||||
[10:47:04] [Thread-8/WARN]: [Athena] Tried accessing non-existing cape: "version":"2023.4.0"
|
||||
[10:47:04] [Thread-8/WARN]: [Athena] Tried accessing non-existing cape: "r":1
|
||||
[10:47:04] [Thread-8/WARN]: [Athena] Tried accessing non-existing cape: "b":1
|
||||
[10:47:04] [Thread-8/WARN]: [Athena] Tried accessing non-existing cape: "token":"5ffa317166614d2893363e4b59c682a5"
|
||||
[10:47:04] [Thread-8/WARN]: [Athena] Tried accessing non-existing cape: "si":100}' crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine]
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] OptiFine_1.8.8_HD_U_H8
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] Build: null
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] OS: Windows 10 (amd64) version 10.0
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] Java: 1.8.0_202, Oracle Corporation
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] LWJGL: 2.9.4
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] OpenGL: Intel(R) Iris(R) Xe Graphics, version 4.6.0 - Build 31.0.101.4255, Intel
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] OpenGL Version: 4.6.0
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] OpenGL Fancy fog: Not available (GL_NV_fog_distance)
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] Maximum texture size: 16384x16384
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] ShadersMod version: 2.4.12
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] OpenGL Version: 4.6.0 - Build 31.0.101.4255
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] Vendor: Intel
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] Renderer: Intel(R) Iris(R) Xe Graphics
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] Capabilities: 2.0 2.1 3.0 3.2 4.0
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] GL_MAX_DRAW_BUFFERS: 8
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] GL_MAX_COLOR_ATTACHMENTS_EXT: 8
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] GL_MAX_TEXTURE_IMAGE_UNITS: 32
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] Load ShadersMod configuration.
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] Shaders can not be loaded, Fast Render is enabled.
|
||||
[10:47:04] [Client thread/INFO]: [Shaders] No shaderpack loaded.
|
||||
[10:47:04] [Client thread/INFO]: Reloading ResourceManager: Default, ! §bPotfast 5kay.zip
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] *** Reloading textures ***
|
||||
[10:47:04] [Client thread/INFO]: [OptiFine] Resource packs: ! §bPotfast 5kay.zip
|
||||
[10:47:04] [Sound Library Loader/INFO]: Starting up SoundSystem...
|
||||
[10:47:05] [Thread-9/INFO]: Initializing LWJGL OpenAL
|
||||
[10:47:05] [Thread-9/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
|
||||
[10:47:05] [Client thread/INFO]: [OptiFine] Multitexture: false
|
||||
[10:47:06] [Thread-9/INFO]: OpenAL initialized.
|
||||
[10:47:06] [Sound Library Loader/INFO]: Sound engine started
|
||||
[10:47:06] [Client thread/INFO]: Created: 2048x2048 textures-atlas
|
||||
[10:47:07] [Client thread/INFO]: [OptiFine] *** Reloading custom textures ***
|
||||
[10:47:07] [Client thread/INFO]: [OptiFine] Enable face culling: acacia_leaves, birch_leaves, dark_oak_leaves, jungle_leaves, oak_leaves, spruce_leaves
|
||||
[10:47:13] [Server thread/INFO]: Starting integrated minecraft server version 1.8.8
|
||||
[10:47:13] [Server thread/INFO]: Generating keypair
|
||||
[10:47:13] [Server thread/INFO]: Preparing start region for level 0
|
||||
[10:47:13] [Server thread/INFO]: Changing view distance to 8, from 10
|
||||
[10:47:13] [Server thread/INFO]: ziuedev[local:E:ddd721d2] logged in with entity id 115 at (899.1709840730459, 65.0, 633.9132997148439)
|
||||
[10:47:13] [Server thread/INFO]: ziuedev joined the game
|
||||
[10:48:41] [Server thread/INFO]: Saving and pausing game...
|
||||
[10:48:41] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Overworld
|
||||
[10:48:41] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Nether
|
||||
[10:48:41] [Server thread/INFO]: Saving chunks for level 'mcpworld'/The End
|
||||
[10:48:50] [Server thread/INFO]: Saving and pausing game...
|
||||
[10:48:51] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Overworld
|
||||
[10:48:51] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Nether
|
||||
[10:48:51] [Server thread/INFO]: Saving chunks for level 'mcpworld'/The End
|
||||
[10:49:00] [Server thread/INFO]: Saving and pausing game...
|
||||
[10:49:00] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Overworld
|
||||
[10:49:00] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Nether
|
||||
[10:49:00] [Server thread/INFO]: Saving chunks for level 'mcpworld'/The End
|
||||
[10:49:01] [Server thread/INFO]: Saving and pausing game...
|
||||
[10:49:01] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Overworld
|
||||
[10:49:01] [Server thread/INFO]: Saving chunks for level 'mcpworld'/Nether
|
||||
[10:49:01] [Server thread/INFO]: Saving chunks for level 'mcpworld'/The End
|
||||
[10:54:00] [Client Shutdown Thread/INFO]: Stopping server
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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 one or more lines are too long
@ -1 +0,0 @@
|
||||
default
|
@ -1 +1 @@
|
||||
[{"name":"etert","uuid":"a12f6b57-b314-305d-a4de-14e5b61e7068","expiresOn":"2023-08-04 14:43:35 +0200"},{"name":"Player831","uuid":"7daaf105-640b-34bc-83e6-6c045d1c9591","expiresOn":"2023-08-02 17:44:01 +0200"},{"name":"ziue","uuid":"ae330cf9-3749-3ca0-ba31-8447e2a2786f","expiresOn":"2023-08-01 16:58:31 +0200"},{"name":"Player995","uuid":"93bfa0b6-cc14-3c0c-8efa-0bcc48245274","expiresOn":"2023-08-02 16:21:08 +0200"},{"name":"ziue","uuid":"74e89738-6c9e-4f59-83ef-d365849e6049","expiresOn":"2023-08-01 19:27:12 +0200"},{"name":"Player665","uuid":"5daba5f8-966b-3165-8089-02aaa9b1e740","expiresOn":"2023-08-02 11:22:29 +0200"},{"name":"Player119","uuid":"8fbcb74c-bd8d-3181-a022-3c858a10477d","expiresOn":"2023-08-02 10:47:11 +0200"},{"name":"Player504","uuid":"eb08048d-a3b9-3008-984c-fcc8bb7d8893","expiresOn":"2023-08-02 10:04:23 +0200"},{"name":"Player311","uuid":"d4625839-68ff-34de-8208-19f0e474753e","expiresOn":"2023-08-02 16:20:03 +0200"}]
|
||||
[{"name":"ziuedev","uuid":"a588da93-fe7a-3a00-87de-d96fd4924107","expiresOn":"2023-08-10 10:47:13 +0200"},{"name":"Player311","uuid":"d4625839-68ff-34de-8208-19f0e474753e","expiresOn":"2023-08-02 16:20:03 +0200"},{"name":"Player119","uuid":"8fbcb74c-bd8d-3181-a022-3c858a10477d","expiresOn":"2023-08-02 10:47:11 +0200"},{"name":"Player665","uuid":"5daba5f8-966b-3165-8089-02aaa9b1e740","expiresOn":"2023-08-02 11:22:29 +0200"},{"name":"ziue","uuid":"74e89738-6c9e-4f59-83ef-d365849e6049","expiresOn":"2023-08-01 19:27:12 +0200"},{"name":"ziue","uuid":"ae330cf9-3749-3ca0-ba31-8447e2a2786f","expiresOn":"2023-08-01 16:58:31 +0200"},{"name":"Player831","uuid":"7daaf105-640b-34bc-83e6-6c045d1c9591","expiresOn":"2023-08-02 17:44:01 +0200"},{"name":"Player995","uuid":"93bfa0b6-cc14-3c0c-8efa-0bcc48245274","expiresOn":"2023-08-02 16:21:08 +0200"},{"name":"Player504","uuid":"eb08048d-a3b9-3008-984c-fcc8bb7d8893","expiresOn":"2023-08-02 10:04:23 +0200"},{"name":"etert","uuid":"a12f6b57-b314-305d-a4de-14e5b61e7068","expiresOn":"2023-08-08 16:23:11 +0200"}]
|
Loading…
Reference in New Issue
Block a user