PropertyDispatch.java
net.minecraft.client.data.models.blockstates.PropertyDispatch
信息
- 全限定名:net.minecraft.client.data.models.blockstates.PropertyDispatch
- 类型:public abstract class
- 包:net.minecraft.client.data.models.blockstates
- 源码路径:src/main/java/net/minecraft/client/data/models/blockstates/PropertyDispatch.java
- 起始行号:L19
- 职责:
TODO
字段/常量
values- 类型:
Map<PropertyValueList,V> - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.client.data.models.blockstates.PropertyDispatch.C1- 类型:
class - 修饰符:
public static - 源码定位:
L107 - 说明:
TODO
- 类型:
-
net.minecraft.client.data.models.blockstates.PropertyDispatch.C2- 类型:
class - 修饰符:
public static - 源码定位:
L132 - 说明:
TODO
- 类型:
-
net.minecraft.client.data.models.blockstates.PropertyDispatch.C3- 类型:
class - 修饰符:
public static - 源码定位:
L165 - 说明:
TODO
- 类型:
-
net.minecraft.client.data.models.blockstates.PropertyDispatch.C4- 类型:
class - 修饰符:
public static - 源码定位:
L204 - 说明:
TODO
- 类型:
-
net.minecraft.client.data.models.blockstates.PropertyDispatch.C5- 类型:
class - 修饰符:
public static - 源码定位:
L256 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
protected void putValue(PropertyValueList key, V variant) @ L22
- 方法名:putValue
- 源码定位:L22
- 返回类型:void
- 修饰符:protected
参数:
- key: PropertyValueList
- variant: V
说明:
TODO
Map<PropertyValueList,V> getEntries() @ L29
- 方法名:getEntries
- 源码定位:L29
- 返回类型:Map<PropertyValueList,V>
- 修饰符:package-private
参数:
- 无
说明:
TODO
private void verifyComplete() @ L34
- 方法名:verifyComplete
- 源码定位:L34
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
abstract List<Property<?>> getDefinedProperties() @ L48
- 方法名:getDefinedProperties
- 源码定位:L48
- 返回类型:List<Property<?>>
- 修饰符:abstract
参数:
- 无
说明:
TODO
public static <T1 extends Comparable<T1>> PropertyDispatch.C1<MultiVariant,T1> initial(Property<T1> property1) @ L50
- 方法名:initial
- 源码定位:L50
- 返回类型:<T1 extends Comparable
> PropertyDispatch.C1<MultiVariant,T1> - 修饰符:public static
参数:
- property1: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>> PropertyDispatch.C2<MultiVariant,T1,T2> initial(Property<T1> property1, Property<T2> property2) @ L54
- 方法名:initial
- 源码定位:L54
- 返回类型:<T1 extends Comparable
,T2 extends Comparable > PropertyDispatch.C2<MultiVariant,T1,T2> - 修饰符:public static
参数:
- property1: Property
- property2: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>,T3 extends Comparable<T3>> PropertyDispatch.C3<MultiVariant,T1,T2,T3> initial(Property<T1> property1, Property<T2> property2, Property<T3> property3) @ L60
- 方法名:initial
- 源码定位:L60
- 返回类型:<T1 extends Comparable
,T2 extends Comparable ,T3 extends Comparable > PropertyDispatch.C3<MultiVariant,T1,T2,T3> - 修饰符:public static
参数:
- property1: Property
- property2: Property
- property3: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>,T3 extends Comparable<T3>,T4 extends Comparable<T4>> PropertyDispatch.C4<MultiVariant,T1,T2,T3,T4> initial(Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4) @ L66
- 方法名:initial
- 源码定位:L66
- 返回类型:<T1 extends Comparable
,T2 extends Comparable ,T3 extends Comparable ,T4 extends Comparable > PropertyDispatch.C4<MultiVariant,T1,T2,T3,T4> - 修饰符:public static
参数:
- property1: Property
- property2: Property
- property3: Property
- property4: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>,T3 extends Comparable<T3>,T4 extends Comparable<T4>,T5 extends Comparable<T5>> PropertyDispatch.C5<MultiVariant,T1,T2,T3,T4,T5> initial(Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4, Property<T5> property5) @ L72
- 方法名:initial
- 源码定位:L72
- 返回类型:<T1 extends Comparable
,T2 extends Comparable ,T3 extends Comparable ,T4 extends Comparable ,T5 extends Comparable > PropertyDispatch.C5<MultiVariant,T1,T2,T3,T4,T5> - 修饰符:public static
参数:
- property1: Property
- property2: Property
- property3: Property
- property4: Property
- property5: Property
说明:
TODO
public static <T1 extends Comparable<T1>> PropertyDispatch.C1<VariantMutator,T1> modify(Property<T1> property1) @ L78
- 方法名:modify
- 源码定位:L78
- 返回类型:<T1 extends Comparable
> PropertyDispatch.C1<VariantMutator,T1> - 修饰符:public static
参数:
- property1: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>> PropertyDispatch.C2<VariantMutator,T1,T2> modify(Property<T1> property1, Property<T2> property2) @ L82
- 方法名:modify
- 源码定位:L82
- 返回类型:<T1 extends Comparable
,T2 extends Comparable > PropertyDispatch.C2<VariantMutator,T1,T2> - 修饰符:public static
参数:
- property1: Property
- property2: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>,T3 extends Comparable<T3>> PropertyDispatch.C3<VariantMutator,T1,T2,T3> modify(Property<T1> property1, Property<T2> property2, Property<T3> property3) @ L88
- 方法名:modify
- 源码定位:L88
- 返回类型:<T1 extends Comparable
,T2 extends Comparable ,T3 extends Comparable > PropertyDispatch.C3<VariantMutator,T1,T2,T3> - 修饰符:public static
参数:
- property1: Property
- property2: Property
- property3: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>,T3 extends Comparable<T3>,T4 extends Comparable<T4>> PropertyDispatch.C4<VariantMutator,T1,T2,T3,T4> modify(Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4) @ L94
- 方法名:modify
- 源码定位:L94
- 返回类型:<T1 extends Comparable
,T2 extends Comparable ,T3 extends Comparable ,T4 extends Comparable > PropertyDispatch.C4<VariantMutator,T1,T2,T3,T4> - 修饰符:public static
参数:
- property1: Property
- property2: Property
- property3: Property
- property4: Property
说明:
TODO
public static <T1 extends Comparable<T1>,T2 extends Comparable<T2>,T3 extends Comparable<T3>,T4 extends Comparable<T4>,T5 extends Comparable<T5>> PropertyDispatch.C5<VariantMutator,T1,T2,T3,T4,T5> modify(Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4, Property<T5> property5) @ L100
- 方法名:modify
- 源码定位:L100
- 返回类型:<T1 extends Comparable
,T2 extends Comparable ,T3 extends Comparable ,T4 extends Comparable ,T5 extends Comparable > PropertyDispatch.C5<VariantMutator,T1,T2,T3,T4,T5> - 修饰符:public static
参数:
- property1: Property
- property2: Property
- property3: Property
- property4: Property
- property5: Property
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public abstract class PropertyDispatch<V> {
private final Map<PropertyValueList, V> values = new HashMap<>();
protected void putValue(PropertyValueList key, V variant) {
V previous = this.values.put(key, variant);
if (previous != null) {
throw new IllegalStateException("Value " + key + " is already defined");
}
}
Map<PropertyValueList, V> getEntries() {
this.verifyComplete();
return Map.copyOf(this.values);
}
private void verifyComplete() {
List<Property<?>> properties = this.getDefinedProperties();
Stream<PropertyValueList> valuesToCover = Stream.of(PropertyValueList.EMPTY);
for (Property<?> property : properties) {
valuesToCover = valuesToCover.flatMap(current -> property.getAllValues().map(current::extend));
}
List<PropertyValueList> undefinedCombinations = valuesToCover.filter(f -> !this.values.containsKey(f)).toList();
if (!undefinedCombinations.isEmpty()) {
throw new IllegalStateException("Missing definition for properties: " + undefinedCombinations);
}
}
abstract List<Property<?>> getDefinedProperties();
public static <T1 extends Comparable<T1>> PropertyDispatch.C1<MultiVariant, T1> initial(Property<T1> property1) {
return new PropertyDispatch.C1<>(property1);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>> PropertyDispatch.C2<MultiVariant, T1, T2> initial(
Property<T1> property1, Property<T2> property2
) {
return new PropertyDispatch.C2<>(property1, property2);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>> PropertyDispatch.C3<MultiVariant, T1, T2, T3> initial(
Property<T1> property1, Property<T2> property2, Property<T3> property3
) {
return new PropertyDispatch.C3<>(property1, property2, property3);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>, T4 extends Comparable<T4>> PropertyDispatch.C4<MultiVariant, T1, T2, T3, T4> initial(
Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4
) {
return new PropertyDispatch.C4<>(property1, property2, property3, property4);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>, T4 extends Comparable<T4>, T5 extends Comparable<T5>> PropertyDispatch.C5<MultiVariant, T1, T2, T3, T4, T5> initial(
Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4, Property<T5> property5
) {
return new PropertyDispatch.C5<>(property1, property2, property3, property4, property5);
}
public static <T1 extends Comparable<T1>> PropertyDispatch.C1<VariantMutator, T1> modify(Property<T1> property1) {
return new PropertyDispatch.C1<>(property1);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>> PropertyDispatch.C2<VariantMutator, T1, T2> modify(
Property<T1> property1, Property<T2> property2
) {
return new PropertyDispatch.C2<>(property1, property2);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>> PropertyDispatch.C3<VariantMutator, T1, T2, T3> modify(
Property<T1> property1, Property<T2> property2, Property<T3> property3
) {
return new PropertyDispatch.C3<>(property1, property2, property3);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>, T4 extends Comparable<T4>> PropertyDispatch.C4<VariantMutator, T1, T2, T3, T4> modify(
Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4
) {
return new PropertyDispatch.C4<>(property1, property2, property3, property4);
}
public static <T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>, T4 extends Comparable<T4>, T5 extends Comparable<T5>> PropertyDispatch.C5<VariantMutator, T1, T2, T3, T4, T5> modify(
Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4, Property<T5> property5
) {
return new PropertyDispatch.C5<>(property1, property2, property3, property4, property5);
}
@OnlyIn(Dist.CLIENT)
public static class C1<V, T1 extends Comparable<T1>> extends PropertyDispatch<V> {
private final Property<T1> property1;
private C1(Property<T1> property1) {
this.property1 = property1;
}
@Override
public List<Property<?>> getDefinedProperties() {
return List.of(this.property1);
}
public PropertyDispatch.C1<V, T1> select(T1 value1, V variants) {
PropertyValueList key = PropertyValueList.of(this.property1.value(value1));
this.putValue(key, variants);
return this;
}
public PropertyDispatch<V> generate(Function<T1, V> generator) {
this.property1.getPossibleValues().forEach(value1 -> this.select((T1)value1, generator.apply((T1)value1)));
return this;
}
}
@OnlyIn(Dist.CLIENT)
public static class C2<V, T1 extends Comparable<T1>, T2 extends Comparable<T2>> extends PropertyDispatch<V> {
private final Property<T1> property1;
private final Property<T2> property2;
private C2(Property<T1> property1, Property<T2> property2) {
this.property1 = property1;
this.property2 = property2;
}
@Override
public List<Property<?>> getDefinedProperties() {
return List.of(this.property1, this.property2);
}
public PropertyDispatch.C2<V, T1, T2> select(T1 value1, T2 value2, V variants) {
PropertyValueList key = PropertyValueList.of(this.property1.value(value1), this.property2.value(value2));
this.putValue(key, variants);
return this;
}
public PropertyDispatch<V> generate(BiFunction<T1, T2, V> generator) {
this.property1
.getPossibleValues()
.forEach(
value1 -> this.property2
.getPossibleValues()
.forEach(value2 -> this.select((T1)value1, (T2)value2, generator.apply((T1)value1, (T2)value2)))
);
return this;
}
}
@OnlyIn(Dist.CLIENT)
public static class C3<V, T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>> extends PropertyDispatch<V> {
private final Property<T1> property1;
private final Property<T2> property2;
private final Property<T3> property3;
private C3(Property<T1> property1, Property<T2> property2, Property<T3> property3) {
this.property1 = property1;
this.property2 = property2;
this.property3 = property3;
}
@Override
public List<Property<?>> getDefinedProperties() {
return List.of(this.property1, this.property2, this.property3);
}
public PropertyDispatch.C3<V, T1, T2, T3> select(T1 value1, T2 value2, T3 value3, V variants) {
PropertyValueList key = PropertyValueList.of(this.property1.value(value1), this.property2.value(value2), this.property3.value(value3));
this.putValue(key, variants);
return this;
}
public PropertyDispatch<V> generate(Function3<T1, T2, T3, V> generator) {
this.property1
.getPossibleValues()
.forEach(
value1 -> this.property2
.getPossibleValues()
.forEach(
value2 -> this.property3
.getPossibleValues()
.forEach(value3 -> this.select((T1)value1, (T2)value2, (T3)value3, generator.apply((T1)value1, (T2)value2, (T3)value3)))
)
);
return this;
}
}
@OnlyIn(Dist.CLIENT)
public static class C4<V, T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>, T4 extends Comparable<T4>>
extends PropertyDispatch<V> {
private final Property<T1> property1;
private final Property<T2> property2;
private final Property<T3> property3;
private final Property<T4> property4;
private C4(Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4) {
this.property1 = property1;
this.property2 = property2;
this.property3 = property3;
this.property4 = property4;
}
@Override
public List<Property<?>> getDefinedProperties() {
return List.of(this.property1, this.property2, this.property3, this.property4);
}
public PropertyDispatch.C4<V, T1, T2, T3, T4> select(T1 value1, T2 value2, T3 value3, T4 value4, V variants) {
PropertyValueList key = PropertyValueList.of(
this.property1.value(value1), this.property2.value(value2), this.property3.value(value3), this.property4.value(value4)
);
this.putValue(key, variants);
return this;
}
public PropertyDispatch<V> generate(Function4<T1, T2, T3, T4, V> generator) {
this.property1
.getPossibleValues()
.forEach(
value1 -> this.property2
.getPossibleValues()
.forEach(
value2 -> this.property3
.getPossibleValues()
.forEach(
value3 -> this.property4
.getPossibleValues()
.forEach(
value4 -> this.select(
(T1)value1, (T2)value2, (T3)value3, (T4)value4, generator.apply((T1)value1, (T2)value2, (T3)value3, (T4)value4)
)
)
)
)
);
return this;
}
}
@OnlyIn(Dist.CLIENT)
public static class C5<V, T1 extends Comparable<T1>, T2 extends Comparable<T2>, T3 extends Comparable<T3>, T4 extends Comparable<T4>, T5 extends Comparable<T5>>
extends PropertyDispatch<V> {
private final Property<T1> property1;
private final Property<T2> property2;
private final Property<T3> property3;
private final Property<T4> property4;
private final Property<T5> property5;
private C5(Property<T1> property1, Property<T2> property2, Property<T3> property3, Property<T4> property4, Property<T5> property5) {
this.property1 = property1;
this.property2 = property2;
this.property3 = property3;
this.property4 = property4;
this.property5 = property5;
}
@Override
public List<Property<?>> getDefinedProperties() {
return List.of(this.property1, this.property2, this.property3, this.property4, this.property5);
}
public PropertyDispatch.C5<V, T1, T2, T3, T4, T5> select(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, V variants) {
PropertyValueList key = PropertyValueList.of(
this.property1.value(value1),
this.property2.value(value2),
this.property3.value(value3),
this.property4.value(value4),
this.property5.value(value5)
);
this.putValue(key, variants);
return this;
}
public PropertyDispatch<V> generate(Function5<T1, T2, T3, T4, T5, V> generator) {
this.property1
.getPossibleValues()
.forEach(
value1 -> this.property2
.getPossibleValues()
.forEach(
value2 -> this.property3
.getPossibleValues()
.forEach(
value3 -> this.property4
.getPossibleValues()
.forEach(
value4 -> this.property5
.getPossibleValues()
.forEach(
value5 -> this.select(
(T1)value1,
(T2)value2,
(T3)value3,
(T4)value4,
(T5)value5,
generator.apply((T1)value1, (T2)value2, (T3)value3, (T4)value4, (T5)value5)
)
)
)
)
)
);
return this;
}
}
}引用的其他类
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数/字段/方法调用/返回值 - 关联成员:
PropertyValueList.of()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: