Skocz do zawartości
  • 0

Czy da sie naprawic kolory w jednej klasie?


xEver1337

Pytanie

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
1 godzinę temu, TheMolkaPL napisał:

Przecież już Bukkit potrafi konwertować dowolny znak koloru metodą Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!. ;)

czy on mówił coś o bukkicie?

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! <- Masz tutaj klase ChatColor o którym mówił, TheMolkaPL. Jeżeli korzystasz z bukkit api lub bungee api, to nie musisz tego dodawać.

 

i wtedy robissz ChatColor.translateAlternateColorCodes('&', <String do zmiany kolorów>);

 

A, że chciałeś w oddzielnej klasie to chyba chodziło ci o zrobienie static stringa z chatcolorem

public static String fixColors(String s){

    return ChatColor.translateAlternateColorCodes('&', s);

}

I wtedy poprostu robisz <Nazwa_Klasy>.fixColors("&ctekst");

 

Tłumaczę jak debilowi, ale nudzi mi się to se popiszę xd

XD

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@TheMolkaPL nie zaczynam dopiero z pluginami i wiem ze istnieje chatColor ale robie configi i mam problemy zeby w nich dac normalny kolor oprocz paragrafow

Robie takie case z prostym configiem. Powiecie mi czy dobrze czy zle?

public class CaseListener implements Listener{
	
	@EventHandler(priority=EventPriority.MONITOR)
	public void onCasePlace(BlockPlaceEvent e){
		Block b = e.getBlock();
		
		if(e.isCancelled()){
			return;
		}
		if(b.getType() == Material.ENDER_CHEST){
			ItemMeta im = e.getPlayer().getItemInHand().getItemMeta();
			for(String s : Main.getPlugin(Main.class).getConfig().getStringList("case.name")){
				s = s.replace("&", "§");
				if(im.getDisplayName() == s){
					e.setCancelled(true);
			        ThreadLocalRandom random = ThreadLocalRandom.current();
			        int i = random.nextInt(1, 5);
			        if(i == 1){
			        	for(String a : Main.getPlugin(Main.class).getConfig().getStringList("case.drop.zestawI.name")){
			        		a = a.replace("&", "§");
			        		ItemStack aI = new ItemBuilder(Material.CHEST, 1).setName(a).setLore(Main.getPlugin(Main.class).getConfig().getStringList("case.drop.zestawI.lore")).addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 10).toItemStack();
			        		e.getPlayer().getInventory().addItem(aI);
			        	}
			        }
					
				}
				
			}
		}
		
	}

}

 

Edytowane przez HotAngel2K17
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
8 godzin temu, SKsteiner napisał:

czy on mówił coś o bukkicie?

XNjzSsC.png

 

34 minuty temu, HotAngel2K17 napisał:

@TheMolkaPL nie zaczynam dopiero z pluginami i wiem ze istnieje chatColor ale robie configi i mam problemy zeby w nich dac normalny kolor oprocz paragrafow

Właśnie do takich sytuacji jest translateAlternateColorCodes ;)

 

34 minuty temu, HotAngel2K17 napisał:

if (e.isCancelled()) {
    return;
}

 

Wystarczy, że do @EventHandler dodacie ignoreCancelled = true, a wtedy listener się nie wykona jeżeli event będzie anulowany ;)

 

34 minuty temu, HotAngel2K17 napisał:

s = s.replace("&", "§");

 

Używajcie wspomnianego translateAlternateColorCodes.

 

34 minuty temu, HotAngel2K17 napisał:

if (im.getDisplayName() == s) {

 

Nie tak się porównuje stringi - użyj equals(...). Poza tym nie powinieneś tak od razu wywoływać getDisplayName(), bez wcześniejszego wywołania hasDisplayName(). Na dowód nieprawidłowości == podam przykład, który zwróci false, w sytuacji gdzie wartość stringa jest identyczna. Wynika to z faktu, że == porównuje rzeczywiste ID obiektu, a nie jego wartości.

System.out.println(new String("Ala ma kota") == new String("Ala ma kota")); // -> false

 

34 minuty temu, HotAngel2K17 napisał:

e.setCancelled(true);

 

Anulujesz event w listenerze na priorytecie MONITOR co jest niedopuszczalne! Priorytet MONITOR służy tylko i wyłącznie do monitorowania danych i stanu obiektów. To samo tyczy się dawaniu graczowi przedmiotów. Użyj w tej sytuacji priorytetu HIGHEST.

 

34 minuty temu, HotAngel2K17 napisał:

ThreadLocalRandom random = ThreadLocalRandom.current();
int i = random.nextInt(1, 5);
if (i == 1) {
    ...
}

 

Hmm - wygląda na to, że chcesz użyć szansy. W takiej sytuacji lepiej użyć Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!, które zawsze zwraca wartość procentową. Metoda ta zwraca double w przedziale od 0.0 i mniejszego od 1.0.

if (Math.random() >= 0.2) {
    ...
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
17 godzin temu, SKsteiner napisał:

czy on mówił coś o bukkicie?

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! <- Masz tutaj klase ChatColor o którym mówił, TheMolkaPL. Jeżeli korzystasz z bukkit api lub bungee api, to nie musisz tego dodawać.

 

i wtedy robissz ChatColor.translateAlternateColorCodes('&', <String do zmiany kolorów>);

 

A, że chciałeś w oddzielnej klasie to chyba chodziło ci o zrobienie static stringa z chatcolorem


public static String fixColors(String s){

    return ChatColor.translateAlternateColorCodes('&', s);

}

I wtedy poprostu robisz <Nazwa_Klasy>.fixColors("&ctekst");

 

Tłumaczę jak debilowi, ale nudzi mi się to se popiszę xd

XD

to sie popisales ._.

nie dosc ze porawiasz osobe ktora napisała dobrze to jeszcze zamiast dac linka do dokumentacji dajesz zapewne kod z dekompilatora

Odnośnik do komentarza
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ę...