const $CuriosApi = Java.loadClass("top.theillusivec4.curios.api.CuriosApi");
let $Player=Java.loadClass("net.minecraft.world.entity.player.Player")
const $Item=Java.loadClass("net.minecraft.world.item.Item")
const $ItemStack=Java.loadClass("net.minecraft.world.item.ItemStack")
const $List=Java.loadClass("java.util.List")
/**
- 修改玩家某一类饰品槽的数量
- @param {$Player} player
- @param {String} identifier 饰品槽名称
- @param {integer} number 修改饰品数量
*/
function changeCuriosIdentifierSlots(player, identifier,number) {
return $CuriosApi.getSlotHelper().growSlotType(identifier,number,player)
}
/**
- 设定玩家某一类饰品槽的数量
- @param {$Player} player
- @param {String} identifier 饰品槽名称
*/
function setCuriosIdentifierSlots(player,identifier,number) {
return $CuriosApi.getSlotHelper().setSlotsForType(identifier,player, number)
}
/**
- 获取饰品所在饰品栏槽位
- @param {$Player} player
- @param {$Item} item
- @returns {integer}
*/
function getSlot (player, item) {
return $CuriosApi.getCuriosInventory(player).resolve().get().getEquippedCurios().find(item);
}
/**
- 获取饰品是否存在
- @param {$Player} player
- @param {$Item} item
- @returns {boolean}
*/
function isPresence(player, item) {
return this.getSlot(player, item) === -1 ? false : true;
}
/**
- 获取玩家所有装备饰品的列表
- @param {$Player} player
- @returns {$List}
*/
function getAllItems(player) {
return $CuriosApi.getCuriosInventory(player).resolve().get().getEquippedCurios().getAllItems();
}
/**
- 获取饰品是否存在并返还ItemStack
- @param {$Player} player
- @param {Internal.ItemStack} item
- @returns {Internal.ItemStack}
*/
function getCuriosItem(player, item) {
let slotResult = $CuriosApi.getCuriosHelper().findEquippedCurio(Item.of(item), player);
if (slotResult.isPresent()) {
return slotResult.get().getRight()
}
return null
}
/**
- 获取指定一类的饰品所在饰品栏槽位
- @param {$Player} player
- @param {$Item} item
- @param {String} identifier 饰品槽名称
- @returns {integer}
*/
function getCuriosIdentifierSlot(player, item, identifier) {
return $CuriosApi.getCuriosInventory(player).resolve().get().getCurios().get(identifier).getStacks().find(item);
}
/**
- 获取指定一类的饰品(距离0槽位)最近的空饰品栏槽位 如果没有则返回-1
- @param {$Player} player
- @param {String} identifier 饰品槽名称
- @returns {integer}
*/
function getCuriosIdentifierEmptySlot(player, identifier) {
return this.getCuriosIdentifierSlot(player, Item.of('minecraft:air').getItem(), identifier);
}
/**
- 获取玩家某一类饰品槽的总数量
- @param {$Player} player
- @param {String} identifier 饰品槽名称
- @returns {integer}
*/
function getCuriosIdentifierSlots(player, identifier) {
return $CuriosApi.getCuriosInventory(player).resolve().get().getCurios().get(identifier).getStacks().getSlots();
}
/**
- 获取玩家某类饰品槽的已装备饰品数
- @param {$Player} player
- @param {String} identifier 饰品槽名称
- @returns {integer}
*/
function getCuriosIdentifierSlotCount(player, identifier) {
return $CuriosApi.getCuriosInventory(player).resolve().get().getCurios().get(identifier).getStacks().count();
}
/**
- 获取玩家某一类饰品槽位置的物品堆栈
- @param {$Player} player
- @param {String} identifier 饰品槽名称
- @returns {$ItemStack}
*/
function getCuriosIdentifierStackInSlot(player, identifier, integer) {
return $CuriosApi.getCuriosInventory(player).resolve().get().getCurios().get(identifier).getStacks().getStackInSlot(integer);
}
/**
- 获取玩家某一类所有装备饰品的列表
- @param {$Player} player
- @param {String} identifier 饰品槽名称
- @returns {$List}
*/
function getCuriosIdentifierAllItems(player, identifier) {
return $CuriosApi.getCuriosInventory(player).resolve().get().getCurios().get(identifier).getStacks().getAllItems();
}
/**
- 设置玩家某一类饰品的指定槽的物品堆栈
- @param {$Player} player
- @param {String} identifier 饰品槽名称
- @param {number} integer 饰品槽
- @param {$ItemStack} itemStack
*/
function setCuriousIdentifierItemStack(player, identifier, integer, itemStack) {
$CuriosApi.getCuriosInventory(player).resolve().get().setEquippedCurio(identifier, integer, itemStack);
}