Войти или зарегистрироваться

Идея Поднимаем блоки в воздух

Оригинальная идея?


  • Всего проголосовало
    39
Значит так. Именно плагином можно сделать так, чтобы блок перемещался за один шаг на целый блок, а не медленно взмывал ввысь. Не думаю, что можно сделать что-то вроде дрэг-н-дроп и управлять придется щелчками. Скажем, щелчок по блоку и он взлетает на три вверх. Или щелчок по блоку и по его новому положению. Ну и не обязательно делать именно удар, первый блок "на пути прицела" засечь по-моему можно. Это по поводу технических ограничений. Надо точно продумать, как оно должно работать до мелочей, прежде чем браться за разработку.
 
Значит так. Именно плагином можно сделать так, чтобы блок перемещался за один шаг на целый блок, а не медленно взмывал ввысь. Не думаю, что можно сделать что-то вроде дрэг-н-дроп и управлять придется щелчками. Скажем, щелчок по блоку и он взлетает на три вверх. Или щелчок по блоку и по его новому положению. Ну и не обязательно делать именно удар, первый блок "на пути прицела" засечь по-моему можно. Это по поводу технических ограничений. Надо точно продумать, как оно должно работать до мелочей, прежде чем браться за разработку.
Вот,человек меня понял
 
Значит так. Именно плагином можно сделать так, чтобы блок перемещался за один шаг на целый блок, а не медленно взмывал ввысь. Не думаю, что можно сделать что-то вроде дрэг-н-дроп и управлять придется щелчками.
Неужели у плагинов настолько жестко ограниченный функционал?
 
На самом деле вот как просто:
создаем функцию, которая находит блок на расстоянии x по направлению взгляда
как только игрок щелкнул по блоку/ввел команду, берем блок, запоминаем блокстейт
далее все в новый поток:
|при перемещении игрока находим блок-цель(на расстоянии x)
|если это не наш блок -
| ставим блоку-цели - тип нашего блок и копируем в него блокстейт
| ставим нашему AIR
| наш блок = блок-цель
|повторяем через 0.1 секунду, и так пока игрок не отменит.

Я делал нечто похожее на плагине varscript.
сервер выдерживал смену ~400 блоков по 20 раз в секунду, без лагов для игрока
смену ~10000 блоков по 20 раз в секунду, начинаются лаги, игрок вылетает, после этого сервер нормально меняет блоки. На самом деле в этом случае игроку достаточно было уйти подальше (на ~10 чанков).

Так что, судя по моему опыту, все быстродействие опирается в количество сетевого траффика. Если левитация будет всего лишь для одного блока, хоть по 100 гаррипоттеров одновременно будут юзать ее, нагрузка незначительна.

Насчет реализации: это будет возможно сделать (но через ж**у) в новой версии varscript. Но не ручаюсь когда она будет готова.
Если кому нужно, делайте для этого отдельный плагин.
 
  • Нравится
Реакции: ufes
К тому же, "ливитация" блоков - это просто его "перемещение" в пространстве. Точнее это так:
шаг 1. Захватываем блок и перемещаем
шаг 2. На предыдущих координатах, меняем тип блока на воздух
шаг 3. На будущих координатах, меняем тип блока с воздуха на Нужный тип
шаг 4. Повторяем шаги 2 и 3.

А это, на сколько мне извесно, может нагрузить сервер.
просто не надо менять местоположение блока во время левитации.
Нужно убирать его, создавать летающий предмет, и потом ставить блок на конечной точке, убивая предмет.
В простейшем случае в качестве "летающего предмета" - entityItem (выпавший блок).
Думаю в bukkit это единственный экономный и единственно расово верный вариант
 
@DPOH-VAR,
Некрасиво. Читайте мой вариант реализации.
 
Ну так в чем проблемы-то? Можно реализовать что-то такое: /setblock - выбрать блок для его перемещения. Потом: /up [1], где 1 - расстояние перемещения. И так же /down, /right, /left. Так точно сделать можно. Только вот насчет какой-либо анимации передвижения блоков вряд ли что-то будет. Скорее всего невозможно реализовать плавное передвижение, увы.
 
Ну так в чем проблемы-то? Можно реализовать что-то такое: /setblock - выбрать блок для его перемещения. Потом: /up [1], где 1 - расстояние перемещения. И так же /down, /right, /left. Так точно сделать можно. Только вот насчет какой-либо анимации передвижения блоков вряд ли что-то будет. Скорее всего невозможно реализовать плавное передвижение, увы.
Вот,по теме.Спасибо
 
DNAlchemist сказал(а):
В простейшем случае в качестве "летающего предмета" - entityItem (выпавший блок).
Думаю в bukkit это единственный экономный и единственно расово верный вариант
Действительно, заметил недавно, что в bukkit API появился класс FallingBlock, а старый класс FallingSand стал @Deprecated
Значит теперь, плавно перемещающийся блок - вовсе не проблема.
Я сделаю. но не в виде отдельного плагина (писал выше)
UPD:
проверил. поднял вверх желтую шерсть. Физика точно как у песка.
 
Действительно, заметил недавно, что в bukkit API появился класс FallingBlock, а старый класс FallingSand стал @Deprecated
Значит теперь, плавно перемещающийся блок - вовсе не проблема.
Я сделаю. но не в виде отдельного плагина (писал выше)
UPD:
проверил. поднял вверх желтую шерсть. Физика точно как у песка.

Отлично! Продолжай. Скоро можно будет Portal-сервер сделать, что-то типа:)
 
Действительно, заметил недавно, что в bukkit API появился класс FallingBlock, а старый класс FallingSand стал @Deprecated
Значит теперь, плавно перемещающийся блок - вовсе не проблема.
Я сделаю. но не в виде отдельного плагина (писал выше)
UPD:
проверил. поднял вверх желтую шерсть. Физика точно как у песка.
СПАСИБО.ЖДУ ССЫЛКУ
 
Ну вот превью: (Это не мод!)
когда будет полностью готово - не могу сказать.
В книге написана программа, выполняющая все функции.
програмка запускается при нажатии ЛКМ, записана в книге в бинарном виде.
И еще для справки:
В книге на одну страницу программно можно уместить текст почти любой длины, и он прекрасно сохраняется после перезапуска сервера.
Можно сделать магическую книгу, швыряющую фаерболы, воду, молнии, книгу полета, и тд. Можно установить количество зарядов книги, пермиты на использование каждой книги.
 
я вообще не ожидал, что такое возможно без модификации клиента. Уже есть несколько идей ;)
Возможно только с версии mc 1.3, я уже писал это выше.
Суть: удалить блок, создать новый FallingBlock и постоянно делать setVelocity по направлению к "руке" игрока (я взял уровень глаз+(вектор направления)*2) тут сложнее высчитать силу толчка. Блок можно поставить на землю, сильно прислонив его. но периодичность не должна быть высокой, иначе блок долго будет висеть на руке, а при соприкосновении со стенами - разбиваться.
 
Прелесть.
ДРОН, попробуй сделать подобие Zeppelin мода. Я не уверен, что это возможно без модификаций клиента и не вызовет ли это лаги и падения сервера от слишком большого энтити, но ты разработчик - тебе знать лучше.
 
Ну вот превью: (Это не мод!)
когда будет полностью готово - не могу сказать.
В книге написана программа, выполняющая все функции.
програмка запускается при нажатии ЛКМ, записана в книге в бинарном виде.
И еще для справки:
В книге на одну страницу программно можно уместить текст почти любой длины, и он прекрасно сохраняется после перезапуска сервера.
Можно сделать магическую книгу, швыряющую фаерболы, воду, молнии, книгу полета, и тд. Можно установить количество зарядов книги, пермиты на использование каждой книги.
Круто
 
Прелесть.
ДРОН, попробуй сделать подобие Zeppelin мода. Я не уверен, что это возможно без модификаций клиента и не вызовет ли это лаги и падения сервера от слишком большого энтити, но ты разработчик - тебе знать лучше.
Без мода это не возможно:
1) FallingBlock не твердый, игрок не может на нем стоять
2) синхронизация позиции FallingBlock между сервером и клиентом происходит странным методом: несколько раз в секунду сервер отправляет клиенту новую позицию и вектор, даже если через Bukkit API очень часто обновлять позицию. И еще сервер подгоняет вектор, чтобы FallingBlock упал ровно на то место, где должен находиться сам блок. На клиентской стороне будут рывки и неточности.
 
  • Нравится
Реакции: ufes
Назад
Верх