Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Minecraft
You last visited: Today at 01:43

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Bukkit Plugin, Virtuelles Inventar

Discussion on Bukkit Plugin, Virtuelles Inventar within the Minecraft forum part of the Other Online Games category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Bukkit Plugin, Virtuelles Inventar

Hallo, ich bin gerade dabei ein kleines Plugin zu schreiben, dass bei einem Rechtsklick auf einen Block ein Inventar öffnet.
Ich habe das Ganze in 2 Klassen aufgeteilt, übersichtshalber.
In der ersten Klasse habe ich jedoch ein Problem, und zwar beim anzeigen des Menüs.
Sieht jemand von euch den Fehler?
Wäre echt klasse.
Code:
package me.themrdomi.Spawn;

import java.awt.Menu;

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class main extends JavaPlugin implements Listener {

	private Menu menu;
	
	public void onEnable() {
		menu = new Menu();
		Bukkit.getServer().getPluginManager().registerEvents(this, this);
	}
	
	@EventHandler
	public void onPlayerInteract(PlayerInteractEvent e) {
		if (!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) 
		menu.show(e.getPlayer());
	}
}
Der Fehler wird mir bei show ganz unten angezeigt, es ist Rot unterstrichen und zeigt mir folgenden Fehler an:

Add cast to 'menu'

Wenn ich den Fehler allerdings mithilfe von Eclipse korrigiere zeigt er mir immernoch einen Fehler an.
themrdomi is offline  
Old 01/25/2014, 20:20   #2
 
Howaner's Avatar
 
elite*gold: 132
Join Date: Apr 2010
Posts: 2,864
Received Thanks: 2,008
Kannst du uns die Menu Klasse zeigen?
Howaner is offline  
Old 01/25/2014, 20:27   #3
 
elite*gold: 1
Join Date: Feb 2011
Posts: 1,228
Received Thanks: 159
Falscher Import?: "import java.awt.Menu;"
Freak2011 is offline  
Old 01/25/2014, 20:37   #4
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Ja, hier ist sie:
Code:
package me.themrdomi.Spawn;

import java.util.Arrays;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.material.Wool;
import org.bukkit.plugin.Plugin;

public class menu implements Listener {

	private Inventory inv;
	private ItemStack c, s, a;
	
	public menu(Plugin p) {
		inv = Bukkit.getServer().createInventory(null, 9, "Gamemode Chooser");
		
		c = createItem(DyeColor.GREEN, ChatColor.GREEN + "Creative");
		s = createItem(DyeColor.YELLOW, ChatColor.YELLOW + "Survival");
		a = createItem(DyeColor.RED, ChatColor.RED + "Adventure");
		
		inv.setItem(2, c);
		inv.setItem(4, s);
		inv.setItem(6, a);
		
		Bukkit.getServer().getPluginManager().registerEvents(this, p);
	}
	
	private ItemStack createItem(DyeColor dc, String name) {
		ItemStack i = new Wool(dc).toItemStack(1);
		ItemMeta im = i.getItemMeta();
		im.setDisplayName(name);
		im.setLore(Arrays.asList("Set your gamemode", "to " + name.toLowerCase() + " mode"));
		i.setItemMeta(im);
		return i;
	}
	
	public void show(Player p) {
		p.openInventory(inv);
	}
	
	@EventHandler
	public void onInventoryClick(InventoryClickEvent e) {
		if (!e.getInventory().getName().equalsIgnoreCase(inv.getName())) return;
		if (e.getCurrentItem().getItemMeta() == null) return;
		if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Creative")) {
			e.setCancelled(true);
			e.getWhoClicked().setGameMode(GameMode.CREATIVE);
			e.getWhoClicked().closeInventory();
		}
		if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Survival")) {
			e.setCancelled(true);
			e.getWhoClicked().setGameMode(GameMode.SURVIVAL);
			e.getWhoClicked().closeInventory();
		}
		if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Adventure")) {
			e.setCancelled(true);
			e.getWhoClicked().setGameMode(GameMode.ADVENTURE);
			e.getWhoClicked().closeInventory();
		}
	}
}
themrdomi is offline  
Old 01/25/2014, 20:41   #5
Administrator
 
lordsill's Avatar
 
elite*gold: 26516
Join Date: May 2011
Posts: 21,005
Received Thanks: 2,352
dann würde ich den
Code:
import java.awt.Menu;
mal entfernen in der 1. Datei

und die Zeile:

Code:
private Menu menu;
zu

Code:
private menu menu;
für eine bessere Übersicht solltest du evtl den namen der variable ändern in z.b.
Code:
private menu invmenu;
ändern

Den ganzen kompletten eher richtigen code:

Code:
package me.themrdomi.Spawn;

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class main extends JavaPlugin implements Listener {

	private menu invmenu;
	
	public void onEnable() {
		Bukkit.getServer().getPluginManager().registerEvents(this, this);
	}
	
	@EventHandler
	public void onPlayerInteract(PlayerInteractEvent e) {
		if (e.getAction() == Action.RIGHT_CLICK_BLOCK)
                {
                     invmenu = new menu(this);
		     invmenu.show(e.getPlayer());
                }
	}
}
lordsill is offline  
Thanks
1 User
Old 01/25/2014, 20:44   #6
 
elite*gold: 0
Join Date: Jun 2013
Posts: 111
Received Thanks: 3
Danke, das wars

Eine kleine Frage hätte ich allerdings noch:
Ich hatte es bis jetzt so, dass das virtuelle Inventar sich öffnet, wenn man einen Rechtsklick auf einen Block macht, nun würde ich es allerdings gerne haben, dass man mit einem bestimmten Item in der Hand einen Rechtsklick auf einen Block machen muss.
Wie geht das?

Code:
	@EventHandler
	public void onPlayerInteract(PlayerInteractEvent e) {
		if (!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
		menu.show(e.getPlayer());
	}
Das müsste irgendwie mit ItemInHand gehen, oder?

Lg
themrdomi is offline  
Old 04/13/2014, 18:15   #7
 
elite*gold: 0
Join Date: Dec 2013
Posts: 1
Received Thanks: 0
So:
Code:
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
	if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
	       if(event.getPlayer().getItemInHand().getType() == Material.APPLE) {
			menu.show(e.getPlayer());
		}
	}
}
Das sollte gehen

mfg. Tobi
Tosel is offline  
Reply


Similar Threads Similar Threads
[Bukkit] RecruteMe - Bukkit's erstes Rekrut Plugin!
08/25/2015 - Minecraft Mods, Textures, Skins & Maps - 11 Replies
RecruitMe Werbe deine Freunde! Information Name: RecruitMe File-Version: 1.0 Bukkit-Version: 1.7.9 R0.1 Download: RecruitMe 1.0
[Bukkit] [Plugins] Professionelle Bukkit Plugin Configuration [Permissions]
10/23/2011 - Minecraft Trading - 9 Replies
Hallo, Du hast keine Lust dich bei deiner bevorstehenden Server Eröffnung mit der Plugin Configuration rumzuschlagen? Hier findest du die Lösung! Ich bitte euch hier meinen Professionellen Plugin Configurations Service an! Ob Permissions oder die Allgemeine Plugin Configuration, hier bist du richtig! Angebote/Preise:
[Plugin/Bukkit] Stargate Plugin - Gates seperat kosten lassen?!
09/28/2011 - Minecraft - 2 Replies
Hallo Leute, naja, der Titel des Themas sagt alles. Ich suche ein Plugin, womit man Gates einzeln kosten lassen kann. Stargate benutze ich bereits, aber mit dem kann man nur allgemein alle Gates kosten lassen. Hat jemand ne Ahnung von einem Plugin? lg



All times are GMT +1. The time now is 01:44.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.