Comments 15
enforcesSecureChat
— подпись сообщений. Можно изменять формат, но не текстpreviewsChat
предпросмотр сообщения в чате перед отправкой
Введены в 1.19
То есть клиент "Джавы" не сможет играть на одном сервере с клиентом "Бедрока".
Это не совсем так, есть как минимум одна утилита для организации кроссплея
Спасибо за статью
надеюсь в следующей будет побольше кода
Вообще штука интересная, но правда не в контексте Minecraft, а в контексте какого-то открытого игрового мира. Сделал себе персонажа настроил там каких-то школ, домов и начал там социальную жизнь вести пригласил к себе каких-то друзей в мир.
Дальнейшее развитие этого мира может в теории наполнять за счет переноса сознания умерших людей, но тут нужно разрешить сканировать мозг умерших людей и как-то научиться их переносить в эти миры.
Хотя тут мы конечно в фантастику какую-то переносимся...
Привет, а как сейчас обстоят дела с точки зрения прибыльности с мониторингом Minecraft серверов? Лет 10 назад, слышал мониторинг серверов очень пользовался спросом и вроде было очень прибыльно. А сейчас как? Не уж то до сих пор играют?
Спасибо за статью! Она меня вдохновила тоже попробовать поисследовать тему ради интереса и написать свое)
Очень интересная статья. Всё понятно расписано, продолжай в том же духе! Единственное хотелось бы, чтобы автор показывал побольше кода программы. Жду новых статей с удовольствием.
То есть клиент "Джавы" не сможет играть на одном сервере с клиентом "Бедрока".
Но комьюнити java-версии настолько дикое, что сделало Geyser, который, будучи модом для java серверов, отвечает используя протокол из bedrock, так что при определённом желании можно сервер настроить, чтоб с обоих версий вместе играть могли.
А мелкомягкие, которым ныне Mojang принадлежат - не могут...
Формирование пакета у вас сделано абсолютно неправильно. Если на каждое записываемое число создавать новый вектор - это ж нагрузка на динамическую кучу будет дичайшая, и ради чего?
Если уж вы читаете из &mut dyn Read
- то и писать надо симметрично в &mut dyn Write
!
Ну и dyn не стоит использовать так уж активно, он создаёт лишние косвенные вызовы там, где их можно очень легко избежать: просто замените dyn на impl.
А как лучше сделать формирование пакета? При инициализации пакета один раз создавать вектор и не объединять с другими в каждом новом типе данных, а мутировать?
Как минимум, писать в один заранее созданный Vec.
Далее, неплохо бы писать не в один буфер, а в цепочку буферов фиксированного размера, собирая свободные буферы в пул.
Или же, если протокол позволяет, в один буфер фиксированного размера, который сразу же писать в сокет в случае заполнения.
Но все эти случаи покрываются трейтом std::io::Write. Поэтому начните с использования Write симметрично Read.
Пишу Minecraft сервера с нуля. Часть 1. Пинг