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

Array lista...


MieciuXD1234

Rekomendowane odpowiedzi

Opublikowano

Siema, mam pewien problem z arraylistą, bo zrobiłem coś takiego:

	 @EventHandler
	    public void onPlayerMove(final PlayerMoveEvent e) {
		 Player p = e.getPlayer();
		 if (frozen.contains(p.getName())) {
			 e.setTo(e.getFrom());
			 p.sendMessage("Nie mozesz sie ruszac.");
		 }
	 }
	 @EventHandler
	    public void onBlockBreak(final BlockBreakEvent e) {
	        Player p = e.getPlayer();
	        if (frozen.contains(p.getName())) {
	        	e.setCancelled(true);
	        	p.sendMessage("Nie mozesz nic niszczyc.");
	        }
	 }
	    @EventHandler
	    public void onBlockPlace(final BlockPlaceEvent e) {
	        Player p = e.getPlayer();
	        if (frozen.contains(p.getName())) {
	        	e.setCancelled(true);
	        	p.sendMessage("Nie mozesz nic stawiac");
	        }
	    }

 

I coś takiego:

if(label.equalsIgnoreCase("cmd1")) {

                        if (!frozen.contains(t)) {
                            frozen.add(t.getName());
                            t.setAllowFlight(false);
                            t.setFlying(false);    
                            System.out.println(" !FROZEN");
                        }

}



if(label.equalsIgnoreCase("cmd2")) {

                        if (frozen.contains(t)) {
                            frozen.remove(t.getName());
                            t.setAllowFlight(false);
                            t.setFlying(false);    
                            System.out.println("FROZEN");
                        }

}

I problem jest taki że to nie działa. Debugowałem to (wyświetlało). Brak błędu. Nie wiem co jest grane no chyba, że nie zrozumiałem arraylisty ;/.

Opublikowano

daj cały kod, i mam nadzieje ,że label:

if(label.equalsIgnoreCase("cmd2")) {

to nie string..

 

+

                        if (frozen.contains(t)) {
                            frozen.remove(t.getName());

zauważ ,że raz sprawdzasz czy player (t) a raz string (t.getName())

i:

	 @EventHandler
	    public void onPlayerMove(final PlayerMoveEvent e) {
		 Player p = e.getPlayer();
		 if (frozen.contains(p.getName())) {
			 e.setTo(e.getFrom());
			 p.sendMessage("Nie mozesz sie ruszac.");
		 }
	 }

jak będziesz ruszać myszką to bedzie tak jakbys sie ruszal, lepiej sprawdzac tak:

		final Location from = e.getFrom();
		final Location to = e.getTo();
		if ((from.getBlockX() != to.getBlockX()) || (from.getBlockY() != to.getBlockY()) || (from.getBlockZ() != to.getBlockZ()) ||  (from.getWorld() != to.getWorld())){

 

 

Aktualnie interesuję się javą, powoli ogarniam java swing i awt, czasem bawię się HTML.

Opublikowano
Cytat

	public Map<Player, Boolean> save;
	public Map<String, Location> staraT;
	ArrayList<String> frozen;
	
	public ControlManager() {
		save = new HashMap<Player, Boolean>();
		staraT = new HashMap<String, Location>();
		frozen = new ArrayList<String>();
	}
 
	 @EventHandler
	    public void onPlayerMove(final PlayerMoveEvent e) {
		 Player p = e.getPlayer();
		 if (frozen.contains(p.getName())) {
			 e.setTo(e.getFrom());
			 p.sendMessage("Nie mozesz sie ruszac.");
		 }
	 }
	 @EventHandler
	    public void onBlockBreak(final BlockBreakEvent e) {
	        Player p = e.getPlayer();
	        if (frozen.contains(p.getName())) {
	        	e.setCancelled(true);
	        	p.sendMessage("Nie mozesz nic niszczyc.");
	        }
	 }
	    @EventHandler
	    public void onBlockPlace(final BlockPlaceEvent e) {
	        Player p = e.getPlayer();
	        if (frozen.contains(p.getName())) {
	        	e.setCancelled(true);
	        	p.sendMessage("Nie mozesz nic stawiac");
	        }
	    }
	
	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		Player p = (Player) sender;
		World w = p.getLocation().getWorld();
		double x = Main.getInst().getConfig().getDouble("spawn-x");
		double y = Main.getInst().getConfig().getDouble("spawn-y");
		double z = Main.getInst().getConfig().getDouble("spawn-z");
		double x1 = Main.getInst().getConfig().getDouble("adminspawn-x");
		double y1 = Main.getInst().getConfig().getDouble("adminspawn-y");
		double z1 = Main.getInst().getConfig().getDouble("adminspawn-z");
		
		if (label.equalsIgnoreCase("kontroluj")) {
			if (args.length == 0) {
				p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("cmdcontrol")));
				return false;
			}
			if (args.length == 1) {
				Player t = Bukkit.getPlayer(args[0]);
				if (t == null) {
					p.sendMessage("Gracz ten jest offline");
				} else {
					if (save.containsKey(t) && save.get(t)) {
						p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("graczkontrolowany").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
						return true;
					} else {
						save.remove(t);
						save.put(t, true);
						t.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlagraczastart").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
						p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlaadminastart").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
						Title.sendTitle(t, 20, 60, 20, "&cJestes kontrolowany!", "&cPrzez administratora &7" + p.getName().replace("§", "&"));
						if (!frozen.contains(t)) {
							frozen.add(t.getName());
			                t.setAllowFlight(false);
			                t.setFlying(false);	
			                System.out.println("asdasfasfasfasf !FROZEN");
						}
						staraT.put(t.getName(), t.getLocation());
						p.teleport(new Location(w, x, y, z));
						t.teleport(new Location(w, x, y, z));
						return true;
					}
				}
			} else if (args.length == 2) {
				if (args[1].equalsIgnoreCase("stop")) {
					final Location staralocT = staraT.get(args[0]);
					Player t = Bukkit.getPlayer(args[0]);
					if (t == null) {
						p.sendMessage("Gracz ten jest offline");
					} else {
						if (!save.containsKey(t) || !save.get(t)) {
							p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("graczniekontrolowany").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
							return true;
						} else {
							save.remove(t);
							save.put(t, false);
							t.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlagraczastop").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
							p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlaadminastop").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
							Title.sendTitle(t, 20, 40, 20, "&aZakonczono kontrolowanie!", "&aKontrolowal Cie: &6" + p.getName().replace("§", "&"));
							if (frozen.contains(t)) {
								frozen.remove(t.getName());
				                t.setAllowFlight(true);
				                t.setFlying(true);	
				                System.out.println("asdasfasfasfasf");
							}
							t.teleport(staralocT);
							p.teleport(new Location(w, x1, y1, z1));		
							staraT.remove(t);
							return false;

						}
					}
				}
			}

 

Tak label to String, ale jaka to jest różnica skoro: 

- Skraca kod

- Spełnia swoje działania

Po co mam pisać cmd.getName().......

jak wystarczy label....

.

Sprawdzałem to w szelak wcześniej i raz było

tak, że ustawiało frozen ale później jeśli chciałem usunąć t to nadal miałem frozen.

Opublikowano
8 minut temu, MieciuXD1234 napisał:

Tak label to String, ale jaka to jest różnica skoro: 

- Skraca kod

- Spełnia swoje działania

Po co mam pisać cmd.getName().......

jak wystarczy label....

.

Sprawdzałem to w szelak wcześniej i raz było

tak, że ustawiało frozen ale później jeśli chciałem usunąć t to nadal miałem frozen.

Ale.. 

Cytat

if (label.equalsIgnoreCase("kontroluj")) {

if(cmd.getName()..)
 

 

 

pierwsze co wpada w oczy to to:

						if (!frozen.contains(t)) {
							frozen.add(t.getName());

sprawdzasz czy gracz jest w arrayliscie, a powinnes sprawdzac string - czyli nick gracza.

						if (!frozen.contains(t.getName())) {
							frozen.add(t.getName());

i tak samo z resztą. - mam nadzieje ze wiesz o co chodzi

 

Aktualnie interesuję się javą, powoli ogarniam java swing i awt, czasem bawię się HTML.

Opublikowano
Przed chwilą, ˈyøøniks napisał:

Ale.. 

if(cmd.getName()..)
 

 

 

pierwsze co wpada w oczy to to:


						if (!frozen.contains(t)) {
							frozen.add(t.getName());

sprawdzasz czy gracz jest w arrayliscie, a powinnes sprawdzac string - czyli nick gracza.


						if (!frozen.contains(t.getName())) {
							frozen.add(t.getName());

i tak samo z resztą. - mam nadzieje ze wiesz o co chodzi

Tak, dodałem .getName() ale nadal nie działa

Opublikowano

Target, Czyli args[0]

Cytat

Player t = Bukkit.getPlayer(args[0]);
				if (t == null) {
					p.sendMessage("Gracz ten jest offline");

Przecież jest to w kodzie...

Opublikowano

Podales nizej nie zauwazylem... 

Po pierwsze sprawdzasz czy caly obiekt gracza jest w liscie a powinienes sprawdzic czy jego nick jest

if (!frozen.contains(t)) {

 

A po 2 to liste na uuid nie string

new ArrayList<UUID>();

 

A po 3, boli i to jeszcze odwrotnie zrobione xD.

Title.sendTitle(t, 20, 60, 20, "&cJestes kontrolowany!", "&cPrzez administratora &7" + p.getName().replace("§", "&"));

 

Opublikowano
1 minutę temu, __AHA__ napisał:

Podales nizej nie zauwazylem... 

Po pierwsze sprawdzasz czy caly obiekt gracza jest w liscie a powinienes sprawdzic czy jego nick jest


if (!frozen.contains(t)) {

 

A po 2 to liste na uuid nie string


new ArrayList<UUID>();

 

A po 3, boli.


Title.sendTitle(t, 20, 60, 20, "&cJestes kontrolowany!", "&cPrzez administratora &7" + p.getName().replace("§", "&"));

 

Wszystko zostało zmienione na nick.

Po co UUID?

Co boli? Bo nie rozumiem? Title jak title?? Nie ma nic wspólnego z tematem ;))

 

 

Opublikowano

To tak:

- podaj aktualny kod skoro twierdzisz, że zmieniłeś

- UUID z uwagi na wydajność

- rejestrujesz w ogole te eventy?

- tworzysz w ogole ta liste?

- przechowujesz cale obiekty gracza? zle na tym wyjdziesz

new HashMap<Player, Boolean>();

- 'Co boli? Bo nie rozumiem? ' Zrobiles to odwrotnie i w sposób dla debili. Zrób taką funkcję i jej użuwaj

    public static String fixColors(final String message) {
        return ChatColor.translateAlternateColorCodes('&', message);
    }
Title.sendTitle(t, 20, 60, 20, fixColors("&cJestes kontrolowany!"), fixColors("&cPrzez administratora &7" + p.getName()));

 

Opublikowano
1 minutę temu, __AHA__ napisał:

To tak:

- podaj aktualny kod skoro twierdzisz, że zmieniłeś

- UUID z uwagi na wydajność

- rejestrujesz w ogole te eventy?

- tworzysz w ogole ta liste?

- 'Co boli? Bo nie rozumiem? ' Zrobiles to odwrotnie i w sposób dla debili. Zrób taką funkcję i jej użuwaj


    public static String fixColors(final String message) {
        return ChatColor.translateAlternateColorCodes('&', message);
    }

Title.sendTitle(t, 20, 60, 20, fixColors("&cJestes kontrolowany!"), fixColors("&cPrzez administratora &7" + p.getName()));

 

Przestań mi się tu wpatrywać w szczegóły skoro i tak to zmiennie zawsze tak robię w klasie Utils nie musisz mi tego tłumaczyć?? To jest tylko testowy plugin żeby nie było błędów itd. A ty mi wlatujesz z bez sensownymi wypowiedziami. Nie nie rejestruje te Eventy naprawdę...??? Umiesz czytać? 

Cytat

Sprawdzałem to w szelak wcześniej i raz było

tak, że ustawiało frozen ale później jeśli chciałem usunąć t to nadal miałem frozen.

	public Map<Player, Boolean> save;
	public Map<String, Location> staraT;
	ArrayList<String> frozen;
	
	public ControlManager() {
		save = new HashMap<Player, Boolean>();
		staraT = new HashMap<String, Location>();
		frozen = new ArrayList<String>();
	}
 
	 @EventHandler
	    public void onPlayerMove(final PlayerMoveEvent e) {
		 Player p = e.getPlayer();
		 if (frozen.contains(p.getName())) {
			 e.setTo(e.getFrom());
			 p.sendMessage("Nie mozesz sie ruszac.");
		 }
	 }
	 @EventHandler
	    public void onBlockBreak(final BlockBreakEvent e) {
	        Player p = e.getPlayer();
	        if (frozen.contains(p.getName())) {
	        	e.setCancelled(true);
	        	p.sendMessage("Nie mozesz nic niszczyc.");
	        }
	 }
	    @EventHandler
	    public void onBlockPlace(final BlockPlaceEvent e) {
	        Player p = e.getPlayer();
	        if (frozen.contains(p.getName())) {
	        	e.setCancelled(true);
	        	p.sendMessage("Nie mozesz nic stawiac");
	        }
	    }
	
	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		Player p = (Player) sender;
		World w = p.getLocation().getWorld();
		double x = Main.getInst().getConfig().getDouble("spawn-x");
		double y = Main.getInst().getConfig().getDouble("spawn-y");
		double z = Main.getInst().getConfig().getDouble("spawn-z");
		double x1 = Main.getInst().getConfig().getDouble("adminspawn-x");
		double y1 = Main.getInst().getConfig().getDouble("adminspawn-y");
		double z1 = Main.getInst().getConfig().getDouble("adminspawn-z");
		
		if (label.equalsIgnoreCase("kontroluj")) {
			if (args.length == 0) {
				p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("cmdcontrol")));
				return false;
			}
			if (args.length == 1) {
				Player t = Bukkit.getPlayer(args[0]);
				if (t == null) {
					p.sendMessage("Gracz ten jest offline");
				} else {
					if (save.containsKey(t) && save.get(t)) {
						p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("graczkontrolowany").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
						return true;
					} else {
						save.remove(t);
						save.put(t, true);
						t.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlagraczastart").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
						p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlaadminastart").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
						Title.sendTitle(t, 20, 60, 20, "&cJestes kontrolowany!", "&cPrzez administratora &7" + p.getName().replace("§", "&"));
						if (!frozen.contains(t.getName())) {
							frozen.add(t.getName());
			                t.setAllowFlight(false);
			                t.setFlying(false);	
			                System.out.println("asdasfasfasfasf !FROZEN");
						}
						staraT.put(t.getName(), t.getLocation());
						p.teleport(new Location(w, x, y, z));
						t.teleport(new Location(w, x, y, z));
						return true;
					}
				}
			} else if (args.length == 2) {
				if (args[1].equalsIgnoreCase("stop")) {
					final Location staralocT = staraT.get(args[0]);
					Player t = Bukkit.getPlayer(args[0]);
					if (t == null) {
						p.sendMessage("Gracz ten jest offline");
					} else {
						if (!save.containsKey(t) || !save.get(t)) {
							p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("graczniekontrolowany").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
							return true;
						} else {
							save.remove(t);
							save.put(t, false);
							t.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlagraczastop").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
							p.sendMessage(Main.getInst().color(Main.getInst().getConfig().getString("wiadomoscdlaadminastop").replace("{Gracz}", t.getName()).replace("{Admin}", p.getName())));
							Title.sendTitle(t, 20, 40, 20, "&aZakonczono kontrolowanie!", "&aKontrolowal Cie: &6" + p.getName().replace("§", "&"));
							if (frozen.contains(t.getName())) {
								frozen.remove(t.getName());
				                t.setAllowFlight(true);
				                t.setFlying(true);	
				                System.out.println("asdasfasfasfasf");
							}
							t.teleport(staralocT);
							p.teleport(new Location(w, x1, y1, z1));		
							staraT.remove(t);
							return false;

						}
					}
				}
			}

Możliwe że coś przeoczyłem, ale jeśli się znasz bardziej ode mnie to mnie popraw, bo mogłem czegoś nie zauważyć.

Opublikowano

Zdebuguj, spróbuj użyć tej swojej komendy i dodać się do listy a potem wyświetl jej zawartość.

+

- rejestrujesz w ogole te eventy?

- tworzysz w ogole ta liste?

Opublikowano

Znowu się zapytam - rejestrujesz eventy? 

 

'Przy dodawaniu jest wszystko ok. Ale nie nadaje mi tego frozen. A w przypadku usunięcia wywala błąd, gdyż nie mogę wywołać arraylisty.'

Jak mozesz odwolac sie do listy w dodawaniu a przy usuwaniu juz nie? Tworzysz ta liste w ogole? uzywasz tej funkcji ktora stworzyles?

	public ControlManager() {
		save = new HashMap<Player, Boolean>();
		staraT = new HashMap<String, Location>();
		frozen = new ArrayList<String>();
	}

 

Opublikowano
Bukkit.getPluginManager().registerEvents(new ControlManager(), this);

Jak mogę tego nie używać?

Cytat

                        if (!frozen.contains(t.getName())) {
                            frozen.add(t.getName());
                            t.setAllowFlight(false);
                            t.setFlying(false);    
                            System.out.println("asdasfasfasfasf !FROZEN");
                        }

 

+

Cytat

                            if (frozen.contains(t.getName())) {
                                frozen.remove(t.getName());
                                t.setAllowFlight(true);
                                t.setFlying(true);    
                                System.out.println("asdasfasfasfasf");
                            }

Naprawdę powiedz mi jak jest, czy jeśli jest warunek o "frozen" to tego nie używam wytłumacz mi to bo jestem tępy :D

Dobra zamykam i tak się nie dowiem. Dzięki wszystkim za wypowiedzi :))

Opublikowano

'Naprawdę powiedz mi jak jest, czy jeśli jest warunek o "frozen" to tego nie używam wytłumacz mi to bo jestem tępy' nie rozumiem.

 

To jest proste jak but robisz sobie liste

public static List<UUID> frozen = new ArrayList<>();

dodajesz do niej

frozen.add(UUID);

sprawdzasz czy w niej jest 

frozen.contains(UUID)

 

Trudno w tym twoim kodzie dojsc co jest źle skoro nie chcesz wyświetlić zawartości tej listy jak niby się do niej dodałeś. Podaj ten twój błąd który Ci wyskakuje.

 

Debug tez zawsze pomaga..

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...