Вопрос Не могу исправить код :)

Версия Minecraft
1.16.X

MrJetby

Пользователь
Сообщения
38
Решения
2
Веб-сайт
treexmine.ru
Помогите поправить код плиз :3

Хотел сделать /megaminer reload
А получилось так что я сломал систему

Код:
package me.jetby.megaminer.Commands;

import me.jetby.megaminer.MegaMiner;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

public class Reload implements CommandExecutor {
    private ConfigurationSection messagesConfig;

    @Override
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
        if (label.equalsIgnoreCase("megaminer") && args.length > 0 && args[0].equalsIgnoreCase("reload")) {
            if (sender instanceof Player) {
                Player player = (Player) sender;
                if (player.hasPermission("megaminer.reload")) {
                    reloadConfig();
                    messagesConfig = MegaMiner.getInstance().getConfig().getConfigurationSection("messages");
                    player.sendMessage(ChatColor.GREEN + ChatColor.translateAlternateColorCodes('&', messagesConfig.getString("reload")));
                } else {
                    sender.sendMessage(ChatColor.RED + messagesConfig.getString("NoPermission"));
                }
            } else {
                // Команда была вызвана консолью или другим источником
                reloadConfig();
                messagesConfig = MegaMiner.getInstance().getConfig().getConfigurationSection("messages");
                sender.sendMessage(ChatColor.GREEN + "Config reloaded.");
            }
            return true;
        }
        return false;
    }

    private void reloadConfig() {
        MegaMiner.getInstance().reloadConfig();
    }
}

Сама ошибка:

Вам необходимо зарегистрироваться для просмотра изображений-вложений


Также вот главный класс:

Код:
package me.jetby.megaminer;

import me.clip.placeholderapi.PlaceholderAPI;
import me.jetby.megaminer.Commands.Reload;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.block.Block;
import org.bukkit.command.CommandExecutor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.Map;

import static java.util.Objects.requireNonNull;

public class MegaMiner extends JavaPlugin implements Listener, CommandExecutor {

    private ConfigurationSection blocksConfig;
    private ConfigurationSection messagesConfig;
    private Economy economy;

    public static Plugin getInstance() {
        return null;
    }

    @Override
    public void onEnable() {
        getLogger().info("MegaMiner has been enabled!");


        // Загрузка конфига
        getCommand("megaminer").setExecutor(new Reload());
        saveDefaultConfig();
        reloadConfig();
        blocksConfig = getConfig().getConfigurationSection("blocks");
        messagesConfig = getConfig().getConfigurationSection("messages");

        // Регистрация событий и другие инициализации
        getServer().getPluginManager().registerEvents(this, this);



        // Подключение к Vault
        if (!setupEconomy()) {
            getLogger().severe("Vault not found! Disabling MegaMiner.");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
    }

    private boolean setupEconomy() {
        if (Bukkit.getPluginManager().getPlugin("Vault") == null) {
            return false;
        }

        RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
        if (rsp == null) {
            return false;
        }

        economy = rsp.getProvider();
        return economy != null;
    }

    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        Player player = event.getPlayer();
        Block block = event.getBlock();

        // Проверка, является ли разрушенный блок блоком, который нужно обработать
        if (blocksConfig.contains(block.getType().name())) {
            int minCurrency = blocksConfig.getInt(block.getType().name() + ".Min");
            int maxCurrency = blocksConfig.getInt(block.getType().name() + ".Max");
            boolean actionBarEnabled = blocksConfig.getBoolean(block.getType().name() + ".Actionbar");
            boolean messageEnabled = blocksConfig.getBoolean(block.getType().name() + ".Message");
            boolean bossBarEnabled = blocksConfig.getBoolean(block.getType().name() + ".Bossbar");
            int chance = blocksConfig.getInt(block.getType().name() + ".Chance");

            // Проверка на наличие зачарования "Шёлковое касание"
            ItemStack tool = player.getInventory().getItemInMainHand();
            if (!hasSilkTouch(tool)) {
                // Логика для выпадения валюты с учетом шанса
                if (Math.random() * 100 < chance) {
                    int droppedCurrency = (int) (Math.random() * (maxCurrency - minCurrency + 1) + minCurrency);

                    // Пример: выдача валюты игроку через Vault
                    economy.depositPlayer(player, droppedCurrency);

                    // Вывод сообщений с поддержкой цветов и плейсхолдера из PlaceholderAPI
                    if (actionBarEnabled) {
                        sendActionBar(player, PlaceholderAPI.setPlaceholders(player, ChatColor.translateAlternateColorCodes('&', messagesConfig.getString("actionbar").replace("%money%", String.valueOf(droppedCurrency)))));
                    }

                    if (messageEnabled) {
                        player.sendMessage(ChatColor.translateAlternateColorCodes('&', PlaceholderAPI.setPlaceholders(player, messagesConfig.getString("message").replace("%money%", String.valueOf(droppedCurrency)))));
                    }

                    // Здесь можно выполнить другие действия в зависимости от логики
                }
            }
        }
    }


    private boolean hasSilkTouch(ItemStack tool) {
        // Проверка наличия зачарования "Шёлковое касание"
        Map<Enchantment, Integer> enchantments = tool.getEnchantments();
        return enchantments.containsKey(Enchantment.SILK_TOUCH);
    }

    private void sendActionBar(Player player, String message) {
        // Отправить сообщение через Action Bar
        requireNonNull(player).sendActionBar(message);
    }

    @Override
    public void onDisable() {
        getLogger().info("MegaMiner has been disabled!");
        // Здесь ты можешь выполнять завершающие действия перед выключением плагина
    }
}
 
Назад
Сверху Снизу