Skocz do zawartości
  • 0

Czemu to nie dziala v2


Ever

Pytanie

Witam, robie plugin na wiadomosci o dolaczeniu z configiem. Zrobilem prosty plugin ale wyswietla mi sie na czerwono setQuitMessage..

package me.hotangel2k17.sidebar;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener{
	
	boolean title = false;
	
	@Override
	public void onEnable(){
		saveDefaultConfig();
		this.getConfig().getBoolean("title", title);
		System.out.println("wlaczanie...");
	}
	@Override
	public void onDisable(){
		System.out.println("wylaczanie...");
	}
	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		Player p = e.getPlayer();
		
		if(title == false){
			for (String s : Main.getPlugin(Main.class).getConfig().getStringList("message.sendJoin")) {
		        s = s.replace("&", "§");
		        s = s.replace("{NICK}", p.getName());
				e.setJoinMessage(s);
			}
			for (String f : Main.getPlugin(Main.class).getConfig().getStringList("message.sendQuit")) {
		        f = f.replace("&", "§");
		        f = f.replace("{NICK}", p.getName());
		        e.setQuitMessage(f);
		       
			}
		}
	}
}

 

Odnośnik do komentarza
https://skript.pl/temat/25226-czemu-to-nie-dziala-v2/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Pozwolę, że się wtrącę. Jestem zdania, że Pan @yooniks nie pytał się o to, jak to działa, lub co to jest, tylko zdziwił się, dlaczego tak napisałeś tą linijkę kodu. Kod, który zacytował nie ma prawa działać. A dlaczego, możliwe, że zapytasz? Odpowiedź jest bardzo prosta, drugi parametr w metodzie getBoolean nie odnosi się do zmiennej, której chcesz nadać tą wartość, a do domyślnej wartości, która zostanie zwrócona w momencie, gdy w pliku konfiguracyjnym plugin nie znajdzie ścieżki, którą podałeś.

Rozwiązanie jest również banalne, wystarczy zrobić coś takiego:

	this.title = this.getConfig().getBoolean("title", false);
	
Edytowane przez Nieaktywny
Odnośnik do komentarza
https://skript.pl/temat/25226-czemu-to-nie-dziala-v2/#findComment-167542
Udostępnij na innych stronach

  • 0

@Jaqobb 

	this.title = this.getConfig().getBoolean("title", false);
final String path = "title";	
this.title = this.getConfig().getBoolean(path);

^^ 

no i @Ever tak jak napisal Jaqobb , to ci nie ustawia wartosci dla title tylko po prostu pobierasz cos z configu, a nic z tym nie robisz.

Odnośnik do komentarza
https://skript.pl/temat/25226-czemu-to-nie-dziala-v2/#findComment-167543
Udostępnij na innych stronach

  • 0

@yooniks

Nie widzę sensu robienia specjalnej zmiennej lokalnej, dodatkowo finalnej, skoro wartości z niej używasz tylko raz. Oczywiście, jest to jak najbardziej tylko zmiana kosmetyczna, ale po co dodawać linijkę kodu, jak bez niej kod jest i krótszy, i bardziej zrozumiały, a przynajmniej dla mnie bardziej zrozumiały?

W przypadku próby pobrania wartości z pliku, gdy ścieżka będzie błędna, lub gdy będzie zawierała zły typ, nie podanie domyślnej wartości spowoduje wyrzucenie błędu w konsoli. Jak ktoś go chce zostawić, by poinformować osobę korzystającą z pluginu, to spoko, niech będzie. Inni czasami wolą dać jakąś domyślną wartość by się plugin w żaden sposób nie zepsuł w przyszłości.

Edytowane przez Nieaktywny
Odnośnik do komentarza
https://skript.pl/temat/25226-czemu-to-nie-dziala-v2/#findComment-167544
Udostępnij na innych stronach

  • 0

@Jaqobbchodzilo mi o to drugie, 'def'

	this.title = this.getConfig().getBoolean("title", false);
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/configuration/MemorySection.html#getBoolean-java.lang.String-
def - The default value to return if the path is not found or is not a boolean.

jesli mu nie znajdzie 'title' w configu to bedzie mu zwracac false caly czas, a lepiej byloby jak by wiedzial ze cos zrobil zle, a nie zastanawial sie czemu mu zwraca false skoro w configu bedzie mial true, tak to sie z logow by domyslil ze nie zapisuje np. configu przy wlaczeniu pluginu czy cos

Odnośnik do komentarza
https://skript.pl/temat/25226-czemu-to-nie-dziala-v2/#findComment-167547
Udostępnij na innych stronach

  • 0
			for (String s : Main.getPlugin(Main.class).getConfig().getStringList("message.sendJoin")) {
		        s = s.replace("&", "§");
		        s = s.replace("{NICK}", p.getName());
				e.setJoinMessage(s);
			}

i to też nie ma sensu, po pierwsze od kolorowania teksu nie używa się replace tylko metody z ChatColor.translate....

A do tego jak masz listę wiadomości to ustawi ci wiadomość wejścia na jej ostatnią linijkę... nie wiem czemu nawet myślałeś że to może działać inaczej.
do tego nie widzę sensu używa tutaj listy, YAML wspiera wielolinijkowe teksty.

Odnośnik do komentarza
https://skript.pl/temat/25226-czemu-to-nie-dziala-v2/#findComment-167552
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ę...