• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Probleme mit dem InventoryClickEvent

MineForce

Schafhirte
Gesperrt
Registriert
17 Oktober 2012
Beiträge
122
Diamanten
0
Hallo, Liebes Forum

Folgendes:

Mein Frage:
Wenn ich den Befehl "blockshop" benutze öffnet sich das Fenster dann klicke ich z.b. auf Stone also Material.Stone und es passiert nix ich kann dann das Item einfach rausnehmen D: Und ich möchte das wenn man drauf drückt auf ein Item in diesen INventar das ein Befehl ausgeführt wird habs mit Bukkit.dispatch usw gemacht geht aber nicht! Was ich weiß
Code:
[COLOR="#00FF00"]Player pl = (Player) event.getWhoClicked();[/COLOR]
kann ja garkein Befehl ausführen weil bei Commands ist der Code ja so:
Code:
[COLOR="#00FF00"]Player p = (Player) cs;[/COLOR]
wie mach ich das hier?

Der Code:
Code:
	@EventHandler
	public void Inventory(InventoryClickEvent event) {
		Player pl = (Player) event.getWhoClicked();
		
		ItemStack Stone = new ItemStack(Material.STONE, 10);
		ItemStack Gras = new ItemStack(Material.GRASS, 10);
		
		if(event.getInventory().getName().equalsIgnoreCase("§aDiscoverCraft BlockShop:")) {
			event.setCancelled(false);

			
			if(event.getCurrentItem().getType() == Material.STONE) {
	    	 if (this.econ.has(pl.getName(), 35)){
	    		this.econ.withdrawPlayer(pl.getName(), 35);
    			pl.sendMessage("§aDu hast 35 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
				pl.getInventory().addItem(new ItemStack(Stone));
				event.getView().close();
				
			}else if(event.getCurrentItem().getType() == Material.GRASS) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}else if(event.getCurrentItem().getType() == Material.DIRT) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}else if(event.getCurrentItem().getType() == Material.COBBLESTONE) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}else if(event.getCurrentItem().getType() == Material.WOOD) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}}}
		}}}}

thanks schonmal
 

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Code:
@EventHandler
	public void Inventory(InventoryClickEvent event) {
		Player pl = (Player) event.getWhoClicked();
		
		ItemStack Stone = new ItemStack(Material.STONE, 10);
		ItemStack Gras = new ItemStack(Material.GRASS, 10);
		
		if(event.getInventory().getName().equalsIgnoreCase("§aDiscoverCraft BlockShop:")) {
[COLOR="#FF0000"]			event.setCancelled(false);[/COLOR]

			
			if(event.getCurrentItem().getType() == Material.STONE) {
	    	 if (this.econ.has(pl.getName(), 35)){
	    		this.econ.withdrawPlayer(pl.getName(), 35);
    			pl.sendMessage("§aDu hast 35 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
				pl.getInventory().addItem(new ItemStack(Stone));
				event.getView().close();
				
			}else if(event.getCurrentItem().getType() == Material.GRASS) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}else if(event.getCurrentItem().getType() == Material.DIRT) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}else if(event.getCurrentItem().getType() == Material.COBBLESTONE) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}else if(event.getCurrentItem().getType() == Material.WOOD) {
		    	 if (this.econ.has(pl.getName(), 30)){
			    		this.econ.withdrawPlayer(pl.getName(), 30);
		    			pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
						pl.getInventory().addItem(new ItemStack(Gras));
						event.getView().close();
						
			}}}
		}}}}

Habs dir Rot makiert was falsch ist. Du musst das false zu true umändern, da du wie gesagt hast, man die Items herausnehmen kann. Ich hoffe das hat dir geholfen :)
 
Zuletzt bearbeitet:

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Hm... ^^ Was mir da jetzt noch einfällt wäre das du evtl. das InventoryClickEvent für das falsche Inventar genommen hast. Also überprüf bitte mal die Namen und ich würde dich gerne noch drum beten das du die Klasse hier veröffentlichst womit du das Inventar öffnest.
 
Oben