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

Помогите Сделайте плагин на запрет переименновывания предметов в наковальне

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

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

    Strah Новичок

    Баллы:
    6
    Имя в Minecraft:
    Strah
    Сделайте пж плагин который будет запрещать переименновывать предметы в наковальне пж
     
  2. Хостинг MineCraft
    <
  3. L4c05t

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

    Баллы:
    78
    Имя в Minecraft:
    Lacost
    Up
    Готов купит если есть такие кто возьмется написать подобный плагин.
     
  4. YouROOCK

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

    Баллы:
    61
    А наковальни запретить не?
     
  5. L4c05t

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

    Баллы:
    78
    Имя в Minecraft:
    Lacost
    Речь идёт о плагине и не запрете наковальни !
     
  6. YouROOCK

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

    Баллы:
    61
    Мне было бы проще запретить наковальни и не мучиться.
     
  7. Qwertion

    Qwertion Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Qwertion
    Согласен, ибо нафиг они тогда нужны.
     
  8. Agravaine

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

    Баллы:
    88
    Имя в Minecraft:
    Agravaine25
    Чинить вещи, не?
     
  9. Qwertion

    Qwertion Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Qwertion
    Хм, лол )
     
  10. Автор темы
    Strah

    Strah Новичок

    Баллы:
    6
    Имя в Minecraft:
    Strah
    Поможет кто написать или нет ?
     
  11. Qmaks

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

    Баллы:
    173
    Имя в Minecraft:
    Qmaks
    Тут походу придурки собрались, которые решают проблемы запретами.
     
  12. L4c05t

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

    Баллы:
    78
    Имя в Minecraft:
    Lacost
    +, тут большинство таких.[DOUBLEPOST=1450286403,1450286370][/DOUBLEPOST]Up
     
  13. YouROOCK

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

    Баллы:
    61
    Зачем сразу оскор****ь? Данный человек долго будет ждать этот плагин. Я предложил отключить наковальни, сразу придурок?
     
  14. Qmaks

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

    Баллы:
    173
    Имя в Minecraft:
    Qmaks
    Код:
        public void onInventoryClick(InventoryClickEvent event) {
            if (event.getWhoClicked().getType() == EntityType.PLAYER) {
                Player p = (Player) event.getWhoClicked();
                ItemStack item = event.getCurrentItem();
    
                if (event.getInventory().getType() == InventoryType.ANVIL) {
                    if (item != null) {
                        ItemStack item0 = event.getInventory().getItem(0);
                        if (item0 != null) {
                            String originalName = "";
                            if (item0.hasItemMeta() && item0.getItemMeta().hasDisplayName()) {
                                originalName = item0.getItemMeta().getDisplayName();
                            }
    
                            String changedName = "";
                            if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()) {
                                changedName = item.getItemMeta().getDisplayName();
                            }
    
    
                            if (!originalName.equals(changedName)) {
                                event.setCancelled(true);
                                p.sendMessage(ChatColor.RED + "Переименовывание предметов запрещено.");
                            }
                        }
                    }
                }
            }
        }
     
  15. L4c05t

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

    Баллы:
    78
    Имя в Minecraft:
    Lacost
    Cяп, можно куда то тут указать ид ? или он все запретит переименованные класть куда либо?
     
  16. Qmaks

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

    Баллы:
    173
    Имя в Minecraft:
    Qmaks
    Всё запретит
     
  17. L4c05t

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

    Баллы:
    78
    Имя в Minecraft:
    Lacost
    КК, еще раз спасибо.[DOUBLEPOST=1450359510,1450358850][/DOUBLEPOST]
    Можешь подробней сказать ?
    Я понял так, закинул в наковальню предмет переименовал его и после того как переименовал я его не смогу закидывать в любые gui предметов ? (Печки,дробилки,утилизатора,сундука)
    так?
     
  18. Qmaks

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

    Баллы:
    173
    Имя в Minecraft:
    Qmaks
    Ты просто не сможешь забрать переименованный предмет.
     
  19. L4c05t

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

    Баллы:
    78
    Имя в Minecraft:
    Lacost
    А зачем тогда наковальня ?
     
  20. Qmaks

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

    Баллы:
    173
    Имя в Minecraft:
    Qmaks
    Код:
        public void onInventoryClick(InventoryClickEvent event) { //Получаем ивент действия(клика) в инвентаре
            if (event.getWhoClicked().getType() == EntityType.PLAYER) { // Если чудище, которое кликает оказалось игроком
                Player p = (Player) event.getWhoClicked(); //Получаем определённого игрока, который выполнил действие(клик)
                ItemStack item = event.getCurrentItem(); //Получаем текущий используемый предмет (Получаем с event, то есть будет выдавать тот предмет, который мы перетаскивали куда-то)
    
                if (event.getInventory().getType() == InventoryType.ANVIL) { //Получение типа инвентаря с event'a. Если тип инвентаря - Наковальня
                    if (item != null) { //Если вещь не равна нулю (Если вещь существует)
                        ItemStack item0 = event.getInventory().getItem(0); //Получаем предмет с левого слота (Самого первого)
                        [ 0 = То, что слева; 1 = то, что правее; 2 = результат (правый слот) ]
                        if (item0 != null) { //Если предмет слева не равен нулю (Если он существует)
                            String originalName = ""; //Создаём переменную originalName(оригинальное название тип)
                            if (item0.hasItemMeta() && item0.getItemMeta().hasDisplayName()) { //Если предмет имеет информацию какую либо (lore, название, зачарования, атрибуты) и если предмет имеет название | Это идёт со слота наковальни (Который слева)
                                originalName = item0.getItemMeta().getDisplayName(); //Присваиваем переменной originalName название предмета переменной item0 
                            }
    
                            String changedName = ""; //Создаём переменную changedName (изменённое название)
                            if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()) {  //Если предмет имеет информацию какую либо (lore, название, зачарования, атрибуты) и если предмет имеет название | Это идёт используемый предмет относительно event'a (Чуть выше можно увидеть присвоение переменной item)
                                changedName = item.getItemMeta().getDisplayName(); //Присваиваем переменной changedName название предмета переменной item
                            }
    
    
                            if (!originalName.equals(changedName)) { //Если переменная originalName не соответствует (не равна) переменной changedName
                                event.setCancelled(true); //Отменяем event
                                p.sendMessage(ChatColor.RED + "Переименовывание предметов запрещено."); //Отправляем сообщение о том, что такое делать запрещено
                            }
                        }
                    }
                }
            }
        }
    [DOUBLEPOST=1450360854][/DOUBLEPOST]Тут всё до самых мелких подробностей прокомментированно
     
  21. IvanTabakerka

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

    Баллы:
    66
    Попробовал сделать, не получилось. Не работает код(
    Сервер плагин видит, но предметы как переименовывались, так и переименовываются.


    Код:
    package gmc;
    
    import org.bukkit.ChatColor;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.inventory.InventoryType;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class anr extends JavaPlugin implements Listener{
       
        public void onInventoryClick(InventoryClickEvent event) { //Получаем ивент действия(клика) в инвентаре
            if (event.getWhoClicked().getType() == EntityType.PLAYER) { // Если чудище, которое кликает оказалось игроком
                Player p = (Player) event.getWhoClicked(); //Получаем определённого игрока, который выполнил действие(клик)
                ItemStack item = event.getCurrentItem(); //Получаем текущий используемый предмет (Получаем с event, то есть будет выдавать тот предмет, который мы перетаскивали куда-то)
                if (event.getInventory().getType() == InventoryType.ANVIL) { //Получение типа инвентаря с event'a. Если тип инвентаря - Наковальня
                    if (item != null) { //Если вещь не равна нулю (Если вещь существует)
                        ItemStack item0 = event.getInventory().getItem(0); //Получаем предмет с левого слота (Самого первого)
                        if (item0 != null) { //Если предмет слева не равен нулю (Если он существует)
                            String originalName = ""; //Создаём переменную originalName(оригинальное название тип)
                            if (item0.hasItemMeta() && item0.getItemMeta().hasDisplayName()) { //Если предмет имеет информацию какую либо (lore, название, зачарования, атрибуты) и если предмет имеет название | Это идёт со слота наковальни (Который слева)
                                originalName = item0.getItemMeta().getDisplayName(); //Присваиваем переменной originalName название предмета переменной item0
                            }
                            String changedName = ""; //Создаём переменную changedName (изменённое название)
                            if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()) {  //Если предмет имеет информацию какую либо (lore, название, зачарования, атрибуты) и если предмет имеет название | Это идёт используемый предмет относительно event'a (Чуть выше можно увидеть присвоение переменной item)
                                changedName = item.getItemMeta().getDisplayName(); //Присваиваем переменной changedName название предмета переменной item
                            }
                            if (!originalName.equals(changedName)) { //Если переменная originalName не соответствует (не равна) переменной changedName
                                event.setCancelled(true); //Отменяем event
                                p.sendMessage(ChatColor.GREEN + "Переименовывание предметов запрещено. Извини, но с этим связано множество багов."); //Отправляем сообщение о том, что такое делать запрещено
                            }
                        }
                    }
                }
            }
        }
       
    }
    Только начал разбираться в создании плагинов.
    Было бы не плохо, если бы указали мне на мои ошибки.
     

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