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

Помогите Инвентари и продажа по клику

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    Код:
    package main;
    
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.PluginCommand;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    public class main extends JavaPlugin
    {
    
        
        private static main instance;
    
    //    public File cfg = new File(getDataFolder() + File.separator + "data.yml");
    //    public FileConfiguration data = YamlConfiguration.loadConfiguration(cfg);
        public File pzcfg = new File(getDataFolder() + File.separator + "player-data.yml");
        public FileConfiguration pdata = YamlConfiguration.loadConfiguration(pzcfg);
    
        public static main getInstance(){
            return instance;
        }
        
        @Override
        public void onEnable() {
            instance = this;
            
            Bukkit.getPluginCommand("blocksell").setExecutor(new blocks());
                 Bukkit.getPluginManager().registerEvents(new hendler(), this);
                Bukkit.getServer().getScheduler().runTaskTimer(this, new Runnable() {
                int i = 0;
         @Override
         public void run() {
             if(i == 0){
                 Bukkit.getServer().broadcastMessage("    ");
                 Bukkit.getServer().broadcastMessage(ChatColor.GOLD + "┏ " + ChatColor.WHITE + "Наш текстур пак:");
                 Bukkit.getServer().broadcastMessage(ChatColor.GOLD + "┗ " + ChatColor.RED + "" + ChatColor.GRAY + " (Кликабельно)");
                 Bukkit.getServer().broadcastMessage("    ");
                 i++;
             }else if(i == 1){
                 Bukkit.getServer().broadcastMessage("    ");
                 Bukkit.getServer().broadcastMessage(ChatColor.GOLD + "┏ " + ChatColor.WHITE + "У нас есть дискорд сервер:");
                 Bukkit.getServer().broadcastMessage(ChatColor.GOLD + "┗ " + ChatColor.RED + "https://discord.gg" + ChatColor.GRAY + " (Кликабельно)");
                 Bukkit.getServer().broadcastMessage("    ");
                 i--;
             }
         }
                }, 0,2400);
        }
        public void save(){
            try {
                pdata.save(pzcfg);
            } catch (IOException e) {
                e.printStackTrace();
            }
    }     
    }
    тут много кода который не связан с вопросом
     
  2. NukerFall

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

    Баллы:
    76
    У тебя должен быть отдельный класс под эвент и команду, раз ты уже создал ссылки. Я скинул примеры и того и другого
     
  3. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    upload_2021-11-18_22-10-13.png

    upload_2021-11-18_22-10-25.png
     
  4. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    У тебя же в классе blocks ивент
     
  5. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Просто совет, вместо ChatColor.RED ставь в строке §c, так намного проще и быстрее
     
  6. NukerFall

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

    Баллы:
    76
  7. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    поменял на block нечего не поменялось


    Код:
    package main;
    
    import net.md_5.bungee.api.ChatColor;
    
    import org.bukkit.Bukkit;
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.HumanEntity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.ClickType;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.inventory.InventoryInteractEvent;
    import org.*********ventory.Inventory;
    import org.*********ventory.InventoryHolder;
    import org.*********ventory.ItemStack;
    import org.*********ventory.meta.ItemMeta;
    import org.bukkit.material.Wool;
    
    import java.awt.Menu;
    import java.util.ArrayList;
    import java.util.List;
    
    public class blocks implements Listener, CommandExecutor {
    
        Inventory inv = Bukkit.createInventory(null, 9, ChatColor.RED +  "CrepperBlocks");
        @EventHandler
        public void onClick(InventoryClickEvent e) {
             Player p = (Player) e.getWhoClicked();
             if (e.getView().getTitle().equalsIgnoreCase("How should I kill him?")){
                 e.setCancelled(true);
                 if (e.getCurrentItem() == null){
                     return;
                 }else if (e.getCurrentItem().getType().equals(Material.CHIPPED_ANVIL)){
                     p.sendMessage("You want to slice someone! Nice!");
                     p.closeInventory();
                 }else if (e.getCurrentItem().getType().equals(Material.CYAN_CARPET)){
                     p.sendMessage("You want to explode him! OKay!");
                     p.closeInventory();
                 }
             }
        }
        @EventHandler
        public void onGUi(Player p) {
            ItemStack item1 = new ItemStack(Material.DIAMOND_BLOCK);
            ItemMeta item1Meta = item1.getItemMeta();
            ItemStack item2 = new ItemStack(Material.REDSTONE_BLOCK);
            ItemMeta item2Meta = item2.getItemMeta();
         
            item1Meta.setDisplayName("Survival");
            item1.setItemMeta(item1Meta);
            item2Meta.setDisplayName("Creative");
            item2.setItemMeta(item2Meta);
         
            inv.setItem(3, item1);
            inv.setItem(5, item2);
            p.openInventory(inv);
        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
            if(cmd.getName().equalsIgnoreCase("blocksell")) {
                Player p = (Player) sender;
                onGUi(p);
    
    
            }
            return true;
    }
    
    
    
    
    }
     
  8. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Получай e.getInventory или ClickedInventory, не помню.
    вот такие проверки вместо equals поставь ==, e.getCurrentItem().getType() == Material.CHIPPED_ANVIL
     
  9. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    тут ошибка

    34 строка if (((Command) e.getInventory()).getName().equalsIgnoreCase("CrepperBlocks")){
     
  10. NukerFall

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

    Баллы:
    76
    zachem?)
     
  11. NukerFall

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

    Баллы:
    76
    if (event.getInventory().getHolder() instanceof IHolder) {

    вместо проверки на имя
     
  12. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    ты зачем комманд закастил?
    if (e.getInventory().getName().equalsIgnoreCase("CrepperBlocks"))
     
  13. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    а ну кстати, проверка не правильная, инвентарь с цветом, надо проверять по "§cCrepperBlocks"
     
  14. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    Иначе выдаёт ошибку
     
  15. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    кинь ошибку и код, синтаксис где-то напутал
     
  16. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    То что getName нельзя использовать
     
  17. NukerFall

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

    Баллы:
    76
    потому что его нет у инвентаря, проверяй холдером вместо этого
     
  18. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    всё верно, getTitle
     
  19. Lemar98

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

    Баллы:
    76
    Тебе скинули готовый код, ты не можешь его просто скопировать. Вывод - ты не на том уровне, чтобы сейчас решать подобные задачи. Учись с еще более малого тогда и развивайся.
    По этой теме уже все потеряно, не доставай людей.
     
  20. Witenin

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

    Баллы:
    76
    Имя в Minecraft:
    Witenin
    Солидарен, человек сразу так полез не туда куда нужно
     
Статус темы:
Закрыта.

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