BuiltInBlockModels.java
net.minecraft.client.renderer.block.BuiltInBlockModels
信息
- 全限定名:net.minecraft.client.renderer.block.BuiltInBlockModels
- 类型:public class
- 包:net.minecraft.client.renderer.block
- 源码路径:src/main/java/net/minecraft/client/renderer/block/BuiltInBlockModels.java
- 起始行号:L81
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
-
net.minecraft.client.renderer.block.BuiltInBlockModels.Builder- 类型:
class - 修饰符:
private static - 源码定位:
L411 - 说明:
TODO
- 类型:
-
net.minecraft.client.renderer.block.BuiltInBlockModels.ModelFactory- 类型:
interface - 修饰符:
private - 源码定位:
L441 - 说明:
TODO
- 类型:
-
net.minecraft.client.renderer.block.BuiltInBlockModels.SpecialModelFactory- 类型:
interface - 修饰符:
private - 源码定位:
L447 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
private static void addDefaults(BuiltInBlockModels.Builder builder) @ L82
- 方法名:addDefaults
- 源码定位:L82
- 返回类型:void
- 修饰符:private static
参数:
- builder: BuiltInBlockModels.Builder
说明:
TODO
private static void createAir(BuiltInBlockModels.Builder builder, Block block) @ L183
- 方法名:createAir
- 源码定位:L183
- 返回类型:void
- 修饰符:private static
参数:
- builder: BuiltInBlockModels.Builder
- block: Block
说明:
TODO
private static BlockModel.Unbaked special(SpecialModelRenderer.Unbaked<?> model) @ L187
- 方法名:special
- 源码定位:L187
- 返回类型:BlockModel.Unbaked
- 修饰符:private static
参数:
- model: SpecialModelRenderer.Unbaked<?>
说明:
TODO
private static BlockModel.Unbaked special(SpecialModelRenderer.Unbaked<?> model, Transformation transformation) @ L191
- 方法名:special
- 源码定位:L191
- 返回类型:BlockModel.Unbaked
- 修饰符:private static
参数:
- model: SpecialModelRenderer.Unbaked<?>
- transformation: Transformation
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createMobHead(SkullBlock.Types type) @ L195
- 方法名:createMobHead
- 源码定位:L195
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- type: SkullBlock.Types
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createMobWallHead(SkullBlock.Types type) @ L201
- 方法名:createMobWallHead
- 源码定位:L201
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- type: SkullBlock.Types
说明:
TODO
private static void createMobHeads(BuiltInBlockModels.Builder builder, SkullBlock.Types type, Block ground, Block wall) @ L207
- 方法名:createMobHeads
- 源码定位:L207
- 返回类型:void
- 修饰符:private static
参数:
- builder: BuiltInBlockModels.Builder
- type: SkullBlock.Types
- ground: Block
- wall: Block
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createPlayerHead() @ L212
- 方法名:createPlayerHead
- 源码定位:L212
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- 无
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createPlayerWallHead() @ L219
- 方法名:createPlayerWallHead
- 源码定位:L219
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- 无
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createBanner(DyeColor color) @ L226
- 方法名:createBanner
- 源码定位:L226
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- color: DyeColor
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createWallBanner(DyeColor color) @ L235
- 方法名:createWallBanner
- 源码定位:L235
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- color: DyeColor
说明:
TODO
private static void createBanners(BuiltInBlockModels.Builder builder, DyeColor dye, Block ground, Block wall) @ L244
- 方法名:createBanners
- 源码定位:L244
- 返回类型:void
- 修饰符:private static
参数:
- builder: BuiltInBlockModels.Builder
- dye: DyeColor
- ground: Block
- wall: Block
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createBed(DyeColor color) @ L249
- 方法名:createBed
- 源码定位:L249
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- color: DyeColor
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createShulkerBox() @ L255
- 方法名:createShulkerBox
- 源码定位:L255
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- 无
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createDyedShulkerBox(DyeColor color) @ L261
- 方法名:createDyedShulkerBox
- 源码定位:L261
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- color: DyeColor
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createStandingSign(WoodType type) @ L267
- 方法名:createStandingSign
- 源码定位:L267
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- type: WoodType
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createWallSign(WoodType type) @ L277
- 方法名:createWallSign
- 源码定位:L277
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- type: WoodType
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createCeilingHangingSign(WoodType type) @ L287
- 方法名:createCeilingHangingSign
- 源码定位:L287
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- type: WoodType
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createWallHangingSign(WoodType type) @ L298
- 方法名:createWallHangingSign
- 源码定位:L298
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- type: WoodType
说明:
TODO
private static void createSigns(BuiltInBlockModels.Builder builder, WoodType woodType, Block standing, Block wall, Block hanging, Block wallHanging) @ L308
- 方法名:createSigns
- 源码定位:L308
- 返回类型:void
- 修饰符:private static
参数:
- builder: BuiltInBlockModels.Builder
- woodType: WoodType
- standing: Block
- wall: Block
- hanging: Block
- wallHanging: Block
说明:
TODO
private static BlockModel.Unbaked createChest(Identifier texture, ChestType chestType, Direction facing) @ L315
- 方法名:createChest
- 源码定位:L315
- 返回类型:BlockModel.Unbaked
- 修饰符:private static
参数:
- texture: Identifier
- chestType: ChestType
- facing: Direction
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createSingletonChest(Identifier texture) @ L319
- 方法名:createSingletonChest
- 源码定位:L319
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- texture: Identifier
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createChest(MultiblockChestResources<Identifier> textures) @ L323
- 方法名:createChest
- 源码定位:L323
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- textures: MultiblockChestResources
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createXmasChest(MultiblockChestResources<Identifier> textures) @ L327
- 方法名:createXmasChest
- 源码定位:L327
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- textures: MultiblockChestResources
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createCopperGolem(WeatheringCopper.WeatherState weatherState) @ L340
- 方法名:createCopperGolem
- 源码定位:L340
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- weatherState: WeatheringCopper.WeatherState
说明:
TODO
private static BuiltInBlockModels.SpecialModelFactory createDecoratedPot() @ L350
- 方法名:createDecoratedPot
- 源码定位:L350
- 返回类型:BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- 无
说明:
TODO
private static BlockStateModelWrapper.Unbaked createBlockStateModelWrapper(BlockColors blockColors, BlockState blockState) @ L356
- 方法名:createBlockStateModelWrapper
- 源码定位:L356
- 返回类型:BlockStateModelWrapper.Unbaked
- 修饰符:private static
参数:
- blockColors: BlockColors
- blockState: BlockState
说明:
TODO
private static CompositeBlockModel.Unbaked combineSpecialAndBlockModels(BlockModel.Unbaked specialModel, BlockColors blockColors, BlockState blockState) @ L360
- 方法名:combineSpecialAndBlockModels
- 源码定位:L360
- 返回类型:CompositeBlockModel.Unbaked
- 修饰符:private static
参数:
- specialModel: BlockModel.Unbaked
- blockColors: BlockColors
- blockState: BlockState
说明:
TODO
private static SelectBlockModel.Unbaked createFlowerBedModel(BlockColors blockColors, BlockState blockState) @ L364
- 方法名:createFlowerBedModel
- 源码定位:L364
- 返回类型:SelectBlockModel.Unbaked
- 修饰符:private static
参数:
- blockColors: BlockColors
- blockState: BlockState
说明:
TODO
private static BlockModel.Unbaked createEnchantingTable() @ L378
- 方法名:createEnchantingTable
- 源码定位:L378
- 返回类型:BlockModel.Unbaked
- 修饰符:private static
参数:
- 无
说明:
TODO
private static <P extends Comparable<P>> BuiltInBlockModels.SpecialModelFactory specialModelWithPropertyDispatch(Property<P> property, Function<P,BlockModel.Unbaked> blockModel) @ L385
- 方法名:specialModelWithPropertyDispatch
- 源码定位:L385
- 返回类型:<P extends Comparable
> BuiltInBlockModels.SpecialModelFactory
- 修饰符:private static
参数:
- property: Property
- blockModel: Function<P,BlockModel.Unbaked>
说明:
TODO
private static <P1 extends Comparable<P1>,P2 extends Comparable<P2>> BuiltInBlockModels.SpecialModelFactory specialModelWithPropertyDispatch(Property<P1> property1, Property<P2> property2, BiFunction<P1,P2,BlockModel.Unbaked> blockModel) @ L394
- 方法名:specialModelWithPropertyDispatch
- 源码定位:L394
- 返回类型:<P1 extends Comparable
,P2 extends Comparable > BuiltInBlockModels.SpecialModelFactory - 修饰符:private static
参数:
- property1: Property
- property2: Property
- blockModel: BiFunction<P1,P2,BlockModel.Unbaked>
说明:
TODO
public static Map<BlockState,BlockModel.Unbaked> createBlockModels(BlockColors blockColors) @ L404
- 方法名:createBlockModels
- 源码定位:L404
- 返回类型:Map<BlockState,BlockModel.Unbaked>
- 修饰符:public static
参数:
- blockColors: BlockColors
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class BuiltInBlockModels {
private static void addDefaults(BuiltInBlockModels.Builder builder) {
createAir(builder, Blocks.AIR);
createAir(builder, Blocks.CAVE_AIR);
createAir(builder, Blocks.VOID_AIR);
createMobHeads(builder, SkullBlock.Types.SKELETON, Blocks.SKELETON_SKULL, Blocks.SKELETON_WALL_SKULL);
createMobHeads(builder, SkullBlock.Types.ZOMBIE, Blocks.ZOMBIE_HEAD, Blocks.ZOMBIE_WALL_HEAD);
createMobHeads(builder, SkullBlock.Types.CREEPER, Blocks.CREEPER_HEAD, Blocks.CREEPER_WALL_HEAD);
createMobHeads(builder, SkullBlock.Types.DRAGON, Blocks.DRAGON_HEAD, Blocks.DRAGON_WALL_HEAD);
createMobHeads(builder, SkullBlock.Types.PIGLIN, Blocks.PIGLIN_HEAD, Blocks.PIGLIN_WALL_HEAD);
createMobHeads(builder, SkullBlock.Types.WITHER_SKELETON, Blocks.WITHER_SKELETON_SKULL, Blocks.WITHER_SKELETON_WALL_SKULL);
builder.put(createPlayerHead(), Blocks.PLAYER_HEAD);
builder.put(createPlayerWallHead(), Blocks.PLAYER_WALL_HEAD);
createBanners(builder, DyeColor.WHITE, Blocks.WHITE_BANNER, Blocks.WHITE_WALL_BANNER);
createBanners(builder, DyeColor.ORANGE, Blocks.ORANGE_BANNER, Blocks.ORANGE_WALL_BANNER);
createBanners(builder, DyeColor.MAGENTA, Blocks.MAGENTA_BANNER, Blocks.MAGENTA_WALL_BANNER);
createBanners(builder, DyeColor.LIGHT_BLUE, Blocks.LIGHT_BLUE_BANNER, Blocks.LIGHT_BLUE_WALL_BANNER);
createBanners(builder, DyeColor.YELLOW, Blocks.YELLOW_BANNER, Blocks.YELLOW_WALL_BANNER);
createBanners(builder, DyeColor.LIME, Blocks.LIME_BANNER, Blocks.LIME_WALL_BANNER);
createBanners(builder, DyeColor.PINK, Blocks.PINK_BANNER, Blocks.PINK_WALL_BANNER);
createBanners(builder, DyeColor.GRAY, Blocks.GRAY_BANNER, Blocks.GRAY_WALL_BANNER);
createBanners(builder, DyeColor.LIGHT_GRAY, Blocks.LIGHT_GRAY_BANNER, Blocks.LIGHT_GRAY_WALL_BANNER);
createBanners(builder, DyeColor.CYAN, Blocks.CYAN_BANNER, Blocks.CYAN_WALL_BANNER);
createBanners(builder, DyeColor.PURPLE, Blocks.PURPLE_BANNER, Blocks.PURPLE_WALL_BANNER);
createBanners(builder, DyeColor.BLUE, Blocks.BLUE_BANNER, Blocks.BLUE_WALL_BANNER);
createBanners(builder, DyeColor.BROWN, Blocks.BROWN_BANNER, Blocks.BROWN_WALL_BANNER);
createBanners(builder, DyeColor.GREEN, Blocks.GREEN_BANNER, Blocks.GREEN_WALL_BANNER);
createBanners(builder, DyeColor.RED, Blocks.RED_BANNER, Blocks.RED_WALL_BANNER);
createBanners(builder, DyeColor.BLACK, Blocks.BLACK_BANNER, Blocks.BLACK_WALL_BANNER);
builder.put(createBed(DyeColor.WHITE), Blocks.WHITE_BED);
builder.put(createBed(DyeColor.ORANGE), Blocks.ORANGE_BED);
builder.put(createBed(DyeColor.MAGENTA), Blocks.MAGENTA_BED);
builder.put(createBed(DyeColor.LIGHT_BLUE), Blocks.LIGHT_BLUE_BED);
builder.put(createBed(DyeColor.YELLOW), Blocks.YELLOW_BED);
builder.put(createBed(DyeColor.LIME), Blocks.LIME_BED);
builder.put(createBed(DyeColor.PINK), Blocks.PINK_BED);
builder.put(createBed(DyeColor.GRAY), Blocks.GRAY_BED);
builder.put(createBed(DyeColor.LIGHT_GRAY), Blocks.LIGHT_GRAY_BED);
builder.put(createBed(DyeColor.CYAN), Blocks.CYAN_BED);
builder.put(createBed(DyeColor.PURPLE), Blocks.PURPLE_BED);
builder.put(createBed(DyeColor.BLUE), Blocks.BLUE_BED);
builder.put(createBed(DyeColor.BROWN), Blocks.BROWN_BED);
builder.put(createBed(DyeColor.GREEN), Blocks.GREEN_BED);
builder.put(createBed(DyeColor.RED), Blocks.RED_BED);
builder.put(createBed(DyeColor.BLACK), Blocks.BLACK_BED);
builder.put(createShulkerBox(), Blocks.SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.WHITE), Blocks.WHITE_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.ORANGE), Blocks.ORANGE_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.MAGENTA), Blocks.MAGENTA_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.LIGHT_BLUE), Blocks.LIGHT_BLUE_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.YELLOW), Blocks.YELLOW_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.LIME), Blocks.LIME_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.PINK), Blocks.PINK_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.GRAY), Blocks.GRAY_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.LIGHT_GRAY), Blocks.LIGHT_GRAY_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.CYAN), Blocks.CYAN_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.PURPLE), Blocks.PURPLE_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.BLUE), Blocks.BLUE_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.BROWN), Blocks.BROWN_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.GREEN), Blocks.GREEN_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.RED), Blocks.RED_SHULKER_BOX);
builder.put(createDyedShulkerBox(DyeColor.BLACK), Blocks.BLACK_SHULKER_BOX);
createSigns(builder, WoodType.OAK, Blocks.OAK_SIGN, Blocks.OAK_WALL_SIGN, Blocks.OAK_HANGING_SIGN, Blocks.OAK_WALL_HANGING_SIGN);
createSigns(builder, WoodType.SPRUCE, Blocks.SPRUCE_SIGN, Blocks.SPRUCE_WALL_SIGN, Blocks.SPRUCE_HANGING_SIGN, Blocks.SPRUCE_WALL_HANGING_SIGN);
createSigns(builder, WoodType.BIRCH, Blocks.BIRCH_SIGN, Blocks.BIRCH_WALL_SIGN, Blocks.BIRCH_HANGING_SIGN, Blocks.BIRCH_WALL_HANGING_SIGN);
createSigns(builder, WoodType.ACACIA, Blocks.ACACIA_SIGN, Blocks.ACACIA_WALL_SIGN, Blocks.ACACIA_HANGING_SIGN, Blocks.ACACIA_WALL_HANGING_SIGN);
createSigns(builder, WoodType.CHERRY, Blocks.CHERRY_SIGN, Blocks.CHERRY_WALL_SIGN, Blocks.CHERRY_HANGING_SIGN, Blocks.CHERRY_WALL_HANGING_SIGN);
createSigns(builder, WoodType.JUNGLE, Blocks.JUNGLE_SIGN, Blocks.JUNGLE_WALL_SIGN, Blocks.JUNGLE_HANGING_SIGN, Blocks.JUNGLE_WALL_HANGING_SIGN);
createSigns(
builder, WoodType.DARK_OAK, Blocks.DARK_OAK_SIGN, Blocks.DARK_OAK_WALL_SIGN, Blocks.DARK_OAK_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN
);
createSigns(
builder, WoodType.PALE_OAK, Blocks.PALE_OAK_SIGN, Blocks.PALE_OAK_WALL_SIGN, Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_WALL_HANGING_SIGN
);
createSigns(
builder, WoodType.MANGROVE, Blocks.MANGROVE_SIGN, Blocks.MANGROVE_WALL_SIGN, Blocks.MANGROVE_HANGING_SIGN, Blocks.MANGROVE_WALL_HANGING_SIGN
);
createSigns(builder, WoodType.BAMBOO, Blocks.BAMBOO_SIGN, Blocks.BAMBOO_WALL_SIGN, Blocks.BAMBOO_HANGING_SIGN, Blocks.BAMBOO_WALL_HANGING_SIGN);
createSigns(builder, WoodType.CRIMSON, Blocks.CRIMSON_SIGN, Blocks.CRIMSON_WALL_SIGN, Blocks.CRIMSON_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN);
createSigns(builder, WoodType.WARPED, Blocks.WARPED_SIGN, Blocks.WARPED_WALL_SIGN, Blocks.WARPED_HANGING_SIGN, Blocks.WARPED_WALL_HANGING_SIGN);
builder.put(createSingletonChest(ChestSpecialRenderer.ENDER_CHEST), Blocks.ENDER_CHEST);
builder.put(createXmasChest(ChestSpecialRenderer.REGULAR), Blocks.CHEST);
builder.put(createXmasChest(ChestSpecialRenderer.TRAPPED), Blocks.TRAPPED_CHEST);
builder.put(createChest(ChestSpecialRenderer.COPPER_UNAFFECTED), Blocks.COPPER_CHEST, Blocks.WAXED_COPPER_CHEST);
builder.put(createChest(ChestSpecialRenderer.COPPER_EXPOSED), Blocks.EXPOSED_COPPER_CHEST, Blocks.WAXED_EXPOSED_COPPER_CHEST);
builder.put(createChest(ChestSpecialRenderer.COPPER_WEATHERED), Blocks.WEATHERED_COPPER_CHEST, Blocks.WAXED_WEATHERED_COPPER_CHEST);
builder.put(createChest(ChestSpecialRenderer.COPPER_OXIDIZED), Blocks.OXIDIZED_COPPER_CHEST, Blocks.WAXED_OXIDIZED_COPPER_CHEST);
builder.put(createCopperGolem(WeatheringCopper.WeatherState.UNAFFECTED), Blocks.COPPER_GOLEM_STATUE, Blocks.WAXED_COPPER_GOLEM_STATUE);
builder.put(createCopperGolem(WeatheringCopper.WeatherState.EXPOSED), Blocks.EXPOSED_COPPER_GOLEM_STATUE, Blocks.WAXED_EXPOSED_COPPER_GOLEM_STATUE);
builder.put(
createCopperGolem(WeatheringCopper.WeatherState.WEATHERED), Blocks.WEATHERED_COPPER_GOLEM_STATUE, Blocks.WAXED_WEATHERED_COPPER_GOLEM_STATUE
);
builder.put(createCopperGolem(WeatheringCopper.WeatherState.OXIDIZED), Blocks.OXIDIZED_COPPER_GOLEM_STATUE, Blocks.WAXED_OXIDIZED_COPPER_GOLEM_STATUE);
builder.put(special(new BellSpecialRenderer.Unbaked()), Blocks.BELL);
builder.put(special(new ConduitSpecialRenderer.Unbaked(), ConduitRenderer.DEFAULT_TRANSFORMATION), Blocks.CONDUIT);
builder.put(createDecoratedPot(), Blocks.DECORATED_POT);
builder.put(createEnchantingTable(), Blocks.ENCHANTING_TABLE);
builder.put(special(new EndCubeSpecialRenderer.Unbaked(EndCubeSpecialRenderer.Type.GATEWAY)), Blocks.END_GATEWAY);
builder.put(special(new EndCubeSpecialRenderer.Unbaked(EndCubeSpecialRenderer.Type.PORTAL), TheEndPortalRenderer.TRANSFORMATION), Blocks.END_PORTAL);
builder.put(BuiltInBlockModels::createFlowerBedModel, Blocks.WILDFLOWERS, Blocks.PINK_PETALS);
}
private static void createAir(BuiltInBlockModels.Builder builder, Block block) {
builder.put(new EmptyBlockModel.Unbaked(), block);
}
private static BlockModel.Unbaked special(SpecialModelRenderer.Unbaked<?> model) {
return new SpecialBlockModelWrapper.Unbaked<>(model, Optional.empty());
}
private static BlockModel.Unbaked special(SpecialModelRenderer.Unbaked<?> model, Transformation transformation) {
return new SpecialBlockModelWrapper.Unbaked<>(model, Optional.of(transformation));
}
private static BuiltInBlockModels.SpecialModelFactory createMobHead(SkullBlock.Types type) {
return specialModelWithPropertyDispatch(
SkullBlock.ROTATION, rotation -> special(new SkullSpecialRenderer.Unbaked(type), SkullBlockRenderer.TRANSFORMATIONS.freeTransformations(rotation))
);
}
private static BuiltInBlockModels.SpecialModelFactory createMobWallHead(SkullBlock.Types type) {
return specialModelWithPropertyDispatch(
WallSkullBlock.FACING, facing -> special(new SkullSpecialRenderer.Unbaked(type), SkullBlockRenderer.TRANSFORMATIONS.wallTransformation(facing))
);
}
private static void createMobHeads(BuiltInBlockModels.Builder builder, SkullBlock.Types type, Block ground, Block wall) {
builder.put(createMobHead(type), ground);
builder.put(createMobWallHead(type), wall);
}
private static BuiltInBlockModels.SpecialModelFactory createPlayerHead() {
return specialModelWithPropertyDispatch(
PlayerHeadBlock.ROTATION,
rotation -> special(new PlayerHeadSpecialRenderer.Unbaked(), SkullBlockRenderer.TRANSFORMATIONS.freeTransformations(rotation))
);
}
private static BuiltInBlockModels.SpecialModelFactory createPlayerWallHead() {
return specialModelWithPropertyDispatch(
PlayerWallHeadBlock.FACING,
facing -> special(new PlayerHeadSpecialRenderer.Unbaked(), SkullBlockRenderer.TRANSFORMATIONS.wallTransformation(facing))
);
}
private static BuiltInBlockModels.SpecialModelFactory createBanner(DyeColor color) {
return specialModelWithPropertyDispatch(
BannerBlock.ROTATION,
rotation -> special(
new BannerSpecialRenderer.Unbaked(color, BannerBlock.AttachmentType.GROUND), BannerRenderer.TRANSFORMATIONS.freeTransformations(rotation)
)
);
}
private static BuiltInBlockModels.SpecialModelFactory createWallBanner(DyeColor color) {
return specialModelWithPropertyDispatch(
WallBannerBlock.FACING,
facing -> special(
new BannerSpecialRenderer.Unbaked(color, BannerBlock.AttachmentType.WALL), BannerRenderer.TRANSFORMATIONS.wallTransformation(facing)
)
);
}
private static void createBanners(BuiltInBlockModels.Builder builder, DyeColor dye, Block ground, Block wall) {
builder.put(createBanner(dye), ground);
builder.put(createWallBanner(dye), wall);
}
private static BuiltInBlockModels.SpecialModelFactory createBed(DyeColor color) {
return specialModelWithPropertyDispatch(
BedBlock.FACING, BedBlock.PART, (facing, part) -> special(new BedSpecialRenderer.Unbaked(color, part), BedRenderer.modelTransform(facing))
);
}
private static BuiltInBlockModels.SpecialModelFactory createShulkerBox() {
return specialModelWithPropertyDispatch(
ShulkerBoxBlock.FACING, facing -> special(new ShulkerBoxSpecialRenderer.Unbaked(), ShulkerBoxRenderer.modelTransform(facing))
);
}
private static BuiltInBlockModels.SpecialModelFactory createDyedShulkerBox(DyeColor color) {
return specialModelWithPropertyDispatch(
ShulkerBoxBlock.FACING, facing -> special(new ShulkerBoxSpecialRenderer.Unbaked(color), ShulkerBoxRenderer.modelTransform(facing))
);
}
private static BuiltInBlockModels.SpecialModelFactory createStandingSign(WoodType type) {
return specialModelWithPropertyDispatch(
StandingSignBlock.ROTATION,
rotation -> special(
new StandingSignSpecialRenderer.Unbaked(type, PlainSignBlock.Attachment.GROUND),
StandingSignRenderer.TRANSFORMATIONS.freeTransformations(rotation).body()
)
);
}
private static BuiltInBlockModels.SpecialModelFactory createWallSign(WoodType type) {
return specialModelWithPropertyDispatch(
WallSignBlock.FACING,
facing -> special(
new StandingSignSpecialRenderer.Unbaked(type, PlainSignBlock.Attachment.WALL),
StandingSignRenderer.TRANSFORMATIONS.wallTransformation(facing).body()
)
);
}
private static BuiltInBlockModels.SpecialModelFactory createCeilingHangingSign(WoodType type) {
return specialModelWithPropertyDispatch(
CeilingHangingSignBlock.ROTATION,
CeilingHangingSignBlock.ATTACHED,
(rotation, attached) -> special(
new HangingSignSpecialRenderer.Unbaked(type, CeilingHangingSignBlock.getAttachmentPoint(attached)),
HangingSignRenderer.TRANSFORMATIONS.freeTransformations(rotation).body()
)
);
}
private static BuiltInBlockModels.SpecialModelFactory createWallHangingSign(WoodType type) {
return specialModelWithPropertyDispatch(
WallHangingSignBlock.FACING,
facing -> special(
new HangingSignSpecialRenderer.Unbaked(type, HangingSignBlock.Attachment.WALL),
HangingSignRenderer.TRANSFORMATIONS.wallTransformation(facing).body()
)
);
}
private static void createSigns(BuiltInBlockModels.Builder builder, WoodType woodType, Block standing, Block wall, Block hanging, Block wallHanging) {
builder.put(createStandingSign(woodType), standing);
builder.put(createWallSign(woodType), wall);
builder.put(createCeilingHangingSign(woodType), hanging);
builder.put(createWallHangingSign(woodType), wallHanging);
}
private static BlockModel.Unbaked createChest(Identifier texture, ChestType chestType, Direction facing) {
return special(new ChestSpecialRenderer.Unbaked(texture, chestType), ChestRenderer.modelTransformation(facing));
}
private static BuiltInBlockModels.SpecialModelFactory createSingletonChest(Identifier texture) {
return specialModelWithPropertyDispatch(ChestBlock.FACING, facing -> createChest(texture, ChestType.SINGLE, facing));
}
private static BuiltInBlockModels.SpecialModelFactory createChest(MultiblockChestResources<Identifier> textures) {
return specialModelWithPropertyDispatch(ChestBlock.FACING, ChestBlock.TYPE, (facing, type) -> createChest(textures.select(type), type, facing));
}
private static BuiltInBlockModels.SpecialModelFactory createXmasChest(MultiblockChestResources<Identifier> textures) {
return specialModelWithPropertyDispatch(
ChestBlock.FACING,
ChestBlock.TYPE,
(facing, type) -> new ConditionalBlockModel.Unbaked(
Optional.empty(),
new IsXmas(),
createChest(ChestSpecialRenderer.CHRISTMAS.select(type), type, facing),
createChest(textures.select(type), type, facing)
)
);
}
private static BuiltInBlockModels.SpecialModelFactory createCopperGolem(WeatheringCopper.WeatherState weatherState) {
return specialModelWithPropertyDispatch(
CopperGolemStatueBlock.FACING,
CopperGolemStatueBlock.POSE,
(facing, pose) -> special(
new CopperGolemStatueSpecialRenderer.Unbaked(weatherState, pose), CopperGolemStatueBlockRenderer.modelTransformation(facing)
)
);
}
private static BuiltInBlockModels.SpecialModelFactory createDecoratedPot() {
return specialModelWithPropertyDispatch(
DecoratedPotBlock.HORIZONTAL_FACING, facing -> special(new DecoratedPotSpecialRenderer.Unbaked(), DecoratedPotRenderer.modelTransformation(facing))
);
}
private static BlockStateModelWrapper.Unbaked createBlockStateModelWrapper(BlockColors blockColors, BlockState blockState) {
return new BlockStateModelWrapper.Unbaked(blockState, blockColors.getTintSources(blockState), Optional.empty());
}
private static CompositeBlockModel.Unbaked combineSpecialAndBlockModels(BlockModel.Unbaked specialModel, BlockColors blockColors, BlockState blockState) {
return new CompositeBlockModel.Unbaked(createBlockStateModelWrapper(blockColors, blockState), specialModel, Optional.empty());
}
private static SelectBlockModel.Unbaked createFlowerBedModel(BlockColors blockColors, BlockState blockState) {
List<BlockTintSource> tintSources = blockColors.getTintSources(blockState);
Transformation customFlowerTransform = new Transformation(new Vector3f(0.25F, 0.0F, 0.25F), null, null, null);
BlockStateModelWrapper.Unbaked customTransformModel = new BlockStateModelWrapper.Unbaked(blockState, tintSources, Optional.of(customFlowerTransform));
BlockStateModelWrapper.Unbaked normalTransformModel = new BlockStateModelWrapper.Unbaked(blockState, tintSources, Optional.empty());
return new SelectBlockModel.Unbaked(
Optional.empty(),
new SelectBlockModel.UnbakedSwitch<>(
new DisplayContext(), List.of(new SelectBlockModel.SwitchCase<>(List.of(CopperGolemRenderer.BLOCK_DISPLAY_CONTEXT), customTransformModel))
),
Optional.of(normalTransformModel)
);
}
private static BlockModel.Unbaked createEnchantingTable() {
return special(
new BookSpecialRenderer.Unbaked(0.0F, 0.0F, 0.0F),
new Transformation(new Vector3f(0.5F, 0.8125F, 0.5F), Axis.ZP.rotationDegrees(180.0F), null, Axis.XP.rotationDegrees(90.0F))
);
}
private static <P extends Comparable<P>> BuiltInBlockModels.SpecialModelFactory specialModelWithPropertyDispatch(
Property<P> property, Function<P, BlockModel.Unbaked> blockModel
) {
return state -> {
P value = state.getValue(property);
return blockModel.apply(value);
};
}
private static <P1 extends Comparable<P1>, P2 extends Comparable<P2>> BuiltInBlockModels.SpecialModelFactory specialModelWithPropertyDispatch(
Property<P1> property1, Property<P2> property2, BiFunction<P1, P2, BlockModel.Unbaked> blockModel
) {
return state -> {
P1 value1 = state.getValue(property1);
P2 value2 = state.getValue(property2);
return blockModel.apply(value1, value2);
};
}
public static Map<BlockState, BlockModel.Unbaked> createBlockModels(BlockColors blockColors) {
BuiltInBlockModels.Builder builder = new BuiltInBlockModels.Builder(blockColors);
addDefaults(builder);
return builder.build();
}
@OnlyIn(Dist.CLIENT)
private static class Builder {
private final BlockColors blockColors;
private final Map<BlockState, BlockModel.Unbaked> result = new HashMap<>();
private Builder(BlockColors blockColors) {
this.blockColors = blockColors;
}
private void put(BuiltInBlockModels.ModelFactory factory, Block a, Block b) {
this.put(factory, a);
this.put(factory, b);
}
private void put(BlockModel.Unbaked specialModel, Block block) {
this.put((BuiltInBlockModels.SpecialModelFactory)var1 -> specialModel, block);
}
private void put(BuiltInBlockModels.ModelFactory factory, Block block) {
for (BlockState blockState : block.getStateDefinition().getPossibleStates()) {
this.result.put(blockState, factory.create(this.blockColors, blockState));
}
}
public Map<BlockState, BlockModel.Unbaked> build() {
return Map.copyOf(this.result);
}
}
@FunctionalInterface
@OnlyIn(Dist.CLIENT)
private interface ModelFactory {
BlockModel.Unbaked create(BlockColors colors, BlockState state);
}
@FunctionalInterface
@OnlyIn(Dist.CLIENT)
private interface SpecialModelFactory extends BuiltInBlockModels.ModelFactory {
@Override
default BlockModel.Unbaked create(BlockColors colors, BlockState state) {
return BuiltInBlockModels.combineSpecialAndBlockModels(this.createSpecial(state), colors, state);
}
BlockModel.Unbaked createSpecial(BlockState state);
}
}引用的其他类
-
- 引用位置:
参数/构造调用 - 关联成员:
Transformation()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
SelectBlockModel.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
BlockStateModelWrapper.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
CompositeBlockModel.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
ConditionalBlockModel.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
EmptyBlockModel.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
IsXmas()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
DisplayContext()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BedRenderer.modelTransform()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ChestRenderer.modelTransformation()
- 引用位置:
-
CopperGolemStatueBlockRenderer
- 引用位置:
方法调用 - 关联成员:
CopperGolemStatueBlockRenderer.modelTransformation()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
DecoratedPotRenderer.modelTransformation()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ShulkerBoxRenderer.modelTransform()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
BannerSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
BedSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
BellSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
BookSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
ChestSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
ConduitSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
CopperGolemStatueSpecialRenderer
- 引用位置:
方法调用/构造调用 - 关联成员:
CopperGolemStatueSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
DecoratedPotSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
EndCubeSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
HangingSignSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
PlayerHeadSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
ShulkerBoxSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
SkullSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
StandingSignSpecialRenderer.Unbaked(), Unbaked()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CeilingHangingSignBlock.getAttachmentPoint()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: