• 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!

Code hilfe bei kleinem shop plugin

schegar

Minecrafter
Registriert
3 Februar 2013
Beiträge
26
Diamanten
300
Minecraft
schegar10
ich schätze mal du speicherst die coins in einer hashmap bzw einer datenbank:

ich hätte hier ein codebeispiel von mir was aus einem meiner plugins entsammt (damit kann man über ein menu seine waffen enchanten):
Code:
public void weaponMenu(Player p) {
		menu = p.getPlayer().getServer().createInventory(null, 9, "Enchant Menu - Weapons");
		
		ItemStack istack = new ItemStack(Material.DIAMOND_SWORD);
		ItemMeta istackMeta = istack.getItemMeta();
		istackMeta.setDisplayName("Sharpness" + description("weapon", 1));
		istack.setItemMeta(istackMeta);
		
		ItemStack istack2 = new ItemStack(Material.SKULL_ITEM);
		ItemMeta istackMeta2 = istack.getItemMeta();
		istackMeta2.setDisplayName("Smite" + description("weapon", 2));
		istack2.setItemMeta(istackMeta2);
		
		ItemStack istack3 = new ItemStack(Material.SPIDER_EYE);
		ItemMeta istackMeta3 = istack.getItemMeta();
		istackMeta3.setDisplayName("Bane of Arthropods" + description("weapon", 3));
		istack3.setItemMeta(istackMeta3);
		
		ItemStack istack4 = new ItemStack(Material.STICK);
		ItemMeta istackMeta4 = istack.getItemMeta();
		istackMeta4.setDisplayName("Knockback" + description("weapon", 4));
		istack4.setItemMeta(istackMeta4);
		
		ItemStack istack5 = new ItemStack(Material.FIRE);
		ItemMeta istackMeta5 = istack.getItemMeta();
		istackMeta5.setDisplayName("Fire Aspect" + description("weapon", 5));
		istack5.setItemMeta(istackMeta5);
		
		ItemStack istack6 = new ItemStack(Material.GOLD_INGOT);
		ItemMeta istackMeta6 = istack.getItemMeta();
		istackMeta6.setDisplayName("Looting" + description("weapon", 6));
		istack6.setItemMeta(istackMeta6);		
		
		menu.setItem(0, istack);
		menu.setItem(1, istack2);
		menu.setItem(2, istack3);
		menu.setItem(3, istack4);
		menu.setItem(4, istack5);
		menu.setItem(5, istack6);
	}
ganz oben erstelle ich das menu, 9 bedeutet dabei die größe und der nächste paramenter definiert den namen des menüs.
danach definiere ich verschiedene Itemstacks und Itemmetas (name und icon) und setze sie am schluss an die stelle die ich möchte

dann implementiere ich in einer neuen klasse (geht auch in deiner jetzigen) einen "InventoryClickEvent Listener" in den du reinschreiben kannst, was passiert, wenn ein bestimmtes "Item" angelickt wird:

Code:
public void Inventory(InventoryClickEvent cevent) {
		Player p = (Player) cevent.getWhoClicked();	
		
				switch (cevent.getInventory().getName()) {
					case "Enchant Menu - Weapons":
						Menu = true;
						cevent.setCancelled(true);
						switch (cevent.getCurrentItem().getType()) {
							case DIAMOND_SWORD: enchant = Enchantment.DAMAGE_ALL; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Sharpness"); level = this.plugin.levelConfig.getInt("Level.Weapons.Sharpness"); break;
							case SKULL_ITEM: enchant = Enchantment.DAMAGE_UNDEAD; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Smite"); level = this.plugin.levelConfig.getInt("Level.Weapons.Smite"); break;
							case SPIDER_EYE: enchant = Enchantment.DAMAGE_ARTHROPODS; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Bane of Arthropods"); level = this.plugin.levelConfig.getInt("Level.Weapons.Bane of Arthropods"); break;
							case STICK: enchant = Enchantment.KNOCKBACK; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Knockback"); level = this.plugin.levelConfig.getInt("Level.Weapons.Knockback"); break;
							case FIRE: enchant = Enchantment.FIRE_ASPECT; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Fire Aspect"); level = this.plugin.levelConfig.getInt("Level.Weapons.Fire Aspect"); break;
							case GOLD_INGOT: enchant = Enchantment.LOOT_BONUS_MOBS; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Looting"); level = this.plugin.levelConfig.getInt("Level.Weapons.Looting"); break;
						default: enchant = null; price = null; level = null; Menu = true;
							break;
						} break;

ich hoffe ich konnte dir helfen ;)

gruss
schegar
 

OverC raft

Minecrafter
Registriert
23 Dezember 2012
Beiträge
15
Diamanten
0
ich schätze mal du speicherst die coins in einer hashmap bzw einer datenbank:

ich hätte hier ein codebeispiel von mir was aus einem meiner plugins entsammt (damit kann man über ein menu seine waffen enchanten):
Code:
public void weaponMenu(Player p) {
		menu = p.getPlayer().getServer().createInventory(null, 9, "Enchant Menu - Weapons");
		
		ItemStack istack = new ItemStack(Material.DIAMOND_SWORD);
		ItemMeta istackMeta = istack.getItemMeta();
		istackMeta.setDisplayName("Sharpness" + description("weapon", 1));
		istack.setItemMeta(istackMeta);
		
		ItemStack istack2 = new ItemStack(Material.SKULL_ITEM);
		ItemMeta istackMeta2 = istack.getItemMeta();
		istackMeta2.setDisplayName("Smite" + description("weapon", 2));
		istack2.setItemMeta(istackMeta2);
		
		ItemStack istack3 = new ItemStack(Material.SPIDER_EYE);
		ItemMeta istackMeta3 = istack.getItemMeta();
		istackMeta3.setDisplayName("Bane of Arthropods" + description("weapon", 3));
		istack3.setItemMeta(istackMeta3);
		
		ItemStack istack4 = new ItemStack(Material.STICK);
		ItemMeta istackMeta4 = istack.getItemMeta();
		istackMeta4.setDisplayName("Knockback" + description("weapon", 4));
		istack4.setItemMeta(istackMeta4);
		
		ItemStack istack5 = new ItemStack(Material.FIRE);
		ItemMeta istackMeta5 = istack.getItemMeta();
		istackMeta5.setDisplayName("Fire Aspect" + description("weapon", 5));
		istack5.setItemMeta(istackMeta5);
		
		ItemStack istack6 = new ItemStack(Material.GOLD_INGOT);
		ItemMeta istackMeta6 = istack.getItemMeta();
		istackMeta6.setDisplayName("Looting" + description("weapon", 6));
		istack6.setItemMeta(istackMeta6);		
		
		menu.setItem(0, istack);
		menu.setItem(1, istack2);
		menu.setItem(2, istack3);
		menu.setItem(3, istack4);
		menu.setItem(4, istack5);
		menu.setItem(5, istack6);
	}
ganz oben erstelle ich das menu, 9 bedeutet dabei die größe und der nächste paramenter definiert den namen des menüs.
danach definiere ich verschiedene Itemstacks und Itemmetas (name und icon) und setze sie am schluss an die stelle die ich möchte

dann implementiere ich in einer neuen klasse (geht auch in deiner jetzigen) einen "InventoryClickEvent Listener" in den du reinschreiben kannst, was passiert, wenn ein bestimmtes "Item" angelickt wird:

Code:
public void Inventory(InventoryClickEvent cevent) {
		Player p = (Player) cevent.getWhoClicked();	
		
				switch (cevent.getInventory().getName()) {
					case "Enchant Menu - Weapons":
						Menu = true;
						cevent.setCancelled(true);
						switch (cevent.getCurrentItem().getType()) {
							case DIAMOND_SWORD: enchant = Enchantment.DAMAGE_ALL; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Sharpness"); level = this.plugin.levelConfig.getInt("Level.Weapons.Sharpness"); break;
							case SKULL_ITEM: enchant = Enchantment.DAMAGE_UNDEAD; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Smite"); level = this.plugin.levelConfig.getInt("Level.Weapons.Smite"); break;
							case SPIDER_EYE: enchant = Enchantment.DAMAGE_ARTHROPODS; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Bane of Arthropods"); level = this.plugin.levelConfig.getInt("Level.Weapons.Bane of Arthropods"); break;
							case STICK: enchant = Enchantment.KNOCKBACK; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Knockback"); level = this.plugin.levelConfig.getInt("Level.Weapons.Knockback"); break;
							case FIRE: enchant = Enchantment.FIRE_ASPECT; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Fire Aspect"); level = this.plugin.levelConfig.getInt("Level.Weapons.Fire Aspect"); break;
							case GOLD_INGOT: enchant = Enchantment.LOOT_BONUS_MOBS; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Looting"); level = this.plugin.levelConfig.getInt("Level.Weapons.Looting"); break;
						default: enchant = null; price = null; level = null; Menu = true;
							break;
						} break;

ich hoffe ich konnte dir helfen ;)

gruss
schegar


Ja vielen dank hat mir sehr geholfen :)
 
Oben