Skocz do zawartości
  • 0

Pobieranie wartości z opisu.


Pytanie

Witam. Mam problem który próbuje rozwiązać już kilka godzin, mianowicie, chodzi o to że potrzebuje pobierać wartość z opisu przedmiotu.

W opisie będzie takie coś: 

ItemStack itemToGet = new ItemStack(itemType);{
								ItemMeta itemMeta = itemToGet.getItemMeta();
								List<String> lore = new ArrayList<>();
								lore.add(" ");
								lore.add(" ");
								lore.add(ChatColor.GREEN + "    Dodatkowe punkty zycia: " + ChatColor.DARK_GREEN + healthToAdd);
								itemMeta.setLore(lore);
								lore.clear();
								itemToGet.setItemMeta(itemMeta);
							}

Próbowałem odczytywać to już takim czymś:

	@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		if(command.getName().equalsIgnoreCase("check")) {
			Player p = (Player) sender;
			List<String> lore = p.getInventory().getItemInMainHand().getItemMeta().getLore();
			int hpToAdd;
			
			for(String lineOfLore : lore) {
				if(lineOfLore.contains("Dodatkowe punkty zycia: ")) {
					sender.sendMessage("Dziala.");
					return true;
				}else {
					sender.sendMessage("Nie dziala.");
					return true;
				}
			}
		}
		return false;
	}

No ale cały czas wysyła że nie działa, nie wiem w czym problem, szukałem to już na kilku stronach.

Proszę o pomoc, z góry dzięki.

Odnośnik do komentarza
https://skript.pl/temat/32325-pobieranie-warto%C5%9Bci-z-opisu/
Udostępnij na innych stronach

14 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
9 minut temu, _GRIERIOR_ napisał:

Może zamiast pobrać do zmiennej z opisu, daj do opisu zmienną?

if(lineOfLore.contains("Dodatkowe punkty zycia: ")) {

bo moze po spacji jest dalej tekst :O 

Odnośnik do komentarza
https://skript.pl/temat/32325-pobieranie-warto%C5%9Bci-z-opisu/#findComment-210112
Udostępnij na innych stronach

  • 0
24 minuty temu, Queito napisał:

if(lineOfLore.contains("Dodatkowe punkty zycia: ")) {

bo moze po spacji jest dalej tekst :O 

Faktycznie, jest, ale ja chce sprawdzać czy przechowuje mniej więcej to, a nie dokładnie to.

Odnośnik do komentarza
https://skript.pl/temat/32325-pobieranie-warto%C5%9Bci-z-opisu/#findComment-210115
Udostępnij na innych stronach

  • 0

to robisz sobie obiekt np. Item, potem cos w stylu ItemManager gdzie przechowujesz wszystkie obiekty "Item", i potem po nazwie itemu gettujesz sobie obiekt i z niej zwracasz np. dodatkowy damage itp.

Odnośnik do komentarza
https://skript.pl/temat/32325-pobieranie-warto%C5%9Bci-z-opisu/#findComment-210120
Udostępnij na innych stronach

  • 0
7 minut temu, Queito napisał:

to robisz sobie obiekt np. Item, potem cos w stylu ItemManager gdzie przechowujesz wszystkie obiekty "Item", i potem po nazwie itemu gettujesz sobie obiekt i z niej zwracasz np. dodatkowy damage itp.

To będzie mało wydajne, przechowywanie setek a nawet tysięcy przedmiotów zamiast po prostu czytać to co mają w opisie.

Odnośnik do komentarza
https://skript.pl/temat/32325-pobieranie-warto%C5%9Bci-z-opisu/#findComment-210121
Udostępnij na innych stronach

  • 0

A jak tak chcesz zrobić to:

zforeachuj każdą linjke z loru, splituj np. znakiem ':' i wtedy masz 2 stringi "co" - wartosc jako string

i sprawdzaj jezeli string[0].equalsignore# = hp

to wtedy bierz wartosc i elo

Odnośnik do komentarza
https://skript.pl/temat/32325-pobieranie-warto%C5%9Bci-z-opisu/#findComment-210123
Udostępnij na innych stronach

  • 0

Dobrze, tak więc zrobiłem, i teraz wszystko działa poprawnie, przeszukuje tą liste po kolei, i w razie problemu nie zatrzymuje się, tylko idzie dalej, jak napotka na dany tekst w opisie, to robi coś, i się zatrzymuje.
 

		if(command.getName().equalsIgnoreCase("check")) {
			Player p = (Player) sender;
			List<String> lore = p.getInventory().getItemInMainHand().getItemMeta().getLore();
			
			for(String line : lore) {
				if(line.contains(ChatColor.GREEN + "    Dodatkowe punkty zycia: ")) {
					String hpAdd = line.substring((ChatColor.GREEN + "    Dodatkowe punkty zycia: " + ChatColor.DARK_GREEN).length()).trim();
					int hpToAdd;
					try {
						hpToAdd = Integer.parseInt(hpAdd);
					}catch (Exception e) {
						return true;
					}
					sender.sendMessage(hpAdd);
					return true;
				}else {
					sender.sendMessage("Nie dziala.");
				}
			}
			return true;
		}
		return false;
	}
}

 

Odnośnik do komentarza
https://skript.pl/temat/32325-pobieranie-warto%C5%9Bci-z-opisu/#findComment-210198
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...