diff --git a/App.config b/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Form1.Designer.cs b/Form1.Designer.cs new file mode 100644 index 0000000..90580f7 --- /dev/null +++ b/Form1.Designer.cs @@ -0,0 +1,159 @@ +namespace HelloWorld +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.textBoxUsername = new System.Windows.Forms.TextBox(); + this.labelUsername = new System.Windows.Forms.Label(); + this.labelUUID = new System.Windows.Forms.Label(); + this.textBoxUUID = new System.Windows.Forms.TextBox(); + this.btnGenerateUUID = new System.Windows.Forms.Button(); + this.checkUsername = new System.Windows.Forms.CheckBox(); + this.checkUUID = new System.Windows.Forms.CheckBox(); + this.btnPlay = new System.Windows.Forms.Button(); + this.imageList1 = new System.Windows.Forms.ImageList(this.components); + this.SuspendLayout(); + // + // textBoxUsername + // + this.textBoxUsername.Location = new System.Drawing.Point(12, 26); + this.textBoxUsername.Name = "textBoxUsername"; + this.textBoxUsername.Size = new System.Drawing.Size(166, 20); + this.textBoxUsername.TabIndex = 2; + // + // labelUsername + // + this.labelUsername.AutoSize = true; + this.labelUsername.Location = new System.Drawing.Point(12, 10); + this.labelUsername.Name = "labelUsername"; + this.labelUsername.Size = new System.Drawing.Size(55, 13); + this.labelUsername.TabIndex = 3; + this.labelUsername.Text = "Username"; + // + // labelUUID + // + this.labelUUID.AutoSize = true; + this.labelUUID.Location = new System.Drawing.Point(12, 94); + this.labelUUID.Name = "labelUUID"; + this.labelUUID.Size = new System.Drawing.Size(42, 13); + this.labelUUID.TabIndex = 5; + this.labelUUID.Text = "8 Digits"; + this.labelUUID.Click += new System.EventHandler(this.label2_Click); + // + // textBoxUUID + // + this.textBoxUUID.Location = new System.Drawing.Point(12, 110); + this.textBoxUUID.Name = "textBoxUUID"; + this.textBoxUUID.Size = new System.Drawing.Size(166, 20); + this.textBoxUUID.TabIndex = 4; + this.textBoxUUID.TextChanged += new System.EventHandler(this.textBox2_TextChanged); + // + // btnGenerateUUID + // + this.btnGenerateUUID.Location = new System.Drawing.Point(184, 110); + this.btnGenerateUUID.Name = "btnGenerateUUID"; + this.btnGenerateUUID.Size = new System.Drawing.Size(62, 20); + this.btnGenerateUUID.TabIndex = 6; + this.btnGenerateUUID.Text = "Generate"; + this.btnGenerateUUID.UseVisualStyleBackColor = true; + this.btnGenerateUUID.Click += new System.EventHandler(this.button1_Click_1); + // + // checkUsername + // + this.checkUsername.AutoSize = true; + this.checkUsername.Location = new System.Drawing.Point(12, 52); + this.checkUsername.Name = "checkUsername"; + this.checkUsername.Size = new System.Drawing.Size(57, 17); + this.checkUsername.TabIndex = 7; + this.checkUsername.Text = "Save?"; + this.checkUsername.UseVisualStyleBackColor = true; + this.checkUsername.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // checkUUID + // + this.checkUUID.AutoSize = true; + this.checkUUID.Location = new System.Drawing.Point(12, 136); + this.checkUUID.Name = "checkUUID"; + this.checkUUID.Size = new System.Drawing.Size(57, 17); + this.checkUUID.TabIndex = 8; + this.checkUUID.Text = "Save?"; + this.checkUUID.UseVisualStyleBackColor = true; + this.checkUUID.CheckedChanged += new System.EventHandler(this.checkUUID_CheckedChanged); + // + // btnPlay + // + this.btnPlay.Location = new System.Drawing.Point(285, 26); + this.btnPlay.Name = "btnPlay"; + this.btnPlay.Size = new System.Drawing.Size(104, 104); + this.btnPlay.TabIndex = 9; + this.btnPlay.Text = "Play!"; + this.btnPlay.UseVisualStyleBackColor = true; + this.btnPlay.Click += new System.EventHandler(this.button2_Click); + // + // imageList1 + // + this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; + this.imageList1.ImageSize = new System.Drawing.Size(16, 16); + this.imageList1.TransparentColor = System.Drawing.Color.Transparent; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(404, 161); + this.Controls.Add(this.btnPlay); + this.Controls.Add(this.checkUUID); + this.Controls.Add(this.checkUsername); + this.Controls.Add(this.btnGenerateUUID); + this.Controls.Add(this.labelUUID); + this.Controls.Add(this.textBoxUUID); + this.Controls.Add(this.labelUsername); + this.Controls.Add(this.textBoxUsername); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Form1"; + this.Text = "IveBeenAlone\'s Hytale Launcher"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox textBoxUsername; + private System.Windows.Forms.Label labelUsername; + private System.Windows.Forms.Label labelUUID; + private System.Windows.Forms.TextBox textBoxUUID; + private System.Windows.Forms.Button btnGenerateUUID; + private System.Windows.Forms.CheckBox checkUsername; + private System.Windows.Forms.CheckBox checkUUID; + private System.Windows.Forms.Button btnPlay; + private System.Windows.Forms.ImageList imageList1; + } +} + diff --git a/Form1.cs b/Form1.cs new file mode 100644 index 0000000..484b51b --- /dev/null +++ b/Form1.cs @@ -0,0 +1,201 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace HelloWorld +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + string path = ".ibalaunch"; + string uuidsave = ".ibalaunch\\uuid"; + string usersave = ".ibalaunch\\username"; + string HytaleUserData = "UserData"; + + try + { + DirectoryInfo di = Directory.CreateDirectory(path); + Console.WriteLine($"Ensured directory exists: {di.FullName}"); + } + catch (Exception) + { + Console.WriteLine($"An error occurred: idfk probably rw permission error?"); + } + + + try + { + DirectoryInfo Hdi = Directory.CreateDirectory(HytaleUserData); + Console.WriteLine($"Ensured directory exists: {Hdi.FullName}"); + } + catch (Exception) + { + Console.WriteLine($"An error occurred: idfk probably rw permission error?"); + } + + + // Username File Checking + if (File.Exists(usersave)) + { + FileInfo fileInfo = new FileInfo(usersave); + if (fileInfo.Length == 0) + { + Console.WriteLine("Username file is empty. Not setting anything."); + } + else + { + Console.WriteLine("Username file is not empty. Size: " + fileInfo.Length + " bytes."); + textBoxUsername.Text = File.ReadAllText(usersave); + checkUsername.Checked = true; + } + } + else + { + } + + // UUID File Checking + if (File.Exists(uuidsave)) + { + FileInfo fileInfo = new FileInfo(uuidsave); + if (fileInfo.Length == 0) + { + Console.WriteLine("UUID file is empty. Not setting anything."); + } + else + { + Console.WriteLine("UUID file is not empty. Size: " + fileInfo.Length + " bytes."); + + textBoxUUID.Text = File.ReadAllText(uuidsave); + checkUUID.Checked = true; + } + } + else + { + } + } + + private void button1_Click(object sender, EventArgs e){} + private void lblHelloWorld_Click(object sender, EventArgs e){} + private void label2_Click(object sender, EventArgs e){} + private void button2_Click(object sender, EventArgs e) + { + + // All of this shit for username data + string TextBoxUsername = textBoxUsername.Text; + if (checkUsername.Checked == true) + { + Console.WriteLine("Username Checkbox true, saving."); + string usersave = ".ibalaunch\\username"; + File.Create(usersave).Dispose(); + Console.WriteLine("Username File exists, comparing textbox"); + string UsernameFileText = File.ReadAllText(usersave); + if (UsernameFileText != TextBoxUsername) + { + Console.WriteLine("Username mismatch, writing!"); + try + { + File.WriteAllText(usersave, TextBoxUsername); + Console.WriteLine("Username file saved."); + } + catch (Exception) + { + Console.WriteLine("An error occurred: idfk probably rw permission error?"); + } + } + else + { + Console.WriteLine("Username already saved."); + } + } + else + { + Console.WriteLine("Username Checkbox false, not saving."); + } + Console.WriteLine("Username Shit done."); + + // All of this shit is uuid data. + string TextBoxUUID = textBoxUUID.Text; + if (checkUUID.Checked == true) + { + Console.WriteLine("UUID Checkbox true, saving."); + string uuidsave = ".ibalaunch\\uuid"; + File.Create(uuidsave).Dispose(); + Console.WriteLine("UUID File exists, comparing textbox"); + string UUIDFileText = File.ReadAllText(uuidsave); + if (UUIDFileText != TextBoxUUID) + { + Console.WriteLine("UUID mismatch, writing!"); + try + { + File.WriteAllText(uuidsave, TextBoxUUID); + Console.WriteLine("UUID file saved."); + } + catch (Exception) + { + Console.WriteLine("An error occurred: idfk probably rw permission error?"); + } + } + else + { + Console.WriteLine("UUID already saved."); + } + } + else + { + Console.WriteLine("UUID Checkbox false, not saving."); + } + Console.WriteLine("UUID Shit done."); + + + // Genuinely FUCK windows and C# and fucking whatever else to make this shit work + // I swear to fucking god I spent a solid 3 hours trying to make this thing + // OPEN A FUCKING EXE AND PASS ARGS CORRECTLY + string relativeExePath = Path.Combine("release\\package\\game\\latest\\Client\\", "HytaleClient.exe"); + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + string workingDirectory = Path.Combine(baseDirectory, "install"); + string Hytaleappdir = "\\release\\package\\game\\latest"; + string HytaleJava = "\\release\\package\\jre\\latest\\bin\\java.exe"; + + string arguments = " --app-dir "+workingDirectory+Hytaleappdir+" --user-dir "+baseDirectory+"UserData --java-exec "+ workingDirectory + HytaleJava+" --auth-mode offline --uuid 13371337-1337-1337-1337-1337"+textBoxUUID.Text+" --name \"" + textBoxUsername.Text + "\""; // Command-line arguments for the VB app + + ProcessStartInfo startInfo = new ProcessStartInfo + { + FileName = relativeExePath, + Arguments = arguments, + UseShellExecute = true, + WorkingDirectory = workingDirectory + }; + + try + { + Process.Start(startInfo); + } + catch (Exception ex) + { + MessageBox.Show($"Error starting the VB.NET application: {ex.Message}"); + } + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e){} + private void textBox2_TextChanged(object sender, EventArgs e){} + private void button1_Click_1(object sender, EventArgs e) + { + Random random = new Random(); + int GeneratedUUIDVal = random.Next(10000000, 100000000); + textBoxUUID.Text = GeneratedUUIDVal.ToString(); + } + private void checkUUID_CheckedChanged(object sender, EventArgs e){} + } +} \ No newline at end of file diff --git a/Form1.resx b/Form1.resx new file mode 100644 index 0000000..f3fc41c --- /dev/null +++ b/Form1.resx @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + 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 + AD/8AAAf+AAAH/gAAB/4AAAf/AAAP/////8= + + + \ No newline at end of file diff --git a/IBAHytaleLauncher.csproj b/IBAHytaleLauncher.csproj new file mode 100644 index 0000000..05536a5 --- /dev/null +++ b/IBAHytaleLauncher.csproj @@ -0,0 +1,123 @@ + + + + + Debug + AnyCPU + {420BC3CD-FE22-432A-82EB-DA5DEADBAB5F} + WinExe + IveBeenAlonesHytaleLauncher + IveBeenAlone%27s Hytale Launcher + v4.7.2 + 512 + true + true + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + hytale.ico + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Designer + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + + + + + + False + Microsoft .NET Framework 4.7.2 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + + + + \ No newline at end of file diff --git a/IBAHytaleLauncher.sln b/IBAHytaleLauncher.sln new file mode 100644 index 0000000..d6b936e --- /dev/null +++ b/IBAHytaleLauncher.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36811.4 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IBAHytaleLauncher", "IBAHytaleLauncher.csproj", "{420BC3CD-FE22-432A-82EB-DA5DEADBAB5F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {420BC3CD-FE22-432A-82EB-DA5DEADBAB5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {420BC3CD-FE22-432A-82EB-DA5DEADBAB5F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {420BC3CD-FE22-432A-82EB-DA5DEADBAB5F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {420BC3CD-FE22-432A-82EB-DA5DEADBAB5F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B3397E7C-5E38-4B04-B20E-AF4E63184167} + EndGlobalSection +EndGlobal diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..cdce7b2 --- /dev/null +++ b/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace HelloWorld +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a30d462 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("IveBeenAlone's Hytale Launcher")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("IveBeenAlone")] +[assembly: AssemblyProduct("IveBeenAlone's Hytale Launcher")] +[assembly: AssemblyCopyright("Copyright © 2026")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("420bc3cd-fe22-432a-82eb-da5deadbab5f")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("2.8.13.0")] +[assembly: AssemblyFileVersion("2.8.13.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..f9adf23 --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace IveBeenAlonesHytaleLauncher.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IveBeenAlonesHytaleLauncher.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap hytale_100 { + get { + object obj = ResourceManager.GetObject("hytale_100", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..d66b6b9 --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\hytale_100.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs new file mode 100644 index 0000000..14368a8 --- /dev/null +++ b/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace IveBeenAlonesHytaleLauncher.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Properties/Settings.settings b/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Resources/hytale_100.png b/Resources/hytale_100.png new file mode 100644 index 0000000..5e7409c Binary files /dev/null and b/Resources/hytale_100.png differ diff --git a/hytale.ico b/hytale.ico new file mode 100644 index 0000000..a382a2f Binary files /dev/null and b/hytale.ico differ