Ir para conteúdo

Pegar Itemstack na config ?


zNicolas__

Posts Recomendados

Olá a todos, uma boa tarde, bom hoje venho com mais uma dúvida

Eu gostaria de uma solução pra pegar meu itemstack via config mas contanto que a config esteja assim 

 

PremiosCaixa:
  - 264 1 name:&cPremio 
  - 276 1 name:&cPremio ench:damage_all=1
  - 266 1 name:&cPremio

 

eu até tive uma solução e o código ficou assim: 

public void setItems() {
		List<String> section = config.getStringList("PremiosCaixa");
		for (String s : section) {
			List<String> liStrings = new ArrayList<>(Arrays.asList(s.split(" ")));
			if (liStrings.size() >= 3) {
				String name = "", ench = "";
				int level = 0;
				ArrayList<String> lore = new ArrayList<>();
				for (String string2 : liStrings) {
					String[] split = string2.split(":");
					String lk = split[1].replaceAll("&", "§").replaceAll("_", " ");
					if (string2.contains("name:")) {
						name = lk;
					}
					if (string2.contains("lore:")) {
						String[] lores = split[1].split("/");
						for (String string3 : lores) {
							if (string3.contains("_")) {
								lore.add(string3.replaceAll("_", " ").replaceAll("&", "§"));
							} else {
								lore.add(string3.replaceAll("&", "§"));
							}
						}
					}
					if (string2.contains("enchantment:")) {
						String enchs[] = string2.substring(12).split("=");
						ench = enchs[0];
						level = Integer.valueOf(enchs[1]);
					}
				}
				if (!name.isEmpty()) {
					if (!ench.isEmpty() && !lore.isEmpty()) {
						premios.add(ItemAPI.createitem(Material.getMaterial(Integer.valueOf(liStrings.get(0))),
								Integer.valueOf(liStrings.get(1)), name, lore, Enchantment.getByName(ench), level));
					} else if (!ench.isEmpty() && lore.isEmpty()) {
						premios.add(ItemAPI.createitem(Material.getMaterial(Integer.valueOf(liStrings.get(0))),
								Integer.valueOf(liStrings.get(1)), name, Enchantment.getByName(ench), level));
					} else if (ench.isEmpty() && lore.isEmpty()) {
						premios.add(ItemAPI.createitem(Material.getMaterial(Integer.valueOf(liStrings.get(0))),
								Integer.valueOf(liStrings.get(1)), name));
					}
				} else {
					premios.add(ItemAPI.createitem(Material.getMaterial(Integer.valueOf(liStrings.get(0))),
							Integer.valueOf(liStrings.get(1))));
				}
			} else {
				premios.add(ItemAPI.createitem(Material.getMaterial(Integer.valueOf(liStrings.get(0))),
						Integer.valueOf(liStrings.get(1))));
			}
		}
	}

 

Porém tenho certeza de que o código ficou enorme, gostaria de saber se algum de vocês tem alguma solução para obter o itemstack de forma mais prática

 

já pensei de tudo e pesquisei portanto, as pessoas dizem para setar na config como itemstack, mas eu não posso fazer isso porque quero resgatar o itemstack da config do jeito citado no primeiro código...

 

Agradeço desde já !!! ?

Editado por zNicolas__
Link para o comentário
Compartilhar em outros sites

Dessa maneira aqui você tem uma List<String>

PremiosCaixa:
  - 264 1 name:&cPremio 
  - 276 1 name:&cPremio ench:damage_all=1
  - 266 1 name:&cPremio

A unica maneira de pegar as dessa string sera usando split(" ") para splitar a cada espaço, e depois dentro desse ir fazendo ifs de acordo com cada ação que você quer tomar como setar o nome colocar encantamentos etc...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...