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

ArrayList Speichern

CrackRudi

Redstoneengineer
Registriert
18 April 2016
Beiträge
35
Alter
24
Diamanten
300
Hallo bin es jetzt schon wieder xD :) Ich bin noch neu in Bukkit/JAVA.!

Ich wollte Frage wie meine ArrayList einen Neustart überlebt . Also die Sachen die ich dort gespeichert habe !

Danke schon wieder für eure Hilfe !
Javascript:
package de.crackburn.cmd;

import java.io.File;
import java.util.HashMap;

import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import de.crackburn.main.main;

public class CMD_Builder implements CommandExecutor, Listener{
   
    public static HashMap<String, ItemStack[]> inventory = new HashMap<>();

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player p = (Player) sender;
        if(p.hasPermission("crackburn.buildermodus")){
        if(cmd.getName().equalsIgnoreCase("builder")){
            if(args.length == 0){
               
                p.sendMessage(main.pr + " /builder <on>");
                p.sendMessage(main.pr + " /builder <off>");
               
                return true;
            }
            if(args[0].equalsIgnoreCase("on")){
                p.getInventory().clear();
                ItemStack[]contents = inventory.get(p.getName());
                p.getInventory().setContents(contents);
                p.sendMessage(main.pr + " Der Builder modus wurde eingeschaltet");
                p.setGameMode(GameMode.CREATIVE);
   
                return false;
               
            }
            if(args[0].equalsIgnoreCase("off")){
                inventory.put(p.getName(), p.getInventory().getContents());
                p.sendMessage(main.pr + " Der Builder modus wurde ausgeschaltetet");
                p.getInventory().clear();
                p.setGameMode(GameMode.ADVENTURE);
               
                ItemStack compass = new ItemStack(Material.COMPASS);
                ItemMeta compassM = compass.getItemMeta();
                compassM.setDisplayName("§aNavigation §7(Rechtsklick)");
                compass.setItemMeta(compassM);
               
                ItemStack charge = new ItemStack(Material.ENDER_PEARL);
                ItemMeta chargemeta = charge.getItemMeta();
                chargemeta.setDisplayName("§5EnderPearl");
                charge.setItemMeta(chargemeta);
               
                ItemStack chest = new ItemStack(Material.ENDER_CHEST);
                ItemMeta chestmeta = chest.getItemMeta();
                chestmeta.setDisplayName("§cRegeln §7& §6Extras §7(Rechtsklick)");
                chest.setItemMeta(chestmeta);
               
                ItemStack clock = new ItemStack(Material.WATCH);
                ItemMeta clockM = clock.getItemMeta();
                clockM.setDisplayName("§3Lobby Switcher §7(Rechtsklick)");
                clock.setItemMeta(clockM);
               
                ItemStack blaze = new ItemStack(Material.BLAZE_ROD);
                ItemMeta blazemeta = blaze.getItemMeta();
                blazemeta.setDisplayName("§4Spieler verstecken §7(Rechtsklick)");
                blaze.setItemMeta(blazemeta);
               
                p.getInventory().setItem(0, charge);
                p.getInventory().setItem(2, chest);
                p.getInventory().setItem(4, compass);
                p.getInventory().setItem(6, blaze);
                p.getInventory().setItem(8, clock);
                return false;
               
            }
        }

    }else{
        p.sendMessage(main.pr + " Du hast keine Rechte für diesen Befehl!");
    }
        return false;
    }

   

}
 
V

Verschraubt

Guest
Mit einer Config.
Da gibt es eine passende Schnittstelle direkt von Bukkit. Mit dieser kannst du eine Liste ganz einfach speichern und wieder auslesen.
Hierzu gibt es einen Eintrag in der Bukkit Wiki: KLICK


Besten Gruß,
Verschraubt
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Händische Serialisierung ist hier nicht unbedingt die bessere Methode, allein aufgrund der hohen Kosten.
Selbst wenn da 1000 Einträge drin sind, ich vermute ja mal so wie der TE die Frage gestellt hat, dass die Liste nur einmal bei Start geladen wird, von daher ist die Performance schon fast egal.

Zum Thema: Bukkit bietet dafür z.B. die Config Klasse an, aber es spricht auch nichts dagegen eine andere Library für die Serialisierung zu nutzen, mein Favorit ist Gson, aber solange du nicht die Grundlegende Idee dahinter verstanden hast solltest du überhaupt nichts davon benutzen.
 

Inkemann

Braumeister
Registriert
3 Mai 2015
Beiträge
339
Diamanten
301
Minecraft
Inkemann
Selbst wenn da 1000 Einträge drin sind, ich vermute ja mal so wie der TE die Frage gestellt hat, dass die Liste nur einmal bei Start geladen wird, von daher ist die Performance schon fast egal.

Zum Thema: Bukkit bietet dafür z.B. die Config Klasse an, aber es spricht auch nichts dagegen eine andere Library für die Serialisierung zu nutzen, mein Favorit ist Gson, aber solange du nicht die Grundlegende Idee dahinter verstanden hast solltest du überhaupt nichts davon benutzen.
Mir ging es mehr darum, dass die Serialisierung (natürlich serialisiert jede API irgendwo, aber direkt "selbstgemachte" Serialisierung) als "richtiger" oder "besser" dargestellt wird. Dabei macht Bukkits Configuration API einen sehr guten Job, was so simple Probleme angeht und erzeugt nicht noch zusätzlich Overhead (wie mit einer Dritt-API).
 
Oben