BuiltInRegistries.java
net.minecraft.core.registries.BuiltInRegistries
信息
- 全限定名:net.minecraft.core.registries.BuiltInRegistries
- 类型:public class
- 包:net.minecraft.core.registries
- 源码路径:src/main/java/net/minecraft/core/registries/BuiltInRegistries.java
- 起始行号:L169
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L170 - 说明:
TODO
- 类型:
-
LOADERS- 类型:
Map<Identifier,Supplier<?>> - 修饰符:
private static final - 源码定位:
L171 - 说明:
TODO
- 类型:
-
WRITABLE_REGISTRY- 类型:
WritableRegistry<WritableRegistry<?>> - 修饰符:
private static final - 源码定位:
L172 - 说明:
TODO
- 类型:
-
DATA_COMPONENT_INITIALIZERS- 类型:
DataComponentInitializers - 修饰符:
public static final - 源码定位:
L175 - 说明:
TODO
- 类型:
-
GAME_EVENT- 类型:
DefaultedRegistry<GameEvent> - 修饰符:
public static final - 源码定位:
L176 - 说明:
TODO
- 类型:
-
SOUND_EVENT- 类型:
Registry<SoundEvent> - 修饰符:
public static final - 源码定位:
L177 - 说明:
TODO
- 类型:
-
FLUID- 类型:
DefaultedRegistry<Fluid> - 修饰符:
public static final - 源码定位:
L178 - 说明:
TODO
- 类型:
-
MOB_EFFECT- 类型:
Registry<MobEffect> - 修饰符:
public static final - 源码定位:
L179 - 说明:
TODO
- 类型:
-
BLOCK- 类型:
DefaultedRegistry<Block> - 修饰符:
public static final - 源码定位:
L180 - 说明:
TODO
- 类型:
-
DEBUG_SUBSCRIPTION- 类型:
Registry<DebugSubscription<?>> - 修饰符:
public static final - 源码定位:
L181 - 说明:
TODO
- 类型:
-
ENTITY_TYPE- 类型:
DefaultedRegistry<EntityType<?>> - 修饰符:
public static final - 源码定位:
L182 - 说明:
TODO
- 类型:
-
ITEM- 类型:
DefaultedRegistry<Item> - 修饰符:
public static final - 源码定位:
L185 - 说明:
TODO
- 类型:
-
POTION- 类型:
Registry<Potion> - 修饰符:
public static final - 源码定位:
L186 - 说明:
TODO
- 类型:
-
PARTICLE_TYPE- 类型:
Registry<ParticleType<?>> - 修饰符:
public static final - 源码定位:
L187 - 说明:
TODO
- 类型:
-
BLOCK_ENTITY_TYPE- 类型:
Registry<BlockEntityType<?>> - 修饰符:
public static final - 源码定位:
L188 - 说明:
TODO
- 类型:
-
CUSTOM_STAT- 类型:
Registry<Identifier> - 修饰符:
public static final - 源码定位:
L191 - 说明:
TODO
- 类型:
-
CHUNK_STATUS- 类型:
DefaultedRegistry<ChunkStatus> - 修饰符:
public static final - 源码定位:
L192 - 说明:
TODO
- 类型:
-
RULE_TEST- 类型:
Registry<RuleTestType<?>> - 修饰符:
public static final - 源码定位:
L193 - 说明:
TODO
- 类型:
-
RULE_BLOCK_ENTITY_MODIFIER- 类型:
Registry<RuleBlockEntityModifierType<?>> - 修饰符:
public static final - 源码定位:
L194 - 说明:
TODO
- 类型:
-
POS_RULE_TEST- 类型:
Registry<PosRuleTestType<?>> - 修饰符:
public static final - 源码定位:
L197 - 说明:
TODO
- 类型:
-
MENU- 类型:
Registry<MenuType<?>> - 修饰符:
public static final - 源码定位:
L198 - 说明:
TODO
- 类型:
-
RECIPE_TYPE- 类型:
Registry<RecipeType<?>> - 修饰符:
public static final - 源码定位:
L199 - 说明:
TODO
- 类型:
-
RECIPE_SERIALIZER- 类型:
Registry<RecipeSerializer<?>> - 修饰符:
public static final - 源码定位:
L200 - 说明:
TODO
- 类型:
-
ATTRIBUTE- 类型:
Registry<Attribute> - 修饰符:
public static final - 源码定位:
L201 - 说明:
TODO
- 类型:
-
POSITION_SOURCE_TYPE- 类型:
Registry<PositionSourceType<?>> - 修饰符:
public static final - 源码定位:
L202 - 说明:
TODO
- 类型:
-
COMMAND_ARGUMENT_TYPE- 类型:
Registry<ArgumentTypeInfo<?,?>> - 修饰符:
public static final - 源码定位:
L205 - 说明:
TODO
- 类型:
-
STAT_TYPE- 类型:
Registry<StatType<?>> - 修饰符:
public static final - 源码定位:
L206 - 说明:
TODO
- 类型:
-
VILLAGER_TYPE- 类型:
DefaultedRegistry<VillagerType> - 修饰符:
public static final - 源码定位:
L207 - 说明:
TODO
- 类型:
-
VILLAGER_PROFESSION- 类型:
DefaultedRegistry<VillagerProfession> - 修饰符:
public static final - 源码定位:
L208 - 说明:
TODO
- 类型:
-
POINT_OF_INTEREST_TYPE- 类型:
Registry<PoiType> - 修饰符:
public static final - 源码定位:
L211 - 说明:
TODO
- 类型:
-
MEMORY_MODULE_TYPE- 类型:
DefaultedRegistry<MemoryModuleType<?>> - 修饰符:
public static final - 源码定位:
L212 - 说明:
TODO
- 类型:
-
SENSOR_TYPE- 类型:
DefaultedRegistry<SensorType<?>> - 修饰符:
public static final - 源码定位:
L215 - 说明:
TODO
- 类型:
-
ACTIVITY- 类型:
Registry<Activity> - 修饰符:
public static final - 源码定位:
L216 - 说明:
TODO
- 类型:
-
LOOT_POOL_ENTRY_TYPE- 类型:
Registry<MapCodec<?extends LootPoolEntryContainer>> - 修饰符:
public static final - 源码定位:
L217 - 说明:
TODO
- 类型:
-
LOOT_FUNCTION_TYPE- 类型:
Registry<MapCodec<?extends LootItemFunction>> - 修饰符:
public static final - 源码定位:
L220 - 说明:
TODO
- 类型:
-
LOOT_CONDITION_TYPE- 类型:
Registry<MapCodec<?extends LootItemCondition>> - 修饰符:
public static final - 源码定位:
L223 - 说明:
TODO
- 类型:
-
LOOT_NUMBER_PROVIDER_TYPE- 类型:
Registry<MapCodec<?extends NumberProvider>> - 修饰符:
public static final - 源码定位:
L226 - 说明:
TODO
- 类型:
-
LOOT_NBT_PROVIDER_TYPE- 类型:
Registry<MapCodec<?extends NbtProvider>> - 修饰符:
public static final - 源码定位:
L229 - 说明:
TODO
- 类型:
-
LOOT_SCORE_PROVIDER_TYPE- 类型:
Registry<MapCodec<?extends ScoreboardNameProvider>> - 修饰符:
public static final - 源码定位:
L232 - 说明:
TODO
- 类型:
-
FLOAT_PROVIDER_TYPE- 类型:
Registry<MapCodec<?extends FloatProvider>> - 修饰符:
public static final - 源码定位:
L235 - 说明:
TODO
- 类型:
-
INT_PROVIDER_TYPE- 类型:
Registry<MapCodec<?extends IntProvider>> - 修饰符:
public static final - 源码定位:
L238 - 说明:
TODO
- 类型:
-
HEIGHT_PROVIDER_TYPE- 类型:
Registry<HeightProviderType<?>> - 修饰符:
public static final - 源码定位:
L239 - 说明:
TODO
- 类型:
-
BLOCK_PREDICATE_TYPE- 类型:
Registry<BlockPredicateType<?>> - 修饰符:
public static final - 源码定位:
L242 - 说明:
TODO
- 类型:
-
CARVER- 类型:
Registry<WorldCarver<?>> - 修饰符:
public static final - 源码定位:
L245 - 说明:
TODO
- 类型:
-
FEATURE- 类型:
Registry<Feature<?>> - 修饰符:
public static final - 源码定位:
L246 - 说明:
TODO
- 类型:
-
STRUCTURE_PLACEMENT- 类型:
Registry<StructurePlacementType<?>> - 修饰符:
public static final - 源码定位:
L247 - 说明:
TODO
- 类型:
-
STRUCTURE_PIECE- 类型:
Registry<StructurePieceType> - 修饰符:
public static final - 源码定位:
L250 - 说明:
TODO
- 类型:
-
STRUCTURE_TYPE- 类型:
Registry<StructureType<?>> - 修饰符:
public static final - 源码定位:
L253 - 说明:
TODO
- 类型:
-
PLACEMENT_MODIFIER_TYPE- 类型:
Registry<PlacementModifierType<?>> - 修饰符:
public static final - 源码定位:
L254 - 说明:
TODO
- 类型:
-
BLOCKSTATE_PROVIDER_TYPE- 类型:
Registry<BlockStateProviderType<?>> - 修饰符:
public static final - 源码定位:
L257 - 说明:
TODO
- 类型:
-
FOLIAGE_PLACER_TYPE- 类型:
Registry<FoliagePlacerType<?>> - 修饰符:
public static final - 源码定位:
L260 - 说明:
TODO
- 类型:
-
TRUNK_PLACER_TYPE- 类型:
Registry<TrunkPlacerType<?>> - 修饰符:
public static final - 源码定位:
L263 - 说明:
TODO
- 类型:
-
ROOT_PLACER_TYPE- 类型:
Registry<RootPlacerType<?>> - 修饰符:
public static final - 源码定位:
L266 - 说明:
TODO
- 类型:
-
TREE_DECORATOR_TYPE- 类型:
Registry<TreeDecoratorType<?>> - 修饰符:
public static final - 源码定位:
L269 - 说明:
TODO
- 类型:
-
FEATURE_SIZE_TYPE- 类型:
Registry<FeatureSizeType<?>> - 修饰符:
public static final - 源码定位:
L272 - 说明:
TODO
- 类型:
-
BIOME_SOURCE- 类型:
Registry<MapCodec<?extends BiomeSource>> - 修饰符:
public static final - 源码定位:
L275 - 说明:
TODO
- 类型:
-
CHUNK_GENERATOR- 类型:
Registry<MapCodec<?extends ChunkGenerator>> - 修饰符:
public static final - 源码定位:
L276 - 说明:
TODO
- 类型:
-
MATERIAL_CONDITION- 类型:
Registry<MapCodec<?extends SurfaceRules.ConditionSource>> - 修饰符:
public static final - 源码定位:
L277 - 说明:
TODO
- 类型:
-
MATERIAL_RULE- 类型:
Registry<MapCodec<?extends SurfaceRules.RuleSource>> - 修饰符:
public static final - 源码定位:
L280 - 说明:
TODO
- 类型:
-
DENSITY_FUNCTION_TYPE- 类型:
Registry<MapCodec<?extends DensityFunction>> - 修饰符:
public static final - 源码定位:
L283 - 说明:
TODO
- 类型:
-
BLOCK_TYPE- 类型:
Registry<MapCodec<?extends Block>> - 修饰符:
public static final - 源码定位:
L286 - 说明:
TODO
- 类型:
-
STRUCTURE_PROCESSOR- 类型:
Registry<StructureProcessorType<?>> - 修饰符:
public static final - 源码定位:
L287 - 说明:
TODO
- 类型:
-
STRUCTURE_POOL_ELEMENT- 类型:
Registry<StructurePoolElementType<?>> - 修饰符:
public static final - 源码定位:
L290 - 说明:
TODO
- 类型:
-
POOL_ALIAS_BINDING_TYPE- 类型:
Registry<MapCodec<?extends PoolAliasBinding>> - 修饰符:
public static final - 源码定位:
L293 - 说明:
TODO
- 类型:
-
DECORATED_POT_PATTERN- 类型:
Registry<DecoratedPotPattern> - 修饰符:
public static final - 源码定位:
L296 - 说明:
TODO
- 类型:
-
CREATIVE_MODE_TAB- 类型:
Registry<CreativeModeTab> - 修饰符:
public static final - 源码定位:
L297 - 说明:
TODO
- 类型:
-
TRIGGER_TYPES- 类型:
Registry<CriterionTrigger<?>> - 修饰符:
public static final - 源码定位:
L298 - 说明:
TODO
- 类型:
-
NUMBER_FORMAT_TYPE- 类型:
Registry<NumberFormatType<?>> - 修饰符:
public static final - 源码定位:
L299 - 说明:
TODO
- 类型:
-
DATA_COMPONENT_TYPE- 类型:
Registry<DataComponentType<?>> - 修饰符:
public static final - 源码定位:
L300 - 说明:
TODO
- 类型:
-
GAME_RULE- 类型:
Registry<GameRule<?>> - 修饰符:
public static final - 源码定位:
L301 - 说明:
TODO
- 类型:
-
ENTITY_SUB_PREDICATE_TYPE- 类型:
Registry<MapCodec<?extends EntitySubPredicate>> - 修饰符:
public static final - 源码定位:
L302 - 说明:
TODO
- 类型:
-
DATA_COMPONENT_PREDICATE_TYPE- 类型:
Registry<DataComponentPredicate.Type<?>> - 修饰符:
public static final - 源码定位:
L305 - 说明:
TODO
- 类型:
-
MAP_DECORATION_TYPE- 类型:
Registry<MapDecorationType> - 修饰符:
public static final - 源码定位:
L308 - 说明:
TODO
- 类型:
-
ENCHANTMENT_EFFECT_COMPONENT_TYPE- 类型:
Registry<DataComponentType<?>> - 修饰符:
public static final - 源码定位:
L309 - 说明:
TODO
- 类型:
-
ENCHANTMENT_LEVEL_BASED_VALUE_TYPE- 类型:
Registry<MapCodec<?extends LevelBasedValue>> - 修饰符:
public static final - 源码定位:
L312 - 说明:
TODO
- 类型:
-
ENCHANTMENT_ENTITY_EFFECT_TYPE- 类型:
Registry<MapCodec<?extends EnchantmentEntityEffect>> - 修饰符:
public static final - 源码定位:
L315 - 说明:
TODO
- 类型:
-
ENCHANTMENT_LOCATION_BASED_EFFECT_TYPE- 类型:
Registry<MapCodec<?extends EnchantmentLocationBasedEffect>> - 修饰符:
public static final - 源码定位:
L318 - 说明:
TODO
- 类型:
-
ENCHANTMENT_VALUE_EFFECT_TYPE- 类型:
Registry<MapCodec<?extends EnchantmentValueEffect>> - 修饰符:
public static final - 源码定位:
L321 - 说明:
TODO
- 类型:
-
ENCHANTMENT_PROVIDER_TYPE- 类型:
Registry<MapCodec<?extends EnchantmentProvider>> - 修饰符:
public static final - 源码定位:
L324 - 说明:
TODO
- 类型:
-
CONSUME_EFFECT_TYPE- 类型:
Registry<ConsumeEffect.Type<?>> - 修饰符:
public static final - 源码定位:
L327 - 说明:
TODO
- 类型:
-
RECIPE_DISPLAY- 类型:
Registry<RecipeDisplay.Type<?>> - 修饰符:
public static final - 源码定位:
L330 - 说明:
TODO
- 类型:
-
SLOT_DISPLAY- 类型:
Registry<SlotDisplay.Type<?>> - 修饰符:
public static final - 源码定位:
L331 - 说明:
TODO
- 类型:
-
RECIPE_BOOK_CATEGORY- 类型:
Registry<RecipeBookCategory> - 修饰符:
public static final - 源码定位:
L332 - 说明:
TODO
- 类型:
-
TICKET_TYPE- 类型:
Registry<TicketType> - 修饰符:
public static final - 源码定位:
L333 - 说明:
TODO
- 类型:
-
INCOMING_RPC_METHOD- 类型:
Registry<IncomingRpcMethod<?,?>> - 修饰符:
public static final - 源码定位:
L334 - 说明:
TODO
- 类型:
-
OUTGOING_RPC_METHOD- 类型:
Registry<OutgoingRpcMethod<?,?>> - 修饰符:
public static final - 源码定位:
L335 - 说明:
TODO
- 类型:
-
TEST_ENVIRONMENT_DEFINITION_TYPE- 类型:
Registry<MapCodec<?extends TestEnvironmentDefinition<?>>> - 修饰符:
public static final - 源码定位:
L338 - 说明:
TODO
- 类型:
-
TEST_INSTANCE_TYPE- 类型:
Registry<MapCodec<?extends GameTestInstance>> - 修饰符:
public static final - 源码定位:
L341 - 说明:
TODO
- 类型:
-
SPAWN_CONDITION_TYPE- 类型:
Registry<MapCodec<?extends SpawnCondition>> - 修饰符:
public static final - 源码定位:
L344 - 说明:
TODO
- 类型:
-
DIALOG_TYPE- 类型:
Registry<MapCodec<?extends Dialog>> - 修饰符:
public static final - 源码定位:
L347 - 说明:
TODO
- 类型:
-
DIALOG_ACTION_TYPE- 类型:
Registry<MapCodec<?extends Action>> - 修饰符:
public static final - 源码定位:
L348 - 说明:
TODO
- 类型:
-
INPUT_CONTROL_TYPE- 类型:
Registry<MapCodec<?extends InputControl>> - 修饰符:
public static final - 源码定位:
L349 - 说明:
TODO
- 类型:
-
DIALOG_BODY_TYPE- 类型:
Registry<MapCodec<?extends DialogBody>> - 修饰符:
public static final - 源码定位:
L352 - 说明:
TODO
- 类型:
-
PERMISSION_TYPE- 类型:
Registry<MapCodec<?extends Permission>> - 修饰符:
public static final - 源码定位:
L353 - 说明:
TODO
- 类型:
-
PERMISSION_CHECK_TYPE- 类型:
Registry<MapCodec<?extends PermissionCheck>> - 修饰符:
public static final - 源码定位:
L354 - 说明:
TODO
- 类型:
-
ENVIRONMENT_ATTRIBUTE- 类型:
Registry<EnvironmentAttribute<?>> - 修饰符:
public static final - 源码定位:
L357 - 说明:
TODO
- 类型:
-
ATTRIBUTE_TYPE- 类型:
Registry<AttributeType<?>> - 修饰符:
public static final - 源码定位:
L360 - 说明:
TODO
- 类型:
-
SLOT_SOURCE_TYPE- 类型:
Registry<MapCodec<?extends SlotSource>> - 修饰符:
public static final - 源码定位:
L361 - 说明:
TODO
- 类型:
-
TEST_FUNCTION- 类型:
Registry<Consumer<GameTestHelper>> - 修饰符:
public static final - 源码定位:
L362 - 说明:
TODO
- 类型:
-
REGISTRY- 类型:
Registry<?extends Registry<?>> - 修饰符:
public static final - 源码定位:
L363 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.core.registries.BuiltInRegistries.RegistryBootstrap- 类型:
interface - 修饰符:
private - 源码定位:
L440 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
private static <T> Registry<T> registerSimple(ResourceKey<?extends Registry<T>> name, BuiltInRegistries.RegistryBootstrap<T> loader) @ L365
- 方法名:registerSimple
- 源码定位:L365
- 返回类型:
Registry - 修饰符:private static
参数:
- name: ResourceKey<?extends Registry
> - loader: BuiltInRegistries.RegistryBootstrap
说明:
TODO
private static <T> Registry<T> registerSimpleWithIntrusiveHolders(ResourceKey<?extends Registry<T>> name, BuiltInRegistries.RegistryBootstrap<T> loader) @ L369
- 方法名:registerSimpleWithIntrusiveHolders
- 源码定位:L369
- 返回类型:
Registry - 修饰符:private static
参数:
- name: ResourceKey<?extends Registry
> - loader: BuiltInRegistries.RegistryBootstrap
说明:
TODO
private static <T> DefaultedRegistry<T> registerDefaulted(ResourceKey<?extends Registry<T>> name, String defaultKey, BuiltInRegistries.RegistryBootstrap<T> loader) @ L373
- 方法名:registerDefaulted
- 源码定位:L373
- 返回类型:
DefaultedRegistry - 修饰符:private static
参数:
- name: ResourceKey<?extends Registry
> - defaultKey: String
- loader: BuiltInRegistries.RegistryBootstrap
说明:
TODO
private static <T> DefaultedRegistry<T> registerDefaultedWithIntrusiveHolders(ResourceKey<?extends Registry<T>> name, String defaultKey, BuiltInRegistries.RegistryBootstrap<T> loader) @ L379
- 方法名:registerDefaultedWithIntrusiveHolders
- 源码定位:L379
- 返回类型:
DefaultedRegistry - 修饰符:private static
参数:
- name: ResourceKey<?extends Registry
> - defaultKey: String
- loader: BuiltInRegistries.RegistryBootstrap
说明:
TODO
private static <T,R extends WritableRegistry<T>> R internalRegister(ResourceKey<?extends Registry<T>> name, R registry, BuiltInRegistries.RegistryBootstrap<T> loader) @ L385
- 方法名:internalRegister
- 源码定位:L385
- 返回类型:<T,R extends WritableRegistry
> R - 修饰符:private static
参数:
- name: ResourceKey<?extends Registry
> - registry: R
- loader: BuiltInRegistries.RegistryBootstrap
说明:
TODO
public static void bootStrap() @ L395
- 方法名:bootStrap
- 源码定位:L395
- 返回类型:void
- 修饰符:public static
参数:
- 无
说明:
TODO
private static void createContents() @ L401
- 方法名:createContents
- 源码定位:L401
- 返回类型:void
- 修饰符:private static
参数:
- 无
说明:
TODO
private static void freeze() @ L409
- 方法名:freeze
- 源码定位:L409
- 返回类型:void
- 修饰符:private static
参数:
- 无
说明:
TODO
private static <T extends Registry<?>> void validate(Registry<T> registry) @ L418
- 方法名:validate
- 源码定位:L418
- 返回类型:<T extends Registry<?>> void
- 修饰符:private static
参数:
- registry: Registry
说明:
TODO
public static <T> HolderGetter<T> acquireBootstrapRegistrationLookup(Registry<T> registry) @ L431
- 方法名:acquireBootstrapRegistrationLookup
- 源码定位:L431
- 返回类型:
HolderGetter - 修饰符:public static
参数:
- registry: Registry
说明:
TODO
private static void bindBootstrappedTagsToEmpty(Registry<?> registry) @ L435
- 方法名:bindBootstrappedTagsToEmpty
- 源码定位:L435
- 返回类型:void
- 修饰符:private static
参数:
- registry: Registry<?>
说明:
TODO
代码
public class BuiltInRegistries {
private static final Logger LOGGER = LogUtils.getLogger();
private static final Map<Identifier, Supplier<?>> LOADERS = Maps.newLinkedHashMap();
private static final WritableRegistry<WritableRegistry<?>> WRITABLE_REGISTRY = new MappedRegistry<>(
ResourceKey.createRegistryKey(Registries.ROOT_REGISTRY_NAME), Lifecycle.stable()
);
public static final DataComponentInitializers DATA_COMPONENT_INITIALIZERS = new DataComponentInitializers();
public static final DefaultedRegistry<GameEvent> GAME_EVENT = registerDefaulted(Registries.GAME_EVENT, "step", GameEvent::bootstrap);
public static final Registry<SoundEvent> SOUND_EVENT = registerSimple(Registries.SOUND_EVENT, registry -> SoundEvents.ITEM_PICKUP);
public static final DefaultedRegistry<Fluid> FLUID = registerDefaultedWithIntrusiveHolders(Registries.FLUID, "empty", registry -> Fluids.EMPTY);
public static final Registry<MobEffect> MOB_EFFECT = registerSimple(Registries.MOB_EFFECT, MobEffects::bootstrap);
public static final DefaultedRegistry<Block> BLOCK = registerDefaultedWithIntrusiveHolders(Registries.BLOCK, "air", registry -> Blocks.AIR);
public static final Registry<DebugSubscription<?>> DEBUG_SUBSCRIPTION = registerSimple(Registries.DEBUG_SUBSCRIPTION, DebugSubscriptions::bootstrap);
public static final DefaultedRegistry<EntityType<?>> ENTITY_TYPE = registerDefaultedWithIntrusiveHolders(
Registries.ENTITY_TYPE, "pig", registry -> EntityType.PIG
);
public static final DefaultedRegistry<Item> ITEM = registerDefaultedWithIntrusiveHolders(Registries.ITEM, "air", registry -> Items.AIR);
public static final Registry<Potion> POTION = registerSimple(Registries.POTION, Potions::bootstrap);
public static final Registry<ParticleType<?>> PARTICLE_TYPE = registerSimple(Registries.PARTICLE_TYPE, registry -> ParticleTypes.BLOCK);
public static final Registry<BlockEntityType<?>> BLOCK_ENTITY_TYPE = registerSimpleWithIntrusiveHolders(
Registries.BLOCK_ENTITY_TYPE, registry -> BlockEntityType.FURNACE
);
public static final Registry<Identifier> CUSTOM_STAT = registerSimple(Registries.CUSTOM_STAT, registry -> Stats.JUMP);
public static final DefaultedRegistry<ChunkStatus> CHUNK_STATUS = registerDefaulted(Registries.CHUNK_STATUS, "empty", registry -> ChunkStatus.EMPTY);
public static final Registry<RuleTestType<?>> RULE_TEST = registerSimple(Registries.RULE_TEST, registry -> RuleTestType.ALWAYS_TRUE_TEST);
public static final Registry<RuleBlockEntityModifierType<?>> RULE_BLOCK_ENTITY_MODIFIER = registerSimple(
Registries.RULE_BLOCK_ENTITY_MODIFIER, registry -> RuleBlockEntityModifierType.PASSTHROUGH
);
public static final Registry<PosRuleTestType<?>> POS_RULE_TEST = registerSimple(Registries.POS_RULE_TEST, registry -> PosRuleTestType.ALWAYS_TRUE_TEST);
public static final Registry<MenuType<?>> MENU = registerSimple(Registries.MENU, registry -> MenuType.ANVIL);
public static final Registry<RecipeType<?>> RECIPE_TYPE = registerSimple(Registries.RECIPE_TYPE, registry -> RecipeType.CRAFTING);
public static final Registry<RecipeSerializer<?>> RECIPE_SERIALIZER = registerSimple(Registries.RECIPE_SERIALIZER, RecipeSerializers::bootstrap);
public static final Registry<Attribute> ATTRIBUTE = registerSimple(Registries.ATTRIBUTE, Attributes::bootstrap);
public static final Registry<PositionSourceType<?>> POSITION_SOURCE_TYPE = registerSimple(
Registries.POSITION_SOURCE_TYPE, registry -> PositionSourceType.BLOCK
);
public static final Registry<ArgumentTypeInfo<?, ?>> COMMAND_ARGUMENT_TYPE = registerSimple(Registries.COMMAND_ARGUMENT_TYPE, ArgumentTypeInfos::bootstrap);
public static final Registry<StatType<?>> STAT_TYPE = registerSimple(Registries.STAT_TYPE, registry -> Stats.ITEM_USED);
public static final DefaultedRegistry<VillagerType> VILLAGER_TYPE = registerDefaulted(Registries.VILLAGER_TYPE, "plains", VillagerType::bootstrap);
public static final DefaultedRegistry<VillagerProfession> VILLAGER_PROFESSION = registerDefaulted(
Registries.VILLAGER_PROFESSION, "none", VillagerProfession::bootstrap
);
public static final Registry<PoiType> POINT_OF_INTEREST_TYPE = registerSimple(Registries.POINT_OF_INTEREST_TYPE, PoiTypes::bootstrap);
public static final DefaultedRegistry<MemoryModuleType<?>> MEMORY_MODULE_TYPE = registerDefaulted(
Registries.MEMORY_MODULE_TYPE, "dummy", registry -> MemoryModuleType.DUMMY
);
public static final DefaultedRegistry<SensorType<?>> SENSOR_TYPE = registerDefaulted(Registries.SENSOR_TYPE, "dummy", registry -> SensorType.DUMMY);
public static final Registry<Activity> ACTIVITY = registerSimple(Registries.ACTIVITY, registry -> Activity.IDLE);
public static final Registry<MapCodec<? extends LootPoolEntryContainer>> LOOT_POOL_ENTRY_TYPE = registerSimple(
Registries.LOOT_POOL_ENTRY_TYPE, LootPoolEntries::bootstrap
);
public static final Registry<MapCodec<? extends LootItemFunction>> LOOT_FUNCTION_TYPE = registerSimple(
Registries.LOOT_FUNCTION_TYPE, LootItemFunctions::bootstrap
);
public static final Registry<MapCodec<? extends LootItemCondition>> LOOT_CONDITION_TYPE = registerSimple(
Registries.LOOT_CONDITION_TYPE, LootItemConditions::bootstrap
);
public static final Registry<MapCodec<? extends NumberProvider>> LOOT_NUMBER_PROVIDER_TYPE = registerSimple(
Registries.LOOT_NUMBER_PROVIDER_TYPE, NumberProviders::bootstrap
);
public static final Registry<MapCodec<? extends NbtProvider>> LOOT_NBT_PROVIDER_TYPE = registerSimple(
Registries.LOOT_NBT_PROVIDER_TYPE, NbtProviders::bootstrap
);
public static final Registry<MapCodec<? extends ScoreboardNameProvider>> LOOT_SCORE_PROVIDER_TYPE = registerSimple(
Registries.LOOT_SCORE_PROVIDER_TYPE, ScoreboardNameProviders::bootstrap
);
public static final Registry<MapCodec<? extends FloatProvider>> FLOAT_PROVIDER_TYPE = registerSimple(
Registries.FLOAT_PROVIDER_TYPE, FloatProviders::bootstrap
);
public static final Registry<MapCodec<? extends IntProvider>> INT_PROVIDER_TYPE = registerSimple(Registries.INT_PROVIDER_TYPE, IntProviders::bootstrap);
public static final Registry<HeightProviderType<?>> HEIGHT_PROVIDER_TYPE = registerSimple(
Registries.HEIGHT_PROVIDER_TYPE, registry -> HeightProviderType.CONSTANT
);
public static final Registry<BlockPredicateType<?>> BLOCK_PREDICATE_TYPE = registerSimple(
Registries.BLOCK_PREDICATE_TYPE, registry -> BlockPredicateType.NOT
);
public static final Registry<WorldCarver<?>> CARVER = registerSimple(Registries.CARVER, registry -> WorldCarver.CAVE);
public static final Registry<Feature<?>> FEATURE = registerSimple(Registries.FEATURE, registry -> Feature.ORE);
public static final Registry<StructurePlacementType<?>> STRUCTURE_PLACEMENT = registerSimple(
Registries.STRUCTURE_PLACEMENT, registry -> StructurePlacementType.RANDOM_SPREAD
);
public static final Registry<StructurePieceType> STRUCTURE_PIECE = registerSimple(
Registries.STRUCTURE_PIECE, registry -> StructurePieceType.MINE_SHAFT_ROOM
);
public static final Registry<StructureType<?>> STRUCTURE_TYPE = registerSimple(Registries.STRUCTURE_TYPE, registry -> StructureType.JIGSAW);
public static final Registry<PlacementModifierType<?>> PLACEMENT_MODIFIER_TYPE = registerSimple(
Registries.PLACEMENT_MODIFIER_TYPE, registry -> PlacementModifierType.COUNT
);
public static final Registry<BlockStateProviderType<?>> BLOCKSTATE_PROVIDER_TYPE = registerSimple(
Registries.BLOCK_STATE_PROVIDER_TYPE, registry -> BlockStateProviderType.SIMPLE_STATE_PROVIDER
);
public static final Registry<FoliagePlacerType<?>> FOLIAGE_PLACER_TYPE = registerSimple(
Registries.FOLIAGE_PLACER_TYPE, registry -> FoliagePlacerType.BLOB_FOLIAGE_PLACER
);
public static final Registry<TrunkPlacerType<?>> TRUNK_PLACER_TYPE = registerSimple(
Registries.TRUNK_PLACER_TYPE, registry -> TrunkPlacerType.STRAIGHT_TRUNK_PLACER
);
public static final Registry<RootPlacerType<?>> ROOT_PLACER_TYPE = registerSimple(
Registries.ROOT_PLACER_TYPE, registry -> RootPlacerType.MANGROVE_ROOT_PLACER
);
public static final Registry<TreeDecoratorType<?>> TREE_DECORATOR_TYPE = registerSimple(
Registries.TREE_DECORATOR_TYPE, registry -> TreeDecoratorType.LEAVE_VINE
);
public static final Registry<FeatureSizeType<?>> FEATURE_SIZE_TYPE = registerSimple(
Registries.FEATURE_SIZE_TYPE, registry -> FeatureSizeType.TWO_LAYERS_FEATURE_SIZE
);
public static final Registry<MapCodec<? extends BiomeSource>> BIOME_SOURCE = registerSimple(Registries.BIOME_SOURCE, BiomeSources::bootstrap);
public static final Registry<MapCodec<? extends ChunkGenerator>> CHUNK_GENERATOR = registerSimple(Registries.CHUNK_GENERATOR, ChunkGenerators::bootstrap);
public static final Registry<MapCodec<? extends SurfaceRules.ConditionSource>> MATERIAL_CONDITION = registerSimple(
Registries.MATERIAL_CONDITION, SurfaceRules.ConditionSource::bootstrap
);
public static final Registry<MapCodec<? extends SurfaceRules.RuleSource>> MATERIAL_RULE = registerSimple(
Registries.MATERIAL_RULE, SurfaceRules.RuleSource::bootstrap
);
public static final Registry<MapCodec<? extends DensityFunction>> DENSITY_FUNCTION_TYPE = registerSimple(
Registries.DENSITY_FUNCTION_TYPE, DensityFunctions::bootstrap
);
public static final Registry<MapCodec<? extends Block>> BLOCK_TYPE = registerSimple(Registries.BLOCK_TYPE, BlockTypes::bootstrap);
public static final Registry<StructureProcessorType<?>> STRUCTURE_PROCESSOR = registerSimple(
Registries.STRUCTURE_PROCESSOR, registry -> StructureProcessorType.BLOCK_IGNORE
);
public static final Registry<StructurePoolElementType<?>> STRUCTURE_POOL_ELEMENT = registerSimple(
Registries.STRUCTURE_POOL_ELEMENT, registry -> StructurePoolElementType.EMPTY
);
public static final Registry<MapCodec<? extends PoolAliasBinding>> POOL_ALIAS_BINDING_TYPE = registerSimple(
Registries.POOL_ALIAS_BINDING, PoolAliasBindings::bootstrap
);
public static final Registry<DecoratedPotPattern> DECORATED_POT_PATTERN = registerSimple(Registries.DECORATED_POT_PATTERN, DecoratedPotPatterns::bootstrap);
public static final Registry<CreativeModeTab> CREATIVE_MODE_TAB = registerSimple(Registries.CREATIVE_MODE_TAB, CreativeModeTabs::bootstrap);
public static final Registry<CriterionTrigger<?>> TRIGGER_TYPES = registerSimple(Registries.TRIGGER_TYPE, CriteriaTriggers::bootstrap);
public static final Registry<NumberFormatType<?>> NUMBER_FORMAT_TYPE = registerSimple(Registries.NUMBER_FORMAT_TYPE, NumberFormatTypes::bootstrap);
public static final Registry<DataComponentType<?>> DATA_COMPONENT_TYPE = registerSimple(Registries.DATA_COMPONENT_TYPE, DataComponents::bootstrap);
public static final Registry<GameRule<?>> GAME_RULE = registerSimple(Registries.GAME_RULE, GameRules::bootstrap);
public static final Registry<MapCodec<? extends EntitySubPredicate>> ENTITY_SUB_PREDICATE_TYPE = registerSimple(
Registries.ENTITY_SUB_PREDICATE_TYPE, EntitySubPredicates::bootstrap
);
public static final Registry<DataComponentPredicate.Type<?>> DATA_COMPONENT_PREDICATE_TYPE = registerSimple(
Registries.DATA_COMPONENT_PREDICATE_TYPE, DataComponentPredicates::bootstrap
);
public static final Registry<MapDecorationType> MAP_DECORATION_TYPE = registerSimple(Registries.MAP_DECORATION_TYPE, MapDecorationTypes::bootstrap);
public static final Registry<DataComponentType<?>> ENCHANTMENT_EFFECT_COMPONENT_TYPE = registerSimple(
Registries.ENCHANTMENT_EFFECT_COMPONENT_TYPE, EnchantmentEffectComponents::bootstrap
);
public static final Registry<MapCodec<? extends LevelBasedValue>> ENCHANTMENT_LEVEL_BASED_VALUE_TYPE = registerSimple(
Registries.ENCHANTMENT_LEVEL_BASED_VALUE_TYPE, LevelBasedValue::bootstrap
);
public static final Registry<MapCodec<? extends EnchantmentEntityEffect>> ENCHANTMENT_ENTITY_EFFECT_TYPE = registerSimple(
Registries.ENCHANTMENT_ENTITY_EFFECT_TYPE, EnchantmentEntityEffect::bootstrap
);
public static final Registry<MapCodec<? extends EnchantmentLocationBasedEffect>> ENCHANTMENT_LOCATION_BASED_EFFECT_TYPE = registerSimple(
Registries.ENCHANTMENT_LOCATION_BASED_EFFECT_TYPE, EnchantmentLocationBasedEffect::bootstrap
);
public static final Registry<MapCodec<? extends EnchantmentValueEffect>> ENCHANTMENT_VALUE_EFFECT_TYPE = registerSimple(
Registries.ENCHANTMENT_VALUE_EFFECT_TYPE, EnchantmentValueEffect::bootstrap
);
public static final Registry<MapCodec<? extends EnchantmentProvider>> ENCHANTMENT_PROVIDER_TYPE = registerSimple(
Registries.ENCHANTMENT_PROVIDER_TYPE, EnchantmentProviderTypes::bootstrap
);
public static final Registry<ConsumeEffect.Type<?>> CONSUME_EFFECT_TYPE = registerSimple(
Registries.CONSUME_EFFECT_TYPE, registry -> ConsumeEffect.Type.APPLY_EFFECTS
);
public static final Registry<RecipeDisplay.Type<?>> RECIPE_DISPLAY = registerSimple(Registries.RECIPE_DISPLAY, RecipeDisplays::bootstrap);
public static final Registry<SlotDisplay.Type<?>> SLOT_DISPLAY = registerSimple(Registries.SLOT_DISPLAY, SlotDisplays::bootstrap);
public static final Registry<RecipeBookCategory> RECIPE_BOOK_CATEGORY = registerSimple(Registries.RECIPE_BOOK_CATEGORY, RecipeBookCategories::bootstrap);
public static final Registry<TicketType> TICKET_TYPE = registerSimple(Registries.TICKET_TYPE, registry -> TicketType.UNKNOWN);
public static final Registry<IncomingRpcMethod<?, ?>> INCOMING_RPC_METHOD = registerSimple(Registries.INCOMING_RPC_METHOD, IncomingRpcMethods::bootstrap);
public static final Registry<OutgoingRpcMethod<?, ?>> OUTGOING_RPC_METHOD = registerSimple(
Registries.OUTGOING_RPC_METHOD, registry -> OutgoingRpcMethods.SERVER_STARTED
);
public static final Registry<MapCodec<? extends TestEnvironmentDefinition<?>>> TEST_ENVIRONMENT_DEFINITION_TYPE = registerSimple(
Registries.TEST_ENVIRONMENT_DEFINITION_TYPE, TestEnvironmentDefinition::bootstrap
);
public static final Registry<MapCodec<? extends GameTestInstance>> TEST_INSTANCE_TYPE = registerSimple(
Registries.TEST_INSTANCE_TYPE, GameTestInstance::bootstrap
);
public static final Registry<MapCodec<? extends SpawnCondition>> SPAWN_CONDITION_TYPE = registerSimple(
Registries.SPAWN_CONDITION_TYPE, SpawnConditions::bootstrap
);
public static final Registry<MapCodec<? extends Dialog>> DIALOG_TYPE = registerSimple(Registries.DIALOG_TYPE, DialogTypes::bootstrap);
public static final Registry<MapCodec<? extends Action>> DIALOG_ACTION_TYPE = registerSimple(Registries.DIALOG_ACTION_TYPE, ActionTypes::bootstrap);
public static final Registry<MapCodec<? extends InputControl>> INPUT_CONTROL_TYPE = registerSimple(
Registries.INPUT_CONTROL_TYPE, InputControlTypes::bootstrap
);
public static final Registry<MapCodec<? extends DialogBody>> DIALOG_BODY_TYPE = registerSimple(Registries.DIALOG_BODY_TYPE, DialogBodyTypes::bootstrap);
public static final Registry<MapCodec<? extends Permission>> PERMISSION_TYPE = registerSimple(Registries.PERMISSION_TYPE, PermissionTypes::bootstrap);
public static final Registry<MapCodec<? extends PermissionCheck>> PERMISSION_CHECK_TYPE = registerSimple(
Registries.PERMISSION_CHECK_TYPE, PermissionCheckTypes::bootstrap
);
public static final Registry<EnvironmentAttribute<?>> ENVIRONMENT_ATTRIBUTE = registerSimple(
Registries.ENVIRONMENT_ATTRIBUTE, EnvironmentAttributes::bootstrap
);
public static final Registry<AttributeType<?>> ATTRIBUTE_TYPE = registerSimple(Registries.ATTRIBUTE_TYPE, AttributeTypes::bootstrap);
public static final Registry<MapCodec<? extends SlotSource>> SLOT_SOURCE_TYPE = registerSimple(Registries.SLOT_SOURCE_TYPE, SlotSources::bootstrap);
public static final Registry<Consumer<GameTestHelper>> TEST_FUNCTION = registerSimple(Registries.TEST_FUNCTION, BuiltinTestFunctions::bootstrap);
public static final Registry<? extends Registry<?>> REGISTRY = WRITABLE_REGISTRY;
private static <T> Registry<T> registerSimple(ResourceKey<? extends Registry<T>> name, BuiltInRegistries.RegistryBootstrap<T> loader) {
return internalRegister(name, new MappedRegistry<>(name, Lifecycle.stable(), false), loader);
}
private static <T> Registry<T> registerSimpleWithIntrusiveHolders(ResourceKey<? extends Registry<T>> name, BuiltInRegistries.RegistryBootstrap<T> loader) {
return internalRegister(name, new MappedRegistry<>(name, Lifecycle.stable(), true), loader);
}
private static <T> DefaultedRegistry<T> registerDefaulted(
ResourceKey<? extends Registry<T>> name, String defaultKey, BuiltInRegistries.RegistryBootstrap<T> loader
) {
return internalRegister(name, new DefaultedMappedRegistry<>(defaultKey, name, Lifecycle.stable(), false), loader);
}
private static <T> DefaultedRegistry<T> registerDefaultedWithIntrusiveHolders(
ResourceKey<? extends Registry<T>> name, String defaultKey, BuiltInRegistries.RegistryBootstrap<T> loader
) {
return internalRegister(name, new DefaultedMappedRegistry<>(defaultKey, name, Lifecycle.stable(), true), loader);
}
private static <T, R extends WritableRegistry<T>> R internalRegister(
ResourceKey<? extends Registry<T>> name, R registry, BuiltInRegistries.RegistryBootstrap<T> loader
) {
Bootstrap.checkBootstrapCalled(() -> "registry " + name.identifier());
Identifier key = name.identifier();
LOADERS.put(key, () -> loader.run(registry));
WRITABLE_REGISTRY.register((ResourceKey)name, registry, RegistrationInfo.BUILT_IN);
return registry;
}
public static void bootStrap() {
createContents();
freeze();
validate(REGISTRY);
}
private static void createContents() {
LOADERS.forEach((key, value) -> {
if (value.get() == null) {
LOGGER.error("Unable to bootstrap registry '{}'", key);
}
});
}
private static void freeze() {
REGISTRY.freeze();
for (Registry<?> registry : REGISTRY) {
bindBootstrappedTagsToEmpty(registry);
registry.freeze();
}
}
private static <T extends Registry<?>> void validate(Registry<T> registry) {
registry.forEach(r -> {
if (r.keySet().isEmpty()) {
Util.logAndPauseIfInIde("Registry '" + registry.getKey((T)r) + "' was empty after loading");
}
if (r instanceof DefaultedRegistry) {
Identifier key = ((DefaultedRegistry)r).getDefaultKey();
Objects.requireNonNull(r.getValue(key), "Missing default of DefaultedMappedRegistry: " + key);
}
});
}
public static <T> HolderGetter<T> acquireBootstrapRegistrationLookup(Registry<T> registry) {
return ((WritableRegistry)registry).createRegistrationLookup();
}
private static void bindBootstrappedTagsToEmpty(Registry<?> registry) {
((MappedRegistry)registry).bindAllTagsToEmpty();
}
@FunctionalInterface
private interface RegistryBootstrap<T> {
Object run(Registry<T> registry);
}
}引用的其他类
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段/返回值
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
字段/返回值
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
DataComponentInitializers()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
ResourceKey.createRegistryKey()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Bootstrap.checkBootstrapCalled()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.logAndPauseIfInIde()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
EnchantmentLocationBasedEffect
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置: