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

Pisanie pluginów - ArrayList - Pomocy!


kubaw208

Rekomendowane odpowiedzi

Opublikowano

Tak jak w tytule. Próbowałem siły z ArrayList<ItemStack> jednak to nie dokońca jest to co chcę ponieważ mam plugin w skrócie na jedzenie specjalnego jabłka ( craftowanego z własnej receptury gdzie dodaje takie jabłko zlote do arraylisty ). Po zjedzeniu takiego jabłka ma wywalać go z ArrayListy. Problem tkwi w tym że gdy dodaje tę jabłko po scraftowaniu to zjedzenie innego dokładnie z taką samą nazwą, Lore, itp. rzeczami jabłka działa dokładnie tak jak te scraftowane. A ja chcę dodać KONKRETNIE TYLKO te jedno jabłko.

Opublikowano
1 minutę temu, kubaw208 napisał:

Tak jak w tytule. Próbowałem siły z ArrayList<ItemStack> jednak to nie dokońca jest to co chcę ponieważ mam plugin w skrócie na jedzenie specjalnego jabłka ( craftowanego z własnej receptury gdzie dodaje takie jabłko zlote do arraylisty ). Po zjedzeniu takiego jabłka ma wywalać go z ArrayListy. Problem tkwi w tym że gdy dodaje tę jabłko po scraftowaniu to zjedzenie innego dokładnie z taką samą nazwą, Lore, itp. rzeczami jabłka działa dokładnie tak jak te scraftowane. A ja chcę dodać KONKRETNIE TYLKO te jedno jabłko.

Porównaj Material, czy to ten sam.

Opublikowano
Przed chwilą, Ekrahb napisał:

Porównaj Material, czy to ten sam.

Już próbowałem, tylko że craftowane jabłko to będzie ciągle ten sam materiał. 

Opublikowano
Przed chwilą, kubaw208 napisał:

Już próbowałem, tylko że craftowane jabłko to będzie ciągle ten sam materiał. 

a Ci chodzi o jakby dwa oddzielne itemy? To sprawdzaj w itemki metadate - nazwe i lore..

Opublikowano
1 minutę temu, Ekrahb napisał:

a Ci chodzi o jakby dwa oddzielne itemy? To sprawdzaj w itemki metadate - nazwe i lore..

Przecież pisałem że chodzi mi KONKRETNIE O TE JEDNO jabłko a metadata ma ten problem że sprawdza tylko nazwę i lore przez co zjedzenie innego itemku z lore i nazwą jest uznawane jako ten sam przedmiot czego nie chcę.

Opublikowano
1 minutę temu, kubaw208 napisał:

Przecież pisałem że chodzi mi KONKRETNIE O TE JEDNO jabłko a metadata ma ten problem że sprawdza tylko nazwę i lore przez co zjedzenie innego itemku z lore i nazwą jest uznawane jako ten sam przedmiot czego nie chcę.

Jak Ty tak napisałeś główny temat, że ja już sam nie wiem, co Ty tam dokładnie chcesz, to nie do mnie mniej pretensje.

Jak nie masz możliwości sprawdzenia po metadata, czy enchantach, albo innych zmiennych, to nie masz żadnych możliwości.

Opublikowano
1 minutę temu, Ekrahb napisał:

Jak Ty tak napisałeś główny temat, że ja już sam nie wiem, co Ty tam dokładnie chcesz, to nie do mnie mniej pretensje.

Jak nie masz możliwości sprawdzenia po metadata, czy enchantach, albo innych zmiennych, to nie masz żadnych możliwości.

Na pewno to da się zrobić - dobrym przykładem będzie dawne Wojownicy VS Potwory...
Potrzebuję zapisania konkretnego przedmiotu - a nazwa tematu jest dobra, a jeśli nie czytałeś tego "1 posta" to już nie moja wina.
Potrzebuję jak by coś takiego: MF5DK3LC2    - przydzielane takie głupie literki do każdego itemu na świecie, problem jest w tym że niewiem jak takie coś uzyskac, jak to się nazywa (UUID?, ID na pewno nie, hm ...)

Opublikowano

Nie wiem co źle robię ale czego nie zrobię mam błąd " X " bez podpowiedzi co naprawić...

static Map<String, ItemStack> item = HashMap<String, ItemStack>();    < -- błąd wyskakuje ... 

 

EDIT: dodałen "new" przed = HashMap<String, ItemStack>();    i działa, popatrzę coś z tym, kontynuuje temat jeśli będzie to konieczne później.

Opublikowano
Przed chwilą, Ekrahb napisał:

Jakim Ty jesteś ułomem.. Zobacz proszę czas mojego postu i Twojej edycji.

Obrażać możemy się nawzajem, ale nie dlatego tworzyłem temat - może było opóźnienie bo po 30 sekundach od edycji napisałeś takie krótkie zdanie więc uznałem że to niedowiedzenie twoje... Następnym razem pomyśl zamiast obrażać kogoś bo komplement to nie jest 🙂
Wracając do tematu:
 

Spoiler

	static Map<String, ItemStack> koxApple = new HashMap<String, ItemStack>();
	@EventHandler
	public void onCraftCustomGoldenApple(CraftItemEvent e)
	{
		Player p = (Player) e.getWhoClicked();
		
		ItemStack im = e.getCurrentItem();
		
		if(e.getRecipe().equals(e.getRecipe()))
		{
			koxApple.add(???);
			p.sendMessage(ChatColor.GREEN+"Dodano do ArrayList'y");
			p.sendMessage(""+im);
		} else {
			p.sendMessage(ChatColor.RED+"Nie wyszlo");
		}
	}

 

Jak z takiego eventu dodać do koxApple String i Apple?

Opublikowano
7 minut temu, kubaw208 napisał:

Jak z takiego eventu dodać do koxApple String i Apple?

Hash_Map.put(key, value)

to są podstawy javy, idź się ich uczyć, a nie zawracasz komuś głowę

javastart

co do wyzywania, to pomyśl nad tym, co piszesz i jak piszesz, bo to nie przedszkole, a później pretensje, że Ci coś nie działa, albo ktoś Ci nie pomógł..

Opublikowano
1 minutę temu, Ekrahb napisał:

Hash_Map.put(key, value)

to są podstawy javy, idź się ich uczyć, a nie zawracasz komuś głowę

javastart

co do wyzywania, to pomyśl nad tym, co piszesz i jak piszesz, bo to nie przedszkole, a później pretensje, że Ci coś nie działa, albo ktoś Ci nie pomógł..

Podstawy javy się uczyłem, wykupiłem kurs na Udemy i obejrzałem go do momentu tworzenia okien, oczywiście nie tylko oglądając tylko też robiąc coś z tym wszystkim. 

Zawracać głowę? Nie pisałem do ciebie prywatnie tylko z dobrej woli piszesz tutaj... Poza tym ja o wiele bardziej preferuję naukę na przykładach więc nie dziw się że nie do końca rozumiem. Dodam jeszcze taką ciekawostkę której chyba nie znasz że forum jest po to aby zadawać tutaj pytania więc pozwól że to ja będę zadawać pytania w na swoim poziomie którego jeszcze nie zrozumiałem a długo szukałem.

Zanim coś napiszę czytam dwa razy to co do mnie piszesz więc proszę skończmy już tą bezsensowną kłótnię ciągnącą się przy okazji...

Co do odpowiedzi:
 

Spoiler

	@EventHandler
	public void onCraftCustomGoldenApple(CraftItemEvent e)
	{
		Player p = (Player) e.getWhoClicked();
		
		ItemStack im = e.getCurrentItem();
		
		if(e.getRecipe().equals(e.getRecipe()))
		{
			koxApple.put(????);
			p.sendMessage(ChatColor.GREEN+"Dodano do ArrayList'y");
			p.sendMessage(""+e.getCurrentItem().getData().getItemType().getDeclaringClass().getName() + im);
		} else {
			p.sendMessage(ChatColor.RED+"Nie wyszlo");
		}
	}

 

Jak mam tutaj dodać Key oraz Value?

Opublikowano
1 minutę temu, kubaw208 napisał:

Podstawy javy się uczyłem, wykupiłem kurs na Udemy i obejrzałem go do momentu tworzenia okien, oczywiście nie tylko oglądając tylko też robiąc coś z tym wszystkim. 

Zawracać głowę? Nie pisałem do ciebie prywatnie tylko z dobrej woli piszesz tutaj... Poza tym ja o wiele bardziej preferuję naukę na przykładach więc nie dziw się że nie do końca rozumiem. Dodam jeszcze taką ciekawostkę której chyba nie znasz że forum jest po to aby zadawać tutaj pytania więc pozwól że to ja będę zadawać pytania w na swoim poziomie którego jeszcze nie zrozumiałem a długo szukałem.

Zanim coś napiszę czytam dwa razy to co do mnie piszesz więc proszę skończmy już tą bezsensowną kłótnię ciągnącą się przy okazji...

Coś nie sądzę, że to w ogóle czytasz, bo przyjmujesz to jako zwykłe wyzwiska. A przeczytaj to sobie teraz i przeanalizuj.

Jakoś nie sądzę, żeby któryś z programistów odezwałby się do Ciebie w inny sposób.

Korzystanie z obiektów, czy hashmapy to podstawa, którą każdy musi opanować, nawet jak pisze coś tak niepotrzebnego i chujowego jak avasta w javie.

www.programcreek.com tutaj masz taką dobrą stronę z przykładami, skoro tak.

1 minutę temu, kubaw208 napisał:


Co do odpowiedzi:
 

Jak mam tutaj dodać Key oraz Value?

Key to string, value to itemstack.

Opublikowano
12 minut temu, Ekrahb napisał:

Coś nie sądzę, że to w ogóle czytasz, bo przyjmujesz to jako zwykłe wyzwiska. A przeczytaj to sobie teraz i przeanalizuj.

Jakoś nie sądzę, żeby któryś z programistów odezwałby się do Ciebie w inny sposób.

Korzystanie z obiektów, czy hashmapy to podstawa, którą każdy musi opanować, nawet jak pisze coś tak niepotrzebnego i chujowego jak avasta w javie.

www.programcreek.com tutaj masz taką dobrą stronę z przykładami, skoro tak.

Key to string, value to itemstack.


Po angielsku będzie ciężko 😛 Zobaczę ją ale na początku wydaje mi się trochę nie intuicyjna.

Mój kod wygląda tak:

 

Spoiler

    public static Map<String, ItemStack> koxApple = new HashMap<String, ItemStack>();
    
    @SuppressWarnings("unlikely-arg-type")
    @EventHandler
    public void onEatGoldenApple(PlayerItemConsumeEvent  e)
    {
        Player p = e.getPlayer();
        ItemStack is = (ItemStack) e.getItem();
        if(e.getItem().getType() == Material.GOLDEN_APPLE && e.getItem().getDurability() == 1)
        {
            if(koxApple.containsKey(e.getItem().getItemMeta().getLocalizedName()) && koxApple.containsValue(is))
            {
                p.sendMessage(ChatColor.GREEN+"Test");
                p.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION, 500, 1));
                koxApple.remove(e.getItem().getType().getDeclaringClass().getTypeParameters());
            } else {
                p.sendMessage("Nie dodane do ArrayList'y koxApple");
            }
        } else {
            p.sendMessage("Zle jablko!");
        }
    }
    
    @EventHandler
    public void onCraftCustomGoldenApple(CraftItemEvent e)
    {
        Player p = (Player) e.getWhoClicked();
        
        ItemStack is = (ItemStack) e.getCurrentItem();
        
        if(e.getRecipe().equals(e.getRecipe()))
        {
            koxApple.put(e.getCurrentItem().getItemMeta().getLocalizedName(), is);
            p.sendMessage(ChatColor.GREEN+"Dodano do ArrayList'y");
            p.sendMessage(""+e.getCurrentItem().getItemMeta().getLocalizedName()+"      "+is);
        } else {
            p.sendMessage(ChatColor.RED+"Nie wyszlo");
        }
    }


 

 

Na górze to właśnie ta metoda która po zjedzeniu jabłka ma coś robić fajnego, jak więc teraz mam sprawdzić z tej arraylisty czy ten przedmiot jest dodany? Napisałem takie coś co widać ale to nie działa. Nie przyjmuje wszystkiego jak wyzwiska jednak każdy jest trochę inny i każdy przyjmuje różne rzeczy po swojemu a ja na dodatek nie jestem w humorze bo wczoraj miałem gorączkę prawie 40 stopni więc 😛 Ale nie o gorączce tutaj mowa xD Jak zrobić argument sprawdzający?

Opublikowano

if(koxApple.containsKey(e.getItem().getItemMeta().getLocalizedName()) && koxApple.containsValue(is))
            {

 

o to będzie sprawdzać, czy w hashmapie jest W OGÓLE jakiś klucz o takiej wartości i     czy W OGÓLE jest jakaś wartość JAKIEGOKOLWIEK klucza, a przecież chodzi o to, aby value było wartością jednego keya.. pogłówkuj 

Opublikowano
3 godziny temu, Ekrahb napisał:

if(koxApple.containsKey(e.getItem().getItemMeta().getLocalizedName()) && koxApple.containsValue(is))
            {

 

o to będzie sprawdzać, czy w hashmapie jest W OGÓLE jakiś klucz o takiej wartości i     czy W OGÓLE jest jakaś wartość JAKIEGOKOLWIEK klucza, a przecież chodzi o to, aby value było wartością jednego keya.. pogłówkuj 

Nie dam rady, byłbym wdzięczny jakbyś mi to napisał. Nie miałem doczynienia jeszcze z jakim kolwiek rodzajem map a rozwiązanie próbowałem znaleść jednak nic nie wyszło. "pogłówkuj" gdybym nie próbował główkować nie byłoby tego forum, wczoraj siedziałem od 20 do 23 aby spróbować zapisać konkrenty jeden item a nie materiał więc mam prawo być trochę zmęczony główkowaniem 😛 Za rozwiązanie dam plusa nawet jeśli nie będzie to ostatecznie rozwiązanie ale poprawny warunek, bo przynajmniej pójdę trochę w stronę map 😛

Opublikowano
4 godziny temu, kubaw208 napisał:

Nie dam rady, byłbym wdzięczny jakbyś mi to napisał. Nie miałem doczynienia jeszcze z jakim kolwiek rodzajem map a rozwiązanie próbowałem znaleść jednak nic nie wyszło. "pogłówkuj" gdybym nie próbował główkować nie byłoby tego forum, wczoraj siedziałem od 20 do 23 aby spróbować zapisać konkrenty jeden item a nie materiał więc mam prawo być trochę zmęczony główkowaniem 😛 Za rozwiązanie dam plusa nawet jeśli nie będzie to ostatecznie rozwiązanie ale poprawny warunek, bo przynajmniej pójdę trochę w stronę map 😛

if koxApple.get(e.getItem().getItemMeta().getDisplayName()).equals(is)

Opublikowano

Temat do zamknięcia.
Rozwiązanie jako takie:
 

Spoiler

Kod:
 

Spoiler


	@SuppressWarnings("deprecation")
	public void recipe()
	{
		ItemStack item1 = new ItemStack(Material.GOLDEN_APPLE, 1, (short)1);
		ItemMeta meta = item1.getItemMeta();
		meta.setDisplayName(ChatColor.GOLD+"Zakazane jablko");
		meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
		List<String> lore = new ArrayList<String>();
		lore.add(ChatColor.GRAY+"Zjedz je a poczujesz sie jak bóstwo!");
		meta.setLore(lore);
		item1.setItemMeta(meta);
		
		ShapedRecipe recipe = new ShapedRecipe(item1);
		
		recipe.shape("XXX","XXX","XXX");
		
		recipe.setIngredient('X', Material.TNT);
		getServer().addRecipe(recipe);	
	}


	@EventHandler
	public void onEatGoldenApple(PlayerItemConsumeEvent  e)
	{
		Player p = e.getPlayer();
		if(e.getItem().getType() == Material.GOLDEN_APPLE && e.getItem().getDurability() == 1)
		{
			if(e.getItem().getItemMeta().getDisplayName().equals(ChatColor.GOLD+"Zakazane jablko"))
			{
				p.sendMessage(ChatColor.GREEN+"Test");
				p.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION, 500, 1));
			} else {
				p.sendMessage("Nie dodane do ArrayList'y koxApple");
			}
		} else {
			p.sendMessage("Zle jablko!");
		}
	}

 

W evencie w którym sprawdzamy gdy ktoś je złote jabłko, w linijce:
if(e.getItem().getItemMeta().getDisplayName().equals(ChatColor.GOLD+"Zakazane jablko"))

Sprawdzam wyświetlaną nazwę przedmiotu w tym argumencie (getDisplayName) a następnie po przez equals sprawdzam czy nazwą jest napisane "Zakazane jablko" w złotym kolorze.
 

 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...