Sie sind nicht angemeldet.

  • Anmelden

Max0028

User / Kunde

  • »Max0028« ist der Autor dieses Themas

Beiträge: 2

  • Nachricht senden

1

Dienstag, 12. Juni 2018, 17:05

[SOLVED] OnClickEvent zweites Inventar öffnet sich nicht

Guten Tag zusammen,

(vorerst: ich habe erst mit programmieren angefangen und würde anstatt Hate gerne Verbesserungsvorschläge genannt bekommen.)

aktuell bin ich am Programmieren eines LobbyPlugins und möchte derzeit folgende Funktion einbauen:
Ich habe ein Item "Shop" und durch Rechtsklick öffnet sich dies zu einem Inventar.
Soweit so gut, aber nun möchte ich, dass sich das Item "Gadgets (eine Angel)" weiter zu einen Inventar öffnen lässt durch einen Klick mit der Maus.
Ich habe schon unzählige Methoden ausprobiert, doch bekomme es nicht gebacken.
Werde euch mal einen Ausschnitt des Parts hier einstellen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static void openShop(Player p) {
		Inventory shop = Bukkit.createInventory(null, 9*3, "§2Extras");
		fillInventory(shop, Utils_Item.createItem(Material.STAINED_GLASS_PANE,  1, 7, ""));
		shop.setItem(10, Utils_Item.createItem(Material.SLIME_BLOCK, 1, 0, "§3Ballons"));
		shop.setItem(12, Utils_Item.createItem(Material.BLAZE_POWDER, 1, 0, "§eEffekte"));
		shop.setItem(14, Utils_Item.createItem(Material.FISHING_ROD, 1, 0, "§aGadgets"));
		shop.setItem(16, Utils_Item.createItem(Material.NAME_TAG, 1, 0, "§bPets"));
		
	
		p.openInventory(shop);
		p.playSound(p.getLocation(), Sound.BLOCK_CHEST_OPEN, 1, 2);
		
	}	public static void fillInventory(Inventory inv, ItemStack filling) {
		
		for(int i = 0; i < inv.getSize(); i ++) {
			inv.setItem(i, filling);
		}
	}
	@EventHandler
	public void onClick(InventoryClickEvent e) {
		Inventory Gadg =Bukkit.createInventory(e.getWhoClicked(), 9*3, "§aGadgets");
		 if(e.getCurrentItem().getType().equals(Material.FISHING_ROD)) {
			e.getWhoClicked().closeInventory();
			e.getWhoClicked().openInventory(Gadg);
		}
		
		}


-----------------------------

Wie man sehen kann, habe ich bereits das Inventar von "Shop" eingerichtet und "Gadgets" noch nicht.
Möchte erstmal hinbekommen, dass sich das Inventar überhaupt öffnen lässt.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Max0028« (12. Juni 2018, 21:15)


FlayInAHook

User / Kunde

  • »FlayInAHook« ist männlich

Beiträge: 71

Beruf: Angehender dualer Student

  • Nachricht senden

2

Dienstag, 12. Juni 2018, 19:35

1. nutze mal bitte beim nächsten mal die Codeformatierung hier im Forum ;)
2. Lass dir mal vor dem kreieren des Inventars eine Debug-Message ausgeben, da du zwar einen fehler bei Fillen des Inventars machst (Inventories sind nicht cloneable d.H. du musst die Methode fillInv das Inv wieder zurückgeben lassen), jedoch sollte sich eigentlich zumindest irgendwas öffnen. Evtl hast du bereits davor einen Fehler gemacht :).

Gruß
FlayInAHook

Max0028

User / Kunde

  • »Max0028« ist der Autor dieses Themas

Beiträge: 2

  • Nachricht senden

3

Dienstag, 12. Juni 2018, 19:44

Ok, habe es jetzt in Code Form angepasst.
Kannst du mir sagen, mit was du "davor" genau meinst?
Denn die Funktion, dass ich Rechtsklick auf ein bestimmtes Item mache und sich dann das Inventar öffnet, funktioniert.

FlayInAHook

User / Kunde

  • »FlayInAHook« ist männlich

Beiträge: 71

Beruf: Angehender dualer Student

  • Nachricht senden

4

Mittwoch, 13. Juni 2018, 09:38

Ja jwtzt wo du deinen Code geändert hadt und nicht nur die Form kann man dein Problem nun auch erkenen. Zum einen solltest du beim erstellen des Inventars den Owner wieder rausschmeißen. Außerdem ist closeInv() überflüssig. Llass dir außerdem mal Debug-Nachrichten ausgeben um zu dvhauen ob der Listener registriert ist etc. sodass dein code überhaupt ausgeführt wird.

Gruß
FlayInAHook

Ähnliche Themen