- Версия(и) Minecraft
- 1.7.10+
Введение
Штука такая, в майнкрафте есть чат! Скорее всего вы когда-нибудь его замечали краем глаза.Так вот, у большинства мододелов общение с ним ограничивается отправкой текстовых сообщений в лучшем случае со знаками форматирования(§[1-f]), но на этом возможности майночата не ограничиваются!
В майне чат-компоненты обладают кучей разных приблуд таких как: отоброжение текста при наведении, исполнение команды при нажатии, просмотр ntrcnf при наведении ну и так далее. Майн придумал стремную систему сериализации и десериализации сообщений в и из JSON. По скольку это не гайд, для любопытных я просто оставлю две ссылки спецификация и по-приколу.
Что за мод то?
Мод облегчает создание таких вот "особых" cообщений.
Например вот такой вот код
При входе в игру будет отсылать такое:
Ну и при наведении покажет что нить такое:
А при нажатии произойдет следующее:
Как использовать
Сообщения в майне состоят из текста, аттрибутов и других сообщений. Когда оно выводится в чат сначала пишется текст самого сообщения а потом его детей, которые тоже могут иметь детей. Сделана такая штука чтобы в одном сообщении мы могли сделать немного нажимаемого, немного наводимого и немного обычного текста. В связи с чем создание сообщения можно описать следующим алгоритмом:
1. создание ребенка
2. добавление его аттрибутов
3. завершение создания ребенка
4. если нужен еще один ребенок возвращение к пункту 1
5. создание сообщения
Теперь оценим как же просто это делать!
Для начала нам нужен экземпляр класса
Например вот такой код:
Выдаст такое:
Установка
Чтобы использовать просто скачайте исходники по ссылке и добавьте к себе в проект. Удачи))
Штука такая, в майнкрафте есть чат! Скорее всего вы когда-нибудь его замечали краем глаза.Так вот, у большинства мододелов общение с ним ограничивается отправкой текстовых сообщений в лучшем случае со знаками форматирования(§[1-f]), но на этом возможности майночата не ограничиваются!
В майне чат-компоненты обладают кучей разных приблуд таких как: отоброжение текста при наведении, исполнение команды при нажатии, просмотр ntrcnf при наведении ну и так далее. Майн придумал стремную систему сериализации и десериализации сообщений в и из JSON. По скольку это не гайд, для любопытных я просто оставлю две ссылки спецификация и по-приколу.
Что за мод то?
Мод облегчает создание таких вот "особых" cообщений.
Например вот такой вот код
Java:
@SubscribeEvent
public void onEnter(EntityJoinWorldEvent event) {
if (event.entity instanceof EntityPlayer && !event.entity.worldObj.isRemote) {
((EntityPlayer) event.entity).addChatComponentMessage(
new JsonMessageBuilder()
.newPart()
.setText("Hello, ")
.setBold(true)
.end()
.newPart()
.setHoverText("Yes yes, do it!")
.setClick(ClickEvent.Type.SUGGEST_COMMAND, "/spawn")
.setColor(PartColor.DARK_AQUA)
.setText("let's click me!")
.end()
.build()
.serialize());
}
}
Ну и при наведении покажет что нить такое:
А при нажатии произойдет следующее:
Как использовать
Сообщения в майне состоят из текста, аттрибутов и других сообщений. Когда оно выводится в чат сначала пишется текст самого сообщения а потом его детей, которые тоже могут иметь детей. Сделана такая штука чтобы в одном сообщении мы могли сделать немного нажимаемого, немного наводимого и немного обычного текста. В связи с чем создание сообщения можно описать следующим алгоритмом:
1. создание ребенка
2. добавление его аттрибутов
3. завершение создания ребенка
4. если нужен еще один ребенок возвращение к пункту 1
5. создание сообщения
Теперь оценим как же просто это делать!
Для начала нам нужен экземпляр класса
JsonMessageBuilder
. Далее чтобы добавить ребенка нужно вызвать метод newPart(), который вернет JsonPartBuilder, далее присваиваете все нужные вам аттрибуты и вызываете метод end() он закончит создание ребенка и вновь вернет вам JsonMessageBuilder. Так вы можете повторять пока не надоест. Далее я думаю уже все понятно.Например вот такой код:
Java:
@SubscribeEvent
public void onEnter(EntityJoinWorldEvent event) {
if (event.entity instanceof EntityPlayer && !event.entity.worldObj.isRemote) {
ItemStack stack = new ItemStack(Blocks.coal_ore);
stack.addEnchantment(Enchantment.flame, 5);
stack.setStackDisplayName("Супер уголь");
((EntityPlayer) event.entity).addChatComponentMessage(
new JsonMessageBuilder()
.newPart()
.setText("Hello, ")
.setBold(true)
.end()
.newPart()
.setHoverStack(stack)
.setColor(PartColor.DARK_AQUA)
.setText("do you want some coal?")
.end()
.build()
.serialize());
}
}
Установка
Чтобы использовать просто скачайте исходники по ссылке и добавьте к себе в проект. Удачи))