For future people looking it a way to do this is to save the actual ItemStack and see the config layout Code (Text): ItemStack dsword = new ItemStack(Material....) ItemMeta... enchant... lore... getConfig().set("Item"+dsword); As the set method accepts an object rather than a set variable
If ur asking how can you get it back im pretty sure u can get the object(item itself) and cast it to ItemStack ex: ItemStack itemfromconfig = (ItemStack) getConfig().get("Item")( or something like that i forgot how the return object method was named) You can change it directly through config,save then simply use it or make some in game commands to change each aspect and stuff..(up to you)
Also dont think lore.add accepts string list as base argument a more likely to work code would be something like List<String> lore = plugin.getConfig().getStringList("lore"); As the getStringList(as its named) return a object of type List
Ur code before with the arraylist was good,you just have to move the p.getinventory.additem under them This "p.getInventory().addItem(snow);" should be under setItemMeta
Is the config layed out right? Seems its unable to get the "lore" line properly try this as well Code (Text): meta.setLore(Main.getInstance().getConfig().getStringList("lore"));
Also im surprised some of these tricks wouldv done the work,are you sure the way ur getting the main instance is working?