Войти или зарегистрироваться

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

Статус
Закрыто для дальнейших ответов.
Человек должен понимать что он делает, а не просто копипастить.
Код:
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();
        }
}     
}

тут много кода который не связан с вопросом
 
Код:
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();
        }
}    
}

тут много кода который не связан с вопросом
У тебя должен быть отдельный класс под эвент и команду, раз ты уже создал ссылки. Я скинул примеры и того и другого
 
Spigot 1.17.1

Код:
public class Main extends JavaPlugin {

    private IHolder holder;

    public void onEnable() {
        holder = new IHolder();
        saveDefaultConfig();
        getServer().getPluginManager().registerEvents(new InventoryClickListener(this), this);
        new GUICommand(this);
    }

    public IHolder getHolder() {
        return holder;
    }

}
Код:
public class InventoryClickListener implements Listener {

    private String inventory_name;
 
    public InventoryClickListener(Main main) {
        inventory_name = main.getConfig().getString("inventory-name");
    }
 
    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (event.getClickedInventory() != null) {
            if (event.getInventory().getName().equals(inventory_name)) {
                event.setCancelled(true);
                if (event.getClickedSlot() == 1) {
                    // buy();
                }
            }
        }
    }

}
Код:
public class GUICommand implements CommandExecutor {

    private Inventory inv;
    private Main main;

    public GUICommand(Main main) {
        main.getCommand("gui").setExecutor(this);
        this.main = main;
        String inventory_name = main.getConfig().getString("inventory-name");
        int inventory_rows = main.getConfig().getInt("inventory-rows");
        inv = main.getServer().createInventory(main.getHolder(), inventory_rows * 9, inventory_name);
        // залей инвентарь вещами.
    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (args.length == 0) {
            if (sender instanceof Player) {
                Player p = (Player) sender;
                p.openInventory(inv);
            } else {
                sender.sendMessage(main.getConfig().getString("only-for-players"));
            }
        } else {
            sender.sendMessage(main.getConfig().getString("args"));
        }
    }

}
Код:
public class IHolder implements InventoryHolder {

    @Override
    public Inventory getInventory() {
        return null;
    }

}
Код:
#Количество строк может быть от 1 до 6, иначе еррор
inventory-rows: 6
inventory-name: 'GUI Shop'
only-for-players: 'Only for players.'
args: 'Wrong command.'
Код:
name: **
author: [**]
version: **
main: **
commands:
  gui:
    description: open GUI

upload_2021-11-18_22-10-13.png

upload_2021-11-18_22-10-25.png
 
Просто совет, вместо ChatColor.RED ставь в строке §c, так намного проще и быстрее
 
У тебя же в классе blocks ивент
поменял на 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;
}




}
 
if (e.getView().getTitle().equalsIgnoreCase("How should I kill him?")){
}[/CODE]
Получай e.getInventory или ClickedInventory, не помню.
Код:
else if (e.getCurrentItem().getType().equals(Material.CHIPPED_ANVIL)){
}
вот такие проверки вместо equals поставь ==, e.getCurrentItem().getType() == Material.CHIPPED_ANVIL
 
Получай e.getInventory или ClickedInventory, не помню.

вот такие проверки вместо equals поставь ==, e.getCurrentItem().getType() == Material.CHIPPED_ANVIL
тут ошибка

34 строка if (((Command) e.getInventory()).getName().equalsIgnoreCase("CrepperBlocks")){
 
а ну кстати, проверка не правильная, инвентарь с цветом, надо проверять по "§cCrepperBlocks"
 
Тебе скинули готовый код, ты не можешь его просто скопировать. Вывод - ты не на том уровне, чтобы сейчас решать подобные задачи. Учись с еще более малого тогда и развивайся.
По этой теме уже все потеряно, не доставай людей.
 
Тебе скинули готовый код, ты не можешь его просто скопировать. Вывод - ты не на том уровне, чтобы сейчас решать подобные задачи. Учись с еще более малого тогда и развивайся.
По этой теме уже все потеряно, не доставай людей.
Солидарен, человек сразу так полез не туда куда нужно
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх