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

Plugin Funktioniert nicht extra inventar

Pichter

Minecrafter
Registriert
1 Februar 2016
Beiträge
9
Diamanten
0
Hey
Ich habe ein Problem ich möchte das , das Plugin das item erkennt (Backpack) also ein stick nur umbenannt aber er nimmt beides.
Und er erstellt kein ordner in dem jeder Player abgespeichert wird also sein Inventar
Hier mal der Code
Code:
public class backpack implements Listener{
    public backpack(JavaPlugin plugin){
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
       
    }
    Inventory inv = null;
    ArrayList<String> players = new ArrayList<String>();
    public boolean openInventory(Player player){
        this.checkOrdner();
            inv = Bukkit.createInventory(null, 27, "Inventar");
            String playername = player.getName();
            File file = new File("plugins//tolana//Inventory//"+playername+ ".yml");
            FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
            if(!file.exists()){
                try {
                    file.createNewFile();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                return true;
            }
         
            for(int i = 0; i < inv.getSize(); i++){
                List<?> list = cfg.getList("inventory");
                inv.setItem(i, (ItemStack) list.get(i));
            }
            player.openInventory(inv);
            players.add(player.getName());
         
            return true;
         
        }
    public void checkOrdner(){
        File file = new File("plugins//tolana//Inventory//");
        if(!file.exists()){
            file.mkdir();
        }
    }
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event){
        Player player = event.getPlayer();
        ItemStack itemInHand = player.getItemInHand();
        if(itemInHand == null){
            return;
        }
       
        if(itemInHand.getType().equals(Material.STICK) && (event.getAction() == Action.RIGHT_CLICK_AIR)){
            ItemStack item = new ItemStack(Material.STICK);
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName("Backpack");
                openInventory(player);
        }
        return;
       
    }
    @EventHandler
    public void onInventoryClose(InventoryCloseEvent event){
      Player player = (Player) event.getPlayer();
      String playername = player.getName();
      File file = new File("plugins//tolana//Inventory//"+playername+ ".yml");
      FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
     
      inv = event.getInventory();
      if(players.contains(player.getName())){
         players.remove(player.getName());
         cfg.set("inventory", inv.getContents());
         try {
            cfg.save(file);
         } catch (IOException e1) {
            e1.printStackTrace();
         }
      }
      return;
    }
}
[code]
 

Pichter

Minecrafter
Registriert
1 Februar 2016
Beiträge
9
Diamanten
0
er setzt denn ein fehler daran hatt eich auch gedacht aber hat nicht geklappt :/ oder ich muss das umschreiben
Hier mal das wenn ich getDisplayName verwende

upload_2016-2-22_22-32-44.png
 
V

Verschraubt

Guest
getDisplayName() liefert dir einen String. Diesen muss du nun nur noch mit "Backpack" vergleichen.



Ich würde das so umsetzen:

Code:
if (e.getAction() == Action.RIGHT_CLICK_AIR || (e.getAction() == Action.RIGHT_CLICK_BLOCK)) {
            if ((e.getMaterial().equals(Material.STICK)) && (e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("Backpack"))) {
                 openInventory;
            }
        }
 

jens1o

Workaholic
Registriert
28 Juli 2015
Beiträge
644
Alter
23
Diamanten
254
Minecraft
jens1o
Warte?

Du willst einer nicht vorhandenen Item Meta den Displaynamen zurückgeben lassen, machst aber gleichzeitig ein Argument zuviel(Getter haben (fast) immer keine Arguments). Bitte schaue dir erst mal die Grundlagen an.

Grüße,
Jens
 

Pichter

Minecrafter
Registriert
1 Februar 2016
Beiträge
9
Diamanten
0
Ok danke erst mal ich probiere es mal aus :)
..
Ich weis das es mit get...(/name\) nicht geht aber ich wusste nicht wie ich es umstreiben soll deswegen frage ich ja auch hier. Und ich lerne es damit neben bei und da frage ich lieber bevor ich mich hier tot suche und dafür sind ja diese themen da oder nicht?
Auch die nicht so viel ahnung haben zu helfen so wird es fü r denn jenigen einfacher
Lg pichter
Und danke erst mal Verschraubt :)
 

Pichter

Minecrafter
Registriert
1 Februar 2016
Beiträge
9
Diamanten
0
Er speichert nicht die Items aber er stellt die .yml
Code:
    @EventHandler
    public void onInventoryClose(InventoryCloseEvent event){
        Player player = (Player) event.getPlayer();
        String playername = player.getName();
        ArrayList<ItemStack> list = new ArrayList<>();
        File file = new File("plugins/tolana/Inventory"+playername+ ".yml");
        FileConfiguration inv = YamlConfiguration.loadConfiguration(file);
        ItemStack[] contents = player.getInventory().getContents();
        for(int i = 0; i > contents.length; i++){
            ItemStack item = contents[i];
                list.add(item);
        }
        player.getInventory().setContents(contents);
        inv.set("B", list);
            try {
                inv.save(file);
            } catch (IOException e) {
            }
            }
}
 

Pichter

Minecrafter
Registriert
1 Februar 2016
Beiträge
9
Diamanten
0
hier :)
gut also uuid
er speichert es jetzt aber liest es nicht aus
Code:
public class backpack implements Listener{
    public backpack(JavaPlugin plugin){
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
      
    }
    ArrayList<String> players = new ArrayList<String>();
    public void openInventory(Player player){
      
            Inventory inv = Bukkit.createInventory(null, 27, "Inventar");
            String playername = player.getName();
            File file = new File("plugins/tolana/Inventory"+playername+ ".yml");
            FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
            for(int i = 0; i < inv.getSize(); i++){
                List<?> list = cfg.getList("inventory");
                inv.setItem(i, (ItemStack) list.get(i));
            }
            if(!file.exists()){
                try {
                    file.createNewFile();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                return;
            }
            player.openInventory(inv);
            players.add(player.getName());

        }
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event){
        Player player = event.getPlayer();
        if(event.getAction() == Action.RIGHT_CLICK_AIR | event.getAction() == Action.RIGHT_CLICK_BLOCK){
            if(player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("Backpack")){
                Inventory inv = Bukkit.createInventory(null, 27, "Backpack");
                player.openInventory(inv);
            }
              
        }
    }

  
    @EventHandler
    public void onInventoryClose(InventoryCloseEvent event){
        Player player = (Player) event.getPlayer();
        String playername = player.getName();
        ArrayList<ItemStack> list = new ArrayList<>();
        File file = new File("plugins/tolana/Inventory"+playername+ ".yml");
        FileConfiguration inv = YamlConfiguration.loadConfiguration(file);
        ItemStack[] contents = player.getInventory().getContents();
        for(int i = 0; i > contents.length; i++){
            ItemStack item = contents[i];
                list.add(item);
        }
        inv.set("Backpack", player.getInventory().getContents());
            try {
                inv.save(file);
            } catch (IOException e) {
            }
            }
}
 
Zuletzt bearbeitet:
Oben