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

Помогите Убрать открытие сундука.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Kloper, 19 июл 2019.

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

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    Привет, для сервера нужен плагин на кейсы, и ключи которые выпадают за копание той же земли.(не призон)

    Сделал сам кейс, и ключи с дропом, но не знаю как сделать так чтобы сундук не открывался.

    вот код кейсов

    Код:
    @SuppressWarnings("deprecation")
        @EventHandler
        public void DropedChest(PlayerInteractEvent e)
        {
            Player p = e.getPlayer();
            if(e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
            if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.MAGMA_CREAM) return;
                Block b = e.getClickedBlock();
                if(b.getType() == Material.TRAPPED_CHEST) {
                    
                    ItemStack item = p.getInventory().getItemInMainHand();
                    if(!item.getItemMeta().hasDisplayName()) return;
                    if(item.getItemMeta().getDisplayName().equals("§6§lКлюч Первого Уровня")) {
                        
                        ItemStack onedrop = new ItemStack(Material.DIRT);
                        ItemStack twodrop = new ItemStack(Material.DIAMOND);
                        ItemStack threedrop = new ItemStack(Material.APPLE);
                        ItemStack fourdrop = new ItemStack(Material.COAL);
                        ItemStack fivedrop = new ItemStack(Material.QUARTZ);
                        ItemStack sixdrop = new ItemStack(Material.LEATHER);
                        ItemStack sevendrop = new ItemStack(Material.ANVIL);
                        ItemStack eightdrop = new ItemStack(Material.PURPUR_BLOCK);
                        ItemStack ninedrop = new ItemStack(Material.DIAMOND);
                        ItemStack tendrop = new ItemStack(Material.IRON_CHESTPLATE);
                        
                        Inventory inv = p.getInventory();
                        
                        Random rd = new Random();
                        
                        int gavno_random_haha;
                        for(int counter = 1; counter<=1;counter++) {
                        gavno_random_haha = 1+rd.nextInt(10);
                            
                        if(gavno_random_haha == 1) {
                            inv.addItem(onedrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпала Земля!");
                        }
                            
                        if(gavno_random_haha == 2) {
                            inv.addItem(twodrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпал Алмаз!");
                        }
                        
                        if(gavno_random_haha == 3) {
                            inv.addItem(threedrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпало Яблоко!");
                        }
                        
                        if(gavno_random_haha == 4) {
                            inv.addItem(fourdrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпал Угль!");
                        }
                            
                        if(gavno_random_haha == 5) {
                            inv.addItem(fivedrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпало Кварц!");
                        }
                        
                        if(gavno_random_haha == 6) {
                            inv.addItem(sixdrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпала Кожа!");
                        }
                        
                        if(gavno_random_haha == 7) {
                            inv.addItem(sevendrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпала Наковальня!");
                        }
                            
                        if(gavno_random_haha == 8) {
                            inv.addItem(eightdrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпал Пурпурный Блок!");
                        }
                        
                        if(gavno_random_haha == 9) {
                            inv.addItem(ninedrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпал Алмаз!");
                        }
                        
                        if(gavno_random_haha == 10) {
                            inv.addItem(tendrop);
                            p.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам выпал Железный Нагрудник!");
                        }
                        
                    }
                    
                        
                        
                    }
                }
                
                if(e.getAction() != Action.RIGHT_CLICK_BLOCK) {
                if(p.getItemInHand().getType() != Material.MAGMA_CREAM) {
                    e.setCancelled(true);
                }
                if(p.getItemInHand().getType() == Material.MAGMA_CREAM) {
                    e.setCancelled(true);
                }
            
            
                }
        }
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
     
  3. Автор темы
    Kloper

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    дак не получается, объясни подробнее
     
  4. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Ну в смысле - объясни? Ты сам же используешь это внизу.
    Судя по стилю и кривым табам, начал программировать ты либо недавно, либо упоролся - рано взялся за разработку.
     
  5. synthetic

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

    Баллы:
    76
    Названия переменных огонь
     
  6. Автор темы
    Kloper

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    мне тоже нравится
     
  7. synthetic

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

    Баллы:
    76
    Это можно сделать с помощью Skript.

    Код:
    on rightclick on chest:
        if player's tool is coal:
            if name of player's tool is equal to "<magenta>Ключ":
                set event-block to air
                drop diamond at location of event-block
                stop
        cancel event
    
     
  8. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Не тестировал, но скорее всего, будет работать нормально. Разберись, что к чему.
    Pair<First, Second> - это объект, содержащий два других объекта.
    Импорт: com.sun.tools.javac.util.Pair
    Вместо него можешь использовать что-то другое.
    Или вовсе создать свой объект по типу CaseResult...

    Вместо ItemStack в этой паре можно хранить Material, а стак создавать непосредственно при выдаче предмета. Но тогда не будет возможности удобно задавать какие-то уникальные характеристики этим предметам по типу имени/описания, урона/защиты, (если это оружие или броня) и всего прочего.

    @Nonnull - аннотация, сообщающая о том, что объект заведомо не может быть null.
    Импорт: javax.annotation.Nonnull
    @Nullable - соответственно, объект может иметь значение null.
    Импорт: javax.annotation.Nullable
    Добавлено исключительно для наглядности.
    PHP:
        @EventHandler
        
    private void on(PlayerInteractEvent event) {
            
    // Проверяем, что на блок нажали правой кнопкой мыши
            
    @Nonnull Action action event.getAction();
            if (
    action != Action.RIGHT_CLICK_BLOCK// Если это не правый клик по блоку
                
    return; // То далее метод не выполняем

            // Проверяем, что нажали на блок сундука-ловушки
            
    @Nullable Block clickedBlock event.getClickedBlock();
            if (
    clickedBlock == null // Если нажатый блок отсутствует
                    
    || clickedBlock.getType() != Material.TRAPPED_CHEST//Или если материал блока не сундук-ловушка
                
    return; // То далее метод не выполняем

            // Проверяем, что в руке игрока ключ
            
    @Nonnull ItemStack handItem event.getPlayer().getInventory().getItemInMainHand();
            if (
    handItem.getType() != Material.MAGMA_CREAM // Если это не магма-крем
                    
    || !handItem.hasItemMeta() // Или если не имеет мета-данные
                    
    || !handItem.getItemMeta().hasDisplayName() // Или если не имеет какого-либо названия
                    
    || !handItem.getItemMeta().getDisplayName().equals("§6§lКлюч Первого Уровня")) // Или если не имеет название "Ключ"
                
    return; // То далее метод не выполняем

            // Все условия совпадают, запускаем работу "кейса"
     
            // Сразу отменяем дефолтное действие - открытие сундука, чтобы потом не забыть
            
    event.setCancelled(true);

            
    // Создаём список выпадающих предметов
            // Можно создать один раз при запуске сервера
            // Обрати внимание, что у тебя в списке два алмиза. Так и должно быть?
            
    List<Pair<ItemStackString>> items = new ArrayList<>(Arrays.asList(
                    new 
    Pair<>(new ItemStack(Material.DIRT), "выпала Земля"),
                    new 
    Pair<>(new ItemStack(Material.DIAMOND), "выпал Алмаз"),
                    new 
    Pair<>(new ItemStack(Material.APPLE), "выпало Яблоко"),
                    new 
    Pair<>(new ItemStack(Material.COAL), "выпал Угль"),
                    new 
    Pair<>(new ItemStack(Material.QUARTZ), "выпало Кварц"),
                    new 
    Pair<>(new ItemStack(Material.LEATHER), "выпала Кожа"),
                    new 
    Pair<>(new ItemStack(Material.ANVIL), "выпала Наковальня"),
                    new 
    Pair<>(new ItemStack(Material.PURPUR_BLOCK), "выпал Пурпурный Блок"),
                    new 
    Pair<>(new ItemStack(Material.DIAMOND), "выпал Алмаз"),
                    new 
    Pair<>(new ItemStack(Material.IRON_CHESTPLATE), "выпал Железный Нагрудник")
            ));

            
    // Получаем произвольный результат из списка по индексу
            
    Pair<ItemStackStringresult items.get(new Random().nextInt(items.size()));

            
    // Выдаём игроку предмет и выводим сообщение
            
    @Nonnull Player player event.getPlayer();
            
    player.getInventory().addItem(result.fst);
            
    player.sendMessage("§8§l[§c§lRelease§3§lProject§8§l] §a§lВам " result.snd "!");
        }
     
    Последнее редактирование: 19 июл 2019
  9. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    Еще реакшн предложи, везде свой скрипт :nerd:
     
  10. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    ez)00))0
    Код:
    BLOCK_CLICK:
      case_click:
        block-type: CHEST
        click-type: RIGHT
        flags:
        - item=type:gold_nugget name:{&6&lКлюч Первого Уровня}
        actions:
        - item_remove=type:gold_nugget name:{&6&lКлюч Первого Уровня}
        - cancel_event=true
        - var_temp_set=id:rnd value:%random:dirt,diamond,coal%
        - execute=activator:case_result_%rnd%
    EXEC:
      case_result_dirt:
        actions:
        - item_give=type:dirt lore:{&fСтрашный как моя жизнь}
        - message=&aВам выпал огроменный кусок земли!
      case_result_diamond:
        actions:
        - item_give=type:diamond
        - message=&aВам выпал олмас!
      case_result_coal:
        actions:
        - item_give=type:coal name:{Активированный уголь}
        - message=&aВам выпал чудотворный активированный уголь!
     
  11. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    :risitas:
    Ор...
     
  12. Автор темы
    Kloper

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    допёр в чём моя ошибка, спасибо всем вам.
     
Статус темы:
Закрыта.

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