mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-23 06:37:08 +00:00
571 lines
36 KiB
C#
571 lines
36 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using MetroFramework.Forms;
|
|
using System.Resources;
|
|
using System.Threading;
|
|
using System.Drawing.Drawing2D;
|
|
using System.Diagnostics;
|
|
using System.Linq.Expressions;
|
|
using PckStudio.Properties;
|
|
using Ohana3DS_Rebirth.Ohana;
|
|
using PckStudio;
|
|
using PckStudio.Forms;
|
|
using System.IO.Packaging;
|
|
using RichPresenceClient;
|
|
using PckStudio.Classes.FileTypes;
|
|
|
|
namespace PckStudio.Forms.Utilities
|
|
{
|
|
public partial class TextureConverterUtility : MetroForm
|
|
{
|
|
public TextureConverterUtility(TreeView tv0, PCKFile pck)
|
|
{
|
|
InitializeComponent();
|
|
TView = tv0;
|
|
Pck = pck;
|
|
}
|
|
|
|
#region Variables
|
|
|
|
string AppData = "";
|
|
|
|
string Packname = "";
|
|
|
|
bool ToPC = true;
|
|
|
|
PCKFile Pck;
|
|
|
|
TreeView TView;
|
|
|
|
string[,] ItemSheetArray =
|
|
{
|
|
{"leather_helmet","chainmail_helmet","iron_helmet","diamond_helmet","golden_helmet","flint_and_steel","flint","coal","string","wheat_seeds","apple","golden_apple","egg","sugar","snowball","elytra" },
|
|
{"leather_chestplate","chainmail_chestplate","iron_chestplate","diamond_chestplate","golden_chestplate","bow","brick","iron_ingot","feather","wheat","painting","sugarcane","bone","cake","slime_ball","broken_elytra" },
|
|
{"leather_leggings","chainmail_leggings","iron_leggings","diamond_leggings","golden_leggings","arrow","end_crystal","gold_ingot","gunpowder","bread","oak_sign","oak_door","iron_door","","fire_charge","chorus_fruit" },
|
|
{"leather_boots","chainmail_boots","iron_boots","diamond_boots","golden_boots","stick","compass_00","diamond","redstone","clay_ball","paper","book","map","pumpkin_seeds","melon_seeds","popped_chorus_fruit" },
|
|
{"wooden_sword","stone_sword","iron_sword","diamond_sword","golden_sword","fishing_rod","clock_00","bowl","mushroom_stew","glowstone_dust","bucket","water_bucket","lava_bucket","milk_bucket","ink_sac","gray_dye" },
|
|
{"wooden_shovel","stone_shovel","iron_shovel","diamond_shovel","golden_shovel","fishing_rod_cast","repeater","porkchop","cooked_porkchop","cod","cooked_cod","rotten_flesh","cookie","shears","red_dye","pink_dye" },
|
|
{"wooden_pickaxe","stone_pickaxe","iron_pickaxe","diamond_pickaxe","golden_pickaxe","bow_pulling_0","carrot_on_a_stick","leather","saddle","beef","cooked_beef","ender_pearl","blaze_rod","melon_slice","green_dye","lime_dye" },
|
|
{"wooden_axe","stone_axe","iron_axe","diamond_axe","golden_axe","bow_pulling_1","baked_potato","potato","carrot","chicken","cooked_chicken","ghast_tear","gold_nugget","nether_wart","cocoa_beans","yellow_dye" },
|
|
{"wooden_hoe","stone_hoe","iron_hoe","diamond_hoe","golden_hoe","bow_pulling_2","poisonous_potato","minecart","oak_boat","glistering_melon_slice","fermented_spider_eye","spider_eye","potion","potion_overlay","blue_dye","light_blue_dye" },
|
|
{"leather_helmet_overlay","spectral_arrow","iron_horse_armor","diamond_horse_armor","golden_horse_armor","comparator","golden_carrot","chest_minecart","pumpkin_pie","spawn_egg","splash_potion","ender_eye","cauldron","blaze_powder","purple_dye","magenta_dye" },
|
|
{"","tipped_arrow_base","dragon_breath","name_tag","lead","nether_brick","tropical_fish","furnace_minecart","charcoal","spawn_egg_overlay","","experience_bottle","brewing_stand","magma_cream","cyan_dye","orange_dye" },
|
|
{"leather_leggings_overlay","tipped_arrow_head","lingering_potion","barrier","mutton","rabbit","pufferfish","hopper_minecart","hopper","nether_star","emerald","writable_book","written_book","flower_pot","light_gray_dye","bone_meal" },
|
|
{"leather_boots_overlay","beetroot","beetroot_seeds","beetroot_soup","cooked_mutton","cooked_rabbit","salmon","tnt_minecart","armor_stand","firework_rocket","firework_star","firework_star_overlay","quartz","map","item_frame","enchanted_book" },
|
|
{"acacia_door","birch_door","dark_oak_door","jungle_door","spruce_door","rabbit_stew","cooked_salmon","command_block_minecart","acacia_boat","birch_boat","dark_oak_boat","jungle_boat","spruce_boat","prismarine_shard","prismarine_crystals","leather_horse_armor" },
|
|
{"structure_void","","totem_of_undying","shulker_shell","iron_nugget","rabbit_foot","rabbit_hide","","","","","","","","","dragon_fireball" },
|
|
{"music_disc_13","music_disc_cat","music_disc_blocks","music_disc_chirp","music_disc_far","music_disc_mall","music_disc_mellohi","music_disc_stal","music_disc_strad","music_disc_ward","music_disc_11","music_disc_wait","cod_bucket","salmon_bucket","pufferfish_bucket","tropical_fish_bucket" },
|
|
{"leather_horse_armor","","","","","","","kelp","dried_kelp","sea_pickle","nautilus_shell","heart_of_the_sea","turtle_helmet","scute","trident","phantom_membrane" }
|
|
};
|
|
|
|
string[,] BlockSheetArray =
|
|
{
|
|
{"grass_block_top","stone","dirt","grass_block_side","oak_planks","smooth_stone_slab_side","smooth_stone","bricks","tnt_side","tnt_top","tnt_bottom","cobweb","poppy","dandelion","blue_concrete","oak_sapling" },
|
|
{"cobblestone","bedrock","sand","gravel","oak_log","oak_log_top","iron_block","gold_block","diamond_block","emerald_block","redstone_block","dropper_front","red_mushroom","brown_mushroom","jungle_sapling","red_concrete" },
|
|
{"gold_ore","iron_ore","coal_ore","bookshelf","mossy_cobblestone","obsidian","grass_block_side_overlay","grass","dispenser_front_vertical","beacon","dropper_front_vertical","crafting_table_top","furnace_front","furnace_side","dispenser_front","red_concrete" },
|
|
{"sponge","glass","diamond_ore","redstone_ore","oak_leaves","black_concrete","stone_bricks","dead_bush","fern","daylight_detector_top","daylight_detector_side","crafting_table_side","crafting_table_front","furnace_front_on","furnace_top","spruce_sapling" },
|
|
{"white_wool","spawner","snow","ice","grass_block_snow","cactus_top","cactus_side","cactus_bottom","clay","sugar_cane","jukebox_side","jukebox_top","birch_leaves","mycelium_side","mycelium_top","birch_sapling" },
|
|
{"torch","oak_door_top","iron_door_top","ladder","oak_trapdoor","iron_bars","farmland_wet","farmland","wheat_stage0","wheat_stage1","wheat_stage2","wheat_stage3","wheat_stage4","wheat_stage5","wheat_stage6","wheat_stage7" },
|
|
{"lever","oak_door_bottom","iron_door_bottom","redstone_torch","mossy_stone_bricks","cracked_stone_bricks","pumpkin_top","netherrack","soul_sand","glowstone","piston_top_sticky","piston_top","piston_side","piston_bottom","piston_inner","pumpkin_stem" },
|
|
{"rail_corner","black_wool","gray_wool","redstone_torch_off","spruce_log","birch_log","pumpkin_side","carved_pumpkin","jack_o_lantern","cake_top","cake_side","cake_inner","cake_bottom","red_mushroom_block","brown_mushroom_block","attached_pumpkin_stem" },
|
|
{"rail","red_wool", "pink_wool","repeater","spruce_leaves","spruce_leaves","conduit","turtle_egg","melon_side","melon_top","cauldron_top","cauldron_inner","wet_sponge","mushroom_stem","mushroom_block_inside","vines" },
|
|
{"lapis_block","green_wool","lime_wool","repeater_on","glass_pane_top","debug","debug","turtle_egg_slightly_cracked","turtle_egg_very_cracked","jungle_log","cauldron_side","cauldron_bottom","brewing_stand_base","brewing_stand","end_portal_frame_top","end_portal_frame_side" },
|
|
{"lapis_ore","brown_wool","yellow_wool","powered_rail","redstone_dust_dot","redstone_dust_line0","enchanting_table_top","dragon_egg","cocoa_stage2","cocoa_stage1","cocoa_stage0","emerald_ore","tripwire_hook","tripwire","end_portal_frame_eye","end_stone" },
|
|
{"sandstone_top","blue_wool","light_blue_wool","powered_rail_on","debug","debug","enchanting_table_side","enchanting_table_bottom","glide_blue","item_frame","flower_pot","comparator","comparator_on","activator_rail","activator_rail","nether_quartz_ore" },
|
|
{"sandstone","purple_wool","magenta_wool","detector_rail","jungle_leaves","black_concrete","spruce_planks","jungle_planks","carrots_stage0","carrots_stage1","carrots_stage2","carrots_stage3","slime_block","debug","debug","debug" },
|
|
{"sandstone_bottom","cyan_wool","orange_wool","redstone_lamp","redstone_lamp_on","chiseled_stone_bricks","birch_planks","anvil","chipped_anvil_top","chiseled_quartz_block_top","quartz_pillar_top","quartz_block_side","debug","detector_rail_on","debug","debug" },
|
|
{"nether_bricks","light_gray_wool","nether_wart_stage0","nether_wart_stage1","nether_wart_stage2","chiseled_sandstone","cut_sandstone","anvil_top","damaged_anvil_top","chiseled_quartz_block","quartz_pillar","quartz_block_top","debug","debug","debug","debug" },
|
|
{"destroy_stage_0","destroy_stage_1","destroy_stage_2","destroy_stage_3","destroy_stage_4","destroy_stage_5","destroy_stage_6","destroy_stage_7","destroy_stage_8","destroy_stage_9","hay_block_side","quartz_block_bottom","debug","hay_block_top","debug","debug" },
|
|
{"coal_block","terracotta","note_block","andesite","polished_andesite","diorite","polished_diorite","granite","polished_granite","potatoes_stage0","potatoes_stage1","potatoes_stage2","potatoes_stage3","spruce_log_top","jungle_log_top","birch_log_top" },
|
|
{"black_terracotta","blue_terracotta","brown_terracotta","cyan_terracotta","gray_terracotta","green_terracotta","light_blue_terracotta","lime_terracotta","magenta_terracotta","orange_terracotta","pink_terracotta","purple_terracotta","red_terracotta","light_gray_terracotta","white_terracotta","yellow_terracotta" },
|
|
{"black_stained_glass","blue_stained_glass","brown_stained_glass","cyan_stained_glass","gray_stained_glass","green_stained_glass","light_blue_stained_glass","lime_stained_glass","magenta_stained_glass","orange_stained_glass","pink_stained_glass","purple_stained_glass","red_stained_glass","light_gray_stained_glass","white_stained_glass","yellow_stained_glass" },
|
|
{"black_stained_glass_pane_top","blue_stained_glass_pane_top","brown_stained_glass_pane_top","cyan_stained_glass_pane_top","gray_stained_glass_pane_top","green_stained_glass_pane_top","light_blue_stained_glass_pane_top","lime_stained_glass_pane_top","magenta_stained_glass_pane_top","orange_stained_glass_pane_top","pink_stained_glass_pane_top","purple_stained_glass_pane_top","red_stained_glass_pane_top","light_gray_stained_glass_pane_top","white_stained_glass_pane_top","yellow_stained_glass_pane_top" },
|
|
{"large_fern_top","tall_grass_top","peony_top","rose_bush_top","lilac_top","orange_tulip","sunflower_top","sunflower_front","acacia_log","acacia_log_top","acacia_planks","acacia_leaves","acacia_leaves","prismarine_bricks","red_sand","red_sandstone_top" },
|
|
{"large_fern_bottom","tall_grass_bottom","peony_bottom","rose_bush_bottom","lilac_bottom","pink_tulip","sunflower_bottom","sunflower_back","dark_oak_log","dark_oak_log_top","dark_oak_planks","dark_oak_leaves","dark_oak_leaves","dark_prismarine","red_sandstone_bottom","red_sandstone" },
|
|
{"allium","blue_orchid","azure_bluet","oxeye_daisy","red_tulip","white_tulip","acacia_sapling","dark_oak_sapling","coarse_dirt","podzol_side","podzol_top","spruce_leaves","spruce_leaves","debug","chiseled_red_sandstone","cut_red_sandstone" },
|
|
{"acacia_door_top","birch_door_top","dark_oak_door_top","jungle_door_top","spruce_door_top","chorus_flower","chorus_flower_dead","chorus_plant","end_stone_bricks","grass_path_side","grass_path_top","debug","packed_ice","debug","daylight_detector_inverted_top","iron_trapdoor" },
|
|
{"acacia_door_bottom","birch_door_bottom","dark_oak_door_bottom","jungle_door_bottom","spruce_door_bottom","purpur_block","purpur_pillar","purpur_pillar_top","end_rod","debug","nether_wart_block","red_nether_bricks","frosted_ice_0","frosted_ice_1","frosted_ice_2","frosted_ice_3" },
|
|
{"beetroots_stage0","beetroots_stage1","beetroots_stage2","beetroots_stage3","debug","debug","debug","debug","debug","debug","debug","debug","debug","debug","debug","debug" },
|
|
{"bone_block_side","bone_block_top","melon_stem","attached_melon_stem","observer_front","observer_side","observer_back","observer_back_on","observer_top","glide_yellow","glide_green","structure_block","structure_block_corner","structure_block_data","structure_block_load","structure_block_save" },
|
|
{"black_concrete","blue_concrete","brown_concrete","cyan_concrete","gray_concrete","green_concrete","light_blue_concrete","lime_concrete","magenta_concrete","orange_concrete","pink_concrete","purple_concrete","red_concrete","light_gray_concrete","white_concrete","yellow_concrete" },
|
|
{"black_concrete_powder","blue_concrete_powder","brown_concrete_powder","cyan_concrete_powder","gray_concrete_powder","green_concrete_powder","light_blue_concrete_powder","lime_concrete_powder","magenta_concrete_powder","orange_concrete_powder","pink_concrete_powder","purple_concrete_powder","red_concrete_powder","light_gray_concrete_powder","white_concrete_powder","yellow_concrete_powder" },
|
|
{"black_glazed_terracotta","blue_glazed_terracotta","brown_glazed_terracotta","cyan_glazed_terracotta","gray_glazed_terracotta","green_glazed_terracotta","light_blue_glazed_terracotta","lime_glazed_terracotta","magenta_glazed_terracotta","orange_glazed_terracotta","pink_glazed_terracotta","purple_glazed_terracotta","red_glazed_terracotta","light_gray_glazed_terracotta","white_glazed_terracotta","yellow_glazed_terracotta" },
|
|
{"white_shulker_box","","water_overlay","debug","tube_coral_block","bubble_coral_block","brain_coral_block","fire_coral_block","horn_coral_block","tube_coral","bubble_coral","brain_coral","fire_coral","horn_coral","sea_pickle","blue_ice" },
|
|
{"dried_kelp_top","dried_kelp_side","debug","debug","dead_tube_coral_block","dead_bubble_coral_block","dead_brain_coral_block","dead_fire_coral_block","dead_horn_coral_block","tube_coral_fan","bubble_coral_fan","brain_coral_fan","fire_coral_fan","horn_coral_fan","","" },
|
|
{"debug","debug","debug","debug","debug","debug","debug","debug","debug","dead_tube_coral_fan","dead_bubble_coral_fan","dead_brain_coral_fan","dead_fire_coral_fan","dead_horn_coral_fan","","spruce_trapdoor" },
|
|
{"stripped_oak_log","stripped_oak_log_top","stripped_acacia_log","stripped_acacia_log_top","stripped_birch_log","stripped_birch_log_top","stripped_dark_oak_log","stripped_dark_oak_log_top","stripped_jungle_log","stripped_jungle_log_top","stripped_spruce_log","stripped_spruce_log_top","acacia_trapdoor","birch_trapdoor","dark_oak_trapdoor","jungle_trapdoor" }
|
|
};
|
|
|
|
string[,] mobs =
|
|
{
|
|
{"\\entity\\alex","\\alex"},
|
|
{"\\entity\\steve","\\char"},
|
|
{"\\entity\\bat","\\bat"},
|
|
{"\\entity\\chicken","\\chicken"},
|
|
{"\\entity\\dolphin","\\dolphin"},
|
|
{"\\entity\\endermite","\\endermite"},
|
|
{"\\entity\\guardian","\\guardian"},
|
|
{"\\entity\\guardian_beam","\\guardian_beam"},
|
|
{"\\entity\\guardian_elder","\\guardian_elder"},
|
|
{"\\entity\\phantom","\\phantom"},
|
|
{"\\entity\\spider_eyes","\\spider_eyes"},
|
|
{"\\entity\\squid","\\squid"},
|
|
{"\\entity\\steve","\\steve"},
|
|
{"\\entity\\witch","\\witch"},
|
|
{"\\entity\\bear\\polarbear","\\bear\\polarbear"},
|
|
{"\\entity\\creeper\\creeper","\\creeper"},
|
|
{"\\entity\\ghast\\ghast","\\ghast"},
|
|
{"\\entity\\ghast\\ghast_shooting","\\ghast_fire"},
|
|
{"\\entity\\enderdragon\\dragon_fireball","\\enderdragon\\dragon_fireball"},
|
|
{"\\entity\\enderdragon\\dragon","\\enderdragon\\ender"},
|
|
{"\\entity\\end_crystal\\end_crystal_beam","\\enderdragon\\beam"},
|
|
{"\\entity\\enderdragon\\dragon_eyes","\\enderdragon\\ender_eyes"},
|
|
{"\\entity\\enderman\\enderman_eyes","\\enderman\\enderman_eyes"},
|
|
{"\\entity\\enderman\\enderman","\\enderman\\enderman"},
|
|
{"\\entity\\fish\\cod","\\fish\\cod"},
|
|
{"\\entity\\fish\\pufferfish","\\fish\\pufferfish"},
|
|
{"\\entity\\fish\\salmon","\\fish\\salmon"},
|
|
{"\\entity\\fish\\tropical_a","\\fish\\tropical_a"},
|
|
{"\\entity\\fish\\tropical_a_pattern_1","\\fish\\tropical_a_pattern_1"},
|
|
{"\\entity\\fish\\tropical_a_pattern_2","\\fish\\tropical_a_pattern_2"},
|
|
{"\\entity\\fish\\tropical_a_pattern_3","\\fish\\tropical_a_pattern_3"},
|
|
{"\\entity\\fish\\tropical_a_pattern_4","\\fish\\tropical_a_pattern_4"},
|
|
{"\\entity\\fish\\tropical_a_pattern_5","\\fish\\tropical_a_pattern_5"},
|
|
{"\\entity\\fish\\tropical_a_pattern_6","\\fish\\tropical_a_pattern_6"},
|
|
{"\\entity\\fish\\tropical_b","\\fish\\tropical_b"},
|
|
{"\\entity\\fish\\tropical_b_pattern_1","\\fish\\tropical_b_pattern_1"},
|
|
{"\\entity\\fish\\tropical_b_pattern_2","\\fish\\tropical_b_pattern_2"},
|
|
{"\\entity\\fish\\tropical_b_pattern_3","\\fish\\tropical_b_pattern_3"},
|
|
{"\\entity\\fish\\tropical_b_pattern_4","\\fish\\tropical_b_pattern_4"},
|
|
{"\\entity\\fish\\tropical_b_pattern_5","\\fish\\tropical_b_pattern_5"},
|
|
{"\\entity\\fish\\tropical_b_pattern_6","\\fish\\tropical_b_pattern_6"},
|
|
{"\\entity\\horse\\donkey","\\horse\\donkey"},
|
|
{"\\entity\\horse\\horse_black","\\horse\\horse_black"},
|
|
{"\\entity\\horse\\horse_brown","\\horse\\horse_brown"},
|
|
{"\\entity\\horse\\horse_chestnut","\\horse\\horse_chestnut"},
|
|
{"\\entity\\horse\\horse_creamy","\\horse\\horse_creamy"},
|
|
{"\\entity\\horse\\horse_darkbrown","\\horse\\horse_darkbrown"},
|
|
{"\\entity\\horse\\horse_gray","\\horse\\horse_gray"},
|
|
{"\\entity\\horse\\horse_markings_blackdots","\\horse\\horse_markings_blackdots"},
|
|
{"\\entity\\horse\\horse_markings_white","\\horse\\horse_markings_white"},
|
|
{"\\entity\\horse\\horse_markings_whitedots","\\horse\\horse_markings_whitedots"},
|
|
{"\\entity\\horse\\horse_markings_whitefield","\\horse\\horse_markings_whitefield"},
|
|
{"\\entity\\horse\\horse_skeleton","\\horse\\horse_skeleton"},
|
|
{"\\entity\\horse\\horse_white","\\horse\\horse_white"},
|
|
{"\\entity\\horse\\horse_zombie","\\horse\\horse_zombie"},
|
|
{"\\entity\\horse\\mule","\\horse\\mule"},
|
|
{"\\entity\\illager\\evoker","\\illager\\evoker"},
|
|
{"\\entity\\illager\\vex","\\illager\\vex"},
|
|
{"\\entity\\illager\\vex_charging","\\illager\\vex_charging"},
|
|
{"\\entity\\illager\\vindicator","\\illager\\vindicator"},
|
|
{"\\entity\\llama\\spit","\\llama\\spit"},
|
|
{"\\entity\\parrot\\parrot_blue","\\parrot\\parrot_blue"},
|
|
{"\\entity\\parrot\\parrot_green","\\parrot\\parrot_green"},
|
|
{"\\entity\\parrot\\parrot_grey","\\parrot\\parrot_grey"},
|
|
{"\\entity\\parrot\\parrot_red_blue","\\parrot\\parrot_red_blue"},
|
|
{"\\entity\\parrot\\parrot_yellow_blue","\\parrot\\parrot_yellow_blue"},
|
|
{"\\entity\\rabbit\\black","\\rabbit\\black"},
|
|
{"\\entity\\rabbit\\brown","\\rabbit\\brown"},
|
|
{"\\entity\\rabbit\\caerbannog","\\rabbit\\caerbannog"},
|
|
{"\\entity\\rabbit\\gold","\\rabbit\\gold"},
|
|
{"\\entity\\rabbit\\salt","\\rabbit\\salt"},
|
|
{"\\entity\\rabbit\\toast","\\rabbit\\toast"},
|
|
{"\\entity\\rabbit\\white","\\rabbit\\white"},
|
|
{"\\entity\\rabbit\\white_splotched","\\rabbit\\white_splotched"},
|
|
{"\\entity\\shulker\\spark","\\shulker\\spark"},
|
|
{"\\entity\\skeleton\\stray","\\skeleton\\stray"},
|
|
{"\\entity\\skeleton\\skeleton","\\skeleton"},
|
|
{"\\entity\\skeleton\\wither_skeleton","\\skeleton_wither"},
|
|
{"\\entity\\skeleton\\stray_overlay","\\skeleton\\stray_overlay"},
|
|
{"\\entity\\slime\\slime","\\slime"},
|
|
{"\\entity\\villager\\villager","\\villager\\villager"},
|
|
{"\\entity\\wither\\wither","\\wither\\wither"},
|
|
{"\\entity\\wither\\wither_armor","\\wither\\wither_armor"},
|
|
{"\\entity\\wither\\wither_invulnerable","\\wither\\wither_invulnerable"},
|
|
{"\\entity\\zombie\\drowned","\\zombie\\drowned"},
|
|
{"\\entity\\zombie\\husk","\\zombie\\husk"},
|
|
{"\\entity\\cow\\cow","\\cow"},
|
|
{"\\entity\\cow\\red_mooshroom","\\redcow"},
|
|
{"\\entity\\cow\\red_mooshroom","\\redcow"},
|
|
{"\\entity\\enderman\\enderman","\\enderman"},
|
|
{"\\entity\\enderman\\enderman_eyes","\\enderman_eyes"},
|
|
{"\\entity\\ghast\\ghast","\\ghast"},
|
|
{"\\entity\\ghast\\ghast_shooting","\\ghast_fire"},
|
|
{"\\entity\\pig\\pig","\\pig"},
|
|
{"\\entity\\sheep\\sheep_fur","\\sheep_fur"},
|
|
{"\\entity\\zombie_villager\\zombie_villager","\\zombie_villager\\zombie_villager"}
|
|
};
|
|
|
|
string[,] painting =
|
|
{
|
|
{"alban","0","2", "1", "1"},
|
|
{"alban","1","2", "1", "1"},
|
|
{"aztec","0","1", "1", "1"},
|
|
{"aztec","1","1", "1", "1"},
|
|
{"aztec2","0","3", "1", "1"},
|
|
{"aztec2","1","3", "1", "1"},
|
|
{"kebab","0","0", "1", "1"},
|
|
{"kebab","1","0", "1", "1"},
|
|
{"bomb","0","4", "1", "1"},
|
|
{"plant","0","5", "1", "1"},
|
|
{"wasteland","0","6", "1", "1"},
|
|
{"courbet","2","2", "2", "1"},
|
|
{"creebet","2","8", "2", "1"},
|
|
{"sea","2","4", "2", "1"},
|
|
{"sunset","2","6", "2", "1"},
|
|
{"burning_skull","12","8", "4", "4"},
|
|
{"bust","8","2", "2", "2"},
|
|
{"donkey_kong","7","12", "4", "3"},
|
|
{"fighters","6","0", "4", "2"},
|
|
{"graham","4","1", "1", "2"},
|
|
{"match","8","0", "2", "2"},
|
|
{"pigscene","12","4", "4", "4"},
|
|
{"pointer","12","0", "4", "4"},
|
|
{"pool","2","0", "2", "1"},
|
|
{"skeleton","4","12", "4", "3"},
|
|
{"skull_and_roses","8","8", "2", "2"},
|
|
{"stage","8","4", "2", "2"},
|
|
{"void","8","6", "2", "2"},
|
|
{"wanderer","4","0", "1", "2"},
|
|
|
|
{"back","0","15", "1", "1"},
|
|
{"back","1","15", "1", "1"},
|
|
{"back","2","15", "1", "1"},
|
|
{"back","3","15", "1", "1"},
|
|
{"back","0","14", "1", "1"},
|
|
{"back","1","14", "1", "1"},
|
|
{"back","2","14", "1", "1"},
|
|
{"back","3","14", "1", "1"},
|
|
{"back","0","13", "1", "1"},
|
|
{"back","1","13", "1", "1"},
|
|
{"back","2","13", "1", "1"},
|
|
{"back","3","13", "1", "1"},
|
|
{"back","0","12", "1", "1"},
|
|
{"back","1","12", "1", "1"},
|
|
{"back","2","12", "1", "1"},
|
|
{"back","3","12", "1", "1"}
|
|
};
|
|
|
|
string[,] ExData = {
|
|
{ "\\environment\\clouds","\\environment\\clouds"},
|
|
{ "\\environment\\rain","\\environment\\rain"},
|
|
{ "\\environment\\snow","\\environment\\snow"},
|
|
{ "\\environment\\sun","\\terrain\\sun"},
|
|
{ "\\environment\\moon_phases","\\terrain\\moon_phases"},
|
|
{ "\\environment\\end_sky","\\misc\\particlefield"},
|
|
{ "\\misc\\pumpkinblur","\\misc\\pumpkinblur"}
|
|
};
|
|
|
|
string[,] armour =
|
|
{
|
|
{ "\\models\\armor\\chainmail_layer_1", "\\armor\\chain_1"},
|
|
{ "\\models\\armor\\chainmail_layer_2", "\\armor\\chain_2"},
|
|
{ "\\models\\armor\\leather_layer_1", "\\armor\\cloth_1"},
|
|
{ "\\models\\armor\\leather_layer_1_overlay", "\\armor\\cloth_1_boverlay"},
|
|
{ "\\models\\armor\\leather_layer_2", "\\armor\\cloth_2"},
|
|
{ "\\models\\armor\\leather_layer_2_overlay", "\\armor\\cloth_2_b"},
|
|
{ "\\models\\armor\\diamond_layer_1", "\\armor\\diamond_1"},
|
|
{ "\\models\\armor\\diamond_layer_2", "\\armor\\diamond_2"},
|
|
{ "\\models\\armor\\gold_layer_1", "\\armor\\gold_1"},
|
|
{ "\\models\\armor\\gold_layer_2", "\\armor\\gold_2"},
|
|
{ "\\models\\armor\\iron_layer_1", "\\armor\\iron_1"},
|
|
{ "\\models\\armor\\iron_layer_2", "\\armor\\iron_2"},
|
|
{ "\\models\\armor\\turtle_layer_1", "\\armor\\turtle_1"}
|
|
};
|
|
|
|
#endregion
|
|
|
|
#region
|
|
|
|
private void TextureConverterUtility_Load(object sender, EventArgs e)
|
|
{
|
|
AppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\.minecraft\\resourcepacks";
|
|
if (ToPC)
|
|
{
|
|
foreach (string folder in Directory.GetDirectories(AppData))
|
|
listBox1.Items.Add(Path.GetFileName(folder));
|
|
metroTextBox1.Text = "New Texture Pack";
|
|
Packname = "New Texture Pack";
|
|
}
|
|
}
|
|
|
|
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if(ToPC)
|
|
metroTextBox1.Text = listBox1.SelectedItem.ToString();
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
if (ToPC)
|
|
{
|
|
FolderBrowserDialog fbd = new FolderBrowserDialog();
|
|
if (fbd.ShowDialog() == DialogResult.OK)
|
|
metroTextBox1.Text = fbd.SelectedPath;
|
|
}
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
if (ToPC)
|
|
{
|
|
Packname = metroTextBox1.Text;
|
|
Image Terrain = new Bitmap(640, 480);
|
|
Image Items = new Bitmap(640, 480);
|
|
Image painting = new Bitmap(640, 480);
|
|
TreeNode EntityNode = new TreeNode();
|
|
foreach(TreeNode tn in TView.Nodes[TView.Nodes.Count - 1].Nodes)
|
|
{
|
|
switch (tn.Text)
|
|
{
|
|
case ("terrain.png"):
|
|
Terrain = Image.FromStream(new MemoryStream(((PCKFile.FileData)(tn.Tag)).data));
|
|
break;
|
|
case ("items.png"):
|
|
Items = Image.FromStream(new MemoryStream(((PCKFile.FileData)(tn.Tag)).data));
|
|
break;
|
|
case ("art"):
|
|
painting = Image.FromStream(new MemoryStream(((PCKFile.FileData)(tn.Nodes[0].Tag)).data));
|
|
break;
|
|
case ("mob"):
|
|
EntityNode = tn;
|
|
break;
|
|
}
|
|
}
|
|
SplitTextures("terrain.png", Terrain);
|
|
SplitTextures("items.png", Items);
|
|
SplitTextures2(0);
|
|
SplitTextures2(1);
|
|
SplitTextures2(2);
|
|
SplitTextures3("kz.png", painting);
|
|
File.WriteAllText(AppData + "\\" + Packname + "\\pack.mcmeta", "{\n\t\"pack\": {\n\t\t\"pack_format\": 6,\n\t\t\"description\": \"\"\n\t}\n}");
|
|
Resources.pack.Save(AppData + "\\" + Packname + "\\pack.png");
|
|
this.Close();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
public void SplitTextures(string path, Image Img)
|
|
{
|
|
try
|
|
{
|
|
|
|
// Get the inputs.
|
|
int wid = 16;
|
|
int hgt = 16;
|
|
string Outpath = "";
|
|
|
|
Bitmap bm = (Bitmap)Img;
|
|
|
|
if (Path.GetFileNameWithoutExtension(path) == "items")
|
|
{
|
|
wid = bm.Width / 16;
|
|
int NumDown = bm.Height / wid;
|
|
hgt = bm.Height / NumDown;
|
|
Outpath = "assets\\minecraft\\textures\\item\\";
|
|
}
|
|
|
|
else if (Path.GetFileNameWithoutExtension(path) == "terrain")
|
|
{
|
|
wid = bm.Width / 16;
|
|
int NumDown = bm.Height / wid;
|
|
hgt = bm.Height / NumDown;
|
|
Outpath = "assets\\minecraft\\textures\\block\\";
|
|
}
|
|
else
|
|
return;
|
|
|
|
// Start splitting the Bitmap.
|
|
Directory.CreateDirectory(AppData + "\\" + metroTextBox1.Text + "\\" + Outpath);
|
|
Bitmap piece = new Bitmap(wid, hgt);
|
|
Rectangle dest_rect = new Rectangle(0, 0, wid, hgt);
|
|
using (Graphics gr = Graphics.FromImage(piece))
|
|
{
|
|
int num_rows = bm.Height / hgt;
|
|
int num_cols = bm.Width / wid;
|
|
Rectangle source_rect = new Rectangle(0, 0, wid, hgt);
|
|
for (int row = 0; row < num_rows; row++)
|
|
{
|
|
source_rect.X = 0;
|
|
for (int col = 0; col < num_cols; col++)
|
|
{
|
|
// Copy the piece of the image.
|
|
gr.Clear(Color.Transparent);
|
|
gr.DrawImage(bm, dest_rect, source_rect,
|
|
GraphicsUnit.Pixel);
|
|
|
|
// Save the piece.
|
|
string filename = "placeholder";
|
|
|
|
if (Path.GetFileNameWithoutExtension(path) == "items")
|
|
{
|
|
filename = ItemSheetArray[row, col] + ".png";
|
|
}
|
|
|
|
else if (Path.GetFileNameWithoutExtension(path) == "terrain")
|
|
{
|
|
filename = BlockSheetArray[row, col] + ".png";
|
|
}
|
|
|
|
piece.Save(AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + "\\" + filename, ImageFormat.Png);
|
|
|
|
// Move to the next column.
|
|
source_rect.X += wid;
|
|
}
|
|
source_rect.Y += hgt;
|
|
}
|
|
gr.Dispose();
|
|
}
|
|
bm.Dispose();
|
|
}
|
|
catch (OutOfMemoryException err)
|
|
{
|
|
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
MessageBox.Show("Error!\n" + err.Message + "\nStacktrace:\n" + err.StackTrace);
|
|
}
|
|
}
|
|
|
|
public void SplitTextures2(int Type)
|
|
{
|
|
if (Type == 0)
|
|
{
|
|
int i = 0;
|
|
int ix = mobs.Length / 2;
|
|
string Outpath = "assets\\minecraft\\textures\\";
|
|
|
|
|
|
foreach (PCKFile.FileData mf in Pck.file_entries)
|
|
{
|
|
System.IO.FileInfo file = new System.IO.FileInfo(Environment.CurrentDirectory + "\\Temp\\" + @"\" + mf.name);
|
|
file.Directory.Create(); // If the directory already exists, this method does nothing.
|
|
File.WriteAllBytes(Environment.CurrentDirectory + "\\Temp\\" + @"\" + mf.name, mf.data); //writes minefile to file
|
|
}
|
|
while (i <= ix)
|
|
{
|
|
try
|
|
{
|
|
Console.WriteLine(mobs[i, 0] + " --- " + mobs[i, 1]);
|
|
Directory.CreateDirectory(AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + mobs[i, 0] + ".png");
|
|
File.Copy(Environment.CurrentDirectory + "\\Temp\\res\\mob" + mobs[i, 1] + ".png", AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + mobs[i, 0] + ".png");
|
|
}
|
|
catch { }
|
|
i++;
|
|
}
|
|
}
|
|
if (Type == 1)
|
|
{
|
|
int i = 0;
|
|
int ix = ExData.Length / 2;
|
|
string Outpath = "assets\\minecraft\\textures\\";
|
|
|
|
|
|
foreach (PCKFile.FileData mf in Pck.file_entries)
|
|
{
|
|
System.IO.FileInfo file = new System.IO.FileInfo(Environment.CurrentDirectory + "\\Temp\\" + @"\" + mf.name);
|
|
file.Directory.Create(); // If the directory already exists, this method does nothing.
|
|
File.WriteAllBytes(Environment.CurrentDirectory + "\\Temp\\" + @"\" + mf.name, mf.data); //writes minefile to file
|
|
}
|
|
while (i <= ix)
|
|
{
|
|
try
|
|
{
|
|
Console.WriteLine(ExData[i, 0] + " --- " + ExData[i, 1]);
|
|
Directory.CreateDirectory(Path.GetDirectoryName(AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + ExData[i, 0] + ".png"));
|
|
File.Copy(Environment.CurrentDirectory + "\\Temp\\res" + ExData[i, 1] + ".png", AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + ExData[i, 0] + ".png");
|
|
}
|
|
catch { }
|
|
i++;
|
|
}
|
|
}
|
|
if (Type == 2)
|
|
{
|
|
int i = 0;
|
|
int ix = armour.Length / 2;
|
|
string Outpath = "assets\\minecraft\\textures\\";
|
|
|
|
|
|
foreach (PCKFile.FileData mf in Pck.file_entries)
|
|
{
|
|
System.IO.FileInfo file = new System.IO.FileInfo(Environment.CurrentDirectory + "\\Temp\\" + @"\" + mf.name);
|
|
file.Directory.Create(); // If the directory already exists, this method does nothing.
|
|
File.WriteAllBytes(Environment.CurrentDirectory + "\\Temp\\" + @"\" + mf.name, mf.data); //writes minefile to file
|
|
}
|
|
while (i <= ix)
|
|
{
|
|
try
|
|
{
|
|
Console.WriteLine(armour[i, 0] + " --- " + armour[i, 1]);
|
|
Directory.CreateDirectory(Path.GetDirectoryName(AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + armour[i, 0] + ".png"));
|
|
File.Copy(Environment.CurrentDirectory + "\\Temp\\res" + armour[i, 1] + ".png", AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + armour[i, 0] + ".png");
|
|
}
|
|
catch { }
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SplitTextures3(string path, Image Img)
|
|
{
|
|
int i = 0;
|
|
int ix = painting.Length / 5;
|
|
|
|
string Outpath = "assets\\minecraft\\textures\\painting\\";
|
|
|
|
Bitmap bm = (Bitmap)Img;
|
|
|
|
// Get the inputs.
|
|
int wid = bm.Width / 16;
|
|
int hgt = bm.Height / 16;
|
|
// Start splitting the Bitmap.
|
|
string piece_name = Path.GetFileNameWithoutExtension(path);
|
|
Directory.CreateDirectory(AppData + "\\" + metroTextBox1.Text + "\\" + Outpath);
|
|
while (i < ix)
|
|
{
|
|
Rectangle dest_rect = new Rectangle(0, 0, wid * int.Parse(painting[i, 3]), hgt * int.Parse(painting[i, 4]));
|
|
Bitmap piece = new Bitmap(wid * int.Parse(painting[i, 3]), hgt * int.Parse(painting[i, 4]));
|
|
using (Graphics gr = Graphics.FromImage(piece))
|
|
{
|
|
try
|
|
{
|
|
Rectangle source_rect = new Rectangle(wid * int.Parse(painting[i, 2]), hgt * int.Parse(painting[i, 1]), wid * int.Parse(painting[i, 3]), hgt * int.Parse(painting[i, 4]));
|
|
|
|
// Copy the piece of the image.
|
|
gr.Clear(Color.Transparent);
|
|
gr.DrawImage(bm, dest_rect, source_rect, GraphicsUnit.Pixel);
|
|
|
|
|
|
piece.Save(AppData + "\\" + metroTextBox1.Text + "\\" + Outpath + "\\" + (painting[i, 0]) + ".png", ImageFormat.Png);
|
|
|
|
gr.Dispose();
|
|
}
|
|
catch (Exception err) { Console.WriteLine(err.Message); }
|
|
}
|
|
i++;
|
|
}
|
|
|
|
bm.Dispose();
|
|
|
|
}
|
|
|
|
private void TextureConverterUtility_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
Directory.Delete(Environment.CurrentDirectory + "\\Temp", true);
|
|
}
|
|
}
|
|
}
|