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

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


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

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


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

Только начал разбираться в создании плагинов.
Было бы не плохо, если бы указали мне на мои ошибки.
@EventHandler забыл
 
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 onEnable() {
PluginManager pm = new PluginManager();
pm.registerEvents(this, this); <--- Регистрация евента!
}

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

}
 
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 onEnable() {
PluginManager pm = new PluginManager();
pm.registerEvents(this, this); <--- Регистрация евента!
}

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

}
Спасибо
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 onEnable() {
PluginManager pm = new PluginManager();
pm.registerEvents(this, this); <--- Регистрация евента!
}

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

}
upload_2017-4-13_2-37-2.png


Description Resource Path Location Type
Cannot instantiate the type PluginManager anr.java /GoodMineraft Anvil not Rename/src/gmc line 17 Java Problem

Ошибку выдаёт. Может я что то упустил?

Код:
package gmc;

import org.bukkit.ChatColor;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
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.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class anr extends JavaPlugin implements Listener{
   
    public void onEnable() {
        PluginManager pm = new PluginManager();
        pm.registerEvents(this, this);
        }
   
    @EventHandler
    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 + "Переименовывание предметов запрещено. Извини, но с этим связано множество багов."); //Отправляем сообщение о том, что такое делать запрещено
                        }
                    }
                }
            }
        }
    }
   
}
 
Спасибо

Посмотреть вложение 45916


Description Resource Path Location Type
Cannot instantiate the type PluginManager anr.java /GoodMineraft Anvil not Rename/src/gmc line 17 Java Problem

Ошибку выдаёт. Может я что то упустил?

Код:
package gmc;

import org.bukkit.ChatColor;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
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.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class anr extends JavaPlugin implements Listener{
  
    public void onEnable() {
        PluginManager pm = new PluginManager();
        pm.registerEvents(this, this);
        }
  
    @EventHandler
    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 + "Переименовывание предметов запрещено. Извини, но с этим связано множество багов."); //Отправляем сообщение о том, что такое делать запрещено
                        }
                    }
                }
            }
        }
    }
  
}
Ой сорри, это я неправильно тебе дал код, вот PluginManager pm = getServer ().getPluginManager ();
 
Ещё раз апну тему, мне просто недавно хромосому подарили.
 
Назад
Верх