Помогите - Передача переменой в другой класс

Baraban4ik

Разработчик
Пользователь
Сообщения
285
Решения
1
Да возможно это глупый вопрос но я я хочу передать переменную
configurations из главного класса в другой (это класс не команды)
Майн класс:
Код:
package com.sp3ctr0.ecolobby;

import com.sp3ctr0.ecolobby.commands.EcoLobbyCommand;
import com.sp3ctr0.ecolobby.configurations.Configurations;
import com.sp3ctr0.ecolobby.handler.SimpleEventHandler;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

public class Ecolobby extends JavaPlugin {

    private Configurations configurations = new Configurations(this, "config.yml", "messages.yml");

    @Override
    public void onEnable() {
        System.out.println(ChatColor.GREEN + "EcoLobby plugin is enabled");
        this.configurations.loadConfigurations();
        getServer().getPluginCommand("ecolobby").setExecutor(new EcoLobbyCommand(configurations, this));

        getServer().getPluginManager().registerEvents(new SimpleEventHandler(), this);
    }

    @Override
    public void onDisable() {
        System.out.println(ChatColor.RED + "EcoLobby plugin is disabled");
        this.configurations = null;
    }

    public void reload() {
        this.configurations.reloadConfigurations();
    }
}
Класс куда хочу передать:
Код:
package com.sp3ctr0.ecolobby.utils;

import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;

public class Chat {

    public static String color(String s) {
        return ChatColor.translateAlternateColorCodes('&', s);
    }

    public static void sendMessage(CommandSender player, String text) {
        player.sendMessage(color(text));
    }

    public static void sendMessagePrefix(CommandSender player, String text) {
        player.sendMessage(color(text));
    }

}
 
Решение
Чтоб получить строчку prefix и отправить сообщение с префиксом
Main:
Java:
public static String prefix;

@Override
public void onEnable() {
    // загружаешь конфиги
    prefix = this.configurations.get("messages.yml").getString("Prefix");
}
Chat:
Java:
public void message(CommandSender sender, String string) {
    sender.sendMessage(color(Main.prefix + string));
}
Ну, как по мне - это со всех сторон ужасно. Плюс, при перезагрузке плагина нужно будет "руками" обновлять значение этой переменной
Да возможно это глупый вопрос но я я хочу передать переменную
configurations из главного класса в другой (это класс не команды)
Майн класс:
Код:
package com.sp3ctr0.ecolobby;

import com.sp3ctr0.ecolobby.commands.EcoLobbyCommand;
import com.sp3ctr0.ecolobby.configurations.Configurations;
import com.sp3ctr0.ecolobby.handler.SimpleEventHandler;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

public class Ecolobby extends JavaPlugin {

    private Configurations configurations = new Configurations(this, "config.yml", "messages.yml");

    @Override
    public void onEnable() {
        System.out.println(ChatColor.GREEN + "EcoLobby plugin is enabled");
        this.configurations.loadConfigurations();
        getServer().getPluginCommand("ecolobby").setExecutor(new EcoLobbyCommand(configurations, this));

        getServer().getPluginManager().registerEvents(new SimpleEventHandler(), this);
    }

    @Override
    public void onDisable() {
        System.out.println(ChatColor.RED + "EcoLobby plugin is disabled");
        this.configurations = null;
    }

    public void reload() {
        this.configurations.reloadConfigurations();
    }
}
Класс куда хочу передать:
Код:
package com.sp3ctr0.ecolobby.utils;

import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;

public class Chat {

    public static String color(String s) {
        return ChatColor.translateAlternateColorCodes('&', s);
    }

    public static void sendMessage(CommandSender player, String text) {
        player.sendMessage(color(text));
    }

    public static void sendMessagePrefix(CommandSender player, String text) {
        player.sendMessage(color(text));
    }

}
В твоем же коде есть пример передачи обьекта конфигураций в класс команд через конструктор. В чем проблема сделать тоже самое?

Правда, не совсем понятно зачем нужно тащить обьект конфигураций в класс-утилиту. Если ты хочешь иметь метод который на этапе отправки сообщения сам подставляет префикс плагина - то у тебя изначально неправильный подход.
 
Чтоб получить строчку prefix и отправить сообщение с префиксом
Main:
Java:
public static String prefix;

@Override
public void onEnable() {
    // загружаешь конфиги
    prefix = this.configurations.get("messages.yml").getString("Prefix");
}
Chat:
Java:
public void message(CommandSender sender, String string) {
    sender.sendMessage(color(Main.prefix + string));
}
Ну, как по мне - это со всех сторон ужасно. Плюс, при перезагрузке плагина нужно будет "руками" обновлять значение этой переменной
 
Main:
Java:
public static String prefix;

@Override
public void onEnable() {
    // загружаешь конфиги
    prefix = this.configurations.get("messages.yml").getString("Prefix");
}
Chat:
Java:
public void message(CommandSender sender, String string) {
    sender.sendMessage(color(Main.prefix + string));
}
Ну, как по мне - это со всех сторон ужасно. Плюс, при перезагрузке плагина нужно будет "руками" обновлять значение этой переменной
Пасиба
 
Назад
Сверху Снизу