243 lines
5.7 KiB
TypeScript
243 lines
5.7 KiB
TypeScript
// 注:需要在 `jsconfig.json` 配置文件的 `files` 字段中包含该文件(若在 `include` 字段中,定义会被覆盖)。
|
||
|
||
import type {
|
||
$BasicBlockJS$Builder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.BasicBlockJS$Builder';
|
||
|
||
import {
|
||
$BlockRenderType$$Type,
|
||
} from 'dev.latvian.mods.kubejs.block.BlockRenderType';
|
||
|
||
import type {
|
||
$ButtonBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.ButtonBlockBuilder';
|
||
|
||
import type {
|
||
$CarpetBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.CarpetBlockBuilder';
|
||
|
||
import type {
|
||
$CropBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.CropBlockBuilder';
|
||
|
||
import type {
|
||
$DetectorBlock$Builder,
|
||
} from 'dev.latvian.mods.kubejs.block.DetectorBlock$Builder';
|
||
|
||
import type {
|
||
$DoorBlockBuilder
|
||
} from 'dev.latvian.mods.kubejs.block.custom.DoorBlockBuilder';
|
||
|
||
import type {
|
||
$FallingBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.FallingBlockBuilder';
|
||
|
||
import type {
|
||
$FenceBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.FenceBlockBuilder';
|
||
|
||
import type {
|
||
$FenceGateBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.FenceGateBlockBuilder';
|
||
|
||
import type {
|
||
$HorizontalDirectionalBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.HorizontalDirectionalBlockBuilder';
|
||
|
||
import type {
|
||
$PressurePlateBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.PressurePlateBlockBuilder';
|
||
|
||
import type {
|
||
$SlabBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.SlabBlockBuilder';
|
||
|
||
import type {
|
||
$StairBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.StairBlockBuilder';
|
||
|
||
import type {
|
||
$TrapdoorBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.TrapdoorBlockBuilder';
|
||
|
||
import type {
|
||
$WallBlockBuilder,
|
||
} from 'dev.latvian.mods.kubejs.block.custom.WallBlockBuilder';
|
||
|
||
import type {
|
||
$Block,
|
||
} from 'moe.wolfgirl.probejs.generated.registry.minecraft.Block';
|
||
|
||
import {
|
||
$MapColor$$Type,
|
||
} from 'net.minecraft.world.level.material.MapColor';
|
||
|
||
import {
|
||
$SoundType$$Type,
|
||
} from 'net.minecraft.world.level.block.SoundType';
|
||
|
||
/** 方块构造器 */
|
||
type BlockBuilder = (
|
||
$BasicBlockJS$Builder &
|
||
$ButtonBlockBuilder &
|
||
$CarpetBlockBuilder &
|
||
$CropBlockBuilder &
|
||
$DetectorBlock$Builder &
|
||
$DoorBlockBuilder &
|
||
$FallingBlockBuilder &
|
||
$FenceBlockBuilder &
|
||
$FenceGateBlockBuilder &
|
||
$HorizontalDirectionalBlockBuilder &
|
||
$PressurePlateBlockBuilder &
|
||
$SlabBlockBuilder &
|
||
$StairBlockBuilder &
|
||
$TrapdoorBlockBuilder &
|
||
$WallBlockBuilder
|
||
);
|
||
|
||
/** 配置选项 */
|
||
type SetBlockPropsOpts = {
|
||
|
||
/** 碰撞箱配置,默认:null */
|
||
boxConfig?: [number, number, number, number, number, number, boolean?];
|
||
|
||
/** 碰撞箱类型,默认 full */
|
||
boxType?: 'custom' | 'full' | 'half';
|
||
|
||
/** 方块显示名称 */
|
||
displayName: string;
|
||
|
||
/** 坚硬程度,默认:8 */
|
||
hardness?: number;
|
||
|
||
/** 开启碰撞箱,默认:true */
|
||
hasCollision?: boolean;
|
||
|
||
/** 是否为完整方块,默认:true */
|
||
isSolid?: boolean;
|
||
|
||
/** 亮度等级,范围:0 ~ 1,默认:0 */
|
||
lightLevel?: number;
|
||
|
||
/** 地图颜色,默认:none */
|
||
mapColor?: $MapColor$$Type;
|
||
|
||
/** 模型文件路径配置 */
|
||
modelPath?: {
|
||
|
||
/** 方块所属命名空间,示例:`minecraft` */
|
||
blockNamespace: string;
|
||
|
||
/** 方块名称,示例:`stone` */
|
||
blockName: string;
|
||
|
||
/** 模型文件路径,示例:`minecraft:block/stone` */
|
||
filePath: string;
|
||
|
||
};
|
||
|
||
/**
|
||
* 方块渲染类型,默认:solid
|
||
* - `cutout`: required for blocks with texture like glass
|
||
* - `translucent`: required for blocks like stained glass
|
||
*/
|
||
renderType?: $BlockRenderType$$Type;
|
||
|
||
/** 坚固程度,默认:16 */
|
||
resistance?: number;
|
||
|
||
/** 声音类型,默认:stone */
|
||
soundType?: $SoundType$$Type;
|
||
|
||
/** 纹理文件路径,每一面都相同时指定 */
|
||
textureAll?: string;
|
||
|
||
/** 方块粒子效果纹理文件路径,不使用 `textureAll` 的情况下才需要指定 */
|
||
textureParticle?: string;
|
||
|
||
/** 纹理文件路径,侧面都相同时指定 */
|
||
textureSide?: string;
|
||
|
||
/** 纹理文件路径,南北面都相同时指定 */
|
||
textureSideNS?: string;
|
||
|
||
/** 纹理文件路径,东西面都相同时指定 */
|
||
textureSideWE?: string;
|
||
|
||
/** 纹理文件路径,上下面都相同时指定 */
|
||
textureUpDown?: string;
|
||
|
||
};
|
||
|
||
declare global {
|
||
|
||
/** 方块注册事件 */
|
||
type _RegistryBlock = $Block;
|
||
|
||
/** 配置选项 */
|
||
type _SetBlockPropsOpts = SetBlockPropsOpts;
|
||
|
||
const global: {
|
||
|
||
/**
|
||
* @description 传入值为空时返回指定的默认值
|
||
* @param v 传入值
|
||
* @param d 默认值
|
||
*/
|
||
defaults<TValue>(v: TValue, d: TValue): TValue;
|
||
|
||
/**
|
||
* @description 设置方块基础属性
|
||
* @param block 方块
|
||
* @param options 配置选项
|
||
*/
|
||
setBlockProps(block: BlockBuilder, options: SetBlockPropsOpts): boolean;
|
||
|
||
/**
|
||
* @description 设置方块水平旋转属性
|
||
* @param block 方块
|
||
* @param type 旋转类型
|
||
* @param model 模型路径
|
||
*/
|
||
setHorizontalFacing(
|
||
block: BlockBuilder,
|
||
type: 'revert' | 'same',
|
||
model: string
|
||
): boolean;
|
||
|
||
/**
|
||
* @description 写入 JSON 文件
|
||
* @param path 文件路径,相对于 `.minecraft`
|
||
* @param data JSON 内容对象
|
||
*/
|
||
writeJSON(path: string, data: object): void;
|
||
|
||
/** 颜色列表 */
|
||
COLORS: {
|
||
[key: string]: {
|
||
CODE: string;
|
||
HEX: string;
|
||
LABEL_CN: string;
|
||
LABEL_EN: string;
|
||
};
|
||
};
|
||
|
||
/** 需要在 `client.generate_assets` 生成的 JSON 文件 */
|
||
JSON_ASSETS: Array<{
|
||
|
||
/** JSON 完整路径,示例:`minecraft:models/block/stone` */
|
||
path: string;
|
||
|
||
data: object;
|
||
|
||
}>;
|
||
|
||
/** 日志前缀 */
|
||
LOG_PREFIX: string;
|
||
|
||
};
|
||
|
||
}
|
||
|
||
export { };
|