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

  • Автор темы Автор темы Strah
  • Дата начала Дата начала

Strah

Новичок
Баллы
6
Имя в Minecraft
Strah
Сделайте пж плагин который будет запрещать переименновывать предметы в наковальне пж
 
Up
Готов купит если есть такие кто возьмется написать подобный плагин.
 
А наковальни запретить не?
 
Согласен, ибо нафиг они тогда нужны.
 
Чинить вещи, не?
 
Поможет кто написать или нет ?
 
Тут походу придурки собрались, которые решают проблемы запретами.
 
+, тут большинство таких.
Up
Код:
    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 + "Переименовывание предметов запрещено.");
                        }
                    }
                }
            }
        }
    }
 
Код:
    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 + "Переименовывание предметов запрещено.");
                        }
                    }
                }
            }
        }


    }

Cяп, можно куда то тут указать ид ? или он все запретит переименованные класть куда либо?
 
КК, еще раз спасибо.
Можешь подробней сказать ?
Я понял так, закинул в наковальню предмет переименовал его и после того как переименовал я его не смогу закидывать в любые gui предметов ? (Печки,дробилки,утилизатора,сундука)
так?
 
КК, еще раз спасибо.

Можешь подробней сказать ?
Я понял так, закинул в наковальню предмет переименовал его и после того как переименовал я его не смогу закидывать в любые gui предметов ? (Печки,дробилки,утилизатора,сундука)
так?
Ты просто не сможешь забрать переименованный предмет.
 
КК, еще раз спасибо.

Можешь подробней сказать ?
Я понял так, закинул в наковальню предмет переименовал его и после того как переименовал я его не смогу закидывать в любые gui предметов ? (Печки,дробилки,утилизатора,сундука)
так?
Код:
    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 + "Переименовывание предметов запрещено."); //Отправляем сообщение о том, что такое делать запрещено
                        }
                    }
                }
            }
        }
    }

Тут всё до самых мелких подробностей прокомментированно
 
Код:
    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 + "Переименовывание предметов запрещено."); //Отправляем сообщение о том, что такое делать запрещено
                        }
                    }
                }
            }
        }
    }

Тут всё до самых мелких подробностей прокомментированно

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


Код:
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.*********ventory.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 + "Переименовывание предметов запрещено. Извини, но с этим связано множество багов."); //Отправляем сообщение о том, что такое делать запрещено
                        }
                    }
                }
            }
        }
    }
   
}

Только начал разбираться в создании плагинов.
Было бы не плохо, если бы указали мне на мои ошибки.
 
Назад
Верх