1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите [Решено] У меня переменная отвечающие за конфиг нулевая

Тема в разделе "Разработка плагинов для новичков", создана пользователем Вова Петренко, 1 апр 2022.

Статус темы:
Закрыта.
  1. Автор темы
    Вова Петренко

    Вова Петренко Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Baraban4ik
    Я делал ивенты и столкнулся с ошибкой что c = null
    EcoEventHandler
    Код:
    package me.sp3ctr0.ecolobby.event;
    
    import me.sp3ctr0.ecolobby.configurations.Configurations;
    import me.sp3ctr0.ecolobby.utils.Chat;
    import me.sp3ctr0.ecolobby.utils.Events;
    import org.bukkit.GameMode;
    import org.bukkit.Location;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.entity.FoodLevelChangeEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.player.*;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class EcoEventHandler implements Listener {
        private final FileConfiguration c;
        private final FileConfiguration m;
    
        public EcoEventHandler(Configurations configurations) {
            c = configurations.get("config.yml");
            m = configurations.get("messages.yml");
        }
        private static final List<String> MOTD = Arrays.asList
                (
                        "",
                        "          &8[&a&lLobby&8]",
                        "",
                        "   &fwelcome to the server &a&lserver",
                        "   &fThere are &amany &fadventures waiting for you here.",
                        "",
                        "   &fHope you &alike &fit here!",
                        ""
                );
    
        @EventHandler
        public void join(PlayerJoinEvent e) {
            Player player = e.getPlayer();
            if (c.getString("spawn.x") != null && this.c.getString("spawn.y") != null) {
                Events.tpSpawn(player);
            }
            if (c.getBoolean("settings.enable-motd")) {
                List<String> motd = m.getStringList("motd");
                if (motd.isEmpty()) {
                    MOTD.forEach((x) -> Chat.sendMessage(player, x));
                    return;
                }
                motd.forEach((x) -> Chat.sendMessage(player, x));
            }
            Events.disableMessageJoin(e);
            player.setGameMode(GameMode.valueOf(c.getString("settings.gamemode").toUpperCase()));
            player.setLevel(c.getInt("settings.level-exp"));
        }
    
        @EventHandler
        public void jumpVoid(PlayerMoveEvent e) {
            Player player = e.getPlayer();
            if (c.getBoolean("jump-to-void")) {
                if (player.getLocation().getY() < 0.0D && c.getString("spawn.x") != null && c.getString("spawn.y") != null) {
                    Events.tpSpawn(player);
                    Chat.sendMessagePrefix(player, m.getString("jump-to-void", "You fell into the void, I returned you to spawn."));
                }
            }
        }
    
    
        @EventHandler
        public void messQuit(PlayerQuitEvent e) {
            Events.disableMessageQuit(e);
        }
        @EventHandler
        public void messDeath(PlayerDeathEvent e) {
            Events.disableMessageDeath(e);
        }
        @EventHandler
        public void messKick(PlayerKickEvent e) {
            Events.disableMessageKick(e);
        }
    
    
        @EventHandler
        public void move(PlayerMoveEvent e) {
            Player player = e.getPlayer();
            if (c.getBoolean("settings.player-abilities.movements")) {
                if (!player.hasPermission("ecolobby.bypass.move")) {
                    Location from = e.getFrom().clone();
                    Location to = e.getTo();
                    from.setYaw(to.getYaw());
                    from.setPitch(to.getPitch());
                    if (!from.equals(to)) e.setCancelled(true);
                }
            }
        }
    
    
        @EventHandler
        public void breakBlock(BlockBreakEvent e) {
            Events.Break(e, "settings.abilities.break");
        }
        @EventHandler
        public void placeBlock(BlockPlaceEvent e) {
            Events.Place(e, "settings.abilities.place");
        }
        @EventHandler
        public void damagePlayer(EntityDamageEvent e) {
            Events.Damage(e, "settings.abilities.damage");
        }
        @EventHandler
        public void hungerPlayer(FoodLevelChangeEvent e) {
            Events.Hunger(e, "settings.abilities.hunger");
        }
    
    
        @EventHandler
        public void chat(AsyncPlayerChatEvent e) {
            Player player = e.getPlayer();
            if (!player.hasPermission("ecolobby.bypass.chat") && !c.getBoolean("enable-chat")) {
                Chat.sendMessagePrefix(player, m.getString("disable-chat", "I'm sorry but you can't chat!"));
                e.setCancelled(true);
            }
        }
        @EventHandler
        public void command(PlayerCommandPreprocessEvent e) {
            Player player = e.getPlayer();
            if (!c.getBoolean("settings.enable-commands") && !player.hasPermission("ecolobby.bypass.commands")) {
                String[] message = e.getMessage().replace("/", "").split(" ");
                if (!c.getStringList("settings.use-commands").contains(message[0])) {
                    Chat.sendMessagePrefix(player, m.getString("disable-commands", "You can't use this command!"));
                    e.setCancelled(true);
                }
            }
        }
    }
    
    Events
    Код:
    package me.sp3ctr0.ecolobby.utils;
    
    import me.sp3ctr0.ecolobby.configurations.Configurations;
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.World;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.entity.FoodLevelChangeEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerKickEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    
    public class Events {
    
        private static Configurations configurations;
        private static FileConfiguration c;
    
        public Events(Configurations configurations) {
            Events.configurations = configurations;
            c = configurations.get("config.yml");
        }
    
        public static void getLocation(Player player) {
            Location loc = player.getLocation();
            double x = loc.getX();
            double y = loc.getY();
            double z = loc.getZ();
            float pitch = loc.getPitch();
            float yaw = loc.getYaw();
            c.set("spawn.x", x);
            c.set("spawn.y", y);
            c.set("spawn.z", z);
            c.set("spawn.pitch", pitch);
            c.set("spawn.yaw", yaw);
            c.set("spawn.world", player.getWorld().getName());
            configurations.save(c, "config.yml");
        }
    
        public static void tpSpawn(Player player) {
            double x = c.getDouble("spawn.x");
            double y = c.getDouble("spawn.y");
            double z = c.getDouble("spawn.z");
            float pitch = (float) c.getDouble("spawn.pitch");
            float yaw = (float) c.getDouble("spawn.yaw");
            World world = Bukkit.getWorld(c.getString("spawn.world"));
            Location loc = new Location(world, x, y, z, yaw, pitch);
            player.teleport(loc);
        }
    
        public static void disableMessageJoin(PlayerJoinEvent e) {
            System.out.println("cfg: " + c);
            if (c.getBoolean("settings.enable-hidestream")) {
                e.setJoinMessage("");
            }
        }
        public static void disableMessageQuit(PlayerQuitEvent e) {
            if (c.getBoolean("settings.enable-hidestream")) {
                e.setQuitMessage(null);
            }
        }
        public static void disableMessageDeath(PlayerDeathEvent e) {
            if (c.getBoolean("settings.enable-hidestream")) {
                e.setDeathMessage(null);
            }
        }
        public static void disableMessageKick(PlayerKickEvent e) {
            if (c.getBoolean("settings.enable-hidestream")) {
                e.setLeaveMessage(null);
            }
        }
    
        public static void Break(BlockBreakEvent e, String bool) {
            if (c.getBoolean(bool)) {
                e.setCancelled(true);
            }
        }
        public static void Place(BlockPlaceEvent e, String bool) {
            if (c.getBoolean(bool)) {
                e.setCancelled(true);
            }
        }
        public static void Damage(EntityDamageEvent e, String bool) {
            if (e.getEntity() instanceof Player && c.getBoolean(bool)) {
                e.setCancelled(true);
            }
        }
        public static void Hunger(FoodLevelChangeEvent e, String bool) {
            if (c.getBoolean(bool)) {
                e.setCancelled(true);
            }
        }
    }
    
    EcoLobby
    Код:
    package me.sp3ctr0.ecolobby;
    
    import me.sp3ctr0.ecolobby.commands.EcoLobbyCommand;
    import me.sp3ctr0.ecolobby.configurations.Configurations;
    import me.sp3ctr0.ecolobby.event.EcoEventHandler;
    import me.sp3ctr0.ecolobby.utils.Chat;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import java.util.Arrays;
    import java.util.List;
    
    public final class EcoLobby extends JavaPlugin {
    
        private Configurations configurations = new Configurations(this, "config.yml", "messages.yml");
        public final List<String> ENABLE_MESSAGE = Arrays.asList
                (
                        "§7=-=-=-=-§a§lEco§f§lLobby§7-=-=-=-=",
                        "",
                        " Version: §a" + this.getDescription().getVersion(),
                        " Author: §aSp3ctr0",
                        "",
                        "§7=-=-=-=-§a§lEco§f§lLobby§7-=-=-=-="
                );
    
        @Override
        public void onEnable() {
            ENABLE_MESSAGE.forEach(System.out::println);
    
            configurations.loadConfigurations();
            getServer().getPluginCommand("ecolobby").setExecutor(new EcoLobbyCommand(configurations, this));
            getServer().getPluginManager().registerEvents(new EcoEventHandler(configurations), this);
        }
    
        @Override
        public void onDisable() {
            configurations = null;
        }
    
        public void reload() {
            configurations.reloadConfigurations();
        }
    }
    
     
  2. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Вот бы ошибку, цены не было. А щас гадать и смотреть весь код, где именно проблема - такое себе. А ещё бы класс Configurations посмотреть
     
  3. Автор темы
    Вова Петренко

    Вова Петренко Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Baraban4ik
    уже решил я просто не передавал в эти классы переменную сonfigurations
     
Статус темы:
Закрыта.

Поделиться этой страницей