MrJetby
Пользователь
Помогите поправить код плиз :3
Хотел сделать /megaminer reload
А получилось так что я сломал систему
Сама ошибка:
Также вот главный класс:
Хотел сделать /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!");
// Здесь ты можешь выполнять завершающие действия перед выключением плагина
}
}