more refactoring

This commit is contained in:
dfsek
2021-01-25 23:29:15 -07:00
parent 1d6cdf9eaa
commit 82fa9abe15
10 changed files with 10 additions and 11 deletions
@@ -1,7 +1,6 @@
package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.core.TerraPlugin;
import com.dfsek.terra.api.language.Language;
import com.dfsek.terra.api.platform.CommandSender;
import java.io.File;
@@ -0,0 +1,40 @@
package com.dfsek.terra.config.lang;
import com.dfsek.tectonic.config.Configuration;
import com.dfsek.terra.api.platform.CommandSender;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Language {
private final Configuration configuration;
public Language(File file) throws IOException {
configuration = new Configuration(new FileInputStream(file));
}
@SuppressWarnings("unchecked")
public Message getMessage(String id) {
Message temp = null;
if(configuration.contains(id)) {
Object m = configuration.get(id);
if(m instanceof List) {
temp = new MultiLineMessage((List<String>) m);
} else if(m instanceof String) {
temp = new SingleLineMessage((String) m);
} else return new SingleLineMessage("message:" + id + ":translation_undefined");
}
if(temp == null || temp.isEmpty()) return new SingleLineMessage("message:" + id + ":translation_undefined");
return temp;
}
public void log(String messageID, Level level, Logger logger, String... args) {
getMessage(messageID).log(logger, level, args);
}
public void send(String messageID, CommandSender sender, String... args) {
getMessage(messageID).send(sender, args);
}
}
@@ -0,0 +1,13 @@
package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.platform.CommandSender;
import java.util.logging.Level;
import java.util.logging.Logger;
public interface Message {
void log(Logger logger, Level level, String... args);
void send(CommandSender sender, String... args);
boolean isEmpty();
}
@@ -0,0 +1,33 @@
package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.platform.CommandSender;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MultiLineMessage implements Message {
private final List<String> message;
public MultiLineMessage(List<String> message) {
this.message = message;
}
@Override
public void log(Logger logger, Level level, String... args) {
for(String line: message) {
logger.log(level, String.format(line, Arrays.asList(args).toArray()));
}
}
@Override
public void send(CommandSender sender, String... args) {
for(String line: message) {
sender.sendMessage(String.format(line, Arrays.asList(args).toArray()));
}
}
@Override
public boolean isEmpty() {
return message == null || message.isEmpty();
}
}
@@ -0,0 +1,29 @@
package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.platform.CommandSender;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
public class SingleLineMessage implements Message {
private final String message;
public SingleLineMessage(String message) {
this.message = message;
}
@Override
public void log(Logger logger, Level level, String... args) {
logger.log(level, String.format(message, Arrays.asList(args).toArray()));
}
@Override
public void send(CommandSender sender, String... args) {
sender.sendMessage(String.format(message, Arrays.asList(args).toArray()));
}
@Override
public boolean isEmpty() {
return message == null || message.equals("");
}
}