org.bukkit.configuration.MemorySection Java Examples

The following examples show how to use org.bukkit.configuration.MemorySection. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: PermissionConsistencyTest.java    From AuthMeReloaded with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Recursively visits every MemorySection and creates a {@link PermissionDefinition} when applicable.
 *
 * @param node the node to visit
 * @param collection the collection to add constructed permission definitions to
 */
private static void addChildren(MemorySection node, Map<String, PermissionDefinition> collection) {
    // A MemorySection may have a permission entry, as well as MemorySection children
    boolean hasPermissionEntry = false;
    for (String key : node.getKeys(false)) {
        if (node.get(key) instanceof MemorySection && !"children".equals(key)) {
            addChildren((MemorySection) node.get(key), collection);
        } else if (PERMISSION_FIELDS.contains(key)) {
            hasPermissionEntry = true;
        } else {
            throw new IllegalStateException("Unexpected key '" + key + "'");
        }
    }
    if (hasPermissionEntry) {
        PermissionDefinition permDef = new PermissionDefinition(node);
        collection.put(permDef.node, permDef);
    }
}
 
Example #2
Source File: PermissionConsistencyTest.java    From AuthMeReloaded with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Recursively walks through the given memory section to gather all keys.
 * Assumes that the ending value is a boolean and throws an exception otherwise.
 *
 * @param parentSection the memory section to traverse
 * @param children list to add all results to
 */
private static void collectChildren(MemorySection parentSection, List<String> children) {
    for (Map.Entry<String, Object> entry : parentSection.getValues(false).entrySet()) {
        if (entry.getValue() instanceof MemorySection) {
            collectChildren((MemorySection) entry.getValue(), children);
        } else if (entry.getValue() instanceof Boolean) {
            if (!Boolean.TRUE.equals(entry.getValue())) {
                throw new IllegalStateException("Child entry '" + entry.getKey()
                    + "' has unexpected value '" + entry.getValue() + "'");
            }
            children.add(parentSection.getCurrentPath() + "." + entry.getKey());
        } else {
            throw new IllegalStateException("Found child entry at '" + entry.getKey() + "' with value "
                + "of unexpected type: '" + parentSection.getCurrentPath() + "." + entry.getValue() + "'");
        }
    }
}
 
Example #3
Source File: CommandConsistencyTest.java    From AuthMeReloaded with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Reads plugin.yml and returns the defined commands by main label and aliases.
 *
 * @return collection of all labels and their aliases
 */
@SuppressWarnings("unchecked")
private static Map<String, List<String>> getLabelsFromPluginFile() {
    FileConfiguration pluginFile = YamlConfiguration.loadConfiguration(getJarFile("/plugin.yml"));
    MemorySection commandList = (MemorySection) pluginFile.get("commands");
    Map<String, Object> commandDefinitions = commandList.getValues(false);

    Map<String, List<String>> commandLabels = new HashMap<>();
    for (Map.Entry<String, Object> commandDefinition : commandDefinitions.entrySet()) {
        MemorySection definition = (MemorySection) commandDefinition.getValue();
        List<String> alternativeLabels = definition.get("aliases") == null
            ? Collections.EMPTY_LIST
            : (List<String>) definition.get("aliases");
        commandLabels.put(commandDefinition.getKey(), alternativeLabels);
    }
    return commandLabels;
}
 
Example #4
Source File: DeluxeMenusMigrater.java    From TrMenu with MIT License 5 votes vote down vote up
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;
}
 
Example #5
Source File: SecuredFile.java    From TabooLib with MIT License 5 votes vote down vote up
@Override
public ConfigurationSection createSection(String path) {
    ConfigurationSection section = super.createSection(path);
    if (section instanceof MemorySection) {
        SimpleReflection.setFieldValue(MemorySection.class, section, "map", new ConcurrentHashMap<>(), true);
    }
    return section;
}
 
Example #6
Source File: PermissionConsistencyTest.java    From AuthMeReloaded with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Returns all permission entries from the plugin.yml file.
 *
 * @return map with the permission entries by permission node
 */
private static Map<String, PermissionDefinition> getPermissionsFromPluginYmlFile() {
    FileConfiguration pluginFile = YamlConfiguration.loadConfiguration(getJarFile("/plugin.yml"));
    MemorySection permsList = (MemorySection) pluginFile.get("permissions");

    Map<String, PermissionDefinition> permissions = new HashMap<>();
    addChildren(permsList, permissions);
    return ImmutableMap.copyOf(permissions);
}
 
Example #7
Source File: PermissionConsistencyTest.java    From AuthMeReloaded with GNU General Public License v3.0 5 votes vote down vote up
PermissionDefinition(MemorySection memorySection) {
    this.node = removePermissionsPrefix(memorySection.getCurrentPath());
    this.expectedDefault = mapToDefaultPermission(memorySection.getString("default"));

    if (memorySection.get("children") instanceof MemorySection) {
        List<String> children = new ArrayList<>();
        collectChildren((MemorySection) memorySection.get("children"), children);
        this.children = removeStart(memorySection.getCurrentPath() + ".children.", children);
    } else {
        this.children = Collections.emptySet();
    }
}
 
Example #8
Source File: HelpTranslationGeneratorIntegrationTest.java    From AuthMeReloaded with GNU General Public License v3.0 5 votes vote down vote up
private static void checkDescription(Object memorySection, String description, String detailedDescription) {
    if (memorySection instanceof MemorySection) {
        MemorySection memSection = (MemorySection) memorySection;
        assertThat(memSection.getString("description"), equalTo(description));
        assertThat(memSection.getString("detailedDescription"), equalTo(detailedDescription));
    } else {
        fail("Expected MemorySection, got '" + memorySection + "'");
    }
}
 
Example #9
Source File: HelpTranslationGeneratorIntegrationTest.java    From AuthMeReloaded with GNU General Public License v3.0 5 votes vote down vote up
private static void checkArgs(Object memorySection, Argument... arguments) {
    if (memorySection instanceof MemorySection) {
        MemorySection memSection = (MemorySection) memorySection;
        int i = 1;
        for (Argument arg : arguments) {
            assertThat(memSection.getString("arg" + i + ".label"), equalTo(arg.label));
            assertThat(memSection.getString("arg" + i + ".description"), equalTo(arg.description));
            ++i;
        }
        assertThat(memSection.get("arg" + i), nullValue());
    } else {
        fail("Expected MemorySection, got '" + memorySection + "'");
    }
}
 
Example #10
Source File: HelpMessagesConsistencyTest.java    From AuthMeReloaded with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Since CommandInitializer contains all descriptions for commands in English, the help_en.yml file
 * only contains an entry for one command as to provide an example.
 */
@Test
public void shouldOnlyHaveDescriptionForOneCommand() {
    // given
    FileConfiguration configuration = YamlConfiguration.loadConfiguration(DEFAULT_MESSAGES_FILE);

    // when
    Object commands = configuration.get("commands");

    // then
    assertThat(commands, instanceOf(MemorySection.class));
    assertThat(((MemorySection) commands).getKeys(false), contains("authme"));
}
 
Example #11
Source File: HelpTranslationVerifier.java    From AuthMeReloaded with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Returns the leaf keys of the section at the given path of the file configuration.
 *
 * @param path the path whose leaf keys should be retrieved
 * @return leaf keys of the memory section,
 *         empty set if the configuration does not have a memory section at the given path
 */
private Set<String> getLeafKeys(String path) {
    if (!(configuration.get(path) instanceof MemorySection)) {
        return Collections.emptySet();
    }
    MemorySection memorySection = (MemorySection) configuration.get(path);

    // MemorySection#getKeys(true) returns all keys on all levels, e.g. if the configuration has
    // 'commands.authme.register' then it also has 'commands.authme' and 'commands'. We can traverse each node and
    // build its parents (e.g. for commands.authme.register.description: commands.authme.register, commands.authme,
    // and commands, which we can remove from the collection since we know they are not a leaf.
    Set<String> leafKeys = memorySection.getKeys(true);
    Set<String> allKeys = new HashSet<>(leafKeys);

    for (String key : allKeys) {
        List<String> pathParts = Arrays.asList(key.split("\\."));

        // We perform construction of parents & their removal in reverse order so we can build the lowest-level
        // parent of a node first. As soon as the parent doesn't exist in the set already, we know we can continue
        // with the next node since another node has already removed the concerned parents.
        for (int i = pathParts.size() - 1; i > 0; --i) {
            // e.g. for commands.authme.register -> i = {2, 1} => {commands.authme, commands}
            String parentPath = String.join(".", pathParts.subList(0, i));
            if (!leafKeys.remove(parentPath)) {
                break;
            }
        }
    }
    return leafKeys.stream().map(leaf -> path + "." + leaf).collect(Collectors.toSet());
}
 
Example #12
Source File: MenuLoader.java    From TrMenu with MIT License 4 votes vote down vote up
/**
 * 加载图标
 *
 * @param map     图标设置
 * @param defIcon 默认图标
 * @return 图标
 */
public static Icon loadIcon(Map<String, Object> map, Icon defIcon) {
    List<Mat> materials = Lists.newArrayList();
    List<String> names;
    List<List<String>> lores;
    List<List<Integer>> slots;
    List<ItemFlag> flags = Lists.newArrayList();
    NBTCompound nbtCompound = new NBTCompound();
    Map displayMap = Maps.sectionToMap(BUTTON_DISPLAY.getFromMap(map));
    Map actionsMap = Maps.sectionToMap(BUTTON_ACTIONS.getFromMap(map, new HashMap<>()));
    HashMap<ClickType, List<AbstractAction>> actions = new HashMap<>();
    Object name = ICON_DISPLAY_NAME.getFromMap(displayMap);
    Object mats = ICON_DISPLAY_MATERIALS.getFromMap(displayMap);
    Object lore = ICON_DISPLAY_LORES.getFromMap(displayMap);
    Object slot = ICON_DISPLAY_SLOTS.getFromMap(displayMap);
    Object flag = ICON_DISPLAY_FLAGS.getFromMap(displayMap);
    Object nbt = ICON_DISPLAY_NBTS.getFromMap(displayMap);
    String shiny = String.valueOf(Maps.getSimilar(displayMap, ICON_DISPLAY_SHINY.getName()));
    String amount = String.valueOf(Maps.getSimilar(displayMap, ICON_DISPLAY_AMOUNT.getName()));

    shiny = "null".equals(shiny) ? "false" : shiny;
    amount = "null".equals(amount) ? "1" : amount;

    // Actions
    for (ClickType value : ClickType.values()) {
        List<String> actStrs = Maps.getSimilarOrDefault(actionsMap, value.name(), null);
        if (actStrs != null && !actStrs.isEmpty()) {
            actions.put(value, TrAction.readActions(actStrs));
        }
    }
    actions.put(null, TrAction.readActions(TrUtils.castList(Maps.getSimilar(actionsMap, "ALL"), String.class)));

    // Materials
    if (mats == null && defIcon == null) {
        throw new NullPointerException("Materials can not be null");
    } else if (mats != null) {
        if (mats instanceof List) {
            List<String> list = TrUtils.castList(mats, String.class);
            list.forEach(m -> materials.add(new Mat(String.valueOf(m))));
        } else {
            materials.add(new Mat(String.valueOf(mats)));
        }
    }
    names = TrUtils.castList(name, String.class);
    lores = TrUtils.readList(lore, String.class);
    slots = TrUtils.readList(slot, Integer.class);

    if (defIcon != null) {
        if (names.isEmpty()) {
            names = defIcon.getItem().getNames();
        }
        if (lore == null) {
            lores = defIcon.getItem().getLores();
        }
        if (materials.isEmpty()) {
            materials.addAll(defIcon.getItem().getMaterials());
        }
    }
    // flags
    if (flag != null) {
        if (flag instanceof List) {
            TrUtils.castList(flag, String.class).forEach(f -> flags.add(Items.asItemFlag(f)));
            flags.removeIf(Objects::isNull);
        }
    }
    if (nbt instanceof MemorySection) {
        nbtCompound = NBTCompound.translateSection(new NBTCompound(), (MemorySection) nbt);
    }
    Item item = (displayMap == null && defIcon != null) ? defIcon.getItem() : new Item(names, materials, lores, slots, flags, nbtCompound, shiny, amount);
    return new Icon(0, null, item, actions);
}
 
Example #13
Source File: ConverterChestCommands.java    From TrMenu with MIT License 4 votes vote down vote up
private static int convert(File file, int count) {
    if (file.isDirectory()) {
        for (File f : file.listFiles()) {
            count += convert(f, count);
        }
        return count;
    } else if (!file.getName().endsWith(".yml")) {
        return count;
    }
    try {
        ListIterator<Character> buttons = Arrays.asList('#', '-', '+', '=', '<', '>', '~', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z').listIterator();
        YamlConfiguration trmenu = new YamlConfiguration();
        YamlConfiguration conf = YamlConfiguration.loadConfiguration(file);
        List<String> cmds = conf.contains("menu-settings.command") ? Arrays.asList(conf.getString("menu-settings.command").split(";( )?")) : new ArrayList<>();
        for (int i = 0; i < cmds.size(); i++) {
            cmds.set(i, cmds.get(i) + "-fromCC");
        }
        int rows = conf.getInt("menu-settings.rows", 6);
        int update = conf.getInt("menu-settings.auto-refresh", -1) * 20;
        trmenu.set("Title", conf.getString("menu-settings.name"));
        trmenu.set("Open-Commands", cmds);
        trmenu.set("Open-Actions", conf.contains("menu-settings.open-action") ? conf.getString("menu-settings.open-action").split(";( )?") : "");

        List<String> shape = Lists.newArrayList();
        while (rows > 0) {
            shape.add("         ");
            rows--;
        }
        trmenu.set("Shape", shape);

        conf.getValues(false).forEach((icon, value) -> {
            if (!"menu-settings".equalsIgnoreCase(icon)) {
                MemorySection section = (MemorySection) value;
                int x = section.getInt("POSITION-X") - 1;
                int y = section.getInt("POSITION-Y") - 1;
                char[] chars = shape.get(y).toCharArray();
                char symbol = buttons.next();
                chars[x] = symbol;
                shape.set(y, new String(chars));

                if (update > 0) {
                    trmenu.set("Buttons." + symbol + ".update", update);
                }
                trmenu.set("Buttons." + symbol + ".display.mats", section.get("ID"));
                trmenu.set("Buttons." + symbol + ".display.name", section.get("NAME"));
                trmenu.set("Buttons." + symbol + ".display.lore", section.get("LORE"));
                if (section.contains("COMMAND")) {
                    trmenu.set("Buttons." + symbol + ".actions.all", section.getString("COMMAND").split(";( )?"));
                }
                if (section.contains("ENCHANTMENT")) {
                    trmenu.set("Buttons." + symbol + ".display.shiny", true);
                }
            }
        });
        trmenu.set("Shape", fixShape(shape));
        file.renameTo(new File(file.getParent(), file.getName().replace(".yml", "") + ".CONVERTED.TRMENU"));
        trmenu.save(new File(TrMenu.getPlugin().getDataFolder(), "menus/" + file.getName().replace(".yml", "") + "-fromcc.yml"));
        return count + 1;
    } catch (Throwable e) {
        e.printStackTrace();
    }
    return count;
}
 
Example #14
Source File: SecuredFile.java    From TabooLib with MIT License 4 votes vote down vote up
public SecuredFile() {
    SimpleReflection.setFieldValue(MemorySection.class, this, "map", new ConcurrentHashMap<>(map), true);
}
 
Example #15
Source File: Particles.java    From TabooLib with MIT License 4 votes vote down vote up
public static Particle deserialize(Map<String, Object> map) {
    return new Particle(Particles.fromName((String) map.get("particleEffect")), ParticleShape.valueOf(((String) map.get("particleShape")).toUpperCase()), new OrdinaryColor(Color.deserialize(((MemorySection) map.get("particleColor")).getValues(false))));
}
 
Example #16
Source File: MessageFileVerifier.java    From AuthMeReloaded with GNU General Public License v3.0 4 votes vote down vote up
private static boolean isNotInnerNode(String key, FileConfiguration configuration) {
    return !(configuration.get(key) instanceof MemorySection);
}