Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Создать неподделываемую, уникальную вещь

Тема в разделе "Разработка плагинов для новичков", создана пользователем saharNooby, 16 окт 2014.

  1. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Необходимо создать средствами API вещь, которую нельзя никак подделать или создать, кроме как одной, определённой командой.
    Идеи были такие:
    • Использовать описание предмета - не подходит, потому что можно получить через /i
    • Использовать цветное название - не подходит потому же
    • Зачаровать - то же самое
    Возможно ли добавить к вещи какие-либо уникальные данные, которые можно добавить только в коде?
     
  2. Хостинг MineCraft
    <
  3. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
  4. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Это хорошо, как редактировать NBT тогда?
     
  5. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Код:
        public static boolean hasCustomNBT(ItemStack item, String key) {
            if(item == null) return false;
            NBTManager m = NBTManager.getInstance();
            try {
                NBTCompound d = m.read(item);
                return d.containsKey(key, String.class);
            } catch(NullPointerException e){
                return false;
            }
        }
    
        public static String getCustomNBT(ItemStack item, String key) {
            if(item == null) return null;
            NBTManager m = NBTManager.getInstance();
            NBTCompound d = m.read(item);
            return d.getString(key);
        }
    
        public static void addCustomNBT(ItemStack item, String key, String value) {
            if (item == null) return;
            NBTManager m = NBTManager.getInstance();
            NBTCompound d = m.read(item);
            d.put(key, value);
            m.write(item, d);
        }
     
  6. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Стыдно спрашивать, но куда всё это сунуть? Засунул в класс, говорит, нет NBTManager никакого.[DOUBLEPOST=1413460129,1413460036][/DOUBLEPOST]А, понял, это какой-то плагин-API http://dev.bukkit.org/bukkit-plugins/powernbt/
    Как его в проект сунуть?[DOUBLEPOST=1413460245][/DOUBLEPOST]А, всё, скачал jar и в проект подключил. Спасибо![DOUBLEPOST=1413462187][/DOUBLEPOST]Интересно, а вещи с нестандартными (я использую своё название) NBT-тегами исчезают...
     
  7. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Куда исчезают?
     
  8. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Командой выдаются, без ошибок. Но если переместить вещь в другую ячейку, например, или выкинуть, то она исчезнет. Я думаю, это из-за того, что название тэга нестандартное.
     
  9. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Название какого тега?
     
  10. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    NBT-тэга.
    Код:
        NBTEditor.addCustomNBT(item, "myTagName", tagValue);
        
         PlayerInventory inv = player.getInventory();
         inv.addItem(item);
     
  11. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Все нестандартные нбт теги вытираются баккитом при взаимодействии с вещью.
    А ещё команда /minecraft:give пожет и нбт теги добавлять.
    Грубо говоря если у кого-то есть доступ к командам выдачи предмета, то уникальную вещь ты никак не сделаешь.
     
  12. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Грусть-тоска. Значит, никак не сделать такие вещи?
     
  13. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Можно через лор, но записывать черным или темно-серым цветом + шифровать то, что туда нужно поместить.
     
  14. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Ладно, спасибо всем за советы и помощь, пойду через лор делать, как
    CraftCoder сказал. Можно тупо добавить в конце пару лишних цветовых кодов, никто и не узнает, а через /i сделать не сможет (правда, можно в креативе скопировать, но это уже совсем другая история).
     
  15. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    режим дебага клиента млжет показывать пришедший пакет из которого нуюжные цветокоды дёрнуть - раз плюнуть.
     
  16. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Короче, плагин бесполезен будет на серверах с продажей креатива и команд типа /i и /give (ибо все это копировать да и просто выдавать будут). Собственно, на другое и не рассчитывал.

    А вещи исчезали, потому что new ItemStack(Material.KAKOY_NIBYD_MATERIAL, 0) - количество было 0.
     
  17. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Будь проще. Можно реализовать свои /i и /give которые не позволят редактировать нбт или Lore и тогда ты будешь уверен что предмет сделанный тобой нереально подделать. (кроме дюпа, естественно, если такой способ найдется)
     
  18. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Anyway, если есть /i и /give, то есть и креатив, и наоборот (на большинстве серверов). А тогда даже никакого дюпа не надо - средний клик, и мы имеем уже 2 идентичных вещи. На моём сервере креатив не продаётся и не покупается, так что всё ок. А вот если выложить плагин в свет, то он может потерять большую часть смысла на большинстве серверах.
     

Поделиться этой страницей