- Tham gia
- 18/09/2016
- Bài viết
- 3,165
Yay bắt đầu vào topic với vấn đề đầu tiên
: Lưu trữ ChatColor#translateAlternateColorCodes để sử dụng lại
ChatColor#translateAlternateColorCodes là cái hàm mà các bạn hay dùng để chuyển kí tự & thành kí tự § để khi nhìn vào Minecraft sẽ hiện màu.
I. VẤN ĐỀ
Vấn đề ở đây là cái hàm này khá "nặng"...............
Vd tưởng tượng đi, bạn phải lm cái plugin có chức năng gửi tin nhắn này nọ, hay là làm màu cho cái lore, send scoreboard; thậm chí thêm quả animation nữa
việc này sẽ gây delay cho plugin rất nhiều.
II. CÁCH GIẢI QUYẾT
Ok mình đã giải thích vì sao cái hàm này nặng như vậy, và giờ là cách giải quyết: lưu trữ nó
Lưu trữ là sao? Vì cái chat color luôn luôn là tĩnh (*static effect*), bạn dùng nó bất cứ khi nào, với ai,.. đều ra 1 kết quả duy nhất nên tốt hơn là dùng nó 1 lần rồi lưu trữ!
Các bước như sau:
1. Đọc tệp tin cấu hình
2. Chuyển màu cho cấu hình
3. Sử dụng cấu hình đã dc chuyển màu
yay chỉ cần 3 bước thôi
Như vậy từ lần sau sử dụng là nó đã có màu rồi
Mặc dù nó làm lag một chút khi load server nhưng sẽ rất mượt khi chơi.
Ok Code sẵn hàm để sử dụng:
Ví dụ cụ thể
Với ví dụ trên chỉ cần gọi loadConfig() từ hàm onEnabled() là được, sau này thì dùng getConfig() 
Ok hết rồi nhé ae
-------------------------------------------------------------------------------
Thấy seri này hay? Hãy like cho mình để có thêm động lực viết tiếp.
Vui lòng ghi nguồn khi copy!
: Lưu trữ ChatColor#translateAlternateColorCodes để sử dụng lạiChatColor#translateAlternateColorCodes là cái hàm mà các bạn hay dùng để chuyển kí tự & thành kí tự § để khi nhìn vào Minecraft sẽ hiện màu.
I. VẤN ĐỀ
Vấn đề ở đây là cái hàm này khá "nặng"...............
Vd tưởng tượng đi, bạn phải lm cái plugin có chức năng gửi tin nhắn này nọ, hay là làm màu cho cái lore, send scoreboard; thậm chí thêm quả animation nữa
việc này sẽ gây delay cho plugin rất nhiều.II. CÁCH GIẢI QUYẾT
Ok mình đã giải thích vì sao cái hàm này nặng như vậy, và giờ là cách giải quyết: lưu trữ nó
Lưu trữ là sao? Vì cái chat color luôn luôn là tĩnh (*static effect*), bạn dùng nó bất cứ khi nào, với ai,.. đều ra 1 kết quả duy nhất nên tốt hơn là dùng nó 1 lần rồi lưu trữ!
Các bước như sau:
1. Đọc tệp tin cấu hình
2. Chuyển màu cho cấu hình
3. Sử dụng cấu hình đã dc chuyển màu
yay chỉ cần 3 bước thôi

Như vậy từ lần sau sử dụng là nó đã có màu rồi

Mặc dù nó làm lag một chút khi load server nhưng sẽ rất mượt khi chơi.
Ok Code sẵn hàm để sử dụng:
Java:
public static <T extends ConfigurationSection> T formatConfig(T section){
Set<String> keys = section.getKeys(true);
for(String key : keys){
Object value = section.get(key);
if(value instanceof String)
section.set(key, ChatColor.translateAlternateColorCodes('&', (String) value));
}
return section;
}
Ví dụ cụ thể
Java:
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.util.Set;
public class Example {
public static <T extends ConfigurationSection> T formatConfig(T section){
Set<String> keys = section.getKeys(true);
for(String key : keys){
Object value = section.get(key);
if(value instanceof String)
section.set(key, ChatColor.translateAlternateColorCodes('&', (String) value));
}
return section;
}
private static FileConfiguration config;
public static void loadConfig(){
config = formatConfig(YamlConfiguration.loadConfiguration(new File("config.yml")));
}
public static FileConfiguration getConfig() {
return config;
}
}

Ok hết rồi nhé ae

-------------------------------------------------------------------------------
Thấy seri này hay? Hãy like cho mình để có thêm động lực viết tiếp.
Vui lòng ghi nguồn khi copy!




(do ba cái regex nó phải tìm kiếm rồi thay thế rất là lòng vòng 
chưa chắc mọi thứ trong YAML đều được sử dụng