optimize reloadlang method
This commit is contained in:
parent
0afb51b54d
commit
f4d6fac8c9
12
pom.xml
12
pom.xml
@ -130,18 +130,18 @@
|
|||||||
<artifactId>adventure-text-serializer-ansi</artifactId>
|
<artifactId>adventure-text-serializer-ansi</artifactId>
|
||||||
<version>4.16.0</version>
|
<version>4.16.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- Adventure ComponentLogger for colorful slf4j logging -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.kyori</groupId>
|
|
||||||
<artifactId>adventure-text-logger-slf4j</artifactId>
|
|
||||||
<version>4.16.0</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- Adventure plaintext serializer for reading unstyled content of components -->
|
<!-- Adventure plaintext serializer for reading unstyled content of components -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.kyori</groupId>
|
<groupId>net.kyori</groupId>
|
||||||
<artifactId>adventure-text-serializer-plain</artifactId>
|
<artifactId>adventure-text-serializer-plain</artifactId>
|
||||||
<version>4.16.0</version>
|
<version>4.16.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- Adventure ComponentLogger for colorful slf4j logging -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.kyori</groupId>
|
||||||
|
<artifactId>adventure-text-logger-slf4j</artifactId>
|
||||||
|
<version>4.16.0</version>
|
||||||
|
</dependency>
|
||||||
<!-- Bukkit bStats -->
|
<!-- Bukkit bStats -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bstats</groupId>
|
<groupId>org.bstats</groupId>
|
||||||
|
@ -18,14 +18,12 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
|
|
||||||
public final class VillagerOptimizer extends JavaPlugin {
|
public final class VillagerOptimizer extends JavaPlugin {
|
||||||
|
|
||||||
@ -167,8 +165,10 @@ public final class VillagerOptimizer extends JavaPlugin {
|
|||||||
try {
|
try {
|
||||||
File langDirectory = new File(getDataFolder() + File.separator + "lang");
|
File langDirectory = new File(getDataFolder() + File.separator + "lang");
|
||||||
Files.createDirectories(langDirectory.toPath());
|
Files.createDirectories(langDirectory.toPath());
|
||||||
for (String fileName : getDefaultLanguageFiles()) {
|
Set<String> locales = new HashSet<>();
|
||||||
final String localeString = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.lastIndexOf('.'));
|
locales.addAll(getDefaultLocales(getFile()));
|
||||||
|
locales.addAll(getPresentLocales(langDirectory));
|
||||||
|
for (String localeString : locales) {
|
||||||
if (startup) logger.info(
|
if (startup) logger.info(
|
||||||
Component.text("│ ").style(GenericUtil.STYLE)
|
Component.text("│ ").style(GenericUtil.STYLE)
|
||||||
.append(Component.text(" "+localeString).color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD))
|
.append(Component.text(" "+localeString).color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD))
|
||||||
@ -176,21 +176,6 @@ public final class VillagerOptimizer extends JavaPlugin {
|
|||||||
else logger.info(String.format("Found language file for %s", localeString));
|
else logger.info(String.format("Found language file for %s", localeString));
|
||||||
languageCacheMap.put(localeString, new LanguageCache(localeString));
|
languageCacheMap.put(localeString, new LanguageCache(localeString));
|
||||||
}
|
}
|
||||||
final Pattern langPattern = Pattern.compile("([a-z]{1,3}_[a-z]{1,3})(\\.yml)", Pattern.CASE_INSENSITIVE);
|
|
||||||
for (File langFile : langDirectory.listFiles()) {
|
|
||||||
final Matcher langMatcher = langPattern.matcher(langFile.getName());
|
|
||||||
if (langMatcher.find()) {
|
|
||||||
String localeString = langMatcher.group(1).toLowerCase();
|
|
||||||
if (!languageCacheMap.containsKey(localeString)) { // make sure it wasn't a default file that we already loaded
|
|
||||||
if (startup) logger.info(
|
|
||||||
Component.text("│ ").style(GenericUtil.STYLE)
|
|
||||||
.append(Component.text(" "+localeString).color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD))
|
|
||||||
.append(Component.text(" │").style(GenericUtil.STYLE)));
|
|
||||||
else logger.info(String.format("Found language file for %s", localeString));
|
|
||||||
languageCacheMap.put(localeString, new LanguageCache(localeString));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (startup) logger.error(
|
if (startup) logger.error(
|
||||||
Component.text("│ ").style(GenericUtil.STYLE)
|
Component.text("│ ").style(GenericUtil.STYLE)
|
||||||
@ -200,14 +185,34 @@ public final class VillagerOptimizer extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private @NotNull Set<String> getDefaultLanguageFiles() {
|
private static final Pattern langPattern = Pattern.compile("([a-z]{1,3}_[a-z]{1,3})(\\.yml)", Pattern.CASE_INSENSITIVE);
|
||||||
try (final JarFile pluginJarFile = new JarFile(this.getFile())) {
|
|
||||||
|
private @NotNull Set<String> getDefaultLocales(File jarFile) {
|
||||||
|
try (final JarFile pluginJarFile = new JarFile(jarFile)) {
|
||||||
return pluginJarFile.stream()
|
return pluginJarFile.stream()
|
||||||
.map(ZipEntry::getName)
|
.map(zipEntry -> {
|
||||||
.filter(name -> name.startsWith("lang/") && name.endsWith(".yml"))
|
Matcher matcher = langPattern.matcher(zipEntry.getName());
|
||||||
|
return matcher.find() ? matcher.group(1) : null;
|
||||||
|
})
|
||||||
|
.filter(Objects::nonNull)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
} catch (IOException e) {
|
} catch (Throwable t) {
|
||||||
logger.error("Failed getting default lang files!", e);
|
logger.error("Failed getting default lang files!", t);
|
||||||
|
return Collections.emptySet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private @NotNull Set<String> getPresentLocales(File folder) {
|
||||||
|
try {
|
||||||
|
return Arrays.stream(Objects.requireNonNull(folder.listFiles()))
|
||||||
|
.map(file -> {
|
||||||
|
Matcher matcher = langPattern.matcher(file.getName());
|
||||||
|
return matcher.find() ? matcher.group(1) : null;
|
||||||
|
})
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
} catch (Throwable t) {
|
||||||
|
logger.error("Failed getting lang files from plugin folder!", t);
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user