/**
* BetonQuest - advanced quests for Bukkit
* Copyright (C) 2016 Jakub "Co0sh" Sapalski
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package pl.betoncraft.betonquest.commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import pl.betoncraft.betonquest.BetonQuest;
import pl.betoncraft.betonquest.Journal;
import pl.betoncraft.betonquest.config.Config;
import pl.betoncraft.betonquest.database.PlayerData;
import pl.betoncraft.betonquest.utils.Debug;
import pl.betoncraft.betonquest.utils.PlayerConverter;
/**
* Changes the default language for the player
*
* @author Jakub Sapalski
*/
public class LangCommand implements CommandExecutor {
public LangCommand() {
BetonQuest.getInstance().getCommand("questlang").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("questlang")) {
if (args.length < 1) {
sender.sendMessage(Config.getMessage(Config.getLanguage(), "language_missing"));
return true;
}
if (!Config.getLanguages().contains(args[0]) && !args[0].equalsIgnoreCase("default")) {
StringBuilder builder = new StringBuilder();
builder.append("default (" + Config.getLanguage() + "), ");
for (String lang : Config.getLanguages()) {
builder.append(lang + ", ");
}
if (builder.length() < 3) {
Debug.error("No translations loaded, somethings wrong!");
return false;
}
String finalMessage = builder.substring(0, builder.length() - 2) + ".";
sender.sendMessage(Config.getMessage(Config.getLanguage(), "language_not_exist") + finalMessage);
return true;
}
if (sender instanceof Player) {
String lang = args[0];
String playerID = PlayerConverter.getID((Player) sender);
PlayerData playerData = BetonQuest.getInstance().getPlayerData(playerID);
Journal journal = playerData.getJournal();
int slot = -1;
if (Journal.hasJournal(playerID)) {
slot = journal.removeFromInv();
}
playerData.setLanguage(lang);
journal.generateTexts(lang);
if (slot > 0)
journal.addToInv(slot);
Config.sendMessage(playerID, "language_changed", new String[] { lang });
} else {
BetonQuest.getInstance().getConfig().set("language", args[0]);
sender.sendMessage(Config.getMessage(args[0], "default_language_changed"));
}
return true;
}
return false;
}
}