2134 lines
56 KiB
JavaScript
2134 lines
56 KiB
JavaScript
// priority: 0
|
||
|
||
const defaults = global.defaults;
|
||
const setBlockProps = global.setBlockProps;
|
||
|
||
const COLORS = global.COLORS;
|
||
const JSON_ASSETS = global.JSON_ASSETS;
|
||
const LOG_PREFIX = global.LOG_PREFIX;
|
||
|
||
/** 模组 ID */
|
||
const MOD_ID = 'wheat_plus';
|
||
|
||
/** 方块模型、纹理文件基础短路径 */
|
||
const P_BLOCK = `${MOD_ID}:block`;
|
||
|
||
/** 方块模型文件基础长路径 */
|
||
const P_BLOCK_MODEL = `${MOD_ID}:models/block`;
|
||
|
||
/** 方块状态文件基础长路径 */
|
||
const P_BLOCK_STATE = `${MOD_ID}:blockstates`;
|
||
|
||
/** 方块透明纹理文件路径 */
|
||
const P_BLOCK_TRANSPARENT = `${P_BLOCK}/common/transparent`;
|
||
|
||
/** 物品模型、纹理文件基础短路径*/
|
||
const P_ITEM = `${MOD_ID}:item`;
|
||
|
||
/** 物品模型文件基础长路径 */
|
||
const P_ITEM_MODEL = `${MOD_ID}:models/item`;
|
||
|
||
/** 属于创造模式标签页 wheat_plus:blocks 的方块 ID 列表 */
|
||
const TAB_BLOCKS_ITEMS = [];
|
||
|
||
/** 属于创造模式标签页 wheat_plus:minecart 的方块 ID 列表 */
|
||
const TAB_MINECART_ITEMS = [];
|
||
|
||
/** 属于创造模式标签页 wheat_plus:roads 的方块 ID 列表 */
|
||
const TAB_ROADS_ITEMS = [];
|
||
|
||
console.info(`${LOG_PREFIX} 处理 ${MOD_ID} 相关内容`);
|
||
|
||
/**
|
||
* @description 获取栅栏方块状态 JSON
|
||
* @param {string} postPath 栅栏 post 模型短路径
|
||
* @param {string} sidePath 栅栏 side 模型短路径
|
||
*/
|
||
function getFenceBlockstateJson(postPath, sidePath) {
|
||
return {
|
||
multipart: [
|
||
{
|
||
apply: { model: postPath, uvlock: false, y: 0 },
|
||
},
|
||
{
|
||
apply: { model: sidePath, uvlock: true, y: 0 },
|
||
when: { north: 'true' },
|
||
},
|
||
{
|
||
apply: { model: sidePath, uvlock: true, y: 90 },
|
||
when: { east: 'true' },
|
||
},
|
||
{
|
||
apply: { model: sidePath, uvlock: true, y: 180 },
|
||
when: { south: 'true' },
|
||
},
|
||
{
|
||
apply: { model: sidePath, uvlock: true, y: 270 },
|
||
when: { west: 'true' },
|
||
},
|
||
],
|
||
};
|
||
}
|
||
|
||
/**
|
||
* @description 获取活板门方块状态 JSON
|
||
* @param {string} bottomPath 活板门 bottom 模型短路径
|
||
* @param {string} topPath 活板门 top 模型短路径
|
||
* @param {string} openPath 活板门 open 模型短路径
|
||
*/
|
||
function getTrapdoorBlockstateJson(bottomPath, topPath, openPath) {
|
||
return {
|
||
variants: {
|
||
'facing=east,half=bottom,open=false': { model: bottomPath, y: 0 },
|
||
'facing=east,half=bottom,open=true': { model: bottomPath, y: 0 },
|
||
'facing=east,half=top,open=false': { model: topPath, y: 180 },
|
||
'facing=east,half=top,open=true': { model: openPath, y: 180 },
|
||
'facing=north,half=bottom,open=false': { model: bottomPath, y: 0 },
|
||
'facing=north,half=bottom,open=true': { model: bottomPath, y: 0 },
|
||
'facing=north,half=top,open=false': { model: topPath, y: 90 },
|
||
'facing=north,half=top,open=true': { model: openPath, y: 90 },
|
||
'facing=south,half=bottom,open=false': { model: bottomPath, y: 0 },
|
||
'facing=south,half=bottom,open=true': { model: bottomPath, y: 0 },
|
||
'facing=south,half=top,open=false': { model: topPath, y: 270 },
|
||
'facing=south,half=top,open=true': { model: openPath, y: 270 },
|
||
'facing=west,half=bottom,open=false': { model: bottomPath, y: 0 },
|
||
'facing=west,half=bottom,open=true': { model: bottomPath, y: 0 },
|
||
'facing=west,half=top,open=false': { model: topPath, y: 0 },
|
||
'facing=west,half=top,open=true': { model: openPath, y: 0 },
|
||
},
|
||
};
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 砖块
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockBrick(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 砖块 - 开始`);
|
||
|
||
let blockList = [
|
||
{ name: 'brick_a', texture: 'brick/brick_a' },
|
||
{ name: 'brick_b', texture: 'brick/brick_b' },
|
||
{ name: 'brick_c', texture: 'brick/brick_c' },
|
||
{ name: 'brick_d', texture: 'brick/brick_d' },
|
||
];
|
||
|
||
blockList.forEach((config) => {
|
||
|
||
let id = `${MOD_ID}:${config.name}`;
|
||
let block = event.create(id);
|
||
|
||
TAB_BLOCKS_ITEMS.push(id);
|
||
|
||
setBlockProps(block, {
|
||
displayName: '砖块',
|
||
textureAll: `${P_BLOCK}/${config.texture}`,
|
||
});
|
||
|
||
});
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 砖块 - 完成`);
|
||
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 纯色方块
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockColor(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 纯色方块 - 开始`);
|
||
|
||
let blockList = [
|
||
{
|
||
name: 'color_colorful_a',
|
||
label: '彩色方块(发光)',
|
||
color: null,
|
||
grow: true,
|
||
texture: 'common/color_colorful_a',
|
||
},
|
||
{
|
||
name: 'color_semi_transparent_white',
|
||
label: '透明方块(半透明白色)',
|
||
color: [255, 255, 255, 0],
|
||
grow: false,
|
||
texture: 'common/color_semi_transparent',
|
||
},
|
||
{
|
||
name: 'color_semi_transparent_black',
|
||
label: '透明方块(半透明黑色)',
|
||
color: [0, 0, 0, 0],
|
||
grow: false,
|
||
texture: 'common/color_semi_transparent',
|
||
},
|
||
{
|
||
name: 'color_white_grow',
|
||
label: '纯色方块(白色,发光)',
|
||
color: [255, 255, 255, 0],
|
||
grow: true,
|
||
},
|
||
{
|
||
name: 'color_blue_grow',
|
||
label: '纯色方块(蓝色,发光)',
|
||
color: [0, 0, 255, 0],
|
||
grow: true,
|
||
},
|
||
{
|
||
name: 'color_green_grow',
|
||
label: '纯色方块(绿色,发光)',
|
||
color: [0, 255, 0, 0],
|
||
grow: true,
|
||
},
|
||
{
|
||
name: 'color_red_grow',
|
||
label: '纯色方块(红色)',
|
||
color: [255, 0, 0, 0],
|
||
grow: true,
|
||
},
|
||
{
|
||
name: 'color_black',
|
||
label: '纯色方块(黑色)',
|
||
color: [0, 0, 0, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_white',
|
||
label: '纯色方块(白色)',
|
||
color: [255, 255, 255, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_blue',
|
||
label: '纯色方块(蓝色)',
|
||
color: [0, 0, 255, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_green',
|
||
label: '纯色方块(绿色)',
|
||
color: [0, 255, 0, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_red',
|
||
label: '纯色方块(红色)',
|
||
color: [255, 0, 0, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_yellow',
|
||
label: '纯色方块(黄色)',
|
||
color: [255, 255, 0, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_39c5bb',
|
||
label: '纯色方块(#39C5BB)',
|
||
color: [57, 197, 187, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_66ccff',
|
||
label: '纯色方块(#66CCFF)',
|
||
color: [102, 204, 255, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_one',
|
||
label: '纯色方块(广州地铁一号线,#F3D03E)',
|
||
color: [243, 208, 62, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_two',
|
||
label: '纯色方块(广州地铁二号线,#00629B)',
|
||
color: [0, 98, 155, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_three',
|
||
label: '纯色方块(广州地铁三号线,#ECA154)',
|
||
color: [236, 161, 84, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_four',
|
||
label: '纯色方块(广州地铁四号线,#00843D)',
|
||
color: [0, 132, 61, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_five',
|
||
label: '纯色方块(广州地铁五号线,#C5003E)',
|
||
color: [197, 0, 62, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_six',
|
||
label: '纯色方块(广州地铁六号线,#80225F)',
|
||
color: [128, 34, 95, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_seven',
|
||
label: '纯色方块(广州地铁七号线,#97D700)',
|
||
color: [151, 215, 0, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_eight',
|
||
label: '纯色方块(广州地铁八号线,#008C95)',
|
||
color: [0, 140, 149, 0],
|
||
grow: false,
|
||
},
|
||
{
|
||
name: 'color_gz_line_nine',
|
||
label: '纯色方块(广州地铁九号线,#71CC98)',
|
||
color: [113, 204, 152, 0],
|
||
grow: false,
|
||
},
|
||
];
|
||
|
||
let textureGrow = `${P_BLOCK}/common/color_grow`;
|
||
let textureNormal = `${P_BLOCK}/common/color_normal`;
|
||
|
||
blockList.forEach((config) => {
|
||
|
||
let id = `${MOD_ID}:${config.name}`;
|
||
let block = event.create(id);
|
||
let colorCfg = config.color;
|
||
let isGrow = config.grow;
|
||
let texture = config.texture;
|
||
|
||
TAB_BLOCKS_ITEMS.push(id);
|
||
|
||
setBlockProps(block, {
|
||
displayName: config.label,
|
||
isSolid: false,
|
||
lightLevel: (isGrow ? 1 : 0),
|
||
renderType: 'translucent',
|
||
textureAll: (texture ? `${P_BLOCK}/${texture}` : (isGrow ? textureGrow : textureNormal)),
|
||
});
|
||
|
||
if (colorCfg) {
|
||
block.color(0, Color.rgba.apply(Color, colorCfg));
|
||
block.item((item) => {
|
||
item.color(0, Color.rgba.apply(Color, colorCfg));
|
||
});
|
||
}
|
||
|
||
});
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 纯色方块 - 完成`);
|
||
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 常规
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockCommon(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 常规 - 开始`);
|
||
|
||
let blockList = [
|
||
// -- 普通方块 --
|
||
// {
|
||
// name: 'barrier_gate_a',
|
||
// label: '道闸',
|
||
// blockstate: getTrapdoorBlockstateJson(
|
||
// `${P_BLOCK}/common/barrier_gate_a_base`,
|
||
// `${P_BLOCK}/common/barrier_gate_a_closed`,
|
||
// `${P_BLOCK}/common/barrier_gate_a_opened`,
|
||
// ),
|
||
// box: null,
|
||
// model: '',
|
||
// texture: 'minecraft:block/yellow_concrete',
|
||
// type: 'trapdoor',
|
||
// },
|
||
{
|
||
name: 'carton_a',
|
||
label: '纸箱',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: '',
|
||
textureParticle: 'common/carton_a_ud',
|
||
textureSideNS: 'common/carton_a_ns',
|
||
textureSideWE: 'common/carton_a_we',
|
||
textureUpDown: 'common/carton_a_ud',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'crash_barriar_a',
|
||
label: '防撞墩(石头)',
|
||
blockstate: null,
|
||
box: [0, 0, 3, 16, 14, 13, true],
|
||
model: 'common/crash_barriar_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'crate_a',
|
||
label: '板条箱',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: 'common/crate_a',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'gravel_slab',
|
||
label: '沙砾半砖',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/gravel',
|
||
type: 'slab',
|
||
},
|
||
{
|
||
name: 'gravel_stairs',
|
||
label: '沙砾楼梯',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/gravel',
|
||
type: 'stairs',
|
||
},
|
||
{
|
||
name: 'isolation_pile_a',
|
||
label: '隔离桩',
|
||
blockstate: null,
|
||
box: [5, 0, 5, 11, 16, 11, true],
|
||
model: 'common/isolation_pile_a',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'oak_leaves_wall',
|
||
label: '橡木树叶墙',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: `common/tree_oak_leaves`,
|
||
type: 'wall',
|
||
},
|
||
{
|
||
name: 'pole_a_horizon',
|
||
label: '杆子(水平)',
|
||
blockstate: getFenceBlockstateJson(
|
||
`${P_BLOCK}/pole/pole_a_horizon_post`,
|
||
`${P_BLOCK}/pole/pole_a_horizon_side`,
|
||
),
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/light_gray_concrete',
|
||
type: 'fence',
|
||
},
|
||
{
|
||
name: 'pole_a_vertical',
|
||
label: '杆子(垂直)',
|
||
blockstate: getFenceBlockstateJson(
|
||
`${P_BLOCK}/pole/pole_a_vertical_post`,
|
||
`${P_BLOCK}/pole/pole_a_vertical_side`,
|
||
),
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/light_gray_concrete',
|
||
type: 'fence',
|
||
},
|
||
{
|
||
name: 'rail_signal_a_main_green',
|
||
label: '信号灯(绿灯)',
|
||
blockstate: null,
|
||
box: [4, 0, 4, 12, 16, 12, true],
|
||
model: 'rail_signal/signal_a_main_green',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_signal_a_main_red',
|
||
label: '信号灯(红灯)',
|
||
blockstate: null,
|
||
box: [4, 0, 4, 12, 16, 12, true],
|
||
model: 'rail_signal/signal_a_main_red',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_signal_a_pole',
|
||
label: '信号灯(杆子)',
|
||
blockstate: null,
|
||
box: [6, 0, 6, 10, 16, 10, true],
|
||
model: 'rail_signal/signal_a_pole',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_a_black',
|
||
label: '指示牌(黑色)',
|
||
blockstate: getFenceBlockstateJson(
|
||
`${P_BLOCK}/rail_transit_sign/sign_a_black_post`,
|
||
`${P_BLOCK}/rail_transit_sign/sign_a_black_side`,
|
||
),
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/black_concrete',
|
||
type: 'fence',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_a_white',
|
||
label: '指示牌(白色)',
|
||
blockstate: getFenceBlockstateJson(
|
||
`${P_BLOCK}/rail_transit_sign/sign_a_white_post`,
|
||
`${P_BLOCK}/rail_transit_sign/sign_a_white_side`,
|
||
),
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/white_concrete',
|
||
type: 'fence',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_b',
|
||
label: '指示牌',
|
||
blockstate: null,
|
||
box: [0, 0, 6, 16, 16, 10, true],
|
||
model: 'rail_transit_sign/sign_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_a',
|
||
label: '指示牌字符(AA)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_b',
|
||
label: '指示牌字符(B)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_c',
|
||
label: '指示牌字符(C)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_d',
|
||
label: '指示牌字符(D)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_e',
|
||
label: '指示牌字符(E)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_e',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_f',
|
||
label: '指示牌字符(F)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_f',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_entrance_a',
|
||
label: '指示牌字符(进站)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_entrance_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_exit_a',
|
||
label: '指示牌字符(出口)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_exit_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'rail_transit_sign_char_exit_b',
|
||
label: '指示牌字符(出站)',
|
||
blockstate: null,
|
||
box: [0, 0, 21, 16, 16, 22, true],
|
||
model: 'rail_transit_sign/char_exit_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'real_wooden_ladder_bottom',
|
||
label: '木制梯子(下部分)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 8, true],
|
||
model: 'common/real_wooden_ladder_bottom',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'real_wooden_ladder_top',
|
||
label: '木制梯子(上部分)',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 16, 16, 16, true],
|
||
model: 'common/real_wooden_ladder_top',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'road_sign_a_ns',
|
||
label: '路牌(NS)',
|
||
blockstate: null,
|
||
box: [6, 0, -16, 10, 16, 32, true],
|
||
model: 'road_sign/road_sign_a_ns',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'road_sign_a_we',
|
||
label: '路牌(WE)',
|
||
blockstate: null,
|
||
box: [-16, 0, 6, 32, 16, 10, true],
|
||
model: 'road_sign/road_sign_a_we',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'road_sign_a_pole',
|
||
label: '路牌(杆子)',
|
||
blockstate: null,
|
||
box: [5, -16, 5, 11, 32, 11, true],
|
||
model: 'road_sign/road_sign_a_pole',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'station_sign_a',
|
||
label: '站牌',
|
||
blockstate: null,
|
||
box: [0, 0, 6, 16, 16, 10, true],
|
||
model: 'common/station_sign_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'statue_player_alex',
|
||
label: '模型(Alex)',
|
||
blockstate: null,
|
||
box: [0, 0, 5, 16, 32, 11, true],
|
||
model: 'statue/player_alex',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'statue_player_steve',
|
||
label: '模型(Steve)',
|
||
blockstate: null,
|
||
box: [0, 0, 5, 16, 32, 11, true],
|
||
model: 'statue/player_steve',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'ticket_machine_a',
|
||
label: '售票机',
|
||
blockstate: null,
|
||
box: [3, 0, 6, 13, 30, 16, true],
|
||
model: 'common/ticket_machine_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'traffic_light_a_pedestrian_ns',
|
||
label: '人行道红绿灯(NS)',
|
||
blockstate: null,
|
||
box: [0, 0, 10, 16, 16, 16, true],
|
||
model: 'traffic_light/traffic_light_a_pedestrian_ns',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'traffic_light_a_pedestrian_we',
|
||
label: '人行道红绿灯(WE)',
|
||
blockstate: null,
|
||
box: [0, 0, 10, 16, 16, 16, true],
|
||
model: 'traffic_light/traffic_light_a_pedestrian_we',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'traffic_light_a_traffic_h_ns',
|
||
label: '交通红绿灯(水平,NS)',
|
||
blockstate: null,
|
||
box: [0, 0, 10, 16, 16, 16, true],
|
||
model: 'traffic_light/traffic_light_a_traffic_h_ns',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'traffic_light_a_traffic_h_we',
|
||
label: '交通红绿灯(水平,WE)',
|
||
blockstate: null,
|
||
box: [0, 0, 10, 16, 16, 16, true],
|
||
model: 'traffic_light/traffic_light_a_traffic_h_we',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'traffic_light_a_traffic_v_ns',
|
||
label: '交通红绿灯(垂直,NS)',
|
||
blockstate: null,
|
||
box: [0, 0, 10, 16, 16, 16, true],
|
||
model: 'traffic_light/traffic_light_a_traffic_v_ns',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'traffic_light_a_traffic_v_we',
|
||
label: '交通红绿灯(垂直,WE)',
|
||
blockstate: null,
|
||
box: [0, 0, 10, 16, 16, 16, true],
|
||
model: 'traffic_light/traffic_light_a_traffic_v_we',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
// -- 建筑方块 --
|
||
{
|
||
name: 'building_brick_a',
|
||
label: '砖块(大三角)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'building/building_brick_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_a_half_down',
|
||
label: '砖块(大三角,下半部分)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 8, 16, true],
|
||
model: 'building/building_brick_a_half_down',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_a_half_up',
|
||
label: '砖块(大三角,上半部分)',
|
||
blockstate: null,
|
||
box: [0, 8, 0, 16, 16, 16, true],
|
||
model: 'building/building_brick_a_half_up',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_b',
|
||
label: '砖块(小三角)',
|
||
blockstate: null,
|
||
box: [8, 0, 8, 16, 16, 16, true],
|
||
model: 'building/building_brick_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_c',
|
||
label: '砖块(缺一角)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'building/building_brick_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_d',
|
||
label: '砖块(砖块,1/4)',
|
||
blockstate: null,
|
||
box: [0, 0, 12, 16, 16, 16, true],
|
||
model: 'building/building_brick_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_d_tall',
|
||
label: '砖块(砖块,1/4,高)',
|
||
blockstate: null,
|
||
box: [0, 0, 12, 16, 24, 16, true],
|
||
model: 'building/building_brick_d_tall',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_e',
|
||
label: '砖块(青色陶瓦,1/4)',
|
||
blockstate: null,
|
||
box: [0, 0, 12, 16, 16, 16, true],
|
||
model: 'building/building_brick_e',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_brick_e_tall',
|
||
label: '砖块(青色陶瓦,1/4,高)',
|
||
blockstate: null,
|
||
box: [0, 0, 12, 16, 24, 16, true],
|
||
model: 'building/building_brick_e_tall',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_cover_a',
|
||
label: '井盖',
|
||
blockstate: null,
|
||
box: [0, 13, 0, 16, 15, 16, true],
|
||
model: 'building/building_cover_a',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'building_fence_a_bottom',
|
||
label: '围栏(下)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 32, 16, true],
|
||
model: 'building/building_fence_a_bottom',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_fence_a_top',
|
||
label: '围栏(上)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 32, 16, true],
|
||
model: 'building/building_fence_a_top',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_fence_b',
|
||
label: '白色栅栏',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 16, 16, 9, true],
|
||
model: 'building/building_fence_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_fence_b_corner_inner',
|
||
label: '白色栅栏(角落,向内)',
|
||
blockstate: null,
|
||
box: [6, 0, 0, 16, 16, 10, true],
|
||
model: 'building/building_fence_b_corner_inner',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_fence_b_corner_outer',
|
||
label: '白色栅栏(角落,向外)',
|
||
blockstate: null,
|
||
box: [0, 0, 6, 10, 16, 16, true],
|
||
model: 'building/building_fence_b_corner_outer',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_fence_c_black',
|
||
label: '黑色栅栏',
|
||
blockstate: getFenceBlockstateJson(
|
||
`${P_BLOCK}/building/building_fence_c_black_post`,
|
||
`${P_BLOCK}/building/building_fence_c_black_side`,
|
||
),
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/black_concrete',
|
||
type: 'fence',
|
||
},
|
||
{
|
||
name: 'building_fence_c_white',
|
||
label: '白色栅栏',
|
||
blockstate: getFenceBlockstateJson(
|
||
`${P_BLOCK}/building/building_fence_c_white_post`,
|
||
`${P_BLOCK}/building/building_fence_c_white_side`,
|
||
),
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/white_concrete',
|
||
type: 'fence',
|
||
},
|
||
{
|
||
name: 'building_ground_a',
|
||
label: '地面(红色混凝土 + 磨制闪长岩)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'building/building_ground_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_iron_pole_a',
|
||
label: '铁杆',
|
||
blockstate: null,
|
||
box: [6, 0, 6, 10, 16, 10, true],
|
||
model: 'building/building_iron_pole_a',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'building_misc_a',
|
||
label: '石英片',
|
||
blockstate: null,
|
||
box: [0, 8, 14, 16, 16, 16, true],
|
||
model: 'building/building_misc_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_misc_b',
|
||
label: '石英块',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'building/building_misc_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_misc_c',
|
||
label: '石英块',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'building/building_misc_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_misc_d',
|
||
label: '石英块',
|
||
blockstate: null,
|
||
box: [0, 8, 8, 16, 16, 16, true],
|
||
model: 'building/building_misc_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_pillar_a',
|
||
label: '柱子',
|
||
blockstate: null,
|
||
box: [1, 0, 1, 15, 16, 15, true],
|
||
model: 'building/building_pillar_a',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'building_pillar_a_tall',
|
||
label: '柱子(高)',
|
||
blockstate: null,
|
||
box: [1, 0, 1, 15, 24, 15, true],
|
||
model: 'building/building_pillar_a_tall',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'building_pillar_b',
|
||
label: '粗柱子',
|
||
blockstate: null,
|
||
box: [-8, 0, -8, 24, 16, 24, true],
|
||
model: 'building/building_pillar_b',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'building_pillar_b_tall',
|
||
label: '粗柱子(高)',
|
||
blockstate: null,
|
||
box: [-8, 0, -8, 24, 24, 24, true],
|
||
model: 'building/building_pillar_b_tall',
|
||
texture: '',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'building_quartz_vertical_slab',
|
||
label: '垂直石英台阶',
|
||
blockstate: null,
|
||
box: [0, 0, 8, 16, 16, 16, true],
|
||
model: 'building/building_quartz_vertical_slab',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_a',
|
||
label: '铁扶手',
|
||
blockstate: null,
|
||
box: [0, 6, 6, 16, 10, 10, true],
|
||
model: 'building/building_rail_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_b',
|
||
label: '铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 6, 16, 10, 10, true],
|
||
model: 'building/building_rail_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_c',
|
||
label: '铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 6, 10, 10, 10, true],
|
||
model: 'building/building_rail_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_d',
|
||
label: '铁扶手',
|
||
blockstate: null,
|
||
box: [0, 6, 0, 10, 10, 10, true],
|
||
model: 'building/building_rail_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_e',
|
||
label: '铁扶手(斜向)',
|
||
blockstate: null,
|
||
box: [-3, 6, 0, 10, 10, 15, true],
|
||
model: 'building/building_rail_e',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_f',
|
||
label: '铁扶手(斜向)',
|
||
blockstate: null,
|
||
box: [0, 6, -3, 15, 10, 10, true],
|
||
model: 'building/building_rail_f',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_f_extend',
|
||
label: '铁扶手(斜向,扩展)',
|
||
blockstate: null,
|
||
box: [0, 6, 0, 16, 10, 16, true],
|
||
model: 'building/building_rail_f_extend',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_rail_g',
|
||
label: '铁扶手(石英)',
|
||
blockstate: null,
|
||
box: [0, 0, 1, 16, 10, 16, true],
|
||
model: 'building/building_rail_g',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_a',
|
||
label: '楼梯铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 9, 16, 9, true],
|
||
model: 'building/building_stair_rail_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_a_half',
|
||
label: '楼梯铁扶手(半高)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 9, 8, 9, true],
|
||
model: 'building/building_stair_rail_a_half',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_b',
|
||
label: '楼梯铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 16, 16, 9, true],
|
||
model: 'building/building_stair_rail_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_b_half',
|
||
label: '楼梯铁扶手(半高)',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 16, 8, 9, true],
|
||
model: 'building/building_stair_rail_b_half',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_c',
|
||
label: '楼梯铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 9, 16, 9, true],
|
||
model: 'building/building_stair_rail_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_c_half',
|
||
label: '楼梯铁扶手(半高)',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 9, 8, 9, true],
|
||
model: 'building/building_stair_rail_c_half',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_d',
|
||
label: '楼梯铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 16, 16, 9, true],
|
||
model: 'building/building_stair_rail_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_e',
|
||
label: '楼梯铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 16, 16, 9, true],
|
||
model: 'building/building_stair_rail_e',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_f',
|
||
label: '楼梯铁扶手',
|
||
blockstate: null,
|
||
box: [0, 0, 7, 16, 16, 9, true],
|
||
model: 'building/building_stair_rail_f',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_g',
|
||
label: '楼梯铁扶手(垂直杆子)',
|
||
blockstate: null,
|
||
box: [7, 0, 7, 9, 16, 9, true],
|
||
model: 'building/building_stair_rail_g',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_h',
|
||
label: '楼梯铁扶手(水平杆子)',
|
||
blockstate: null,
|
||
box: [0, 14, 7, 16, 16, 9, true],
|
||
model: 'building/building_stair_rail_h',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_stair_rail_h_half',
|
||
label: '楼梯铁扶手(水平杆子,半高)',
|
||
blockstate: null,
|
||
box: [0, 6, 7, 16, 8, 9, true],
|
||
model: 'building/building_stair_rail_h_half',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_wall_a',
|
||
label: '墙(石砖 + 石英)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'building/building_wall_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_wall_b',
|
||
label: '墙(青色陶瓦 + 石英)',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'building/building_wall_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_wall_c',
|
||
label: '墙(石英)',
|
||
blockstate: null,
|
||
box: [0, 0, 3, 16, 16, 14, true],
|
||
model: 'building/building_wall_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'building_wall_d',
|
||
label: '墙(石英)',
|
||
blockstate: null,
|
||
box: [0, 0, 3, 16, 16, 16, true],
|
||
model: 'building/building_wall_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
// -- 家具方块 --
|
||
{
|
||
name: 'furniture_birch_chair_a',
|
||
label: '白桦木椅子',
|
||
blockstate: null,
|
||
box: [4, 0, 4, 12, 16, 12, true],
|
||
model: 'furniture/furniture_birch_chair_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_birch_table_a',
|
||
label: '白桦木桌子',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'furniture/furniture_birch_table_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_faucet_a',
|
||
label: '水龙头',
|
||
blockstate: null,
|
||
box: [0, 0, 5, 16, 9, 16, true],
|
||
model: 'furniture/furniture_faucet_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_black_board_a',
|
||
label: '黑板',
|
||
blockstate: null,
|
||
box: [0, 0, 15, 16, 16, 16, true],
|
||
model: 'furniture/furniture_black_board_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_kitchen_counter_a',
|
||
label: '白桦木厨房柜台',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'furniture/furniture_kitchen_counter_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_kitchen_sink_a',
|
||
label: '白桦木厨房水槽',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'furniture/furniture_kitchen_sink_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_tv_a',
|
||
label: '电视机',
|
||
blockstate: null,
|
||
box: [0, 3, 13, 16, 16, 16, true],
|
||
model: 'furniture/furniture_tv_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_tv_b',
|
||
label: '电视机',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: 'furniture/furniture_tv_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_tv_c',
|
||
label: '电视机',
|
||
blockstate: null,
|
||
box: [3, 0, 2, 13, 14, 13, true],
|
||
model: 'furniture/furniture_tv_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_tv_d',
|
||
label: '电视机',
|
||
blockstate: null,
|
||
box: [-4, 0, 12, 20, 14, 16, true],
|
||
model: 'furniture/furniture_tv_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'furniture_tv_d_double',
|
||
label: '电视机',
|
||
blockstate: null,
|
||
box: [-4, 0, 3, 20, 16, 13, true],
|
||
model: 'furniture/furniture_tv_d_double',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'turnstile_door_a',
|
||
label: '闸机门',
|
||
blockstate: getTrapdoorBlockstateJson(
|
||
`${P_BLOCK}/common/turnstile_door_a_base`,
|
||
`${P_BLOCK}/common/turnstile_door_a_closed`,
|
||
`${P_BLOCK}/common/turnstile_door_a_opened`,
|
||
),
|
||
box: null,
|
||
model: '',
|
||
texture: 'minecraft:block/red_wool',
|
||
type: 'trapdoor',
|
||
},
|
||
// -- 树木 --
|
||
{
|
||
name: 'tree_maple_leaves',
|
||
label: '枫树叶',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: '',
|
||
texture: 'common/tree_maple_leaves',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'tree_maple_wood',
|
||
label: '枫树木',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: '',
|
||
textureParticle: 'common/tree_maple_wood_side',
|
||
textureSide: 'common/tree_maple_wood_side',
|
||
textureUpDown: 'common/tree_maple_wood_ud',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'tree_palm_leaves',
|
||
label: '棕榈树叶',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: '',
|
||
texture: 'common/tree_palm_leaves',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'tree_palm_wood',
|
||
label: '棕榈树木',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: '',
|
||
textureParticle: 'common/tree_palm_wood_side',
|
||
textureSide: 'common/tree_palm_wood_side',
|
||
textureUpDown: 'common/tree_palm_wood_ud',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'tree_willow_leaves',
|
||
label: '柳树叶',
|
||
blockstate: null,
|
||
box: [0, 0, 0, 16, 16, 16, true],
|
||
model: '',
|
||
texture: 'common/tree_willow_leaves',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'tree_willow_wood',
|
||
label: '柳树木',
|
||
blockstate: null,
|
||
box: null,
|
||
model: '',
|
||
texture: '',
|
||
textureParticle: 'common/tree_willow_wood_side',
|
||
textureSide: 'common/tree_willow_wood_side',
|
||
textureUpDown: 'common/tree_willow_wood_ud',
|
||
type: '',
|
||
},
|
||
{
|
||
name: 'demo_block_a',
|
||
label: 'demo 方块',
|
||
blockstate: null,
|
||
box: [1, 1, 1, 15, 15, 15, true],
|
||
model: 'demo/demo_block_a',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'demo_block_b',
|
||
label: 'demo 方块',
|
||
blockstate: null,
|
||
box: [1, 1, 1, 15, 15, 15, true],
|
||
model: 'demo/demo_block_b',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'demo_block_c',
|
||
label: 'demo 方块',
|
||
blockstate: null,
|
||
box: [1, 1, 1, 15, 15, 15, true],
|
||
model: 'demo/demo_block_c',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
{
|
||
name: 'demo_block_d',
|
||
label: 'demo 方块',
|
||
blockstate: null,
|
||
box: [1, 1, 1, 15, 15, 15, true],
|
||
model: 'demo/demo_block_d',
|
||
texture: '',
|
||
type: 'cardinal',
|
||
},
|
||
];
|
||
|
||
blockList.forEach((config) => {
|
||
|
||
let blockBox = config.box;
|
||
let blockLabel = config.label;
|
||
let blockName = config.name;
|
||
let blockId = `${MOD_ID}:${blockName}`;
|
||
let blockState = config.blockstate;
|
||
let blockType = config.type;
|
||
|
||
let block = null;
|
||
|
||
// 获取模型文件路径
|
||
let modelPath0 = config.model;
|
||
let modelPath1 = modelPath0 ? `${P_BLOCK}/${modelPath0}` : '';
|
||
|
||
// 获取纹理文件路径
|
||
let textureAllPath0 = config.texture;
|
||
let textureAllPath1 = textureAllPath0 || '';
|
||
let textureParticlePath0 = config.textureParticle;
|
||
let textureParticlePath1 = textureParticlePath0 || '';
|
||
let textureSidePath0 = config.textureSide;
|
||
let textureSidePath1 = textureSidePath0 || '';
|
||
let textureSideNSPath0 = config.textureSideNS;
|
||
let textureSideNSPath1 = textureSideNSPath0 || '';
|
||
let textureSideWEPath0 = config.textureSideWE;
|
||
let textureSideWEPath1 = textureSideWEPath0 || '';
|
||
let textureUpDownPath0 = config.textureUpDown;
|
||
let textureUpDownPath1 = textureUpDownPath0 || '';
|
||
|
||
// 处理纹理文件路径
|
||
if (textureAllPath0 && !textureAllPath0.includes(':')) {
|
||
textureAllPath1 = `${P_BLOCK}/${textureAllPath0}`;
|
||
}
|
||
if (textureParticlePath0 && !textureParticlePath0.includes(':')) {
|
||
textureParticlePath1 = `${P_BLOCK}/${textureParticlePath0}`;
|
||
}
|
||
if (textureSidePath0 && !textureSidePath0.includes(':')) {
|
||
textureSidePath1 = `${P_BLOCK}/${textureSidePath0}`;
|
||
}
|
||
if (textureSideNSPath0 && !textureSideNSPath0.includes(':')) {
|
||
textureSideNSPath1 = `${P_BLOCK}/${textureSideNSPath0}`;
|
||
}
|
||
if (textureSideWEPath0 && !textureSideWEPath0.includes(':')) {
|
||
textureSideWEPath1 = `${P_BLOCK}/${textureSideWEPath0}`;
|
||
}
|
||
if (textureUpDownPath0 && !textureUpDownPath0.includes(':')) {
|
||
textureUpDownPath1 = `${P_BLOCK}/${textureUpDownPath0}`;
|
||
}
|
||
|
||
// 创建方块
|
||
if (blockType) {
|
||
block = event.create(blockId, blockType);
|
||
} else {
|
||
block = event.create(blockId);
|
||
}
|
||
|
||
// 添加到创造模式标签页
|
||
TAB_BLOCKS_ITEMS.push(blockId);
|
||
|
||
let isBlockType1 = [
|
||
'',
|
||
'cardinal',
|
||
].indexOf(blockType > -1);
|
||
|
||
let isBlockType2 = [
|
||
'fence',
|
||
'slab',
|
||
'stairs',
|
||
'trapdoor',
|
||
'wall',
|
||
].indexOf(blockType) > -1;
|
||
|
||
/** @type {_SetBlockPropsOpts} */
|
||
let commonProps = {
|
||
displayName: blockLabel,
|
||
modelPath: modelPath1 ? {
|
||
blockName: blockName,
|
||
blockNamespace: MOD_ID,
|
||
filePath: modelPath1,
|
||
} : null,
|
||
textureAll: textureAllPath1,
|
||
textureParticle: textureParticlePath1,
|
||
textureSide: textureSidePath1,
|
||
textureSideNS: textureSideNSPath1,
|
||
textureSideWE: textureSideWEPath1,
|
||
textureUpDown: textureUpDownPath1,
|
||
};
|
||
|
||
/** @type {_SetBlockPropsOpts} */
|
||
let specialProps = {};
|
||
|
||
// 处理基础属性
|
||
if (isBlockType1) {
|
||
if (blockBox) {
|
||
specialProps = {
|
||
boxConfig: blockBox,
|
||
boxType: 'custom',
|
||
isSolid: false,
|
||
renderType: 'cutout',
|
||
};
|
||
} else {
|
||
specialProps = {
|
||
boxConfig: null,
|
||
boxType: 'full',
|
||
isSolid: true,
|
||
renderType: 'solid',
|
||
};
|
||
}
|
||
} else if (isBlockType2) {
|
||
specialProps = {
|
||
renderType: 'cutout_mipped',
|
||
};
|
||
}
|
||
|
||
// 设置基础属性
|
||
setBlockProps(block, Object.assign(commonProps, specialProps));
|
||
|
||
// 生成方块状态
|
||
if (blockState) {
|
||
JSON_ASSETS.push({
|
||
path: `${P_BLOCK_STATE}/${blockName}`,
|
||
data: blockState,
|
||
});
|
||
}
|
||
|
||
});
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 常规 - 完成`);
|
||
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 灯(现代)
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockLampModern(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 现代灯 - 开始`);
|
||
|
||
/** 颜色 key 列表 */
|
||
let keys = Object.keys(COLORS);
|
||
|
||
/** 父模型路径 */
|
||
let parentModel = `${P_BLOCK}/lamp/modern`;
|
||
|
||
keys.forEach((key) => {
|
||
|
||
let color = COLORS[key];
|
||
let blockName = `lamp_modern_${color.CODE}`;
|
||
let blockId = `${MOD_ID}:${blockName}`;
|
||
let block = event.create(blockId);
|
||
|
||
// 纹理文件路径前缀
|
||
// wheat_plus:block/lamp_modern/color_
|
||
let textureBase = `${P_BLOCK}/lamp_modern/${color.CODE}`;
|
||
|
||
JSON_ASSETS.push({
|
||
path: `${P_BLOCK_MODEL}/${blockName}`,
|
||
data: {
|
||
parent: parentModel,
|
||
textures: {
|
||
glow: `${textureBase}_glow`,
|
||
core: `${textureBase}_core`,
|
||
particle: `${textureBase}_core`,
|
||
},
|
||
},
|
||
});
|
||
|
||
TAB_BLOCKS_ITEMS.push(blockId);
|
||
|
||
setBlockProps(block, {
|
||
boxType: 'full',
|
||
displayName: `现代${color.LABEL_CN}灯`,
|
||
isSolid: false,
|
||
lightLevel: 1,
|
||
renderType: 'translucent',
|
||
soundType: 'glass',
|
||
});
|
||
|
||
});
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 现代灯 - 完成`);
|
||
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 灯(简约)
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockLampSimple(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 简约灯 - 开始`);
|
||
|
||
let blockList = [
|
||
{
|
||
name: 'lamp_simple_large',
|
||
label: '简约灯(大)',
|
||
model: 'lamp/simple_large',
|
||
},
|
||
{
|
||
name: 'lamp_simple_medium',
|
||
label: '简约灯(中)',
|
||
model: 'lamp/simple_medium',
|
||
},
|
||
{
|
||
name: 'lamp_simple_small',
|
||
label: '简约灯(小)',
|
||
model: 'lamp/simple_small',
|
||
},
|
||
{
|
||
name: 'lamp_simple_stripe',
|
||
label: '简约灯(条状)',
|
||
model: 'lamp/simple_stripe',
|
||
},
|
||
];
|
||
|
||
blockList.forEach((config) => {
|
||
|
||
let blockName = config.name;
|
||
let blockId = `${MOD_ID}:${blockName}`;
|
||
let block = event.create(blockId, 'button');
|
||
|
||
// 用于替换默认模型
|
||
let modelJSON = { parent: `${P_BLOCK}/${config.model}` };
|
||
|
||
// 按钮方块默认状态
|
||
JSON_ASSETS.push({
|
||
path: `${P_BLOCK_MODEL}/${blockName}`,
|
||
data: modelJSON,
|
||
});
|
||
|
||
// 按钮方块按下状态
|
||
JSON_ASSETS.push({
|
||
path: `${P_BLOCK_MODEL}/${blockName}_pressed`,
|
||
data: modelJSON,
|
||
});
|
||
|
||
// 按钮物品状态
|
||
JSON_ASSETS.push({
|
||
path: `${P_ITEM_MODEL}/${blockName}`,
|
||
data: modelJSON,
|
||
});
|
||
|
||
TAB_BLOCKS_ITEMS.push(blockId);
|
||
|
||
setBlockProps(block, {
|
||
displayName: config.label,
|
||
lightLevel: 0.8,
|
||
renderType: 'translucent',
|
||
soundType: 'glass',
|
||
});
|
||
|
||
});
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 简约灯 - 完成`);
|
||
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 矿车方块
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockMinecart(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 矿车方块 - 开始`);
|
||
|
||
/** 父模型路径 */
|
||
let modelParent = `${P_BLOCK}/minecart/main`;
|
||
|
||
/** 纹理文件路径前缀 */
|
||
let texturePrefix = `${P_BLOCK}/minecart/`;
|
||
|
||
let blockList = [
|
||
{ name: 'mtr_gz_gf_1', label: '广州地铁 - 广佛线' },
|
||
{ name: 'mtr_gz_gf_2', label: '广州地铁 - 广佛线' },
|
||
{ name: 'mtr_gz_l1_1', label: '广州地铁 - 一号线' },
|
||
{ name: 'mtr_gz_l1_2', label: '广州地铁 - 一号线' },
|
||
{ name: 'mtr_gz_l2_1', label: '广州地铁 - 二号线' },
|
||
{ name: 'mtr_gz_l3_1', label: '广州地铁 - 三号线' },
|
||
{ name: 'mtr_gz_l3_2', label: '广州地铁 - 三号线' },
|
||
{ name: 'mtr_gz_l4_1', label: '广州地铁 - 四号线' },
|
||
{ name: 'mtr_gz_l5_1', label: '广州地铁 - 五号线' },
|
||
{ name: 'mtr_gz_l6_1', label: '广州地铁 - 六号线' },
|
||
{ name: 'mtr_gz_l7_1', label: '广州地铁 - 七号线' },
|
||
{ name: 'mtr_gz_l8_1', label: '广州地铁 - 八号线' },
|
||
{ name: 'mtr_gz_l9_1', label: '广州地铁 - 九号线' },
|
||
{ name: 'mtr_gz_l13_1', label: '广州地铁 - 十三号线' },
|
||
{ name: 'mtr_gz_l14_1', label: '广州地铁 - 十四号线' },
|
||
{ name: 'mtr_gz_l21_1', label: '广州地铁 - 二十一号线' },
|
||
{ name: 'cr_ca25g_red', label: '中国铁路 - CA25G_RED' },
|
||
{ name: 'cr_cr200j_we', label: '中国铁路 - CR200J_WE' },
|
||
{ name: 'cr_cr200j_ze', label: '中国铁路 - CR200J_ZE' },
|
||
{ name: 'cr_kd25g_red', label: '中国铁路 - KD25G_RED' },
|
||
{ name: 'cr_rw25g_red', label: '中国铁路 - RW25G_RED' },
|
||
{ name: 'cr_rz25g_red', label: '中国铁路 - RZ25G_RED' },
|
||
{ name: 'cr_rz125z_bj', label: '中国铁路 - RZ125Z_BJ' },
|
||
{ name: 'cr_rz125z_gz', label: '中国铁路 - RZ125Z_GZ' },
|
||
{ name: 'cr_rz125z_new', label: '中国铁路 - RZ125Z_NEW' },
|
||
{ name: 'cr_rz125z_sh', label: '中国铁路 - RZ125Z_SH' },
|
||
{ name: 'cr_uz25g_red', label: '中国铁路 - UZ25G_RED' },
|
||
{ name: 'cr_xl25g_red', label: '中国铁路 - XL25G_RED' },
|
||
{ name: 'cr_yw22b_new', label: '中国铁路 - YW22B_NEW' },
|
||
{ name: 'cr_yw22b_old', label: '中国铁路 - YW22B_OLD' },
|
||
{ name: 'cr_yw25b_new', label: '中国铁路 - YW25B_NEW' },
|
||
{ name: 'cr_yw25b_old', label: '中国铁路 - YW25B_OLD' },
|
||
{ name: 'cr_yw25g_new', label: '中国铁路 - YW25G_NEW' },
|
||
{ name: 'cr_yw25g_red', label: '中国铁路 - YW25G_RED' },
|
||
{ name: 'cr_yw25k_blue', label: '中国铁路 - YW25K_BLUE' },
|
||
{ name: 'cr_yw25k_new', label: '中国铁路 - YW25K_NEW' },
|
||
{ name: 'cr_yw25t_new', label: '中国铁路 - YW25T_NEW' },
|
||
{ name: 'cr_yw25t_white', label: '中国铁路 - YW25T_WHITE' },
|
||
{ name: 'cr_yz22b_new', label: '中国铁路 - YZ22B_NEW' },
|
||
{ name: 'cr_yz22b_old', label: '中国铁路 - YZ22B_OLD' },
|
||
{ name: 'cr_yz25b_new', label: '中国铁路 - YZ25B_NEW' },
|
||
{ name: 'cr_yz25b_old', label: '中国铁路 - YZ25B_OLD' },
|
||
{ name: 'cr_yz25dt_jl', label: '中国铁路 - YZ25DT_JL' },
|
||
{ name: 'cr_yz25g_new', label: '中国铁路 - YZ25G_NEW' },
|
||
{ name: 'cr_yz25g_red', label: '中国铁路 - YZ25G_RED' },
|
||
{ name: 'cr_yz25k_blue', label: '中国铁路 - YZ25K_BLUE' },
|
||
{ name: 'cr_yz25k_new', label: '中国铁路 - YZ25K_NEW' },
|
||
{ name: 'cr_yz25t_new', label: '中国铁路 - YZ25T_NEW' },
|
||
{ name: 'cr_yz25t_white', label: '中国铁路 - YZ25T_WHITE' },
|
||
{ name: 'cr_yz25z_wh', label: '中国铁路 - YZ25Z_WH' },
|
||
];
|
||
|
||
blockList.forEach((config) => {
|
||
|
||
let blockName = config.name;
|
||
let blockId = `${MOD_ID}:minecart_${blockName}`;
|
||
let block = event.create(blockId, 'cardinal');
|
||
|
||
// 生成模型 JSON 文件
|
||
JSON_ASSETS.push({
|
||
path: `${P_BLOCK_MODEL}/minecart_${blockName}`,
|
||
data: {
|
||
parent: modelParent,
|
||
textures: {
|
||
main: `${texturePrefix}${blockName}`,
|
||
},
|
||
},
|
||
});
|
||
|
||
TAB_MINECART_ITEMS.push(blockId);
|
||
|
||
// 设置基础属性
|
||
setBlockProps(block, {
|
||
boxConfig: [-3, 0, -6, 19, 16, 22, true],
|
||
boxType: 'custom',
|
||
displayName: config.label,
|
||
hasCollision: false,
|
||
isSolid: false,
|
||
renderType: 'cutout',
|
||
soundType: 'metal',
|
||
});
|
||
|
||
});
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 矿车方块 - 完成`);
|
||
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 强化混凝土
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockReinforcedConcrete(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 强化混凝土 - 开始`);
|
||
|
||
let keys = Object.keys(COLORS);
|
||
|
||
keys.forEach((key) => {
|
||
|
||
let color = COLORS[key];
|
||
let id = `${MOD_ID}:reinforced_concrete_${color.CODE}`;
|
||
let block = event.create(id);
|
||
let texture = `${P_BLOCK}/reinforced_concrete/${color.CODE}`;
|
||
|
||
TAB_BLOCKS_ITEMS.push(id);
|
||
|
||
setBlockProps(block, {
|
||
boxType: 'full',
|
||
displayName: `${color.LABEL_CN}强化混凝土`,
|
||
textureAll: texture,
|
||
});
|
||
|
||
});
|
||
|
||
// // 覆盖默认语言(en_US)
|
||
// JSON_ASSETS.push({
|
||
// path: 'minecraft:lang/en_us',
|
||
// data: {
|
||
// 'block.minecraft.ancient_debris': 'White Reinforced Concrete',
|
||
// 'block.minecraft.raw_copper_block': 'Gray Reinforced Concrete',
|
||
// 'block.minecraft.raw_iron_block': 'Light Gray Reinforced Concrete',
|
||
// },
|
||
// });
|
||
|
||
// // 覆盖默认语言(zh_CN)
|
||
// JSON_ASSETS.push({
|
||
// path: 'minecraft:lang/zh_cn',
|
||
// data: {
|
||
// 'block.minecraft.ancient_debris': '白色强化混凝土',
|
||
// 'block.minecraft.raw_copper_block': '灰色强化混凝土',
|
||
// 'block.minecraft.raw_iron_block': '淡灰色强化混凝土',
|
||
// },
|
||
// });
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 强化混凝土 - 完成`);
|
||
|
||
}
|
||
|
||
/**
|
||
* @description 注册方块 - 路
|
||
* @param {_RegistryBlock} event
|
||
*/
|
||
function regBlockRoad(event) {
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 路 - 开始`);
|
||
|
||
let blockList = [
|
||
{
|
||
name: 'road_blank',
|
||
label: '路 - 空白',
|
||
hasSide: false,
|
||
rotatable: false,
|
||
texturePath: 'common/transparent',
|
||
},
|
||
{
|
||
name: 'road_white',
|
||
label: '路 - 白色',
|
||
hasSide: false,
|
||
rotatable: false,
|
||
texturePath: 'road/content_white',
|
||
},
|
||
{
|
||
name: 'road_yellow',
|
||
label: '路 - 黄色',
|
||
hasSide: false,
|
||
rotatable: false,
|
||
texturePath: 'road/content_yellow',
|
||
},
|
||
{
|
||
name: 'road_line_single_white_straight',
|
||
label: '路 - 单白线 - 直线',
|
||
hasSide: true,
|
||
rotatable: false,
|
||
texturePath: 'road/line/single_white_straight',
|
||
},
|
||
{
|
||
name: 'road_line_single_white_slant',
|
||
label: '路 - 单白线 - 斜线',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/line/single_white_slant',
|
||
},
|
||
{
|
||
name: 'road_line_single_yellow_straight',
|
||
label: '路 - 单黄线 - 直线',
|
||
hasSide: true,
|
||
rotatable: false,
|
||
texturePath: 'road/line/single_yellow_straight',
|
||
},
|
||
{
|
||
name: 'road_line_single_yellow_slant',
|
||
label: '路 - 单黄线 - 斜线',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/line/single_yellow_slant',
|
||
},
|
||
{
|
||
name: 'road_line_double_white_straight',
|
||
label: '路 - 双白线 - 直线',
|
||
hasSide: true,
|
||
rotatable: false,
|
||
texturePath: 'road/line/double_white_straight',
|
||
},
|
||
{
|
||
name: 'road_line_double_white_slant',
|
||
label: '路 - 双白线 - 斜线',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/line/double_white_slant',
|
||
},
|
||
{
|
||
name: 'road_line_double_yellow_straight',
|
||
label: '路 - 双黄线 - 直线',
|
||
hasSide: true,
|
||
rotatable: false,
|
||
texturePath: 'road/line/double_yellow_straight',
|
||
},
|
||
{
|
||
name: 'road_line_double_yellow_slant',
|
||
label: '路 - 双黄线 - 斜线',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/line/double_yellow_slant',
|
||
},
|
||
{
|
||
name: 'road_mark_arrow_f',
|
||
label: '路 - 标记 - 箭头',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/mark/arrow_f',
|
||
},
|
||
{
|
||
name: 'road_mark_arrow_fl',
|
||
label: '路 - 标记 - 箭头',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/mark/arrow_fl',
|
||
},
|
||
{
|
||
name: 'road_mark_arrow_flr',
|
||
label: '路 - 标记 - 箭头',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/mark/arrow_flr',
|
||
},
|
||
{
|
||
name: 'road_mark_arrow_fr',
|
||
label: '路 - 标记 - 箭头',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/mark/arrow_fr',
|
||
},
|
||
{
|
||
name: 'road_mark_arrow_l',
|
||
label: '路 - 标记 - 箭头',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/mark/arrow_l',
|
||
},
|
||
{
|
||
name: 'road_mark_arrow_lr',
|
||
label: '路 - 标记 - 箭头',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/mark/arrow_lr',
|
||
},
|
||
{
|
||
name: 'road_mark_arrow_r',
|
||
label: '路 - 标记 - 箭头',
|
||
hasSide: false,
|
||
rotatable: true,
|
||
texturePath: 'road/mark/arrow_r',
|
||
},
|
||
];
|
||
|
||
blockList.forEach((config) => {
|
||
|
||
/** 方块名称 */
|
||
let blockName = config.name;
|
||
|
||
/** 方块文本 */
|
||
let blockLabel = config.label;
|
||
|
||
/** 可旋转方块 */
|
||
let rotatable = config.rotatable;
|
||
|
||
/** 纹理文件相对路径 */
|
||
let texturePath = config.texturePath;
|
||
|
||
/** 是否存在侧边纹理 */
|
||
let textureSide = config.hasSide;
|
||
|
||
// 完整方块
|
||
if (true) {
|
||
|
||
let fullName = `${blockName}_full`;
|
||
let blockId = `${MOD_ID}:${fullName}`;
|
||
let block = null;
|
||
|
||
if (rotatable) {
|
||
block = event.create(blockId, 'cardinal');
|
||
} else {
|
||
block = event.create(blockId);
|
||
}
|
||
|
||
// 方块模型
|
||
JSON_ASSETS.push({
|
||
path: `${P_BLOCK_MODEL}/${fullName}`,
|
||
data: {
|
||
parent: `${P_BLOCK}/road/base_full`,
|
||
textures: {
|
||
content: `${P_BLOCK}/${texturePath}`,
|
||
side: textureSide ? `${P_BLOCK}/${texturePath}` : P_BLOCK_TRANSPARENT,
|
||
},
|
||
},
|
||
});
|
||
|
||
// 创造模式标签页
|
||
TAB_ROADS_ITEMS.push(blockId);
|
||
|
||
// 方块属性
|
||
setBlockProps(block, {
|
||
boxType: 'full',
|
||
displayName: `${blockLabel} - 完整`,
|
||
renderType: 'cutout',
|
||
});
|
||
|
||
}
|
||
|
||
// 半砖方块
|
||
if (true) {
|
||
|
||
let fullName = `${blockName}_half`;
|
||
let blockId = `${MOD_ID}:${fullName}`;
|
||
let block = null;
|
||
|
||
if (rotatable) {
|
||
block = event.create(blockId, 'cardinal');
|
||
} else {
|
||
block = event.create(blockId);
|
||
}
|
||
|
||
// 方块模型
|
||
JSON_ASSETS.push({
|
||
path: `${P_BLOCK_MODEL}/${fullName}`,
|
||
data: {
|
||
parent: `${P_BLOCK}/road/base_half`,
|
||
textures: {
|
||
content: `${P_BLOCK}/${texturePath}`,
|
||
side: textureSide ? `${P_BLOCK}/${texturePath}` : P_BLOCK_TRANSPARENT,
|
||
},
|
||
},
|
||
});
|
||
|
||
// 创造模式标签页
|
||
TAB_ROADS_ITEMS.push(blockId);
|
||
|
||
// 方块属性
|
||
setBlockProps(block, {
|
||
boxType: 'half',
|
||
displayName: `${blockLabel} - 一半`,
|
||
renderType: 'cutout',
|
||
});
|
||
|
||
}
|
||
|
||
});
|
||
|
||
console.info(`${LOG_PREFIX} 注册方块 - 路 - 完成`);
|
||
|
||
}
|
||
|
||
// 注册方块
|
||
StartupEvents.registry('block', regBlockBrick);
|
||
StartupEvents.registry('block', regBlockColor);
|
||
StartupEvents.registry('block', regBlockCommon);
|
||
StartupEvents.registry('block', regBlockLampModern);
|
||
StartupEvents.registry('block', regBlockLampSimple);
|
||
StartupEvents.registry('block', regBlockMinecart);
|
||
StartupEvents.registry('block', regBlockRoad);
|
||
StartupEvents.registry('block', regBlockReinforcedConcrete);
|
||
|
||
// 注册物品
|
||
StartupEvents.registry('item', (event) => {
|
||
|
||
let itemMaizitong = event.create(`${MOD_ID}:maizitong`);
|
||
|
||
itemMaizitong.displayName({ text: '麦子通' });
|
||
itemMaizitong.tooltip({ text: '麦子交通一卡通' })
|
||
itemMaizitong.fireResistant();
|
||
itemMaizitong.maxStackSize(1);
|
||
itemMaizitong.parentModel(`${P_ITEM}/maizitong`);
|
||
|
||
});
|
||
|
||
// 注册创造模式标签页
|
||
StartupEvents.registry('creative_mode_tab', (event) => {
|
||
|
||
// 创建标签页
|
||
let tabBlocks = event.create('wheat_plus:blocks');
|
||
let tabMinecart = event.create('wheat_plus:minecart');
|
||
let tabRoads = event.create('wheat_plus:roads');
|
||
|
||
// 设置名称
|
||
tabBlocks.displayName('Wheat Plus | 方块');
|
||
tabMinecart.displayName('Wheat Plus | 矿车');
|
||
tabRoads.displayName('Wheat Plus | 路');
|
||
|
||
// 设置图标
|
||
tabBlocks.icon(() => {
|
||
return 'minecraft:hay_block';
|
||
});
|
||
tabMinecart.icon(() => {
|
||
return 'minecraft:minecart';
|
||
});
|
||
tabRoads.icon(() => {
|
||
return 'minecraft:gray_concrete';
|
||
});
|
||
|
||
// 设置内容
|
||
// 注:若通过该方式添加,顺序会乱
|
||
tabBlocks.content(() => {
|
||
return ['minecraft:paper'];
|
||
});
|
||
tabMinecart.content(() => {
|
||
return ['minecraft:paper'];
|
||
});
|
||
tabRoads.content(() => {
|
||
return ['minecraft:paper'];
|
||
});
|
||
|
||
});
|
||
StartupEvents.modifyCreativeTab('wheat_plus:blocks', (event) => {
|
||
event.add(TAB_BLOCKS_ITEMS);
|
||
});
|
||
StartupEvents.modifyCreativeTab('wheat_plus:minecart', (event) => {
|
||
event.add(TAB_MINECART_ITEMS);
|
||
});
|
||
StartupEvents.modifyCreativeTab('wheat_plus:roads', (event) => {
|
||
event.add(TAB_ROADS_ITEMS);
|
||
});
|
||
|
||
// 注册物品
|
||
// onEvent('item.registry', function (event) {
|
||
// console.info(`${LOG_PREFIX} 注册物品 - 开始`);
|
||
// console.info(`${LOG_PREFIX} 注册物品 - 完成`);
|
||
// });
|
||
|
||
// 注册声音
|
||
// onEvent('sound.registry', function (event) {
|
||
// console.info(`${LOG_PREFIX} 注册声音 - 开始`);
|
||
// console.info(`${LOG_PREFIX} 注册声音 - 完成`);
|
||
// });
|