ReportsGUI - Creating Items with info

Discussion in 'Plugin Development' started by SneakyBruh, Sep 16, 2017.

Thread Status:
Not open for further replies.
  1. Offline

    SneakyBruh

    Im making a /report command where when a player creates a report the info used from the command (Player reported name, person who reported and reason) will be stored onto a paper which will be located in a inventory. This inventory is accessed by typing /reports. How would i get the info used from /report onto a paper into the inventory? (I know the code is messy, I will clean it later)

    Report Class: (open)

    Code:
    public class Reports implements CommandExecutor {
    
    private Main main;
    public Reports(Main main) {
    this.main = main;
    }
    
    
    @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if(cmd.getLabel().equalsIgnoreCase("report"));
          if (!sender.hasPermission("alertsplus.report")) {
            String noperm = main.getConfig().getString("No-Permission");
              sender.sendMessage(ChatColor.translateAlternateColorCodes('&', noperm));
                return true;
    
            }
    
            if (args.length == 0) {
                sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou must have two arguments! /report <player> <reason>"));
                return true;
    
            }
            if(args.length == 1) {
                sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou must have two arguments! /report <player> <reason>"));
                return true;
    
            }
    
            if(args.length >= 2) {
                String targetName = args[0];
                Player player = (Player) sender;
                Player target = Bukkit.getPlayer(targetName);
                if (target == null) {
                    player.sendMessage((ChatColor.translateAlternateColorCodes('&', "&cUnable to find " + targetName + "!")));
                    return true;
    
                }
    
                StringBuilder sb = new StringBuilder();
                for (int i = 1; i < args.length; i++) {
                    sb.append(args);
                    if (i < args.length) {
                        sb.append(" ");
    
                    }
    
                }
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cSuccessfully reported " + targetName + " for " + sb.toString()));
                ItemStack paper = new ItemStack(Material.PAPER);
                ItemMeta meta = paper.getItemMeta();
                meta.setDisplayName(targetName);
                ArrayList<String> lore = new ArrayList<String>();
                lore.add("Reason: " + sb.toString());
                lore.add("Reported by: " + player.getName());
                meta.setLore(lore);
    
                paper.setItemMeta(meta);
    
                inv.addItem(new ItemStack(paper));
    
                  return true;
    
            }
    
    return true;
    
    }
    
    }


    ReportGUI Class: (open)

    Code:
    [
    public class ReportsGUI implements CommandExecutor, Listener {
    Inventory inv = Bukkit.createInventory(null, 54, ChatColor.translateAlternateColorCodes('&',
    "&cReports:"));
    
    private Main main;
    public ReportsGUI(Main main) {
    this.main = main;
    }
    
    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
    Player player = (Player) event.getWhoClicked(); // The player that clicked the item
    Inventory inventory = event.getInventory(); // The inventory that was clicked in
    if (inventory.getName().equalsIgnoreCase(inv.getName()));
    event.setCancelled(true);
    player.closeInventory();
    
    }
    
    @Override
    
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if(cmd.getLabel().equalsIgnoreCase("reports"));
    Player player = (Player) sender;
          if (!sender.hasPermission("alertsplus.reports")) {
            String noperm = main.getConfig().getString("No-Permission");
              sender.sendMessage(ChatColor.translateAlternateColorCodes('&', noperm));
                return true;
    
          } else {
    
         player.openInventory(inv);
    
            }
    
    return false;
    
    
    }
    
    }
    

     
    Last edited: Sep 17, 2017
  2. Offline

    yPedx

    @SneakyBruh
    Instead of having only
    Code:
    Inventory inv = Bukkit.createInventory(null, 54, ChatColor.translateAlternateColorCodes('&',
    "&cReports:"));
    do something like this:
    - Save your ItemStack in a HashMap
    - Access the HashMap from the reportsGUI class and add the ItemStack to the inventory by using the sample code below
    Code:
    public void gui(Player player) {
        Inventory inv = Bukkit.createInventory(null, 54, ChatColor.translateAlternateColorCodes('&', "&cReports:"));
      
        // add the saved ItemStack(s) here.
      
        player.openInventory(inv); // and then open the inventory at the end.
      
        // now you can use gui(Player); to open the gui.
    }
    Also, remember to check if the sender of the command is a player before you cast sender to player.
     
Thread Status:
Not open for further replies.

Share This Page