Allow to pass nulls as field name to use private next field name

This commit is contained in:
DBotThePony 2023-01-29 22:24:30 +07:00
parent 4b9fc97b7c
commit b817e9f290
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 86 additions and 85 deletions

View File

@ -65,7 +65,8 @@ class RedstoneControl(private val valueChanges: (new: Boolean, old: Boolean) ->
class SynchronizedRedstoneControl( class SynchronizedRedstoneControl(
synchronizer: FieldSynchronizer, synchronizer: FieldSynchronizer,
private val valueChanges: (new: Boolean, old: Boolean) -> Unit private val valueChanges: (new: Boolean, old: Boolean) -> Unit,
fieldNamePrefix: String? = null
) : AbstractRedstoneControl() { ) : AbstractRedstoneControl() {
override var redstoneSetting: RedstoneSetting by synchronizer.enum(RedstoneSetting.LOW, setter = { value, access, setByRemote -> override var redstoneSetting: RedstoneSetting by synchronizer.enum(RedstoneSetting.LOW, setter = { value, access, setByRemote ->
if (setByRemote) { if (setByRemote) {

View File

@ -158,68 +158,68 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
hasChanges = false hasChanges = false
} }
@JvmOverloads fun byte(getter: () -> Byte, name: String = nextFieldName()) = ComputedField(getter, ByteValueCodec, name) @JvmOverloads fun byte(getter: () -> Byte, name: String? = nextFieldName()) = ComputedField(getter, ByteValueCodec, name ?: nextFieldName())
@JvmOverloads fun bool(getter: () -> Boolean, name: String = nextFieldName()) = ComputedField(getter, BooleanValueCodec, name) @JvmOverloads fun bool(getter: () -> Boolean, name: String? = nextFieldName()) = ComputedField(getter, BooleanValueCodec, name ?: nextFieldName())
@JvmOverloads fun short(getter: () -> Short, name: String = nextFieldName()) = ComputedField(getter, ShortValueCodec, name) @JvmOverloads fun short(getter: () -> Short, name: String? = nextFieldName()) = ComputedField(getter, ShortValueCodec, name ?: nextFieldName())
@JvmOverloads fun long(getter: () -> Long, name: String = nextFieldName()) = ComputedField(getter, VarLongValueCodec, name) @JvmOverloads fun long(getter: () -> Long, name: String? = nextFieldName()) = ComputedField(getter, VarLongValueCodec, name ?: nextFieldName())
@JvmOverloads fun fixedLong(getter: () -> Long, name: String = nextFieldName()) = ComputedField(getter, LongValueCodec, name) @JvmOverloads fun fixedLong(getter: () -> Long, name: String? = nextFieldName()) = ComputedField(getter, LongValueCodec, name ?: nextFieldName())
@JvmOverloads fun float(getter: () -> Float, name: String = nextFieldName()) = ComputedField(getter, FloatValueCodec, name) @JvmOverloads fun float(getter: () -> Float, name: String? = nextFieldName()) = ComputedField(getter, FloatValueCodec, name ?: nextFieldName())
@JvmOverloads fun double(getter: () -> Double, name: String = nextFieldName()) = ComputedField(getter, DoubleValueCodec, name) @JvmOverloads fun double(getter: () -> Double, name: String? = nextFieldName()) = ComputedField(getter, DoubleValueCodec, name ?: nextFieldName())
@JvmOverloads fun uuid(getter: () -> UUID, name: String = nextFieldName()) = ComputedField(getter, UUIDValueCodec, name) @JvmOverloads fun uuid(getter: () -> UUID, name: String? = nextFieldName()) = ComputedField(getter, UUIDValueCodec, name ?: nextFieldName())
@JvmOverloads fun int(getter: () -> Int, name: String = nextFieldName()) = ComputedField(getter, VarIntValueCodec, name) @JvmOverloads fun int(getter: () -> Int, name: String? = nextFieldName()) = ComputedField(getter, VarIntValueCodec, name ?: nextFieldName())
@JvmOverloads fun fixedInt(getter: () -> Int, name: String = nextFieldName()) = ComputedField(getter, IntValueCodec, name) @JvmOverloads fun fixedInt(getter: () -> Int, name: String? = nextFieldName()) = ComputedField(getter, IntValueCodec, name ?: nextFieldName())
@JvmOverloads fun fraction(getter: () -> Decimal, name: String = nextFieldName()) = ComputedField(getter, ImpreciseFractionValueCodec, name) @JvmOverloads fun fraction(getter: () -> Decimal, name: String? = nextFieldName()) = ComputedField(getter, ImpreciseFractionValueCodec, name ?: nextFieldName())
@JvmOverloads fun bigDecimal(getter: () -> BigDecimal, name: String = nextFieldName()) = ComputedField(getter, BigDecimalValueCodec, name) @JvmOverloads fun bigDecimal(getter: () -> BigDecimal, name: String? = nextFieldName()) = ComputedField(getter, BigDecimalValueCodec, name ?: nextFieldName())
@JvmOverloads fun item(getter: () -> ItemStack, name: String = nextFieldName()) = ComputedField(getter, ItemStackValueCodec, name) @JvmOverloads fun item(getter: () -> ItemStack, name: String? = nextFieldName()) = ComputedField(getter, ItemStackValueCodec, name ?: nextFieldName())
@JvmOverloads fun string(getter: () -> String, name: String = nextFieldName()) = ComputedField(getter, BinaryStringCodec, name) @JvmOverloads fun string(getter: () -> String, name: String? = nextFieldName()) = ComputedField(getter, BinaryStringCodec, name ?: nextFieldName())
@JvmOverloads fun byte(getter: KProperty0<Byte>, name: String = nextFieldName()) = ComputedField(getter, ByteValueCodec, name) @JvmOverloads fun byte(getter: KProperty0<Byte>, name: String? = nextFieldName()) = ComputedField(getter, ByteValueCodec, name ?: nextFieldName())
@JvmOverloads fun bool(getter: KProperty0<Boolean>, name: String = nextFieldName()) = ComputedField(getter, BooleanValueCodec, name) @JvmOverloads fun bool(getter: KProperty0<Boolean>, name: String? = nextFieldName()) = ComputedField(getter, BooleanValueCodec, name ?: nextFieldName())
@JvmOverloads fun short(getter: KProperty0<Short>, name: String = nextFieldName()) = ComputedField(getter, ShortValueCodec, name) @JvmOverloads fun short(getter: KProperty0<Short>, name: String? = nextFieldName()) = ComputedField(getter, ShortValueCodec, name ?: nextFieldName())
@JvmOverloads fun long(getter: KProperty0<Long>, name: String = nextFieldName()) = ComputedField(getter, VarLongValueCodec, name) @JvmOverloads fun long(getter: KProperty0<Long>, name: String? = nextFieldName()) = ComputedField(getter, VarLongValueCodec, name ?: nextFieldName())
@JvmOverloads fun fixedLong(getter: KProperty0<Long>, name: String = nextFieldName()) = ComputedField(getter, LongValueCodec, name) @JvmOverloads fun fixedLong(getter: KProperty0<Long>, name: String? = nextFieldName()) = ComputedField(getter, LongValueCodec, name ?: nextFieldName())
@JvmOverloads fun float(getter: KProperty0<Float>, name: String = nextFieldName()) = ComputedField(getter, FloatValueCodec, name) @JvmOverloads fun float(getter: KProperty0<Float>, name: String? = nextFieldName()) = ComputedField(getter, FloatValueCodec, name ?: nextFieldName())
@JvmOverloads fun double(getter: KProperty0<Double>, name: String = nextFieldName()) = ComputedField(getter, DoubleValueCodec, name) @JvmOverloads fun double(getter: KProperty0<Double>, name: String? = nextFieldName()) = ComputedField(getter, DoubleValueCodec, name ?: nextFieldName())
@JvmOverloads fun uuid(getter: KProperty0<UUID>, name: String = nextFieldName()) = ComputedField(getter, UUIDValueCodec, name) @JvmOverloads fun uuid(getter: KProperty0<UUID>, name: String? = nextFieldName()) = ComputedField(getter, UUIDValueCodec, name ?: nextFieldName())
@JvmOverloads fun int(getter: KProperty0<Int>, name: String = nextFieldName()) = ComputedField(getter, VarIntValueCodec, name) @JvmOverloads fun int(getter: KProperty0<Int>, name: String? = nextFieldName()) = ComputedField(getter, VarIntValueCodec, name ?: nextFieldName())
@JvmOverloads fun fixedInt(getter: KProperty0<Int>, name: String = nextFieldName()) = ComputedField(getter, IntValueCodec, name) @JvmOverloads fun fixedInt(getter: KProperty0<Int>, name: String? = nextFieldName()) = ComputedField(getter, IntValueCodec, name ?: nextFieldName())
@JvmOverloads fun fraction(getter: KProperty0<Decimal>, name: String = nextFieldName()) = ComputedField(getter, ImpreciseFractionValueCodec, name) @JvmOverloads fun fraction(getter: KProperty0<Decimal>, name: String? = nextFieldName()) = ComputedField(getter, ImpreciseFractionValueCodec, name ?: nextFieldName())
@JvmOverloads fun bigDecimal(getter: KProperty0<BigDecimal>, name: String = nextFieldName()) = ComputedField(getter, BigDecimalValueCodec, name) @JvmOverloads fun bigDecimal(getter: KProperty0<BigDecimal>, name: String? = nextFieldName()) = ComputedField(getter, BigDecimalValueCodec, name ?: nextFieldName())
@JvmOverloads fun item(getter: KProperty0<ItemStack>, name: String = nextFieldName()) = ComputedField(getter, ItemStackValueCodec, name) @JvmOverloads fun item(getter: KProperty0<ItemStack>, name: String? = nextFieldName()) = ComputedField(getter, ItemStackValueCodec, name ?: nextFieldName())
@JvmOverloads fun string(getter: KProperty0<String>, name: String = nextFieldName()) = ComputedField(getter, BinaryStringCodec, name) @JvmOverloads fun string(getter: KProperty0<String>, name: String? = nextFieldName()) = ComputedField(getter, BinaryStringCodec, name ?: nextFieldName())
@JvmOverloads fun byte(getter: Supplier<Byte>, name: String = nextFieldName()) = ComputedField(getter::get, ByteValueCodec, name) @JvmOverloads fun byte(getter: Supplier<Byte>, name: String? = nextFieldName()) = ComputedField(getter::get, ByteValueCodec, name ?: nextFieldName())
@JvmOverloads fun bool(getter: Supplier<Boolean>, name: String = nextFieldName()) = ComputedField(getter::get, BooleanValueCodec, name) @JvmOverloads fun bool(getter: Supplier<Boolean>, name: String? = nextFieldName()) = ComputedField(getter::get, BooleanValueCodec, name ?: nextFieldName())
@JvmOverloads fun short(getter: Supplier<Short>, name: String = nextFieldName()) = ComputedField(getter::get, ShortValueCodec, name) @JvmOverloads fun short(getter: Supplier<Short>, name: String? = nextFieldName()) = ComputedField(getter::get, ShortValueCodec, name ?: nextFieldName())
@JvmOverloads fun long(getter: Supplier<Long>, name: String = nextFieldName()) = ComputedField(getter::get, VarLongValueCodec, name) @JvmOverloads fun long(getter: Supplier<Long>, name: String? = nextFieldName()) = ComputedField(getter::get, VarLongValueCodec, name ?: nextFieldName())
@JvmOverloads fun fixedLong(getter: Supplier<Long>, name: String = nextFieldName()) = ComputedField(getter::get, LongValueCodec, name) @JvmOverloads fun fixedLong(getter: Supplier<Long>, name: String? = nextFieldName()) = ComputedField(getter::get, LongValueCodec, name ?: nextFieldName())
@JvmOverloads fun float(getter: Supplier<Float>, name: String = nextFieldName()) = ComputedField(getter::get, FloatValueCodec, name) @JvmOverloads fun float(getter: Supplier<Float>, name: String? = nextFieldName()) = ComputedField(getter::get, FloatValueCodec, name ?: nextFieldName())
@JvmOverloads fun double(getter: Supplier<Double>, name: String = nextFieldName()) = ComputedField(getter::get, DoubleValueCodec, name) @JvmOverloads fun double(getter: Supplier<Double>, name: String? = nextFieldName()) = ComputedField(getter::get, DoubleValueCodec, name ?: nextFieldName())
@JvmOverloads fun uuid(getter: Supplier<UUID>, name: String = nextFieldName()) = ComputedField(getter::get, UUIDValueCodec, name) @JvmOverloads fun uuid(getter: Supplier<UUID>, name: String? = nextFieldName()) = ComputedField(getter::get, UUIDValueCodec, name ?: nextFieldName())
@JvmOverloads fun int(getter: Supplier<Int>, name: String = nextFieldName()) = ComputedField(getter::get, VarIntValueCodec, name) @JvmOverloads fun int(getter: Supplier<Int>, name: String? = nextFieldName()) = ComputedField(getter::get, VarIntValueCodec, name ?: nextFieldName())
@JvmOverloads fun fixedInt(getter: Supplier<Int>, name: String = nextFieldName()) = ComputedField(getter::get, IntValueCodec, name) @JvmOverloads fun fixedInt(getter: Supplier<Int>, name: String? = nextFieldName()) = ComputedField(getter::get, IntValueCodec, name ?: nextFieldName())
@JvmOverloads fun fraction(getter: Supplier<Decimal>, name: String = nextFieldName()) = ComputedField(getter::get, ImpreciseFractionValueCodec, name) @JvmOverloads fun fraction(getter: Supplier<Decimal>, name: String? = nextFieldName()) = ComputedField(getter::get, ImpreciseFractionValueCodec, name ?: nextFieldName())
@JvmOverloads fun bigDecimal(getter: Supplier<BigDecimal>, name: String = nextFieldName()) = ComputedField(getter::get, BigDecimalValueCodec, name) @JvmOverloads fun bigDecimal(getter: Supplier<BigDecimal>, name: String? = nextFieldName()) = ComputedField(getter::get, BigDecimalValueCodec, name ?: nextFieldName())
@JvmOverloads fun item(getter: Supplier<ItemStack>, name: String = nextFieldName()) = ComputedField(getter::get, ItemStackValueCodec, name) @JvmOverloads fun item(getter: Supplier<ItemStack>, name: String? = nextFieldName()) = ComputedField(getter::get, ItemStackValueCodec, name ?: nextFieldName())
@JvmOverloads fun string(getter: Supplier<String>, name: String = nextFieldName()) = ComputedField(getter::get, BinaryStringCodec, name) @JvmOverloads fun string(getter: Supplier<String>, name: String? = nextFieldName()) = ComputedField(getter::get, BinaryStringCodec, name ?: nextFieldName())
@JvmOverloads fun <T : Enum<T>> enum(type: Class<T>, getter: () -> T, name: String = nextFieldName()) = ComputedField(getter, EnumValueCodec(type), name) @JvmOverloads fun <T : Enum<T>> enum(type: Class<T>, getter: () -> T, name: String? = nextFieldName()) = ComputedField(getter, EnumValueCodec(type), name ?: nextFieldName())
inline fun <reified T : Enum<T>> enum(noinline getter: () -> T, name: String = nextFieldName()) = ComputedField(getter, EnumValueCodec(T::class.java), name) inline fun <reified T : Enum<T>> enum(noinline getter: () -> T, name: String? = nextFieldName()) = ComputedField(getter, EnumValueCodec(T::class.java), name ?: nextFieldName())
@JvmOverloads fun <T : Enum<T>> enum(type: Class<T>, getter: KProperty0<T>, name: String = nextFieldName()) = ComputedField(getter, EnumValueCodec(type), name) @JvmOverloads fun <T : Enum<T>> enum(type: Class<T>, getter: KProperty0<T>, name: String? = nextFieldName()) = ComputedField(getter, EnumValueCodec(type), name ?: nextFieldName())
inline fun <reified T : Enum<T>> enum(getter: KProperty0<T>, name: String = nextFieldName()) = ComputedField(getter, EnumValueCodec(T::class.java), name) inline fun <reified T : Enum<T>> enum(getter: KProperty0<T>, name: String? = nextFieldName()) = ComputedField(getter, EnumValueCodec(T::class.java), name ?: nextFieldName())
@JvmOverloads fun <T : Enum<T>> enum(type: Class<T>, getter: Supplier<T>, name: String = nextFieldName()) = ComputedField(getter::get, EnumValueCodec(type), name) @JvmOverloads fun <T : Enum<T>> enum(type: Class<T>, getter: Supplier<T>, name: String? = nextFieldName()) = ComputedField(getter::get, EnumValueCodec(type), name ?: nextFieldName())
inline fun <reified T : Enum<T>> enum(getter: Supplier<T>, name: String = nextFieldName()) = ComputedField(getter::get, EnumValueCodec(T::class.java), name) inline fun <reified T : Enum<T>> enum(getter: Supplier<T>, name: String? = nextFieldName()) = ComputedField(getter::get, EnumValueCodec(T::class.java), name ?: nextFieldName())
@JvmOverloads @JvmOverloads
fun byte( fun byte(
value: Byte = 0, value: Byte = 0,
getter: FieldGetter<Byte>? = null, getter: FieldGetter<Byte>? = null,
setter: FieldSetter<Byte>? = null, setter: FieldSetter<Byte>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Byte> { ): Field<Byte> {
return Field(value, ByteValueCodec, getter, setter, name = name) return Field(value, ByteValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -227,9 +227,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Boolean = false, value: Boolean = false,
getter: FieldGetter<Boolean>? = null, getter: FieldGetter<Boolean>? = null,
setter: FieldSetter<Boolean>? = null, setter: FieldSetter<Boolean>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Boolean> { ): Field<Boolean> {
return Field(value, BooleanValueCodec, getter, setter, name = name) return Field(value, BooleanValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -237,9 +237,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Short = 0, value: Short = 0,
getter: FieldGetter<Short>? = null, getter: FieldGetter<Short>? = null,
setter: FieldSetter<Short>? = null, setter: FieldSetter<Short>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Short> { ): Field<Short> {
return Field(value, ShortValueCodec, getter, setter, name = name) return Field(value, ShortValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -247,9 +247,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Long = 0L, value: Long = 0L,
getter: FieldGetter<Long>? = null, getter: FieldGetter<Long>? = null,
setter: FieldSetter<Long>? = null, setter: FieldSetter<Long>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Long> { ): Field<Long> {
return Field(value, VarLongValueCodec, getter, setter, name = name) return Field(value, VarLongValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -257,9 +257,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Long = 0L, value: Long = 0L,
getter: FieldGetter<Long>? = null, getter: FieldGetter<Long>? = null,
setter: FieldSetter<Long>? = null, setter: FieldSetter<Long>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Long> { ): Field<Long> {
return Field(value, LongValueCodec, getter, setter, name = name) return Field(value, LongValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -267,9 +267,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Float = 0f, value: Float = 0f,
getter: FieldGetter<Float>? = null, getter: FieldGetter<Float>? = null,
setter: FieldSetter<Float>? = null, setter: FieldSetter<Float>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Float> { ): Field<Float> {
return Field(value, FloatValueCodec, getter, setter, name = name) return Field(value, FloatValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -277,9 +277,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Double = 0.0, value: Double = 0.0,
getter: FieldGetter<Double>? = null, getter: FieldGetter<Double>? = null,
setter: FieldSetter<Double>? = null, setter: FieldSetter<Double>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Double> { ): Field<Double> {
return Field(value, DoubleValueCodec, getter, setter, name = name) return Field(value, DoubleValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -287,9 +287,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: UUID = UUID(0L, 0L), value: UUID = UUID(0L, 0L),
getter: FieldGetter<UUID>? = null, getter: FieldGetter<UUID>? = null,
setter: FieldSetter<UUID>? = null, setter: FieldSetter<UUID>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<UUID> { ): Field<UUID> {
return Field(value, UUIDValueCodec, getter, setter, name = name) return Field(value, UUIDValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -297,9 +297,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Int = 0, value: Int = 0,
getter: FieldGetter<Int>? = null, getter: FieldGetter<Int>? = null,
setter: FieldSetter<Int>? = null, setter: FieldSetter<Int>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Int> { ): Field<Int> {
return Field(value, VarIntValueCodec, getter, setter, name = name) return Field(value, VarIntValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -307,9 +307,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: String = "", value: String = "",
getter: FieldGetter<String>? = null, getter: FieldGetter<String>? = null,
setter: FieldSetter<String>? = null, setter: FieldSetter<String>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<String> { ): Field<String> {
return Field(value, BinaryStringCodec, getter, setter, name = name) return Field(value, BinaryStringCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -317,9 +317,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Int = 0, value: Int = 0,
getter: FieldGetter<Int>? = null, getter: FieldGetter<Int>? = null,
setter: FieldSetter<Int>? = null, setter: FieldSetter<Int>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Int> { ): Field<Int> {
return Field(value, IntValueCodec, getter, setter, name = name) return Field(value, IntValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -327,9 +327,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: Decimal = Decimal.ZERO, value: Decimal = Decimal.ZERO,
getter: FieldGetter<Decimal>? = null, getter: FieldGetter<Decimal>? = null,
setter: FieldSetter<Decimal>? = null, setter: FieldSetter<Decimal>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<Decimal> { ): Field<Decimal> {
return Field(value, ImpreciseFractionValueCodec, getter, setter, name = name) return Field(value, ImpreciseFractionValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -337,9 +337,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: BigDecimal = BigDecimal.ZERO, value: BigDecimal = BigDecimal.ZERO,
getter: FieldGetter<BigDecimal>? = null, getter: FieldGetter<BigDecimal>? = null,
setter: FieldSetter<BigDecimal>? = null, setter: FieldSetter<BigDecimal>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<BigDecimal> { ): Field<BigDecimal> {
return Field(value, BigDecimalValueCodec, getter, setter, name = name) return Field(value, BigDecimalValueCodec, getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -348,9 +348,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: T = type.enumConstants[0], value: T = type.enumConstants[0],
getter: FieldGetter<T>? = null, getter: FieldGetter<T>? = null,
setter: FieldSetter<T>? = null, setter: FieldSetter<T>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<T> { ): Field<T> {
return Field(value, EnumValueCodec(type), getter, setter, name = name) return Field(value, EnumValueCodec(type), getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -358,9 +358,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
value: T, value: T,
getter: FieldGetter<T>? = null, getter: FieldGetter<T>? = null,
setter: FieldSetter<T>? = null, setter: FieldSetter<T>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<T> { ): Field<T> {
return Field(value, EnumValueCodec(value::class.java), getter, setter, name = name) return Field(value, EnumValueCodec(value::class.java), getter, setter, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -369,17 +369,17 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
getter: FieldGetter<ItemStack>? = null, getter: FieldGetter<ItemStack>? = null,
setter: FieldSetter<ItemStack>? = null, setter: FieldSetter<ItemStack>? = null,
observe: Boolean = true, observe: Boolean = true,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Field<ItemStack> { ): Field<ItemStack> {
return Field(value, ItemStackValueCodec, getter, setter, isObserver = observe, name = name) return Field(value, ItemStackValueCodec, getter, setter, isObserver = observe, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
fun item( fun item(
delegate: KMutableProperty0<ItemStack>, delegate: KMutableProperty0<ItemStack>,
name: String = nextFieldName(), name: String? = nextFieldName(),
): ObservedField<ItemStack> { ): ObservedField<ItemStack> {
return ObservedField(delegate, ItemStackValueCodec, name = name) return ObservedField(delegate, ItemStackValueCodec, name = name ?: nextFieldName())
} }
@JvmOverloads @JvmOverloads
@ -389,7 +389,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
callback: ((changes: Collection<MapChangeset<K, V>>) -> Unit)? = null, callback: ((changes: Collection<MapChangeset<K, V>>) -> Unit)? = null,
backingMap: MutableMap<K, V> = HashMap(), backingMap: MutableMap<K, V> = HashMap(),
observingBackingMap: MutableMap<K, V>? = null, observingBackingMap: MutableMap<K, V>? = null,
name: String = nextFieldName(), name: String? = nextFieldName(),
): Map<K, V> { ): Map<K, V> {
return Map( return Map(
keyCodec = keyCodec, keyCodec = keyCodec,
@ -397,7 +397,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
callback = callback, callback = callback,
backingMap = backingMap, backingMap = backingMap,
observingBackingMap = observingBackingMap, observingBackingMap = observingBackingMap,
name = name, name = name ?: nextFieldName(),
) )
} }