1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Плагин на торговца - жителя

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

Статус темы:
Закрыта.
  1. Автор темы
    Sergeo

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

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    У меня очень массивный вопрос :). Если можно с примерами кода))

    Во-первых, как сделать спавн жителя на рандомных координатах и его не могли бить или же убить, а так же он не мог двигаться, если я сделал верно, то пропускайте, а если нет поправьте :)

    Код:
    private Location niceRandLoc (Location loc0) {
    Location loc1 = randLoc(loc0);
    if (loc1.getWorld().getBlockAt(loc1.getBlockX(), loc1.getBlockY() - 1, loc1.getBlockZ()).getType() == WHATEVER BLOCK)
    loc1 = niceRandLoc(loc0);
    return loc1;
    }
    Во-вторых, мне надо получить координаты жителя на которых он заспавнится и создать там регион на 10 блоков на время пока житель не пропадает(об этом в след пункте).

    В-третьих, Как получить механику жителя, если я сделал верно пропускайте этот пункт, а если нет, то поправьте :).
    Его обмен товарами и создать время спустя которое он будет появляться и исчезать ( это будет настраиваться в конфиге плагина )


    Код:
       
            @Override
            public boolean isTrading() {
                MerchantAPI api = MerchantAPI.get();
                // Create a new merchant
                MerchantAPI merchant = api.newMerchant("Village");
                // Add some offers
                // Arg: 1=result; 2=first offer item; 3=(optional)second offer item
                merchant.addOffer(api.newOffer(new ItemStack(Material.EMERALD, 10), new ItemStack(Material.DIAMOND, 3)));
                merchant.addOffer(api.newOffer(new ItemStack(Material.EMERALD, 30), new ItemStack(Material.DIAMOND, 3),
                        new ItemStack(Material.STONE, 64)));
                // Open the inventory for a player
                Player player = (Player) player; // Access by any way
                merchant.addCustomer(player);
                return true;
            }
    
    

    Код:
       
        @EventHandler
        public void onInteract1(PlayerInteractEntityEvent e) {
            Player p = e.getPlayer();
            if (p.hasPermission("villager.interact") && e.getRightClicked() instanceof LivingEntity) {
                LivingEntity en = (LivingEntity) e.getRightClicked();
                int x = (int) en.getLocation().getX();
                int y = (int) en.getLocation().getY();
                int z = (int) en.getLocation().getZ();
                if (en.getType() == EntityType.VILLAGER && en.getLocation().getX() == x && en.getLocation().getY() == y
                        && en.getLocation().getZ() == z
                        && en.getLocation().getWorld().getName().equalsIgnoreCase("world")) {
    
                    e.setCancelled(true);
                    Inventory i = Bukkit.createInventory(null, InventoryType.MERCHANT);
                    i.setItem(0, new ItemStack(Material.APPLE));
                    i.setItem(1, new ItemStack(Material.STONE));
                }
            }
        }
    
        @EventHandler
        public void onInteract2(PlayerInteractEntityEvent e) {
            Player p = e.getPlayer();
            if (!p.hasPermission("villager.interact"))
                return;
            if (!(e.getRightClicked() instanceof LivingEntity))
                return;
            LivingEntity en = (LivingEntity) e.getRightClicked();
            if (en.getType() != EntityType.VILLAGER)
                return;
            int x = (int) en.getLocation().getX();
            int y = (int) en.getLocation().getY();
            int z = (int) en.getLocation().getZ();
            if (en.getLocation().getX() != x)
                return;
            if (en.getLocation().getY() != y)
                return;
            if (en.getLocation().getZ() != z)
                return;
            if (!en.getLocation().getWorld().getName().equalsIgnoreCase("world"))
                return;
    
            e.setCancelled(true);
            Inventory i = Bukkit.createInventory(null, InventoryType.MERCHANT);
            i.setItem(0, new ItemStack(Material.APPLE));
            i.setItem(1, new ItemStack(Material.STONE));
        }
    
    В четвертых, мне нужно сделать так: при обмене какой-то вещи у жителя у игрока снимались деньги и опыт.

    Это весь мой вопрос! Надеюсь будет человек, который сможет мне помочь :)
     
    Последнее редактирование: 23 дек 2020
  2. Автор темы
    Sergeo

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

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    Тема закрыта. Плагин был написан мной :)
     
Статус темы:
Закрыта.

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