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

W jaki sposób wykonać zmienną w Javie na itemie?


NexTowsky

Rekomendowane odpowiedzi

Opublikowano

Witam, jak zrobić zmienną w inventory o nazwie zmiennej xx

 

bo cały czas wyskakuje 0... a gdy sprawdzam zwykla komenda na czacie to dodaje bo wykopaniu bedrocka.

Opublikowano

Dobra..

Zrozumiałem tylko z tego tyle, że otwiera się menu po wpisaniu komendy..

Ludzie ja rozumiem wszystko ale przeczytajcie czasem swoje posty, które napisaliście ;x.

 

Proszę o dokładny opis i kod, który już masz zaczęty. Może chociaż z kodu dowiem się o co chodzi..

784091427630431250239.png

Regulamin sygnatur

Opublikowano

@OldisPL

bo mam zmienna "i".

Po wykopaniu stone mam i++

Komenda /troll - Wyswietla "i"

A komenda /trolki Otwiera menu 1 miejsce w inventory jest klocek z nazwa "i" ale ciagle 0 wyswietla. W komendzie dobrze wyswietla a w menu 0 ciagle.

Opublikowano

@OldisPL

bo mam zmienna "i".

Po wykopaniu stone mam i++

Komenda /troll - Wyswietla "i"

A komenda /trolki Otwiera menu 1 miejsce w inventory jest klocek z nazwa "i" ale ciagle 0 wyswietla. W komendzie dobrze wyswietla a w menu 0 ciagle.

Podaj kod ale tak to zgaduje że nie aktualizujesz nazwy tego bloku, jak ustawiłeś nazwę na np meta.setName("Bloki "+i) to to się ustawiło na aktualną wartość i tyle, samo się nie zaktualizuje.

1438614356923701010629.png

 

Opublikowano

@GotoFinal

@bartzz

@OldisPL

ItemStack stonik = new ItemStack(Material.STONE, 1, (short) 8);{
		ItemMeta im = stonik.getItemMeta();
		im.setDisplayName(ChatColor.GREEN + "Wykopane stone: " + iloscstone);
		stonik.setItemMeta(im);
	}
			
	

	@EventHandler
	public void kopanie(BlockBreakEvent e){
		Player player = e.getPlayer();
		Block block = e.getBlock();
		if(block.getType().equals(Material.STONE)){
			iloscstone++;
		}
	}

@EventHandler
	public void onClick(InventoryClickEvent e){
		Inventory i = e.getInventory();
		if(i == null){
			return;
		}
		if(i !=null){
			if(!i.getName().equals(inv.getTitle())){
				return;
			}
			if (e.getCurrentItem() == null){
				return;
			}
			else{
				if(e.getCurrentItem().getItemMeta() == null){
					return;
				}
			}
		}
		if(e.getWhoClicked() instanceof Player){
			Player p = (Player) e.getWhoClicked();
			p.updateInventory();
			if(e.getCurrentItem().getItemMeta() !=null){
				if(e.getCurrentItem().getItemMeta().getDisplayName().equals(stonik.getItemMeta().getDisplayName())){
					p.sendMessage(ChatColor.GREEN + "Masz " + iloscstone);
					e.setCancelled(true);
					p.openInventory(e.getInventory());
					
				}
				else{
					e.setCancelled(true);
					p.closeInventory();
				}
			}
		}
		}
Opublikowano

 

@GotoFinal

@bartzz

@OldisPL

ItemStack stonik = new ItemStack(Material.STONE, 1, (short) 8);{
		ItemMeta im = stonik.getItemMeta();
		im.setDisplayName(ChatColor.GREEN + "Wykopane stone: " + iloscstone);
		stonik.setItemMeta(im);
	}
			
	

	@EventHandler
	public void kopanie(BlockBreakEvent e){
		Player player = e.getPlayer();
		Block block = e.getBlock();
		if(block.getType().equals(Material.STONE)){
			iloscstone++;
		}
	}

@EventHandler
	public void onClick(InventoryClickEvent e){
		Inventory i = e.getInventory();
		if(i == null){
			return;
		}
		if(i !=null){
			if(!i.getName().equals(inv.getTitle())){
				return;
			}
			if (e.getCurrentItem() == null){
				return;
			}
			else{
				if(e.getCurrentItem().getItemMeta() == null){
					return;
				}
			}
		}
		if(e.getWhoClicked() instanceof Player){
			Player p = (Player) e.getWhoClicked();
			p.updateInventory();
			if(e.getCurrentItem().getItemMeta() !=null){
				if(e.getCurrentItem().getItemMeta().getDisplayName().equals(stonik.getItemMeta().getDisplayName())){
					p.sendMessage(ChatColor.GREEN + "Masz " + iloscstone);
					e.setCancelled(true);
					p.openInventory(e.getInventory());
					
				}
				else{
					e.setCancelled(true);
					p.closeInventory();
				}
			}
		}
		}

no tak jak napisałem, nie aktualizujesz itemu, musisz go tworzyć na nowo podczas otwierania EQ, luib przynajmniej aktualizowac jego nazwę/opis do nowej ilości stone, to samo się nie zaktualizuje.

1438614356923701010629.png

 

Opublikowano
    public static int iloscstone;
    
    static {
        ItemStack stonik = new ItemStack(Material.STONE, 1, (short) 8);
        ItemMeta im = stonik.getItemMeta();
        im.setDisplayName(ChatColor.GREEN + "Wykopane stone: " + iloscstone);
        stonik.setItemMeta(im);
    }
    
    @EventHandler
    public void kopanie(BlockBreakEvent e){
        Player player = e.getPlayer();
        Block block = e.getBlock();
        if(block.getType().equals(Material.STONE)) {
            iloscstone++;
        }
    }

    @EventHandler
    public void onClick(InventoryClickEvent e){
        Inventory i = e.getInventory();
        if(i == null){
            return;
        }
        if(!i.getName().equals(inv.getTitle())){
            return;
        }
        if (e.getCurrentItem() == null){
            return;
        }
        if(e.getCurrentItem().getItemMeta() == null){
            return;
        }
        if(!(e.getWhoClicked() instanceof Player)) {
            return;
        }
        Player p = (Player) e.getWhoClicked();
        
        if (e.getCurrentItem().getItemMeta() == null) {
            return;
        }
        
        if(!e.getCurrentItem().getItemMeta().getDisplayName().equals(stonik.getItemMeta().getDisplayName())) {
            p.sendMessage(ChatColor.GREEN + "Masz " + iloscstone);
            e.setCancelled(true);
            p.openInventory(e.getInventory());
        } else {
            e.setCancelled(true);
            p.closeInventory();
        }
    }

Dodatkowo ITEM z tym lore musisz aktualizować za każdym razem.

Mam nadzieję, że masz świadomość, że musisz zrobić zmienną dla każdego gracza, że tak to określę?

 

@GotoFinal

Byłeś szybciej ;c

784091427630431250239.png

Regulamin sygnatur

Opublikowano

@OldisPL

Zrobiłem tak jak ty

static {

 

item...

 

}

 

i pisze mi że muszę stworzyć jeszcze zmienną stonik

 

Zapomniałem bo przekopiowałem od Ciebie lel. :D

Wystarczyło utworzyć ;-;?

 

Poprawione:

    public static int iloscstone;
    public static ItemStack stonik;
    static {
        stonik = new ItemStack(Material.STONE, 1, (short) 8);
        ItemMeta im = stonik.getItemMeta();
        im.setDisplayName(ChatColor.GREEN + "Wykopane stone: " + iloscstone);
        stonik.setItemMeta(im);
    }

    @EventHandler
    public void kopanie(BlockBreakEvent e){
        Player player = e.getPlayer();
        Block block = e.getBlock();
        if(block.getType().equals(Material.STONE)) {
            iloscstone++;
        }
    }

    @EventHandler
    public void onClick(InventoryClickEvent e){
        Inventory i = e.getInventory();
        if(i == null){
            return;
        }
        if(!i.getName().equals(inv.getTitle())){
            return;
        }
        if (e.getCurrentItem() == null){
            return;
        }
        if(e.getCurrentItem().getItemMeta() == null){
            return;
        }
        if(!(e.getWhoClicked() instanceof Player)) {
            return;
        }
        Player p = (Player) e.getWhoClicked();

        if (e.getCurrentItem().getItemMeta() == null) {
            return;
        }

        if(!e.getCurrentItem().getItemMeta().getDisplayName().equals(stonik.getItemMeta().getDisplayName())) {
            p.sendMessage(ChatColor.GREEN + "Masz " + iloscstone);
            e.setCancelled(true);
            p.openInventory(e.getInventory());
        } else {
            e.setCancelled(true);
            p.closeInventory();
        }
    }

784091427630431250239.png

Regulamin sygnatur

Opublikowano

@OldisPL

Nie mam pojęcia jak to robić.

Tak samo jak to zrobiłeś wyżej...

 ItemMeta im = stonik.getItemMeta();
        im.setDisplayName(ChatColor.GREEN + "Wykopane stone: " + iloscstone);
        stonik.setItemMeta(im);
Z tym że twój kod i tak nie zadziała, bo liczysz stone wykopane przez wszystkich graczy łącznie.

1438614356923701010629.png

 

Opublikowano

Tworzysz hashmapke z UUID, Integer i putasz to do mapki. 

Dodatkowo mapkę przy wyłączeniu musisz zapisać gdzieś i wczytać przy starcie serwera.

784091427630431250239.png

Regulamin sygnatur

Opublikowano

@"GotoFinal"

A moge do hashmapy nick ?

I jak ja zapisac przy wylaczeniu itp ?

Możesz zapisać

W tym przypadku String będzie Nickiem, mam nadzieję, że zrozumiałeś bo nauczyciel ze mnie marny.

Musisz stworzyć sobie jakiś ,,magazyn". Poczytaj o gson przykładowo.

784091427630431250239.png

Regulamin sygnatur

Opublikowano

@OldisPL

a to tak ma dzialac ? :D

@EventHandler
	public void onjoin(PlayerJoinEvent e){
		Player player = e.getPlayer();
		if(!mapka.containsKey(player.getName())){
			mapka.put(player.getName(), iloscstone);
		}
	}
Opublikowano

 

@OldisPL

a to tak ma dzialac ? :D

@EventHandler
	public void onjoin(PlayerJoinEvent e){
		Player player = e.getPlayer();
		if(!mapka.containsKey(player.getName())){
			mapka.put(player.getName(), iloscstone);
		}
	}

 

Nie musisz sprawdzać w tym przypadku czy ta hashmapa w ogóle istnieje. Bo po co?

Dodatkowo do hashmapy coś wkładasz usuwając poprzednie. Zakładam, że nie przeczytałeś dokładnie tego co wysłał @GotoFinal

Posiadasz załóżmy gracza, który posiada obecnie 100 wykopanego stone. Jeśli zrobisz takie coś:

mapka.put(player.getName(), iloscstone);

To w tym momencie włoży do tej mapki ilość stone obecnego w Twojej zmiennej, usuwając przy tym poprzednią wartość czyli nasze 100.. Czyli jak włożysz 10, to będzie 10 a nie 110.

Musisz po prostu zabrać poprzednią wartość i dodać obecna i to dopiero włożyć do hashmapy.

Dodatkowo nie wiem jaki masz zamysł tworzenia tego w PlayerJoinEvent..

784091427630431250239.png

Regulamin sygnatur

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...