me.moros.bending.api.config.attribute.AttributeValue Maven / Gradle / Ivy
/*
* Copyright 2020-2024 Moros
*
* This file is part of Bending.
*
* Bending is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Bending is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Bending. If not, see .
*/
package me.moros.bending.api.config.attribute;
import java.util.Objects;
public sealed interface AttributeValue permits AttributeValueImpl {
Attribute attribute();
String name();
Number baseValue();
Number finalValue();
default boolean modified() {
return !baseValue().equals(finalValue());
}
static AttributeValue of(Attribute attribute, String name, Number baseValue, Number finalValue) {
Objects.requireNonNull(attribute);
Objects.requireNonNull(name);
Objects.requireNonNull(baseValue);
Objects.requireNonNull(finalValue);
return new AttributeValueImpl(attribute, name, baseValue, finalValue);
}
}