Как отправить ItemStack в чат?

Snowmaze

Участник
Пользователь
Баллы
36
У меня есть ItemStack и мне надо отправить его после текста. Как это сделать?
Я пытался найти код в инете и нашёл, но почему-то не импорит CraftItemStack. Версия 1.12.2
upload_2019-6-15_1-4-11.png
upload_2019-6-15_1-6-32.png
 
У меня есть ItemStack и мне надо отправить его после текста. Как это сделать?
Я пытался найти код в инете и нашёл, но почему-то не импорит CraftItemStack. Версия 1.12.2
Посмотреть вложение 54133
Посмотреть вложение 54135
Для "Craft" штук тебе нужно CraftBukkit как либу подтянуть.
 
CraftBukkit нельзя распространять публично, отсюда его нет там в репозитории.
Ты должен забилдить ядро через BuildTools и подключить его как обычную библиотеку, без Maven.
Либо создавай где то свой закрытый репозиторий и пихай туда скомпиленное ядро.
 
Здесь можно запилить без подключения CraftBukkit, используя рефлекцию, нашел неплохой туториал включающий все этапы:
https://www.spigotmc.org/threads/tut-item-tooltips-with-the-chatcomponent-api.65964/
Я уже забилдил ядро, теперь работает, спасибо!
upload_2019-6-15_2-31-41.png

А почему CraftBukkit нельзя распространять публично?
 
CraftBukkit нельзя распространять публично, отсюда его нет там в репозитории.
Ты должен забилдить ядро через BuildTools и подключить его как обычную библиотеку, без Maven.
Либо создавай где то свой закрытый репозиторий и пихай туда скомпиленное ядро.
И ещё как сделать в 1 строке всё?
http://rubukkit.org/threads/kak-otpravit-paket-v-odnoj-stroke-s-soobscheniem.100679/#post-1143373 есть тема, но я не понял, как это сделать
 
Ну оч ****ый пример использования рефлексии)
Ну и к тому же в дефолтном TextComponent api есть показ предмета.
Прикол в том, что предмет нужно пихать в Json формате в TextComponent, ибо никак иначе.
 
А куда это всё пихать, чтобы в 1 пакете всё шло? Посмотреть вложение 54139
Я сейчас чёт рандомно накликал и оно заработало XD
Код:
net.minecraft.server.v1_12_R1.ItemStack nms = CraftItemStack.asNMSCopy(clicked);
IChatBaseComponent s = new ChatComponentText("§7Игрок " + player.getName() + " в " + player.getGameMode().name() + " кликнул на: ").addSibling(nms.C());
PacketPlayOutChat packet = new PacketPlayOutChat(s);
((CraftPlayer) onLooker).getHandle().playerConnection.sendPacket(packet);
Кликал на предложения IDE
 
И ещё как сделать в 1 строке всё?
http://rubukkit.org/threads/kak-otpravit-paket-v-odnoj-stroke-s-soobscheniem.100679/#post-1143373 есть тема, но я не понял, как это сделать
Код:
    public static void send(Player sender, Player target, ItemStack item) {
        net.minecraft.server.v1_14_R1.ItemStack nms = CraftItemStack.asNMSCopy(item);
        IChatBaseComponent bc = new ChatComponentText("§6" + sender.getName() + "§5 показал вам: ");
        bc.addSibling(nms.B());
        PacketPlayOutChat packet = new PacketPlayOutChat(bc);
        ((CraftPlayer) target).getHandle().playerConnection.sendPacket(packet);
    }
 
У меня есть ItemStack и мне надо отправить его после текста. Как это сделать?
Я пытался найти код в инете и нашёл, но почему-то не импорит CraftItemStack. Версия 1.12.2
Посмотреть вложение 54133
Посмотреть вложение 54135
Код:
                    net.minecraft.server.v1_12_R1.ItemStack mcItem = CraftItemStack.asNMSCopy(ItemStack);
                    NBTTagCompound nbt = new NBTTagCompound();
                    mcItem.save(nbt);
                    ChatComponentText main = new ChatComponentText("item");
                    ChatModifier modifier = main.getChatModifier();
                    modifier.setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_ITEM, new ChatComponentText(nbt.toString())));
                    main.setChatModifier(modifier);
                    PlayerList playerList = MinecraftServer.getServer().getPlayerList();
                    EntityPlayer ep = playerList.getPlayer(playerName);
                    if (ep != null) {
                        ep.sendMessage(main);
                    }

Вот такое должно работать.
 
Ну рофл да)
В любом случае там оч уе*ищная работа с рефлексией.
Кроме "супер пупер красоты" кода она ничем не отличается от использования ее через какой нибудь враппер.
Показали напрямую, как что куда вызывается, чем плохо? Если кто захочет себе упростить, пусть пишет враппер и упрощает на свой вкус. У каждого он разный и у каждого будет свой подход.
 
Кроме "супер пупер красоты" кода она ничем не отличается от использования ее через какой нибудь враппер.
Показали напрямую, как что куда вызывается, чем плохо? Если кто захочет себе упростить, пусть пишет враппер и упрощает на свой вкус. У каждого он разный и у каждого будет свой подход.
Ну так челик не сделает этого, он сделает все по тутору без кеширования и с этим уе*ищным юзлесс классом RefletionUtil, который почему-то все дауны везде суют. Надо делать по-нормальному, кэшируя и через MethodHandle, он намного быстрее.
 
Назад
Верх