1
0
Files
wheat-server-kubejs/kubejs/startup_scripts/wheat_plus.js

2134 lines
56 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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} 注册声音 - 完成`);
// });