Skip to content

Instantly share code, notes, and snippets.

@FarisR99
Last active August 29, 2015 14:04
Show Gist options
  • Save FarisR99/aed22a37f8a1c6a2eb9b to your computer and use it in GitHub Desktop.
Save FarisR99/aed22a37f8a1c6a2eb9b to your computer and use it in GitHub Desktop.
Custom Lang - thanks to 1Rogue for a base idea
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
public enum Lang {
PREFIX("Prefix.Plugin", "&6[&4<plugin>&6] &a"), COMMAND_NO_PERMISSION("Command.No permission", "&4You do not have access to that command."), COMMAND_PLAYER("Command.Player", "&cYou must be a player to use that command.");
private static YamlConfiguration config = null;
private static File configFile = null;
private String key = "";
private String defaultValue = "";
private Lang(String key, String defValue) {
this.key = key;
this.defaultValue = defValue;
}
public String getMessage() {
return replaceChatColours(this.getRawMessage());
}
public String getMessage(Object... format) {
return replaceChatColours(String.format(this.getRawMessage(), format));
}
public String getRawMessage() {
return config != null ? config.getString(this.key, this.defaultValue) : this.defaultValue;
}
public String getReplacedMessage(Object... objects) {
String langMessage = this.getRawMessage();
if (objects != null) {
Object firstObject = "";
for (int i = 0; i < objects.length; i++) {
if (i % 2 == 0) {
firstObject = objects[i];
} else {
if (firstObject != null && objects[i] != null)
langMessage = langMessage.replace(firstObject.toString(), objects[i].toString());
}
}
}
return replaceChatColours(langMessage);
}
public static void sendMessage(CommandSender sender, Lang lang) {
String strMessage = lang.getMessage();
if (!strMessage.isEmpty()) {
List<String> messages = new ArrayList<String>();
if (strMessage.contains("\n")) {
String[] messageSplit = strMessage.split("\n");
for (String message : messageSplit) messages.add(message);
} else {
messages.add(strMessage);
}
for (String message : messages) sender.sendMessage(message);
}
}
public static void sendMessage(CommandSender sender, Lang lang, Object... objects) {
String strMessage = lang.getMessage(objects);
if (!strMessage.isEmpty()) {
List<String> messages = new ArrayList<String>();
if (strMessage.contains("\n")) {
String[] messageSplit = strMessage.split("\n");
for (String message : messageSplit) messages.add(message);
} else {
messages.add(strMessage);
}
for (String message : messages) sender.sendMessage(message);
}
}
public static void sendRawMessage(CommandSender sender, Lang lang) {
String strMessage = lang.getRawMessage();
if (!strMessage.isEmpty()) {
List<String> messages = new ArrayList<String>();
if (strMessage.contains("\n")) {
String[] messageSplit = strMessage.split("\n");
for (String message : messageSplit) messages.add(message);
} else {
messages.add(strMessage);
}
for (String message : messages) sender.sendMessage(message);
}
}
public static void sendReplacedMessage(CommandSender sender, Lang lang, Object... objects) {
String strMessage = lang.getReplacedMessage(objects);
if (!strMessage.isEmpty()) {
List<String> messages = new ArrayList<String>();
if (strMessage.contains("\n")) {
String[] messageSplit = strMessage.split("\n");
for (String message : messageSplit) messages.add(message);
} else {
messages.add(strMessage);
}
for (String message : messages) sender.sendMessage(message);
}
}
public static void init(JavaPlugin plugin) {
configFile = new File(plugin.getDataFolder(), "messages.yml");
config = YamlConfiguration.loadConfiguration(configFile);
for (Lang value : values()) {
if (!config.isSet(value.key)) config.set(value.key, value.defaultValue);
}
try {
config.save(configFile);
} catch (Exception ex) {
}
}
public static String getString(String path) {
return config.getString(path);
}
public static String getString(String path, String defaultValue) {
return config.getString(path, defaultValue);
}
public static String saveString(String path, String value) {
if (!config.isSet(path)) {
config.set(path, value);
try {
config.save(configFile);
} catch (Exception ex) {
}
}
return config.isSet(path) ? config.getString(value) : value;
}
private static String replaceChatColours(String aString) {
return aString != null ? ChatColor.translateAlternateColorCodes('&', aString) : "";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment