diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..77c9be0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+/target
+/licenseheader.txt
+/nb-configuration.xml
+/nbactions.xml
+/.settings
+/.classpath
+/.project
+/.vscode
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..d33316e
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,62 @@
+
+
+ 4.0.0
+ electrosphere
+ highlevel-netcode-gen
+ 1.0-SNAPSHOT
+ jar
+
+ UTF-8
+ 17
+ 17
+ 2.28.0.Final
+
+
+
+
+ org.jboss.forge.roaster
+ roaster-api
+ ${version.roaster}
+
+
+ org.jboss.forge.roaster
+ roaster-jdt
+ ${version.roaster}
+ runtime
+
+
+ com.github.javaparser
+ javaparser-symbol-solver-core
+ 3.25.2
+
+
+
+
+
+
+ maven-assembly-plugin
+ 3.0.0
+
+
+ jar-with-dependencies
+
+
+
+ electrosphere.main.Main
+
+
+
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/electrosphere/main/Main.java b/src/main/java/electrosphere/main/Main.java
new file mode 100644
index 0000000..0751c79
--- /dev/null
+++ b/src/main/java/electrosphere/main/Main.java
@@ -0,0 +1,82 @@
+package electrosphere.main;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.FieldSource;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.JavaDocSource;
+
+import electrosphere.main.targets.NetcodeGenTarget;
+import electrosphere.main.targets.TargetFile;
+
+/**
+ *
+ * @author amaterasu
+ */
+public class Main {
+
+ static String[] targetFiles = new String[]{
+ "C:\\Users\\satellite\\Documents\\Renderer\\src\\main\\java\\electrosphere\\entity\\state\\IdleTree.java",
+ };
+
+ public static void main(String args[]){
+ System.out.println("Hello, world!");
+ for(String targetFilePath : targetFiles){
+ String content = "";
+ try {
+ content = Files.readString(new File(targetFilePath).toPath());
+ } catch (IOException e){
+ e.printStackTrace();
+ }
+ TargetFile targetFile = new TargetFile(targetFilePath, content);
+ for(NetcodeGenTarget target : parseGenerationTargets(targetFile)){
+ System.out.println(target.getName());
+ }
+ }
+ }
+
+ static List parseGenerationTargets(TargetFile targetFile){
+ List targets = new LinkedList();
+ for(FieldSource field : targetFile.getSource().getFields()){
+ System.out.println(field.getName());
+ }
+ return targets;
+ }
+
+ static void sourceCodeModification(){
+ String sampleFile = "";
+ try {
+ sampleFile = Files.readString(new File("C:/Users/satellite/Documents/Renderer/src/main/java/electrosphere/renderer/texture/Texture.java").toPath());
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ JavaClassSource javaClass = Roaster.parse(JavaClassSource.class, sampleFile);
+ javaClass.addMethod()
+ .setPublic()
+ .setStatic(true)
+ .setName("main")
+ .setReturnTypeVoid()
+ .setBody("System.out.println(\"Hello World\");")
+ .addParameter("java.lang.String[]", "args");
+ System.out.println(javaClass);
+ }
+
+ static void addingJavadocToClass(){
+ JavaClassSource javaClass = Roaster.parse(JavaClassSource.class, "public class SomeClass {}");
+ JavaDocSource javaDoc = javaClass.getJavaDoc();
+
+ javaDoc.setFullText("Full class documentation");
+ // or
+ javaDoc.setText("Class documentation text");
+ javaDoc.addTagValue("@author","George Gastaldi");
+
+ System.out.println(javaClass);
+ }
+
+}
diff --git a/src/main/java/electrosphere/main/targets/NetcodeGenTarget.java b/src/main/java/electrosphere/main/targets/NetcodeGenTarget.java
new file mode 100644
index 0000000..b1c68ee
--- /dev/null
+++ b/src/main/java/electrosphere/main/targets/NetcodeGenTarget.java
@@ -0,0 +1,15 @@
+package electrosphere.main.targets;
+
+public class NetcodeGenTarget {
+
+ String name;
+
+ public NetcodeGenTarget(String name){
+ this.name = name;
+ }
+
+ public String getName(){
+ return name;
+ }
+
+}
diff --git a/src/main/java/electrosphere/main/targets/TargetFile.java b/src/main/java/electrosphere/main/targets/TargetFile.java
new file mode 100644
index 0000000..801d000
--- /dev/null
+++ b/src/main/java/electrosphere/main/targets/TargetFile.java
@@ -0,0 +1,22 @@
+package electrosphere.main.targets;
+
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+
+public class TargetFile {
+
+ String path;
+ String content;
+ JavaClassSource source;
+
+ public TargetFile(String path, String content){
+ this.path = path;
+ this.content = content;
+ this.source = Roaster.parse(JavaClassSource.class, content);
+ }
+
+ public JavaClassSource getSource(){
+ return source;
+ }
+
+}