This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
package fr.xephi.authme.service;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import fr.xephi.authme.command.CommandArgumentDescription;
|
||||
import fr.xephi.authme.command.CommandDescription;
|
||||
import fr.xephi.authme.command.CommandInitializer;
|
||||
import fr.xephi.authme.command.help.HelpMessage;
|
||||
import fr.xephi.authme.command.help.HelpMessagesService;
|
||||
import fr.xephi.authme.command.help.HelpSection;
|
||||
import fr.xephi.authme.initialization.DataFolder;
|
||||
import fr.xephi.authme.permission.DefaultPermission;
|
||||
import fr.xephi.authme.settings.Settings;
|
||||
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||
import org.yaml.snakeyaml.DumperOptions;
|
||||
import org.yaml.snakeyaml.Yaml;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Generates the full command structure for the help translation and saves it to the current help file,
|
||||
* preserving already existing entries.
|
||||
*/
|
||||
public class HelpTranslationGenerator {
|
||||
|
||||
@Inject
|
||||
private CommandInitializer commandInitializer;
|
||||
|
||||
@Inject
|
||||
private HelpMessagesService helpMessagesService;
|
||||
|
||||
@Inject
|
||||
private Settings settings;
|
||||
|
||||
@DataFolder
|
||||
@Inject
|
||||
private File dataFolder;
|
||||
|
||||
/**
|
||||
* Updates the help file to contain entries for all commands.
|
||||
*
|
||||
* @throws IOException if the help file cannot be written to
|
||||
*/
|
||||
public void updateHelpFile() throws IOException {
|
||||
String languageCode = settings.getProperty(PluginSettings.MESSAGES_LANGUAGE);
|
||||
File helpFile = new File(dataFolder, "messages/help_" + languageCode + ".yml");
|
||||
Map<String, Object> helpEntries = generateHelpMessageEntries();
|
||||
|
||||
String helpEntriesYaml = exportToYaml(helpEntries);
|
||||
Files.write(helpFile.toPath(), helpEntriesYaml.getBytes(), StandardOpenOption.TRUNCATE_EXISTING);
|
||||
}
|
||||
|
||||
private static String exportToYaml(Map<String, Object> helpEntries) {
|
||||
DumperOptions options = new DumperOptions();
|
||||
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||
options.setAllowUnicode(true);
|
||||
return new Yaml(options).dump(helpEntries);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates entries for a complete help text file.
|
||||
*
|
||||
* @return help text entries to save
|
||||
*/
|
||||
private Map<String, Object> generateHelpMessageEntries() {
|
||||
Map<String, Object> messageEntries = new LinkedHashMap<>(HelpMessage.values().length);
|
||||
for (HelpMessage message : HelpMessage.values()) {
|
||||
messageEntries.put(message.getEntryKey(), helpMessagesService.getMessage(message));
|
||||
}
|
||||
|
||||
Map<String, String> defaultPermissions = new LinkedHashMap<>();
|
||||
for (DefaultPermission defaultPermission : DefaultPermission.values()) {
|
||||
defaultPermissions.put(HelpMessagesService.getDefaultPermissionsSubPath(defaultPermission),
|
||||
helpMessagesService.getMessage(defaultPermission));
|
||||
}
|
||||
messageEntries.put("defaultPermissions", defaultPermissions);
|
||||
|
||||
Map<String, String> sectionEntries = new LinkedHashMap<>(HelpSection.values().length);
|
||||
for (HelpSection section : HelpSection.values()) {
|
||||
sectionEntries.put(section.getEntryKey(), helpMessagesService.getMessage(section));
|
||||
}
|
||||
|
||||
Map<String, Object> commandEntries = new LinkedHashMap<>();
|
||||
for (CommandDescription command : commandInitializer.getCommands()) {
|
||||
generateCommandEntries(command, commandEntries);
|
||||
}
|
||||
|
||||
return ImmutableMap.of(
|
||||
"common", messageEntries,
|
||||
"section", sectionEntries,
|
||||
"commands", commandEntries);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds YAML entries for the provided command its children to the given map.
|
||||
*
|
||||
* @param command the command to process (including its children)
|
||||
* @param commandEntries the map to add the generated entries to
|
||||
*/
|
||||
private void generateCommandEntries(CommandDescription command, Map<String, Object> commandEntries) {
|
||||
CommandDescription translatedCommand = helpMessagesService.buildLocalizedDescription(command);
|
||||
Map<String, Object> commandData = new LinkedHashMap<>();
|
||||
commandData.put("description", translatedCommand.getDescription());
|
||||
commandData.put("detailedDescription", translatedCommand.getDetailedDescription());
|
||||
|
||||
int i = 1;
|
||||
for (CommandArgumentDescription argument : translatedCommand.getArguments()) {
|
||||
Map<String, String> argumentData = new LinkedHashMap<>(2);
|
||||
argumentData.put("label", argument.getName());
|
||||
argumentData.put("description", argument.getDescription());
|
||||
commandData.put("arg" + i, argumentData);
|
||||
++i;
|
||||
}
|
||||
|
||||
commandEntries.put(HelpMessagesService.getCommandSubPath(translatedCommand), commandData);
|
||||
translatedCommand.getChildren().forEach(child -> generateCommandEntries(child, commandEntries));
|
||||
}
|
||||
}
|
||||
@@ -38,9 +38,8 @@ public class JoinMessageService {
|
||||
*/
|
||||
public void sendMessage(String playerName) {
|
||||
String joinMessage = joinMessages.remove(playerName);
|
||||
if (StringUtils.isEmpty(joinMessage)) {
|
||||
return;
|
||||
if (!StringUtils.isEmpty(joinMessage)) {
|
||||
bukkitService.broadcastMessage(joinMessage);
|
||||
}
|
||||
bukkitService.broadcastMessage(joinMessage);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user