package net.minecraft.nbt; import java.util.Optional; public sealed interface NumericTag extends PrimitiveTag permits ByteTag, ShortTag, IntTag, LongTag, FloatTag, DoubleTag { byte byteValue(); short shortValue(); int intValue(); long longValue(); float floatValue(); double doubleValue(); Number box(); @Override default Optional asNumber() { return Optional.of(this.box()); } @Override default Optional asByte() { return Optional.of(this.byteValue()); } @Override default Optional asShort() { return Optional.of(this.shortValue()); } @Override default Optional asInt() { return Optional.of(this.intValue()); } @Override default Optional asLong() { return Optional.of(this.longValue()); } @Override default Optional asFloat() { return Optional.of(this.floatValue()); } @Override default Optional asDouble() { return Optional.of(this.doubleValue()); } @Override default Optional asBoolean() { return Optional.of(this.byteValue() != 0); } }