Skocz do zawartości
  • 0

Błąd przy sprawdzaniu formatu czasu


Pytanie

Cześć, 

 

mam problem, który polega na wyświetlaniu błędu, kiedy zamiast odpowiedniej jednostki czasu użyje się czegokolwiek innego, powiedzmy "x". Przykładowo "/tempban player x test", gdzie poprawnym użyciem komendy jest np. "/tempban player 1d test"(1. argument - gracz, 2. argument - czas, 3. i kolejne argumenty - powod).

 

mój kod:

Błąd z konsoli: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

przepraszam za bałagan w kodzie, ale póki co chcę, aby plugin działał. później zajmę się uporządkowaniem kodu. 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
        long length = Long.parseLong(args[1].substring(0, args[1].length() - 1));

To nie powinno być parsowane jako long, tylko int.

          default:
                return null;

Jak gracz wpisze zły format to wywali nulla, powinno byc po prostu break i dodatkowo napisane do gracza ze uzyj niepoprawnego formatu

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 0
17 godzin temu, kerpson napisał:

Jak gracz wpisze zły format to wywali nulla, powinno byc po prostu break i dodatkowo napisane do gracza ze uzyj niepoprawnego formatu

tyle że jeśli coś takiego zrobię, to wyśle się wiadomość, że format czasu nie jest poprawny, ale kod w klasie TempbanListener, czy innej klasie, gdzie używam tej metody wykona się dalej, więc błąd w konsoli nadal będzie :/

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 0

sprbuj użyć takiego formatu

public static long getTime(String text) {
	int time = 0;
	try {
		time = Integer.parseInt(text.substring(0, text.length() - 1));
	} catch (NumberFormatException exception) {
		return 0L;
	}

	String timeStamp = text.substring(text.length() - 1);
	switch (timeStamp) {
		case "s":
			break;
		case "m":
			time = time * 60;
			break;
		case "h":
			time = time * 60 * 60;
			break;
		case "d":
			time = time * 60 * 60 * 24;
			break;
		default:
			break;
	}

	return System.currentTimeMillis() + (time * 1000);
}

i w klasie np. Long time = Klasa.getTime(args[1]);

Edytowane przez kerpson
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 0
Napisano (edytowane)

@kerpson

Dzięki, działa dobrze, ale mam jeszcze pytanie, jak mogę to przerobić tak, aby ban był nadawany nie przez nick, a przez UUID? Wiem mniej więcej jak to zrobić, ale jak pobrać UUID gracza offline? Nie mogę tego nigdzie znaleźć, a myślę, że to lepsza metoda

 

chodzi mi tu głównie o samą metodę, która pobierze ID gracza, który jest offline, ale nigdy nie grał na serwerze

 

 

 

A, no i dało by się jakoś przerobić metodę od pobierania czasu tak, aby po wpisaniu np. /tempban VIROZ_PL 1d12h x, gracz otrzymywał bana mute, czy cokolwiek innego na 1 dzień i 12h (ale nie jest to konieczne, w koncu zawsze mozna dac bana na 36 godz)

Edytowane przez Viroz
Odnośnik do odpowiedzi
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ę...