Skocz do zawartości
  • 0

Sposób zapisywania ItemStacka


Peridot

Pytanie

Witam, piszę plugin i muszę zapisywać gdzieś Itemstacki (Plugin na magazyny) i jaki jest najlepszy i najprostszy sposób zapisywania itemstacków dla takiego początkującego programisty (oprócz plików yml) ? Za pomoc daje naj i repa :)

Edytowane przez McKoxu
Odnośnik do komentarza
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
    public static String objectToBase64(Object object) {
        
        try {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);
	        
	        dataOutput.writeObject(object);
	        dataOutput.close();
	        return Base64Coder.encodeLines(outputStream.toByteArray());
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		return null;
    }
    
    public static Object objectFromBase64(String data) {
        try {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
            Object output = dataInput.readObject();
            dataInput.close();
            return output;
        } catch (IOException | ClassNotFoundException e) {
			e.printStackTrace();
		}
		return data;
    }

Zapisujesz Inventory w obiekt, potem go odtyczujesz, i dajesz pętle inventory.size() i dodajesz do inventory magazynu

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
najlepszy i najprostszy

wybierz jedno :D

 

Najprostszy to właśnie w yaml z domyślną wbudowaną serializacją, można też wtedy to próbować przerobić na jsona jak ktoś chce/potrzebuje.
A tak to wszystko zależy co się robi, do zapisu w bazie lub przesyłania np redisem znacznie wygodniej zapisać jaki czyste bajty z NBT, bo mniej danych, ale niestety bukkit nie udostępnia żadnego api od tego.

No ale plugin na magazyny to raczej zapisujesz array itemów do pliku yml i tyle, i niech sobie bukkit sam serializuje do yamla.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
5 minut temu, Inder00 napisał:

    public static String objectToBase64(Object object) {
        
        try {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);
	        
	        dataOutput.writeObject(object);
	        dataOutput.close();
	        return Base64Coder.encodeLines(outputStream.toByteArray());
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		return null;
    }
    
    public static Object objectFromBase64(String data) {
        try {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
            Object output = dataInput.readObject();
            dataInput.close();
            return output;
        } catch (IOException | ClassNotFoundException e) {
			e.printStackTrace();
		}
		return data;
    }

Zapisujesz Inventory w obiekt, potem go odtyczujesz, i dajesz pętle inventory.size() i dodajesz do inventory magazynu

 Idę na ts3, może pomożesz mi

7 minut temu, GotoFinal napisał:

najlepszy i najprostszy

wybierz jedno :D

 

Najprostszy to właśnie w yaml z domyślną wbudowaną serializacją, można też wtedy to próbować przerobić na jsona jak ktoś chce/potrzebuje.
A tak to wszystko zależy co się robi, do zapisu w bazie lub przesyłania np redisem znacznie wygodniej zapisać jaki czyste bajty z NBT, bo mniej danych, ale niestety bukkit nie udostępnia żadnego api od tego.

No ale plugin na magazyny to raczej zapisujesz array itemów do pliku yml i tyle, i niech sobie bukkit sam serializuje do yamla.

To chyba po prostu przerobie yml na jsona, i ty dostaniesz naj bo "lepiej powiedziałeś" :v

 

@Ewald @Invi @JPablo do zamknięcia :)

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...