From 005854f9295a5a8af8fca4651436a891cc23b94a Mon Sep 17 00:00:00 2001 From: IveBeenAlone Date: Sat, 17 Jan 2026 21:20:25 -0500 Subject: [PATCH] Add project files. --- App.config | 6 + Form1.Designer.cs | 159 ++++++++++++++++++++++++ Form1.cs | 201 +++++++++++++++++++++++++++++++ Form1.resx | 200 ++++++++++++++++++++++++++++++ IBAHytaleLauncher.csproj | 123 +++++++++++++++++++ IBAHytaleLauncher.sln | 25 ++++ Program.cs | 22 ++++ Properties/AssemblyInfo.cs | 33 +++++ Properties/Resources.Designer.cs | 73 +++++++++++ Properties/Resources.resx | 124 +++++++++++++++++++ Properties/Settings.Designer.cs | 26 ++++ Properties/Settings.settings | 7 ++ Resources/hytale_100.png | Bin 0 -> 5050 bytes hytale.ico | Bin 0 -> 4286 bytes 14 files changed, 999 insertions(+) create mode 100644 App.config create mode 100644 Form1.Designer.cs create mode 100644 Form1.cs create mode 100644 Form1.resx create mode 100644 IBAHytaleLauncher.csproj create mode 100644 IBAHytaleLauncher.sln create mode 100644 Program.cs create mode 100644 Properties/AssemblyInfo.cs create mode 100644 Properties/Resources.Designer.cs create mode 100644 Properties/Resources.resx create mode 100644 Properties/Settings.Designer.cs create mode 100644 Properties/Settings.settings create mode 100644 Resources/hytale_100.png create mode 100644 hytale.ico 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 0000000000000000000000000000000000000000..5e7409caef701c8283af99dc7d31c62fb7c19da0 GIT binary patch literal 5050 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 literal 0 HcmV?d00001 diff --git a/hytale.ico b/hytale.ico new file mode 100644 index 0000000000000000000000000000000000000000..a382a2f45ebebdbf4243ab6c9ad93074fd1bd413 GIT binary patch literal 4286 zcmchacWe|_9>*WyI6}Z>+iabk-Pyi7yNfF|fN7?2A*9F_y>w*h7HW-Y(ZWvcE zU`jx=M4=@YI>vTr=WvNQ9Vn+DMY$-tyId6MPP*tyxD)L6p81PEqL2l2v-*xkZ)Vqj2J?OnxdB~YMd zqKF71%E+)-WyG{zRphkw;lG^xx_HWzpL*?;-DARDC%jTZG?IuGE62dbNq$g?!v`c` zVGKjRD{S)QSH}9Wi8yIEF|u;P%f;;$9RrOx3D%7I@{( zIGg&fu{I@TsHnXXRHP@Pr_hJKl6>4bcO3lob_4d;Z$N$VI=aqM*tC*h)tXcsDl0^9@?tbE znT?~{s!>+pgH_M`$0=x5TP%u@`A&n9xJ~LA)W;t>X^hQqm=N&iVR*0`W2aA`ue}8} zRtASw796+#*v3K}$XkNl*$Ft?R*&*^J_tqyqGEJ4HfQMj@1TAw=;T>3CV9}id>*b- z=GDO-?90!T1{vJZT#d~Y zI^W7O#AZ-A19g z6>c18K}|^kY-Ru{+G_g?tiPUPh(V|DnmK8(Hg`4NZK}e- zf&^S{Sc%~s#pvE#g&30(4viH4q-D6&RE%4_KHT1&k8Az)D9B8O&7y)JX#5s)=>EsC zGNR|?*_=uotjx>A`R;n0+q4oNwWs6Gt}^sBR3VD`7mW>U&G+GEcMU!{Sc1D$!~2@x z&+)))kkd8LR9H-*^R+C^H=M%9Dky)Q7efP$xYCq?vHmQ4dY}?L)rFWzbC6XfMn{Do zqg^$)yT1^leR&u;*oKM%8vmROPP=-8)g%u&{&bYjb8;U~{d*nFuV>q;aiL)qZtcv( zuXk6Xb3+lLY3+4T`*$_g;r6Zy+!^rV!|iDp8f>BQmqT--c)S)=7}?NkAxG=GP9^bJ zb+X6VD;DBpT_J`79^5-nfZKf~_*GXE4%L<8?fMFg9O=W&zHE%`TZ{973|!k6Kw0iu zSXj!}%Suda=yg!95D}wV;-$6ZNp-FVL;c$^x+4pppRLAk4;NuH;KgW59!6UWaB1^e zjI?Lslf%Wh-j$0X$}jP(f}V+hO(!d|ybwQv^2NDEWkk^LNyEji23&1ig9j%o@Zdxl zKHXb|JAGR)HrR?Ay<2gkqZ}XatH5w)F)sHvA$#Q#sKVcXQ5jjv%fmz7f0p(*I(cNS zo(T)COI?mLfm*y%oP^7DnYh_mhI5Ddu_P`Qi{fK35ZH#1wk^2PT!stvg*ek%4`1q1 zn5b_W-KZM4Z@CiM<(%am2eE@A$pg6KH@%A%cksM|WdA zMp_y%RO83hT0cexy5P@S3xTKkNhK;aDnf6(9h{Und3l<^Ngrh_nvJgfHQ1Ig13fDf zFyL8PQa&&I;vX}q;3E=F%kB96c1N6xZ@ z@%;2pmqk@zrS`iV?9bW*Ur`F-X|H484T+>*)S2ws06M&O~Q^CiYd8;k~vdT-@DCbIv9RG`~LOuTR6ZflivEn{mFq2-kc3 z_~JL`us&ls#{VBgxpfD~FD6aY(wg$T!!&NYS{lYF#bbJz2+cW(_~=jo_b;5lmt!ON z)5G86`|rNNk?vN?r~L=DzioXM{_^lXzP^74U)~$VA3nQ>Z~yoeE}l9LC(puaQ9sbI zjFi_uzYbV*Dq_+qS*tFPkBt`Zyl>rmwLz>~HDDNEnPtY{wd=32jVxj2X0#XZk_66Mm9=`LOtKf~A)6Q{fD zaH_sBo0)%eTJe9iYSH(+RsxRpfd<-p*lGQ>jMqS30SB$M(*-r+VmQRb^TDWC!#@@* zb^keO^{n3|t(tLk!9qb#^<4h=12g8ZRO$&c=NiLfXX;I^C^kWGsngw2?3$=pU5DUi z_qe0Ahv@YY+FQJB6EuTPx3(`jjt|V4@2Fmy9G|@`{mpqvo(0Af-y(5Ba@@ofYi5$E zbF+UI|Nr?A?XiI%M-@RenQ8*?n6}=3Cr$X8s+o$Arr=BHF(LD*xJS=ud~6*3KO1`B Ag#Z8m literal 0 HcmV?d00001