@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
75 lines (74 loc) • 2.58 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.RideableEntityTrait = void 0;
const ContentTraits_1 = require("./ContentTraits");
/**
* Rideable - can be ridden by the player.
*/
class RideableEntityTrait extends ContentTraits_1.EntityContentTrait {
get id() {
return "rideable";
}
getData(config) {
const seatCount = config?.seatCount ?? 1;
const controllable = config?.controllable ?? true;
const requiresSaddle = config?.requiresSaddle ?? true;
const baseComponents = {
"minecraft:rideable": {
seat_count: seatCount,
family_types: ["player"],
interact_text: "action.interact.ride.horse",
seats: [{ position: [0.0, 1.1, -0.2] }],
},
};
if (controllable) {
baseComponents["minecraft:input_ground_controlled"] = {};
}
const componentGroups = {};
const events = {};
if (requiresSaddle) {
componentGroups["unsaddled"] = {};
componentGroups["saddled"] = {
"minecraft:is_saddled": {},
...baseComponents,
};
events["on_saddle"] = {
remove: { component_groups: ["unsaddled"] },
add: { component_groups: ["saddled"] },
};
return {
id: "rideable",
displayName: "Rideable",
description: "Can be ridden by the player",
category: "interaction",
components: {
"minecraft:equippable": {
slots: [
{
slot: 0,
item: "saddle",
accepted_items: ["saddle"],
on_equip: { event: "on_saddle" },
},
],
},
},
componentGroups,
events,
spawnEvent: {
add: { component_groups: ["unsaddled"] },
},
};
}
return {
id: "rideable",
displayName: "Rideable",
description: "Can be ridden by the player",
category: "interaction",
components: baseComponents,
};
}
}
exports.RideableEntityTrait = RideableEntityTrait;