All Downloads are FREE. Search and download functionalities are using the official Maven repository.

think.rpgitems.power.propertymodifier.EvalModifier Maven / Gradle / Ivy

There is a newer version: 3.12.2
Show newest version
package think.rpgitems.power.propertymodifier;

import com.udojava.evalex.Expression;
import think.rpgitems.power.Meta;
import think.rpgitems.power.Property;
import think.rpgitems.power.Utils;

import java.math.BigDecimal;
import java.util.concurrent.ThreadLocalRandom;

@Meta(marker = true)
public class EvalModifier extends BaseModifier implements DoubleModifier {
    @Property
    public String expression;

    @Override
    public String getName() {
        return "evalmodifier";
    }

    @Override
    public Double apply(RgiParameter t) {
        Expression expression = new Expression(this.expression);
        expression.and("durability", Utils.lazyNumber(() -> Double.valueOf(t.getItem().getItemStackDurability(t.getItemStack()).orElse(0))));
        expression.and("random", Utils.lazyNumber(() -> ThreadLocalRandom.current().nextDouble()));
        expression.and("time", Utils.lazyNumber(() -> (double) (System.currentTimeMillis() / 50)));
        return expression.and("value", BigDecimal.valueOf(t.getValue())).eval().doubleValue();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy