'Бекап' и восстановление мира по условию

1,976
68
220
Всем здрасти :D
Делаю что-то вроде откатывалки мира на день назад, но столкнулся с парой вопросов.. Помогите, пожалуйста:
1. Как можно копировать чанки из Овера в своё измерение (и обновлять их, даже если в измерении есть игроки), допустим, каждые 20 минут (стандартный майн-день, если не ошибаюсь)?
2. Обратно первому вопросу, как очистить Овер и запихнуть в него чанки из 'бэкап' мира (даже в присутствии игроков) по условию, выполняемому в самом мире? То есть, допустим, поставил губку на координаты (71; 16; 8) и мир клонировался в папку Овера.
Заранее спасибо =)
 
212
0
Ну, по моему, world - это объект, так? Ну а там дальше Outputstream - это сохранение,а насчет загрузки - беда, хз можно ли приравнивать переменную world.
 
1,976
68
220
Вот именно... Если бы надо было просто скопировать в отдельную папку - это просто манипуляция с файлами методами из обычной java. А тут надо не выходя из игры изменять сейв и измерение с игроками. Я надеюсь, что такое вообще возможно...
 
1,976
68
220
Ты имеешь ввиду, чтобы хостер сервера ручками/программой заменял файлы?
Нет, это не то, мне нужно именно через мод...
[merge_posts_bbcode]Добавлено: 07.02.2016 00:54:58[/merge_posts_bbcode]

Ладно, вот вам моя идея:
Мир вчерашнего дня - каждый рассвет, т.е. 24000*n тиков измерение 'Overworld' будет клонироваться в измерение 'Yesterday', куда можно будет телепортироваться по желанию. Там нельзя будет изменять блоки или подбирать предметы (как сделать это спрошу позже, но никто вам не мешает написать ответ сейчас, если вы знаете :D). Суть такая - вы допустили какую-то ошибку (например, не уследили и ваш ядерный реактор рванул, разнеся пол базы (ибо почти все играют с IC2)). Вам очень хочется её исправить, но ведь все знают, что без мода World State Checkpoint (или аналога, если таков существует) ты никак не перезагрузишься. Вот я и даю возможность отправиться в мир прошлого, сделать там чего-то (это будет можно), что приведёт к "путешествию" назад во времени и Overworld станет таким же, как он был на рассвете вчерашнего дня, т.е. произойдёт обычный откат.
 
317
10
AlexSocol написал(а):
Ты имеешь ввиду, чтобы хостер сервера ручками/программой заменял файлы?
Нет, это не то, мне нужно именно через мод...
[merge_posts_bbcode]Добавлено: 07.02.2016 00:54:58[/merge_posts_bbcode]

Ладно, вот вам моя идея:
Мир вчерашнего дня - каждый рассвет, т.е. 24000*n тиков измерение 'Overworld' будет клонироваться в измерение 'Yesterday', куда можно будет телепортироваться по желанию. Там нельзя будет изменять блоки или подбирать предметы (как сделать это спрошу позже, но никто вам не мешает написать ответ сейчас, если вы знаете :D). Суть такая - вы допустили какую-то ошибку (например, не уследили и ваш ядерный реактор рванул, разнеся пол базы (ибо почти все играют с IC2)). Вам очень хочется её исправить, но ведь все знают, что без мода World State Checkpoint (или аналога, если таков существует) ты никак не перезагрузишься. Вот я и даю возможность отправиться в мир прошлого, сделать там чего-то (это будет можно), что приведёт к "путешествию" назад во времени и Overworld станет таким же, как он был на рассвете вчерашнего дня, т.е. произойдёт обычный откат.
Идея нормальная, но как ты откатишь зону именно игрока? Ибо если брать именно чанки - тогда ты можешь задеть случайно чужой приват находящийся в том же чанке. Тогда уже проще сделать так: 
1) Игрок вводит команду /back Название_привата
2) Дальше получаешь корды привата игрока.
3) Копируешь чанки с мира Yesterday в OverWorld
5) Возможно может быть баг с TileEntity (они могут обнулиться, что вызовет краш или просто будут пустые сундуки и т.п).
6) Воуля.

Копирование чанков с обычного мира в другой не сложно. Но это очень лагучая тема.
Лучше забей. Ибо если на сервере карта большая и игроков много то твой сервер загнется. Хотя.. если выделить на него 32 Озу + i7. Тогда выдержит. Но не советую. Ибо бред. У меня была такая идея, только востанавливать приват за денюжку. И сделать это плагином. Т.е в ЛК чувак покупает на свой приват откат на 1 день реальный. заносятся данные в БД. Это дело получает плагин. Копирует чанки с бэкапа в обычный мир. Только я не смог разобраться с одним. ССАНЫЙ БАКИТ НЕ ВИДЕЛ БЛОКИ ИЗ МОДОВ. Это прост пздц.. и я забил на эту идею. Хотя можно ее возродить и сделать модом.
 

svk

1,185
2
Yarik написал(а):
AlexSocol написал(а):
Ты имеешь ввиду, чтобы хостер сервера ручками/программой заменял файлы?
Нет, это не то, мне нужно именно через мод...
[merge_posts_bbcode]Добавлено: 07.02.2016 00:54:58[/merge_posts_bbcode]

Ладно, вот вам моя идея:
Мир вчерашнего дня - каждый рассвет, т.е. 24000*n тиков измерение 'Overworld' будет клонироваться в измерение 'Yesterday', куда можно будет телепортироваться по желанию. Там нельзя будет изменять блоки или подбирать предметы (как сделать это спрошу позже, но никто вам не мешает написать ответ сейчас, если вы знаете :D). Суть такая - вы допустили какую-то ошибку (например, не уследили и ваш ядерный реактор рванул, разнеся пол базы (ибо почти все играют с IC2)). Вам очень хочется её исправить, но ведь все знают, что без мода World State Checkpoint (или аналога, если таков существует) ты никак не перезагрузишься. Вот я и даю возможность отправиться в мир прошлого, сделать там чего-то (это будет можно), что приведёт к "путешествию" назад во времени и Overworld станет таким же, как он был на рассвете вчерашнего дня, т.е. произойдёт обычный откат.
Идея нормальная, но как ты откатишь зону именно игрока? Ибо если брать именно чанки - тогда ты можешь задеть случайно чужой приват находящийся в том же чанке. Тогда уже проще сделать так: 
1) Игрок вводит команду /back Название_привата
2) Дальше получаешь корды привата игрока.
3) Копируешь чанки с мира Yesterday в OverWorld
5) Возможно может быть баг с TileEntity (они могут обнулиться, что вызовет краш или просто будут пустые сундуки и т.п).
6) Воуля.

Копирование чанков с обычного мира в другой не сложно. Но это очень лагучая тема.
Лучше забей. Ибо если на сервере карта большая и игроков много то твой сервер загнется. Хотя.. если выделить на него 32 Озу + i7. Тогда выдержит. Но не советую. Ибо бред. У меня была такая идея, только востанавливать приват за денюжку. И сделать это плагином. Т.е в ЛК чувак покупает на свой приват откат на 1 день реальный. заносятся данные в БД. Это дело получает плагин. Копирует чанки с бэкапа в обычный мир. Только я не смог разобраться с одним. ССАНЫЙ БАКИТ НЕ ВИДЕЛ БЛОКИ ИЗ МОДОВ. Это прост пздц.. и я забил на эту идею. Хотя можно ее возродить и сделать модом.
Хах, наш кодер вырос?)
[merge_posts_bbcode]Добавлено: 07.02.2016 02:21:27[/merge_posts_bbcode]

Хоть и откровенный бред написал.

[merge_posts_bbcode]Добавлено: 07.02.2016 02:22:02[/merge_posts_bbcode]

И получишь за маты :)
 
1,087
2
А нет, чтобы помочь - о других говорит.
P.S. Лично я не знаю как.
 
1,976
68
220
Yarik написал(а):
как ты откатишь зону именно игрока? ты можешь задеть случайно чужой приват находящийся в том же чанке
При чём тут приваты вообще? И TileEntity? Это просто копирование мира, ВСЕГО, не по одному чанку, а ВСЕГО, что есть.
Ты прав в одном - если мир большой, слабому серверу действительно крышка...
 
1,137
5
3
Добавить флаг в чанк, при взрыве ставить его на тру. В тикере проверять каждый чанк на тру, и если это так, копировать.
Самое сложное - запись, она будет сильно жрать и тормозить(даже в разных потоках), а как же синхронизация! Пока чанк копируется, игрок может еще взорвать что-нибудь... Забудь
З.Ы. И каждый тик копировать - затратно. Забудь об этом
 
317
10
svk написал(а):
Хах, наш кодер вырос?)
Хоть и откровенный бред написал.
И получишь за маты :)
Кодер подрос, кодер стал умнее(ну ты понял крч о чем, я уже много чего знаю)))
Получу за маты? Окей, перетерплю, ибо заслужил
Почему бред? Я ничего бредового не вижу :D
[merge_posts_bbcode]Добавлено: 07.02.2016 17:38:47[/merge_posts_bbcode]

AlexSocol написал(а):
Yarik написал(а):
как ты откатишь зону именно игрока? ты можешь задеть случайно чужой приват находящийся в том же чанке
При чём тут приваты вообще? И TileEntity? Это просто копирование мира, ВСЕГО, не по одному чанку, а ВСЕГО, что есть.
Ты прав в одном - если мир большой, слабому серверу действительно крышка...
А я думал, что ты хочешь сделать, что бы игрок ставил какой то блок и у него откатывается часть мира(напрмер его регион). 
Тогда у меня один вопрос, зачем это вообще нужно?
Про тайлы забей тогда.
 
1,976
68
220
Yarik написал(а):
Зачем это вообще нужно?
maxresdefault.jpg

[merge_posts_bbcode]Добавлено: 07.02.2016 17:42:57[/merge_posts_bbcode]

А зачем вообще пишут моды?
 
2,955
12
Во-первых, мир так просто взять и десериализировать со всем его контентом, существует масса тонкостей и ньюансов, тоже самое относится к его сериализации. Во-вторых, так просто совершать манипуляции над загруженным миром не выйдет. В третьих, сломается множество вещей в майне и других модах. Гораздо проще просто форсить сохранение мира в папку перед бекапом и бекапить всю папку, а при откате отгружать мир без игроков и просто её подменять. ИМХО, идея топикстартера - бред.
 
1,976
68
220
Ну короче, вердикт профессионалов - "всё сломается, лучше забей, тебе же лучше"? :D
 
Сверху