diff --git a/src/apps/actor/base-sheet.js b/src/apps/actor/base-sheet.js index 27441036..75a74b11 100644 --- a/src/apps/actor/base-sheet.js +++ b/src/apps/actor/base-sheet.js @@ -457,27 +457,6 @@ export class DS4ActorSheet extends ActorSheet { this.actor.updateEmbeddedDocuments("Item", updates); } - - /** - * @param {DragEvent} event - * @param {object} data - * @override - */ - async _onDropItem(event, data) { - const item = await Item.implementation.fromDropData(data); - if (item && !this.actor.canOwnItemType(item.type)) { - notifications.warn( - getGame().i18n.format("DS4.WarningActorCannotOwnItem", { - actorName: this.actor.name, - actorType: this.actor.type, - itemName: item.name, - itemType: item.type, - }), - ); - return false; - } - return super._onDropItem(event, data); - } } /** diff --git a/src/hooks/hooks.ts b/src/hooks/hooks.ts index e9b4d91a..b69fbb1f 100644 --- a/src/hooks/hooks.ts +++ b/src/hooks/hooks.ts @@ -4,12 +4,14 @@ import { registerForHotbarDropHook } from "./hotbar-drop"; import { registerForInitHook } from "./init"; +import { registerForPreCreateItemHook } from "./pre-create-item"; import { registerForReadyHook } from "./ready"; import { registerForRenderHooks } from "./render"; import { registerForSetupHook } from "./setup"; export function registerForHooks(): void { registerForHotbarDropHook(); + registerForPreCreateItemHook(); registerForInitHook(); registerForReadyHook(); registerForRenderHooks(); diff --git a/src/hooks/pre-create-item.js b/src/hooks/pre-create-item.js new file mode 100644 index 00000000..545bd540 --- /dev/null +++ b/src/hooks/pre-create-item.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2023 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { notifications } from "../ui/notifications.js"; +import { getGame } from "../utils/utils.js"; + +export function registerForPreCreateItemHook() { + Hooks.on("preCreateItem", preCreateItem); +} + +/** + * @param {import('../documents/item/item.js').DS4Item} item + * @returns {void | false} + */ +function preCreateItem(item) { + if (item.parent instanceof Actor && !item.parent.canOwnItemType(item.type)) { + notifications.warn( + getGame().i18n.format("DS4.WarningActorCannotOwnItem", { + actorName: item.actor.name, + actorType: item.actor.type, + itemName: item.name, + itemType: item.type, + }), + ); + return false; + } +}