Помогите Создание меты для уже поставленного блока +

DaunOfMine

Новичок
Пользователь
Баллы
11
Простите конечно за довольно глупый вопрос, но как сделать, что бы поставленный, например камень, после ломания сохранил свою мету?

А так же, можно ли как то обозначить блок, что бы после именно после его разрушения происходила какая функция?
 
Простите конечно за довольно глупый вопрос, но как сделать, что бы поставленный, например камень, после ломания сохранил свою мету?

А так же, можно ли как то обозначить блок, что бы после именно после его разрушения происходила какая функция?
Метадата не сохраняется после рестарта, если что. Можешь записывать локацию и дату блока в хранилище, допустим в json или yml файлы
 
Метадата не сохраняется после рестарта, если что. Можешь записывать локацию и дату блока в хранилище, допустим в json или yml файлы
Видел как в плагине добавляли свою мету чтобы обозначить владельца блока, точно не сохраняется?
 
Видел как в плагине добавляли свою мету чтобы обозначить владельца блока, точно не сохраняется?
Точно, когда ты поставишь блок он превратится в обычный и не будет иметь никаких метадат, названий и тд, всё слетит.
 
Метадата не сохраняется после рестарта, если что. Можешь записывать локацию и дату блока в хранилище, допустим в json или yml файлы
Спасибо, я понял. Сам сегодня ночью вспомнил, что можно просто в конфиг сохранить данные о блоке.
 
Ну все, нарвались конфигодрочеры 😁.

PHP:
package Example;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.io.FileUtils;
import org.bukkit.Location;

import com.google.gson.Gson;

public class Saves {
    private Map<String, Save> save = new HashMap<String, Save>();
    private Main plugin;

    Saves(Main plugin) {
        this.plugin = plugin;
    }

    public Save getChunk(Location loc) {
        int ChunkX = loc.getBlockX() >> 4;
        int ChunkZ = loc.getBlockZ() >> 4;
        String s = ChunkX + "." + ChunkZ + ".json";
        if (save.containsKey(s)) {
            return save.get(s);
        } else {
            String str = "{}";
            Gson gson = new Gson();
            try {
                File file = new File(this.plugin.getDataFolder(), s);
                if (!file.exists()) {
                    FileUtils.writeStringToFile(file, new Save().toString(), Charset.defaultCharset());
                }
                str = FileUtils.readFileToString(file, Charset.defaultCharset());
            } catch (IOException e) {
                e.printStackTrace();
            }
            save.put(s, gson.fromJson(str, Save.class));
            return save.get(s);
        }
    }

    public void save() {
        for (Entry<String, Save> tmp : save.entrySet()) {
            File file = new File(this.plugin.getDataFolder(), tmp.getKey());
            try {
                FileUtils.writeStringToFile(file, tmp.getValue().toString(), Charset.defaultCharset());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

PHP:
package Example;

import java.util.HashSet;
import java.util.Set;

import org.bukkit.Location;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Save {
    private Set<String> locs = new HashSet<String>();

    private String convert(Location loc) {
        int x = loc.getBlockX();
        int y = loc.getBlockY();
        int z = loc.getBlockZ();
        int tmpx = x >> 4;
        int tmpx2 = tmpx << 4;
        int tmpz = z >> 4;
        int tmpz2 = tmpz << 4;
        return (x - tmpx2) + "." + y + "." + (z - tmpz2);
    }

    public void add(Location loc) {
        locs.add(convert(loc));
    }

    public void remove(Location loc) {
        locs.remove(convert(loc));
    }

    public boolean contains(Location loc) {
        return locs.contains(convert(loc));
    }

    public String toString() {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.toJson(this);
    }
}
В Save превращаем set в map для нужной вам информации. Закупайте китайские диски на 100tb
 
Ну все, нарвались конфигодрочеры 😁.

Java:
package Example;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.io.FileUtils;
import org.bukkit.Location;

import com.google.gson.Gson;

public class Saves {
    private Map<String, Save> save = new HashMap<String, Save>();
    private Main plugin;

    Saves(Main plugin) {
        this.plugin = plugin;
    }

    public Save getChunk(Location loc) {
        int ChunkX = loc.getBlockX() >> 4;
        int ChunkZ = loc.getBlockZ() >> 4;
        String s = ChunkX + "." + ChunkZ + ".json";
        if (save.containsKey(s)) {
            return save.get(s);
        } else {
            String str = "{}";
            Gson gson = new Gson();
            try {
                File file = new File(this.plugin.getDataFolder(), s);
                if (!file.exists()) {
                    FileUtils.writeStringToFile(file, new Save().toString(), Charset.defaultCharset());
                }
                str = FileUtils.readFileToString(file, Charset.defaultCharset());
            } catch (IOException e) {
                e.printStackTrace();
            }
            save.put(s, gson.fromJson(str, Save.class));
            return save.get(s);
        }
    }

    public void save() {
        for (Entry<String, Save> tmp : save.entrySet()) {
            File file = new File(this.plugin.getDataFolder(), tmp.getKey());
            try {
                FileUtils.writeStringToFile(file, tmp.getValue().toString(), Charset.defaultCharset());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Java:
package Example;

import java.util.HashSet;
import java.util.Set;

import org.bukkit.Location;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Save {
    private Set<String> locs = new HashSet<String>();

    private String convert(Location loc) {
        int x = loc.getBlockX();
        int y = loc.getBlockY();
        int z = loc.getBlockZ();
        int tmpx = x >> 4;
        int tmpx2 = tmpx << 4;
        int tmpz = z >> 4;
        int tmpz2 = tmpz << 4;
        return (x - tmpx2) + "." + y + "." + (z - tmpz2);
    }

    public void add(Location loc) {
        locs.add(convert(loc));
    }

    public void remove(Location loc) {
        locs.remove(convert(loc));
    }

    public boolean contains(Location loc) {
        return locs.contains(convert(loc));
    }

    public String toString() {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.toJson(this);
    }
}
В Save превращаем set в map для нужной вам информации. Закупайте китайские диски на 100tb
Жёванный торт...
 
Назад
Верх