Code hilfe bei kleinem shop plugin

Dieses Thema im Forum "Programmierung" wurde erstellt von OverC raft, 9. April 2014.

  1. OverC raft
    Offline

    OverC raft

    Registriert seit:
    23. Dezember 2012
    Beiträge:
    16
    Hallo Community,
    Ich brauche mal etwas hilfe bei meinem plugin undzwar bekommt man für die kills an mobs coins das hab ich schon drin und es funktoniert
    nun wollte ich das man mit dem cmd /shop (wie man cmds macht weis ich natürlich auch^^) sich ein inventar öffnet. und man darin mittels den coins welche man im inventar haben muss sich sachen kaufen kann. ich weis bei dem inventar nur dass es irgendwie mit Bukkit.createInventory oder so geht. Ich hoffe dass ihr mir weiterhelfen könnt.

    Lg. Overc raft <3
     
    #1
  2. schegar
    Offline

    schegar

    Registriert seit:
    3. Februar 2013
    Beiträge:
    26
    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 (Text):
    1. public void weaponMenu(Player p) {
    2.         menu = p.getPlayer().getServer().createInventory(null, 9, "Enchant Menu - Weapons");
    3.        
    4.         ItemStack istack = new ItemStack(Material.DIAMOND_SWORD);
    5.         ItemMeta istackMeta = istack.getItemMeta();
    6.         istackMeta.setDisplayName("Sharpness" + description("weapon", 1));
    7.         istack.setItemMeta(istackMeta);
    8.        
    9.         ItemStack istack2 = new ItemStack(Material.SKULL_ITEM);
    10.         ItemMeta istackMeta2 = istack.getItemMeta();
    11.         istackMeta2.setDisplayName("Smite" + description("weapon", 2));
    12.         istack2.setItemMeta(istackMeta2);
    13.        
    14.         ItemStack istack3 = new ItemStack(Material.SPIDER_EYE);
    15.         ItemMeta istackMeta3 = istack.getItemMeta();
    16.         istackMeta3.setDisplayName("Bane of Arthropods" + description("weapon", 3));
    17.         istack3.setItemMeta(istackMeta3);
    18.        
    19.         ItemStack istack4 = new ItemStack(Material.STICK);
    20.         ItemMeta istackMeta4 = istack.getItemMeta();
    21.         istackMeta4.setDisplayName("Knockback" + description("weapon", 4));
    22.         istack4.setItemMeta(istackMeta4);
    23.        
    24.         ItemStack istack5 = new ItemStack(Material.FIRE);
    25.         ItemMeta istackMeta5 = istack.getItemMeta();
    26.         istackMeta5.setDisplayName("Fire Aspect" + description("weapon", 5));
    27.         istack5.setItemMeta(istackMeta5);
    28.        
    29.         ItemStack istack6 = new ItemStack(Material.GOLD_INGOT);
    30.         ItemMeta istackMeta6 = istack.getItemMeta();
    31.         istackMeta6.setDisplayName("Looting" + description("weapon", 6));
    32.         istack6.setItemMeta(istackMeta6);      
    33.        
    34.         menu.setItem(0, istack);
    35.         menu.setItem(1, istack2);
    36.         menu.setItem(2, istack3);
    37.         menu.setItem(3, istack4);
    38.         menu.setItem(4, istack5);
    39.         menu.setItem(5, istack6);
    40.     }
    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 (Text):
    1. public void Inventory(InventoryClickEvent cevent) {
    2.         Player p = (Player) cevent.getWhoClicked();
    3.        
    4.                 switch (cevent.getInventory().getName()) {
    5.                     case "Enchant Menu - Weapons":
    6.                         Menu = true;
    7.                         cevent.setCancelled(true);
    8.                         switch (cevent.getCurrentItem().getType()) {
    9.                             case DIAMOND_SWORD: enchant = Enchantment.DAMAGE_ALL; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Sharpness"); level = this.plugin.levelConfig.getInt("Level.Weapons.Sharpness"); break;
    10.                             case SKULL_ITEM: enchant = Enchantment.DAMAGE_UNDEAD; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Smite"); level = this.plugin.levelConfig.getInt("Level.Weapons.Smite"); break;
    11.                             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;
    12.                             case STICK: enchant = Enchantment.KNOCKBACK; price = this.plugin.priceConfig.getDouble("Prices.Weapons.Knockback"); level = this.plugin.levelConfig.getInt("Level.Weapons.Knockback"); break;
    13.                             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;
    14.                             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;
    15.                         default: enchant = null; price = null; level = null; Menu = true;
    16.                             break;
    17.                         } break;

    ich hoffe ich konnte dir helfen ;)

    gruss
    schegar
     
    #2
  3. OverC raft
    Offline

    OverC raft

    Registriert seit:
    23. Dezember 2012
    Beiträge:
    16

    Ja vielen dank hat mir sehr geholfen :)
     
    #3