Помогите Изменение блоков для одного игрока.

  • Автор темы Автор темы OneKa
  • Дата начала Дата начала

OneKa

Участник
Баллы
31
Имя в Minecraft
OneKa
Здравствуйте! У меня тут идейка появилась, пытался реализовать, появилось несколько багов, суть в чём - 1 регион заполненный блоками, с разной датой для каждого игрока. Пытался менять их через sendBlockChange но тут 2 проблемы: 1. При спавне и моментальной смене блока, блок не изменяется, остаётся тот который заспавнился изначально. 2. При пкм и лкм по блоку который изменён он так же становится изначальным блоком.
Можно ли как-то реализовать это по другому?
P.S. Важно чтобы блок стоял и на сервере, для того чтобы вести подсчёт сломанных блоков(если есть альтернатива, буду рад выслушать).
 
Здравствуйте! У меня тут идейка появилась, пытался реализовать, появилось несколько багов, суть в чём - 1 регион заполненный блоками, с разной датой для каждого игрока. Пытался менять их через sendBlockChange но тут 2 проблемы: 1. При спавне и моментальной смене блока, блок не изменяется, остаётся тот который заспавнился изначально. 2. При пкм и лкм по блоку который изменён он так же становится изначальным блоком.
Можно ли как-то реализовать это по другому?
P.S. Важно чтобы блок стоял и на сервере, для того чтобы вести подсчёт сломанных блоков(если есть альтернатива, буду рад выслушать).
Ну частично наверное смогу натолкнуть на решение, когда игрок интерактирует с блоком(пкм/лкм) он обновляется и насколько понимаю сервер переотправляет локацию клиенту. Возможным решением может стать PlayerInteractEvent.
 
Регион, заполненный блоками с разной датой для игроков (какой?)...
Пытался менять их через sendBlockChange (зачем?)...
Важно чтобы блок стоял и на сервере, для того чтобы вести подсчёт сломанных блоков(если есть альтернатива, буду рад выслушать)...


Простите, но с этого я ничего толком не понял, можете обьяснить?
Создается впечатление, что тут проблема XY.
 
При нажатии ПКМ происходит ровно то же, что и при .sendBlockChange(), вот только уже с данными, из которых фактически состоит блок. Соответственно самый простой способ это исправить - заменять данные в пакете на свои. Можно вовсе отменять отправку пакета, но это не лучший способ.
Кстати говоря, подмена данных поможет решить сразу обе проблемы.

И ещё - если местность у разных игроков отличается сильно - её стоит отправлять пакетами чанков, которые как раз рассчитаны на большой объем данных.
В ином случае можно получить некоторые неприятные эффекты - просадки сети при отправке данных, фризы на клиенте и так далее.

По поводу разрушения - скорее всего, придется так же контролировать все самостоятельно на уровне пакетов. Сервер не рассчитан на подобные операции, поэтому вряд ли поймёт действия игрока правильно. Ну, и античит явно сообщит, что игрок ломает быстрее/медленнее нормы
 
Здравствуйте! У меня тут идейка появилась, пытался реализовать, появилось несколько багов, суть в чём - 1 регион заполненный блоками, с разной датой для каждого игрока. Пытался менять их через sendBlockChange но тут 2 проблемы: 1. При спавне и моментальной смене блока, блок не изменяется, остаётся тот который заспавнился изначально. 2. При пкм и лкм по блоку который изменён он так же становится изначальным блоком.
Можно ли как-то реализовать это по другому?
P.S. Важно чтобы блок стоял и на сервере, для того чтобы вести подсчёт сломанных блоков(если есть альтернатива, буду рад выслушать).
Отменяй интеракт ивент и не будет возвращаться оригинальный блок. И вообще идея говно, лучше дай всем разные арены.
 
При нажатии ПКМ происходит ровно то же, что и при .sendBlockChange(), вот только уже с данными, из которых фактически состоит блок. Соответственно самый простой способ это исправить - заменять данные в пакете на свои. Можно вовсе отменять отправку пакета, но это не лучший способ.
Кстати говоря, подмена данных поможет решить сразу обе проблемы.

И ещё - если местность у разных игроков отличается сильно - её стоит отправлять пакетами чанков, которые как раз рассчитаны на большой объем данных.
В ином случае можно получить некоторые неприятные эффекты - просадки сети при отправке данных, фризы на клиенте и так далее.

По поводу разрушения - скорее всего, придется так же контролировать все самостоятельно на уровне пакетов. Сервер не рассчитан на подобные операции, поэтому вряд ли поймёт действия игрока правильно. Ну, и античит явно сообщит, что игрок ломает быстрее/медленнее нормы
Спасибо за адекватный ответ, блоки одинаковые, дата только меняется, можно узнать название пакета для отправки чанка?
 
Назад
Верх