下面列出了怎么用org.bukkit.configuration.MemoryConfiguration的API类实例代码及写法,或者点击链接到github查看源代码。
private ConfigurationSection display(ItemStack item) {
ConfigurationSection section = new MemoryConfiguration();
ItemMeta meta = item.getItemMeta();
String mat = item.getType().name();
if (meta instanceof SkullMeta) {
String texture = Skulls.getTexture(item);
mat = texture != null ? "<skull:" + Skulls.getTexture(item) + ">" : mat;
}
if (item.getAmount() > 1) {
section.set("amount", item.getAmount());
}
if (meta != null) {
if (meta.hasDisplayName()) {
section.set("name", meta.getDisplayName());
}
if (meta.hasLore()) {
section.set("lore", meta.getLore());
}
}
section.set("mats", mat);
return section;
}
public ConfigurationSection toTrMenuSection(int priority, boolean useSlot) {
MemorySection section = new MemoryConfiguration();
if (getRequirement() != null) {
section.set("condition", getRequirement());
}
if (priority >= 0) {
section.set("priority", priority);
}
section.set("display.material", getMaterial());
if (getName() != null) {
section.set("display.name", getName());
}
if (getLore() != null) {
section.set("display.lore", getLore());
}
if (getAmount() != null) {
section.set("display.amount", getAmount());
}
if (getShiny() != null && !"false".equalsIgnoreCase(getShiny())) {
if (Boolean.parseBoolean(getShiny())) {
section.set("display.shiny", true);
} else {
section.set("display.shiny", getShiny());
}
}
if (getFlags() != null && !getFlags().isEmpty()) {
section.set("display.flags", getFlags());
}
if (!getSlots().isEmpty() && useSlot) {
if (getSlots().size() == 1) {
section.set("display.slot", getSlots().get(0));
} else {
section.set("display.slots", getSlots());
}
}
actions.forEach((type, actions) -> section.set("actions." + type, actions));
return section;
}
private static ConfigurationSection migrateButtons(Map<Integer, Icon> value) {
ConfigurationSection buttons = new MemoryConfiguration();
value.forEach((slot, button) -> {
ConfigurationSection b = new MemoryConfiguration();
ConfigurationSection defIcon = migrateIcon(button, slot);
b.set("display", defIcon.getConfigurationSection("display"));
if (defIcon.isSet("actions")) {
b.set("actions", defIcon.getConfigurationSection("actions"));
}
List<ConfigurationSection> priorityIcons = new ArrayList<>();
List<Requirement> requirements = button.getRequirements();
requirements.sort(Collections.reverseOrder(Comparator.comparingInt(Requirement::getPriority)));
AtomicInteger priority = new AtomicInteger(1);
requirements.forEach(requirement -> {
ConfigurationSection pIcon = new MemoryConfiguration();
ConfigurationSection migrated = migrateIcon(requirement.getIcon(), -1);
pIcon.set("condition", requirement.getExpression());
pIcon.set("priority", priority.getAndIncrement());
pIcon.set("display", migrated.getConfigurationSection("display"));
if (migrated.contains("actions")) {
pIcon.set("actions", migrated.getConfigurationSection("actions"));
}
priorityIcons.add(pIcon);
});
if (!priorityIcons.isEmpty()) {
b.set("icons", priorityIcons);
}
buttons.set(button.getIconName(), b);
});
return buttons;
}
private static ConfigurationSection migrateIcon(Icon button, int slot) {
ConfigurationSection icons = new MemoryConfiguration();
icons.set("display.mats", migrateMat(button));
if (slot > 0) {
icons.set("display.slots", migrateSlots(slot, button));
}
if (Strings.nonEmpty(button.getName())) {
icons.set("display.name", button.getName());
}
if (button.getLore() != null) {
icons.set("display.lore", button.getLore());
}
if (button.getAmount() != 1) {
icons.set("display.amount", button.getAmount());
}
if (button.isShiny()) {
icons.set("display.shiny", true);
}
if (!button.isHideAttribute()) {
icons.set("display.flags", Collections.singletonList("HIDE_ATTRIBUTES"));
}
migrateIconActions(button.getIconCommands()).forEach((type, actions) -> {
if (!actions.isEmpty()) {
icons.set("actions." + type, actions);
}
});
return icons;
}
public static ConfigurationSection toConfigurationSection(Map<?, ?> nodeMap) {
ConfigurationSection newSection = new MemoryConfiguration();
for (Map.Entry<?, ?> entry : nodeMap.entrySet()) {
set(newSection, entry.getKey().toString(), entry.getValue());
}
return newSection;
}
public static ConfigurationSection toStringConfiguration(Map<String, String> stringMap) {
if (stringMap == null) {
return null;
}
ConfigurationSection configMap = new MemoryConfiguration();
for (Map.Entry<String, String> entry : stringMap.entrySet()) {
configMap.set(entry.getKey(), entry.getValue());
}
return configMap;
}
protected FileConfigurationOptions(MemoryConfiguration configuration) {
super(configuration);
}