Вопрос Проблема с EditSession

Версия Minecraft
1.16.X

PlayGem

Пользователь
Сообщения
47
Помогите пишу плагин с WorldEdit, нужно парсить изменения блоков в JSON, но когда я прохожусь по changeSet, и получаю измененные блоки через getPrevious(), getCurrent(), то они абсолютно одинаковые. В чем проблема?
Java:
public static EditSession unparse(World world, String jsonString) {
    try {
        EditSession session = WorldEdit.getInstance().newEditSession(world);
        JsonArray array = JsonParser.parseString(jsonString).getAsJsonArray();

        for (JsonElement element : array.asList()) {
            JsonObject obj = element.getAsJsonObject();
            if (!obj.has("previous") || !obj.has("current") || !obj.has("pos")) {
                continue;
            }

            try {
                BlockVector3 pos = parsePosition(obj.get("pos").getAsString());
                BaseBlock block = parseBlockWithProperties(obj.get("current").getAsString());
                session.setBlock(pos, block);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

        return session;
    } catch (JsonSyntaxException e) {
        throw new RuntimeException(e);
    }
}
 
Java:
    public static JsonArray parse(EditSession session) {
        JsonArray array = new JsonArray();

        session.getChangeSet().forwardIterator().forEachRemaining(change -> {
            if (change instanceof BlockChange) {
                BlockChange change1 = (BlockChange) change;

                JsonObject obj = new JsonObject();

                obj.addProperty("previous", change1.getPrevious().getAsString());
                obj.addProperty("current", change1.getCurrent().getAsString());
                obj.addProperty("pos", change1.getPosition().toParserString());

                array.add(obj);
            }
        });

        return array;
    }
Объединено

сор в первом сообщении не много не тот код вставил
 
Можешь запустить с отладчиком и посмотреть "что происходит на самом деле"
Можешь почитать документацию внимательнее - может ты что-то не учитываешь

Можешь попробовать задать вопрос в их дс - вероятность получить ответ в короткие сроки будет выше
Но они могут послать на 3 буквы и даж забанить (как меня) если обращаться к ним с вопросами по устаревшим версиям

offtop
А вообще - использовать json-ы для того, чтобы хранить такое - крайне не оптимальный вариант - у тебя диск будет просто дичайше расходоваться
В NBT, Protobuf-ы там или напрямую по байтикам записывать - будет в десятки раз экономичнее
 
Можешь запустить с отладчиком и посмотреть "что происходит на самом деле"
Можешь почитать документацию внимательнее - может ты что-то не учитываешь

Можешь попробовать задать вопрос в их дс - вероятность получить ответ в короткие сроки будет выше
Но они могут послать на 3 буквы и даж забанить (как меня) если обращаться к ним с вопросами по устаревшим версиям

offtop
А вообще - использовать json-ы для того, чтобы хранить такое - крайне не оптимальный вариант - у тебя диск будет просто дичайше расходоваться
В NBT, Protobuf-ы там или напрямую по байтикам записывать - будет в десятки раз экономичнее
[/OFF
Окей, спасибо. Потом напишу, получилось или нет.[/off]
 
Можешь запустить с отладчиком и посмотреть "что происходит на самом деле"
Можешь почитать документацию внимательнее - может ты что-то не учитываешь

Можешь попробовать задать вопрос в их дс - вероятность получить ответ в короткие сроки будет выше
Но они могут послать на 3 буквы и даж забанить (как меня) если обращаться к ним с вопросами по устаревшим версиям

offtop
А вообще - использовать json-ы для того, чтобы хранить такое - крайне не оптимальный вариант - у тебя диск будет просто дичайше расходоваться
В NBT, Protobuf-ы там или напрямую по байтикам записывать - будет в десятки раз экономичнее
не, походу либо проблема со вставкой либо приколы от WorldEdit.
Объединено

да и доки ниче не дают
 
не, походу либо проблема со вставкой либо приколы от WorldEdit.
Объединено

да и доки ниче не дают
Ну тогда ничего не остается как взять отладчик в руки и копать

Собственно в свое время мне самому приходилось фиксить 1 баг в WE на древней 1.12.2 (поворачиваемые блоки, из модов не поворачиваются)
 
Ну тогда ничего не остается как взять отладчик в руки и копать

Собственно в свое время мне самому приходилось фиксить 1 баг в WE на древней 1.12.2 (поворачиваемые блоки, из модов не поворачиваются)
окей
 
Назад
Сверху Снизу