Contains information regarding an event after a player's inventory item changes.
import { world, PlayerInventoryItemChangeAfterEvent, InventoryItemEventOptions, PlayerInventoryType,} from "@minecraft/server";// Example of handling player inventory item change eventsfunction setupInventoryChangeListener() { // Basic event subscription - monitor all inventory changes world.afterEvents.playerInventoryItemChange.subscribe( (event: PlayerInventoryItemChangeAfterEvent) => { console.log(`${event.player.name} inventory changed:`); console.log(`Slot: ${event.slot} in ${event.inventoryType}`); if (event.beforeItemStack) { console.log( `Previous item: ${event.beforeItemStack.typeId} (${event.beforeItemStack.amount})`, ); } else { console.log("Previous: empty slot"); } if (event.itemStack) { console.log( `New item: ${event.itemStack.typeId} (${event.itemStack.amount})`, ); } else { console.log("New: empty slot"); } }, ); // Subscription with filtering options - monitor specific inventory types and items const inventoryOptions: InventoryItemEventOptions = { inventoryType: PlayerInventoryType.Hotbar, includeItems: [ "minecraft:diamond_sword", "minecraft:bow", "minecraft:shield", ], excludeItems: ["minecraft:dirt", "minecraft:cobblestone"], includeTags: ["minecraft:weapons", "minecraft:tools"], excludeTags: ["minecraft:building_blocks"], ignoreQuantityChange: false, // Track quantity changes allowedSlots: [0, 1, 2, 3, 4], // Only monitor first 5 hotbar slots }; world.afterEvents.playerInventoryItemChange.subscribe( (event: PlayerInventoryItemChangeAfterEvent) => { console.log(`Important inventory change detected!`); console.log(`Player: ${event.player.name}`); console.log(`Slot ${event.slot} in ${event.inventoryType}`); // Check for specific item types if (event.itemStack?.typeId === "minecraft:diamond_sword") { console.log("Player equipped a diamond sword!"); } else if (event.itemStack?.typeId === "minecraft:bow") { console.log("Player equipped a bow!"); } // Check for item removal if (event.beforeItemStack && !event.itemStack) { console.log( `Player removed ${event.beforeItemStack.typeId} from slot ${event.slot}`, ); } // Check for quantity changes if ( event.beforeItemStack && event.itemStack && event.beforeItemStack.typeId === event.itemStack.typeId ) { const quantityChange = event.itemStack.amount - event.beforeItemStack.amount; if (quantityChange > 0) { console.log( `Player gained ${quantityChange} of ${event.itemStack.typeId}`, ); } else if (quantityChange < 0) { console.log( `Player lost ${Math.abs(quantityChange)} of ${event.itemStack.typeId}`, ); } } }, inventoryOptions, ); // Example: Monitor only hotbar changes const hotbarOnlyOptions: InventoryItemEventOptions = { inventoryType: PlayerInventoryType.Hotbar, }; world.afterEvents.playerInventoryItemChange.subscribe( (event: PlayerInventoryItemChangeAfterEvent) => { console.log( `Hotbar change: Player ${event.player.name} slot ${event.slot}`, ); }, hotbarOnlyOptions, );}// Call this function to set up the event listenerssetupInventoryChangeListener(); Copy
import { world, PlayerInventoryItemChangeAfterEvent, InventoryItemEventOptions, PlayerInventoryType,} from "@minecraft/server";// Example of handling player inventory item change eventsfunction setupInventoryChangeListener() { // Basic event subscription - monitor all inventory changes world.afterEvents.playerInventoryItemChange.subscribe( (event: PlayerInventoryItemChangeAfterEvent) => { console.log(`${event.player.name} inventory changed:`); console.log(`Slot: ${event.slot} in ${event.inventoryType}`); if (event.beforeItemStack) { console.log( `Previous item: ${event.beforeItemStack.typeId} (${event.beforeItemStack.amount})`, ); } else { console.log("Previous: empty slot"); } if (event.itemStack) { console.log( `New item: ${event.itemStack.typeId} (${event.itemStack.amount})`, ); } else { console.log("New: empty slot"); } }, ); // Subscription with filtering options - monitor specific inventory types and items const inventoryOptions: InventoryItemEventOptions = { inventoryType: PlayerInventoryType.Hotbar, includeItems: [ "minecraft:diamond_sword", "minecraft:bow", "minecraft:shield", ], excludeItems: ["minecraft:dirt", "minecraft:cobblestone"], includeTags: ["minecraft:weapons", "minecraft:tools"], excludeTags: ["minecraft:building_blocks"], ignoreQuantityChange: false, // Track quantity changes allowedSlots: [0, 1, 2, 3, 4], // Only monitor first 5 hotbar slots }; world.afterEvents.playerInventoryItemChange.subscribe( (event: PlayerInventoryItemChangeAfterEvent) => { console.log(`Important inventory change detected!`); console.log(`Player: ${event.player.name}`); console.log(`Slot ${event.slot} in ${event.inventoryType}`); // Check for specific item types if (event.itemStack?.typeId === "minecraft:diamond_sword") { console.log("Player equipped a diamond sword!"); } else if (event.itemStack?.typeId === "minecraft:bow") { console.log("Player equipped a bow!"); } // Check for item removal if (event.beforeItemStack && !event.itemStack) { console.log( `Player removed ${event.beforeItemStack.typeId} from slot ${event.slot}`, ); } // Check for quantity changes if ( event.beforeItemStack && event.itemStack && event.beforeItemStack.typeId === event.itemStack.typeId ) { const quantityChange = event.itemStack.amount - event.beforeItemStack.amount; if (quantityChange > 0) { console.log( `Player gained ${quantityChange} of ${event.itemStack.typeId}`, ); } else if (quantityChange < 0) { console.log( `Player lost ${Math.abs(quantityChange)} of ${event.itemStack.typeId}`, ); } } }, inventoryOptions, ); // Example: Monitor only hotbar changes const hotbarOnlyOptions: InventoryItemEventOptions = { inventoryType: PlayerInventoryType.Hotbar, }; world.afterEvents.playerInventoryItemChange.subscribe( (event: PlayerInventoryItemChangeAfterEvent) => { console.log( `Hotbar change: Player ${event.player.name} slot ${event.slot}`, ); }, hotbarOnlyOptions, );}// Call this function to set up the event listenerssetupInventoryChangeListener();
Private
Optional
Readonly
The previous item stack.
Inventory type.
The new item stack.
Source Player for this event.
The slot index with the change.
Contains information regarding an event after a player's inventory item changes.
Example: inventoryChangeListener.ts