minecraft-src/net/minecraft/world/entity/ai/attributes/RangedAttribute.java
2025-07-04 01:41:11 +03:00

51 lines
1.5 KiB
Java

package net.minecraft.world.entity.ai.attributes;
import net.minecraft.util.Mth;
/**
* Defines an entity {@linkplain net.minecraft.world.entity.ai.attributes.Attribute attribute} that is limited to a range of values.
*/
public class RangedAttribute extends Attribute {
/**
* The lowest possible value for the attribute.
*/
private final double minValue;
/**
* The highest possible value for the attribute.
*/
private final double maxValue;
public RangedAttribute(String descriptionId, double defaultValue, double min, double max) {
super(descriptionId, defaultValue);
this.minValue = min;
this.maxValue = max;
if (min > max) {
throw new IllegalArgumentException("Minimum value cannot be bigger than maximum value!");
} else if (defaultValue < min) {
throw new IllegalArgumentException("Default value cannot be lower than minimum value!");
} else if (defaultValue > max) {
throw new IllegalArgumentException("Default value cannot be bigger than maximum value!");
}
}
/**
* Gets the lowest possible value for the attribute.
* @return The lowest possible value for the attribute; {@link #minValue}.
*/
public double getMinValue() {
return this.minValue;
}
/**
* Gets the highest possible value for the attribute.
* @return The highest possible value for the attribute; {@link #maxValue}.
*/
public double getMaxValue() {
return this.maxValue;
}
@Override
public double sanitizeValue(double value) {
return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue);
}
}