kubejs pain
This commit is contained in:
parent
c6c435bd68
commit
62c9d245bd
6 changed files with 64 additions and 20 deletions
49
.minecraft/kubejs/server_scripts/onebar.js
Normal file
49
.minecraft/kubejs/server_scripts/onebar.js
Normal file
|
@ -0,0 +1,49 @@
|
|||
PlayerEvents.tick(e => {
|
||||
const {player, server} = e;
|
||||
const {persistentData: pData} = player;
|
||||
|
||||
pData.slot = player.selectedSlot;
|
||||
|
||||
// ensure the player is only able to use the first 3 hotbar slots
|
||||
server.scheduleInTicks(2, () => {
|
||||
if([0, 1, 2].includes(pData.slot)) return;
|
||||
if (player.selectedSlot === 8) {
|
||||
player.setSelectedSlot(2)
|
||||
}
|
||||
if (player.selectedSlot >= 3) {
|
||||
player.setSelectedSlot(0)
|
||||
}
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
// `inventory` slots 36-44 are the hotbar slots (0-8)
|
||||
PlayerEvents.inventoryChanged(e => {
|
||||
const { player, slot, item, level } = e;
|
||||
const lockedItem = Item.of('kubejs:slotlock');
|
||||
|
||||
for (let i = 0; i < player.inventory.getSize(); i++) {
|
||||
if (i >= 36 && i <= 44) {
|
||||
|
||||
// TODO: Fix this as its just not working.
|
||||
// The intended behavior is that for hotbar slots 4 through 9, they are permanently locked to contain `kubejs:slotlock`,
|
||||
// and any instance of `kubejs:slotlock` in other slots is removed.
|
||||
// if an item *somehow* gets into a locked slot, it is removed, then given back to the player after the slot is locked again.
|
||||
|
||||
// Hotbar slots: Ensure they always contain `kubejs:slotlock`
|
||||
if (!player.inventory.get(i).equals(lockedItem)) {
|
||||
if (!player.inventory.get(i).isEmpty()) {
|
||||
level.server.runCommandSilent(`clear ${player.username} ${player.inventory.get(i).id} 1`); // Remove incorrect item
|
||||
level.server.runCommandSilent(`give ${player.username} ${player.inventory.get(i).id} 1`); // Return the item to the player
|
||||
}
|
||||
// player.inventory.set(i, lockedItem); // Force slot to contain `kubejs:slotlock`
|
||||
}
|
||||
} else {
|
||||
// Non-hotbar slots: Remove any extra `kubejs:slotlock`
|
||||
if (player.inventory.get(i)?.equals(lockedItem)) {
|
||||
level.server.runCommand(`clear ${player.username} kubejs:slotlock 1 from ${i}`); // Remove extra instance from specific slot
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue