diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index f5a0c5d..3223715 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -21,5 +21,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index ba3ff36..ca32c1a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,13 +4,16 @@ plugins {
}
group 'tech.nevets.jaml'
-version '0.1.0'
+version '0.2.0'
repositories {
mavenCentral()
maven {
url 'https://jitpack.io'
}
+ maven {
+ url 'https://repo.nevets.tech/repository/maven-public'
+ }
}
sourceCompatibility = targetCompatibility = '17'
@@ -27,6 +30,7 @@ application {
dependencies {
implementation 'me.carleslc.Simple-YAML:Simple-Yaml:1.7.3'
implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'net.arikia.dev:drpc:1.0'
}
jar {
diff --git a/src/main/java/tech/nevets/jaml/Config.java b/src/main/java/tech/nevets/jaml/Config.java
index 9711aba..43f0960 100644
--- a/src/main/java/tech/nevets/jaml/Config.java
+++ b/src/main/java/tech/nevets/jaml/Config.java
@@ -23,8 +23,11 @@ public class Config {
e.printStackTrace();
}
+ ymlFile.addDefault("java.jdk8", "");
+ ymlFile.addDefault("java.jdk16", "");
+ ymlFile.addDefault("java.jdk17", "");
ymlFile.addDefault("launcher.path","default");
- ymlFile.setComment("launcher.path","Path to JAML files\n" + "default: %appdata%\\.jaml\\");
+ ymlFile.setComment("launcher.path","Path to JAML files\n" + "default: " + JAML.path.toString());
ymlFile.addDefault("launcher.verbose", false);
ymlFile.setComment("launcher.verbose", "If true, will print out all the messages");
ymlFile.addDefault("launcher.version", "0.1.0");
diff --git a/src/main/java/tech/nevets/jaml/DiscordRP.java b/src/main/java/tech/nevets/jaml/DiscordRP.java
new file mode 100644
index 0000000..0aa15d4
--- /dev/null
+++ b/src/main/java/tech/nevets/jaml/DiscordRP.java
@@ -0,0 +1,44 @@
+package tech.nevets.jaml;
+
+import net.arikia.dev.drpc.DiscordEventHandlers;
+import net.arikia.dev.drpc.DiscordRPC;
+import net.arikia.dev.drpc.DiscordRichPresence;
+
+public class DiscordRP {
+ //TODO Make this actually work
+
+ private boolean running = true;
+ private long created = 0;
+
+ public void start() {
+ this.created = System.currentTimeMillis();
+
+ DiscordEventHandlers handlers = new DiscordEventHandlers.Builder().setReadyEventHandler((user) -> {
+ System.out.println("Welcome " + user.username + "#" + user.discriminator + ".");
+ update("Starting...", "");
+ }).build();
+
+ DiscordRPC.discordInitialize("942986640043941938", handlers, true);
+ //DiscordRPC.discordRegister("942986640043941938", "");
+
+ new Thread(() -> {
+ while (running) {
+ DiscordRPC.discordRunCallbacks();
+ }
+ }).start();
+ }
+
+ public void shutdown() {
+ running = false;
+ DiscordRPC.discordShutdown();
+ }
+
+ public void update(String firstLine, String secondLine) {
+ DiscordRichPresence.Builder b = new DiscordRichPresence.Builder(secondLine);
+ b.setBigImage("large", "");
+ b.setDetails(firstLine);
+ b.setStartTimestamps(created);
+
+ DiscordRPC.discordUpdatePresence(b.build());
+ }
+}
diff --git a/src/main/java/tech/nevets/jaml/JAML.java b/src/main/java/tech/nevets/jaml/JAML.java
index 37d4441..d72e84b 100644
--- a/src/main/java/tech/nevets/jaml/JAML.java
+++ b/src/main/java/tech/nevets/jaml/JAML.java
@@ -1,21 +1,42 @@
package tech.nevets.jaml;
import org.simpleyaml.configuration.file.YamlFile;
+import tech.nevets.jaml.gui.GUI;
+import java.io.IOException;
import java.nio.file.Path;
public class JAML {
public static YamlFile config;
public static Path path;
+ public static DiscordRP drp = new DiscordRP();
- public static void main(String[] args) {
- makeDir();
+
+ public static void main(String[] args) throws InterruptedException {
+ makeDirs();
Config.loadConfig();
config = Config.getConfig();
+ try {
+ Profiles.loadProfile("test");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+// try {
+// Profiles.createProfile("testing");
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+
+ drp.start();
+
+ GUI.startGui();
+
+ drp.shutdown();
}
- private static void makeDir() {
+ private static void makeDirs() {
if (config == null) {
path = Path.of(System.getenv("APPDATA") + "\\.jaml\\");
} else {
@@ -33,5 +54,33 @@ public class JAML {
} catch (Exception e) {
System.out.println("Invalid path, please check your config.yml and try again");
}
+
+ try {
+ Path profilePath = Path.of(path + "\\profiles\\");
+ if (!profilePath.toFile().exists()) {
+ profilePath.toFile().mkdirs();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ try {
+ Path profilePath = Path.of(path + "\\assets\\");
+ if (!profilePath.toFile().exists()) {
+ profilePath.toFile().mkdirs();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
+
+// public static void initDiscord() {
+// DiscordEventHandlers handlers = new DiscordEventHandlers.Builder().setReadyEventHandler((user) -> {
+// System.out.println("Welcome " + user.username + "#" + user.discriminator + ".");
+// DiscordRichPresence.Builder presence = new DiscordRichPresence.Builder("");
+// DiscordRPC.discordUpdatePresence(presence.build());
+// }).build();
+// DiscordRPC.discordInitialize("942986640043941938", handlers, false);
+// DiscordRPC.discordRegister("942986640043941938", "");
+// }
}
\ No newline at end of file
diff --git a/src/main/java/tech/nevets/jaml/Launch.java b/src/main/java/tech/nevets/jaml/Launch.java
new file mode 100644
index 0000000..086cf84
--- /dev/null
+++ b/src/main/java/tech/nevets/jaml/Launch.java
@@ -0,0 +1,18 @@
+package tech.nevets.jaml;
+
+import java.io.File;
+import java.io.IOException;
+
+public class Launch {
+ public static void launch() {
+ String[] command = {"echo", "Hello, World!"};
+ ProcessBuilder builder = new ProcessBuilder(command);
+ builder.directory(new File(JAML.path + "\\process"));
+ try {
+ Process process = builder.start();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ System.exit(0);
+ }
+}
diff --git a/src/main/java/tech/nevets/jaml/Profile.java b/src/main/java/tech/nevets/jaml/Profile.java
new file mode 100644
index 0000000..0a47d41
--- /dev/null
+++ b/src/main/java/tech/nevets/jaml/Profile.java
@@ -0,0 +1,76 @@
+package tech.nevets.jaml;
+
+import java.nio.file.Path;
+
+public class Profile {
+ private String profileName;
+ private String email;
+ private String hashedPassword;
+ private Path gamePath;
+ private String version;
+ private String loader;
+ private Boolean offlineMode;
+
+ public Profile(){
+ }
+
+ public String getProfileName() {
+ return profileName;
+ }
+
+ public void setProfileName(String profileName) {
+ this.profileName = profileName;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getHashedPassword() {
+ return hashedPassword;
+ }
+
+ public void setHashedPassword(String hashedPassword) {
+ this.hashedPassword = hashedPassword;
+ }
+
+ public Path getGamePath() {
+ return gamePath;
+ }
+
+ public void setGamePath(Path gamePath) {
+ this.gamePath = gamePath;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getLoader() {
+ return loader;
+ }
+
+ public void setLoader (String loader) {
+ this.loader = loader;
+ }
+
+ public Boolean getOfflineMode() {
+ return offlineMode;
+ }
+
+ public void setOfflineMode(Boolean offlineMode) {
+ this.offlineMode = offlineMode;
+ }
+
+ public String toString() {
+ return "Profile [ profileName: " + profileName + ", email: " + email + ", hashedPassword: " + hashedPassword + ", gamePath: " + gamePath + ", version: " + version + ", loader: " + loader + ", offlineMode: " + offlineMode + " ]";
+ }
+}
diff --git a/src/main/java/tech/nevets/jaml/Profiles.java b/src/main/java/tech/nevets/jaml/Profiles.java
index d47ffb5..c522af3 100644
--- a/src/main/java/tech/nevets/jaml/Profiles.java
+++ b/src/main/java/tech/nevets/jaml/Profiles.java
@@ -1,22 +1,33 @@
package tech.nevets.jaml;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
+import com.google.gson.*;
+import java.io.*;
import java.nio.file.Path;
public class Profiles {
+ private static final Path profilePath = Path.of(JAML.path + "\\profiles\\");
+
+ public static void createProfile(String profileName) throws IOException {
+ Writer writer = new FileWriter(profilePath + "\\" + profileName + ".json");
+ String jsonString = "{}";
- public static void createProfile(String email, String hashedPassword, Path javaPath, Path gamePath, String version, Boolean onlineMode, String username) {
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
+
Gson gson = builder.create();
+ Profile profile = gson.fromJson(jsonString, Profile.class);
+ System.out.println(profile);
- //TODO Create and save profiles
-
+ jsonString = gson.toJson(profile);
+ System.out.println(jsonString);
+ writer.write(jsonString);
}
- public static void loadProfile() {
- //TODO Load Saved Profiles
+ public static void loadProfile(String profileName) throws FileNotFoundException {
+ BufferedReader reader = new BufferedReader(new FileReader(profilePath + "\\" + profileName + ".json"));
+ Profile profile = new Gson().fromJson(reader, Profile.class);
+
+ System.out.println(profile.getProfileName());
}
}
diff --git a/src/main/java/tech/nevets/jaml/gui/GUI.java b/src/main/java/tech/nevets/jaml/gui/GUI.java
new file mode 100644
index 0000000..8e9bb84
--- /dev/null
+++ b/src/main/java/tech/nevets/jaml/gui/GUI.java
@@ -0,0 +1,49 @@
+package tech.nevets.jaml.gui;
+
+import tech.nevets.jaml.JAML;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class GUI implements ActionListener {
+ //TODO Add important things on instead of POC
+
+ private int count = 0;
+ JFrame frame;
+ JPanel panel;
+ JButton button;
+ JLabel label;
+
+ public GUI() {
+ frame = new JFrame();
+
+ button = new JButton("Click me!");
+ button.addActionListener(this);
+
+ label = new JLabel("Number of Clicks: 0");
+
+ panel = new JPanel();
+ panel.setBorder(BorderFactory.createEmptyBorder(300, 300, 100, 300));
+ panel.setLayout(new GridLayout(0, 1));
+ panel.add(button);
+ panel.add(label);
+
+ frame.add(panel, BorderLayout.CENTER);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.setTitle("JAML");
+ frame.setIconImage(new ImageIcon(JAML.path + "\\assets\\icon.png").getImage());
+ frame.pack();
+ frame.setVisible(true);
+ }
+
+ public static void startGui() {
+ new GUI();
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ count++;
+ label.setText("Number of Clicks: " + count);
+ }
+}