rezzy01

Untitled

Aug 28th, 2023
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. import org.bukkit.Bukkit;
  2. import org.bukkit.ChatColor;
  3. import org.bukkit.Material;
  4. import org.bukkit.command.Command;
  5. import org.bukkit.command.CommandExecutor;
  6. import org.bukkit.command.CommandSender;
  7. import org.bukkit.configuration.ConfigurationSection;
  8. import org.bukkit.configuration.file.FileConfiguration;
  9. import org.bukkit.configuration.file.YamlConfiguration;
  10. import org.bukkit.entity.Player;
  11. import org.bukkit.event.EventHandler;
  12. import org.bukkit.event.Listener;
  13. import org.bukkit.event.inventory.InventoryClickEvent;
  14. import org.bukkit.inventory.Inventory;
  15. import org.bukkit.inventory.ItemStack;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17.  
  18. import java.io.File;
  19. import java.io.IOException;
  20.  
  21. public class RewardPlugin extends JavaPlugin implements Listener, CommandExecutor {
  22.  
  23. private File dataFile;
  24. private FileConfiguration dataConfig;
  25.  
  26. private String menuTitle;
  27. private ItemStack requiredItem;
  28. private String rewardCommand;
  29.  
  30. @Override
  31. public void onEnable() {
  32. saveDefaultConfig();
  33. loadConfig();
  34.  
  35. getServer().getPluginManager().registerEvents(this, this);
  36. getCommand("rewards").setExecutor(this);
  37.  
  38. dataFile = new File(getDataFolder(), "data.yml");
  39. dataConfig = YamlConfiguration.loadConfiguration(dataFile);
  40. }
  41.  
  42. private void loadConfig() {
  43. reloadConfig();
  44. menuTitle = ChatColor.translateAlternateColorCodes('&', getConfig().getString("menu-title"));
  45.  
  46. ConfigurationSection requiredItemSection = getConfig().getConfigurationSection("required-item");
  47. Material material = Material.valueOf(requiredItemSection.getString("material"));
  48. String name = ChatColor.translateAlternateColorCodes('&', requiredItemSection.getString("name"));
  49. String[] loreArray = requiredItemSection.getStringList("lore").toArray(new String[0]);
  50. ItemStack item = new ItemStack(material);
  51. item.getItemMeta().setDisplayName(name);
  52. item.getItemMeta().setLore(Arrays.asList(loreArray));
  53. requiredItem = item;
  54.  
  55. rewardCommand = getConfig().getString("reward-command");
  56. }
  57.  
  58. @Override
  59. public void onDisable() {
  60. }
  61.  
  62. @Override
  63. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  64. if (cmd.getName().equalsIgnoreCase("rewards")) {
  65. if (sender instanceof Player) {
  66. Player player = (Player) sender;
  67. openRewardMenu(player);
  68. } else {
  69. sender.sendMessage("Only players.");
  70. }
  71. return true;
  72. }
  73. return false;
  74. }
  75.  
  76. private void openRewardMenu(Player player) {
  77. Inventory menu = Bukkit.createInventory(null, 9, menuTitle);
  78. menu.setItem(4, requiredItem);
  79. player.openInventory(menu);
  80. }
  81.  
  82. @EventHandler
  83. public void onInventoryClick(InventoryClickEvent event) {
  84. if (event.getView().getTitle().equals(menuTitle)) {
  85. ItemStack clickedItem = event.getCurrentItem();
  86. Player player = (Player) event.getWhoClicked();
  87.  
  88. if (clickedItem != null && clickedItem.isSimilar(requiredItem)) {
  89. player.getInventory().remove(clickedItem);
  90. player.sendMessage(ChatColor.GREEN + "Поздравляем! Вы получили награду!");
  91. Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), rewardCommand.replace("{player}", player.getName()));
  92. recordItem(player.getName(), clickedItem);
  93. }
  94.  
  95. event.setCancelled(true);
  96. }
  97. }
  98.  
  99. private void recordItem(String playerName, ItemStack item) {
  100. dataConfig.set("rewards." + playerName + ".item", item);
  101. saveDataConfig();
  102. }
  103.  
  104. private void saveDataConfig() {
  105. try {
  106. dataConfig.save(dataFile);
  107. } catch (IOException e) {
  108. e.printStackTrace();
  109. }
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment