Skocz do zawartości
  • 0

hash mapa


kerpson

Pytanie

Ostatnio zacząłem się bawić w hash mape

Kodem ktory nie dziala, jest on na zasadzie, gdy ktos zostanie zabity, to go wyrzuca, to dziala, ale jak wchodzi nie wyswietla sie wiadomosc

 

public class Kills implements Listener{
	
	HashMap<String, Boolean> death = new HashMap<String, Boolean>();
	
	@EventHandler
	public void onDeath(PlayerDeathEvent e){
		
		Player p = (Player) e.getEntity();
		World w = p.getWorld();
		
		death.put(p.getPlayer().getDisplayName(), true);
		w.strikeLightningEffect(p.getLocation());
		Bukkit.getScheduler ().runTaskLater (Main.getPlugin(Main.class), () -> e.getEntity().kickPlayer(ChatColor.translateAlternateColorCodes('&', "&4Zginales ! &cWejdz ponownie na serwer")), 6);
		
		
	}
	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		
		Player p = (Player) e.getPlayer();
		
		if(death.get(p.getPlayer().getDisplayName()) == Boolean.TRUE){
			p.sendMessage("twoja matka to [ciach]");
			death.put(p.getPlayer().getDisplayName(), false);
		}
	}
}

 

Edytowane przez LjayPL789
bludis

Usuwam wulgaryzm ciężki.
Warn nadany :bankappa:

Notatka dodana przez bludis

Odnośnik do komentarza
https://skript.pl/temat/29761-hash-mapa/
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
21 godzin temu, HotAngel2K17 napisał:

Ostatnio zacząłem się bawić w hash mape

Kodem ktory nie dziala, jest on na zasadzie, gdy ktos zostanie zabity, to go wyrzuca, to dziala, ale jak wchodzi nie wyswietla sie wiadomosc

 


public class Kills implements Listener{
	
	HashMap<String, Boolean> death = new HashMap<String, Boolean>();
	
	@EventHandler
	public void onDeath(PlayerDeathEvent e){
		
		Player p = (Player) e.getEntity();
		World w = p.getWorld();
		
		death.put(p.getPlayer().getDisplayName(), true);
		w.strikeLightningEffect(p.getLocation());
		Bukkit.getScheduler ().runTaskLater (Main.getPlugin(Main.class), () -> e.getEntity().kickPlayer(ChatColor.translateAlternateColorCodes('&', "&4Zginales ! &cWejdz ponownie na serwer")), 6);
		
		
	}
	@EventHandler
	public void onJoin(PlayerJoinEvent e){
		
		Player p = (Player) e.getPlayer();
		
		if(death.get(p.getPlayer().getDisplayName()) == Boolean.TRUE){
			p.sendMessage("twoja matka to [ciach]");
			death.put(p.getPlayer().getDisplayName(), false);
		}
	}
}

 

tak jak wyzej ^
do tego nie trzymaj implementacji mapy:

HashMap<K, V> map = new HashMap<>();

tylko interfejs:

Map<K, V> map = new HashMap<>();

tutaj nie ma to prawie znaczenia, ale rób to tak jak napisałem, bo potem wejdzie ci to w nawyk i bedziesz, źle robił =/ tutaj masz lepiej wytlumaczone i przykład:

https://www.p-programowanie.pl/paradygmaty-programowania/zasady-solid/ (spójrz na linkov substitution) 

 

Cytat

	public void onJoin(PlayerJoinEvent e){
		
		Player p = (Player) e.getPlayer();
		
		if(death.get(p.getPlayer().getDisplayName()) == Boolean.TRUE){
			p.sendMessage("twoja matka to [ciach]");
			death.put(p.getPlayer().getDisplayName(), false);
		}
	}

nick gracza może nie być w mapce i wtedy rzuca nulla =( 

czemu castujesz playera do playera? przeciez nawet IDE pewnie ci pokazuje ze to jest niepotrzebne..

czemu z playera pobierasz jeszcze raz playera i dopiero jego displayname?
po co trzymać true/false w mapce skoro możesz użyć coś w stylu listy, setów i wtedy tylko sprawdzasz czy jest - jezeli tak to true, jezeli nie to false i zamiast putowania false/true to wyrzucasz/wrzucasz do listy/seta czy czegos tam

no i ten task z kickaniem tez chyba niepotrzebny, a efekt i tak słaby daje bo 20L to 1 sekunda, 6L = 6/20 sekundy więc prawie niewidoczne, a niepotrzebnie to wykonujesz

do tego przetrzymujesz nick gracza, a co jak on go zmieni? trzymaj uuid, bo one jest unikalne i sie nie zmienia ;)

a co do tego, że nie działa - wywal casta, wywal getPlayer(), używaj uuid zamiast nicku gracza i przed get dodaj sprawdzanie czy gracz jest w mapce

Edytowane przez stefanik11
stefanik11

Dostosowuje jeden z cytatów do ciemnego stylu forum.

Notatka dodana przez stefanik11

Odnośnik do komentarza
https://skript.pl/temat/29761-hash-mapa/#findComment-195501
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ę...