com.skelril.nitro.data.util.EnchantmentUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.skelril.nitro.data.util.EnchantmentUtil.java

Source

/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

package com.skelril.nitro.data.util;

import com.google.common.collect.Lists;
import org.spongepowered.api.data.key.Keys;
import org.spongepowered.api.data.meta.ItemEnchantment;
import org.spongepowered.api.data.value.mutable.CompositeValueStore;
import org.spongepowered.api.item.Enchantment;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

public class EnchantmentUtil {
    public static List<ItemEnchantment> getEnchantment(CompositeValueStore<?, ?> valueStore,
            Enchantment enchantment) {
        Optional<List<ItemEnchantment>> results = valueStore.get(Keys.ITEM_ENCHANTMENTS);
        if (results.isPresent()) {
            List<ItemEnchantment> enchantments = results.get();
            return enchantments.stream().filter(e -> e.getEnchantment().equals(enchantment))
                    .collect(Collectors.toList());
        }
        return Lists.newArrayList();
    }

    public static Optional<ItemEnchantment> getHighestEnchantment(CompositeValueStore<?, ?> valueStore,
            Enchantment enchantment) {
        List<ItemEnchantment> enchantments = getEnchantment(valueStore, enchantment);
        if (!enchantments.isEmpty()) {
            return Optional
                    .of(enchantments.stream().sorted((a, b) -> a.getLevel() - b.getLevel()).findFirst().get());
        }
        return Optional.empty();
    }
}