Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] przy tworzeniu pluginu


Rekomendowane odpowiedzi

Opublikowano

R

 

E

 

K

 

L

 

A

 

M

 

A

 

 

 

Witam.

Postanowiłem stworzyć plugin, którego funkcji nie chcę na razie ujawniać. Mój problem polega na sprawdzeniu, czy liczba w argumencie komendy jest równa liczbom w przedziale od 1 do 10.

 

Zamieszczam kawałek kodu

	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
	{
		if(cmd.getName().equalsIgnoreCase("...."))
		{
			if(sender.hasPermission("...."))
			{
				if (args.length == 1-2);
				{
					if (args.equals(1 - 10)) <- Chodzi mi o informację co tu wpisać, aby plugin sprawdził czy podana liczba mieści się w przedziale 1-10
					{
						for(int aa = 0;aa < args.length;aa++)
						sender.sendMessage("....");
					}
					else
						sender.sendMessage(ChatColor.RED +"Mozesz wybierac liczby z przedzialu 1-10");

Potrzebujesz pomocy przy pisaniu pluginu?

Potrzebujesz pomocy przy konfiguracji pluginu?

Napisz DO MNIE! Chętnie służę pomocą.

CPU: Intel Core i7-5930K  GPU: 2 x Gigabyte GeForce GTX 980 Ti 6144MB GDDR5 MOBO: ASRock X99 Extreme6/3.1 RAMHyperX Fury DDR4 2x16GB 2133MHz CL14 SSD: Crucial MX200 1TB HDD: Seagate 2TB

Laptop: Lenovo y700-17ISK Intel Core i7-6700HQ/GTX960m/16GB/256GB SSD+ 1TB HDD

Opublikowano
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
	{
		if(cmd.getName().equalsIgnoreCase("...."))
		{
			if(sender.hasPermission("...."))
			{
				if (args.length == 1-2); <= Według mnie to nie zadziała
				{
					if (1 <= args[0] <= 10)
					{
						for(int aa = 0;aa < args.length;aa++)
						sender.sendMessage("....");
					} else {
						sender.sendMessage(ChatColor.RED +"Mozesz wybierac liczby z przedzialu 1-10");
                                        }

liczę na lajka :)

Opublikowano

Faktycznie args length nie działało, ale niestety twoja metoda też nie działa. Jakieś inne pomysły?

 

@edit: problem rozwiązany. Chociaż trzeba zastosować 10 warunków, to jednak to działa

	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
	{
		if(cmd.getName().equalsIgnoreCase("..."))
		{
			if(sender.hasPermission("..."))
				{
				if (args.length == 1)
				if (args[0].contentEquals("10"))
						{
						for(int aa = 0;aa < args.length;aa++)
						sender.sendMessage("...");
					}
				else
					sender.sendMessage(ChatColor.RED +"Mozesz wybrac liczby z przedzialu 1-10");
				}

Potrzebujesz pomocy przy pisaniu pluginu?

Potrzebujesz pomocy przy konfiguracji pluginu?

Napisz DO MNIE! Chętnie służę pomocą.

CPU: Intel Core i7-5930K  GPU: 2 x Gigabyte GeForce GTX 980 Ti 6144MB GDDR5 MOBO: ASRock X99 Extreme6/3.1 RAMHyperX Fury DDR4 2x16GB 2133MHz CL14 SSD: Crucial MX200 1TB HDD: Seagate 2TB

Laptop: Lenovo y700-17ISK Intel Core i7-6700HQ/GTX960m/16GB/256GB SSD+ 1TB HDD

Opublikowano

 

Faktycznie args length nie działało, ale niestety twoja metoda też nie działa. Jakieś inne pomysły?

 

@edit: problem rozwiązany. Chociaż trzeba zastosować 10 warunków, to jednak to działa

	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
	{
		if(cmd.getName().equalsIgnoreCase("..."))
		{
			if(sender.hasPermission("..."))
				{
				if (args.length == 1)
				if (args[0].contentEquals("10"))
						{
						for(int aa = 0;aa < args.length;aa++)
						sender.sendMessage("...");
					}
				else
					sender.sendMessage(ChatColor.RED +"Mozesz wybrac liczby z przedzialu 1-10");
				}
if( (Integer.parseInt(args[0]) > 0) && (Integer.parseInt(args[0]) <= 10) ){
 
}

Ludzka metoda, zastępuje te całe twoje 10 warunków.

Opublikowano

 

Faktycznie args length nie działało, ale niestety twoja metoda też nie działa. Jakieś inne pomysły?

 

@edit: problem rozwiązany. Chociaż trzeba zastosować 10 warunków, to jednak to działa

	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
	{
		if(cmd.getName().equalsIgnoreCase("..."))
		{
			if(sender.hasPermission("..."))
				{
				if (args.length == 1)
				if (args[0].contentEquals("10"))
						{
						for(int aa = 0;aa < args.length;aa++)
						sender.sendMessage("...");
					}
				else
					sender.sendMessage(ChatColor.RED +"Mozesz wybrac liczby z przedzialu 1-10");
				}

JPRLD...

if( (Integer.parseInt(args[0]) > 0) && (Integer.parseInt(args[0]) <= 10) ){
 
}

Ludzka metoda, zastępuje te całe twoje 10 warunków.

 

Uf... jednak ktoś tu żyje!

Z drobnym wyjątkiem :P

 

Takie dwa bardziej eem "stabline" rozwiązania

			try {
				int i = Integer.parseInt(args[0]);
				if (i >= 1 && i <= 10) {
					// Spełnia warunek.
				} else {
					// dupa
				}
			} catch (NumberFormatException e) {
				// To nie jest numer!
			}

			int ii = 0;
			try {
				ii = Integer.parseInt(args[0]);
			} catch (NumberFormatException e) {
				// To nie jest numer!
			}
			if (ii >= 1 && ii <= 10) {
				// Spełnia warunek.
			} else {
				// dupa
			}

Działanie takie same :)

 

EDIT: PS można też sprawdzić używając regEx ale nie wiem czy to ma jakiś sens :D

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

JPRLD...

Uf... jednak ktoś tu żyje!

Z drobnym wyjątkiem :P

 

Takie dwa bardziej eem "stabline" rozwiązania

			try {
				int i = Integer.parseInt(args[0]);
				if (i >= 1 && i <= 10) {
					// Spełnia warunek.
				} else {
					// dupa
				}
			} catch (NumberFormatException e) {
				// To nie jest numer!
			}

			int ii = 0;
			try {
				ii = Integer.parseInt(args[0]);
			} catch (NumberFormatException e) {
				// To nie jest numer!
			}
			if (ii >= 1 && ii <= 10) {
				// Spełnia warunek.
			} else {
				// dupa
			}

Działanie takie same :)

 

EDIT: PS można też sprawdzić używając regEx ale nie wiem czy to ma jakiś sens :D

 

True, chociaż ja wolałbym po prostu stworzyć funkcję, która sprawdza czy się da to zrobić.

public boolean isInteger(String s) {
   try {
       Integer.parseInt(s);
   } catch (NumberFormatException e) {
       return false;
   }
   return true;
}

A warunek wyglądałby tak

if(isInteger(args[0])){
    if( (Integer.parseInt(args[0]) > 0) && (Integer.parseInt(args[0]) <= 10) ){
 
    }
}

Ew. tak:

if(isInteger(args[0])){
    int i = Integer.parseInt(args[0]);
    if( (i > 0) && (i <= 10) ){
 
    }
}
Opublikowano

 

 

True, chociaż ja wolałbym po prostu stworzyć funkcję, która sprawdza czy się da to zrobić.

public boolean isInteger(String s) {
   try {
       Integer.parseInt(s);
   } catch (NumberFormatException e) {
       return false;
   }
   return true;
}

A warunek wyglądałby tak

if(isInteger(args[0])){
    if( (Integer.parseInt(args[0]) > 0) && (Integer.parseInt(args[0]) <= 10) ){
 
    }
}

Ew. tak:

if(isInteger(args[0])){
    int i = Integer.parseInt(args[0]);
    if( (i > 0) && (i <= 10) ){
 
    }
}

Teoretycznie można ale ma 1 ważną wadę, musisz zmieniać String na int aż 2 razy.

 

Jak zwykle 2 rozwiązania, te 2 jest raczej tutaj nie potrzebne :D

public int isInteger(String s) {
  try {
   return Integer.parseInt(s);
  } catch (NumberFormatException e) {
   return Integer.MIN_VALUE;
  }
}



		int e = isInteger(args[0]);
		if ((e > 0) && (e <= 10)) {

		}
OR
		int e2 = isInteger(args[0]);
		if ((e2 != Integer.MIN_VALUE) && (e2 > 0) && (e2 <= 10)) {

		}

Więc z funkcjami trzeba uważać :D by nie robić czegoś 2x

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...