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

Помогите [Решено] Как призвать жителя с нужными торговыми принадлежностями?

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

Статус темы:
Закрыта.
  1. Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    Может возьмешь плагин Shopcepers, там все это есть.
     
  2. Хостинг MineCraft
    <
  3. 152*

    152* Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    152
    использую такой подход для магазина с парящими итемами. храню их уид. четыре месяца. полет нормальный. даже с перекидыванием мира на другой сервер.
    топикстартеру: призвать жителя с нужными торгами можно и стандартным апи. по состоянию на 1.10.2-R0.1
     
    Последнее редактирование: 14 сен 2016
  4. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    А у меня 1.7.10. =(
     
    Последнее редактирование: 17 сен 2016
  5. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Не единственное.

    В конце концов, можно же просто запихать куда ниб метод, который проверит Location без учёта yaw и pitch.
    Код:
    public static boolean compareLocation(Location loc1, Location loc2) {
        if (loc1.getWorld() == null || loc2.getWorld() == null) {
            return false;
        }
        if (!loc1.getWorld().equals(loc2.getWorld())) {
            return false;
        }
        if (loc1.getX() != loc2.getX()) {
            return false;
        }
        if (loc1.getY() != loc2.getY()) {
            return false;
        }
        if (loc1.getZ() != loc2.getZ()) {
            return false;
        }
        return true;
    }
     
  6. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Непис не блок, перейдет клетку и все, ты его потерял. И уже определились юзать кастом имена, или getUniqueId(). Ты опоздал малость. А так то не проблема, создать свой класс Location, который не имеет направления.
     
    Последнее редактирование: 18 сен 2016
  7. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Начну разбор темы с вашего поста)
    И так, на сколько я понял, в данном случае у одного торговца только 1 предмет в ассортименте.
    А как их сделать больше на одного торговца? Что бы он мог и по 8-10 предложений для торговли иметь?
     
  8. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Создать класс для торговца с конструктором, заполнять конструктор через цикл при запуске плагина, данные для торговцев брать из конфига. Такова моя система магазина. Очень удобно.
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Только ты забыл самое главное
    Inventory i = Bukkit.createInventory(null, InventoryType.MERCHANT); не работает больше.
    Инвентарь тупо не откроется вообще.
     
  10. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Можно пример подобного конструктора?) Что бы было от чего отталкиваться.[DOUBLEPOST=1474621609,1474621578][/DOUBLEPOST]
    Как же быть тогда?
     
  11. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    У меня магазин обычного типа. Тоесть использую инвентарь сундука.
    Для инвентаря торговца нужно цеплять нмс.
     
  12. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    А у вас не найдётся пример подобной реализации магазина?
    Хотелось бы сперва глянуть, в эти нмс лезть не хочется...
     
  13. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    5 мин.[DOUBLEPOST=1474647768,1474646989][/DOUBLEPOST]Main.class
    Код:
    public class Main
    {
        @Override
        public void onEnable()
        {
            this.loadShops();
        }
    
        private void loadShops()
        {
            for (String key : this.getConfig().getConfigurationSection("Merchants").getValues(false).keySet()
            {
                String name = this.getConfig().getString("Merchants." + key + ".Name");
                String inventory_name = this.getConfig().getString("Merchants." + key + ".Inventory-name");
                int inventory_size = this.getConfig().getString("Merchants." + key + ".Inventory-size");
    
                new Merchant(name, inventory_name, inventory_size);
            }
        }
    }
    
    Merchant.class
    Код:
    public class Merchant
    {
        public static ArrayList<Merchant> merchants = new ArrayList<Merchant> ();
    
        private String name;
        private Inventory inventory;
    
        public Merchant(String name, String inventory_name, int inventory_size)
        {
            this.name = name;
            this.inventory = Bukkit.createInventory(null, inventory_size, inventory_name);
    
            merchants.add(this);
        }
    
        public String getName()
        {
            return this.name;
        }
    
        public Inventory getInventory()
        {
            this.inventory();
        }
    }
    
    Config.yml
    Код:
    Merchants:
      '1':
        Name: 'Test'
        Inventory-name: 'Test'
        Inventory-size: 54
    
    Вот примерно это я имел ввиду.
    Дальше всё просто:
    добавляешь новые параметры к торговцу - добавляешь больше аргументов к конструктору, создаёшь поля в классе Merchant.class и загружаешь эти параметры в методе loadShops(), который расположен в главном классе.

    Выставление предметов в инвентарь торговцу и назначение цены на предмет сам догадаешся сделать?
     
    Последнее редактирование: 23 сен 2016
  14. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Окей, спасибо) Допустим я их создам, дам им имена и т.д. Но как это сделать конкретно в виде инвентаря? Как указать какие предметы и т.д. Я далёк от этого дела.[DOUBLEPOST=1474648762][/DOUBLEPOST]Вижу вы дополнили сообщение, сейчас перечитаю.
     
  15. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Тогда, по сути, тебе нужен человек, который напишет весь код за тебя.
    Как ты можешь заметить - инвентарь я уже подключил.

    Чтобы сделать предметы, тебе нужно создать такой же класс как Merchants.class, только для предметов.
    Там, в поля класса можно указать цену предмета, его тип, имя, лор, дату и т.д. и т.п.

    Для загрузки итемов, нужно также создать метод в главном классе, а потом просто вызывать его до создания мерчанта.
     
  16. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    "Выставление предметов в инвентарь торговцу и назначение цены на предмет сам догадаешся сделать?"
    Я свой первый плагин делаю только, ещё не доходилось с таким дело иметь) По этому без понятия как такое сделать.
    Есть ли у вас туториалы, где вы учились такое делать?[DOUBLEPOST=1474652627,1474648960][/DOUBLEPOST]
    Вот такое дело нашёл.
    [DOUBLEPOST=1474655179][/DOUBLEPOST]В принципе идея появилась, буду пробовать)
     
  17. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Вы решили начать свой первый плагин с этого?
    Это почти тоже самое, что и абсолютно не зная математики пробовать решать квадратное уравнение. Быть может, что-то и слепите, но оно будет просто ужасно во всём.
    Могу дать совет: взяться за написание более простого плагина. Не нужно начинать с самого сложного. Беритесь за простое. Набьёте руки - возьмётесь за сложное.

    Если это - ваш первый плагин, то, скорее всего, понимание того, что вы пишете, у вас отсутствует. Следовательно, вы сейчас, навряд ли сможете обьяснить мне что я написал и без моих обьяснений не смогли бы воспользоваться этим.

    Ну и касательно вашего вопроса.
    Я нигде не учился "такое делать". Достаточно знания основ Java, для реализации подобного самостоятельно. В Java вы управляете классами и обьектами. Так в чём проблема создать класс, который описывает "трейдера" и класс, который описывает вещи, которые имеются у трейдера?
     
    Последнее редактирование: 23 сен 2016
  18. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Магазин сделал без посторонних библиотек.
    Стоимость предмета указывает в конфиге. Цена может быть как и 1 так и 2 разных предмета, там указывается количество.
    Поддерживает чары и зелья (не идеально конечно, т.е. сложные или много указать не получится, но мне и этого хватит). Надо будет - сделаю и полную поддержку.
    Магазин в моём случае открывается по нажатию на рамку портала в край ПКМ.
    Всем спасибо. Тема закрыта.
    [​IMG]
     
    Последнее редактирование: 2 окт 2016
Статус темы:
Закрыта.

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