diff --git a/Program.cs b/Program.cs
index 80699ef..705468d 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,29 +1,131 @@
-Console.Write("Block Name(diamon_ore): ");
-string blockname = Console.ReadLine();
+using SixLabors.ImageSharp;
+using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Processing;
-if (string.IsNullOrEmpty(blockname))
+
+namespace txtgen;
+
+public class Program
{
- blockname = "diamond_ore";
-}
-Console.Write("top texture url: ");
-string top_texture = Console.ReadLine().Trim('\"');
-
-Console.Write("bottom texture url: ");
-string bottom_texture = Console.ReadLine().Trim('\"');
-
-Console.Write("both texture url: ");
-string both_texture = Console.ReadLine().Trim('\"');
-
-Console.Write("none texture url: ");
-string none_texture = Console.ReadLine().Trim('\"');
+ // string blockname;
+ static string ctm_dir;
+ static void Main()
+ {
-string working_dir = Directory.GetCurrentDirectory();
-// string blockname = "blockname";
-Directory.CreateDirectory(working_dir + "/output/assets");
+ Console.Write("Block Name(diamon_ore): ");
+ string blockname = Console.ReadLine();
-string mcmeta = @"{
+ if (string.IsNullOrEmpty(blockname))
+ {
+ blockname = "diamond_ore";
+ }
+
+ if (Directory.Exists("output/assets/minecraft/optifine/ctm/" + blockname))
+ {
+ Console.WriteLine("that block already exists, delete it and try again");
+ return;
+ }
+ Create_pack(blockname);
+
+ // Console.Write("top texture url: ");
+ // string top_texture = Console.ReadLine().Trim('\"');
+
+ // Console.Write("bottom texture url: ");
+ // string bottom_texture = Console.ReadLine().Trim('\"');
+
+ Console.Write("full texture path: ");
+ string full_texture = Console.ReadLine().Trim('\"');
+
+ Console.Write("none texture path: ");
+ string none_texture = Console.ReadLine().Trim('\"');
+
+
+ Image full_img = Image.Load(full_texture);
+ Image none_img = Image.Load(none_texture);
+
+ Image bottom_img = Image.Load(full_texture);
+ Image top_img = Image.Load(none_texture);
+ int size = full_img.Height;
+
+
+ bottom_img.Mutate(x => x.DrawImage(none_img, new Rectangle(0, 0, size, size / 2), 1f));
+ top_img.Mutate(x => x.DrawImage(full_img, new Rectangle(0, 0, size, size / 2), 1f));
+
+
+ // g.Save();
+ if (Directory.Exists("tmp"))
+ {
+ Directory.Delete("tmp", true);
+ }
+ Directory.CreateDirectory("tmp");
+
+ bottom_img.Save("tmp/bottom.png");
+ top_img.Save("tmp/top.png");
+
+ string top_texture = "tmp/top.png";
+ string bottom_texture = "tmp/bottom.png";
+
+ Add_block(blockname, top_texture, bottom_texture, full_texture, none_texture);
+
+ Directory.Delete("tmp", true);
+ // string blockname = "blockname";
+
+
+ // Directory.CreateDirectory(working_dir + "/output/assets/minecraft");
+ // Directory.CreateDirectory(working_dir + "/output/assets/minecraft/optifine");
+ // Directory.CreateDirectory(working_dir + "/output/assets/minecraft/optifine/ctm");
+
+
+
+
+ }
+ static void Add_block(string blockname, string top_texture, string bottom_texture, string full_texture, string none_texture)
+ {
+ string ctmproperties = @"matchTiles=" + blockname + @"
+method=ctm
+tiles=0-47";
+
+ File.WriteAllText(ctm_dir + "/" + blockname + ".properties", ctmproperties);
+
+ int[] top = { 4, 5, 7, 12, 13, 14, 15, 29, 31 };
+ int[] bottom = { 16, 17, 18, 36, 37, 38, 39, 40, 42 };
+ int[] both = { 0, 1, 2, 3 };
+ int[] none = { 6, 8, 9, 10, 11, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 41, 43, 44, 45, 46 };
+
+
+
+
+ foreach (int i in top)
+ {
+ File.Copy(top_texture, ctm_dir + "/" + i + ".png");
+ }
+ foreach (int i in bottom)
+ {
+ File.Copy(bottom_texture, ctm_dir + "/" + i + ".png");
+ }
+ foreach (int i in both)
+ {
+ File.Copy(full_texture, ctm_dir + "/" + i + ".png");
+ }
+ foreach (int i in none)
+ {
+ File.Copy(none_texture, ctm_dir + "/" + i + ".png");
+ }
+ }
+ static void Create_pack(string blockname)
+ {
+ string working_dir = Directory.GetCurrentDirectory();
+
+ string pack_Name = "output";
+
+ ctm_dir = Path.Combine(working_dir,pack_Name, "assets/minecraft/optifine/ctm/" + blockname);
+
+ Directory.CreateDirectory(ctm_dir);
+ // Directory.CreateDirectory(working_dir + "/1output/assets");
+
+ string mcmeta = @"{
""pack"": {
""description"": """",
""pack_format"": 15,
@@ -33,42 +135,7 @@ string mcmeta = @"{
}
}";
-File.WriteAllText(working_dir + "/output/pack.mcmeta", mcmeta);
+ File.WriteAllText(Path.Combine(working_dir, pack_Name, "pack.mcmeta"), mcmeta);
+ }
-Directory.CreateDirectory(working_dir + "/output/assets/minecraft");
-Directory.CreateDirectory(working_dir + "/output/assets/minecraft/optifine");
-Directory.CreateDirectory(working_dir + "/output/assets/minecraft/optifine/ctm");
-Directory.CreateDirectory(working_dir + "/output/assets/minecraft/optifine/ctm/" + blockname);
-
-
-string ctm_dir = working_dir + "/output/assets/minecraft/optifine/ctm/" + blockname;
-string ctmproperties = @"matchTiles=" + blockname + @"
-method=ctm
-tiles=0-47";
-
-File.WriteAllText(ctm_dir + "/" + blockname + ".properties", ctmproperties);
-
-int[] top = {4,5,7,12,13,14,15,29,31};
-int[] bottom = {16,17,18,36,37,38,39,40,42};
-int[] both = {0,1,2,3};
-int[] none = {6,8,9,10,11,19,20,21,22,23,24,25,26,27,28,30,32,33,34,35,41,43,44,45,46};
-
-
-
-
-foreach (int i in top)
-{
- File.Copy(top_texture, ctm_dir + "/" + i + ".png");
-}
-foreach (int i in bottom)
-{
- File.Copy(bottom_texture, ctm_dir + "/" + i + ".png");
-}
-foreach (int i in both)
-{
- File.Copy(both_texture, ctm_dir + "/" + i + ".png");
-}
-foreach (int i in none)
-{
- File.Copy(none_texture, ctm_dir + "/" + i + ".png");
-}
+}
\ No newline at end of file
diff --git a/example/bottom.png b/example/bottom.png
deleted file mode 100644
index a7cc171..0000000
Binary files a/example/bottom.png and /dev/null differ
diff --git a/example/top.png b/example/top.png
deleted file mode 100644
index 60a7f9f..0000000
Binary files a/example/top.png and /dev/null differ
diff --git a/txtgen.csproj b/txtgen.csproj
index bb73c99..24d4bcd 100644
--- a/txtgen.csproj
+++ b/txtgen.csproj
@@ -8,4 +8,8 @@
enable
+
+
+
+