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

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

Discussion in 'Разработка плагинов для новичков' started by saharNooby, Oct 16, 2014.

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

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
  4. Автор темы
    saharNooby

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Code:
        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 Активный участник Девелопер Пользователь

    Trophy Points:
    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 Старожил Девелопер Пользователь

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

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

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

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

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

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

    Trophy Points:
    78
    Имя в Minecraft:
    saharNooby
    NBT-тэга.
    Code:
        NBTEditor.addCustomNBT(item, "myTagName", tagValue);
        
         PlayerInventory inv = player.getInventory();
         inv.addItem(item);
     
  11. Shevchik

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Share This Page